Linux各类性能分析工具用法详解

文章目录

在Linux性能分析和优化过程中,选用一个好的工具能极大的提高自己的工作效率。这里以Brendan Gregg的Linux性能工具图谱为线索,梳理了Linux系统下各个模块的性能分析工具,并对部分常用工具的用法进行了详细说明。掌握这些工具,可以极大的提高开发者程序性能优化的效果和效率。

静态性能分析工具

文件系统观测工具

shell 复制代码
# df命令作用是列出文件系统的整体磁盘空间使用情况
# -h:--human-readable,以人们易读的GB、MB、KB等格式显示
# -a: 显示所有的文件系统; -k 以kb为容量显示单位; -m 以mb为容量显示单位
# 指定文件名称是查看文件所在目录磁盘使用情况,不加名称是所有磁盘的使用情况;
df -h  filename

显示效果如下:

虚拟文件系统(VFS)分析工具

shell 复制代码
# lsof 是系统管理/安全监测工具, 用来获取和网络相关的信息
lsof -i              # 显示所有的网络连接
lsof -i 6            # 仅获取ipv6的流量
lsof -iTCP           # 仅显示TCP连接
lsof -i :port        # 用来显示指定端口的网络信息
losf -i@127.0.0.1    # 显示指定到某个主机的连接
losf -i@127.0.0.1:22 # 指定到某个主机端口的连接
losf -i -sTCP:LISTEN # 找到正在等候连接的端口
lsof -i -sTCP:ESTABLISHED # 找出已经建立的连接
lsof -u daniel       # 查看指定用户打开了什么
kill -9 `lsof -t -u daniel` # 杀死指定用户做的一切事情
lsof -u ^daniel      # 除了daniel用户其它用户做的事情  
lsof -c syslog-ng    # 查看指定的命令正在使用的文件和网络连接
lsof -p 10075        # 查看指定进程ID已打开的内容
lsof /var/log/fil    # 显示与指定目录/文件交互的所有一切
shell 复制代码
# pcstat 用于判断一个文件是否被Linux cache缓存
# github地址: https://github.com/tobert/pcstat  
pcstat testfile3
|-----------+----------------+------------+-----------+---------|
| Name      | Size           | Pages      | Cached    | Percent |
|-----------+----------------+------------+-----------+---------|
| LICENSE   | 11323          | 3          | 0         | 000.000 |
| README.md | 6768           | 2          | 2         | 100.000 |
| pcstat    | 3065456        | 749        | 749       | 100.000 |
| pcstat.go | 9687           | 3          | 3         | 100.000 |
| testfile3 | 102401024      | 25001      | 60        | 000.240 |
|-----------+----------------+------------+-----------+---------|

磁盘管理工具

shell 复制代码
# mdadm命令可以进行创建、调整、监控、删除RAID设备
mdadm [参数] 设备名
mdadm -D         #  显示RAID设备的详细信息
mdadm -a         #  向RAID中添加新设备
mdadm -G         #  设置RAID设备大小
mdadm -E         #  显示RAID设备成员的详细信息 

# dmsetup(Device mapper setup)的缩写  用于管理硬盘映射器 
dmsetup [参数] 逻辑卷名  
dmsetup deps     #  显示设备的依赖关系
dmsetup info     #  显示有关磁盘映射器的概述信息
dmsetup ls       #  显示映射设备的名称列表
dmsetup remove   #  删除指定的磁盘设备
dmsetup status   #  显示指定设备中每个目标的状态信息
dmsetup table    #  显示虚拟设备的映射表

进程资源占用监测

shell 复制代码
# pidstat 监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况
pidstat -u -p ALL   # 显示了所有进程的cpu使用率
pidstat -u          # CPU使用情况统计
pidstat -r          # 内存使用情况统计
pidstat -d          # 集成的IO使用情况统计
pidstat -w -p 2831  # 显示进程2831的上下文切换情况
pidstat -t -p 2831  # 显示选择任务的线程的统计信息外的额外信息
pidstat -T TASK     # 报告独立的task 
pidstat -T CHILD    # 进程下所有线程统计信息
pidstat -T ALL      # 报告独立的task和task下面的所有线程

系统库调用分析工具

shell 复制代码
# ldd 打印程序或者库文件所依赖的共享库列表
ldd --version       # 打印指令版本号;
ldd -v              # 详细信息模式,打印所有相关信息
ldd -u              # 打印未使用的直接依赖
ldd -d              # 执行重定位和报告任何丢失的对象
ldd -r              # 执行数据对象和函数的重定位,并且报告任何丢失的对象和函数
ldd --help          # 显示帮助信息

网络配置

shell 复制代码
ip link show                        # 显示网络接口信息
ip link list                        # 用ip命令显示网络设备的运行状态 
ip -s link list                     # 显示更加详细的设备信息 
ip link set eth0 up                 # 开启网卡
ip link set eth0 down               # 关闭网卡
ip link set eth0 txqueuelen 1200    # 设置网卡队列长度
ip link set eth0 mtu 1400           # 设置网卡最大传输单元
ip link | grep -E '^[0-9]' | awk -F: '{print $2}' # 显示主机的所有网络接口
ip addr show                        # 显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0 # 为eth0网卡添加一个新的IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0 # 为eth0网卡删除一个IP地址192.168.0.1

ip route show                                            # 显示系统路由
ip route list                                            # 显示路由核心表   
ip route add default via 192.168.1.254                   # 设置系统默认路由
ip route list                                            # 查看路由信息

ip route add default via  192.168.0.254  dev eth0        # 设置默认网关为192.168.0.254
ip route del 192.168.4.0/24                              # 删除192.168.4.0网段的网关
ip route del default                                     # 删除默认路由
ip route delete 192.168.1.0/24 dev eth0                  # 删除路由

防火墙配置

shell 复制代码
# iptables 是Linux上常用的防火墙软件 
iptables -F                    # 清空所有的防火墙规则
iptables -X                    # 删除用户自定义的空链
iptables -Z                    # 清空计数

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
# 22为你的ssh端口, -s 192.168.1.0/24表示允许这个网段的机器来连接,其它网段的ip地址是登陆不了你的机器的。 -j ACCEPT表示接受这样的请求

# #本地圆环地址就是那个127.0.0.1,是本机上使用的,它进与出都设置为允许
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -P INPUT DROP          # 配置默认的不让进
iptables -P FORWARD DROP        # 默认的不允许转发
iptables -P OUTPUT ACCEPT       # 默认的可以出去

# 配置白名单
iptables -A INPUT -p all -s 192.168.1.0/24 -j ACCEPT            # 允许机房内网机器可以访问
iptables -A INPUT -p tcp -s 183.121.3.7 --dport 3380 -j ACCEPT  # 允许183.121.3.7访问本机的3380端口

# 开启相应的服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT                    # 开启80端口,因为web对外都是这个端口
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT                # 允许被ping
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立的连接得让它进来

# 保存规则到配置文件中
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak           # 任何改动之前先备份,请保持这一优秀的习惯
iptables-save > /etc/sysconfig/iptables
cat /etc/sysconfig/iptables

# 查看已经设置的规则
# iptables -L [-t 表名] [链名]
# 四个表名 raw,nat,filter,mangle
# 五个规则链名 INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
# filter表包含INPUT、OUTPUT、FORWARD三个规则链
iptables -L -t nat                  # 列出nat上面的所有规则
iptables -L -t nat  --line-numbers  # 规则带编号
iptables -L INPUT                   # 查看某个规则链
iptables -L -nv                     # 查看规则链的详细信息
iptables -L -n -v                   # 查看已添加的规则

# 清除已有规则
iptables -F INPUT  # 清空指定链 INPUT 上面的所有规则
iptables -X INPUT  # 删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则
                   # 如果没有指定链名,则会删除该表中所有非内置的链
iptables -Z INPUT  # 把指定链,或者表中的所有链上的所有计数器清零

# 删除已添加的规则
iptables -A INPUT -s 192.168.1.5 -j DROP # 添加规则
iptables -L -n --line-numbers            # 查看规则列表
iptables -D INPUT 8                      # 删除序号为8的规则
  
# 开放指定的端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #允许访问80端口

# 屏蔽IP地址
iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令

# 启动端口映射
# 本机的 2222 端口映射到内网 虚拟机的22 端口
iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222  -j DNAT --to-dest 192.168.188.115:22

# 过滤所有TCP连接中的字符串test
iptables -A INPUT -p tcp -m string --algo kmp --string "test" -j REJECT --reject-with tcp-reset

多路径配置

shell 复制代码
# multipath 是一个用于管理多路径设备的命令行工具
# 常用于处理存储设备中的多路径配置
multipath -ll  # 显示系统中所有的多路径设备及其状态信息
multipath -W   # 禁用所有多路径设备
multipath -r   # 重新扫描并重新发现所有的多路径设备

进程调度

shell 复制代码
# schedtool是一个用于设置进程调度策略和优先级的命令行工具  
schedtool -E <command> # 启动一个新的进程,并使用 schedtool 运行该进程
schedtool -B <PID>     # 将指定进程设置为后台运行,降低其调度优先级
schedtool -F <PID>     # 将指定进程设置为前台运行,提高其调度优先级
schedtool -D <PID>     # 将指定进程设置为非休眠状态,以便更频繁地运行
schedtool -N <PID>     # 将指定进程设置为休眠状态,降低其调度频率
schedtool -p <priority> <PID> # 设置指定进程的静态优先级。较低的值表示较高的优先级。
schedtool -R <PID>     # 将指定进程设置为实时(Real-time)优先级。
schedtool -u <CPU utilization> <PID> # 设置指定进程的 CPU 利用率限制。

系统命令操作

shell 复制代码
sysctl       #  被用于在内核运行时动态地修改内核的运行参数
journalctl   #  检索 systemd 日志,是 CentOS 7 才有的工具
lsmod        #  显示已载入系统的模块

查看硬件信息

shell 复制代码
cat cat /proc/cpuinfo  # 查看CPU信息
lscpu                  # 显示有关CPU架构的信息
numactl                # 工具可用于查看当前服务器的NUMA节点配置、状态,可通过该工具将进程绑定到指定CPUcore

磁盘管理

shell 复制代码
lsblk           # 列出块设备信息 -a 显示所有设备
blockdev        # 从命令行调用区块设备控制程序
fdisk -l        # 查看磁盘使用情况和磁盘分区 

网络端口

shell 复制代码
ethtool         # 显示或修改以太网卡的配置信息

ifconfig           # 处于激活状态的网络接口
ifconfig -a        # 所有配置的网络接口,不论其是否激活
ifconfig eth0      # 显示eth0的网卡信息
ifconfig eth0 up   # 启动网卡
ifconfig eth0 down # 关闭网卡

# 设置IP 子网掩码 广播地址
ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

硬件信息

shell 复制代码
dmidecode         # 在Linux系统下获取有关硬件方面的信息
lspci             # 显示当前主机的所有PCI总线信息
lsusb             # 显示本机的USB设备列表信息

监测工具

内核调用监测

shell 复制代码
# perf 强大的性能分析工具
perf top       # 动态时实追踪显示占用CPU较高的进程
perf report    # 重放perf.data的内容
perf record -p # 指定追踪进程的PID
perf record -g # 启用进程中函数的调用关系
perf record -a # 追踪所有的CPU
perf record sleep N   # 采集多长时间的数据
perf record -ag sleep 10;perf report  # 采集10s的数据并分析

# CPU使用率很高的常见原因
# 第一个原因,进程在不停地崩溃重启,比如因为段错误、配置错误等等
# 第二个原因,这些进程都是短时进程,也就是在其他应用内部通过 exec 调用的外面命令。这些命令一般都只运行很短的时间就会结束

# ftrace 是一个 Linux 内部的 trace 工具,能够帮助开发者和系统设计者知道内核当前正在干啥,从而更好的去分析性能问题。
# SystemTap 是一种跟踪和探测工具,它使用户可以详细研究和监视操作系统(特别是内核)的活动
# BCC是一个Python库,简化了eBPF应用的开发过程,并收集了大量性能分析相关的eBPF应用。

# LTTng(Linux Trace Toolkit Next Generation)它是用于跟踪 Linux 内核、应用程序以及库的系统软件包.
lttng list -k    # 列出所有的可追踪内核事件
lttng create mysession  # 创建一个追踪会话(session)
lttng start      # 开启追踪
lttng enable-event -a -k  # 追踪内核所有的探测点和所有的系统调用事件
lttng enable-event -a -k --syscall  # 追踪所有的系统调用
lttng add-context -k -e sched_switch -t pid  #  打开一个事件的上下文信息
lttng stop       # 关闭追踪  
lttng destroy    # 关闭追踪 

系统调用监测

shell 复制代码
# strace命令 是一个集诊断、调试、统计与一体的工具
strace -c     #  统计每一系统调用的所执行的时间,次数和出错的次数等.
strace -d     #  输出strace关于标准错误的调试信息.
strace -f     #  跟踪由fork调用所产生的子进程.
strace -o     #  将strace的结果输出到文件中
strace -T     #  将每个系统调用所花费的时间打印出来
strace -p pid #  追踪现有的进程的pid

# Trace 主要用来跟踪和记录系统的内核、内核扩展程序和用户程序,尤其是对系统调用,内核服务和中断处理进行详细的记录
trace -a      # 后台运行
trace -l      # 循环模式
trace -o      # 输出到文件
trace -T      # 表示缓冲区的大小

# sysdig 是一个开源系统发掘工具, 用于系统级别的勘察和排障

系统函数调用监测

shell 复制代码
#  ltrace命令 是用来跟踪进程调用库函数的情况
ltrace -a   # 对齐具体某个列的返回值
ltrace -c   # 计算时间和调用,并在程序退出时打印摘要
ltrace -C   # 解码低级别名称(内核级)为用户级名称
ltrace -d   # 打印调试信息
ltrace -e   # 改变跟踪的事件
ltrace -f   # 跟踪子进程
ltrace -h   # 打印帮助信息
ltrace -i   # 打印指令指针,当库调用时
ltrace -l   # 只打印某个库中的调用
ltrace -L   # 不打印库调用
ltrace -o   # 把输出定向到文件
ltrace -p PID # 附着在值为PID的进程号上进行ltrace
ltrace -r   # 打印相对时间戳
ltrace -s STRLEN # 设置打印的字符串最大长度
ltrace -S   # 显示系统调用。
ltrace -t, -tt, -ttt # 打印绝对时间戳
ltrace -T   # 输出每个调用过程的时间开销

系统性能监测

shell 复制代码
# Latencytop 通过在内核上下文切换的时候,记录被切换的进程的内核栈,然后通过匹配内核栈的函数来判断是什么原因导致上下文切换
# Latencytop 可以用来分析系统延迟
# mpstat  用来显示可用CPU的状态
# PowerTOP 是一个 Linux 工具,用于诊断电量消耗和电源管理的问题
# cat /proc/stat  显示统计数据信息

系统资源监测

shell 复制代码
# top 可以实时动态地查看系统的整体运行情况(CPU、内存)
top -i 时间      # 设置间隔时间
top -u 用户名    # 指定用户名 
top -p pid      # 指定进程
top -n 次数     # 循环显示的次数
top -H          # 所有线程占用资源情况
top -I          # 忽略失效过程;
top -s          # 保密模式
top -S          # 累积模式

# 显示列表的字段名称   
PID        # 进程PID    
USER       # 进程所属用户      
PR         # 优先级
NI         # nice值。负值表示高优先级,正值表示低优先级
VIRT       # 进程使用的虚拟内存总量,单位kb(VIRT=SWAP+RES)
RES        # 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR        # 共享内存大小,单位kb
S          # 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 
%CPU       # 上次更新到现在的CPU时间占用百分比
%MEM       # 进程使用的物理内存百分比
TIME+      # 进程使用的CPU时间总计,单位1/100秒
COMMAND    # 命令名/命令行

# 交互命令
k          # 终止一个进程
i          # 忽略闲置和僵死进程,这是一个开关式命令
q          # 退出程序
o或者O     # 改变显示项目的顺序
l          # 切换显示平均负载和启动时间信息
m          # 切换显示内存信息
t          # 切换显示进程和CPU状态信息
c          # 切换显示命令名称和完整命令行
M          # 根据驻留内存大小进行排序
P          # 根据CPU使用百分比大小进行排序
T          # 根据时间/累计时间进行排序
shell 复制代码
# htop  一个互动的进程查看器,可以动态观察系统进程状况
# vmstat  显示虚拟内存状态
# slabtop 实时显示内核slab内存缓存信息
# free    显示内存的使用情况
# /proc/meminfo 查看内存信息
# sar     系统运行状态统计工具

# pidstat 监控进程的系统资源占用情况
# pidstat -u 默认的参数,显示各个进程的cpu使用统计
# pidstat -r 显示各个进程的内存使用统计
# pidstat -d 显示各个进程的IO使用情况
# pidstat -w 显示每个进程的上下文切换情况
# pidstat -t 显示到线程的统计信息
# pidstat -p 指定进程号

# ps 查看资源
ps axo pid,comm,pcpu     # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4     # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3      # 按 CPU 资源的使用量对进程进行排序
ps -A                    # 显示所有进程信息
ps -u root               # 显示指定用户信息
ps -efL                  # 查看线程数
ps -e -o "%C : %p :%z : %a" | sort -k5 -nr # 查看进程并按内存使用大小排列
ps -ef                                     # 显示所有进程信息,连同命令行
ps -ef | grep ssh                          # ps 与grep 常用组合用法,查找特定进程
ps -C nginx                                # 通过名字或命令搜索进程
ps aux --sort=-pcpu,+pmem                  # CPU或者内存进行排序,-降序,+升序
ps -f --forest -C nginx                    # 用树的风格显示进程的层次关系
ps -o pid,uname,comm -C nginx              # 显示一个父进程的子进程
ps -e -o pid,comm,etime                    # 显示进程运行的时间
ps -aux | grep named                       # 查看named进程详细信息

网络资源监测

shell 复制代码
# ss 比 netstat 好用的socket统计信息
ss -t -a               # 显示TCP连接
ss -s                  # 显示 Sockets 摘要
ss -l                  # 列出所有打开的网络连接端口
ss -pl                 # 查看进程使用的socket
ss -lp | grep 3306     # 找出打开套接字/端口应用程
ss src 192.168.119.103:90 # 匹配本地地址和端口号
ss dst 192.168.119.113:443 # 匹配远程地址和端口 

# tcpdump  一款sniffer工具,是Linux上的抓包工具,嗅探器
# iptraf   实时地监视网卡流量
# netstat 查看Linux中网络系统状态信息
netstat -a        # 列出所有端口
netstat -at       # 列出所有tcp端口
netstat -au       # 列出所有udp端口   
netstat -l        # 只显示监听端口
netstat -lt       # 只列出所有监听 tcp 端口
netstat -lu       # 只列出所有监听 udp 端口
netstat -lx       # 只列出所有监听 UNIX 端口
netstat -s        # 显示所有端口的统计信息
netstat -st       # 显示TCP端口的统计信息
netstat -su       # 显示UDP端口的统计信息

I/O资源监测

shell 复制代码
iostat     # 监视系统输入输出设备和CPU的使用情况
iotop      # 用来监视磁盘I/O使用状况的工具
swapon -s  # 显示交换区的使用状况
cat /proc/swaps # 查看资源交换区的使用情况

性能追踪工具

性能分析和诊断工具

shell 复制代码
funccount     # 其作用在于统计函数被调用的次数
funclatency   # 获取函数的执行时延
kprobe        # 为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术
argdist       # 工具用于探测指定的函数,并收集参数到一个直方图和频率计数器
trace         # 用于跟踪系统调用和信号的工具。它可以帮助开发人员和系统管理员分析和调试程序的执行过程,以及定位和解决性能问题。
cachestat     # 分析 Linux 系统缓存统计信息的工具。它可以提供关于文件系统缓存、页缓存和目录项缓存等方面的性能统计数据。
filetop       # 用于监控文件系统I/O性能的工具 
xt4slower     # 用于检测ext4文件系统中慢速IO操作的工具
ext4dist      # 用于测量ext4文件系统中的IO操作分布情况,可帮助分析IO负载的分布情况
mdflush       # 用于跟踪并显示多磁盘阵列(MD)子系统中的刷新操作
opensnoop     # 用于实时监测系统中打开文件的过程,可以用于跟踪具体进程打开文件的操作
statsnoop     # 用于跟踪并显示系统调用的统计信息,可以帮助分析系统调用的使用情况
syncsnoop     # 用于跟踪并显示文件系统同步操作的工具
ugc           # 用于分析用户态指令执行的情况,可以显示用户态指令的使用情况和执行时间
ucalls        # 用于捕获并显示用户态程序中的系统调用信息
tcptop        # 用于监测和显示TCP连接的使用情况,例如连接数、数据传输量等
tcpfile       # 用于跟踪和显示TCP文件操作的工具。
tcpconnect    # 用于跟踪并显示TCP连接的建立操作。
tcpaccept     # 用于跟踪并显示TCP连接的接受操作。
tcpconnlat    # 用于测量TCP连接建立过程的延迟时间
tcpretrans    # 用于跟踪并显示TCP重传的情况
gethostlatency  # 用于测量主机名解析过程的延迟时间
biotop        # 用于监测和显示IO操作的使用情况。
biosnoop      # 用于跟踪并显示IO操作的详细信息。
biolatency    # 用于测量IO操作的延迟时间。
bitesize      # 用于统计和显示IO操作的大小分布情况。
hardirqs      # 用于跟踪并显示硬中断的情况。
ttysnoop      # 用于跟踪并显示终端输入输出的情况。
cpudist       # 用于测量和显示CPU使用情况的工具。
execsnoop     # 用于跟踪并显示进程执行的情况。
runlat        # 用于测量和显示进程的运行延迟时间。
offcputime    # 用于显示和分析进程的离线CPU时间。
memleak       # 用于检测和分析内存泄漏问题。
oomkill       # 用于跟踪和显示Out-of-Memory(内存不足)杀死进程的情况。
slabratetop   # 用于监测和显示slab(内核内存分配器)使用情况。
llcstat       # 用于跟踪和显示最后一级缓存(LLC)的使用情况。
profile       # 用于生成进程的性能分析报告。
capable       # 用于跟踪和显示进程权限检查的情况。

CPU性能监测

shell 复制代码
uptime	  # 展示系统平均负载和系统运行时间
top	      # 按进程展示系统资源使用情况- 之前总结过
mpstat	  # 按每个 CPU 展示 CPU 使用情况
vmstat	  # 系统整体资源使用情况
pidstat	  # 按进程展示 CPU 使用情况
perf	  # 定时采样调用栈信息、事件统计、PMC 跟踪、跟踪点、USDT probes、kprobes 以及 uprobes 等
ftrace	  # 汇报内核函数调用统计、kprobes 和 uprobes 事件跟踪

execsnoo  # 列出新进程的运行信息
exitsnoop # 列出进程运行时长和退出原因
runqlat	  # 统计 CPU 运行队列的延迟信息
runqlen	  # 统计 CPU 运行队列的长度
runqslower # 当运行队列中等待时长超过阈值时打印
cpudist	  # 统计在 CPU 上运行的时间
profile	  # 采样 CPU 运行的调用栈信息
相关推荐
2501_920047035 分钟前
Linux-搭建DNS服务器
linux·运维·服务器
007php0079 分钟前
Go Vendor 和 Go Modules:管理和扩展依赖的最佳实践
java·开发语言·docker·微服务·golang·自动化·jenkins
Childecool15 分钟前
网络编程(2)—多客户端交互
linux·服务器·网络
夏沫mds1 小时前
【基于hyperledger fabric的教育证书管理系统】
运维·go·vue·区块链·gin·fabric
YoungUpUp1 小时前
【电子设计自动化(EDA)】Altium Designer25——电子设计自动化(EDA)软件版保姆级下载安装详细图文教程(附安装包)
运维·设计模式·fpga开发·自动化·eda·电路仿真·电子设计自动化
搞不懂语言的程序员1 小时前
docker 搭建zookper集群,快照虚拟机多机模拟
运维·docker·容器
桦仔1 小时前
SQL Server 2025中解决“写写阻塞”的利器
性能优化·锁优化·数据库阻塞
大熊程序猿1 小时前
PDF转图片工具实现
linux·运维·pdf
阿巴~阿巴~1 小时前
Socket编程核心API与结构解析
运维·服务器·网络
凯子坚持 c2 小时前
Claude Code 完整手册:从入门、配置到高级自动化
运维·自动化·excel·claude code