金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口
目录
一、日志封装及应用(理解)
二、认证开户接口脚本编写
1、代码编写
1️⃣api目录
2️⃣script目录
2、BeautifulSoup库
1️⃣简介及例子
2️⃣提取html数据工具封装
3、认证开户参数化
一、日志封装及应用(理解)
🔴日志的作用:
- 记录程序运行的步骤和错误。
🔴日志的场景:
- 1、调试bug
- 2、查看程序运行轨迹
🔴日志基本应用:
# 1、导包
import logging
# 2、调用日志⼊口
logging.error("出错啦,错误原因:{}".format(e))
import logging
# 设置日志级别 及保存⽂件名
logging.basicConfig(level=logging.DEBUG, filename="../log/p2p.log")
# 调用日志
logging.debug("调试信息")
logging.info("信息级别")
logging.warning("警告")
logging.error("断⾔错误!")
logging.critical("严重错误")
🔴测试人员使用的日志的入口:
- info:记录运行步骤
- error:记录运行错误
🔴日志底层组成介绍:了解底层是为了修改log打印出的信息进行美化封装
- 说明:logging库底层有4大组件(日志器、处理器、格式器、过滤器)
- 1、日志器:接受日志信息,设置日志显示级别
- 2、处理器:控制日志显示位置或文件
- 3、格式器:控制日志输出的显示样式
- 关系:
- 格式器必须关联处理器
- 处理器必须关联日志器
🔴日志封装应用:
重组封装的目的:解决日志显示的样式、存储方式
①日志工具的封装
在util.py中添加日志工具的封装:
下面这个日志工具类可以当模板用,最多改一下保存日志的.log文件名称
import logging.handlers# 日志工具
class GetLog:@classmethoddef get_log(cls):cls.log = Noneif cls.log is None:# 1、获取日志器cls.log = logging.getLogger()# 设置日志级别 infocls.log.setLevel(logging.INFO)filepath = DIR_PATH + os.sep + "log" + os.sep + "p2p.log"# 2、获取处理器 TimedRotatingFileHandler:日志保存到文件且根据时间去分割tf = logging.handlers.TimedRotatingFileHandler(filename=filepath,when="midnight",interval=1,backupCount=3,encoding="utf-8")# 3、获取格式器fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"fm = logging.Formatter(fmt)# 4、将格式器添加到处理器中tf.setFormatter(fm)# 5、将处理器添加到日志器中cls.log.addHandler(tf)# 返回日志器return cls.log# 下面只是测试上面的工具能不能用的,如果运行成功,则会在log目录下产生p2p.log
# p2p.log文件内容类似为:2025-01-14 22:30:41,013 INFO [util.py(<module>:50)] - 信息级别测试
if __name__ == '__main__':GetLog.get_log().info("信息级别测试")
②工具使用

(为什么这样用: Python中的`__init__.py`文件 -CSDN博客)
应用的级别:info、error
- info:i记录程序运行的步骤
- error:记录程序错误
标注地方:api和script
api层:记录程序步骤
script:记录程序执行结果、断言结果、错误原因
可以在api和script中每个方法中标注log,下面仅为示例:
# script目录中文件标注的示例
#2、获取短信验证码接口 测试@parameterized.expand(read_json("register_login.json", "phone_code"))def test02_phone_code(self,phone,imgVerifyCode,expec_text):try:# 1、调用获取图片验证码接口 -- 目的:让session对象记录cookie# 调用接口后session会自动记录cookieself.reg.api_img_code(234)# 2、调用短信验证码接口r = self.reg.api_phone_code(phone=phone,imgVerifyCode=imgVerifyCode)# 3、查看响应结果log.info("执行接口结果为:{}".format(r.text))self.assertIn(expec_text,r.text) # 使用text提取结果是更方便,json还要根据键找值log.info("执行断言通过!")except Exception as err:# 日志# print(err)log.error("断言失败,原因:{}".format(err))# 抛异常raise
# api目录中的示例
# 2、获取短信验证码接⼝ 封装def api_phone_code(self,phone,imgVerifyCode):data = {"phone": phone,"imgVerifyCode": imgVerifyCode,"type": "reg"}log.info("正在调用获取短信验证码接口,请求方法:{}, 请求url:{} 请求参数:{}".format("post", self.__url_phone_code,data))return self.session.post(url=self.__url_phone_code,data=data)
二、认证开户接口脚本编写
1、代码编写
1️⃣api目录
①结构
from config import HOSTclass ApiApproveTrust:# 初始化def __init__(self, session):# 获取session对象self.session = session# 认证urlself.__url_approve = HOST + "/member/realname/approverealname"# 查询认证状态urlself.__url_approve_status = HOST + "/member/member/getapprove"# 开户urlself.__url_trust = HOST + "/trust/trust/register"# 图片验证码urlself.__url_img_code = HOST + "/common/public/verifycode/{}"# 充值urlself.__url_recharge = HOST + "/trust/trust/recharge"# 1、认证接口 封装def api_approve(self):pass# 2、查询认证状态接口 封装def api_approve_status(self):pass# 3、开户接口 封装def api_trust(self):pass# 4、获取图片验证码接口 封装def api_img_code(self, random):pass# 5、充值接口封装def api_recharge(self,valicode):pass
②实现
from config import HOSTclass ApiApproveTrust:# 初始化def __init__(self, session):# 获取session对象self.session = session# 认证urlself.__url_approve = HOST + "/member/realname/approverealname"# 查询认证状态urlself.__url_approve_status = HOST + "/member/member/getapprove"# 开户urlself.__url_trust = HOST + "/trust/trust/register"# 图片验证码urlself.__url_img_code = HOST + "/common/public/verifycode/{}"# 充值urlself.__url_recharge = HOST + "/trust/trust/recharge"# 1、认证接口 封装def api_approve(self):# 1、请求参数data = {"realname":"华仔","card_id":"350102199003072237"}# 2、调用请求方法 难题:multipart/form-data使用:data+files来实现多消息体类型return self.session.post(url=self.__url_approve, data=data, files={"x": "y"})# 2、查询认证状态接口 封装def api_approve_status(self):return self.session.post(url=self.__url_approve_status)# 3、开户接口 封装def api_trust(self):return self.session.post(url=self.__url_trust)# 4、获取图片验证码接口 封装def api_img_code(self, random):return self.session.get(url=self.__url_img_code.format(random))# 5、充值接口封装def api_recharge(self,valicode):# 1、请求参数data = {"paymentType": "chinapnrTrust","amount": "1000","formStr":"reForm","valicode":valicode}# 2、调用请求方法return self.session.post(url=self.__url_recharge, data=data)
难点:认证接口请求参数类型为:multipart/form-data多消息类型,如何实现?
- 解决:请求使用data+files两种参数格式,消息头会自动切换到multipart即可。
- 示例:self.session.post(url=self.__url_approve, data=data, files={"x": "y"})
- files={"x": "y"}只是起到占位作用,表明有文件而已。
2️⃣script目录
①结构
import unittestimport requestsfrom api.api_register_login import ApiRegisterLoginclass TestApproveTrust(unittest.TestCase):# 初始化def setUp(self) -> None:#1、获取session对象self.session = requests.Session()#2、实例化ApiRegisterLogin类方法self.approve = ApiRegisterLogin(self.session)#3、调用登录接口ApiRegisterLogin(self.session).api_login()# 结束def tearDown(self) -> None:self.session.close()#1、认证接口 测试def test01_approve(self):pass#2、查询认证状态接口 测试def test02_approve_status(self):pass#3、开户接口 测试def test03_trust(self):pass#4、获取图片验证码接口 测试def test04_img_code(self):pass#5、充值接口 测试def test05_recharge(self):pass
②实现
请求第三方开户接口 和 请求第三方充值接口 的代码需要后文的BeautifulSoup库知识。
此处是加了参数化的代码,参数化的其他内容看后文参数化小节。
import unittestimport requests
from parameterized import parameterizedfrom api import log
from api.api_approve_trust import ApiApproveTrust
from api.api_register_login import ApiRegisterLogin
from util import parser_html, read_jsonclass TestApproveTrust(unittest.TestCase):# 初始化def setUp(self) -> None:#1、获取session对象self.session = requests.Session()#2、实例化ApiRegisterLogin类方法self.approve = ApiApproveTrust(self.session)#3、调用登录接口ApiRegisterLogin(self.session).api_login()# 结束def tearDown(self) -> None:r = self.session.close()# 1、认证接口 测试# 认证接口不需要参数化的原因是:只有一个可测的用例,其他两个测试用例是bug,不适合拿来做实战def test01_approve(self,expect_test="提交成功"):try:r = self.approve.api_approve()# print(r.json())log.info("正在执行认证接口响应结果为:{}".format(r.text))self.assertIn(expect_test,r.text)log.info("认证接口断言成功!")except Exception as err:# 日志log.error("断言失败,原因:{}".format(err))# 抛异常raise#2、查询认证状态接口 测试# 不需要参数化的原因是:只有一个可测的用例,def test02_approve_status(self,expect_test="华"):try:r = self.approve.api_approve_status()# print(r.json())log.info("正在执行查询认证状态接口响应结果为:{}".format(r.text))self.assertIn(expect_test, r.text)log.info("查询认证状态接口断言成功!")except Exception as err:# 日志log.error("断言失败,原因:{}".format(err))# 抛异常raise#3、开户接口 测试def test03_trust(self,expect_test="form"):try:# 1、请求后台开户接口r = self.approve.api_trust()# print(r.json())log.info("正在执行开户接口响应结果为:{}".format(r.json()))self.assertIn(expect_test, r.text)log.info("认证开户断言成功!")# 2、请求第三方开户接口result = parser_html(r) # 结果为:(’http://xxxx‘,‘{'xxx':'xxx'},……’)r = self.session.post(url=result[0],data=result[1])# print(r.text) # 结果为:UserRegister OKself.assertIn("OK",r.text)log.info("请求第三方开户断言成功!")except Exception as err:# 日志log.error("断言失败,原因:{}".format(err))# 抛异常raise#4、获取图片验证码接口 测试@parameterized.expand(read_json("approve_trust.json","img_code"))def test04_img_code(self,random,expect_code):try:r = self.approve.api_img_code(random)# print(r.status_code)log.info("正在执行获取图片验证码接口响应结果为:{}".format(r.status_code))self.assertEqual(expect_code, r.status_code)log.info("断言获取图片验证码接口成功!")except Exception as err:# 日志log.error("断言失败,原因:{}".format(err))# 抛异常raise#5、充值接口 测试@parameterized.expand(read_json("approve_trust.json","recharge"))def test05_recharge(self,valicode,expect_text):try:# 1、调用图片验证码接口self.approve.api_img_code(123)# 2、充值接口r = self.approve.api_recharge(valicode)# print("充值接口响应结果:",r.text)log.info("正在执行充值接口响应结果为:{}".format(r.json()))if valicode == 8888:# # 断言self.assertIn("form", r.text)log.info("断言充值接口成功!")# 3、三方充值result = parser_html(r) # 结果为:(’http://xxxx‘,‘{'xxx':'xxx'},……’)r = self.session.post(url=result[0], data=result[1])self.assertIn(expect_text, r.text)log.info("请求第三方充值断言成功!")else:# print("验证码错误的响应结果:",r.text)self.assertIn(expect_text,r.text)except Exception as err:# 日志log.error("断言失败,原因:{}".format(err))# 抛异常raise
2、BeautifulSoup库
1️⃣简介及例子
说明:⼀个python解析html/xml的三方库
安装: pip install beautifulsoup4 -i https://mirrors.tuna.tsinghua.edu.cn/
基本用法:
应用步骤:
- 1、导包
- 2、实例化
- 3、调用方法
例子:
重点:
1、查找所有标签 bs.find_all("标签名") == 元素的集合 == ["元素1","元素2"]
2、查找属性 元素.get("属性名")
其他方法:
2️⃣提取html数据工具封装
①思路:
②实现
在工具类py文件末尾添加下面的封装方法
from bs4 import BeautifulSoup
def parser_html(result):# 1、提取htmlhtml = result.json().get("description").get("form")# 2、获取bs对象bs = BeautifulSoup(html,"html.parser")# 3、提取urlurl = bs.form.get("action")data = {}# 4、查找所有的input标签for input in bs.find_all("input"):data[input.get("name")]=input.get("value")return url, data
使用BeautifulSoup库后就可以实现三方开户和三方充值了,代码已经在前文2️⃣script目录展示过。
3、认证开户参数化
实现难点:
{"img_code": [{"desc": "获取图片验证码成功(随机小数)","random": 0.123,"expect_code": 200},{"desc": "获取图片验证码成功(随机整数)","random": 123,"expect_code": 200},{"desc": "获取图片验证码失败(随机数为空)","random": "","expect_code": 404},{"desc": "获取图片验证码失败(随机数为字符串)","random": "123hello","expect_code": 400}],"recharge": [{"desc": "后台充值响应成功","valicode": 8888,"expect_text": "OK"},{"desc": "后台充值响应成功","valicode": 8889,"expect_text": "验证码错误"}]
}
添加了参数化的完整认证开户script文件已在前文展示:2️⃣script目录
相关文章:
金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口
目录 一、日志封装及应用(理解) 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用(理解) &…...
Lianwei 安全周报|2025.1.13
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 美国国土安全部发布《公共部门生成式人工智能部署手…...
【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理
【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理 项目背景项目实现推理过程训练过程 项目展望写在最后项目下载链接 本文为原创文章,若需要转载,请注明出处。 原文地址:https://blog.csdn.net/qq_30270773/article…...
【Compose multiplatform教程】05 IOS环境编译
了解如何使现有的 Android 应用程序跨平台,以便它在 Android 和 iOS 上都能运行。您将能够在一个位置编写代码并针对 Android 和 iOS 进行测试一次。 本教程使用一个示例 Android 应用程序,其中包含用于输入用户名和密码的单个屏幕。凭证经过验证并保存…...
【声音场景分类--论文阅读】
1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段,主要重点是建立一…...
浅谈云计算02 | 云计算模式的演进
云计算计算模式的演进 一、云计算计算模式的起源追溯1.2 个人计算机与桌面计算 二、云计算计算模式的发展阶段2.1 效用计算的出现2.2 客户机/服务器模式2.3 集群计算2.4 服务计算2.5 分布式计算2.6 网格计算 三、云计算计算模式的成熟与多元化3.1 主流云计算服务模式的确立3.1.…...
【专题】2025年节日营销趋势洞察报告汇总PDF洞察(附原数据表)
原文链接: https://tecdat.cn/?p38813 在当今复杂多变且竞争激烈的消费市场环境下,节日营销已成为企业获取市场份额、提升品牌影响力的关键战略时机。我们深知深入洞察节日营销趋势对于企业决策的重要性。 本报告汇总基于对 2024 年多个关键消费节点及…...
AR 在高校实验室安全教育中的应用
AR应用APP可以内置实验室安全功能介绍,学习并考试(为满足教育部关于实验室人员准入条件),AR主模块。其中AR主模块应该包括图形标识码的扫描,生成相应模型,或者火灾、逃生等应急处置的路线及动画演示。考试采…...
PHP智慧小区物业管理小程序
🌟智慧小区物业管理小程序:重塑社区生活,开启便捷高效新篇章 🌟 智慧小区物业管理小程序是一款基于PHPUniApp精心雕琢的智慧小区物业管理小程序,它犹如一股清新的科技之风,吹进了现代智慧小区的每一个角落…...
使用防抖与节流优化 Vue 中的异步函数调用
使用防抖与节流优化 Vue 中的异步函数调用 在 Vue 项目中,我们经常需要处理用户交互事件,例如点击、输入、切换复选框等。这些事件可能频繁触发,尤其在用户快速操作的情况下,如果每次触发都执行复杂的逻辑(如异步网络…...
【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍自动驾驶检测模型如何针对corner case 优化?
【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据…本篇介绍自动驾驶检测模型如何针对corner case 优化? 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据…本篇介绍自动驾驶检测模型如何针对corner case 优化&…...
Android CustomTextField
在 Compose 中开发用户界面时,需要处理输入框和键盘的交互,例如在键盘弹出时调整布局位置,避免遮挡重要内容。本篇博客将通过一个完整的示例展示如何实现这一功能。 功能概述 本例实现了一个简单的输入框。当输入框获得焦点或输入文字时&…...
源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)
一、源码编译安装httpd 2.4 # 从官网下载httpd源代码 [rootopenEuler-2 ~]# wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gz# 解压并进入到该目录中 [rootopenEuler-2 ~]# tar -zxvf httpd-2.4.62.tar.gz [rootopenEuler-2 ~]# cd httpd-2.4.62/# 安装httpd编译…...
ubuntu24.04安装docker显卡工具包nvidia-container-toolkit
问题描述 docker 容器启动时如果需要访问 gpu ,需要安装 nvidia-container-toolkit 才行,否则会提示如下错误 sudo docker run --rm -it --gpus all ubuntu:latest docker: Error response from daemon: could not select device driver "" …...
mac intel芯片下载安卓模拟器
一、调研 目前主流两个模拟器: 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu?” q&a🔗:https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…...
4 原型(Protoytpe)模式
原型模式 1.1 分类 (对象)创建型 1.2 提出问题 希望复制一个状态完全相同的对象。首先,新建一个相同类的对象。 然后,复制所有成员变量。 但是,有时候不知道具体类型,而且成员变量可能是私有的。&#…...
kafka的listeners和advertised.listeners,配置内外网分流
总结: listeners 指明 kafka 当前节点监听本机的哪个网卡 advertised.listeners 指明客户端通过哪个 ip 可以访问到当前节点 内网和外网并不必须是是我们通常说的公司内部网络和公网,只要是两块网卡都可以,不管是这两块网卡是公网、内网、甚至…...
Mac——Docker desktop安装与使用教程
摘要 本文是一篇关于Mac系统下Docker Desktop安装与使用教程的博文。首先介绍连接WiFi网络,然后详细阐述了如何在Mac上安装Docker,包括下载地址以及不同芯片版本的选择。接着讲解了如何下载基础镜像和指定版本镜像,旨在帮助用户在Mac上高效使…...
Redis十大数据类型详解
Redis(一) 十大数据类型 redis字符串(String) string是redis最基本的类型,一个key对应一个value string类型是二进制安全的,意思是redis的string可以包含任何数据。例如说是jpg图片或者序列化对象 一个re…...
.net core 中使用AsyncLocal传递变量
官网 https://github.com/dotnet/runtime/blob/16b6369b7509e58c35431f05681a9f9e5d10afaa/src/libraries/System.Private.CoreLib/src/System/Threading/AsyncLocal.cs#L45 AsyncLocal是一个在.NET中用来在同步任务和异步任务中保持全局变量的工具类。它允许你在不同线程的同…...
C#Halcon视觉流程框架个人封装流程心得
一,实现效果 1,初始界面 2,加载流程 3,点击流程列表“加载2D图像" 4,设置图像预处理参数与画线找线 5,执行流程 6,折叠工具箱 7,折叠操作区域 二,实现流程 1&…...
web第一次作业
系统登录代码: <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>第一次作业</title…...
Kylin Linux V10 替换安装源,并在服务器上启用 EPEL 仓库
查看系统版本: cat /etc/os-releaseNAME"Kylin Linux Advanced Server" VERSION"V10 (Lance)" ID"kylin" VERSION_ID"V10" PRETTY_NAME"Kylin Linux Advanced Server V10 (Lance)" ANSI_COLOR"0;31"u…...
备战蓝桥杯:树的存储与遍历(dfs和bfs)
树的概念 树的逻辑结构是树形结构,和我们之前的线性结构又不太一样了,是一种一对多的关系 树的结点分为根节点,叶子结点(没有分支的结点) 以及分支结点 从上往下看,每个结点都有0个或多个后继 从下往上…...
[Deep Learning] Anaconda+CUDA+CuDNN+Pytorch(GPU)环境配置-2025
文章目录 [Deep Learning] AnacondaCUDACuDNNPytorch(GPU)环境配置-20250. 引子1. 安装Anaconda1.1 安装包下载:1.2 启用安装包安装1.3 配置(系统)环境变量1.4 验证Anaconda是否安装完毕1.5 Anaconda换源 2. 安装CUDACuDNN2.1 判断本机的CUDA版本2.2 下载适合自己CU…...
计算机的错误计算(二百一十二)
摘要 利用两个大模型计算 实验表明,两个大模型均进行了中肯的分析。另外,其中一个大模型给出了 Python代码,运行后,结果中有7位错误数字;而一个大模型进行加减运算时出错。 例1. 计算 下面是与一个大模型的对话…...
Inxpect毫米波安全雷达:精准检测与动态保护,工业自动化可靠选择
Inxpect毫米波安全雷达具备“精准检测、动态区域保护、环境适应性”三大核心功能。在工业自动化和机器人系统里,这些功能发挥着重要作用,有助于提升安全性与效率。Inxpect雷达运用毫米波技术,在诸如存在灰尘、烟雾或碎屑等复杂环境中,也能保持…...
springboot房屋租赁管理系统
Spring Boot房屋租赁管理系统是一种基于Spring Boot框架构建的,旨在解决传统租房市场中房源信息更新不及时、虚假信息泛滥、交易流程繁琐等问题的信息化解决方案。 一、系统背景与目的 随着城市化进程的加快和人口流动性的增强,租房市场需求急剧增长。…...
如何使用wireshark 解密TLS-SSL报文
目录 前言 原理 操作 前言 现在网站都是https 或者 很多站点都支持 http2。这些站点为了保证数据的安全都通过TLS/SSL 加密过,用wireshark 并不能很好的去解析报文,我们就需要用wireshark去解密这些报文。我主要讲解下mac 在 chrome 怎么配置的&…...
Gensim字典和语料库
自然语言处理(NLP)是计算机科学中涉及语言数据处理的核心领域之一,应用广泛,包括文本分类、情感分析、机器翻译、主题建模等任务。在处理海量文本时,如何将非结构化的语言数据转化为机器能够理解的结构化数据,是解决这些任务的关键。 Gensim 是一个用于处理和分析文本数…...
RK3588-NPU pytorch-image-models 模型编译测试
RK3588-NPU pytorch-image-models 模型编译测试 一.背景二.操作步骤1.下载依赖2.创建容器3.安装依赖4.创建脚本A.生成模型名列表B.生成ONNX模型C.生成RKNN模型D.批量测试脚本 一.背景 测试RK3588-NPU对https://github.com/huggingface/pytorch-image-models.git中模型的支持程…...
Doris 导入慢该如何排查及优化?
在使用 Apache Doris 进行数据导入时,经常会遇到导入性能不理想的情况。今天我们就来深入分析这些问题的原因及其解决方案! Stream Load 导入慢 Stream Load 支持通过 HTTP 协议将本地文件或数据流导入到 Doris 中的一种方式,其速度还是相当…...
iOS - 关联对象的实现
根据源码总结一下关联对象(Associated Objects)的实现: 1. 关联对象的基本结构 // 对象的 isa 结构中包含关联对象标记 union isa_t {struct {uintptr_t nonpointer : 1; // 是否使用优化的 isauintptr_t has_assoc : 1; // 是否有关联对象// ...其他位…...
AudioGPT全新的 音频内容理解与生成系统
AudioGPT全新的 音频内容理解与生成系统 ChatGPT、GPT-4等大型语言模型 (LLM) 在语言理解、生成、交互和推理方面表现出的非凡能力,引起了学界和业界的极大关注,也让人们看到了LLM在构建通用人工智能 (AGI) 系统方面的潜力。 现有的GPT模型具有极高的语言生成能力,是目前最…...
【maptalks】加载SVG和GIF
加载SVG和GIF 一、加载SVG方法一:直接载入SVG文件,类似载入图片方法二:载入SVG路径 二、加载GIFVUEmaptalks实现GIF可拖拽点VUEmaptalks实现GIF跟随线条动画 一、加载SVG 方法一:直接载入SVG文件,类似载入图片 缺点&…...
【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页
【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页 一、问题背景: 如今,大家都离不开各种手机应用。随着鸿蒙系统用户越来越多,大家都希望能在鸿蒙设备上快速找到想用的 APP。华为应用市场里有海量的 APP,但之前从鸿蒙设备进…...
《leetcode-runner》【图解】如何手搓一个debug调试器——调试程序【JDI开发】【万字详解】
前文: 《leetcode-runner》如何手搓一个debug调试器——引言 《leetcode-runner》如何手搓一个debug调试器——架构 《leetcode-runner》如何手搓一个debug调试器——指令系统 本文主要聚焦于如何编写调试程序 背景 在leetcode算法背景下,用户只编写了…...
【高阶数据结构】线段树加乘(维护序列)详细解释乘与加懒标记
文章目录 1.题目[AHOI2009] 维护序列 2.懒标记处理先加后乘的形式1. 先加后乘的操作 先乘后加的形式2. 先乘后加的操作**乘法操作****加法操作** 懒标记的下传 3.代码 1.题目 题目来源:https://www.luogu.com.cn/problem/P2023 [AHOI2009] 维护序列 题目背景 老师交给小可可…...
ElasticSearch常见知识点
1、什么是ElasticSearch? Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。 2、什么是倒排索引? 正常的索引是比如二叉树。倒排索引是用内容…...
ARM与x86:架构对比及其应用
典型的服务器架构的x86采用模块化方法,基于带有可更换组件的主板。CPU和其他组件(如显卡和GPU、内存控制器、存储或处理核心)针对特定功能进行了优化,可以轻松更换或扩展。然而,这种便利是有代价的;这些硬件…...
macos 搭建 ragflow 开发环境
ragflow 是一个很方便的本地 RAG 库。本文主要记录一下在本机的部署过程 1、总体架构说明 开发环境:macbook pro(m1),16G内存 512G固态 因本机的内存和硬盘比较可怜,所以在服务器上部署基础 docker 包,…...
CVPR 2024 人体姿态估计总汇(3D人体、手语翻译和人体网格恢复/重建等)
1、Human Pose Estimation(人体姿态估计) CLOAF: CoLlisiOn-Aware Human FlowMeta-Point Learning and Refining for Category-Agnostic Pose EstimationSurMo: Surface-based 4D Motion Modeling for Dynamic Human Rendering ⭐codeGALA: Generating Animatable Layered Ass…...
docker 安装mongodb
1、先获取mongodb镜像 docker pull mongo:4.2 2、镜像拉取完成后,运行mongodb容器 docker run \ -d \ --name mongo \ --restartalways \ --privilegedtrue \ -p 27017:27017 \ -v /home//mongodb/data:/data/db \ mongo:4.2 --auth 3、mongodb服务配置 如上图&…...
82_Redis缓存雪崩击穿穿透问题
在实际业务应用中,Redis常常与诸如MySQL这类关系型数据库协同工作,旨在缓解后端数据库的负担。它扮演了一个高效缓存的角色,特别是针对那些频繁被访问的热点数据。当用户发起查询时,系统首先尝试从Redis中获取这些数据。由于Redis提供了极快的访问速度,如果数据存在于Redi…...
统计学习算法——逻辑斯谛回归
内容来自B站Up主:动画讲编程https://www.bilibili.com/video/BV1CR4y1L7RC、风中摇曳的小萝卜https://www.bilibili.com/video/BV17r4y137bW,仅为个人学习所用。 极大似然估计 几率、概率与似然 几率是指某个事件发生的可能性与不发生的可能性之比&am…...
设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo
1.策略模式 好处:动态切换算法或行为场景:实现同一功能用到不同的算法时和简单工厂对比:简单工厂是通过参数创建对象,调用同一个方法(实现细节不同);策略模式是上下文切换对象,调用…...
C51交通控制系统的设计与实现
实验要求: 本题目拟设计一个工作在十字路口的交通信号灯控制系统,设东西方向为主干道A,南北方向为辅助干道B。要求:(1)用发光二极管模拟交通灯信号;(2)灵活控制主、辅干…...
css 实现自定义虚线
需求: ui 画的图是虚线,但是虚线很宽正常的border 参数无法做到 进程: 尝试使用 border:1px dashed 发现使用这个虽然是虚线但是很短密密麻麻的 这并不是我们想要的那就只能换方案 第一个最简单,让ui 画一个图然…...
网络协议基础--协议分层
一.协议概述 1.TCP/IP 传输协议概述 TCP/IP 传输协议,即传输控制 / 网络协议,也被称作网络通讯协议。它是网络中使用的最基本通信协议,对互联网中各部分进行通信的标准和方法予以规定。通常所说的 TCP/IP 协议并非仅指 TCP 和 IP 两个协议&a…...
iOS - TLS(线程本地存储)
从源码中,详细总结 TLS (Thread Local Storage) 的实现: 1. TLS 基本结构 // TLS 的基本结构 struct tls_data {pthread_key_t key; // 线程本地存储的键void (*destructor)(void *); // 清理函数 };// 自动释放池的 TLS class Autorelease…...