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

金融项目实战 03|JMeter脚本实现手工接口测试

目录

一、环境说明

1、项目环境搭建

2、Mock说明

二、构造测试数据

 1、通过系统页面构造

2、通过接口构造

3、通过数据库构造【推荐】

4、案例:构造借款业务数据

三、JMeter执行接口测试用例

1、获取图片验证码、获取短信验证码

2、注册脚本

3、登录脚本

4、实名认证

5、请求第三方开户

6、获取充值验证码、充值、第三方充值

7、投资


一、环境说明

涉及到项⽬环境和测试⼯具环境

1、项目环境搭建

第三方接口通过mock解决 

2、Mock说明

什么是mock?

  • 模拟接⼝
  • mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,这个虚拟的对象就是 mock 对象,mock 对象就是真实对象在调试期间的代替品 

什么场景下会⽤mock?

  • 依赖的接⼝未实现
  • 依赖的接⼝响应速度慢
  • 针对接⼝模拟各种异常

如何去实现?

  • 使⽤mock现有⼯具moco
  • ⾃定义mock
    • ① 编写⼀个函数直接return 模拟的值
    • ② 使⽤接⼝开发框架编写要模拟的接⼝ flask

要模拟哪些内容?

  • 响应数据
  • 响应状态码

需求场景:

  • 模拟⼀个:登录接⼝
    • 1、在API⽂档中说明如果登录成功,返回:状态码:200 {"status":200,"msg":"登录成 功!","token":"XXX1213123123"}
    • 2、登录失败反馈:状态码:200 {"status":100,“msg”:"⽤户名或密码错误!"
  • 问题:开发还未实现登录接⼝,那么依赖登录如何解决?

案例:

from flask import Flaskapp = Flask(__name__)# 定义接口  模拟正常返回结果,默认状态码200
@app.route("/login",methods=["get"])
def login():return {"status":200,"msg":"登录成功!","token":"XXX1213123123"}# 定义接口  模拟异常返回结果,状态码401
@app.route("/login/shibai",methods=["get"])
def shibai():return {"status":401,"msg":"登录失败!"},401app.run()

扩展:

  • ⽤户名为admin 密码为:123456 返回登录成功!否则返回⽤户名或密码错误,请求参数格式为:form
from flask import Flask,requestapp = Flask(__name__)"""
需求: ⽤户名为admin 密码为:123456 返回登录成功!否则返回⽤户名或密码错误,请求参数
格式为:form
"""# 定义接口 
@app.route("/login",methods=["post"])
def login():username = request.form.get("username") # 获取表单数据的消息体password = request.form.get("password")if username == "admin" and password == "123456":return {"status":200,"msg":"登录成功!","token":"XXX1213123123"}else:return {"status": 401, "msg": "用户名或密码错误!"}app.run()

在jmeter中发送带消息体的post请求,就可以测试自定义的接口 

本项目中需要mock的接口:

二、构造测试数据

⽅式:

  • 通过系统⻚⾯构造
  • 通过接⼝构造
  • 通过数据库构造

 1、通过系统页面构造

优点:可视化⻚⾯操作

缺点:操作步骤较多,不适合频繁改造数据。

示例:参考发布借款标流程

2、通过接口构造

优点:速度快

缺点:接⼝耦合度⾼(接⼝之间依赖性强,⼀个失败,后⾯全失败)

建议:适合依赖3个以内接⼝

3、通过数据库构造【推荐】

优点:灵活度⼤,执⾏速度最快。

缺点:需要熟悉库、表、字段

建议:编写SQL语句时,使⽤复制⽣成的SQL语句,修改主要字段值

【小结】

4、案例:构造借款业务数据

-- 清空操作
delete from `czbk_member`.`mb_member` where id=869;
delete from `czbk_member`.`mb_member_info` where id=987;
delete from `czbk_finance`.`fn_loan_amount` where id=987;
delete from `p2p_mock`.`p2p_account` where id=911;-- 借款
delete from `czbk_finance`.`fn_loan` where id=642;
delete from `czbk_finance`.`fn_loan_info` where id=832;
delete from `czbk_finance`.`fn_loan_amount_log` where id=869;INSERT INTO `czbk_member`.`mb_member` (`id`, `name`, `trust_account`, `password`, 
`email`, `phone`, `paypassword`, `count`, `register_ip`, `register_time`, 
`register_date`, `lastlogin_ip`, `lastlogin_time`, `lastlogin_date`, 
`register_type`, `role`, `group`, `group_status`, `is_realname`, `is_email`, 
`is_phone`, `is_video`, `is_id5`, `is_vip`, `credit_point`, `is_auto`, 
`pwd_attach`, `status`, `lock_time`, `vip_start_time`, `vip_end_time`, 
`vip_category_id`, `vip_category_ind`, `amount`, `phonestr`) VALUES ('869', 
'13099775533', '6021234507160403', 'eab70f4a46c640b3dfc35040bf37c803', NULL, 
'13099775533', NULL, '1', '1972826569', '1588835827', '2020-05-07', '1972826569', 
'1588835827', '2020-05-07', '1', '1', '1', '2', '1', '-1', '1', '-1', '-1', '-1', 
'0', '-1', '1m4U82PqPx', '1', NULL, NULL, NULL, NULL, NULL, '0.00', NULL);INSERT INTO `czbk_member`.`mb_member_info` (`id`, `member_id`, `member_name`, 
`avatar`, `nickname`, `realname`, `gender`, `birthday`, `card_id`, `qq`, 
`educational_background`, `marry_status`, `graduated`, `company_industry`, 
`company_scale`, `company_office`, `monthly_income`, `invite_money`, 
`hometown_province`, `hometown_city`, `hometown_area`, `hometown_post`) VALUES 
('987', '869', '13099775533', NULL, NULL, '⼩⽯头', NULL, '1986-11-18', 
'429009118611181111', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL);INSERT INTO `czbk_finance`.`fn_loan_amount` (`id`, `member_id`, `member_name`, 
`credit_amount`, `credit_amount_freeze`, `vouch_amount`, `vouch_amount_freeze`, 
`pawn_amount`, `pawn_amount_freeze`, `roam_amount`, `roam_amount_freeze`) VALUES 
('987', '869', '13099775533', '200000.000000', '0.000000', '0.000000', 
'0.000000', '0.000000', '0.000000', '0.000000', '0.000000');
INSERT INTO `p2p_mock`.`p2p_account` (`id`, `account`, `AvlBal`, `AcctBal`, 
`FrzBal`, `create_time`) VALUES ('911', '6021234507160403', '0.00', '0.00', 
'0.00', '2020-05-07 16:04:03');-- 借款
INSERT INTO `czbk_finance`.`fn_loan` (`id`, `ind`, `serialno`, `name`, 
`member_id`, `member_name`, `amount`, `credited_amount`, `progress`, 
`tender_count`, `category_id`, `category_type`, `repay_type`, `period`, `apr`, 
`sort_index`, `sort_top`, `status`, `hidden_status`, `additional_status`, 
`deposit_certificate`, `certificate_file_id`, `loan_repay_status`, 
`loan_repay_time`, `overdue_time`, `add_date`, `add_time`, `verify_time`, 
`reverify_time`, `add_ip`, `vouch_company_id`, `op_status`, `marker_type`) VALUES 
('642', 'f5380d59791773a8abad4141ff90a5a4', '202008231111', '数据库构造借款1', 
'869', '13099775533', '100000.00', '0.00', '0.00', '0', '1', '1', '1', '60', 
'7.55', '1', NULL, '3', '1', '-1', '-1', NULL, NULL, NULL, '1609501013', '2020-
05-07', '1588847800', '1588851413', NULL, '1972826569', '0', '-1', '数据库');INSERT INTO `czbk_finance`.`fn_loan_info` (`id`, `loan_id`, `thumbs`, `contents`, 
`attachment_ids`, `password`, `use`, `tender_amount_min`, `tender_amount_max`, 
`freeze_amount`, `freeze_amount_proportion`, `freeze_period`, `award_status`, 
`fail_award_status`, `award_amount`, `award_proportion`, `award_amount_total`, 
`validate`, `part_status`, `tender_count`, `comment_status`, `comment_count`, 
`is_company`, `company_name`, `vouch_company_info`, `vouch_company_pic`, 
`vouch_company_guaranty`, `amount_category_id`, `hits`, `cancel_admin_id`, 
`cancel_remark`, `cancel_time`, `verify_admin_id`, `verify_admin_name`, 
`verify_remark`, `verify_time`, `verify_ip`, `reverify_admin_id`, 
`reverify_admin_name`, `reverify_remark`, `reverify_time`, `reverify_ip`, 
`auto_scale`, `is_auto`, `additional_status`, `additional_apr`, 
`additional_name`, `additional_amount_max`, `additional_pic`, `product_process`, 
`information`) VALUES ('832', '642', NULL, '数据库构造借款1', 'a:0:{}', NULL, 
'10102', '100.00', '1000.00', NULL, '10.00', NULL, '-1', '-1', NULL, NULL, NULL, 
'239', NULL, '0', '-1', '0', '-1', NULL, NULL, NULL, NULL, '1', '1', NULL, NULL, 
NULL, '4', 'admin', '数据库构造借款1 通过', '1588851413', '1972826569', NULL, NULL, 
NULL, NULL, NULL, NULL, '1', '-1', '0.000000', NULL, '0.000000', NULL, NULL, 
NULL);UPDATE `czbk_finance`.`fn_loan_amount` SET `credit_amount_freeze`='100000.000000' 
WHERE `member_id`='869';INSERT INTO `czbk_finance`.`fn_loan_amount_log` (`member_id`, `member_name`, 
`category_id`, `type`, `amount`, `remark`, `add_time`) VALUES ('869','13099775533', 1, 4, '100000', '借款冻结', 
'1972826569'); 

三、JMeter执行接口测试用例

按照 金融项目实战 02|接口测试分析、设计以及实现-CSDN博客 中的用例来执行接口测试用例

下文内容可以结合测试项目实战--安享理财2(Jmeter接口测试)_安享理财数据库-CSDN博客中的“四、手工执行接口测试”,这篇博客里写了其他的注意事项。 

1、获取图片验证码、获取短信验证码

设置这个,之后就用取样器发送请求就不用填域名了

注意:

1、随机数为空、随机数为字符串,响应状态码为400、404,如果需要查看结果树的该请求变绿,就需要加断⾔且勾选“忽略状态”(图中截图示例)

2、接口中的随机小数也可以函数来随机生成,借助函数助手对话框

3、获取短信验证码依赖图⽚验证码,需要先请求图⽚验证码,添加cookie管理器进⾏关联。该cookie管理器会自动管理cookie,只要域名相同,上条接口会自动保存cookie,下一条接口需要cookie会自动附加。

2、注册脚本

提示:

1、密码为空、未同意条款为bug。

2、注册接口中手机号必须和获取短信验证码接口手机号⼀致。原因是需要保持前后cookie一样 。

3、登录脚本

提示:

1、解锁需要使⽤固定定时器登录60秒 (60000毫秒)

2、查询登录状态(未登录)需要把登录请求删除


【补充】两种请求体格式 

 multipart/form-data

普通form


4、实名认证

1、一定要勾选红框内容,因为aip文档中要求的请求头是multipart/form-data;
2、不能在测试计划下面加请求头默认值,不然会勾选multipart/form-data失效,导致报错;
3、每个认证测试接口中的登录账号必须不一样,因为每个认证过的接口认证信息已经保存了

5、请求第三方开户

红框是从上一个开户接口的响应信息里复制粘贴的;
蓝框是从上一个开户接口的响应信息里用正则表达式提取的变量

难点:分析正则提取公式

结论:黄框是要提取的数据,除了要提取的数据不⼀样,其他内容格式都⼀样

 表达式编写:用自带的正则表达式测试器,测试以下能不能提取到正确的内容

这里显示的数据是unicode编码后的响应数据

扩展 unIcode编码

6、获取充值验证码、充值、第三方充值

提示:

1、后台充值必须先登录,再请求图⽚验证码,最后调⽤后台充值

2、三⽅充值和三⽅开户⼀模⼀样,直接复制即可。

7、投资

提示:投资id使⽤642,密码为空的使⽤id是820。

相关文章:

金融项目实战 03|JMeter脚本实现手工接口测试

目录 一、环境说明 1、项目环境搭建 2、Mock说明 二、构造测试数据 1、通过系统页面构造 2、通过接口构造 3、通过数据库构造【推荐】 4、案例:构造借款业务数据 三、JMeter执行接口测试用例 1、获取图片验证码、获取短信验证码 2、注册脚本 3、登录脚本…...

前端工具汇总

1. vscode 下载地址:https://code.visualstudio.com/ vscode扩展汇总: 1.1 Code Spell Checker(必须安装) 代码拼写检查器 1.2 Auto Close Tag 自动添加HTML/XML的关闭标签 3. Auto Import 自动查找、解析并为所有可用导入…...

【学习路线】Python数据分析(数据科学) 详细知识点学习路径(附学习资源)

学习本路线内容之前,请先学习Python的基础知识 其他路线: Python基础 >> Python进阶 >> Python爬虫 >> Python数据分析(数据科学) >> Python 算法(人工智能) >> Pyth…...

Flutter 实现验证码输入框学习

学习flutter代码 实现一个用于输入验证码的自定义组件,它允许用户输入固定长度的验证码,并在输入完成时触发回调。 前置知识点学习 TextStyle TextStyle 是 Flutter 中用于定义文本样式的类。它提供了一组属性来控制文本的外观,如字体大小、…...

hutool糊涂工具通过注解设置excel宽度

import java.lang.annotation.*;Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public interface ExcelStyle {int width() default 0; }/*** 聊天记录*/ Data public class DialogContentInfo {/**…...

汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图)

汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图) 前面的两篇博文简述了AutoSAR CP分层架构的概念,下面我们来具体到每一层的具体内容进行讲解,每一层的每一个功能块力求用一个总览图,外加一个例子的图给大家进…...

有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗

近期,有多名开发者反馈,收到来自腾讯科技 (深圳) 有限公司委托北京的一家**诚律师事务所卞,写给AppStore的投诉邮件。 邮件内容主要说的是,腾讯注册了【水印相机】这四个字的商标,所以你们这些在AppStore上的app&…...

SpringBoot操作spark处理hdfs文件

SpringBoot操作spark处理hdfs文件 1、导入依赖 <!-- spark依赖--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.2</version></dependency><depend…...

Spring Boot中的依赖注入是如何工作

Spring Boot 中的依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是通过 Spring 框架的核心机制——控制反转&#xff08;Inversion of Control&#xff0c;IOC&#xff09;容器来实现的。Spring Boot 基于 Spring Framework&#xff0c;在应用中自动…...

算法面试1

简述yolov1的网络架构 YOLOv1网络结构包括24层卷积层用来提取图像的特征&#xff0c;2层全连接层回归得到7730&#xff08;141420&#xff09;的张量。   网络结构大概如下&#xff1a;输入的是4484483通道的图像&#xff0c;就是RGB图像&#xff0c;然后用64个卷积核大小是…...

Android车机DIY开发之软件篇(八)单独编译

Android车机DIY开发之软件篇(八)单独编译 1.CarLauncher单独编译 CarLauncher源码位于 packages/apps/Car/Launcher 用Eclipse ADT 谷歌定制版编译而成&#xff0c;.mk .bp编译 Android13目录如下: alientekalientek:~/packages/apps/Car$ ls Calendar …...

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台&#xff0c;在即将到来的春季促销活动之前&#xff…...

Cursor实现go项目配置并实现仓库Gin项目运行

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a;知识备份 ✨特色专栏&#xff1a;知识分享 &#x…...

【网络云SRE运维开发】2025第2周-每日【2025/01/11】小测-【第11章NAT理论和实操考试】解析

文章目录 一、选择题二、理论题三、实操题 【网络云SRE运维开发】2025第2周-每日【2025/01/11】小测-【第11章NAT理论和实操考试】解析 一、选择题 在H3C设备上&#xff0c;NAT技术主要用于&#xff08; &#xff09; A. 提高网络安全性 B. 实现不同网段的通信 C. 将内部私有IP…...

drawDB docker部属

docker pull xinsodev/drawdb docker run --name some-drawdb -p 3000:80 -d xinsodev/drawdb浏览器访问&#xff1a;http://192.168.31.135:3000/...

页面顶部导航栏(Navbar)的功能(Navbar/index.vue)

这段代码是一个 Vue.js 组件&#xff0c;实现了页面顶部导航栏&#xff08;Navbar&#xff09;的功能。我将分块分析它的各个部分&#xff1a; 模板 (Template): <!-- spid-admin/src/layout/components/Navbar/index.vue --> <template><div class"navb…...

【人工智能】用Python进行对象检测:从OpenCV到YOLO的全面指南

对象检测是计算机视觉领域的核心任务之一&#xff0c;广泛应用于视频监控、自动驾驶、智能安防等多个场景。随着深度学习技术的发展&#xff0c;基于传统方法的对象检测逐渐被基于神经网络的先进模型所取代。本文将系统地介绍如何使用Python进行对象检测&#xff0c;重点探讨了…...

深度学习从入门到实战——卷积神经网络原理解析及其应用

卷积神经网络CNN 卷积神经网络前言卷积神经网络卷积的填充方式卷积原理展示卷积计算量公式卷积核输出的大小计算感受野池化自适应均值化空洞卷积经典卷积神经网络参考 卷积神经网络 前言 为什么要使用卷积神经网络呢&#xff1f; 首先传统的MLP的有什么问题呢&#xff1f; - …...

Flink概念知识讲解之:Restart重启策略配置

Flink概念知识讲解之&#xff1a;Restart重启策略配置 当 Task 发生故障时&#xff0c;Flink 需要重启出错的 Task 以及其他受到影响的 Task &#xff0c;以使得作业恢复到正常执行状态。 Flink 通过重启策略和故障恢复策略来控制 Task 重启&#xff1a;重启策略决定是否可以…...

Golang中使用 Mqtt

MQTT 是一种基于发布/订阅模式的 轻量级物联网消息传输协议 &#xff0c;可以用极少的代码和带宽为联网设备提供实时可靠的消息服务&#xff0c;它广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等行业。 本文主要介绍如何在 Golang 项目中使用 github.com/eclips…...

腾讯云下架印度云服务器节点,印度云服务器租用何去何从

近日&#xff0c;腾讯云下架印度云服务器节点的消息引起了业界的广泛关注。这一变动让许多依赖印度云服务器的用户开始担忧&#xff0c;印度云服务器租用的未来究竟在何方&#xff1f; 从印度市场本身来看&#xff0c;其云服务市场的潜力不容小觑。据 IDC 报告&#xff0c;到 2…...

STM32内置Flash

一、原理 利用flash存储用户数据需要注意查看&#xff0c;用户数据是否会覆盖芯片运行程序。 IAP&#xff08;在程序中编程&#xff09;利用程序修改程序本身&#xff0c;和OTA是一个原理。IAP在程序中编程支持任意一种通信下载。 ICP&#xff08;在电路中编程&#xff0c;通…...

面试:C++类成员初始化顺序

1、非静态数据成员&#xff1a;按它们在类定义的声明顺序初始化&#xff0c;不会按它们在初始化列表的顺序。 2、静态数据成员&#xff1a;在main函数启动之前&#xff0c;并且只初始化一次 3、基类构造函数&#xff1a;如果类从一个或多个基类继承而来&#xff0c;基类的构造…...

约束的笔记

约束的分类 为什么需要约束 为了保证数据的完整性 ①实体完整性&#xff08;Entity Integrity&#xff09;(同一个表中&#xff0c;不能存在两条完全相同无法区分的记录) ②域完整性&#xff08;Domain Integrity&#xff09; ③引用完整性&#xff08;Referential Integ…...

【Docker】安装registry本地镜像库,开启Https功能

下载镜像 docker pull registry:2 需要启动https功能&#xff0c;就要生成服务端的自签名的证书和私钥&#xff0c;以及在docker客户端安装这个经过签名的证书。 第一步&#xff1a;生成公私钥信息&#xff0c;第二步&#xff0c;制作证书签名申请文件&#xff0c; 第三步&…...

el-tree拖拽光标错位问题

背景&#xff1a;el-tree实现的分类树增加拖拽功能后&#xff0c;当分类树由于数量较多产生滚动条&#xff0c;如果分类树已滚动&#xff0c;进行拖拽时会造成光标错位的问题: 原因&#xff1a;el-tree拖拽光标定位的高度并未加上滚动的高度解决&#xff1a;将滚动的样式属性放…...

Linux权限

目录 一.Linux权限的概念 二.Linux权限管理 1.文件访问者的分类 2.文件类型和访问权限 1.文件类型 2.基本权限 3.文件权限的表示方法 1.字符表示法 2.八进制表示法 4.文件权限的相关访问方法 1.chmod 2.chown 3.chgrp 4.粘滞位 三.权限总结 一.Linux权限的概念 …...

mysql binlog 日志分析查找

文章目录 前言一、分析 binlog 内容二、编写脚本结果总结 前言 高效快捷分析 mysql binlog 日志文件。 mysql binlog 文件很大 怎么快速通过关键字查找内容 一、分析 binlog 内容 通过 mysqlbinlog 命令可以看到 binlog 解析之后的大概样子 二、编写脚本 编写脚本 search_…...

win32汇编环境,窗口程序中对按钮控件常用操作的示例

;运行效果 ;win32汇编环境&#xff0c;窗口程序中对按钮控件常用操作的示例 ;常用的操作&#xff0c;例如创建按钮控件&#xff0c;使其无效&#xff0c;改变文本&#xff0c;得到文本等。 ;将代码复制进radasm软件里&#xff0c;直接就可以编译运行。重点部分加备注。 ;>&g…...

风水算命系统架构与功能分析

系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持myb…...

如何在 Ubuntu 22.04 上安装和配置邮件服务器教程

简介&#xff1a; 在本指南中&#xff0c;我们将演示如何在 Ubuntu 22.04 上安装和配置邮件服务器&#xff0c;因为大中型公司可以从拥有私人邮件服务器中获益匪浅。通过使用邮件服务器&#xff0c;可以密切监视所有电子邮件流量。此外&#xff0c;自定义设置的灵活性使得建立…...

后门原理与实践

实验目录 windows主机与kali虚拟机实现互联互通使用netcat获取主机操作Shell&#xff0c;cron启动使用socat获取主机操作Shell, 任务计划启动使用MSF meterpreter生成可执行文件&#xff0c;利用ncat或socat传送到主机并运行获取主机Shell使用MSF meterpreter生成获取目标主机…...

代理模式详解与应用

代理模式&#xff08;Proxy Pattern&#xff09;&#xff0c;也称为委托模式或 surrogate 模式&#xff0c;是一种结构型设计模式。它为其他对象提供一个代理以控制对这个对象的访问。通过引入代理对象&#xff0c;可以在不改变原始对象接口的前提下&#xff0c;添加额外的功能…...

C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码

1 分词 分词是自然语言处理的基础&#xff0c;分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔&#xff0c;除了某些特定词&#xff0c;如how many&#xff0c;New York等外&#xff0c;大部分情况下不需要考虑分词…...

基于单片机的智能家居排气扇系统设计

1系统方案设计 本设计基于单片机的智能家居排气扇系统采用STM32单片机作为主控制器&#xff0c;通过DHT11温湿传感器和MQ-2烟雾传感器实现温度、湿度、烟雾检测&#xff0c;在自动模式下&#xff0c;可以根据烟雾浓度通过PWM调速的方式自动调节排气扇的速度&#xff0c;而在手…...

基于JAVA+SpringBoot+Vue的二手车交易系统

基于JAVASpringBootVue的二手车交易系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽…...

【JVM-2.2】使用JConsole监控和管理Java应用程序:从入门到精通

在Java应用程序的开发和运维过程中&#xff0c;监控和管理应用程序的性能和资源使用情况是非常重要的。JConsole是Java Development Kit&#xff08;JDK&#xff09;自带的一款图形化监控工具&#xff0c;它可以帮助开发者实时监控Java应用程序的内存、线程、类加载以及垃圾回收…...

windows及linux 安装 Yarn 4.x 版本

1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…...

VS2015 + OpenCV + OnnxRuntime-Cpp + YOLOv8 部署

近期有个工作需求是进行 YOLOv8 模型的 C 部署&#xff0c;部署环境如下 系统&#xff1a;WindowsIDE&#xff1a;VS2015语言&#xff1a;COpenCV 4.5.0OnnxRuntime 1.15.1 0. 预训练模型保存为 .onnx 格式 假设已经有使用 ultralytics 库训练并保存为 .pt 格式的 YOLOv8 模型…...

1.两数之和--力扣

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1…...

MySQL库表的操作

目录 一、库的操作 1.1库的创建 1.2字符集和校验规则 1.2.1 查看系统默认字符集以及校验规则 1.2.2 查看数据库支持的字符集 1.2.3 查看数据库支持的字符集校验规则 1.2.4 校验规则对数据库的影响 1.3操纵数据库 1.3.1显示库 1.3.2显示创建语句 1.3.3修改数据库 1.3…...

【强化学习】深度确定性策略梯度算法(DDPG)详解(附代码)

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…...

单片机实物成品-011 火灾监测

火灾监测&#xff08;20个版本&#xff09; 版本20&#xff1a; oled显示温湿度烟雾浓度火焰传感器天然气浓度窗户风扇水泵排气系统声光报警语音播报按键WIFI模块 ----------------------------------------------------------------------------- https://www.bilibili.com…...

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…...

Mysql--重点篇--索引(索引分类,Hash和B-tree索引,聚簇和非聚簇索引,回表查询,覆盖索引,索引工作原理,索引失效,索引创建原则等)

索引是数据库中用于加速查询操作的重要机制。通过索引&#xff0c;MySQL可以快速定位到满足查询条件的数据行&#xff0c;而不需要扫描整个表。合理的索引设计可以显著提高查询性能&#xff0c;但不合理的索引可能会导致性能下降和磁盘空间浪费。因此&#xff0c;理解索引的工作…...

Vue3框架核心功能点响应式数据reactive、组合式API setup、computed、组件通信、路由导航,状态管理vuex、pinia等的实战示例代码

记录几个Vue3框架核心功能点&#xff0c;例如响应式数据reactive、组合式API setup、computed、组件通信、路由导航&#xff0c;状态管理vuex、pinia……等实战示例代码&#xff1a; 一、响应式数据&#xff08;Reactive Data&#xff09; 创建响应式对象 使用reactive函数创建…...

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务&#xff0c;如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信&#xff0c;接收作业并提交到执行队列&#xff0c;Gitlab-Runner从队列中获取作业&#xff0c;并允许在不同环境下进行作…...

多台PC共用同一套鼠标键盘

当环境中有多个桌面 pc 需要操作的时候&#xff0c;在 多台 pc 之间切换会造成很多的不方便 可以通过远程进行连接&#xff0c;但是有一个更好的方案是让多台机器之间共用同一套键盘鼠标 常用的解决方案 synergy 和 sharemouse&#xff0c;通过移动光标在不同的 pc 间切换 s…...

学会使用computed计算属性与watch监听(小白学习笔记)

1. 使用不同方法实现 姓名案例 需求: 根据data中 firstName 和 lastName 的值 来动态地展示全名 1.1. 插值语法 如果只使用学过的插值语法 那可以在模板中直接使用两个变量 . 但是如果需要对数据进行计算等处理 就需要在插值语法里写复杂的js表达式. 这样就违背了vue风格指…...

atoi函数的概念和使用案例

atoi 函数是 C 语言标准库中的一个函数&#xff0c;它用于将字符串转换为整数。atoi 的名称是 “ASCII to integer” 的缩写。该函数定义在 <stdlib.h> 头文件中。 概念 atoi 函数会从字符串的开始位置开始转换&#xff0c;直到遇到第一个非数字字符或遇到字符串结束符…...