做动态的网站/百度客服24小时电话人工服务
一、接口关联
postman的接口
postman的接口关联配置:js代码,重点在于思路。
// 定义jsonData这个变量 接受登录接口的返回结果
var jsonData = JSON.parse(responseBody);
// 从返回结果里提取token/id值,并赋值给token/id变量值作为环境变量
pm.globals.set("token",jsonData.access_token)
pm.globals.set("type",jsonData.token_type)
关于这个工具具体的详细使用: 参数化 + 断言 + CSV批量等 都可以
二、接口鉴权 – 鉴别用户权限
鉴权:鉴定是否有权限访问。
要做鉴权的原因是: http协议本身是无状态【无记忆】的。每个http请求之间是没有关系的。 所以解决方案就是手动加上用户的凭证信息。方案主要有两种:
-
cookie和session机制 : 配套存在的两个概念
-
token机制
cookie和session(网站用的比较多-web–ERP项目案例)
cookie是一门客户端技术,一般是由服务器生成返回给浏览器客户端来保存的,并且cookie是以键值对的形式保存在浏览器客户端的,每一个cookie都会有名称,值,过期时间…。cookie有很多使用场景,在项目中比较常见的有:
-
1.登录记住用户名
-
2.记录用户浏览记录
Cookie过期时间:
- 日期时间: 开发设置的过期时间
- 会话期间:浏览器关闭 cookies失效了。
Http协议是无状态的,Session是一种让请求从无状态变成有状态的机制,session是服务端的会话技术,当用户登录了系统,服务器端的就会创建一个会话,此会话中可以保存登录用户的信息。
思考问题: 在cookies和session机制有一个角色比较累== 服务器很累,存在很多用户的session。-- 存储压力 这种机制淘汰。
token机制(适用于任何的前端-L4mall项目案例)–替换更好的机制,更主流。
- session机制的缺陷: 服务器存储很多用户的会话信息 ,需要很多空间存储! ==成本高。替代的方案就是token机制!
token的意思是“令牌”,是服务端生成的加密后一串字符串,作为客户端进行请求的一个标识。
-
服务器 ,不存储会话(加密【签名】+令牌),签名: 需要加密算法 + 秘钥,而这些只有服务器知道,用于后续的验证token的真实性
-
token一般通过消息体某字段返回给客户端
-
token也有时效性: 失效时间 看开发定义。
通过加密和解密计算,计算的成本 换取存储成本。
面试题:token和session,cookies有什么区别?优劣势?
token:-更加主流,可以适用于任何的前端
-
1-客户端发起登录请求并且登录成功之后,服务端生成一段加密之后的字符串,客户端会将此字符串设置在请求头里面,并且再去发送需要权限的请求
-
2-token不用服务器存储会话,解决了服务器存储的压力;但是每次校验都需要解密计算,也消耗CPU资源,用计算成本换取存储成本。
-
3-适用于各种形态的应用,包括web app等。
cookie+session:网站用的比较多
-
1- 客户端发起登录请求并且登录成功之后,服务端生成session(会话),并且生成一个session id与之对应,服务端会将session id设置在响应头set-cookie,客户端自动识别set-cookie响应头字段,并且将其值保存到本地的cookie中,之后如果需要权限就只需要从cookie中取出来session id即可
-
2-服务器需要存储会话信息,有很大的存储压力。
-
3-适用于web应用,cookies存储再浏览器里,比较容易丢失。
接口鉴权的步骤
第一步:通过登录接口,获取权限令牌。
- 服务端返回权限令牌给客户端, 每次登录令牌值都不一样。
第二步:在接下来的每一个请求当中,都带上权限令牌。
- 以什么样的形式带上,开发人员决定,可以是请求头带 或者请求体带, 开发封装接口的时候决定形式。
做接口测试,第一步要解决的问题:项目是什么样的鉴权方式。
postman工具如何处理鉴权?
- 在登录之后的接口,做数据提取token
- 存储在环境变量里
- 后续接口需要用再调用 == {{变量名}}
// 定义jsonData这个变量 接受登录接口的返回结果
var jsonData = JSON.parse(responseBody);
// 从返回结果里提取token/id值,并赋值给token/id变量值作为环境变量
pm.globals.set("token",jsonData.access_token)
pm.globals.set("type",jsonData.token_type)
Python代码如何处理鉴权
requests是Python中简单好用的HTTP库【第三方库】,可以模拟客户端向服务器发送请求。
-
第一步安装:pip install requests
-
第二步引入模块:import requests
-
第三步操作:发起一个请求(get,post)
import requests# 第一步 执行登录接口
url_login = "http://shop.lemonban.com:8107/login"
param = {"principal":"lemon_py","credentials":"12345678","appType":3,"loginType":0}
response = requests.request(method="post",url=url_login,json=param) # 这种更加通用 重点掌握。
login_resp = response.json() # 字典格式# 第二步: 获取登录结果里token,赋值给变量
token = login_resp["access_token"]
token_type = login_resp["token_type"]# 第三步: 上传接口里调用这个变量-- 在请求头里传token值进去
url= "http://shop.lemonban.com:8107/p/file/upload"
file_obj = {"file":("py65图片",open("tricy.png","rb"))} # 文件参数
header= {"Authorization":f"{token_type}{token}"} # 请求头 拼接token变量
res = requests.request(method="post",url=url,files=file_obj,headers=header)
print(res.text)
1.1 发送GET请求 -搜索接口
requests.get(url, params=None, **kwargs)
- url: 接口地址
- params:查询参数,为可选参数,该参数是一个字典类型
- **kwargs:其他可选参数,如headers,files,cookies,auth,timeout,json等
- 注意1: 必须要关键字名字一致 因为要名字一致才能被服务器认识
- 注意2:要用字典格式传输
import requests
url="http://mall.lemonban.com:8107/search/searchProdPage"
params= {"prodName":"phone"}
response = requests.get(url=url,params=params)
print(response) # Response对象,可以获取详细信息
print(response.status_code) # 获取响应状态码
print(response.headers) #获取响应头
print(response.text) #获取响应数据
print(response.json()) # 把json格式的响应数据,转换成python字典
print("http响应头中的cookies:",dict(response.cookies)) # 获取cookie
1.2 发送POST请求-- 登录接口
参数有data 和json ,这是因为post请求发送的参数在请求体,请求数据的格式我们上节课讲过有三种比较主流的类型,分别用来传参的关键字是不一样的。
requests.post(url, data=None, json=None, **kwargs)
【application/json】 – 电商项目的登录接口
json传参,需要用到json参数 , 默认就会content-type 等于application/json,这个头部都可以不传。
import requests
# post请求 --application/json
url="http://shop.lemonban.com:8107/login"
params=
{"principal":"lemon_py","credentials":"12345678","appType":3,"loginType":0}
response = requests.post(url=url,json=params)
print(response) # Response对象,可以获取详细信息
print(response.status_code) # 获取响应状态码
print(response.headers) #获取响应头
print(response.text) #获取响应数据
print(response.json()) # 把json格式的响应数据,转换成python字典
print("http响应头中的cookies:",dict(response.cookies)) # 获取
cookie
【application/x-www-form-urlencoded】 - ERP项目的登录接口url编码传参,需要用到data参数进行传参
import requests
# post请求- form-data
params =
{"loginame":"admin","password":"e10adc3949ba59abbe56e057f20f883e"}
url = "http://erp.lemfix.com/user/login"
response = requests.post(url=url,data=params)
print(response) # Response对象,可以获取详细信息
print(response.status_code) # 获取响应状态码
print(response.headers) #获取响应头
print(response.text) #获取响应数据
print(response.json()) # 把json格式的响应数据,转换成python字典
print("http响应头中的cookies:",dict(response.cookies)) # 获取
cookie
【multipart/form-data】— 上传文件接口,这个接口需要鉴权
当我们需要传输大容量的数据到服务端时(比如上传文件),我们通常使用multipart/form-data传参类型
在requests中通过指定files参数用来处理文件上传的;files参数的值,也必须是字典,字典的内容如下:
{name: (filename,文件对象(open打开),媒体类型(Content-Type))}
name是你传的是啥 ,开发定义的名字参数的名字
filename: 可以自己定义上传的文件的名字 不用跟真实的名字一样; 抓包就是直接用的文件名字;然后会显示在数据库里filename字段里。 不加 就默认用文件本身的名字。
媒体类型:content-type也可以不加, 其实就是MIME类型,但是可以不加 可以自动识别识别文件媒体类型。
注意事项:不需要加content-type,因为files这个参数默认就会用multipart/form-data 这个格式传输,上传文件接口数据类型是这个;
import requests
url = "http://shop.lemonban.com:8107/p/file/upload"
method = "post"
file_obj = {"file":("pythontest.png", open("code.png", "rb"),
"image/jpeg")}
res = requests.request(method,url,files=file_obj)
print(res.text)
但是报错,是因为没有鉴权。
处理接口鉴权
- 上传文件接口需要用户先登录再操作,所以上传之前先登录。
- 提取登录后返回的token
- 提取token 的方法 :用json()转化为字典格式,再用字典取值
- jsonpath
- 再给上传接口使用。
import requests
#登录接口
url="http://shop.lemonban.com:8107/login"
params=
{"principal":"lemon_py","credentials":"12345678","appType":3,"loginType":0}
response= requests.request(method="post",url=url,json=params)
token = response.json()["access_token"]
print(token)
url = "http://shop.lemonban.com:8107/p/file/upload"
method = "post"
file_obj = {"file":("pythontest.png", open("tricy.png", "rb"))}
head = {"Authorization":"bearer"+token}
res =
requests.request(method="post",url=url,files=file_obj,headers=head)
print(res.text)
cookies鉴权
"""
cookies鉴权 : session相关的。
如果我登录用session发送,后续所有的都在用这同一个session里操作,那么我就可以自动带上的登录cookies 不需要手动传。代码实现: 不用requests库 直接发送接口请求,用实例化的Session类。
"""
import requests# 实例化操作
session = requests.Session()# ERP项目登录
url= "http://erp.lemfix.com/user/login"
param = {"loginame":"test123","password":"e10adc3949ba59abbe56e057f20f883e"}
res = session.request(method="post",url=url,data=param)
# res = requests.request(method="post",url=url,data=param)
print(res.text)# 添加角色接口
url = "http://erp.lemfix.com/role/add"
param = {"info":'{"name":"333"}'}
resp = session.request(method="post",url=url,data=param)
# resp = requests.request(method="post",url=url,data=param)
print(resp.text)
requests设置代理抓包
让Fiddler能够抓取到requests代码发送过来的请求:调试利器
proxies = { “http”:“http://ip:端口号”}如果请求发送不成功,可以设置fiddler作为代理:抓包查看。
proxies = {"http":"http://192.168.0.104:8887"}
requests.get(url, proxies=proxies)
"""
定位问题小技巧: 如果接口请求发送失败了,那么可以设置代理,引导fiddler,可以在fiddler里查看请求信息 定位问题
proxies = { "http":"http://ip:端口号"}
"""
import requestsproxies = {"http":"http://192.168.31.25:8887"}# 本地ip,fiddler上的拦截端口
url= "http://erp.lemfix.com/user/login" #项目地址
param = {"loginame":"test123","password":"e10adc3949ba59abbe56e057f20f883e"} #登陆信息res = requests.request(method="post",url=url,data=param,proxies=proxies)
print(res.text)
requests库
发送各种接口的请求: get post请求
各种参数类型: json 表单格式 等
requests发送接口请求之后的结果是响应消息。
注意: 在requests库里,除了url和请求方法之外,其他的数据都要用字典的格式传输。
传参的方式:
1、get请求,params 接受
2、post请求:content-type的类型有关系。
- application/json格式数据,json关键字接受参数
- application/x-www-form-urlencoded,data关键字接受参数
import requests# post 请求 --请求的四大要素,登录接口 == application/json格式数据,json关键字接受参数
url_login = "http://shop.lemonban.com:8107/login"
param = {"principal":"lemon_py","credentials":"12345678","appType":3,"loginType":0}
header = {"Content-Type":"application/json; charset=UTF-8"}
# json参数接受,那么content-type的头部可以不传。# response = requests.post(url=url,json=param,headers=header)
response = requests.request(method="post",url=url_login,json=param) # 这种更加通用 重点掌握。
print(response) # Response对象,可以获取详细信息
print(response.status_code) # 获取响应状态码
print(response.headers) #获取响应头
print(response.text) #获取响应数据 --响应体字符串格式
print(response.json()) # 把json格式的响应数据,转换成python字典--响应体字典格式# get请求 -- 搜索接口, 如果请求方法是get方法 参数就是params接受
# url_search = "http://shop.lemonban.com:8107/search/searchProdPage?prodName=真皮圆筒包"
# resp = requests.request(method="get",url=url_search)url_search = "http://shop.lemonban.com:8107/search/searchProdPage"
param = {"prodName":"真皮圆筒包"}
resp = requests.request(method="get",url=url_search,params=param)
print(resp.text)
发送各种接口的请求: get post请求
各种参数类型: json 表单格式 等
requests发送接口请求之后的结果是响应消息。
注意: 在requests库里,除了url和请求方法之外,其他的数据都要用字典的格式传输。
传参的方式:
1、get请求,params 接受
2、post请求:content-type的类型有关系。
- application/json格式数据,json关键字接受参数,content-type的头部不需要传 默认就是json
- application/x-www-form-urlencoded,data关键字接受参数,content-type的头部不需要传 默认就是form
- multipart/form-data:支持文件/图片等传输 ,一般都是文件 图片上传接口
import requests#application/x-www-form-urlencoded,data关键字接受参数 --ERP项目url= "http://erp.lemfix.com/user/login"
param = {"loginame":"test123","password":"e10adc3949ba59abbe56e057f20f883e"}
res = requests.request(method="post",url=url,data=param)
print(res.text)
发送各种接口的请求: get post请求
各种参数类型: json 表单格式 等
requests发送接口请求之后的结果是响应消息。
注意: 在requests库里,除了url和请求方法之外,其他的数据都要用字典的格式传输。
传参的方式:
1、get请求,params 接受
2、post请求:content-type的类型有关系。
- application/json格式数据,json关键字接受参数,content-type的头部不需要传 默认就是json
- application/x-www-form-urlencoded,data关键字接受参数,content-type的头部不需要传 默认就是form
- multipart/form-data:支持文件/图片等传输 ,一般都是文件 图片上传接口
– 二进制流的格式传输的
– 需要files关键字接受 文件参数。
- 文件参数也要用字典的格式表示:
{name: (filename,文件对象(open打开),媒体类型(Content-Type))}- name是你传的是啥 ,开发定义的名字参数的名字
- filename:可以自己定义上传的文件的名字 不用跟真实的名字一样; 抓包就是直接用的文件名字;然后会显示在数据库里filename字段里。 不加 就默认用文件本身的名字。
- 媒体类型:content-type也可以不加, 其实就是MIME类型,但是可以不加 可以自动识别识别文件媒体类型。
但是如此执行接口报错: “error”:“unauthorized” 因为这个接口需要token鉴权。
- 但是是登录之后才能操作的接口都需要鉴权。 登录之前接口不需要。
import requests# 上传接口 : multipart/form-data:支持文件/图片等传输 ,一般都是文件 图片上传接口 files接受参数url= "http://shop.lemonban.com:8107/p/file/upload"
# file_obj = {"file":open("tricy.png","rb")} # 文件参数
file_obj = {"file":("py65图片",open("tricy.png","rb"),"image/jpeg")} # 文件参数
res = requests.request(method="post",url=url,files=file_obj)
print(res.text)
问题:
1、fiddler代理设置不成功的,设置了代理就接口发送不通的,把代理的IP地址设置为127.0.0.1【本机回环地址】
2、get请求方法,参数接受用params关键字;
post请求,参数接受用data或者json关键字;
- data: 当参数格式是表单格式的
- json: 当参数格式是json格式的
文件上传接口: 用files关键字接受
3、json文件格式化输出 快捷键 : alt + ctrl +L
相关文章:

接口关联和requests库
一、接口关联 postman的接口 postman的接口关联配置:js代码,重点在于思路。 // 定义jsonData这个变量 接受登录接口的返回结果 var jsonData JSON.parse(responseBody); // 从返回结果里提取token/id值,并赋值给token/id变量值作为环境变…...

Python编程基础 001 开篇:为什么要学习编程
Python编程基础 001 开篇:为什么要学习编程 一、什么是程序,什么是编程二、学习编程对青少年的价值(一)未来社会的需要(二)学习对现青少年现的现阶段的直接影响 三、学习编程从什么时候开始(一)…...

AQS源码分析
前言 AbstractQueuedSynchronizer是抽象同步队列,其是实现同步机器的基础组件,并发包中的锁的底层就是使用AQS实现的。AQS中 维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞…...

应对Locked勒索病毒威胁:你的数据安全准备好了吗?
导言: .Locked勒索病毒,作为一种新型的恶意软件,已经在全球范围内引起了广泛的关注。这种病毒通过加密受害者的文件,并要求支付赎金以获取解密密钥,从而实现对受害者的勒索。本文旨在深入解析.Locked勒索病毒的特点、…...

周末分享一篇关于html和http的文章吧
前面咱们说了https://blog.csdn.net/luohaitao/article/details/136974344(说道说道JSP和HTTP吧-CSDN博客),把http的方法和jsp中httpservle对象的方法对上号了,其实从开发的角度看,jsp就是html中混入了java的服务端代码…...

Frechet分布
Frechet分布是一种连续概率分布,它是极值统计中的一个重要模型,尤其在分析极端事件(如洪水、地震、金融市场中的极端波动)的最大值极限分布时扮演关键角色。Frechet分布属于极值分布的三种基本类型(I型、II型、III型&a…...

vue3全局引入element-plus使用Message教程
文章目录 安装引入 Element Plus和组件样式示例注意安装与引入:按需引入:API 使用:样式问题:组件上下文:版本兼容性:错误处理: 这是 Element UI 的 Vue 3 版本。ElMessage 是 Element Plus 中的…...

时序预测 | Matlab实现BiTCN-BiLSTM双向时间卷积神经网络结合双向长短期记忆神经网络时间序列预测
时序预测 | Matlab实现BiTCN-BiLSTM双向时间卷积神经网络结合双向长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现BiTCN-BiLSTM双向时间卷积神经网络结合双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现BiTCN…...

基于 Linux 的更新版 MaxPatrol VM 可扫描 Windows
👾 MaxPatrol VM 2.1 是俄罗斯唯一一款可以安装在 Linux 上并以审计和五重测试模式扫描 Windows 主机(甚至是旧版本)的漏洞管理产品。 让我们告诉你更新后的 MaxPatrol VM 还有哪些有用的功能: 1. 由于采用了新的数据存储模式&a…...

【软件开发】给Ubuntu 18.04虚拟机安装最新的Python 3.12.2
一、前言 笔者在Windows 11主机上安装有Ubuntu 18.04虚拟机(使用虚拟化平台Oracle VM VirtualBox),在Python3.6的使用过程中遇到了问题,决定安装Python 3.12.2,在此记录安装过程。 二、安装过程(在Ubuntu…...

鸿蒙NXET实战:高德地图定位SDK【获取Key+获取定位数据】(二)
如何申请key 1、创建新应用 进入[控制台],创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。 2、添加新Key 在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次:输入应用名名称&…...

Dubbo管理控制台
1.将资料中的dubbo-admin-2.6.0.war文件复制到tomcat的webapps目录下 2.启动tomcat,修改WEB-INF下的dubbo.properties文件 #如果Zookeeper是安装在虚拟机上的那么注册中心的地址需要修改为虚拟机的ip地址 dubbo.registry.addresszookeeper://192.168.100.110:2181 dubbo.admin…...

CSS问题精粹1
1.关于消除<li>列表前的符号 我相信很多人在初学CSS时会遇到该问题,无论是创作导航,还是列表,前面都会有个黑点点或其它符号。 解决该问题其实很简单 采用list-style-type:none或list-style:none直接解决 如果你想更换前面的黑点点&a…...

neo4j所有关系只显示RELATION,而不显示具体的关系
当看r时,真正的关系在properties中的type里,而type为“RELATION” 造成这个的原因是: 在创建关系时,需要指定关系的类型,这是固定的,不能像属性那样从CSV文件的一个字段动态赋值。标准的Cypher查询语言不支…...

VMware和Xshell连接
1.开启虚拟机 2.使用管理员账户,点击未列出 3.输入用户名密码 4.点击编辑虚拟网络编辑器 5.记住自己的网关和IP地址 6.打开终端 7.输入命令,vim / etc / sysconfig / network -scripts / ifcfg-ens33 回车 8.修改图中两处按“ I ”键进入编辑 d…...

【C语言进阶篇】编译和链接
【C语言进阶篇】编译和链接 🥕个人主页:开敲🍉 🔥所属专栏:C语言🍓 🌼文章目录🌼 编译环境与运行环境 1. 翻译环境 2. 编译环境:预编译(预处理)编…...

pytorch+tensorboard
安装依赖 pip install teorboard pip install torch_tb_profiler了解teorboard 记录并可视化标量[组]、图片[组]。 如何使用 第一步:构建模型,记录中间值,写入summarywriter 每次写入一个标量add_scalar 比如: from torch.utils.tensorboard import SummaryWriter wr…...

PTA------ 敲笨钟
字符串处理问题!------->字符串处理相关操做 代码: #include <iostream> #include<algorithm> #include<cmath> #include<cstring> #include<set> #include<stack> #include<queue> #include<map>…...

关于HashSet的五个问题
1.HashSet集合的底层数据结构是什么样的? HashSet 集合的底层数据结构是哈希表,它是由一个数组和链表(或红黑树,具体取决于 JDK 版本)组成的数据结构。 数组:哈希表的主要部分是一个数组,它的每个位置称为…...

linux性能调优汇总(一)cpu
目录 一、引言 二、CPU ------>2.1、/proc/cpuinfo ------>2.2、cpuid指令 ------>2.3、lscpu ------>2.4、turbostat ------>2.5、rdmsr ------>2.6、perf ------>2.7、top ------>2.8、ps ------>2.9、pidstat 查看每个进程CPU、内存、…...

CSS object-fit 属性
object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。 object-fit 一般用于 img 和 video 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。 您可以通过使用 object-position 属性来切换被替换元素的内容对象在元素框内的…...

使用LangChain LCEL生成RAG应用、使用LangChain TruLens对抗RAG幻觉
# 导入LangChain的库 from langchain import *# 加载数据源 loader WebBaseLoader() doc loader.load("https://xxx.html")# 分割文档对象 splitter RecursiveCharacterTextSplitter(max_length512) docs splitter.split(doc)# 转换文档对象为嵌入,并…...

npm淘宝镜像源更新
目录 前情提要: 背景: 镜像源更新: 清楚缓存: 直接切换镜像源: 补充: 错误解释: 解决方法: 前情提要: 2024 /1 /22 ,registry.npm.taobao.org淘宝镜像源的SSL…...

Navicat 干货 | 探索 PostgreSQL 的外部数据包装器和统计函数
PostgreSQL 因其稳定性和可扩展性而广受青睐,为开发人员和数据管理员提供了许多有用的函数。在这些函数中,file_fdw_handler、file_fdw_validator、pg_stat_statements、pg_stat_statements_info 以及 pg_stat_statements_reset 是其中的重要函数&#x…...

耳目一新的滑块版登录注册界面~
又到了毕业季,大家做毕设的时候总会参考已有的案例,不过大多产品的样式非常单一雷同。本帖博主给大家分享一个比较别树一帜的登录界面,如下: 如果没有账号,点击“去注册”,则会产生如下的效果: …...

分布式系统的发展史
目录 🐳今日良言:且视他人之疑目如盏盏鬼火,大胆地去走自己的夜路 🐇一、常见概念 🐇二、发展史 今日良言:且视他人之疑目如盏盏鬼火,大胆地去走自己的夜路 一、常见概念 在正式介绍分布式系…...

2024年腾讯云服务器最新价格表,CPU内存带宽系统盘报价
腾讯云服务器价格表2024年最新价格,轻量2核2G3M服务器61元一年、2核2G4M服务器99元1年,三年560元、2核4G5M服务器165元一年、3年900元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、8核32G配置115元1个月,345元3个月。CVM云服务…...

深入解析Oracle数据库ORA-01427错误:单行子查询返回多行的问题与解决办法
深入解析Oracle数据库ORA-01427错误:单行子查询返回多行的问题与解决办法 1、引言2、错误描述3、常见场景与示例4、解决方案5、声明 1、引言 在Oracle数据库日常运维与开发过程中,经常会遇到ORA-01427错误,这是一个很典型的数据库错误提示&am…...

【正点原子FreeRTOS学习笔记】————(12)信号量
这里写目录标题 一、信号量的简介(了解)二、二值信号量(熟悉)三、二值信号量实验(掌握)四、计数型信号量(熟悉)五、计数型信号量实验(掌握)六、优先级翻转简介…...

【数据分享】1929-2023年全球站点的逐年平均露点(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…...