GoReplay开源工具使用教程
目录
一、GoReplay环境搭建
1、Mac、Linux安装GoReplay环境
二、GoReplay录制与重播
1、搭建练习接口
2、录制命令
3、重播命令
三、GoReplay单个命令
1、常用命令
2、其他命令
3、命令示例
4、性能测试
5、正则表达式
四、gorepaly组合命令
1、组合命令实例
2、gorepaly注意事项
一、GoReplay环境搭建
1、Mac、Linux安装GoReplay环境
1,项目下载地址:
https://github.com/buger/goreplay/releases/tag/1.3.3
2,mac、Linux可以直接在终端输入
curl -L -O https://github..com/buger/goreplay/releases/download/1.3.3/gor_1.3.3_mac.tar.gz
3,解压压缩包
tar -zxvf gor_1.3.3_mac.tar.gz
4,配置环境变量,mac、Linux修改/ect/profile文件,在末尾添加
# 配置goreplay环境变量
GOR_HOME="yourPath/goreplay"
export PATH="$GOR_HOME:$PATH"
5,验证环境,显示版本号就安装完成
gor version
二、GoReplay录制与重播
1、搭建练习接口
你可以通过调用快速启动服务器gor file-server :8000
,这将在端口上启动当前目录的简单文件服务器8000
gor file-server :8000
2、录制命令
1,录制所有http请求,以下命令是录制5000端口全部的http请求,接受之前的录制文件./log/logrequests_0.gor,并且把新的录制文件输出到./log/logrequests.gor文件,
请注意,默认情况下 GoReplay 不跟踪响应,您可以使用--output-http-track-response
选项启用它们,在文件名中使用日期变量:%Y-%m-%d-%H
sudo gor --input-raw 127.0.0.1:5000 --output-stdout --output-file='./log/logrequests.gor' -output-file-append --output-file-max-size-limit "4294967296"
--input-raw
- 用于捕获HTTP流量,您应该指定IP地址或接口和应用程序端口。有关捕获和重放流量的更多信息。--input-file
- 接受之前使用 录制的文件--output-file
。有关从文件保存和重播的更多信息
3、重播命令
1,下列这行命令展示了使用录制的文件重播请求,所有记录的请求都到达第二个服务器,并且它们将以与记录时相同的顺 序和完全相同的时间重播。--input-file参数接受录制的文件,--output-http参数接受需要重播的服务器,出现FileInput: end of file 提示,说明重播完成
gor --input-file='./log/logrequests_0.gor' --output-http='http://127.0.0.1:5000'
三、GoReplay单个命令
1、常用命令
当您需要仅捕获流量的特定部分(例如 API 请求)时,匹配非常有用。可以按 URL、HTTP 标头或 HTTP 方法进行匹配,匹配方式使用正则表达式。
-http-allow-header value 根据请求头匹配,其他内容将被排除
-http-allow-method value 根据请求方式匹配,其他内容将被排除
-http-allow-url value 根据请求url匹配,其他内容将被排除
-http-disallow-header value 根据请求头匹配,其他内容将被记录
-http-disallow-url value 根据请求url匹配,其他内容将被记录
-http-header-limiter value 根据请求头,接受一部分请求
-http-param-limiter value 根据url,接受一部分请求
-http-original-host 保留原始请求头,默认gor会用--output http提供的主机替换Host http头
-http-rewrite-header value 根据匹配的内容重写请求头
-http-rewrite-url value 根据匹配的内容重写请求url
-http-set-header value 向请求中添加额外的请求头
-http-set-param value 设置请求中的param参数,如果已经存在,将会被覆盖
-input-file value 从文件读取请求
-input-file-loop 循环读取文件,一般用于性能测试
-input-raw value 从给定端口捕获流量,需要root权限
-input-tcp-secure 启用TLS证书,需要指定证书跟密钥
-input-tcp-certificate string TLS开启时,指定的证书路
-input-tcp-certificate-key string TLS开启时,指定的密钥路径
-output-file value 将请求写入文件
-output-file-queue-limit int 区块队列的长度。默认值:256
-output-file-size-limit value 每个区块的大小。默认值:32mb
-output-http value 将传入请求转发到给定的http地址
--output-http-track-response 默认情况下 GoReplay 不跟踪响应,加上这个参数跟踪响应
--input-raw-track-response 默认情况下input-raw
不拦截响应,仅拦截请求。您可以加这个参数开启响应跟踪。启用后,您将能够访问中间件和output-file
--input-file-dry-run 试运行模式,来预览需要多长时间以及给定文件输入中有多少个请求。它还会告诉您有用的信息,例如请求之间的最短和最长时间,以及第一次请求的时间。
--input-raw-max-wait 跳过大的延迟,选项(以秒为单位),该选项允许跳过录制文件中的长时间停顿。
--input-raw-allow-incomplete 如果打开,Gor将记录丢失数据包的HTTP消息
2、其他命令
-input-raw-engine libpcap 选择libpcap(默认)或者`raw_socket`拦截流量
-output-http-debug 启用http调试输出。
-input-raw-realip-header string 如果不为空,默认在请求头加上实际ip,X-Real-IP
-input-raw-track-response 如果启用,Gor将跟踪请求之外的响应,并且它们将可用于中间件和文件输出
-input-kafka-host string 向Kafka发送请求和响应统计信息
-input-kafka-json-format 启动表示消息是json格式而不是GoReplay格式
-input-kafka-topic string 向Kafka发送请求和响应统计信息
-output-kafka-host string 从Kafka读取请求和响应统计信息
-output-kafka-json-format 如果启用,它将把消息从GoReplay文本格式序列化为JSON
-output-kafka-topic string 从Kafka读取请求和响应统计信息
-input-dummy value 用于测试输出。每1s发出'get /'请求
-output-file-append 刷新的块是否附加到存在文件,只保留一个流量文件
-output-file-flush-interval duration 强制刷新文件缓冲区的时间间隔,默认为1s,一般不需要改动
-output-http-elasticsearch string 向ElasticSearch发送请求和响应统计信息
-output-http-redirects int 启用重定向的频率
-output-http-response-buffer int HTTP响应缓冲区大小,此大小之后的所有数据都将被丢弃
-output-http-stats 每5秒向控制台报告一次http输出队列统计信息
-output-http-timeout duration 指定HTTP请求/响应超时。默认情况下为5s
-output-http-track-response 如果启用,HTTP输出响应将设置为所有输出,如stdout、file等
-output-http-workers int 以多少个协程同时产生http请求,默认是动态,官方文档显示无限制,实际代码中设置了10,这块有争议
-output-null 用于测试输入。删除所有请求
-output-stdout 用于测试输入。只是将来自输入的数据打印到控制台。
-output-tcp value 用于Gor实例之间的内部通信sh
-output-tcp-secure 使用TLS安全连接–另一端的输入文件也应该打开TLS
-output-tcp-stats 每5秒向控制台报告一次TCP输出队列统计信息
-verbose 启用更详细的输出
3、命令示例
命令区分大小写,参数后面的精准匹配的时候不区分大小写,用正则表达式区分大小写
1,提示-bash: !': event not found,输入echo $-显示himBH,原因是确认是由于 H - histexpand 模式打开了导致。命令行下,双引号里面用了 ! 的话,Shell 会以为要执行历史展开,从而导致报错,解决方法:关闭 histexpand,输入set +H,再输入echo $-显示himB就可以了。
2,把双引号替换成单引号
从perf文件读取请求,添加param参数goreplay=1,添加header信息'perf':'yes',保留原始请求头,匹配url为^/user/authgetUserInfo$,输出到perf.log文件
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-allow-url ^/user/authgetUserInfo?.+
试运行模式,您无需执行实际重播即可获取有关文件内容的信息。仅支持goreplay1.3版本以上
例如,它可以告诉您文件中有多少个请求,以及重播这些请求需要多长时间。
报告示例:
gor --input-file=流量文件 --output-stdout --input-file-dry-run
找到的记录:192
格式错误的记录:<nil>
已处理的文件:1
处理的字节数:88512
最大等待时间:71.369ms
最短等待时间:15.884ms
首次等待:55.401ms
以目前的速度重放需要7.82033秒。
找到0条时间戳不正常的记录
添加请求头,goreplay:1
goreplay --input-file='perf' --http-original-host --output-file='perf.log' --http-set-header 'goreplay:1'
添加param参数,perf=1
goreplay --input-file='perf' --http-original-host --output-file='perf.log' --http-set-param 'goreplay=1'
匹配header的Host字段包含baidu.com
goreplay --input-file='perf' --http-original-host --output-file='perf.log' --http-allow-header '^Host: .*.baidu.com.*'
匹配url为/user开头的所有接口,后面路径包含空用*,不包含空用+,[^\/]表示除了匹配/所有的字符
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-allow-url ‘^\/user.+’
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-allow-url '^\/user/[^\/]'
匹配以getUserInfo结尾的所有接口
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-allow-url ‘^.*getUserInfo?.+’
匹配url为/user开头,排除结尾是/getUserInfo的所有接口,输出到perf.log文件
以下是用--http-allow-url搭配--http-disallow-url参数组合匹配的结果,同时满足a跟b两个条件,可以正常匹配
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-allow-url ’^\/user.*$' --http-disallow-url '.*getUserInfo$‘
更新头部信息跟param参数,如果参数存在,则更新,如果不存在,则添加,不能删除
goreplay --input-file='perf_0.log' --http-set-param 'goreplay=0' --http-set-header 'perf':'no' --http-original-host --output-file='perf.log'
重写请求url,匹配/user开头的url重写为/api/user开头,当重写跟匹配url一起时,先匹配url再重写url,需要匹配的url是重写之前的url
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-rewrite-url '/user/([^\/]+):/api/user/$1' --http-allow-url '^\/user.*$'
重写版本号,user重写为userv2
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-rewrite-url '^/user/([^/]):/userv2/$1' --http-allow-url '^/user/[^/]'
匹配/user/orders/detail开头,结尾是大写字母+数字,8到18位的字符串
goreplay --input-file='perf' --http-set-param 'goreplay=1' --http-set-header 'perf':'yes' --http-original-host --output-file='perf.log' --http-allow-url '^/user/orders/detail/[A-Z0-9]{8,15}'
可以同时匹配到,/user/orders/detail/LBL67047,/user/orders/detail/GSHN7W61400M120,用^/user/orders/detail/[a-z0-9]{8,15},不能匹配大写字母
4、性能测试
- 以50%的速度回放
- goreplay --input-file='perf' --http-original-host --output-tcp '127.0.0.1:5000:50%'
- 以秒50的速度回放
- goreplay --input-file='perf' --http-original-host --output-tcp '127.0.0.1:5000|50'
- 文件回放完继续循环
- goreplay --input-file='perf' --http-original-host --output-tcp '127.0.0.1:5000' --input-file-loop
- 从文件读取输出到http
- goreplay --input-file 'log_0.log' --output-http '127.0.0.1:5000' --output-stdout
- 从文件读取,输出到http,同时指定python中间件处理
- goreplay --input-file 'log_0.log' --output-http '127.0.0.1:5000' --output-stdout --middleware 'python3 middleware.py'
5、正则表达式
- 注意:goreplay无论哪个版本都不支持正反向正向预查和负向预查
- 匹配以/user开头,^/user
- 匹配以/user结尾,/user$
- 匹配1个或1个以上,+
- 匹配0,1或1个以上的,*
- 匹配0或者1个,最多一个多,?
- 匹配否定字符,[^]表示匹配任何字符集包括\n,[^abc]表示匹配非a或者b或者c的字符集,匹配u/s/e/r中的任一字符,[user]
- 匹配a-z区间所有的大小写字母,[a-z][A-Z]
- 匹配所有的字母下划线,/\w\g
- 精准匹配以/abt开头/userinfo结尾,^/abt/userinfo$,可以匹配到/abt/userinfo,不能匹配到/abt/userinfo/a, /a/abt/userinfo,/abt/a/userinfo
- 匹配以/abt开头/userinfo结尾,中间至少一个路径,^/abt/\w+/userinfo$,匹配/abt/aaa/userinfo,不能匹配/abt/userinfo,匹配以/abt开头/userinfo结尾,中间0-1一个路径,^/abt/\w*/userinfo$,匹配abt/aaa/userinfo,abt/userinfo
- 匹配/user/orders/detail接口结尾是大写字母跟数字16位组合,^/user/orders/detail/[A-Z0-9]+$,/user/orders/detail/GSHN7Q02C002006
- 匹配以'/user'开头并且不以'/auth/getUserInfo'结尾的任意字符串,
^\/user(?!\/auth\/getUserInfo).*$ (不能在gor使用)
- 匹配,/user/orders/track/GSHN7B38R00NGA4,/user/auth/mc/getKey,/user/auth,排除,/user/auth/getUserInfo
四、gorepaly组合命令
1、组合命令实例
- 这里用到了改变速率命令,以500%的速度输出用|500%,以每秒500个请求输出用:500
如果输出的文件名称跟时间相关,输出的文件名优先级高,比如14跟15点都是同一个快内,但是文件名会拆分成两个
用--output-file-queue-limit 0设置队列为0
gor --input-file 'perf|500%' --output-file '%Y-%m-%d-%H.log' --http-disallow-url '^/user/orders/detail/[A-Z0-9]{8,15}$' --http-disallow-url '^/\w.*.html$' --output-file-queue-limit 0 - 用命令匹配url同时允许多个url,允许a-url,同时允许b-url,匹配的结果会包括aurl或者b-url的所有url,url=a+b
gor --input-file 'perf|2000%' --output-file 'perf.log' --http-allow-url '^/user/[a-zA-Z]+/[a-zA-Z]+?.+$' --http-allow-url '^/[a-zA-Z]+/auth/[a-zA-Z]+?.+$' --output-file-queue-limit 0 - 用命令匹配url同时不允许多个url,不允许a-url,不同时允许b-url,匹配的结果会包括除了满足a-url或者b-url的所有url,url=url-(a+b)
- gor --input-file 'perf|2000%' --output-file 'perf.log' --http-disallow-url '^/user/[a-zA-Z]+/[a-zA-Z]+?.+$' --http-disallow-url '^/[a-zA-Z]+/auth/[a-zA-Z]+?.+$' --output-file-queue-limit 0
- 用命令匹配url一个允许一个不允许,允许a-url,不同时允许b-url,匹配的结果会包括满足a-url减去b-url的所有url,url=a-b
- gor --input-file 'perf|2000%' --output-file 'perf.log' --http-allow-url '^/user/[a-zA-Z]+/[a-zA-Z]+?.+$' --http-disallow-url '^/[a-zA-Z]+/auth/[a-zA-Z]+?.+$' --output-file-queue-limit 0
- 用命令匹配允许url并且重写url跟header,允许a-url,允许b条件,重写a-url为/api/a-url,重写header为User-Agent: gor,允许处理原始数据,然后处理重写url跟header,输出后的内容,url=/api/a+b,header=重写后的a+重写后的b
- gor --input-file 'perf|2000%' --output-file 'perf.log' --http-allow-url '^/user/[a-zA-Z]+/[a-zA-Z]+?.+$' --http-allow-url '^/pdsearch/[0-9a-zA-Z]+/.+$' --http-rewrite-url '(^/user/[a-zA-Z]+/[a-zA-Z]+?.+$):/api$1' --http-set-header 'User-Agent':'gor' --output-file-queue-limit 0
- 从url录制所有的请求,需要root权限
- sudo gor -input-raw '127.0.0.1:5000' --output-file 'test.gor' --output-stdout --output-file-queue-limit 0
- gor命令搭配中间件处理
- gor --input-file 'test.gor|800%' --output-http '127.0.0.1:5000' --output-stdout --middleware 'python3 middleware.py'
2、gorepaly注意事项
1,gor录制的时候,流量会存在不完整的情况,如果直接使用中间件处理,容易报错或者出现异常,如果出现异常后,没有日志返回结束或者nohup.txt没有返回,但是gor进程已经结束了,这种情况需要手动关闭node中间件进程
2,出现异常流量的时候,建议更换流量文件或者先用gor回放到文件,然后在使用回放后的文件用中间件处理
3,回放时直接使用中间件&gor命令回放到服务器时,会消耗部分性能,比直接从流量文件回放效率低,建议流量文件先使用中间件或者命令回放一次到文件,然后直接使用文件回放到服务器,这样效率较高
4,录制的流量包体过大,需要加参数,--input-raw-override-snaplen
5、 回放流量的时候,有时候会流量波动大,偶尔流量比较小,需要加上参数--input-file-max-wait=200ms,允许跳过录制文件中的超过200ms的延迟
相关文章:
GoReplay开源工具使用教程
目录 一、GoReplay环境搭建 1、Mac、Linux安装GoReplay环境 二、GoReplay录制与重播 1、搭建练习接口 2、录制命令 3、重播命令 三、GoReplay单个命令 1、常用命令 2、其他命令 3、命令示例 4、性能测试 5、正则表达式 四、gorepaly组合命令 1、组合命令实例 2、…...
Qt开源控件:图像刻度轴绘制器 (附源码)工程项目私信博主
项目简介 图像刻度轴绘制器是一款基于 Qt/C 开发的小型绘图工具,旨在实现带有刻度轴的图像显示功能。该项目主要用于需要精确测量或标注图像坐标的场景。通过左侧和底部的坐标轴以及对应的刻度线,可以直观地了解图像内容在二维空间中的位置。 项目功能 …...
下载 M3U8 格式的视频
要下载 M3U8 格式的视频(通常是 HLS 视频流),可以尝试以下几种方法: 方法 1:使用下载工具(推荐) 1. IDM(Internet Download Manager): 安装 IDM 并启用浏…...
Mock.js的学习使用
Mock.js 介绍:是一个功能强大的JavaScript库,用于模拟接口请求和生成随机数据。 作用: 帮助开发者独立开发、前后端分离快速原型验证测试异常情况增加单元测试的真实性 原理: 通过拦截XMLHttpRequest或fetch等网络请求&#x…...
在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主从复制
在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主从复制。以下是详细的步骤: 1. 使用 root 用户登录 确保你以 root 用户登录到 MySQL 服务器。 mysql -u root -p输入你的 root 密码后进入 MySQL 命令行界面。 2. 配置主服务器 (master) 2.1 编辑 my.…...
6.1 innoDb逻辑存储结构和架构-简介
InnoDB 是 MySQL 默认的存储引擎,以其强大的事务支持、崩溃恢复能力和高效的数据处理能力广受欢迎。本文从逻辑存储结构、内存架构、磁盘结构到后台线程,逐步剖析 InnoDB 的关键概念,帮助您更好地理解和应用。 1. 逻辑存储结构 InnoDB 的数据…...
论文阅读——量子退火Experimental signature of programmable quantum annealing
摘要:量子退火是一种借助量子绝热演化解决复杂优化问题的通用策略。分析和数值证据均表明,在理想化的封闭系统条件下,量子退火可以胜过基于经典热化的算法(例如模拟退火)。当前设计的量子退火装置的退相干时间比绝热演…...
vue3项目最新eslint9+prettier+husky+stylelint+vscode配置
一、eslint9和prettier通用配置 安装必装插件 ESlint9.x pnpm add eslintlatest -DESlint配置 vue 规则 , typescript解析器 pnpm add eslint-plugin-vue typescript-eslint -DESlint配置 JavaScript 规则 pnpm add eslint/js -D配置所有全局变量 globals pnpm add globa…...
IOS ARKit进行图像识别
先讲一下基础控涧,资源的话可以留言,抽空我把它传到GitHub上,这里没写收积分,竟然充值才能下载,我下载也要充值,牛! ARSCNView 可以理解画布或者场景 1 配置 ARWorldTrackingConfiguration AR追…...
【el-table】表格后端排序
在需要排序的列添加属性 sortable,后端排序,需将sortable设置为custom 如果需要自定义轮转添加 sort-orders 属性,数组中的元素需为以下三者之一:ascending 表示升序,descending 表示降序,null 表示还原为原…...
【iOS】多线程基础
【iOS】多线程基础 文章目录 【iOS】多线程基础前言进程与线程进程进程的状态进程的一个控制结构进程的上下文切换 线程为什么要用线程什么是线程线程和进程的关系线程的上下文切换 线程和进程的优缺点 小结 前言 笔者由于对于GCD不是很了解,导致了项目中网络请求哪…...
c#控制台项目的发布+相对路径的用法(绝对路径下素材丢失问题)
发布 生成 ->发布选定任务 生成了以后,素材需要手动拖过去 文件相对路径...
Keil5配色方案修改为类似VSCode配色
1. 为什么修改Keil5配色方案 视觉习惯:如果你已经习惯了VSCode的配色方案,尤其是在使用ESP-IDF开发ESP32时,Keil5的默认配色可能会让你感到不习惯。减少视觉疲劳:Keil5的默认背景可能过于明亮,长时间使用可能会导致视…...
网络安全框架及模型-PPDR模型
网络安全框架及模型-PPDR模型 概述: 为了有效应对不断变化的网络安全环境,人们意识到需要一种综合性的方法来管理和保护网络安全。因此,PPDR模型应运而生。它将策略、防护、检测和响应四个要素结合起来,提供了一个全面的框架来处理网络安全问题。 工作原理: PPDR模型的…...
Observability:如何在 Kubernetes pod 中轻松添加应用程序监控
作者:来自 Elastic Jack Shirazi•Sylvain Juge•Alexander Wert Elastic APM K8s Attacher 允许将 Elastic APM 应用程序代理(例如 Elastic APM Java 代理)自动安装到 Kubernetes 集群中运行的应用程序中。该机制使用变异 webhook࿰…...
solana粗略的学习总结
最近在研究solana 的东西,简单做一下总结,很久没有写文章了。写的不对的地方欢迎评论区或者私信。及时改正。 Solana 架构概述 1.0 核心模块 Solana 的架构包括以下核心模块: Proof of History (PoH):通过时间排序机制优化交易…...
【Pip】完整的 `pip` 配置文件详解:优化你的包管理与环境设置
目录 引言一、pip 配置文件概述1.1 配置文件的位置1.2 配置文件的格式 二、常见配置选项详细说明2.1 设置镜像源2.2 配置超时时间2.3 配置下载缓存2.4 配置安装选项2.5 配置信任主机2.6 配置代理2.7 配置包安装路径 三、pip 配置文件的进阶设置3.1 包源(Channels&am…...
pytorch加载预训练权重失败
问题 给当前模型换了个开源的主干网络,并且删除了某些层后,但是发现预训练权重一直加载不上。strict为True时加载报错,strict为False时又什么都加载不上,然后不知道哪里出问题了。 解决 当strict为False时,load_sta…...
mysql线上问题集合
1、too many connections 连接数量太多,可以先通过以下命令先调整最大连接数,得以连接上mysql进行问题排查。 临时修改: gdb -p mysql进程id -ex "set max_connections500" -batchgdb:这是 GNU 调试器,用于…...
Kafka从指定时间开始消费数据
需求-故障定位:flink消费kafka数据,某个时间点漏数据 背景:kafka数据保留3天,如果第二天,发现程序异常导致数据丢失,需要定位是topic源头无数据,还是程序处理出现异常。 # 1, 设置一个新的gro…...
Android 俩个主题的不同之处 “Theme.AppCompat vs android:Theme.Material.Light.NoActionBar”
这两种主题继承关系有明显的不同,具体区别如下: Theme.AppCompat vs android:Theme.Material.Light.NoActionBar Theme.AppCompat 是 AppCompat 支持库提供的主题,目的是提供向后兼容的支持,适用于较早版本的 Android(…...
FreeSWITCH mod_conference 的按键会控
又是一篇命题作文 mod_conference 官方文档: https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_conference_3965534/ 英文不好的可以看中文: http://www.freeswitch.org.cn/books/references/1.7-mod_conference.html…...
LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型 Matlab代码注释清晰。 程序设计 完整程序和数据获取方式:私信博主回复LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型(Matlab&#…...
LeetCode 64. 最小路径和(HOT100)
第一次错误代码: class Solution { public:int minPathSum(vector<vector<int>>& grid) {int dp[205][205] {0};int m grid.size(),n grid[0].size();for(int i 1 ;i<m;i){for(int j 1;j<n;j){dp[i][j] min(dp[i][j-1],dp[i-1][j])gr…...
SQL基础语法全解析(上篇)
一、基本概念 1. 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库…...
蓝牙定位的MATLAB程序,四个锚点、三维空间
这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念,并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…...
vue3-Import declaration conflicts with local declaration of dayjs
同步发布于我的网站 🚀 概述错误描述 原代码报错信息 原因分析解决方案 修改导入语句使用泛型 代码解释总结 概述 在使用 Vue3 和 dayjs 时,可能会遇到一个常见的错误:“Import declaration conflicts with local declaration of ‘dayjs’…...
node.js基础学习-express框架-静态资源中间件express.static(十一)
前言 在 Node.js 应用中,静态资源是指那些不需要服务器动态处理,直接发送给客户端的文件。常见的静态资源包括 HTML 文件、CSS 样式表、JavaScript 脚本、图片(如 JPEG、PNG 等)、字体文件和音频、视频文件等。这些文件在服务器端…...
通过waitress启动flask应用
假设你有一个名为 app.py 的文件,app 是指你的 Flask 应用实例。并且在这个文件中创建了一个 Flask 应用实例,那么你可以这样导入和使用它。 示例结构 假设你的项目结构如下: my_flask_app/ │ ├── app.py ├── waitress_server.py └─…...
linux 获取公网流量 tcpdump + python + C++
前言 需求为,统计linux上得上下行公网流量,常规得命令如iftop 、sar、ifstat、nload等只能获取流量得大小,不能区分公私网,所以需要通过抓取网络包并排除私网段才能拿到公网流量。下面提供了一些有效得解决思路,提供了…...
【阅读记录-章节5】Build a Large Language Model (From Scratch)
目录 5. Pretraining on unlabeled data5.1 Evaluating generative text models5.1.1 Evaluating generative text models5.1.2 Calculating the text generation loss评估模型生成文本的质量 5.1.3 Calculating the training and validation set losses 5.2 Training an LLM5.…...
神经网络中的优化方法(一)
目录 1. 与纯优化的区别1.1 经验风险最小化1.2 代理损失函数1.3 批量算法和小批量算法 2. 神经网络中优化的挑战2.1 病态2.2 局部极小值2.3 高原、鞍点和其他平坦区域2.4 悬崖和梯度爆炸2.5 长期依赖2.6 非精确梯度2.7 局部和全局结构间的弱对应 3. 基本算法3.1 随机梯度下降(小…...
输出1~n中能被3整除,且至少有一位数字是5的所有整数.:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 输出1~n中能被3整除,且至少有一位数字是5的所有整数. 输入描述: 输入一行,包含一个整数n。(1 < n < 100000) 输出描述: 输出所有满足条件的数,以换…...
MySQL 主从同步一致性详解
MySQL主从同步是一种数据复制技术,它允许数据从一个数据库服务器(主服务器)自动同步到一个或多个数据库服务器(从服务器)。这种技术主要用于实现读写分离、提升数据库性能、容灾恢复以及数据冗余备份等目的。下面将详细…...
html+css网页设计 旅游 马林旅行社3个页面
htmlcss网页设计 旅游 马林旅行社3个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…...
【短视频矩阵系统==saas技术开发】
在数字媒体领域,短视频的崛起已不可忽视。对于商业实体而言,掌握如何通过短视频平台有效吸引潜在客户并提高转化率,已成为一项关键课题。本文旨在深入剖析短视频矩阵系统的构成与作用机制,以期为企业提供一套系统化的策略…...
MongoDB-BSON 协议与类型
前言: MongoDB 是一个高性能、无模式的 NoSQL 数据库,广泛应用于大数据处理和实时数据存储。作为一个数据库系统,MongoDB 的核心之一就是其使用的 BSON(Binary JSON)格式,它用于存储数据以及在客户端和数据…...
论文:IoU Loss for 2D/3D Object Detection
摘要:在2D/3D目标检测任务中,IoU (Intersection-over- Union)作为一种评价指标,被广泛用于评价不同探测器在测试阶段的性能。然而,在训练阶段,通常采用常见的距离损失(如L1或L2)作为损失函数,以最小化预测值…...
Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录
前言 我这边一直用的electron-vue框架是基于electron 21版本的,electron 29版本追加了很多新功能,但是这些新功能对开发者不友好,对electron构建出来的软件,使用者更安全,所以,我暂时不想研究electron 29版…...
信创改造 - Redis -》TongRDS 安装方式之单节点模式安装
安装前准备 安装 JDK 参考链接:安装 JDK 8【Linux】 语雀 创建用户 # 用户名可以自己起 useradd rds 上传安装包到服务器 单节点模式是由两个部署单元组成:1 个RDS 服务节点,1 个 RDS 中心节点。 上传到 /home/rds 用户文件夹࿰…...
经典C语言代码——part 19(链表)
【程序72】 题目:创建一个链表。 1.程序分析: 2.程序源代码: /*creat a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef str…...
【Leetcode 每日一题】52. N 皇后 II
问题背景 n n n 皇后问题 研究的是如何将 n n n 个皇后放置在 n n n \times n nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n n n,返回 n n n 皇后问题 不同的解决方案的数量。 数据约束 1 ≤ n ≤ 9 1 \le n \le 9 1≤n≤9 解题…...
Scala的模式匹配(1)
package hfdobject Test34_1 {def main(args: Array[String]): Unit {//从数据库中获得数据 1,2,3,4//要显示给用户的是 一等,二等,三等,四等val level1val levelTxtlevel match {case 1>"一等&q…...
Oracle 11G DataGuard GAP 修复过程(通过主库scn增备恢复)
Oracle 11G DataGuard GAP 修复 (通过主库scn增备恢复) 介绍 DG GAP 顾名思义就是:DG不同步,当备库不能接受到一个或多个主库的归档日志文件时候,就发生了 GAP。 那么,如果遇到GAP如何修复呢?…...
redis的应用----缓存
redis的应用----缓存 一、缓存的概念二、使用redis作为缓存2.1使用redis作为缓存的原因2.2缓存机制的访问步骤 三、缓存的更新策略3.1定期更新3.2实时更新3.3淘汰策略 四、缓存常见的问题4.1缓存预热(Cache preheating)4.2缓存穿透(Cache penetration)4.3缓存雪崩(Cache avalan…...
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块,动态控制不同参数(如红绿蓝三色值),并实时显示最终结果。我们将以动态颜色调节为例,展示如何结合状态管理和交互逻辑,打造一个高级的…...
SpringBoot两天
SpringBoot讲义 什么是SpringBoot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式…...
基于Java Springboot诗词学习APP且微信小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开…...
3.建立本地仓库及常用命令
1.建立本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 1)在电脑的任意位置创建一个空目录,作为我们的本地Git仓库 2)进入这个目录,右键点击Git Bash 窗口 3)执行命令git init 4) 如果创…...
【Linux——实现一个简易shell】
黑暗中的我们都没有说话,你只想回家,不想你回家............................................................... 文章目录 前言 一、【shell工作过程】 二、【命令行参数】 2.1、【获取命令行参数】 1、【输出命令行提示符】 2、【输入命令行参数】 2…...