iperf 测 TCP 和 UDP 网络吞吐量
注:本文为 “iperf 测网络吞吐量” 相关文章合辑。
未整理去重。
使用 iperf3 监测网络吞吐量
Tom 王 2019-12-21 22:23:52
一 iperf3 介绍
(1.1) iperf3 是一个网络带宽测试工具,iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽,具有多种参数和 UDP 特性,iperf3 可以报告带宽、延迟抖动和数据包丢失。利用 iperf3 这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
(1.2) 使用 iperf3,你可以调整与时序、缓冲区和协议(如 TCP、UDP、SCTP)相关的几个参数。它对网络性能调优操作很方便,为了获得最大或相当改善的网络性能,你需要增加吞吐量以及网络接收个发送功能的延迟。但是在进行实际调整之前,你需要执行一些测试以收集整体网络性能统计信息,以指导你的调优过程。其结果包括以秒为单位的时间间隔,数据传输,带宽(传输速率),丢失和其他有用的网络性能参数,它主要用于协助调整特定路径上的 TCP 连接。
二 iperf3 安装
(2.1) 我们使用的操作系统是 CentOS 7.4,然后我们使用 base 源安装,便可以将 iperf3-3.1.7-2.el7.x86_64 软件包安装好。
(2.2) 然后我们使用两台主机,其中 192.168.26.51 作为服务器端,将 192.168.26.131 作为客户端。在两台主机上安装好 iperf3 后,即可开始测试网络吞吐量。我们首先连接到我们的服务器端的远程机器使用 - s 标志的是服务器模式下的 iperf3,默情况下它将监听 5201 端口,我们也可以使用 - f 开关指定生成报告的数据格式类型(其中 k 表示 Kbits、m 表示 Mbits、g 表示 Gbits、K 表示 KBytes、M 表示 MBytes、G 表示 GBytes)。
# iperf3 -s -f K
(2.3) 如果服务器上的另一个程序正在使用端口 5201,则我们可以使用 - p 开关指定其他端口监听(例如指定 4000 端口)
# iperf3 -s -p 4000
(2.4) 我们也可以使用 - D 标志作为守护程序运行,并将服务器消息写入日志文件
# iperf3 -s -D > iperf3.log
三 iperf3 客户端操作
(3.1) 我们将 192.168.26.51 作为服务器,并且执行监听 5201 端口的命令(图 3-1),在客户端 192.168.26.131 的主机上,使用 - c 标志在客户端模式下运行 iperf3 并指定运行服务器的主机(使用 IP 地址或域主机名都可以)。执行大约 18 至 20 秒后,客户端终止并生成指示基准测试平均吞吐量的结果,显示信息如下(图 3-2)。
注意:从基准测试结果中,如下面的屏幕接入所示,服务器和客户端的值存在差异,但是,我们应该始终考虑在执行的每个测试中使用从 iperf3 客户端主机获得的结果。
\# iperf3 -s -f K— 在服务器端执行\# iperf3 -c 192.168.26.51 -f K— 在客户端执行
(3.2) 如果我们想在 Linux 中实现先进的网络测试吞吐量,确定网络中给定时间内数据量的一个重要因素是 TCP 窗口大小,它在调整 TCP 连接时很重要,我们可以使用 - w 标志设置窗口大小、套接字缓冲区大小,如图所示。
\# iperf3 -c 192.168.26.51 -f K -w 200K
(3.3) 如果要在服务器发送和客户端接收的反向模式下运行,可以添加 - R 开关。
\# iperf3 -c 192.168.26.51 -f K -w 200K -R
(3.4) 如果要运行双向测试,意味着我们要同时测量两个方向上的宽带,可以使用 - d 选项。
(3.5) 如果要在客户端输出中获取服务器结果,可以使用 “–get-server-output” 选项,此时我们便会在客户端 192.168.26.131 主机上获取两份数据。
(3.6) 也可以使用 - P 选项设置并行客户端流的数量,它们同时运行
——— 本文至此结束 ———
iperf 测 UDP 和 TCP 丢包率及带宽
嘟嘟嘟嘟于 2021-09-01 16:34:39 发布
iperf
iperf3 (安装包是:iperf-master)安装遇到 error while loading shared libraries:libiperf.so.0
解决方法:在正常编译以后运行 ldconfig
安装软件包的方法 (参考 REDMINE):在顶层目录下:
./configure
make
make install
yqq@ubuntu18:~/Tool/iperf-master$ iperf3 -s
iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory
yqq@ubuntu18:~/Tool/iperf-master$ sudo ldconfig
yqq@ubuntu18:~/Tool/iperf-master$ iperf3 -s
//tcp 和 udp 服务器端用 iperf3 的话都是这个命令,如果是 udp,在客户端加上 - u 即可
// 如果是 iperf,tcp 和 udp 在服务器端加 - u,tcp 和 udp 的客户端命令相同
Server listening on 5201 (test #1)
安装
方法 1:sudo apt-get install iperf
方法 2:下载 iperf 的源码包 ( 在板子上使用二进制文件时,可将源码直接拷贝到板子上 ./configure make)
测试
无论是 tcp 还是 udp 方式测试,都要一端运行服务器模式,另一端运行客户端模式,另外如果打开了 iptables, 要打开 tcp 5001 端口,当然也可以指定端口
tcp 方式
服务器端:iperf -s
客户端: iperf -c SERVERIP -t 60 -i 1 -P 5
udp 方式
服务器端:iperf -u -s //iperf3 服务端不支持 - u 选项
客户端: iperf -c SERVERIP -t 60 -i 1 -b 100M
共用的指令
-f -- 格式 [k|m|K|M] 分别表示 Kbits,Mbits,Kbits,KBytes,MBytes 显示报告,默认是 Mbits
-i -- 以秒为单位统计带宽值
-l -- 读写缓冲区的大小,默认是 8kb
-m -- 显示最大的 TCP 数据段大小 (MTU-TCP/IP header)
-o -- 将报告和错误信息输出到文件
-p -- 指定服务器和客户端连接的端口
-w -- 指定 TCP 窗口的大小,默认是 8KB
-B -- 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C -- 兼容旧版本(当 server 和 client 端版本不一样时使用)
-M -- 指定 TCP 数据包的最大 MTU 值
-N -- 设定 TCP 不延时
-V -- 传递 ipv6 数据包
适用于 server
-s -- 服务器
-U -- 单线程 UDP 模式下运行
-D -- 以守护进程模式运行
适用于 client
-b -- 指定客户端通过 udp 协议发送信息的带宽,默认为 1Mbit/s
-c -- 客户端
-d -- 同时进行双向传输测试
-n -- 指定传输的字节数
-r -- 单独进行双向传输测试
-t -- 指定 iperf 测试时间,默认 10 秒
-F -- 指定需要传输的文件
-I -- 从标准输入 (stdin) 中读取要传输的数据
-L -- 指定一个端口,服务器将利用这个端口与客户端相连
-P -- 客户端到服务器的连接数,默认为 1
-T --ttl 值
-u -- 使用 udp 协议# iperf -s -u // 此为 iperf,不是 iperf3,如果是 iperf3 则如果是测试 UDP,则在客户端加上 - u,服务器不需要 - u------------------------------------------------------------Server listening on UDP port 5001Receiving 1470 byte datagramsUDP buffer size: 208 KByte (default)------------------------------------------------------------[ 3] local 192.168.1.6 port 5001 connected with 192.168.1.6 port 52657
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-16.4 sec 196 MBytes 101 Mbits/sec 0.003 ms 0/139968 (0%)
[ 3] 0.0-16.4 sec 1 datagrams received out-of-order
[ 4] local 192.168.1.6 port 5001 connected with 192.168.1.6 port 39426
[ 4] 0.0-41.1 sec 2.90 GBytes 606 Mbits/sec 0.004 ms 9271/2128456 (0.44%)
[ 4] 0.0-41.1 sec 1 datagrams received out-of-order
[ 3] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 60678
[ 3] 0.0-22.1 sec 1.55 GBytes 602 Mbits/sec 0.032 ms 4317/1136481 (0.38%)
[ 3] 0.0-22.1 sec 1 datagrams received out-of-order
[ 3840.205662] ata1: exception Emask 0x10 SAct 0x0 SErr 0x10200 action 0xe frozen
[ 3840.213102] ata1: irq_stat 0x00400000, PHY RDY changed
[ 3840.218375] ata1: SError: { Persist PHYRdyChg }
12345678910111213141516171819
# iperf -c 192.168.1.6 -t 60 -i 1 -b 1GB
WARNING: option -b implies udp testing
------------------------------------------------------------
Client connecting to 192.168.1.6, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.6 port 39426 connected with 192.168.1.6 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 76.0 MBytes 638 Mbits/sec
[ 3] 1.0- 2.0 sec 71.2 MBytes 597 Mbits/sec
[ 3] 2.0- 3.0 sec 65.2 MBytes 547 Mbits/sec
[ 3] 3.0- 4.0 sec 66.5 MBytes 557 Mbits/sec
[ 3] 4.0- 5.0 sec 72.5 MBytes 608 Mbits/sec
[ 3] 5.0- 6.0 sec 73.4 MBytes 616 Mbits/sec
[ 3] 6.0- 7.0 sec 76.8 MBytes 644 Mbits/sec
[ 3] 7.0- 8.0 sec 76.2 MBytes 639 Mbits/sec
[ 3] 8.0- 9.0 sec 75.1 MBytes 630 Mbits/sec
[ 3] 9.0-10.0 sec 76.6 MBytes 643 Mbits/sec
[ 3] 10.0-11.0 sec 76.3 MBytes 640 Mbits/sec
[ 3] 11.0-12.0 sec 76.7 MBytes 643 Mbits/sec
[ 3] 12.0-13.0 sec 76.1 MBytes 638 Mbits/sec
[ 3] 13.0-14.0 sec 76.4 MBytes 641 Mbits/sec
[ 3] 14.0-15.0 sec 76.8 MBytes 644 Mbits/sec
[ 3] 15.0-16.0 sec 76.7 MBytes 643 Mbits/sec
[ 3] 16.0-17.0 sec 72.8 MBytes 610 Mbits/sec
[ 3] 17.0-18.0 sec 69.5 MBytes 583 Mbits/sec
[ 3] 18.0-19.0 sec 69.6 MBytes 584 Mbits/sec
[ 3] 19.0-20.0 sec 75.8 MBytes 636 Mbits/sec
[ 3] 20.0-21.0 sec 62.1 MBytes 521 Mbits/sec
[ 3] 21.0-22.0 sec 76.1 MBytes 639 Mbits/sec
# iperf -c 127.0.0.1 -t 60 -i 1 -b 4g
WARNING: option -b implies udp testing
------------------------------------------------------------
Client connecting to 127.0.0.1, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 127.0.0.1 port 60678 connected with 127.0.0.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 78.8 MBytes 661 Mbits/sec
[ 3] 1.0- 2.0 sec 77.2 MBytes 648 Mbits/sec
[ 3] 2.0- 3.0 sec 70.1 MBytes 588 Mbits/sec
[ 3] 3.0- 4.0 sec 73.5 MBytes 617 Mbits/sec
[ 3] 4.0- 5.0 sec 73.1 MBytes 613 Mbits/sec
[ 3] 5.0- 6.0 sec 72.4 MBytes 608 Mbits/sec
[ 3] 6.0- 7.0 sec 74.5 MBytes 625 Mbits/sec
[ 3] 7.0- 8.0 sec 61.4 MBytes 515 Mbits/sec
[ 3] 8.0- 9.0 sec 71.0 MBytes 596 Mbits/sec
iPerf 3 测试 UDP 和 TCP 方法详解
诸葛悠闲已于 2024-12-11 10:50:41 修改
前言
工具安装、说明等详细信息可参考官方文档
- ipef user doc
https://iperf.fr/iperf-doc.php#3doc
一、What is iPerf /iPerf3 ?
Perf3 是一款用于主动测量 IP 网络最大带宽的工具。它支持调整与定时、缓冲区和协议(TCP、UDP、SCTP 与 IPv4 和 IPv6)相关的各种参数。每次测试都会报告带宽、损耗和其他参数。
二、功能
1. TCP and SCTP
-
测量带宽
-
报告 MSS/MTU 大小和观察到的读取大小
-
通过套接字缓冲区支持 TCP 窗口大小。
2. UDP
-
客户端可创建指定带宽的 UDP 数据流
-
测量数据包丢失
-
测量延迟抖动
-
支持组播
3. 其他
-
客户端和服务器可同时进行多个连接(-P 选项)。
-
服务器处理多个连接,而不是在一次测试后退出。
-
可在指定时间(-t 选项)内运行,而不是在设定的数据传输量(-n 或 -k 选项)内运行。
-
以指定时间间隔打印定期的中间带宽、抖动和损耗报告(-i 选项)。
-
将服务器作为守护进程运行(-D 选项)
-
使用代表性数据流测试链路层压缩对可实现带宽的影响(-F 选项)。
-
服务器同时接受单个客户端(iPerf3)或多个客户端(iPerf2)
-
新功能:忽略 TCP 慢启动(-O 选项)。
-
新功能:为 UDP 和(新)TCP 设置目标带宽(-b 选项)。
-
新功能:设置 IPv6 流量标签(-L 选项)
-
新功能:设置拥塞控制算法(-C 选项)
-
新功能: 使用 SCTP 而非 TCP(–sctp 选项)
-
新功能: 以 JSON 格式输出(-J 选项)。
-
新功能: 磁盘读取测试(服务器:iperf3 -s / 客户端:iperf3 -c testhost -i1 -F 文件名)
-
新功能: 磁盘写入测试(服务器:iperf3 -s -F 文件名 / 客户端:iperf3 -c testhost -i1)
三、 Iperf 的使用
1. Iperf 的工作模式
Iperf 可以运行在任何 IP 网络上,包括本地以太网、接入因特网、Wi-Fi 网络等。在工作模式上,iperf 运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起测试连接会话,因此要使用 iperf 至少需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。
2. 通用指令
3. 服务端特有选项
4. 客户端特有选项
5. -t -n 参数联系
-t 参数说明如下:
-n 参数说明如下:
-n 会重写 - t 参数,-n 参数会使 - t 参数失效。
-n 30M 意思表明,传输完 30M 便停止,-t 失效。
四、Iperf 使用实例
1. 调整 TCP 连接
1. 1 TCP 窗口大小调节
iPerf 的主要目标是帮助调整特定路径上的 TCP 连接。TCP 最基本的调整问题是 TCP 窗口大小,它控制着网络中任何一点的数据量。如果窗口大小太小,发送方有时就会处于空闲状态,从而导致性能低下。
窗口大小的理论值为:
瓶颈带宽 * 往返时间
若瓶颈链路是 45 Mbit/sec 链路,用 ping 测量的往返时间是 42 ms。带宽延迟乘积为:
45 Mbit/sec * 42 ms
= (45e6) * (42e-3)
= 1890000 bits
= 230 KByte
这是计算最佳窗口大小的一个起点;将其设置得更高或更低可能会产生更好的结果。
请注意,许多操作系统和主机都有 TCP 窗口大小的上限。iPerf 会尝试检测这些限制,并在实际窗口大小与请求的窗口大小不相等时发出警告。
另一个测试方法是运行并行 TCP 流。如果总带宽大于单个数据流的带宽,就说明出了问题。要么是 TCP 窗口大小太小,要么是操作系统的 TCP 实现有问题,要么是网络本身有缺陷。
测试示例:
- 启动服务端
- 启动客户端
- 单线程测试,TCP 窗口大小 1000 字节。(非常小,所以性能不能达到网卡瓶颈 1Gbit)
- 单线程测试,TCP 窗口大小 16K。速度有所提升
- 单线程测试,窗口调整为 420K 时,基本达到了 1Gbit 的极限。
- 最后测试一下多线程,使用 190k 的窗口,同样可以把网卡极限跑满:
所以如果我们使用单线程传输,tcp 窗口的大小很关键。
1. 2 最大传输单元 (MTU) 调整
为了达到最佳效果,两台主机都应支持路径 MTU 发现。不支持路径 MTU 发现的主机通常使用 536 作为 MSS,这会浪费带宽和处理时间。使用 -m 选项可显示正在使用的 MSS,并查看是否与预期相符。以太网的 MSS 通常在 1460 字节左右。
2. 调整 UDP 连接
iPerf 创建了一个恒定比特率的 UDP 数据流。没有其他功能。
需要将数据报大小 (-l) 调整为您的应用程序所使用的大小。
服务器通过数据报中的 ID 号来检测 UDP 数据段是否丢失。通常,一个 UDP 数据段会变成多个 IP 数据包。丢失一个 IP 数据包就会丢失整个数据段。要测量数据包丢失而不是数据段丢失,可使用 -l 选项使数据段小到足以容纳进一个数据包。默认的 1470 字节大小适用于以太网。还能检测出乱序数据包。由于 TCP 不会向用户报告数据包丢失情况,UDP 测试有助于查看路径上的数据包丢失情况。
根据 RFC 1889 中 RTP 的规定,抖动计算由服务器持续计算。客户端在数据包中记录 64 位秒 / 微秒时间戳。服务器计算的相对传输时间为(服务器接收时间 - 客户端发送时间)。客户端和服务器的时钟无需同步;抖动计算中会减去任何差异。抖动是连续传输时间差的平滑平均值。
测试示例:
- 服务端启动
- 启动客户端
请注意,在使用较大的 50 KB 数据报(每个数据报分成 23 个 1500 字节的数据包)时,数据报重组导致的抖动较高。这里看到的数据报丢包率较高,可能是由于流量的突发性,即 23 个背靠背的数据包,然后是长时间的停顿,而不是均匀分布的单个数据包。
3. 测试 TCP 吞吐量
- Server 端开启 iperf 的服务器模式:
- Client 端启动 iperf 的客户端模式
- Server 端监听结果
① Interval 表示时间间隔。
② Transfer 表示时间间隔里面转输的数据量。
③ Bandwidth 是时间间隔里的传输速率 。
4. 测试 UDP 吞吐量
带宽测试通常采用 UDP 模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为 100Mbps,先用 - b 100M 进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
- Server 端开启 iperf 的服务器模式
- Client 端启动 iperf 的客户端模式,连接服务端
- Server 端监听结果
① Jitter 为抖动,在连续传输中的平滑平均值差。
② Lost 为丢包数量。
③ Total Datagrams 为包数量。
via:
-
【讲清楚,说明白!】使用 iperf3 监测网络吞吐量_51CTO 博客_iperf3 测试吞吐量
https://blog.51cto.com/u_13613726/2460671 -
iperf 测 UDP 和 TCP 丢包率及带宽_iperf udp-CSDN 博客
https://blog.csdn.net/weixin_38717634/article/details/120042874 -
iPerf 3 测试 UDP 和 TCP 方法详解_iperf3 udp-CSDN 博客
https://blog.csdn.net/weixin_44399845/article/details/137950306 -
Udp 数据丢包测试 --iperf3_iperf3 udp 测试 - CSDN 博客
https://blog.csdn.net/weixin_44011068/article/details/107383079
相关文章:

iperf 测 TCP 和 UDP 网络吞吐量
注:本文为 “iperf 测网络吞吐量” 相关文章合辑。 未整理去重。 使用 iperf3 监测网络吞吐量 Tom 王 2019-12-21 22:23:52 一 iperf3 介绍 (1.1) iperf3 是一个网络带宽测试工具,iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽…...
Autogen_core: Model Context
目录 示例代码代码解释另一个例子 示例代码 from dataclasses import dataclassfrom autogen_core import AgentId, MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handler from autogen_core.model_context import BufferedChatCompletionContext from …...

SpringBoot AOP 和 事务
SpringBoot 整合 AOP 动态代理技术 JDK 动态代理 JDK 动态代理是 Java 自带的一种代理方式。它要求目标类必须有接口,基于这个接口,JDK 在运行时会动态生成一个代理对象。这个代理对象和目标对象就像 “拜把子” 的兄弟,因为它们都实现了相同…...
Ubuntu全面卸载mysql
如果你已经看到whereis mysql输出了与MySQL相关的路径,说明MySQL仍然存在于系统中。要卸载MySQL,可以按照以下步骤操作,确保完全删除所有相关的文件和配置: 1. 停止MySQL服务 首先,停止MySQL服务: sudo …...

android的gradle
资料: GitHub - ChenSWD/CopyGradleInAction: 备份《Gradle IN Action》书中的源码,添加了部分注释 //github上一个开源项目,外加pdf书 Gradle User Manual gradle官网 讲的挺好的博客 Gradle之重新认识Gradle(项目结构、命令行、tas…...

前端开发之jsencrypt加密解密的使用方法和使用示例
目录 RSA密钥生成选项简介 jsencrypt 使用教程 一、安装 jsencrypt 二、使用 jsencrypt 进行加密和解密 1. 创建密钥对 2. 加密数据 3. 解密数据 三、实际应用示例 加密数据并存储到 localStorage 中: 从 localStorage 中读取加密数据并解密: …...

电路研究9.2.5——合宙Air780EP中GPS 相关命令使用方法研究
注:本命令仅适用于合宙 4G CAT1 模块(Air780EG 系列)。 正好,我们使用的Air780EP好像也有4G CAT1模块,好像也属于Air780EG系列吧。 这个例子好像比较少就个。 18.9 使用方法举例 18.1GPS 开关:ATCGNSPWR 这…...
Python标准库 - os (3) 调度策略、系统信息
文章目录 6 调度策略6.1 调度策略常量6.2 访问和设置进程的调度策略 7 系统信息7.1 系统信息7.2 系统配置信息7.3 系统负载7.4 路径相关常量7.5 生成随机字节 os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面。 这里整理了进程调度和查看系统…...

【NLP251】NLP RNN 系列网络
NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习 1.原理及网络结构 1.1RNN 在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型…...

【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途
希腊字母(Greek Letters) 希腊字母在数学、科学、工程学和编程中广泛使用,常用于表示变量、常量、参数、角度等。以下是希腊字母的完整列表及其常见用途。 大写与小写希腊字母表 大写小写名称(英文)名称(…...
2.文件IO
2.文件IO **1. 文件I/O概述****2. 文件I/O函数接口****3. 文件定位****4. 文件描述符与文件流指针的转换****5. 文件I/O与标准I/O的比较****6. 练习与作业****7. 文件I/O与标准I/O的对应关系****8. 其他注意事项****9. 总结** 1. 文件I/O概述 文件I/O:操作系统为了…...

毕业设计--具有车流量检测功能的智能交通灯设计
摘要: 随着21世纪机动车保有量的持续增加,城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题,本文设计了一款智能交通灯系统,利用车流量检测功能和先进的算法实现了…...

【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念,今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...

设计模式的艺术-策略模式
行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解策略模式 在策略模式中,可以定义一些独立的类来封装不同的算法,每个类封装一种具体的算法。在这里,每个封装算法的类都可以称之为一种策略(Strategy…...

【memgpt】letta 课程1/2:从头实现一个自我编辑、记忆和多步骤推理的代理
llms-as-operating-systems-agent-memory llms-as-operating-systems-agent-memory内存 操作系统的内存管理...
动态规划DP 最长上升子序列模型 合唱队形(题目分析+C++完整代码)
概览检索 动态规划DP 最长上升子序列模型 合唱队形 原题链接 AcWiing 482. 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的 (N−K)位同学出列,使得剩下的 K位同学排成合唱队形。 合唱队形是指这样的一种队形:设 K位同学从左到右…...
【踩坑】解决Hugging-face下载问题
解决Hugging-face下载问题 问题1:couldnt connect to https://huggingface.co问题2:HTTPSConnectionPool(hostcdn-lfs-us-1.hf-mirror.com, port443)设置hf_transfer加快速度 问题3:requests.exceptions.ChunkedEncodingError: (Connection b…...

Spring AI 在微服务中的应用:支持分布式 AI 推理
1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…...

5.3.2 软件设计原则
文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…...

java求职学习day20
1 在线考试系统 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 软件的需求分析 在线考试系统的主要功能分析如下: ( 1 )学员系统 (1.1)用户模块&…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
虚幻基础:角色旋转
能帮到你的话,就给个赞吧 😘 文章目录 移动组件使用控制器所需旋转:组件 使用 控制器旋转将旋转朝向运动:组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转:必须移动才能旋转,不移动不旋转控制器…...