当前位置: 首页 > news >正文

接口测试---Requests

Requests

案例

  • 安装 pip install requests

  • 案例1 : requests访问百度

    # 导包
    import requests
    # 2.发送http请求
    resp=requests.get(url="http://www.baidu.com")
    # 打印结果
    print(resp.text)
    
  • 案例2 : 访问tpshop商城(提参数出来)

    # 导包
    import requests
    # 发送http请求
    resp=requests.get(url="https://hmshop-test.itheima.net/Home/Goods/search.html",params={"q":"iphone"})
    # 打印结果
    print(resp.text)
    
  • 案例3 : 登录ihrm系统--post请求

    import requests
    resp=requests.post(url="https://ihrm-java.itheima.net/api/sys/login",headers={"Content-Type":"application/json"},json={"mobile": "13800000002", "password": "929itheima.CN032@.20250910"})
    print(resp.json())
    
  • 案例4 : 修改员工信息并查看---put和get,删除同理

    # 导包
    import requests
    # 修改指定员工的姓名
    resp=requests.put(url="https://ihrm-java.itheima.net/api/sys/user/1066370498633486336",headers={"Authorization": "3b354697-1b3b-4f92-840f-d46d71ac5f6f"},json={"username":"aksha"})# 查看
    resp2=requests.get(url="https://ihrm-java.itheima.net/api/sys/user/1066370498633486336",headers={"Authorization": "3b354697-1b3b-4f92-840f-d46d71ac5f6f"})
    # 打印结果
    print(resp.json())
    print(resp2.json())
    

    image

  • 简介

    • cookie是针对http协议无状态的特征,设计的一种技术

    • cookie将数据保存在浏览器端,默认空间为4K(可以修改)

    • cookie中的数据,用户随意获取,没有安全性

    • 数据类型受浏览器限制

    • cookie中大多存放网络通信相关的不敏数据信息,提高访问速度

  • Cookie+Session的认证方式(10分重要)

image

  • 注意 : tpshop中,密码错误返回值为验证码错误
    image

  • 按照cookie+session认证方式修改:
    image

    # 导包
    import requests
    # 获取cookie值,点击刷新验证码(cookie中包含session_id)
    resp=requests.get(url="https://hmshop-test.itheima.net/index.php?  m=Home&c=User&a=verify&r=0.31241433102456484")
    # 获取cookie
    my_cookie=resp.cookies
    # 发送登录请求post(密码错误的url),携带获取到的cookie,获取响应结果
    resp2=requests.post(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.17791485152418463",data={"username":"13739717401","password":"1234567","verify_code":"8888"},cookies=my_cookie)
    # 打印输出
    print(resp2.json())
    
  • 成功登录
    image

  • 访问订单页面 : (cookie只需要获取一次,其它请求都需要继续带cookie发)

# 导包
import requests
# 获取cookie值,点击刷新验证码(cookie中包含session_id)
resp=requests.get(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.31241433102456484")
# 获取cookie
my_cookie=resp.cookies
# 发送登录请求post(密码错误的url),携带获取到的cookie,获取响应结果
resp2=requests.post(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.17791485152418463",data={"username":"13739717401","password":"123456","verify_code":"8888"},cookies=my_cookie)
print(resp2.json())
# 发送请求访问我的订单页面
resp3=requests.get(url="https://hmshop-test.itheima.net/Home/Order/order_list.html",cookies=my_cookie)
# 打印输出
print("我的订单页面",resp3.text)

Session(会话)

  • 概念 : 从客户端登陆服务器开始,直到客户端退出登录,所产生的所有通信数据,保存在session中

    • session 将数据存储在服务器端

    • session使用服务器存储空间,没有大小限制

    • 数据类型受服务器主机影响,几乎支持所有数据类型

    • session中的数据,大多采用加密,转码存储,安全性高

Session自动管理Cookie : cookie中的数据,都由session提供的

  • 案例6 : 用session实现Tpshop商城登录,获取我的订单页面数据

实现步骤 :

  1. 创建session对象(实例) ----> my_session=requests.Session()

  2. session实例调get方法,发送获取验证码需求(不需要提取cookie,session自动能拿到) ----> my_session.get()

  3. 用同一个session实例调用post方法,发送登录请求(不需要携带cookie) ----> my_session.post()

  4. 使用用一个session实例,调用get方法,查看我的订单页面请求(不需要携带cookie) ----> my_session.get()

# 导包
import requests# 创建session实例
my_session=requests.Session()# 通过实例调用get方法发送获取验证码请求
resp=my_session.get(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.31241433102456484")# 通过实例调用post方法实现登录请求
resp2=my_session.post(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.17791485152418463",data={"username":"13739717401","password":"123456","verify_code":"8888"})# 通过实例调用get方法实现我的订单页面请求
resp3=my_session.get(url="https://hmshop-test.itheima.net/Home/Order/order_list.html")print("登陆结果:",resp2.json())
print("我的订单页面:",resp3.text)

cookie与session区别!!!

  • 数据存储位置 :

    • cookie存储在浏览器端
    • session存储在服务器端
  • 安全性 : cookie安全性低,session高

    • cookie直接存储在浏览器,可以任意获取,没有安全性可言
    • session存储在服务器端,采用加密转码形式存储数据,安全性高
  • 数据类型 :

    • cookie在浏览器端,支持测试数据类型受浏览器限制
    • session在服务器端,服务器是主机,几乎支持所有的数据类型
  • 大小 :

    • cookie默认大小4KB
    • session直接使用服务器存储,没有限制.

响应resp

  • 每次收到的resp都是全部信息,怎么获取数据中的指定内容??

    • 使用resp.获取相应数据

      1. 获取URL : resp.url

      2. 获取响应状态码 : resp.status_code

      3. 获取Cookie : resp.cookies

      4. 获取响应头 : resp.headers

      5. 获取响应体 :

        • 文本格式 : resp.text
        • json格式 : resp.json(),如果出现JSONDecodeError错误提示,说明不能转换为json数据
  • 实例9 : 访问百度并获取相应数据

import requests
resp=requests.get(url="https://www.baidu.com")
# 获取url
print("获取url:",resp.url)
# 获取响应状态码
print("响应状态码:",resp.status_code)
# 获取Cookie
print("获取cookie:",resp.cookies)
# 获取响应头
print("获取响应头:",resp.headers)
# 获取 响应体
print("获取响应体:",resp.text)

PyTest框架--实现单元测试的框架

  • 安装 : pip install pytest

  • 查验 : pip list/pip show pytest

  • 定义类/测试方法

# 测试类名,建议以Test开头
class Testxxx(object):# 测试方法名:必须以test开头def test_xxx(self):pass
  • 执行测试用例
单文件执行(了解):方法1:终端命令 pytest -s xxx.py方法2:方法定义后,右键->运行,此方法,类定义后:右键->运行 所有方法方法3:导包import pytestif __name__=='__main__':pytest.main(['s','xxx.py'])多文件执行:[重点]1.直接在项目目录下,创建文件pytest.ini2.编写 pytest.ini文件[pytest]				固定内容adopts=-s				添加命令行参数 add optionstest paths=./xxx			.py测试用例文件,相对于pytest.inipython_files=xxx*.py	.py文件名,可用通配符python_classes=Test*	 测试类名,可用通配符python_functions=test*	 测试方法名,可用通配符3.终端执行命令pytest	
  • Fixture
# 1.方法级别方法def setup(self):		在每个普通测试方法执行之前,自动调用一次def teardown(self):		在每个普通测试方法执行之后,自动调一次
# 2.类级别方法def setup_class(self):	在类中所有 测试方法执行之前,自动被调用一次def teardown_class(self):在类中所有测试方法执行结束之后,自动被调用一次
  • 断言
# 方法1:assert 预期结果 == 实际结果		-----断言相等
# 方法2:assert 预期结果 in 实际结果		-----断言包含
  • 测试报告生成
1.安装插件 pip install pytest-html
2.修改pytest.ini文件中addopts的值addopts= -s --html=report/测试报告名.html --self-contained-html
3.使用命令pytest生成测试报告
  • 案例1 : 使用pytest测试TestAdd,终端使用命令会自动调用pytest.ini文件

image

ihrm案例

# 导包
import requests
# 定义测试类
class TestLogin(object):# 定义测试方法-登录成功def test01_login_success(self):# 发送post请求,登录ihrm得响应结果resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",json={"mobile": "13800000002", "password": "929itheima.CN032@.20250912"})# 打印结果转jsonprint("登陆成功:", resp.json())# 断言assert 200 == resp.status_codeassert 10000 == resp.json().get("code")assert True == resp.json().get("success") # python用get获取值assert "操作成功" in resp.json().get("message")# 定义方法-手机号不存在def test02_tel_not_exists(self):resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",json={"mobile": "1380000012", "password": "929itheima.CN032@.20250912"})# 打印结果print("手机号不存在:", resp.json())# 断言判断assert 200 == resp.status_codeassert False == resp.json().get('success')assert 20001 == resp.json().get('code')assert "用户名或密码错误" in resp.json().get('message')# 定义方法-密码错误def test01_pwd_error(self):resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",json={"mobile": "1380000002", "password": "itheima.CN032@.20250523"})# 打印结果输出print("密码错误:", resp.json())# 断言判断assert 200 == resp.status_codeassert False == resp.json().get('success')assert 20001 == resp.json().get('code')assert "用户名或密码错误" in resp.json().get('message')
  • 测试结果

image

  • 测试报告

image
image

相关文章:

接口测试---Requests

Requests 案例安装 pip install requests案例1 : requests访问百度 # 导包 import requests # 2.发送http请求 resp=requests.get(url="http://www.baidu.com") # 打印结果 print(resp.text)案例2 : 访问tpshop商城(提参数出来) # 导包 import requests # 发送http请…...

LangChain大模型应用开发介绍

LangChain大模型应用开发介绍 LangChain是一个开源的Python Al应用开发框架,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain, 开发者可以轻松地与大模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以…...

[豪の学习笔记] 软考中级备考 基础复习#8

软件工程概述、软件开发模型、软件开发方法、需求分析、系统设计、系统测试、软件开发项目管理、软件质量、软件度量McCabe度量法跟学视频:学以致知Learning - 软件设计师 基础阶段|考点理论精讲 Chapter 8 - 软件工程基础知识 1 - 软件工程概述 软件生存周期 ​ 同任何事物一…...

lc1025-除数博弈

难度:简单(中期巅峰)题目描述爱丽丝先手 初始数 n (1 <= n <= 1000) 若能选出 x (0 < x < n) 使 x 能整除 n,则 n 变为 n-x 若不能,则输掉示例 输入:n = 2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作输入:n = 3 输出:false 解释:爱丽丝选择 1(n 变…...

漏洞解析--文件包含漏洞究竟怎么用?

一、漏洞原理 1.1 核心 文件包含漏洞是指程序中需要包含其他文件(代码,信息等等),然而包含文件的路径受用户输入控制,攻击者可以使其包含恶意文件,从而造成敏感信息泄露甚至任意代码执行。分为两类:本地文件包含(LFI, Local File Inclusion):攻击者能够让程序包含服务…...

办公室装修 暂存

办公室装修 暂存本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/19088481...

博客更新公告

来看看博客更新公告吧rt. 公示最新更新或发布的博客, 供大家查阅. 更新日志 Upd 2025.9.12 新随笔 Words to be remembered 2025.9.12 我好想你. 网址: https://www.cnblogs.com/hsy8116/p/19088430.Upd 2025.8.24 博客 初中这三年 已经更新, 在最后添加了对初中三年整体的评价…...

爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI 和 OpenRouter等供应商API

爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI 和 OpenRouter等供应商APIJetBrains和Xcode现已支持自带API密钥(BYOK)使用GitHub Copilot Chat,支持Anthropic、Azure等主流AI提供商。用户可灵活选择模型,享受更好的控制和实验体验。安装最新插件…...

JavaWeb05 - 详解

JavaWeb05 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !…...

CF182C

根据贪心策略,应当选择 \(k\) 个最小的负数改为正数,或选择 \(k\) 个最大的正数改为负数,才可能使答案最大。那么可以先把数按正负分开,并确定每个数在同符号数中的排名。建立权值线段树,记录每个数出现的次数、单个数大小、总贡献和,查询时类似线段树二分,如果数值较大…...

CF185D

大胆猜测,所有数的最大公约数一定很小:偶数时为 \(1\),奇数时为 \(2\)。设两个正整数 \(n,m\) 且 \(n<m\),最大公约数 \(\gcd(k^{2^n}+1,k^{2^m}+1)=d\),则有 \(k^{2^n}\equiv k^{2^m} \equiv -1\pmod d,k^{2^{n+1}} \equiv (k^{2^{n+1}})^{\frac{2^m}{2^{n+1}}} \equi…...

Python计算文件md5

Python计算文件md5 基础版本1 import hashlib2 3 def calculate_md5(file_path, chunk_size=8192):4 """5 计算大文件的MD5值6 7 Args:8 file_path (str): 文件路径9 chunk_size (int): 每次读取的字节数,默认8KB 10 11 …...

CF201C

最优的方案应该是先往一个方向走,然后走回来,再往另一个方向走不回来。考虑用 dp 模拟这个过程。设 \(f_{i,0/1}\) 表示从第 \(i\) 个点出发往左走,不一定/一定回到 \(i\) 号点的最大次数,则有转移: \[\begin{array}{l} f_{i,1}=f_{i-1,1}+a_{i-1}-[2 \nmid a_{i-1}]\\f_{…...

CF1774D

首先 \(1\) 的总个数不能被 \(n\) 整除时无解。 否则一定有解(因为每一列上的 \(1\) 的位置都可以随意变动,故实际上相当于可以随便放)。为了步数最少,一定是用缺少 \(1\) 行的 \(0\) 与过多 \(1\) 行的 \(1\) 交换,这样能同时使两行更接近答案。实现时先枚举列,再根据每…...

CF23C

挺神奇的思维题。 首先将所有元素按 \(a\) 从大到小排序,考虑交叉选,即要么 \(a_1,a_3,a_5,\cdots,a_{2n-1}\),要么 \(a_1,a_2,a_4,\cdots,a_{2n-2}\)。无论选哪种,\(a\) 一定满足要求(前者 \(a_1>a_2,a_3>a_4,\cdots,a_{2n-3}>a_{2n-2}\),各式相加即可,后者 \…...

CF37C

将每个 01 串看作一个二进制数,将长度从小到大排序,对于当前第 \(i\) 个串,首先在第 \(i-1\) 个串的基础上加 \(1\)(如果不能加 \(1\) 即爆位数则无解),如果长度相同则无需任何操作,否则按照缺少的长度从后面补 \(0\)。这样做能保证长度短的不为长度长的前缀,且尽可能的…...

CF33D

由于任意两个圆没有交点,故不存在翻一次栅栏能穿过两个圆。那么对于每个栅栏,如果两个点一个在内一个在外,则必须翻,否则不用翻。时间复杂度 \(O(mk)\),可以通过。 #include<iostream> #include<cstdio> #include<algorithm> #include<map> #defi…...

支持类 Unix 语法 ``:Windows 下用 PowerShell 7 优化 npm 和 VS Code

不支持 && ? 在类 Unix 系统中,&& 是常用的命令组合符,表示 前一个命令成功后再执行下一个命令。例如: echo "第一步成功" && echo "第二步执行"在 Windows 的默认环境中,cmd 或旧版 PowerShell 对 && 支持有限,可能…...

初赛程序阅读做题要点

草稿纸打清楚 同一时间的变量尽量打在一行 遇到循环要标好循环节 递归树,加入记忆化搜索想法,打表存储...

模拟堆(手写堆 的五大操作)

先看手写堆的相关问题:堆排序(手写堆) 五大操作: 例题: 输入样例:8 I -10 PM I -10 D 1 C 2 8 I 6 PM DM期望输出:-10 6代码实现:#include<bits/stdc++.h> using namespace std;const int N =1e5+10; int h[N]; int n,size; int ph[N],hp[N];void hswap(int a,in…...

【A】杂题悬桨

[ARC199A] Flip Row or Col 2...

使用Osquery进行远程取证:NTFS取证扩展实战指南

本文详细介绍了如何利用osquery的NTFS取证扩展进行远程数字取证分析,包括时间戳攻击检测、删除文件痕迹追踪等实战场景,为安全分析师提供高效端点调查方案。使用Osquery进行远程取证 - Trail of Bits博客 系统管理员使用osquery进行端点遥测和日常监控,安全威胁猎人用它发现…...

完整教程:简单介绍一下Clickhouse及其引擎

完整教程:简单介绍一下Clickhouse及其引擎pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

矩阵分解

LU 分解 考虑将 \(A\) 分解成 \(LU\),\(L\) 为上三角矩阵,\(U\) 为下三角矩阵。 利用矩阵经典性质 \(|A|=|L||U|\),可以轻易算出 \(det(A)\)。 考虑 \(A_{i,j}=\gcd(i,j)\),一个经典性质是 \(\sum_{d|n} \phi(d)=n\),那么设 \(L_{i,j}=[j|i]\),\(U_{i,j}=[i|j]\phi(i)\)。…...

第一周个人作业

我叫张司靓,第一次在博客园写随笔,就跟大家聊聊我自己,还有对接下来学习的想法,想到哪儿说到哪儿,主打一个真实~ 一、先跟大家唠唠我自己我的日常小爱好 我平时没事就爱追剧,玩游戏,举个具体的例子:之前出的莲花楼,我已经n刷了,但每次看到大结局的时候都给我哭的死去…...

基于 Gitlab 实现 Go 的 CI/CD

# 定义流水线的几个阶段 stages:- lint- test- build- docker- deploy# 定义所有 job 的默认环境变量 variables:GO111MODULE: "on"CGO_ENABLED: "0"GOPROXY: "https://goproxy.cn,direct"# 代码静态检查 lint: # 这是 job 的…...

2025.9.11

2025.9.11讲的网络流 1.早读 P13925 [POKATT 2024] 联合猫国 / The Paw-litical Game 感觉好像在哪见过这道题,但是我不会 其实是个 \(dp\) (复杂度对吗?) 就是设 \(f[i]\) 表示考虑前 \(i\) 个最少变成几个 转移就是枚举最后一个合法状态 复杂度是 \(\sum i\) 结尾合法状态…...

容斥原理

1. 定义 有N个集合,称为 S[1],s[2]...s[n] ,则这N个集合的并集为假如有N个毫不相干的约束条件,那么可以将所有满足某个约束条件的状态看作一个集合,这样用容斥原理就可以很轻松地求出所有满足至少一个约束条件的状态总数 2. 题目 洛谷P1287 盒子与球 https://www.luogu.com…...

【B】世良真纯

...

如何使用jobleap.cn避免简历中的严重错误

如何使用jobleap.cn避免简历中的严重错误在求职竞争激烈的今天,一份优质且无误的简历至关重要。许多优秀人才因简历中的细节错误被招聘人员淘汰,但这完全可以避免。jobleap.cn作为专业的人才服务平台,致力于帮助您精准优化简历,提升面试通过率,让您在第一轮筛选中脱颖而出…...

在 Zustand 中创建通用 Action 的优雅实践

为何需要通用 Action? 在 Zustand 状态管理库中,开发者常常需要为状态对象的每个字段单独编写更新函数。然而,随着状态结构的复杂化,这种方式会导致代码冗余,维护成本增加。例如: updateName: (name) => set(() => ({ name })), updateAge: (age) => set(() =&g…...

如何用产品思维优化简历的“用户体验”?

如何用产品思维优化简历的“用户体验”?用产品思维优化简历的用户体验,关键在于让你的简历更符合招聘需求,更易被HR快速理解和认可。简历就像产品,目标用户是HR和用人主管,需求来自职位描述,设计要简单、清晰、兼容多场景,信息需要精准量化。jobleap.cn 是专注于职业发展…...

简历如何优化,简历如何投递,面试如何准备?

简历如何优化,简历如何投递,面试如何准备?简历模板建议简洁,突出关键信息,避免花哨。格式请统一用PDF,防止样式错乱。技术岗位一般不建议贴照片。简历文件名规范为“姓名_学历_岗位_手机号”,这样更专业且便于识别。学历是优势,尤其是名校毕业,可以自信标注;工作经验…...

网络流做题笔记

P3227 [HNOI2013] 切糕 考虑最小割。 对于一个坐标上的点只能选择一个 \(z\) 坐标,将 \(z\) 坐标的费用作为流量顺次连接。 第二个限制条件,先去绝对值,枚举较大值。 再限制较小值,不能小于 \(z-D\),从 \((x,y,z)\) 向 \((x,y,z-D)\) 连 \(inf\) 即可。 方格取数问题 相邻…...

简历优化全攻略:如何写出吸引HR的简历?

简历优化全攻略:如何写出吸引HR的简历?在求职过程中,简历是敲开面试大门的关键。本攻略从准备、写作到完善,教你系统优化简历内容,提高求职成功率。在求职过程中,简历是敲开面试大门的关键。本攻略从准备、写作到完善,教你系统优化简历内容,提高求职成功率。 1. 写简历…...

重塑云上 AI 应用“运行时”,函数计算进化之路

答案是,远未准备好。无论是被誉为“云原生操作系统”的 Kubernetes,还是被看作“终极形态”的无服务器(Serverless),在面对 AI 应用时都暴露出了深刻的架构失配。作者:世如 引言:AI 应用的“电器时代”与运行时的“隐形枷锁” 阿里云王坚博士曾不止一次的强调云计算的核…...

25.9.12 C语言基本数据类型

预备知识 A、1 字节(byte)=8 比特(bit) 1个比特即为1个二进制位数 B、%d 按有符号十进制整型数打印 %6d 按十进制整型数打印,至少6个字符宽(指输出的最后一个字符距行首为六字符)如:xxx123 %f 按浮点数打印(默认为小数点后6位) %6f按浮点数打印,至少6个字符宽 %06f 按…...

Avalonia:基础导航

Avalonia本身就可以实现导航功能,在主页面放置 TransitioningContentControl 控件,把它绑定到ViewModel 中的一个属性上 ViewModelBase? _currentPage;,通过更新这个属性实现导航。 我们先建二个ViewModel,一个是ColorsViewModel,一个是AboutViewModel。 using Avalonia.D…...

bashrc的一些配置记录

linux-Ubuntu22.04的bashrc在配置cuda的时候还需要配置以下内容:export PATH=/usr/local/cuda/bin:$PATH export CUDA_HOME=/usr/local/cuda export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64 export…...

H5游戏性能优化系列-----协议相关优化

H5通讯协议这一块儿最长将的搭配应该是WebSocket+Protobuf这种模式吧,本篇就聊一下protobuf相关的优化。 Protobuf基本流程导入protobuf库 一般是后端定义协议文件,xxx.proto 现在的引擎都是要求写Ts文件的,所以要生成协议类的.d.ts,这样写协议处理时才有代码提示 直接加载…...

实现我的第一个langchain应用

这里我使用了科大讯飞的免费大模型来尝试 最简的应用 from langchain_community.chat_models import ChatOpenAI from langchain.schema import HumanMessagellm = ChatOpenAI(model_name="xop3qwen1b7", # 模型名称openai_api_base="https://maas-api.cn-huab…...

小说可视化系统设计(程序员副业项目)

https://blog.csdn.net/qq_33002279/article/details/151620553本文来自博客园踩坑狭,作者:韩若明瞳,转载请注明原文链接:https://www.cnblogs.com/han-guang-xue/p/19088351...

MyEMS与开源浪潮:如何重塑全球能源管理的未来格局

在气候变化与数字化转型的双重时代背景下,能源管理已从一项辅助性工作跃升为企业战略的核心。传统的、封闭的、昂贵的商业软件解决方案曾主导这一领域,但如今,一股由开源引领的变革浪潮正以前所未有的力量冲击着旧有格局。在这股浪潮之巅,MyEMS 作为一个全功能的开源能源管…...

React Antd or Antd Pro:findDOMNode is deprecated and will be removed in the next major release.

(旧项目)我一开始用的react:18.3.0, antd:5.21.1, ant-design/pro-components:2.7.19 (1)antd更新日志关于修复这个问题的最新一版是在2024/05/19的5.17.3版本(查询于2025/09/12)而且也是部分修复antd更新日志:https://ant-design.antgroup.com/changelog-cn(2)在 Pro…...

单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测

在科技飞速发展的当下,人工智能与边缘计算的融合正以前所未有的速度重塑着我们的生活。RK3576芯片拥有4核Cortex-A72以及4核Cortex-A53提供基础算力,6TOPS算力NPU来模型推导运算。使用YOLOv8模型时也是手到擒来,接下来随着步伐看看它表现如何。 YOLO简介 YOLO(You Only Loo…...

doms.ul.querySelectorvs document.querySelector:DOM查询的层级关系

在JavaScript DOM操作中,doms.ul.querySelector和 document.querySelector都是用于查找元素的方法,但它们有重要的区别。让我详细解释它们的关系和差异。 核心区别特性document.querySelectorelement.querySelector​​搜索范围​​整个文档仅限于调用元素的子元素​​执行效…...

穿越钱塘江:一条高铁隧道背后的技术挑战

​2025年9月10日,中铁四局二公司杭州机场高铁站前5标柯桥制梁场首榀箱梁顺利浇筑,标志着铁路箱梁预制施工正式拉开序幕,工程建设全面进入实体施工新阶段。 ▲现场图片(图源:越牛新闻)这一节点不仅意味着杭州机场高铁在土建施工上实现关键突破,也为后续线路铺轨、站房建设…...

Pwn2Own Automotive 2025 决赛日:49个零日漏洞与88万美元奖金揭晓

本文详细记录了Pwn2Own Automotive 2025第三日决赛战况,涵盖ChargePoint/Sony/Autel等品牌设备漏洞利用细节,包括整数溢出、缓冲区溢出、命令注入等技术细节,最终累计颁发88.6万美元奖金。第三天最终战果 欢迎来到Pwn2Own Automotive 2025的第三个也是最后一个比赛日。过去两…...

9.HPA与VPA

HPA 与 VPA ​ 在前面的学习中我们使用了一个 kubectl scale 命令可以来实现 Pod 的扩缩容功能,但是这个是完全手动操作的,要应对线上的各种复杂情况,我们需要能够做到自动化去感知业务,来自动进行扩缩容。为此,Kubernetes 也为我们提供了这样的一个资源对象:Horizontal …...

MyEMS在行动:揭秘开源能源管理系统如何重塑工业与楼宇的能效未来

当“节能降耗”从一个口号变为一项关乎企业生存与发展的关键指标时,背后的管理工具便成为了决胜因素。Across the globe, 从德国的智能工厂到中国的绿色数据中心,一款名为MyEMS的开源系统正在悄然推动一场静悄悄的能源效率革命。 本文将通过场景化的视角,深入剖析MyEMS在不同…...