APIPOST入门+认识接口(前后端分离)

2023-11-13

APIPOST入门+认识接口(前后端分离)

 

 

啥是API接口?

前端调用API接口??

什么叫做API

application programming interface

应用程序接口

接口就是两个接口相互连接的地方

我们的电视机 本身是不能播放音频的 这个是毋庸置疑的

但是如果我们电视机插入了接口 那就可以播放这个电视

接口其实就是给数据的 可以这么大致理解

用户是直接操作硬件吗

肯定不是 其实是操作系统在进行处理

那么我们用户

和硬件直接的接口就是操作系统(你不需要知道具体是如何进行操作的 你只需要知道怎么用就行 真的细节是被隐藏了)

什么是APIpost

是一个支持模拟post get put 等常见的http请求,支持团队协作,并可以直接生成导出接口文档的api调试管理工具

postman是一款国外软件(纯英文)(印度软件)

总之这个APIpost可以完美的支持生成完美的软件

apipost可以快速生成我们的接口文档

接口分为硬件接口和软件接口

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center
)]

笑话小案例

其实接口 可以当做是给我们前台提供数据 进行数据渲染,很多时候我们的数据都是通过后台提供接口将我们的数据,由我们前端通过Ajax或者是使用axios进行请求拦截,将我们的数据渲染到我们的前端页面提供数据的渲染。

下面以一个小笑话的案例,来演示 前端如何通过axios获取到我们的接口的数据

并渲染到我们的前台的数据

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
    <input type="button" value="获取笑话" @click="getJoke" class="get">
    <p>{{joke}}</p>
</div>

<script>
    var app = new Vue({
        el: "#app",
        data: {
            joke: "hello"
        },
        methods: {
            getJoke: function () {
                var that = this;//这个this就是获取到我们的app这个实例对象
                axios.get("https://autumnfish.cn/api/joke").then(function (reponse) {
                    console.log(reponse.data)
                    that.joke = reponse.data;
                })
            }
        }
    })
    /*
    实现随机笑话
       接口1:随机笑话
            请求地址:https://autumnfish.cn/api/joke/list
            请求方法:get
            请求参数:num(笑话条数,数字)
            响应内容:随机笑话
     */

这个就是使用简单的·axios进行拦截我们的响应,然后使用vue里面的渲染将我们的数据放到前台
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这样我们就可以通过点击这个按钮就可以将我们的数据

这里给大家推荐这个很多免费的接口

大家可以在这里吗获取到海量的数据

也就是这些接口是我们自己写好的,我们直接去获取就行,但是在我们实际开发过程中,我们可以通过后台书写接口,然后将我们的数据传给前台,前端可以进行拦截我们发送的请求。

编写mock数据

利用mock服务自己书写一个模拟的数据,(可以说是一个接口)用于我们的数据渲染

下面我们开始自己书写我们的mock模拟数据,这块内容其实是前端成员在后端未将自己的接口开发完成之前,但是由急于需要数据,临时出现的一个接口,这个接口就是相当于是一个临时出现的数据,当我们后端将接口写出来之后,我们就不需要使用我们的mock数据了

下面我们利用我们的apipost里面的mock服务书写一个测试接口,这个接口也是可以进行我们的模版的渲染
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这里面的我们采用的是mock.js的基础语法进行的书写,就是使用了一些随机的数据,

然后我们就可以获取到我们的这个url地址,然后我们前台的伙伴们就可以利用这个数据进行渲染,

因为这个时候我们数据是可以利用axios进行拦截到我们的这个接口的数据了

但是我们自己实际开发过程中要是真的想自己写接口给后端进行使用的话,我们还得进一步去解决跨域的问题,因为这个不解决的话,我们的前端没法访问我们的后端数据。

如何解决跨域问题(后续要解决的)

这个是我们后续要解决的问题,就是如何将我们后端写的接口真的可以让我们的前端进行拦截。

记录本次的问题,也是我们实现前后端分离的必须要走的一步。

实战二维码

这个目的在于让我们的使用者知道如何向一个接口发送我们请求,在发送请求的过程中如何传递参数进去。

然后这里的接口都是写好的,我们是可以直接进行使用的,只需要传递一些参数进去就好

这个就是比较简单的一个操作

API_API数据接口_免费数据调用_API接口平台-聚合数据 (juhe.cn)

从这里面获取我们想要的接口

我们只需要传入确定的参数进去就可以了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9hIpXpyV-1646126883080)(watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center
)]

驾照题库实战项目

也是通过我们的这个网站获取我们的接口信息

API_API数据接口_免费数据调用_API接口平台-聚合数据 (juhe.cn)

然后进行调整处理

和上面进行二维码的处理 差不多

也是按照人家api文档要求你要写的东西你进去书写就好

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这个是官方提供的参数 也就是我们要填入里面的数据,然后我们照做就好

自己写一个接口

我们看来上面的那么多的案例其实我们也是可以自己写一个接口处理,就是仿照人家写的接口进行模仿,

那么我们其实可以自己写一个接口 而且也是具有我们的接口的文档

**这个接口文档我们就可以借助我们的apipost帮助我们一键生成,极大简化了我们开发的效率,我们就不需要再去现写接口文档进行发愁,**那么大家其实可以先看一下 我们下面写的一个接口

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

我们做一个类似于的登陆的接口

这个是我们的实体类

下面这个是我们状态代码类

就是汇报我们有没有成功,打印一下状态码

public class baseEntity<T> implements Serializable {
    private T data;//这个是等待传入的实体 使用泛型进行接收
    private boolean success;
    private int code;
    private String error;

    //请求成功
    public static <T> baseEntity<T> success(T t) {
        baseEntity<T> base = new baseEntity<>();
        base.setCode(200);
        base.setData(t);
        base.setSuccess(true);
        return base;
    }

    public static <T> baseEntity<T> failed(int code, String error) {
        baseEntity<T> base = new baseEntity<>();
        base.setCode(400);
        base.setData(null);
        base.setSuccess(false);
        base.setError(error);
        return base;
    }

    public static <T> baseEntity<T> failed(String error) {
        return failed(606, error);
    }
    //请求失败

}

这里是我们控制器 controller层进行的任务

@RestController
@RequestMapping("/app")
public class JsonController {
    @RequestMapping(value = "/version", method = RequestMethod.GET)
    public baseEntity<VersionEntity> getVersion() {
        VersionEntity versionEntity = VersionEntity.builder().id(1)
                .version(2).versionStr("2.001").
                        downLoad("http://come.yt").build();
        return baseEntity.success(versionEntity);
    }

    @PostMapping(value = "/login")
    //参数的注解
    public baseEntity<UserEntity> login(@RequestParam String username, @RequestParam String password) {
        if (!StringUtils.hasLength(username)) {
            return baseEntity.failed("用户名为空");
        }
        if (!StringUtils.hasLength(password)) {
            return baseEntity.failed("密码为空");
        }
        ///模拟从数据库查询的结果
        if (username.equalsIgnoreCase("yt") && password.equalsIgnoreCase("1234")) {
            UserEntity yt = UserEntity.builder().id(1).age(18).email("27218793@qq.com").
                    userName("yt").password("1234").gender(1).createDate(new Date()).build();
            return baseEntity.success(yt);
        } else {
            return baseEntity.failed("用户名或密码错误123");
        }

    }
}

这样我们就可以生成一个接口文档

我们直接在apipost里面直接一键生成就可以啦

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这个就是我们的一个接口文档 自己的,也方便前端人员知道需要传递什么参数进去

2.post和get请求的区别

1.get

什么是http请求

http消息是由客户端到服务端的请求以及服务端到客户端的响应组成的。

简单来说就是:http请求是由请求和响应组成的

最直观的区别就是

get是把参数包含在URL里面的

post是通过requestbody传递参数的

这个是post请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-swADTbiN-1646126883093)(watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center
)]

这个是get请求[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

具体细节差别

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

apipost如何使用mock服务

为什么要使用mock服务

什么叫做mock??

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

如何使用mock服务,

mock服务就是提供假的数据进行检测的

首先讲一下

简单的搭建一个springboot项目

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

什么是get post 接口 什么是json格式

搭建springboot项目 以及我们的pom.xml文件的详解

spring项目结构 实现我们的前后端未分离的操作

1.新建HTML

2.新建controller

3.定义方法(interface)

4.网页访问(断点)

//前后端分离 如何书写我们的

get post接口 以及我们的json的返回

这些都是很重要的

就是实际上 我们的的接口其实似乎由我们的后台进行提供出来的 这个接口提供出来之后是由我们的前端可以进行访问的

然后进行传递参数进去

就比如说下面这一段代码

@RestController
@RequestMapping("/app")
public class JsonController {
    @RequestMapping(value = "/version", method = RequestMethod.GET)
    public baseEntity<VersionEntity> getVersion() {
        VersionEntity versionEntity = VersionEntity.builder().id(1)
                .version(2).versionStr("2.001").
                        downLoad("http://come.yt").build();
        return baseEntity.success(versionEntity);
    }

    @PostMapping(value = "/login")//从这里开始就是我们的代码入口处 我们从这里进行处理的操作
    //我们通过传入参数进行处理 如果成功的话就会返回相应的数据
    //参数的注解
    //下面两个其实就是我们的参数 一个是username 一个是password 我们
    public baseEntity<UserEntity> login(@RequestParam String username, @RequestParam String password) {
        if (!StringUtils.hasLength(username)) {
            return baseEntity.failed("用户名为空");
        }
        if (!StringUtils.hasLength(password)) {
            return baseEntity.failed("密码为空");
        }
        ///模拟从数据库查询的结果
        if (username.equalsIgnoreCase("yt") && password.equalsIgnoreCase("1234")) {
            UserEntity yt = UserEntity.builder().id(1).age(18).email("27218793@qq.com").
                    userName("yt").password("1234").gender(1).createDate(new Date()).build();
            return baseEntity.success(yt);
        } else {
            return baseEntity.failed("用户名或密码错误123");
        }

    }

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

下面的数据就是我们通过访问我们后端提供出来的接口,然后获取到的数据

apipost中的变量?

什么是变量为什么要使用变量

就是为了达到一处改变多处进行改变的特性

如何定义变量?

怎么随时查看

使用变量可以达到一处改变 处处改变的效果

这里就相当于是创建我们的环境变量的创建一样就是和java配置环境变量差不多的意思

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

如何定义变量

1.就是通过我们的预执行脚本(使用预处理脚本)

2.就是通过我们配置我们的环境变量(使用环境管理器)

  1.  

4.mock就是随机生成一些变量出来

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

大家可以理解一下就是 我们的mock数据就是可以帮助我们随机生成一些数据 帮助我们进行测试

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这里所提供给我们的数据都是可以进行很好的进行测试的时候进行使用我们的数据进行分析处理

144c3f5742f841148189cdd96ba0c0ca.png#pic_center

这里可以清晰的看到我们的随机的数据,我们每次进行请求的时候就会获取到不同的值

第三个变量就是我们的apipost的内置变量

1.request对象

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

2.response对象

就是响应的结果

我们同样可以在我们的

3.navigator对象

这两种方式进行处理

什么是脚本??

脚本分为预执行脚本和后执行脚本

1.预执行脚本

预执行脚本

如何利用预执行脚本动态的添加请求头

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

其实是进行了一个加密的过程处理md5加密

如何动态的添加请求头

我们从我们的预处理脚本里面进行添加我们数据

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这里是我们的body,其实这里就是我们传入的参数

然后我们可以将我们的数据进行处理

efced9696cc643c381df172020a63d58.png#pic_center

在这里将我们的body里面的数据进行封装处理

此时我们加密处理之后 ,我们需要携带一个参数token,token由请求body的所有参数通过键值升序后,md5计算得到

token=md5(123+“小明”+456)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

如何利用后执行脚本实现断言校验

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这里就是 进行我们的后执行脚本 我们可以在断言里面进行查看我们的数据

就是可以在断言里面进行查看 我们的状态是否成功

什么是接口参数依赖

接口参数依赖又被叫做接口依赖,简单点说就是后面的接口要用到前面接口产生的数据。

比如:我们一个接口B需要接口A的参数token作为自己的请求参数。

常见的场景如:访问一个需要登陆才能浏览的接口。

apipost如何处理参数依赖

get_token接口

请求地址:http://dev.apipost.cn/tech/get_token.php

他将返回一个token参数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

然后这个参数是我们need_token需要的一个数据

need_token接口:

请求地址:http://dev.apipost.cn/tech/need_token.php

它需要get_need接口返回的token参数作为自己的请求参数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

一个简单的流程测试

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

这个就是我们的一个简单的数据测试处理,我们一定要注意一下 我们的请求的先后顺序是很有必要的

顺序搞错是请求不到东西的

cookie管理器的使用

1.cookie的使用场景

登陆识别大多数都是采取的cookie进行我们的身份进行验证的

第一次访问网站的时候,浏览器会发送请求,服务器响应请求后,会将我们的cookie放到我们的响应请求中

在浏览器再次发送请求的时候,会把cookie带过去,服务器会根据cookie辨别用户身份

cookie存在客户端

session存在于服务端的

cookie的一个登陆实例

一下实例都是假定我们的后端的登陆是基于我们的cookie实现的,

比如说:我们需要调试我们接口(我的收藏列表),那么必须先登陆才能请求,否则该接口肯定不会返回正确的信息,

所以此时的步骤就是先登录接口,再访问收藏列表

就是这么一个顺序 我们必须要注意才行

在这里我们先进行登陆

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

登陆成功之后 我们打开我们的cookie管理器

就会发现多了一个cookie

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOahkOWQjOWtpg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

那么我们下次再次进行访问的时候 我们就会带着这个cookie进行发送我们的请求

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APIPOST入门+认识接口(前后端分离) 的相关文章

  • React 组件渲染被调用两次而不改变状态

    我正在渲染一个简单的反应组件 其中没有设置状态和道具 我在渲染函数中仅将文本记录到控制台一次 但它被记录了两次 rendering counter rendering counter 下面是counter js组件的代码 import Re
  • Angular $http.get:如何捕获所有错误?

    我发送一个表单到nodejs进行身份验证 使用 http get在以下函数中并添加promise gt then 在生产中 这是否可以处理我可能从服务器收到的所有错误 我还需要向此功能添加其他内容吗 MyApp controller Log
  • 非常基本的 JS 编码,是否有 SoundManager2?

    我想在我的网站上包含一个具有以下属性的音频 可能的视频播放器 必须可通过 div 通过 CSS 设计样式 可以读取所有ID3信息 可以从数据库中提取文件 可能是 GoDaddy 的 Easy Database 无闪光 可转移至智能手机等 我
  • 使用浏览器内的 JS 数值求解三角方程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定变量值s v and h 并给定一个库 例如数字 js http www numericjs com index php我怎样才能用数
  • javascript函数知道它的名字吗

    我有一个名为 getItem 的函数 我想使用其中的代码读取该函数的名称 这可能吗 function getItem var functionName how do I read the function name alert functi
  • 整个页面都是玻璃板

    有没有一种简单的方法可以在整个 HTML 页面上拥有一个 玻璃窗格 而不管缩放 幻灯片事件 平台 浏览器 移动 桌面 我所说的 简单 是指纯 CSS 支持 而不是插件 后备 插件建议也可能有用 Thanks 如果您只是指所有内容之上的一层
  • 重新排序 Magento JavaScript 包含 (addJs)

    我会保持简单 在我的产品页面上 我需要删除prototype js 文件并将其替换为最新版本的prototype 到目前为止 我已经使用 local xml 成功替换了它
  • 流媒体性能 - Canvas 与

    我正在开发一个应用程序 需要通过 webSocket 连接以每秒至少 30 帧的速度持续传输图像 我遇到了一些性能问题 并希望尽我所能进行优化 我想知道使用不断更新的图像之间的性能差异是什么 就像这样 img src someDynamic
  • 如何使用 Underscore 获取 JavaScript 数组中的重复项

    我有一个数组 我需要重复的项目并根据特定属性打印这些项目 我知道如何使用 underscore js 获取唯一项目 但我需要找到重复项而不是唯一值 var somevalue name john country spain name jan
  • 使用 Charts.js 禁用动画

    我在使用 Charts js 关闭动画时遇到一些问题 这是我的代码 var pieData value 30 color F38630 value 50 color E0E4CC value 100 color 69D2E7 var myP
  • Chart.js - 如何将数组集合推入数据集

    我一直在尝试多种方法将数组集合推送到数据集中 任何人都可以帮助我根据下面的代码将数组推入堆积图表中 这是例子 Codepen 堆叠栏 https codepen io narendrajadhav pen abzpWam JavaScrip
  • 将 javascript 放在 header 之外有多糟糕?

    这个问题几乎已经说明了一切 我开始添加一些功能到我的周末项目 http www my clock net 对于我和几个朋友来说 这是一个小应用程序 因为我们是交换生 所以它对我们来说有点有用 但事情是这样的 我在 php 中执行此操作并使用
  • jQuery 中如何判断 JSON 对象是否为空

    我有以下 JSON meta limit 20 next null offset 0 previous null total count 0 objects 我对对象感兴趣 我想知道对象是否为空并显示警报 像这样的东西 success fu
  • 内联执行生成的汇编程序

    我正在阅读以下演示文稿 http wingolog org pub qc 2012 js slides pdf http wingolog org pub qc 2012 js slides pdf其中讨论了 4 10 19 内联 ASM
  • Facebook 登录无法在移动浏览器中使用

    我使用 react facebook login 在我的网站中实现了 facebook 登录module https github com keppelen react facebook login 我在 ComponentDidMount
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • D3 时间解析返回 null

    根据此页面上的说明 https github com mbostock d3 wiki Time Formatting https github com mbostock d3 wiki Time Formatting我正在尝试解析 ISO
  • JavaScript 按名称获取当前作用域中的变量

    所以我有一个变量和该变量名称的字符串 function Factory string var foo bar console log foo is equal to this string 如果变量所在的对象是当前对象 如何从字符串文字中获
  • Chrome 中的 addEventListener

    我正在关注 Lynda com 上有关新 DOM 事件模型的教程 这是我正在使用的代码 function addEventHandler oNode sEvt fFunc bCapture if typeof window event un

随机推荐

  • ORA-32021: parameter value longer than 255 characters 解决方法

    在增加节点完后 用dbca 添加数据库实例时 报ORA 32021 parameter value longer than 255 characters 错误 oraagent log 2011 10 24 09 18 32 724 USR
  • 框架学习笔记——Spring

    Spring 文章目录 Spring 1 Spring简介 1 1 框架的主要特征 1 2 Spring的主要特点 1 3 组成 2 Spring之控制反转 IOC 2 1 百科 2 2 两种方式 2 3 依赖注入 推导 2 3 1 新建一
  • Centos7.5安装应用服务教程 ---- jdk1.8安装教程

    1 下载jdk1 8压缩包 建议装在 usr local目录下 2 解压 tar zxvf jdk 8u301 linux x64 tar gz 3 配置环境变量 修改文件配置 vi vim etc profile 在文件底部加入以下配置
  • C++中queue使用详细说明

    一 queue 的介绍 queue 翻译为队列 在 STL 中主要则是实现了一个先进先出的容器 二 queue 的定义 单独定义一个 queue queue
  • linux开放tomcat8080端口,防火墙开启/关闭/状态查询

    linux开放tomcat8080端口 防火墙开启 关闭 状态查询 最终效果 开放8080端口成功访问tomcat页面 要实现开放端口8080有两种方式 仅限于我所知道的 条条大路通罗马 能实现功能就行 废话不多说上干货 一是单独开放808
  • github 如何删除不需要的项目(两种方法)

    在Github上删除项目是一项非常基本的操作 但是对于很多使用者来说 却可能会因为缺乏经验而无从下手 如果你也处于这个情况 那么这篇文章就为你提供了一些详细的指导 删除Github上的项目可以采用两种方式 通过网站进行删除 或者通过Git客
  • JavaScript中的promise

    概述 promise 承诺 是异步编程的一种解决方案 可以替代传统的解决方案 回调函数和事件 ES6统一了用法 并原生提供了Promise对象 promise是异步编程的一种解决方案 什么时候我们会来处理异步事件呢 一种很常见的场景就应该是
  • [1228]Python prometheus-client使用方式

    文章目录 安装 prometheus client 基本使用介绍 应用实例 收集 CPU 使用率指标 收集自定义指标 Python封装 调用 github https github com prometheus client python
  • MkDocs全文搜索中的中文支持

    在前一篇MkDocs全文搜索中使用模糊匹配中已经实现了模糊匹配 这次通过lunr languages来实现lunr对中文搜索的支持 MkDocs版本 v0 16 3 lunr js版本2 0 3 lunr languages版本1 0 0
  • Linux配置tomcat

    Linux配置tomcat 1 下载tomcat tomcat官网 https tomcat apache org 2 上传tomcat到Linux 将下载的tomcat上传到linux的并解压 3 运行tomcat 启动tomcat之前要
  • C#中的拆装箱,与object类型紧密相关

    class Program static void Main string args Console WriteLine Hello World int a 1 装箱操作 比较消耗性能 最 box 值类型隐式转换为object类型或由此值类
  • Oracle字符串拆分

    文章目录 Oracle字符串拆分 1 使用regexp substr 函数 1 1 拆分aaa bbb ccc 1 2 拆分aaa bbb ccc 1 3 level作用 2 在oracle中实现MySQL的find in set 函数 2
  • shell脚本循环插入参数到另外一个shell脚本

    bin bash cd var lib hadoop hdfs reflush array 0 1 2 for i 0 i lt array i do startKey array i let n i 1 let m array 如果当前值
  • 【SSA-LSTM】基于麻雀算法优化LSTM 模型预测研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 麻雀搜索算法 1 2 长短期记忆神经网络 2 运行结果 3 参考文献 4 Matlab代码实现 1
  • CryptoPP的 Timer算法的使用

    密码学库Cryptopp不仅给提供了丰富的密码学算法 而且还包含了一些有用的工具类算法 比如本次要讲到的Timer 使用该类定义的对象 可以在程序中统计某一段代码的运行时间 前面我们在讲解随机数发生器的使用的时候 在程序中用到统计产生1G
  • 分布式日志系统的设计和实践

    什么是日志 日志是一种按照时间顺序存储记录的数据 它记录了什么时间发生了什么事情 提供精确的系统记录 根据日志信息可以定位到错误详情和根源 按照APM概念的定义 日志的特点是描述一些离散的 不连续的 事件 日志是按照错误级别分级的 常见的错
  • matlab 逆否,逆否命题与反证法

    在原命题 逆命题 否命题与逆否命题中 原命题与逆否命题等价 同真同假 所以证明一个命题成立可以去证明它的逆否命题成立 即先否定结论 在这个否定的结论下 去推出原来的条件的否定成立 例题一 1 判断命题 如果 x y neq 3 那么 x n
  • Python使用xlwt和xlrd读写excel文件

    Python使用xlwt和xlrd读写excel文件 xlwt和xlrd是两个相互配套的模块 在Python中 用于将数据写入Excel文件和读取Excel文件的数据 从字面即可看出xlwt是对xls格式的文件进行write xlrd是对x
  • nvidia-docker踩坑记录

    docker nvidia docker配置镜像创建容器 众所周知 想要在容器中使用nvidia的显卡 需要使用nvidia docker命令创建容器 环境说明 服务器端为Ubuntu18 04离线 nvidia smi正常使用 CUDA版
  • APIPOST入门+认识接口(前后端分离)

    APIPOST入门 认识接口 前后端分离 文章目录 APIPOST入门 认识接口 前后端分离 啥是 API 接口 笑话小案例 编写mock数据 如何解决跨域问题 后续要解决的 实战二维码 驾照题库实战项目 自己写一个接口 2 post和ge