Python接口自动化测试实战系列

news2024/12/22 22:01:18

本节内容

  • 接口及接口测试

  • 网络基础知识:IP,域名, DNS及端口

  • 网络基础知识:OSI七层模型及TCP协议

  • HTTP协议

接口及接口测试

这里插播一个段子

图片

上图中,程序员口中提到的接口是什么意思呢?
手机壳有没有颜色这个属性(功能)?--- 有
手机壳有没有提供让程序获取它颜色的途径?--- 没有,这个途径就是接口 

接口的概念

接口又称API(Application Programming Interface,应用程序编程接口),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

简单概括为以下3点:

  • 程序代码(函数方法)

  • 屏蔽实现细节

  • 可以被访问/调用来获取信息或实现某些功能(提供访问地址,定义了访问规则)

接口自述(通俗的来说):

  • 首先我有一些功能(功能函数)

  • 你不用关心我怎么实现的(屏蔽细节)

  • 我会给你一个我的地址(接口地址)

  • 你按照地址找到我,按照我规定的格式(请求类型)告诉我所需要的信息(参数)就行

  • 我会给你个反馈(相应信息)

 举个栗子
西虹市公考报名处 --- 接口名称
报名地址:西虹市街口区带莫路3号 --- 接口地址
现场需填写资料:姓名,身份证证号码,专业,报考岗位等等 --- 接口参数
验证规则:--- 参数验证规则

  • 身份证需与本人一致

  • 专业需与报考岗位符合

  • 报名时间 2024.8.22-2024.8.30
    现场会给出是否报名成功 --- 接口响应信息

软件中的接口

图片

软件项目中,接口是系统与系统之间,模块与模块之间或者服务于服务之间相互调用的入口。

从开发者角度,接口是分工协作的产物,不同开发者实现自己的功能之后,封装成接口,供其他开发者调用。其他开发者只要按规定格式发送一些必要参数,就能使用该功能

图片

常见接口类型

  • HTTP接口:通过HTTP协议传输的接口,可以传输文本表单数据,也可以传输Json类型的对象数据或xml类型的数据
  • RPC: 远程方法调用,随着分布式系统的出现,当你需要调用部署到其他服务器上的方法时,需要用到RPC。RPC只是提出了这样一个问题,有很多种解决方案,比如WebService(基于SOAP协议), REST(基于HTTP协议)。
  • SOAP: 简单面向对象协议,基于HTTP,使用xml作为默认传输格式
  • Web Service: 基于SOAP协议的一种RPC实现方案。相比传统的HTTP接口只传输文本请求和文本相应,通过Web Service可以直接拿到远程的一个对象,并能够直接调用该对象的属性和方法,比HTTP更高级。
  • REST/RESTful API: REST,表述性状态转移。一种HTTP接口的设计风格,将一切接口视为资源,要求接口路径同意管理,分版本管理,规定了GET/POST等请求以及HTTP状态码的使用规范,默认使用JSON格式传输。RESTful API即满足REST风格即设计规范的API接口

 

图片

什么是接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个
子系统之间的交互点。测试的重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等.

为什么要做接口测试?

  • 接口测试介于单元测试与系统测试之间,单元测试一般由开发完成(不要相信开发)
  • 接口是各种系统功能的基础,一旦接口出现问题可能会引起许多系统功能的问题并且不容易定位
  • 开展接口测试可以及早发现问题,有效降低测试成本
  • 接口一般较UI相对稳定,利于进行自动化和持续集成

接口测试都测什么?
接口测试一般有以下岗位实施:

  • 手工测试岗:先提测接口再提出功能,兼做接口自动化
  • 服务端测试岗:梳理代码,审核接口实现逻辑是否与业务设计一致,技术实现逻辑的合理性,异常流测试,接口压测及安全性测试
  • 测试开发岗:专职做接口(或UI)的自动化用例开发,测试工具开发

接口测试点参考:
 

 图片

怎样掌握接口测试?

  1. 了解OSI网络模型,TCP/UDP协议,掌握HTTP/HTTPS协议,了解RPC, Web Service及REST,理解Session和Cookie
  2. 掌握常用的接口测试工具如curl命令,Postman,Jmeter,LR,SoupUI,AB等
  3. 掌握基本的抓包工具如Chrome开发者工具,Fiddler,Charles,Wireshark,tcpdumps等
  4. 掌握一门编程语言Python或Java
  5. 了解Nginx, Apache, Tomcat等服务器中间件
  6. 掌握数据库基本查询命令,及一些NoSQL(如Redis)操作,用于检查响应结果
  7. 掌握基本的Linux日子查询和筛选命令

接口测试重难点

  1. 动态变量参数化
  2. 接口依赖及中间变量问题
  3. 异步接口结果验证问题
  4. 相应参数及嵌套很多的验证问题
  5. 接口测试框架的稳定性问题
  6. 资源清理问题
  7. 多接口场景测试
  8. ...

网络基础知识:IP,域名, DNS及端口

IP地址

就像每个人都有一个身份证号码
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址

 

图片

查看IP命令

  • Windows: ipconfig

  • Linux: ifconfig

    Python练习:检查字符串是否ip 

def is_ip(ip):
num_list = ip.split(".")
for num in num_list:
if not num.isdigit() or not 0 <= int(num) <=255:
return False
return True

print(is_ip("101.1.0.201"))

使用map函数实现方法(参考)

def check_ipv4(str):
ip = str.strip().split(".")
return False if len(ip) != 4 or False in map(lambda x:True if x.isdigit() and 0<= int(x) <= 255 else False, ip) else True

 

端口

"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。
如果把IP地址比作一间房子,端口就是出入这间房子的门。一个IP地址的端口可以有65536(即:2^16)个
端口类型

  • 公认端口:从0到1023,紧密绑定于一些服务
  • 注册端口:人1024到49151,许多服务绑定这些端口,这些端口同样用于许多其它目的。
  • 动态或私有端口:从49152到65535。理论上,不应为服务分配这此端口。实际上,机器通常从1024起分配动态端口。

常见软件默认端口

  • Apache/Nginx(HTTP服务): 80
  • Tomcat: 8080
  • Oracle: 1521
  • MySQL: 3306
  • SQL Server: 1433
  • PostgreSQL: 5432
  • MongoDB: 27017
  • Redis: 6379
  • Memcached: 11211

查看端口命令

  • Windows: netstat -ano
  • Linux: netstat -ntlp
     

 

图片

解决端口占用问题

  • Windows: netstat -ano | findstr "8080",找到占用端口的程序的PID -> 打开任务管理器 -> 设置显示PID -> 找到并结束对于程序
  • Linux: netstat -ntlp | grep "8080", 找到对应的程序 -> ps -ef | grep "程序名" 找到对于的pid -> kill 相应的id

 

域名及DNS

由于IP地址不容易记忆,为IP地址赋予了一个利于记忆的别名,称为域名
如,百度的ip为:61.135.169.125,对应的域名为 www.baidu.com

图片

如何查看域名所对于的ip?

  • Windows/Linux: ping www.baidu.com

DNS
DNS即域名解析系统,域名和IP地址相互映射的一个分布式数据库,提供域名转到对应ip的服务

网络基础知识:OSI七层模型及TCP协议

OSI七层模型

OSI即开放系统互连参考模型,一种网络架构,分为7层。

图片

  • 上三层---应用层,控制软件方面
  • 应用层:文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
  • 表示层:数据格式化,代码转换,数据加密
  • 会话层:解除或建立与别的接点的联系(会话)
  • 下四层---数据流层,用来管理硬件
  • 传输层:提供端对端的接口 TCP,UDP
  • 网络层:为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
  • 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
  • 物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

OSI七层模型及各层协议

TCP及UDP协议

TCP和UDP都是传输层的协议

  • TCP:传输控制协议

  • UDP: 数据报文协议

 

TCP和UDP的区别

  • UDP的特点如下:
  1. 无链接
  2. UDP使用尽最大努力交付,不保证可靠性
  3. UDP是面向报文的,UDP对应用层交付下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
  4. UDP没有拥塞控制
  5. UDP支持一对一、一对多、多对一和多对多的交互通信
  6. UDP的首部开销小,只有8字节
  • TCP的特点:
  1. TCP是面向连接的
  2. 每条TCP连接只能用于两个断点,一对一
  3. TCP提供可靠交付的服务:连接传输数据、无差错、不丢失、不重复、并且按序到达
  4. TCP提供全双工通信
  5. 面向字节流。TCP根据对方给出的窗口和当前网络拥塞的程度来决定一个报文应该包含多少个字节

参考:TCP和UDP协议的对比

HTTP协议

HTTP:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传输协议。
HTTP协议是一种无状态协议,主要包含请求和相应两大部分:

请求(Request)

请求是我们发送给接口的数据对象,包含接口地址(URL),请求方法,参数,请求头(Headers), Cookies, 数据等
真实抓包一个请求:

图片

请求原始格式-GET(Raw格式:Fiddler抓包得到)

GET https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC HTTP/1.1
Host: www.sojson.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: __cfduid=dccd65c484a7657b468327b66023fefc41534934250; yjs_id=59d1c42afa817b578b4b562d1f72651f; ctrl_time=1

 

  • 第1行:请求方法 接口地址 HTTP协议版本

  • 第2-N行:请求headers(如果有Cookie,最后一行为Cookie)

  • 空一行

  • 请求数据(POST等方法使用,此处为空)

请求原始格式-POST请求(Raw格式:Fiddler抓包得到)

POST http://openapi.tuling123.com/openapi/api/v2 HTTP/1.1
Content-Type: application/json
cache-control: no-cache
Postman-Token: 1a39439e-61c8-4e59-82a1-736a362c5962
User-Agent: PostmanRuntime/7.2.0
Accept: */*
Host: openapi.tuling123.com
accept-encoding: gzip, deflate
content-length: 468
Connection: keep-alive

{
"reqType":0,
"perception": {
"inputText": {
"text": "附近的酒店"
},
"inputImage": {
"url": "imageUrl"
},
"selfInfo": {
"location": {
"city": "北京",
"province": "北京",
"street": "信息路"
}
}
},
"userInfo": {
"apiKey": "ec961279f453459b9248f0aeb6600bbe",
"userId": "206379"
}
}

URL

URL:统一资源定位符,接口的访问地址(包含服务器地址+接口地址)

URL组成格式

协议\\: 服务器地址:端口号\资源路径?参数1=值1&参数2=值2

如:https://www.sojson.com/open/api/weather/json.shtml?city=北京

注意:?号要使用英文?,不能使用中文?

URL编码
URL编码是一种浏览器用来打包请求参数及表单参数的格式, 参数和参数之间使用&分割,非ASCII码使用%加16进制编码替换
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
编码后为:https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC

链接:URL编码/解码工具(http://tool.chinaz.com/Tools/urlencode.aspx)

请求方法

序号方法描述
1GET请求指定的页面信息,并返回实体主体
2POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)数据被包含在请求体中
3HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
4PUT从客户端向服务器传送的数据取代指定的文档的内容
5DELETE请求服务器删除指定的页面
6CONNECT预留给能够将连接改为管道方式的代理服务器
7OPTIONS允许客户端查看服务器的性能
8TRACE回显服务器收到的请求,主要用于测试或诊断

GET请求和POST请求的区别

  • GET请求:

    • GET请求可被缓存

    • GET请求保留在浏览器历史记录中

    • GET请求可被收藏为书签

    • GET请求不应在处理敏感数据时使用

    • GET请求有长度限制

    • GET请求只应当用于取回数据

 

  • POST请求:

    • POST请求不会被缓存

    • POST请求不会保留在浏览器历史记录中

    • POST不能被收藏为书签

    • POST请求对数据长度没有要求

请求参数(URL参数)
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京

中的city=北京,向接口传递一个参数“city”,参数值为“北京”

不同的参数之间用&隔开,非ASCII码参数会自动url encode

请求Headers(请求头)
常见Headers

图片

请求数据(又称为Request Body 或 Data)

请求数据类型(Content-Type)(重点)

  • application/x-www-form-urlencoded:网页表单格式(默认)
  • application/json:REST接口常用格式
  • text/xml:xml格式,RPC接口,Dubbo接口常用格式
  • test/html:html格式
  • multipart/form-data: 混合表单,支持上传图片

数据编码

  • ASCII码: 单字节,美国信息交换标准码, 包含数字,字母,英文标点及一些控制字符
  • ISO-8859-1:又称Latin1,单字节,向下兼容ASCII,用于支持部分于欧洲使用的语言
  • ANSI编码:单字节表示英文,双字节表示汉字,对ASCII的扩展,不同的国家和地区制定了不同的标准,中文中的GBK,GB2312属于ANSI编码
  • Unicode编码: 采用二个字节编码(英文和中文的字符都以双字节存放),与ANSI码不兼容
  • UTF-8:是目前互联网上使用最广泛的一种Unicode 编码方式,又称万国码
     

 指定请求数据编码(解决中文乱码):
请求Headers设置Content-Type: application/json; charset=utf-8

 

Base64: 一种用64个字符来表示任意二进制数据的方法。

  • Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。

  • 而且base64特别适合在http,mime协议下快速传输数据。

    • 图片

参考:Base64编码及其作用

 

 

响应(Response)

接口返回的信息,包含HTTP状态码,响应头和相应信息

原始相应数据(Raw格式,Fiddler抓包)

HTTP/1.1 200 OK
Date: Thu, 23 Aug 2018 06:32:26 GMT
Transfer-Encoding: chunked
Connection: keep-alive

{"intent":{"actionName":"","code":10005,"intentName":"","parameters":{"lon":"","checkout_date":"2018-08-25","star":"0","city":"北京","days":"1","order":"","price_range":"","nearby_place":"酒店","brand":"","checkin_date":"2018-08-24","place":"信息路","lat":"","needgeo":"0"}},"results":[{"groupType":1,"resultType":"url","values":{"url":"http://m.elong.com/hotel/0101/nlist/#indate=2018-08-24&outdate=2018-08-25&keywords=%E4%BF%A1%E6%81%AF%E8%B7%AF"}},{"groupType":1,"resultType":"text","values":{"text":"亲,已帮你找到相关酒店信息"}}]}

 

常见的响应格式

  • html

  • json

  • xml

响应编码:有时需要根据不同的编码来正确解析响应内容 

HTTP状态码

  • 1** 信息,服务器收到请求,需要请求者继续执行操作
  • 2** 成功,操作被成功接收并处理
  • 3** 重定向,需要进一步的操作以完成请求
  • 4** 客户端错误,请求包含语法错误或无法完成请求
  • 5** 服务器错误,服务器在处理请求的过程中发生了错误

常见HTTP响应码

  • 200:成功
  • 301/302:请求重定向到另外一个接口
  • 400: 请求语法错误
  • 403:资源没有访问权限
  • 404:资源不存在(有可能是请求url错误或参数不正确)
  • 405:请求方法不被允许(比如接口只允许Post,使用Get请求接口)
  • 500:服务器内部错误(通常是服务器挂了或接口Bug)
  • 502: 网关失效
  • 504: 网关请求超时

HTTP与HTTPS

  • HTTP协议传输的数据都是未加密的,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
  • HTTPS和HTTP的区别
  • HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTP的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

Cookie和Session

  • **Cookie/Cookies: **是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
  • Session:服务端为客户端访问所建立和维持的会话,通常会生成一个唯一的id,会话有一定的有效期。
  • 由于HTTP是无状态的,即服务器不知道用户上一次做了什么,默认也无法识别用户身份。
  • 比较流行的做法是:
  • 用户访问时服务端建立会话(Session)
  • 将会话id(Session ID)随响应返回,并保存在客户端的Cookies里
  • 后续的访问中,服务器通过辨识,客户端请求时携带的Cookies内容来识别用户
     

 

  • 图片

图片

Cookie和Session的区别

  • cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上
  • cookie只能能够存储少量文本,大概4K大小
  • cookie是不能在不同浏览器之间共享
  • Session存在服务器端,存在网站进程的内存中
  • Session在初次设置session的时候,会在session池中实例化一个session对象,以sessionid 的值作为key,同时会将key以cookie的形式保存到客户端的内存中
  • Session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的Session对象要20分钟以后才会回收

授权与加密
常见的接口安全策略:

  1. Session/Cookie机制:即需要登录,登录后可访问各个接口,最常用的一种策略,适用于内部接口。
  2. 固定appid模式:用户注册时会生成一个唯一的appid,用户调用接口时需要携带appid,适用于公开接口,安全性较差。
  3. 动态token模式:token即身份令牌,用户访问接口需要使用个人appid临时申请一个token,token有一定有效期,适用于公开接口,安全性较appid模式好。
  4. 开放协议:Basic Auth/ Oauth1.0 / Oauth2.0: 适用于开放接口。
  5. 数字签名:将所有请求参数及参数值进行排列拼接,加上用户私钥,再进行Md5或其他加密生成一个请求的签名(sign),请求是需要携带签名,服务器收到请求后,会对请求重新计算签名并核实与请求所携带签名是否一致。安全性较高,可以有效防止请求被篡改。适用于内部接口及微服务接口。

常见的加密算法
在接口数据传输过程中常对一些敏感数据(如密码)进行Base64编码或MD5加密,以增加安全性。
加密算法分为对称式加密算法和非对称式加密算法,对称式加解密使用同一个秘钥,非对称式使用不同的秘钥。

对称式加密

  • DES: 数据加密标准,速度较快,适用于加密大量数据的场合
  • AES: 高级加密标准,速度快,安全级别高

非对称式加密

  • RSA: 是一个支持变长密钥的公共密钥算法, 分公钥和私钥,SSH协议使用该算法
  • MD5: 最常用的一种加密方法,是一种摘要算法。

缓存
HTTP 缓存机制作是 web 性能优化的重要手段,当用户第一次请求服务器资源时,服务器将资源缓存到客户端本地,在一定时间内(缓存有效期内)当用户再次向服务器请求同样的资源时,可以直接从缓存中读取,而不用从服务器下载。

接口测试中缓存相关注意点

  • 在更新或调试接口是,注意是否需要清理缓存(或临时禁用缓存)
  • 缓存有一定的有效期
  • 接口性能测试中会关注缓存的命中率

 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全渗透工程师入门最快需要多久?提供具体路线和学习框架

前言 网络渗透这个东西学起来如果没有头绪和路线的话&#xff0c;是非常烧脑的。最快达到入门也要半年 理清网络渗透学习思路&#xff0c;把自己的学习方案和需要学习的点全部整理&#xff0c;你会发现突然渗透思路就有点眉目了。 网络安全好混&#xff0c;但不容易混得好。…

【顶配快速排序】CUTOFF配合三点中值法的三路划分

目录 1引入情境2 形式化描述2-1递归结构2-2 一次划分2-3 C实现 3 在工程中的改进3-1 处理重复元素双向划分三路划分C 实现 3-2 最差情况的改进三点中值法随机选择pivot短序列切回插入排序 4 全部改进技术加持 1引入情境 从低到高排成一队&#xff0c;怎么办&#xff1f; 以大雄…

RIME协议栈解读

// 新坑–contiki rime简介 rime类似于TCP/IP协议栈&#xff0c;属于分层结构。图片来自Adam Dunkels本人的rime论文介绍。 abc为anonymous broadcast&#xff0c;匿名广播。即将数据包通过无线射频驱动(radio driver)发出去&#xff0c;接收来自无线射频驱动所有的包并交给…

四月成功上岸阿里,年后准备了两个月,要个21k应该不过分吧~

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;阿里的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

[JAVA数据结构]希尔排序/缩小增量法

前置内容&#xff1a;[JAVA]直接插入排序_HY_PIGIE的博客-CSDN博客 希尔排序&#xff0c;是将一个数组分成多组&#xff0c;在每一个组内进行排序。每进行一次排序&#xff0c;组中的元素都会增多&#xff0c;组数减少。 在组内进行直接插入排序 组数以/2的形式减少 例入&#…

离散Markov Chain序列及可视化

离散Markov Chain序列及可视化 文章目录 离散Markov Chain序列及可视化[toc]1 天气预测2 赌徒问题 1 天气预测 假设仅存在三种天气&#xff1a;晴天、阴天和雨天&#xff0c;每种天气状态构成的系统满足(齐次)马氏链过程&#xff0c;即下一期的天气状态仅取决于当前的天气状态…

网络安全是什么?如何成为一位优秀的网络安全工程师?

网络安全是什么&#xff1f; 首先说一下什么是网络安全&#xff1f; 网络安全工程师工作内容具体有哪些&#xff1f; 网络安全是确保网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而受到破坏、更改、泄露&#xff0c;系统连续可靠正常地…

idea部署tomcat(偏小白向)

目录 一、环境部署 1.安装idea ultimate任意版本 2.java稳定的版本如&#xff1a; 3.apache-tomcat任意版本&#xff0c;需要考虑兼容性&#xff0c;大家可以百度一下 二、部署简单的javaweb环境 总结 1.第一个问题 2.第二个问题 一、环境部署 1.安装idea ultimate任意版本…

Debian 11安装mysql 5.7.41

Debian 11安装mysql 5.7.41 1、下载mysql安装包2、安装文档2.1、安装依赖包2.2、安装MySQL包2.2.1、预设值数据库参数2.2.2、安装MySQL包 2.3、文件安装位置 3、使用mysql 5.7.41 数据库3.1、命令行登录MySQL 5.7.41 数据库3.2、navicat连接mysql 5.7.41 数据库3.2.1、修改mysq…

UWB技术开发的定位系统源码,高精度人员定位系统源码,室内定位系统源码人员定位/车辆定位/物品定位/材料定位

UWB技术定位系统源码&#xff0c;高精度人员定位系统源码&#xff0c;智慧工厂人员定位系统源码&#xff0c;室内定位系统源码 技术架构&#xff1a;单体服务 硬件&#xff08;UWB定位基站、卡牌&#xff09; 开发语言&#xff1a;java 开发工具&#xff1a;idea 、VS Code…

操作系统:12 线程竞争与线程池

1 基本概念 ① 竞争与同步 同一个进程中的线程能够共享进程中的绝大多数资源&#xff0c;当他们随意竞争时可能会导致共享资源被破坏、脏数据、不完整、不一致等问题 通过一些方法让进程中的线程在竞争资源时相互协调&#xff0c;避免出现以上问题&#xff0c;这种手段就称为线…

5月11日作业

思维导图 作业&#xff1a; 作业1&#xff1a; 作业2&#xff1a; 作业3&#xff1a; 作业4&#xff1a; 作业5&#xff1a;

算法设计与分析:枚举和递推的运用

目录 第1关&#xff1a;双关系递推数列 任务描述 相关知识 枚举算法的两种框架 递推算法的实施步骤 问题求解思路 编程要求 测试说明 第1关&#xff1a;双关系递推数列 任务描述 本关任务&#xff1a;运用枚举和递推的基本思想&#xff0c;通过编程计算出双关系递推数…

grafana + influxdb + telegraf构建linux性能监控平台

为了更好的做性能测试过程中监控服务器资源&#xff0c;提供可视化效果&#xff0c;下面介绍一种监控方案&#xff1a; grafana influxdb telegraf , 构建linux性能监控平台 安装3个软件 1.Grafana安装 grafana , 访问各类数据源 , 自定义报表、显示图表等等 , 用于提供界…

微星 B360M MORTAR电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板微星 B360M MORTAR 处理器英特尔 Core i5-9400 2.90GHz 六核已驱动 内存8 GB ( 金士顿 DDR4 2666MHz 8GB )已驱动 硬盘西数 WDS250G3X0C-00SJG0…

mysql高级语句(2)

and or 最左原则 create view视图表&#xff1a;虚拟表或存储查询 没有表结构存储查询语句的结果表 临时表在用户退出或同数据库连接断开就会小时&#xff0c;而视图表不会&#xff08;就像定义个全局变量&#xff09;保存的是定义 格式&#xff1a;create view “视图表名…

内测开始了!0penAI GGPT 图片功能、联网功能、音频功能、多模型功能、微调功能

联合两位大佬一起对gpt官方的接口做了整合。 有感兴趣的可以一起开发交流&#xff0c;下文有部分代码讲解。感兴趣的可以加入一起测试玩耍&#xff08;文末有加入方式&#xff09;~ 模型介绍 内测内容包括文字生成图片、图片生成图片、联网模式、模型定制、多角色设定等。 1…

mongodb用户权限配置

1.副本集 1.1在主节点创建管理员账号 /etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 27017 use admin db.createUser({user:"用户名",pwd:"密码",roles:["root"]}) 只要在主节点创建用户即可&#xff0c;从节点会自动同步数据 …

Verilog语法之generate (for、 if、 case)用法

文章目录 前言一、宏定义二、generate 方法1. generate-if 方法1. generate-case方法 三、小知识&#xff08;语法模板&#xff09; 前言 对于同一功能多种不同实现方法的模块代码如何整合到一起呢&#xff1f;当然每种方法作为一个单独的模块使用一个.v 文件保存肯定是没有问…

MySQL 高级(进阶) SQL 语句二

一、表连接查询 MYSQL数据库中的三种连接&#xff1a; inner join(内连接)&#xff1a;只返回两个表中联结字段相等的行&#xff08;有交集的值&#xff09;left join(左连接)&#xff1a;返回包括左表中的所有记录和右表中联结字段相等的记录right join(右连接)&#xff1a;…