网络带宽测速工具选择指南iperf3 nttcp tcpburn jperf使用详解
简介
本文主要介绍内网(局域网)与外网(互联网)的网络带宽测速工具下载地址、选择指南、参数对比、基本使用。
测速工具快速选择指南
测速工具下载地址
-
iperf
- 官网下载链接:iperf.fr/iperf-download.php
- 该链接提供了不同操作系统下的 iPerf 下载,包括 Windows、Linux 和 macOS3。
-
iperf3
- GitHub 仓库:ESnet/iperf
- iPerf3 是 iPerf 的改进版,可以从其 GitHub 仓库下载源代码,适用于多种操作系统2。
-
ntttcp
- GitHub 仓库:microsoft/ntttcp
- ntttcp 是一个网络性能测试工具,主要用于 Windows 平台,可以从其 GitHub 仓库下载源代码。
-
TCPburn
- GitHub 仓库:unixsurfer/tcpburn
- TCPburn 用于生成高负载的 TCP 流量,主要用于压力测试,可以从其 GitHub 仓库下载源代码。
-
Speedtest.net
- 官网:speedtest.net
- Speedtest.net 提供在线的网速测试服务,无需下载,直接在浏览器中使用。
-
Fast.com
- 官网:fast.com
- 由 Netflix 提供的快速互联网连接速度测试服务,同样是在线使用,无需下载。
-
JPerf
- SourceForge 下载:jperf.sourceforge.net
- JPerf 是 iPerf 的图形界面版本,适合不熟悉命令行的用户,可以从 SourceForge 下载。
注意:Github仓库或部分网址需要魔法网络进入下载
目录
简介
测速工具快速选择指南
测速工具下载地址
测速工具对比指南
iperf
iperf3 全平台推荐
JPerf
Ntttcp Windows平台推荐
Netperf
TCPburn
Speedtest.net 等在线测速工具
测速工具参数对比
iperf3
通用参数(服务端/客户端共用)
服务端专用参数
客户端专用参数
常见错误与注意事项
高级功能
使用帮助
JPerf
发送端
接收端
ntttcp
核心参数
映射参数 (-m)
使用帮助
Netperf
全局选项(Global options)
(1)全局命令行参数 [global options]
(2)局部可选参数 [test options]
使用帮助
TCPburn
1. 全局配置
2. 网络环境优化参数
3. 辅助工具配置
注意事项
使用帮助
iperf3使用实例参考
测速工具对比指南
以下是一些常见的网络测速工具,包括它们的应用场景、特点、支持的操作系统以及开发背景:
iperf
应用场景:用于测量网络带宽和网络质量,特别是在网络调试和性能评估时。
特点:支持TCP和UDP,可以测试单个数据流的上传和下载速度。
操作系统:跨平台,支持Windows、Linux、macOS。
开发背景:由NLANR/DAST开发,现在是开源项目,由社区维护。
iperf3
应用场景:与iperf类似,但iperf3是iperf的改进版,提供了更精确的测量。
特点:改进了性能和准确性,简化了命令行参数。
操作系统:跨平台,支持Windows、Linux、macOS。
开发背景:由ESnet开发,是iperf的后续版本。
JPerf
应用场景:作为iperf的图形界面版本,适合不熟悉命令行的用户。
特点:提供直观的图形界面,简化了iperf的使用。
操作系统:跨平台,支持Windows、Linux、macOS。
开发背景:由社区开发,基于iperf。
Ntttcp
应用场景:用于在Windows平台上进行网络性能测试,特别是在大型网络环境中。
特点:专为Windows设计,支持多线程,可以模拟高并发网络流量。
操作系统:Windows。
开发背景:由微软开发,用于内部网络性能测试。
Netperf
应用场景:用于评估网络服务的性能,如TCP、UDP、SCTP等。
特点:提供详细的网络性能数据,支持多种协议。
操作系统:跨平台,支持Linux、Unix、Windows(需要自行编译)。
开发背景:由HP实验室开发,现在是开源项目。
TCPburn
应用场景:用于生成高负载的TCP流量,用于压力测试。
特点:可以创建大量的TCP连接,用于测试网络设备的极限性能。
操作系统:主要支持Linux。
开发背景:由社区开发,用于网络性能测试。
Speedtest.net 等在线测速工具
应用场景:用于快速检测4G互联网连接速度,适合普通用户。
特点:用户界面友好,操作简单,提供全球服务器选择。
操作系统:跨平台,通过Web浏览器访问。
开发背景:由Ookla开发,是一个广泛使用的在线速度测试服务。
这类测速工具较多且衍生出各种不同的测速类型
测速工具参数对比
iperf3
通用参数(服务端/客户端共用)
参数 | 说明 |
---|---|
-p, --port | 指定服务端监听的端口号或客户端连接的端口号(默认:5201) |
-f, --format | 带宽报告单位:k (Kbits)、m (Mbits)、K (KBytes)、M (MBytes)等 |
-i, --interval | 定期带宽报告的间隔时间(秒) |
-B, --bind | 绑定到特定网络接口(IP或网卡名称) |
-V, --verbose | 输出详细日志 |
-J, --json | 以JSON格式输出结果 |
--logfile | 将输出保存到日志文件 |
-d, --debug | 输出调试信息 |
-v, --version | 显示版本信息 |
-h, --help | 显示帮助信息 |
服务端专用参数
参数 | 说明 |
---|---|
-s, --server | 以服务端模式运行 |
-D, --daemon | 以守护进程(后台)模式运行 |
-I, --pidfile | 将进程ID写入指定文件 |
-1, --one-off | 处理一个客户端连接后自动退出 |
客户端专用参数
参数 | 说明 |
---|---|
-c, --client | 以客户端模式运行,需指定服务端地址(如 -c 192.168.1.100 ) |
-u, --udp | 使用UDP协议(默认TCP) |
-b, --bandwidth | 目标带宽(支持K/M/G 后缀,如 1G ),UDP默认1Mbit,TCP无限制 |
-t, --time | 测试持续时间(秒,默认10秒) |
-n, --bytes | 传输的总字节数(替代 -t ,如 -n 100M ) |
-k, --blockcount | 传输的数据块(包)数量(替代 -t 或 -n ) |
-l, --len | 缓冲区长度(TCP默认128KB,UDP默认8KB) |
--cport | 绑定客户端端口(默认随机端口) |
-P, --parallel | 并行连接的客户端流数量(用于多线程测试) |
-R, --reverse | 反向模式(服务端发送,客户端接收) |
-w, --window | 设置TCP窗口大小/套接字缓冲区大小 |
-M, --set-mss | 设置TCP最大段大小(MSS = MTU - 40字节) |
-N, --no-delay | 禁用Nagle算法(降低延迟) |
-4, --version4 | 仅使用IPv4 |
-6, --version6 | 仅使用IPv6 |
-S, --tos | 设置IP服务类型(ToS) |
-Z, --zerocopy | 使用零拷贝技术发送数据(提升性能) |
-O, --omit | 忽略前N秒的数据(用于排除初始波动) |
-T, --title | 在每行输出前添加前缀字符串 |
--get-server-output | 从服务端获取测试结果 |
--udp-counters-64bit | UDP测试包中使用64位计数器 |
常见错误与注意事项
-
参数错误:
-
iperf3: parameter error - must either be a client (-c) or server (-s)
原因:未指定运行模式(服务端或客户端)。
解决:必须添加-s
(服务端)或-c <IP>
(客户端)。
-
-
带宽单位混淆:
-
-b 1G
表示1Gbit/s,若需1GByte/s需写-b 8G
(1 Byte = 8 bits)。
-
-
UDP丢包与带宽限制:
-
UDP默认带宽较低(1Mbit),需显式指定
-b
参数。
-
-
反向模式(-R):
-
用于测试上行/下行带宽时,服务端需支持反向模式。
-
-
零拷贝(-Z):
-
需内核支持,可能需root权限。
-
高级功能
-
JSON输出(-J):
便于脚本解析测试结果,示例:iperf3 -c 192.168.1.100 -J > result.json
-
多流测试(-P):
模拟多用户并发,测试网络并发处理能力。 -
绑定CPU/网卡(-B):
在多网卡服务器中指定测试使用的网卡,如-B eth1
。
使用帮助
JPerf
图形化中文操作翻译帮助
发送端
接收端
ntttcp
核心参数
-
模式选择
-
-s
:作为发送端(sender)运行 -
-r
:作为接收端(receiver)运行 -
-l <Length>
:设置缓冲区长度-
默认:TCP为64KB,UDP为128字节
-
-
-n <Number>
:设置缓冲区数量(默认20,000个) -
-p <port>
:设置基准端口号(默认5001) -
-sp
:同步数据端口(需所有实例的-p
参数相同) -
-ns
:禁用同步(发送端立即开始传输,无需与接收端握手)
-
-
超时与性能调优
-
-to <timeout>
:I/O超时时间(毫秒,默认600,000)-
设为
0
表示无限等待(可能导致工具挂起)
-
-
-a <outstanding I/O>
:未完成I/O操作数(默认2) -
-rb <size>
:接收缓冲区大小(默认-1,使用OS动态分配) -
-sb <size>
:发送缓冲区大小(默认0或-1,依赖-a
参数) -
-ndl
:启用TCP_NODELAY
(禁用Nagle算法)
-
-
协议与传输选项
-
-u
:使用UDP协议(默认TCP) -
-w
:使用WSARecv
/WSASend
(Windows异步I/O) -
-rt
:启用往返模式(Round-Trip) -
-d
:启用数据验证 -
-6
:使用IPv6地址 -
-wa
:设置WAIT_ALL
标志(接收数据时等待完整缓冲区)
-
-
高级功能
-
-nic <IP>
:指定发送端使用的网卡IP -
-xml [file]
:保存XML格式结果(默认xml.txt
) -
-na <NUMA node>
:绑定进程到指定NUMA节点 -
-hpt
:隐藏每线程统计信息 -
-uso <size>
:启用UDP分段卸载(指定最大消息大小) -
-uro
:启用UDP接收合并 -
-uc
:使用非连接型UDP套接字(sendto
/recvfrom
)
-
-
性能测量与限制
-
-t <Runtime>
:测试运行时间(秒) -
-cd <Cool-down>
:冷却时间(秒) -
-wu <Warm-up>
:预热时间(秒) -
-thr <KB/s>
:限制每个线程的发送吞吐量 -
-ps <ms>
:发送间隔(5-1000毫秒,仅单线程同步模式) -
-lm
:启用延迟测量(可能影响性能)
-
-
调试与输出
-
-v
:启用详细输出模式 -
-nsb
:禁用标准输出缓冲(实时刷新日志) -
-jm [file]
:抖动测量(接收端需指定输出文件)
-
-
其他选项
-
-hv
:使用Hyper-V虚拟网络(地址需为VM GUID) -
-qos <0-5>
:设置QoS优先级(0=尽力而为,5=最高) -
-icp <threads>
:设置I/O完成端口的最大活动线程数 -
-cfi
:使用空闲CPU周期计算CPU利用率(需Vista+系统)
-
映射参数 (-m
)
指定线程、CPU亲和性和目标地址的映射关系:
格式:<线程数>,<CPU编号>,<接收端地址>
示例:
-
-m 4,0,1.2.3.4
:在CPU 0上启动4个线程,连接至1.2.3.4
-
-m 2,*,contoso
:启动2个线程(无CPU亲和性),连接至contoso
使用帮助
Netperf
全局选项(Global options)
-a send,recv
:设置本地发送和接收缓冲区的对齐方式。-A send,recv
:设置远程发送和接收缓冲区的对齐方式。-B brandstr
:指定在简略输出中显示的字符串。-c [cpu_rate]
:报告本地 CPU 使用率。-C [cpu_rate]
:报告远程 CPU 使用率。-d
:增加调试输出。-D time,[units]
:至少每隔指定的时间间隔显示中间结果,使用指定的单位作为每秒单位的初始猜测。负值将大量使用系统的计时功能。-f G|M|K|g|m|k
:设置输出单位。-F lfill[,rfill]
:用指定文件的数据预填充缓冲区。-h
:显示帮助信息。-H name|ip,fam
:指定目标机器和/或本地 IP 及其地址族。-i max,min
:指定最大和最小迭代次数(默认为 15,1)。-I lvl[,intvl]
:指定置信水平(95 或 99)和置信区间百分比(默认为 10%)。-j
:保留额外的计时统计数据。-l testlen
:指定测试持续时间(秒)或传输的字节数。-L name|ip,fam
:指定本地 IP|名称及其地址族。-o send,recv
:设置本地发送和接收缓冲区的偏移量。-O send,recv
:设置远程发送和接收缓冲区的偏移量。-n numcpu
:设置用于计算 CPU 利用率的处理器数量。-N
:不建立控制连接,只执行“发送”端操作。-p port,lport
:指定 netserver 端口号和/或本地端口号。-P 0|1
:不显示/显示测试标题。-r
:允许在结果上达到置信度。-s seconds
:测试设置和开始之间的等待秒数。-S
:在数据连接上设置 SO_KEEPALIVE。-t testname
:指定要执行的测试。-T lcpu,rcpu
:请求 netperf/netserver 绑定到本地/远程 CPU。-v verbosity
:指定详细级别。-W send,recv
:设置发送和接收缓冲区的数量。-v level
:设置详细级别(默认为 1,最小为 0)。-V
:显示 netperf 版本并退出。-y local,remote
:设置套接字优先级。-Y local,remote
:设置 IP_TOS(使用十六进制值)。-Z passphrase
:设置并传递给 netserver 一个密码。
(1)全局命令行参数 [global options]
参数 | 说明 |
---|---|
-H host | 指定远端运行netserver的server IP地址 |
-l testlen | 指定测试的时间长度(秒) |
-t testname | 指定进行的测试类型(包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR)。 |
(2)局部可选参数 [test options]
参数 | 说明 |
---|---|
-s size | 设置本地系统的socket发送与接收缓冲大小 |
-S size | 设置远端系统的socket发送与接收缓冲大小 |
-m size | 设置本地系统发送测试分组的大小,测试PPS时值为1。测试BPS时为1400。 |
-M size | 设置远端系统接收测试分组的大小 |
-p port | 设置测试连接Server端的端口 |
-D | 对本地与远端系统的socket设置TCP_NODELAY选项 |
-r req,resp | 设置request和reponse分组的大小 |
使用帮助
TCPburn
1. 全局配置
参数/配置项 | 说明 |
---|---|
-m | 指定每个实例模拟的并发连接数,例如 -m 3000000 表示单个实例模拟 300 万连接。 |
IP 地址池分配 | 通过 IP 欺骗模拟多个客户端,需指定内网 IP 地址段(如 192.168.100.0/24 )。 |
端口范围 | 默认使用端口 32768~65535 ,每个 IP 地址可分配约 3.2 万端口资源。 |
内存分配 | 每连接约占用 4KB 内存,模拟 2000 万连接需至少 3GB 内存。 |
路由设置 | 服务端需配置静态路由,将响应流量导向测试主机(如 route add -net 192.168.100.0/24 gw 测试主机IP )。 |
2. 网络环境优化参数
配置项 | 说明 |
---|---|
禁用 IP conntrack | 避免内核连接跟踪消耗资源:iptables -t raw -A PREROUTING -p tcp --dport [端口] -j NOTRACK |
调整文件句柄限制 | 提升系统支持的最大连接数:ulimit -HSn 1000000 (需修改 /etc/security/limits.conf 永久生效) |
关闭 rp_filter | 防止反向路径过滤干扰 IP 欺骗:sysctl -w net.ipv4.conf.all.rp_filter=0 |
内核参数优化 | 调整 TCP 缓冲区、最大文件打开数等(如 net.core.somaxconn 、fs.file-max )。 |
3. 辅助工具配置
TCPBurn 依赖 intercept 组件处理响应,需在助手服务器配置:
-
黑洞模式:拦截响应但不处理,仅传递头信息给 TCPBurn。
-
专用通信信道:通过紫色箭头(特殊信道)传递响应头,支持动态调整请求属性1。
注意事项
-
IP 欺骗限制:需在内网环境中使用,避免公网路由问题。
-
多实例扩展:通过多台虚拟机运行 TCPBurn 实例,叠加并发量(如 7 台虚拟机各模拟 300 万连接)。
-
内核兼容性:确保内核版本支持高并发(如 Linux 3.10+)
使用帮助
-
服务端路由设置:
route add -net 192.168.100.0 netmask 255.255.255.0 gw 测试主机IP
-
启动 TCPBurn:
tcpburn -i [pcap文件] -H 目标服务器IP -p 目标端口 -m 3000000
-
-i
:指定抓包生成的 pcap 文件(包含请求记录)。 -
-H
:目标服务器 IP。 -
-p
:目标服务端口(如 Nginx 的 8080)。
-
Speedtest.net
基本使用方法:进入主页点击测速按钮,即可完成当前移动数据或有线/无线(互联网)外网网速的测速,最后查看结果。
https://www.speedtest.cn/
iperf3使用实例参考
其他工具使用方法可根据类推,这里不再赘述
文章地址:iperf3网络带宽性能测试工具 局域网网络最大带宽高阶教程-CSDN博客
相关文章:
网络带宽测速工具选择指南iperf3 nttcp tcpburn jperf使用详解
简介 本文主要介绍内网(局域网)与外网(互联网)的网络带宽测速工具下载地址、选择指南、参数对比、基本使用。 测速工具快速选择指南 测速工具下载地址 iperf 官网下载链接:iperf.fr/iperf-download.php该链接提供了不…...
解决TF-IDF增量学习问题的思路与方案
TF-IDF的传统实现面临增量学习困难,因为IDF计算依赖全局文档统计信息。但是实际的工作当中往往数据是增量的,并且定期增量和不定期增量混合,所以为了实际考虑,还是有必要思考如何解决TF-IDF增量问题的。 一、增量学习核心挑战 ID…...
【亲测】Linux 使用 Matplotlib 显示中文
文章目录 安装中文字体在Matplotlib中使用该字体来显示中文 在 Linux 系统中使用 Matplotlib 绘制图表时,如果需要显示中文,可能会遇到中文字符显示为方块或者乱码的问题。这是因为Matplotlib 默认使用的字体不支持中文。本文手把手带你解决这个问题。 …...
git clone阻塞问题
问题描述 git clone采用的ssh协议,在克隆仓库的时候,会经常卡一下,亦或是直接卡死不动。 最开始以为是公司电脑配置的问题,想着自己实在解决不了找it帮忙。 查阅资料发现,最终发现是git版本的问题,这个是…...
Json快速入门
引言 Jsoncpp 库主要是用于实现 Json 格式数据的序列化和反序列化,它实现了将多个数据对象组织成 为Json格式字符串,以及将 Json 格式字符串解析得到多个数据对象的功能,独立于开发语言。 Json数据对象 Json数据对象类的表示: …...
【QT】学习笔记1
QT概述 Qt是一个1991年由QtCompany开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(…...
【Kafka基础】生产者命令行操作指南:从基础到高级配置
Kafka作为分布式消息系统,其生产者是数据管道的起点。掌握kafka-console-producer.sh工具的使用对于开发测试和运维都至关重要。本文将系统介绍该工具的各种用法,帮助您高效地向Kafka发送消息。 1 基础消息生产 1.1 最简单的消息发送 /export/home/kafk…...
【Java面试系列】Spring Boot中自动配置原理与自定义Starter开发实践详解 - 3-5年Java开发必备知识
【Java面试系列】Spring Boot中自动配置原理与自定义Starter开发实践详解 - 3-5年Java开发必备知识 引言 Spring Boot作为Java生态中最流行的框架之一,其自动配置机制和Starter开发是面试中的高频考点。对于3-5年经验的Java开发者来说,深入理解这些原理…...
reid查找余弦相似度计算修正(二)
上一篇文章 reid查找余弦相似度计算(一) 上一篇的遗留问题就是reid 的结果部分正确,我们参考一下 fast-reid的demo,把里面的抽取特征提取出来 修改提取特征 首先发现图像改变大小的不同,fast 使用的是[128,384], 如…...
嵌入式---加速度计
一、基本概念与定义 定义 加速度计(Accelerometer)是一种测量物体加速度(线性加速度或振动加速度)的传感器,可检测物体运动状态、振动幅度、倾斜角度等,输出与加速度成比例的电信号(模拟或数字信…...
Redis如何判断哨兵模式下节点之间数据是否一致
在哨兵模式下判断两个Redis节点的数据一致性,可以通过以下几种方法实现: 一、检查主从复制偏移量 使用INFO replication命令 分别在主节点和从节点执行该命令,比较两者的master_repl_offset(主节点)和slave_repl_offs…...
Spring 核心注解深度解析:@Autowired、@Repository 与它们的协作关系
引言 在 Spring 框架中,依赖注入(DI) 是实现松耦合架构的核心机制。Autowired 和 Repository 作为两个高频使用的注解,分别承担着 依赖装配 和 数据访问层标识 的关键职责。本文将深入探讨它们的功能特性、协作模式…...
LeetCode541反转字符串②
思路: 关键是判断反转的右边界, ①当剩余字符数<k,是反转当前所有字符,右边界就是rightlen-1,不可以超过len-1,会越界; ②当剩余字符数>k且<2k,反转k个字符,右边界就是righ…...
Ubuntu 22 Linux上部署DeepSeek+RAG知识库操作详解(Dify方式)之2
上一篇在ubuntu上通过docker拉取了dify并启动与它相关的服务,本篇主要介绍两个知识点: 一是配置模型,使用之前通过Xinference搭建的本地deepseek模型,启动过程参考前期文档,这里就不做介绍了。(注意一点&a…...
如何在多线程中安全地使用 PyAudio
1. 背景介绍 在多线程环境下使用 PyAudio 可能会导致段错误(Segmentation Fault)或其他不可预期的行为。这是因为 PyAudio 在多线程环境下可能会出现资源冲突或线程安全问题。 PyAudio 是一个用于音频输入输出的 Python 库,它依赖于 PortAu…...
Spring MVC与Spring Boot文件上传配置项对比
Spring MVC与Spring Boot文件上传配置项对比 一、Spring MVC配置项(基于不同MultipartResolver实现) 1. 使用 CommonsMultipartResolver(Apache Commons FileUpload) Bean public MultipartResolver multipartResolver() {Common…...
多类型医疗自助终端智能化升级路径(代码版.上)
大型医疗自助终端的智能化升级是医疗信息化发展的重要方向,其思维链一体化路径需要围绕技术架构、数据流协同、算法优化和用户体验展开: 一、技术架构层:分布式边缘计算与云端协同 以下针对技术架构层的分布式边缘计算与云端协同模块,提供具体编程实现方案: 一、边缘节点…...
Chrome 浏览器插件收录
1. Responsive Viewer 可以在同个窗口内,针对同一网站,添加多个不同设备屏幕显示。 在前端开发,需要多端适配,尤其是移动端响应式适配的网站开发中,可以同时测试多个不同屏幕的适配效果。 2. VisBug 提供工具栏&#x…...
力扣hot100_回溯(2)_python版本
一、39. 组合总和(中等) 代码: class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:ans []path []def dfs(i: int, left: int) -> None:if left 0:# 找到一个合法组合ans.append(pa…...
文档大模型
处理流程: 对表格或者文章文档切分成chunk,将其存入DB根据chunk文档内容,通过prompt生成问题(qwen)通过sentencetransformer生成embbedding(Text embedding 模型 stella_large 模型,长文本编码), 第二步 抽…...
基于分布式指纹引擎的矩阵运营技术实践:突破平台风控的工程化解决方案
一、矩阵运营的技术痛点与市场现状 风控机制升级 主流平台通过复合指纹识别(Canvas渲染哈希WebGL元数据AudioContext频率分析)检测多账号关联传统方案成本:单个亚马逊店铺因关联封号月均损失$5000,矩阵规模越大风险指数级增长 …...
SpringBoot 统一功能处理
1.拦截器 1.1什么是拦截器 拦截器是Spring框架提供的核心功能之一,主要是用来拦截用户的请求,在用户请求指定的方法执行前后,可以根据业务需要执行实现预定的代码。 通过拦截器,开发人员就可以根据需求针对一些特殊的请求&#…...
Redis到底能不能做主数据库?
张三拍案而起:“Redis 是缓存数据库,怎么能当主数据库用?简直是天方夜谭!” 李四冷笑回应:“你没用过,凭什么说不行?我已经用 Redis 做主数据库好几年了,系统稳定得像铁板一块&…...
C++ 基础进阶
C 基础进阶 内容概述: 函数重载:int add(int x, inty);,long long add(long long x, long long y);,double add(double x, double y);模板函数:template<typename T> 或 template<class T>结构体&#x…...
从C语言到Go语言:新手快速入门指南
对于刚学会C语言的新手来说,学习Go语言(Golang)可能是一个既有趣又有挑战性的过程。Go语言由Google开发,以简洁、高效和并发支持著称,被广泛用于现代软件开发。相比C语言,Go语言在语法上更加现代化…...
Vue.js 中 v-model 的使用及其原理
在 Vue.js 开发中,v-model是一个非常重要且常用的指令。它极大地简化了表单元素与数据之间的双向绑定操作,让开发者能够更高效地处理用户输入和数据更新。接下来,我们将深入探讨v-model的使用场景及其背后的工作原理。 一、v-model 的基本…...
深入解析哈希表:从原理到实现(拉链法详解)
哈希表(Hash Table)是计算机科学中最重要的数据结构之一,它能够在平均 O(1) 时间内完成数据的插入、删除和查找操作。本文将围绕**拉链法(Chaining)**的实现,结合代码示例和图示,深入讲解哈希表…...
okcc呼叫中心系统坐席签入长签和普通签入的区别
在OKCC呼叫中心系统中,坐席的长签(持久签入)与普通签入(常规签入)是两种不同的登录模式,主要区别体现在 会话保持时长、资源占用、业务场景适配性 等方面。以下是具体对比: 一、核心区别对比 维…...
2024年博客之星的省域空间分布展示-以全网Top300为例
目录 前言 一、2024博客之星 1、所有排名数据 2、空间属性管理 二、数据抓取与处理 1、相关业务表的设计 2、数据抓取处理 3、空间查询分析实践 三、数据成果挖掘 1、省域分布解读 2、技术开发活跃 四、总结 前言 2024年博客之星的评选活动已经过去了一个月…...
7.3 在通知中显示图片或视频(UNNotificationAttachment)
在iOS通知中显示富媒体内容可以显著提升用户体验。通过UNNotificationAttachment,我们可以为本地和远程通知添加图片、音频、视频等内容。 基本实现方法 1. 创建带附件的通知 func scheduleNotificationWithImage() {// 1. 创建通知内容let content UNMutableNo…...
1.5-APP的架构\微信小程序的架构
1.5-APP的架构\微信小程序的架构 APP的三种开发架构: 原生态APP类型 APP-开发架构-原生态-IDEA 演示:remusic项目源码 NP管理器: http://normalplayer.top/ HttpCanary:https://github.com/mingww64/HttpCanary-SSL-Magisk 安全影…...
Python缩进完全指南:语法规则、使用场景与最佳实践
一、Python缩进的核心概念 Python的缩进不仅是代码风格问题,更是语法的一部分,这是Python区别于其他编程语言最显著的特征之一。 1.1 什么是缩进? 缩进是指在代码行前添加空格或制表符来实现代码块的层级结构。在Python中,缩进…...
高通音频数据从HAL到DSP
概述 参考高通平台8155 从数据流的角度整理下安卓平台音频数据从HAL层到达DSP这个流程; 以 MultiMedia22 --> QUIN_TDM_RX_0 播放为例; 主要关注pcm数据写到dsp, 以及将前后端路由信息告知dsp两个点。 <!-- more --> [Platform:高通 8155 gvmq Android 11] [Ker…...
第六天 开始Unity Shader的学习之Unity中的基础光照之漫反射光照模型
Unity Shader的学习笔记 第六天 开始Unity Shader的学习之Unity中的基础光照之漫反射光照模型 文章目录 Unity Shader的学习笔记前言一、漫反射光照模型1.逐像素光照① 更改v2f② 传递法线信息给片元着色器③ 片元着色器计算漫反射光照模型 二.半兰伯特模型总结 前言 提示&am…...
【RabbitMQ】队列模型
1.概述 RabbitMQ作为消息队列,有6种队列模型,分别在不同的场景进行使用,分别是Hello World,Work queues,Publish/Subscribe,Routing,Topics,RPC。 下面就分别对几个模型进行讲述。…...
【Java设计模式】第3章 软件设计七大原则
3-1 本章导航 学习开辟原则(基础原则)依赖倒置原则单一职责原则接口隔离原则迪米特法则(最少知道原则)里氏替换原则合成复用原则(组合复用原则)核心思想: 设计原则需结合实际场景平衡,避免过度设计。设计模式中可能部分遵循原则,需灵活取舍。3-2 开闭原则讲解 定义 软…...
Axure中继器(Repeater): 列表展示
文章目录 引言I 中继器说明中继器的作用中继器的结构中继器例子II 中继器基础应用:列表展示表头制作列表内容表头中的列与中继器的列绑定填充数据内容引言 中继器是Axure RP 7.0推出的新功能,用于快速设计一些复杂的交互界面(制作“高保真”的动态原型)。 I 中继器说明 中…...
mybatis的第五天学习笔记
12. 动态SQL 12.1 动态SQL概述 新增内容: 动态SQL执行流程 MyBatis如何解析动态SQLSQL语句构建过程参数绑定机制 新增示例 // 动态条件查询接口示例 List<User> searchUsers(Param("name") String name,Param("age") Integer age,Para…...
LeetCode 941 有效的山脉数组
算法探索:如何精准判断有效山脉数组 在计算机科学领域,算法和数据结构堪称基石,它们不仅是解决复杂问题的有力工具,更是衡量程序员技术水平的重要指标。数组作为最基础、应用最广泛的数据结构之一,围绕它衍生出了大量…...
java设计模式-单例模式
单例模式 1、饿汉式(静态常量) Slf4j public class SingletonTest01 {public static void main(String[] args) {Singleton singleton Singleton.getInstance();Singleton singleton2 Singleton.getInstance();log.info("比对结果:{}",singletonsingl…...
对抗Prompt工程:构建AI安全护栏的攻防实践
大语言模型的开放性与自然语言交互特性使其面临前所未有的Prompt工程攻击威胁。本文通过分析2021-2023年间157个真实越狱案例,揭示语义混淆、上下文劫持、多模态组合三重攻击路径的技术原理,提出融合动态意图拓扑分析(DITA)、对抗…...
CentOS 环境下 MySQL 数据库全部备份的操作指南
最近阿里云个人服务到期,因为是很久之前买的测试机器,配置较低,上面运行的有技术博客 和以往的测试项目,所以准备放弃掉。 需要备份下上面的表结构和数据、以及代码仓库。 下面是一个完整的 CentOS 环境下 MySQL 数据库全部备份…...
回溯算法补充leetcode
1. 组合 leetcode题目链接:77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示…...
利用 AI 实现雷池 WAF 自动化运维
欢迎加入雷池社区:雷池 WAF | 下一代 Web 应用防火墙 | 免费使用 已经升级到 8.4.0 的兄弟们应该会发现雷池又多了一些 AI 能力,8.4.0 更新公告。 感谢 Web2GPT 为雷池提供的 AI 能力支持。 主要变化 右下角多了一个 AI 小助手 按钮右上角多了一个 连…...
【嵌入式面试】
1、如果中断函数中有耗时较长的内容,会导致以下问题,如何解决? 对系统实时性的影响 阻塞低优先级中断:中断函数执行时间过长,会阻塞其他低优先级中断的响应。例如,如果一个高优先级中断处理程序中包含耗时…...
【Hadoop入门】Hadoop生态之HDFS
1 HDFS核心设计原理 HDFS(Hadoop Distributed File System)是专为大规模数据存储设计的分布式文件系统,其核心设计基于以下原则: 数据分块与分布式存储: 分块机制:文件被切分为固定大小的数据块(…...
试剂SYBR 14核酸染料在染色时的操作步骤(说明)
化学试剂的基本内容||试剂参数 ---中文名:SYBR 14核酸染料 ---英文名:SYBR 14 Nucleic Acid Stain ---浓度:通常以5mM的DMSO储存液形式提供。 ---吸收波长:488nm ---发射波长:518nm ---出厂商:西安强…...
Spring Boot 国际化配置项详解
Spring Boot 国际化配置项详解 1. 核心配置项分类 将配置项分为以下类别,便于快速定位: 1.1 消息源配置(MessageSource 相关) 控制属性文件的加载、编码、缓存等行为。 配置项作用默认值示例说明spring.messages.basename指定属…...
Python之禅:深入理解Python设计哲学
Python之禅(The Zen of Python)是Python语言的核心设计哲学,由Python创始人Guido van Rossum和Tim Peters共同制定。理解Python之禅不仅能帮助我们写出更"Pythonic"的代码,还能深入把握Python语言的设计理念。 Python之禅的由来 Python之禅最…...
Rancher 全面介绍
目录 Rancher 全面介绍1. **Rancher 的定义与核心功能**2. **Rancher 的应用场景**3. **Rancher 的生态系统**4. **Rancher 的优势**5. **总结** Rancher 全面介绍 1. Rancher 的定义与核心功能 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,旨在简化容…...