性能优化工具

CPU 优化的各类工具

在这里插入图片描述

network
netperf

服务端:

$ netserver
Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
$ cat netperf.sh 
#!/bin/bash
count=$1
for ((i=1;i<=count;i++))
do
    echo "Instance:$i-------"
    # 下方命令可以替换为测试场景表格中的命令
    # -H 后填写服务器 IP 地址;
    # -l 后为测试时间,为了防止 netperf 提前结束,因此时间设为 10000;
    netperf -t TCP_STREAM -H 172.17.48.107 -l 10000 -- -m 1500 -R 1 &
done

$ bash netperf.sh 20
Instance:1-------
Instance:2-------
Instance:3-------
Instance:4-------
Instance:5-------
Instance:6-------
Instance:7-------
Instance:8-------
Instance:9-------
Instance:10-------
Instance:11-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:12-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:13-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:14-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:15-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:16-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:17-------
Instance:18-------
Instance:19-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
Instance:20-------
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
[root]$ MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 172.17.48.107 () port 0 AF_INET

在这里插入图片描述

iperf

基本使用用法

$ iperf -h
Usage: iperf [-s|-c host] [options]
       iperf [-h|--help] [-v|--version]

Client/Server:
  -b, --bandwidth #[kmgKMG | pps]  bandwidth to send at in bits/sec or packets per second
  -e, --enhancedreports    use enhanced reporting giving more tcp/udp and traffic information
  -f, --format    [kmgKMG]   format to report: Kbits, Mbits, KBytes, MBytes
  -i, --interval  #        seconds between periodic bandwidth reports
  -l, --len       #[kmKM]    length of buffer in bytes to read or write (Defaults: TCP=128K, v4 UDP=1470, v6 UDP=1450)
  -m, --print_mss          print TCP maximum segment size (MTU - TCP/IP header)
  -o, --output    <filename> output the report or error message to this specified file
  -p, --port      #        server port to listen on/connect to
  -u, --udp                use UDP rather than TCP
      --udp-counters-64bit use 64 bit sequence numbers with UDP
  -w, --window    #[KM]    TCP window size (socket buffer size)
  -z, --realtime           request realtime scheduler
  -B, --bind <host>[:<port>][%<dev>] bind to <host>, ip addr (including multicast address) and optional port and device
  -C, --compatibility      for use with older versions does not sent extra msgs
  -M, --mss       #        set TCP maximum segment size (MTU - 40 bytes)
  -N, --nodelay            set TCP no delay, disabling Nagle's Algorithm
  -S, --tos       #        set the socket's IP_TOS (byte) field

Server specific:
  -s, --server             run in server mode
  -t, --time      #        time in seconds to listen for new connections as well as to receive traffic (default not set)
      --udp-histogram #,#  enable UDP latency histogram(s) with bin width and count, e.g. 1,1000=1(ms),1000(bins)
  -B, --bind <ip>[%<dev>]  bind to multicast address and optional device
  -H, --ssm-host <ip>      set the SSM source, use with -B for (S,G) 
  -U, --single_udp         run in single threaded UDP mode
  -D, --daemon             run the server as a daemon
  -V, --ipv6_domain        Enable IPv6 reception by setting the domain and socket to AF_INET6 (Can receive on both IPv4 and IPv6)

Client specific:
  -c, --client    <host>   run in client mode, connecting to <host>
  -d, --dualtest           Do a bidirectional test simultaneously
      --ipg                set the the interpacket gap (milliseconds) for packets within an isochronous frame
      --isochronous <frames-per-second>:<mean>,<stddev> send traffic in bursts (frames - emulate video traffic)
  -n, --num       #[kmgKMG]    number of bytes to transmit (instead of -t)
  -r, --tradeoff           Do a bidirectional test individually
  -t, --time      #        time in seconds to transmit for (default 10 secs)
  -B, --bind [<ip> | <ip:port>] bind ip (and optional port) from which to source traffic
  -F, --fileinput <name>   input the data to be transmitted from a file
  -I, --stdin              input the data to be transmitted from stdin
  -L, --listenport #       port to receive bidirectional tests back on
  -P, --parallel  #        number of parallel client threads to run
  -R, --reverse            reverse the test (client receives, server sends)
  -T, --ttl       #        time-to-live, for multicast (default 1)
  -V, --ipv6_domain        Set the domain to IPv6 (send packets over IPv6)
  -X, --peer-detect        perform server version detection and version exchange
  -Z, --linux-congestion <algo>  set TCP congestion control algorithm (Linux only)

Miscellaneous:
  -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast) S(settings) V(server) reports
  -y, --reportstyle C      report as a Comma-Separated Values
  -h, --help               print this message and quit
  -v, --version            print version information and quit

[kmgKMG] Indicates options that support a k,m,g,K,M or G suffix
Lowercase format characters are 10^3 based and uppercase are 2^n based
(e.g. 1k = 1000, 1K = 1024, 1m = 1,000,000 and 1M = 1,048,576)

The TCP window size option can be set by the environment variable
TCP_WINDOW_SIZE. Most other options can be set by an environment variable
IPERF_<long option name>, such as IPERF_BANDWIDTH.

iperf 服务端:

$ iperf -s -i 1 -p 3389
------------------------------------------------------------
Server listening on TCP port 3389
TCP window size:  128 KByte (default)
------------------------------------------------------------

客户端:

$ cat iperf.sh 
#!/bin/bash
count=$1
for ((i=1;i<=count;i++))
do
    echo "Instance:$i-------"
    iperf -c 172.17.48.107 -p 3389 -i 1 &
done

客户端执行:

$ bash  iperf.sh 10
Instance:1-------
Instance:2-------
Instance:3-------
Instance:4-------
Instance:5-------
Instance:6-------
Instance:7-------
Instance:8-------
Instance:9-------
Instance:10-------
[root@core_172.17.48.52 ~]$ ------------------------------------------------------------
Client connecting to 172.17.48.107, TCP port 3389
TCP window size:  198 KByte (default)
------------------------------------------------------------
[  3] local 172.17.48.52 port 52312 connected with 172.17.48.107 port 3389
------------------------------------------------------------
Client connecting to 172.17.48.107, TCP port 3389
------------------------------------------------------------
TCP window size:  194 KByte (default)
------------------------------------------------------------
Client connecting to 172.17.48.107, TCP port 3389
[  3] local 172.17.48.52 port 52316 connected with 172.17.48.107 port 3389
TCP window size:  400 KByte (default)

服务端反馈:

[ 10]  9.0-10.0 sec   377 MBytes  3.16 Gbits/sec
[ 10]  0.0-10.0 sec  2.36 GBytes  2.02 Gbits/sec
[  8]  9.0-10.0 sec   191 MBytes  1.60 Gbits/sec
[ 12]  9.0-10.0 sec   337 MBytes  2.83 Gbits/sec
[ 11]  9.0-10.0 sec   259 MBytes  2.17 Gbits/sec
[ 13]  9.0-10.0 sec   190 MBytes  1.60 Gbits/sec
[SUM]  9.0-10.0 sec  2.71 GBytes  23.3 Gbits/sec
[  7]  0.0-10.0 sec  2.41 GBytes  2.07 Gbits/sec
[  5]  0.0-10.0 sec  2.43 GBytes  2.08 Gbits/sec
[  4]  0.0-10.0 sec  1.81 GBytes  1.55 Gbits/sec
[  9]  0.0-10.0 sec  5.17 GBytes  4.44 Gbits/sec
[  6]  0.0-10.0 sec  2.70 GBytes  2.32 Gbits/sec
[  8]  0.0-10.0 sec  3.24 GBytes  2.78 Gbits/sec
[ 12]  0.0-10.0 sec  2.76 GBytes  2.37 Gbits/sec
[ 11]  0.0-10.0 sec  2.15 GBytes  1.85 Gbits/sec
[ 13]  0.0-10.0 sec  1.96 GBytes  1.68 Gbits/sec
[SUM]  0.0-10.0 sec  27.0 GBytes  23.1 Gbits/sec

或者客户端无需脚本, 直接使用 -P 并发参数

$ iperf  -c 172.17.48.107 -p 3389 -i 1  -t 1200 -P 10
------------------------------------------------------------
Client connecting to 172.17.48.107, TCP port 3389
TCP window size:  234 KByte (default)
------------------------------------------------------------
[ 13] local 172.17.48.52 port 35696 connected with 172.17.48.107 port 3389
[  3] local 172.17.48.52 port 35678 connected with 172.17.48.107 port 3389
[  4] local 172.17.48.52 port 35680 connected with 172.17.48.107 port 3389
[  5] local 172.17.48.52 port 35682 connected with 172.17.48.107 port 3389
[  6] local 172.17.48.52 port 35684 connected with 172.17.48.107 port 3389
[  7] local 172.17.48.52 port 35686 connected with 172.17.48.107 port 3389
[  8] local 172.17.48.52 port 35688 connected with 172.17.48.107 port 3389
[ 11] local 172.17.48.52 port 35690 connected with 172.17.48.107 port 3389
[  9] local 172.17.48.52 port 35692 connected with 172.17.48.107 port 3389
[ 12] local 172.17.48.52 port 35694 connected with 172.17.48.107 port 3389
[ ID] Interval       Transfer     Bandwidth
[ 13]  0.0- 1.0 sec   184 MBytes  1.54 Gbits/sec
[  3]  0.0- 1.0 sec   177 MBytes  1.48 Gbits/sec
[  4]  0.0- 1.0 sec   175 MBytes  1.47 Gbits/sec
[  5]  0.0- 1.0 sec   383 MBytes  3.21 Gbits/sec
[  6]  0.0- 1.0 sec   255 MBytes  2.14 Gbits/sec
[  7]  0.0- 1.0 sec   233 MBytes  1.95 Gbits/sec
[  8]  0.0- 1.0 sec   714 MBytes  5.99 Gbits/sec
[ 11]  0.0- 1.0 sec   229 MBytes  1.92 Gbits/sec
[  9]  0.0- 1.0 sec   224 MBytes  1.88 Gbits/sec
[ 12]  0.0- 1.0 sec   161 MBytes  1.35 Gbits/sec
[SUM]  0.0- 1.0 sec  2.67 GBytes  22.9 Gbits/sec
[ 13]  1.0- 2.0 sec   145 MBytes  1.22 Gbits/sec
[  3]  1.0- 2.0 sec   176 MBytes  1.48 Gbits/sec
[  4]  1.0- 2.0 sec   225 MBytes  1.89 Gbits/sec
[  5]  1.0- 2.0 sec   425 MBytes  3.56 Gbits/sec
[  6]  1.0- 2.0 sec   287 MBytes  2.41 Gbits/sec
[  7]  1.0- 2.0 sec   237 MBytes  1.99 Gbits/sec
[  8]  1.0- 2.0 sec   577 MBytes  4.84 Gbits/sec
[ 11]  1.0- 2.0 sec   249 MBytes  2.09 Gbits/sec
[  9]  1.0- 2.0 sec   247 MBytes  2.07 Gbits/sec
[ 12]  1.0- 2.0 sec   206 MBytes  1.73 Gbits/sec
[SUM]  1.0- 2.0 sec  2.71 GBytes  23.3 Gbits/se
iperf3

服务端

$ cat server.sh 
for x in `seq 3400 3419`;do  iperf3 -s -i 1 -p $x &  done
$ bash server.sh 
-----------------------------------------------------------
Server listening on 3400
-----------------------------------------------------------
-----------------------------------------------------------
Server listening on 3401
-----------------------------------------------------------
-----------------------------------------------------------
Server listening on 3402
-----------------------------------------------------------
-----------------------------------------------------------
Server listening on 3403
-----------------------------------------------------------
-----------------------------------------------------------
Server listening on 3404
-----------------------------------------------------------
-----------------------------------------------------------
Server listening on 3405
-----------------------------------------------------------
-----------------------------------------------------------
Server listening on 3406
-----------------------------------------------------------

客户端

$ cat iperf3client.sh 

for x in `seq 3400 3409`;do iperf3   -c 172.17.48.107 -p $x -i 1  -t 1200 -P 10  &  done
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 12] 120.00-121.00 sec  31.1 MBytes   261 Mbits/sec   45   41.7 KBytes       
[ ID] Interval           Transfer     Bandwidth       Retr
[  8] 120.00-121.00 sec  25.0 MBytes   210 Mbits/sec   22   61.2 KBytes       
[ 10] 120.00-121.00 sec  27.7 MBytes   233 Mbits/sec   69   79.3 KBytes       
[ 10] 120.00-121.00 sec  28.1 MBytes   235 Mbits/sec   73   77.9 KBytes       
[  6] 120.00-121.00 sec  29.4 MBytes   247 Mbits/sec   96   65.4 KBytes       
[  8] 120.00-121.00 sec  19.8 MBytes   166 Mbits/sec   40    106 KBytes       
[ 12] 120.00-121.00 sec  35.4 MBytes   297 Mbits/sec   15    154 KBytes       
[ 12] 120.00-121.00 sec  24.7 MBytes   207 Mbits/sec   58   55.6 KBytes       
[ 12] 120.00-121.00 sec  31.8 MBytes   267 Mbits/sec   73   82.0 KBytes       
[ 14] 120.00-121.00 sec  27.0 MBytes   227 Mbits/sec   19   93.2 KBytes       
[ 14] 120.00-121.00 sec  23.6 MBytes   198 Mbits/sec   31   89.0 KBytes       

sar 检测

$ sar -n DEV 1
Linux 5.4.119-19.0009.40 (172.17.48.107)        04/16/2024      _x86_64_        (64 CPU)

11:54:47 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:54:48 AM        lo      2.00      2.00      0.08      0.08      0.00      0.00      0.00
11:54:48 AM      eth0 2043634.00 158143.00 2949569.21   8463.96      0.00      0.00      0.00

11:54:48 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:54:49 AM        lo   3708.00   3708.00   1232.12   1232.12      0.00      0.00      0.00
11:54:49 AM      eth0 2042823.00 159044.00 2948059.12   8619.72      0.00      0.00      0.00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/558085.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI学习中常见专业英文缩写词的解释】

前言&#xff1a; 为了看着不无聊&#xff0c;文中插入了一些AI生成的狗图片 AI(Artificail Intelligence)人工智能&#xff1a; 让机器模拟和展示人类智能的技术。 GAI(Generative Artificail Intelligence)生成式人工智能: 利用复杂的算法、模型和规则&#xff0c;从大规…

fastjson

一&#xff1a;fastjson作用 1.将Java对象转换为json字符串》响应给前端。 2.将json字符串转换为Java对象 》接受前端的json数据封装到对象中。 二&#xff1a;常用API fastjson API 入口类是 com.alibaba.fastjson.JSON ,常用的序列化操作都可以在JSON类上的静态方法直接完…

DDD领域设计基础

1概述 作为架构师&#xff0c;我们在业务建模的时候不能完全凭经验、感觉&#xff0c;还得有一套方法论&#xff0c;DDD领域驱动设计恰巧可以作为业务建模的方法论来使用。 2 为什么要使用DDD 2.1 为什么需要DDD 复杂系统设计&#xff1a;系统多&#xff0c;业务逻辑复杂&a…

四信遥测终端入选河南省水利先进实用技术推广目录

近期&#xff0c;河南省水利科技推广中心发布通知&#xff0c;四信自主研发的“遥测终端机RTU”&#xff0c;列入河南省水利先进实用技术推广目录&#xff0c;认定为水利先进实用技术。 四信遥测终端 F9164系列 ●一体化设计 ●工业级设计 ●接口丰富、标准易用 ●大容量储存空…

python爬虫 - 爬取微博热搜数据

文章目录 python爬虫 -爬取微博热搜数据1. 第一步&#xff1a;安装requests库和BeautifulSoup库2. 第二步&#xff1a;获取爬虫所需的header和cookie3. 第三步&#xff1a;获取网页4. 第四步&#xff1a;解析网页5. 第五步&#xff1a;分析得到的信息&#xff0c;简化地址6. 第…

代码随想录阅读笔记-回溯【全排列 II】

题目 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2]输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3]输出&#xff1a;[[1,2,3],[1,…

JVM 性能调优命令(jps,jinfo,jstat,jstack,jmap)

常用命令&#xff1a;jps、jinfo、jstat、jstack、jmap jps jps查看java进程及相关信息 jps -l 输出jar包路径&#xff0c;类全名 jps -m 输出main参数 jps -v 输出JVM参数jps命令示例 显示本机的Java虚拟机进程&#xff1a; # jps 15729 jar 92153 Jps 90267 Jstat显示主类…

c 多文件编程

1.结构目录 声明类:用于声明方法,方便方法管理和调用&#xff1b; 实现类:用于实现声明的方法; 应用层:调用方法使用 写过java代码的兄弟们可以这么理解&#xff1a; 声明类 为service层 实现类 为serviceimpl层 应用层 为conlloter层 2.Dome 把函数声明放在头文件xxx.h中&…

外包干了7个月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

Spark01

Spark01 一. Spark概述二. Spark环境部署 - Local三. Spark环境部署 - Standalone1. Standalone集群概述2. Standalone环境部署3. 测试环境 四. Spark环境部署 - Standalone-HA1. 安装部署Zookeeper1. 下载2. zookeeper安装3. 配置StandAlone-HA集群 五. Spark On YARN -- 重点…

CSS 实现视差滚动效果

一、是什么 视差滚动&#xff08;Parallax Scrolling&#xff09;是指多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来非常出色的视觉体验 我们可以把网页解刨成&#xff1a;背景层、内容层、悬浮层 当滚动鼠标滑轮的时候&#xff0c;各个图层以不…

Nuclei 减少漏报的使用小技巧

在最近工作的渗透测试项目中发现Nuclei存在一个问题&#xff0c;就是相同的网站连续扫描多次会出现漏报的情况&#xff0c;此前没有注意过这个情况&#xff0c;所以写篇文章记录一下。 在此之前我的常用命令都是一把梭&#xff0c;有就有没有就继续其他测试 $ nuclei -u htt…

锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测 Matlab基于GRU的锂电池剩余寿命预测 基于GRU的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2020及以上 锂电池的剩余寿命预测是…

【简单介绍下K-means聚类算法】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

​面试经典150题——从前序与中序遍历序列构造二叉树

​ 1. 题目描述 2. 题目分析与解析 二叉树的前序、中序和后序遍历 二叉树的前序、中序和后序遍历是树的三种基本遍历方式&#xff0c;它们是通过不同的顺序来访问树中的节点的。 前序遍历&#xff08;Pre-order traversal&#xff09;&#xff1a; 访问根节点 前序遍历左子树…

Linux-Stunnel介绍

1、定义 Stunnel是一个自由的跨平台软件&#xff0c;用于提供全局的TLS/SSL服务。针对本身无法进行TLS或SSL通信的客户端及服务器&#xff0c;Stunnel可提供安全的加密连接。该软件可在许多操作系统下运行&#xff0c;包括Unix-like系统&#xff0c;以及Windows。Stunnel依赖于…

15、ESP32 BLE

低功耗蓝牙&#xff1a; 低功耗蓝牙&#xff0c;简称 BLE&#xff0c;是蓝牙的省电版本。BLE 的主要应用是短距离传输少量数据&#xff08;低带宽&#xff09;。与经典蓝牙不同&#xff0c;BLE 始终保持睡眠模式&#xff0c;除非启动连接&#xff0c;这使得它消耗的功率非常低。…

智能设备订购如何使药品供应链受益

自从 Covid-19 大流行扰乱全球供应链以来&#xff0c;制药行业对增强弹性的需求变得比以往任何时候都更加重要。药品供应链已经开始数字化转型&#xff0c;采用新技术有助于确保药品和关键物资按时到达目的地并支持长期业务战略。其中一种解决方案是在移动设备上进行智能设备订…

在 Ubuntu 12.10 安装 wxPython

安装 wxPython 可以使用 pip 工具&#xff0c;但在 Ubuntu 12.10 上需要首先安装 wxPython 的依赖项。请注意&#xff0c;Ubuntu 12.10 已于2013年终止支持&#xff0c;建议升级到更高版本的 Ubuntu。以下是在 Ubuntu 12.10 上安装 wxPython 的一般步骤&#xff1a; 一、问题背…

HTML学习笔记:(二)框架实例

2、 框架实例 注意&#xff1a;frameset不能和body标签共存 <frameset>元素是用于创建框架页面的&#xff0c;它允许在一个浏览器窗口中显示多个HTML页面。然而&#xff0c;<frameset>是一种较旧的方式来构建网页&#xff0c;它不符合现代Web标准&#xff08;比如…