Linux系统下的性能分析命令
在 Linux 系统下,有许多用于性能分析和调试的命令和工具,可以帮助您识别系统瓶颈、优化性能以及调查问题。本文将介绍在性能分析过程中,可能使用到的一些命令。
以下是一些常用的性能分析命令和工具汇总:
命令 | 功能简述 |
---|---|
top | 用于实时监视系统中运行的进程和系统性能指标,如CPU使用率、内存使用率等。 |
nmon | 一个性能监控工具,提供实时的系统性能数据,包括CPU、内存、磁盘、网络等信息。 |
lsof | 用于列出打开的文件和网络连接,可以用于查找资源泄漏和不正常的连接。 |
pidstat | 用于监视进程级别的CPU、内存、IO等性能数据。 |
vmstat | 用于显示系统的虚拟内存、进程、CPU活动和IO统计信息。 |
iostat | 用于监视系统磁盘和IO性能,提供关于磁盘活动的信息。 |
tcpdump | 用于抓取网络数据包,对于网络性能分析和故障排除非常有用。 |
1、top
top
命令是 Linux 系统下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况,如:CPU 使用率、内存使用率等。
1.1 语法
top [options]
常用选项:
-
-d
或--delay
: 指定刷新间隔,即 top 每隔多少秒更新一次,默认为 3 秒。 -
-n
或--iterations
: 指定刷新次数,即 top 更新数据的次数。 -
-u
或--user
: 仅显示指定用户的进程。 -
-p
或--pid
: 仅显示指定进程 ID 的信息。 -
-H
:显示进程的层次关系,即显示线程。
1.2 示例
以下是一个 top
命令的示例输出:
top - 16:30:45 up 2 days, 5:37, 2 users, load average: 0.15, 0.18, 0.20
Tasks: 186 total, 1 running, 185 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 97.9 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 16327936 total, 9359124 free, 2368572 used, 4600256 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 13755352 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND2191 alice 20 0 169168 14164 10964 S 3.0 0.1 0:07.83 gnome-terminal-2811 bob 20 0 2067296 301100 78964 S 2.0 1.8 30:02.45 firefox1 root 20 0 191064 7780 4744 S 0.0 0.0 0:06.07 systemd...
在上述示例中,每行输出信息分别为:
-
第一行:提供了系统的一般性信息。分别是系统当前时间、系统运行时间、当前登录用户数和负载平均值(
load average
,即:任务队列的平均长度,3个值分别表示1分钟、5分钟、15分钟到现在的平均值)。 -
第二行:任务(Tasks)信息。分别是总任务数,显示了正在运行(
running
)、睡眠(sleeping
)、停止(stopped
)和僵尸(``zombie)状态的进程数量。 -
第三行:CPU 统计信息。
us
表示用户空间 CPU 占有率、sy
表示内核空间 CPU 占用率、ni
表示用户进程空间改变过优先级的进程 CPU 占有率、id
表示空闲 CPU 占用率、wa
表示等待输入输出的 CPU 时间百分比、hi
表示硬件中断请求、si
表示软件中断请求。 -
第四行:内存信息。分别为物理内存总量、已使用的物理内存、空闲物理内存、内核缓冲使用量。
-
第五行:交换区信息。分别为交换区总量、空闲交换区大小、缓冲交换区大小。
-
…:进程列表。每一行表示一个进程的信息,包括进程 ID、用户、CPU 使用率、内存使用率、进程状态等。
请注意,top
命令的输出会实时更新,您可以使用交互式命令来切换排序方式、改变显示内容等。例如,按下 M
可以按内存使用率排序进程,按下 P
可以按 CPU 使用率排序进程。要退出 top,您可以按下 q
键。
2、nmon
nmon
是一个用于实时监视系统性能的命令行工具,最初由 IBM 的 Nigel Griffiths 开发。它提供了一种简洁的方式来查看系统的CPU、内存、磁盘、网络等性能指标,以及进程级别的信息。
nmon
具有交互式界面,可以显示实时的性能数据,方便管理员和开发人员进行系统性能分析。
以下是 nmon
命令的一些常见用法和示例:
-
基本使用:
使用以下命令启动
nmon
:nmon
这将启动
nmon
交互式界面,显示各种性能指标的实时数据。 -
指定刷新频率:
您可以使用
-s
参数来指定刷新间隔,单位为秒。例如,以下命令将每隔2秒刷新一次数据:nmon -s 2
-
保存数据到文件:
您可以使用
-f
参数将nmon
的输出保存到文件中,以便后续分析。例如,以下命令将数据保存到名为nmon_output.nmon
的文件中:nmon -f -c 10 -s 2 -T -m /path/to/nmon_output.nmon
在这个示例中,
-c 10
表示nmon
运行10个循环后自动退出,-T
表示在输出中包含时间戳。 -
只显示特定项目:
如果您只对特定性能指标感兴趣,可以使用
-d
参数来指定要显示的项目。例如,以下命令只显示CPU和内存相关数据:nmon -d cpu,mem
-
远程监视:
您可以通过SSH在远程系统上运行
nmon
,然后将性能数据传输到本地进行分析。例如,以下命令在远程系统上运行nmon
并将数据传输到本地:ssh user@remote_host "nmon -f -s 5 -c 10" > nmon_output.nmon
这些示例只是 nmon
的一小部分用法。nmon
还提供了许多其他选项和功能,可以根据您的需求进行调整和使用。要详细了解 nmon
的所有选项和功能,请查阅官方文档或运行 nmon
命令时使用 -h
参数查看帮助信息。
3、lsof
lsof
(“List Open Files”)是一个用于列出在 Linux 系统上被进程打开的文件和网络连接的命令。它可以帮助您查看哪些进程正在访问哪些文件,以及网络连接的相关信息。
lsof
可以用于排查资源泄漏、寻找进程占用文件等问题。
3.1 语法
以下是一些常用的 lsof
命令选项及其说明:
-
-i
: 列出网络连接。 -
-n
: 不解析主机名和端口号。 -
-c <进程名>
: 仅列出特定进程的信息。 -
-p <进程ID>
: 列出指定进程的信息。 -
-u <用户名>
: 列出属于特定用户的信息。 -
-t
: 仅显示进程ID。 -
-F <格式>
: 使用指定的格式输出。
3.2 示例
以下是一些示例,演示了如何使用 lsof
命令:
-
列出所有打开的文件和网络连接:
lsof
-
列出特定文件的打开者:
lsof /path/to/file
-
列出特定端口的网络连接:
lsof -i :<port>
-
列出某个用户打开的文件:
lsof -u <username>
-
列出特定进程的打开文件:
lsof -p <pid>
-
列出特定类型的文件(例如,TCP连接):
lsof -i tcp
-
列出所有网络连接,但不解析主机名和端口号:
lsof -ni
-
以机器可读的格式输出信息:
lsof -F json
-
列出所有正在使用某个设备的进程:
lsof /dev/sda1
请注意,lsof
命令提供了丰富的信息,包括文件描述符、文件类型、文件位置、打开方式、进程ID、用户等等。您可以根据需要使用不同的选项来过滤和查看所需的信息。使用 man lsof
命令可以查看完整的命令文档和详细说明。
4、pidstat
pidstat
是一个用于监视进程级别性能统计的命令行工具,它可以提供有关CPU使用率、内存使用率、IO活动等信息。它是 sysstat
套件的一部分,需要安装才能使用。
4.1 语法
以下是 pidstat
命令的常用选项:
-
-u
: 显示CPU使用率和统计信息。 -
-r
: 显示内存使用率和统计信息。 -
-d
: 显示磁盘IO统计信息。 -
-t
: 显示进程启动时间。 -
-p <PID>
: 指定要监视的特定进程ID。 -
-h
: 显示帮助信息。
4.2 示例
下面列举了一些示例。
-
显示进程的CPU使用率和统计信息:
pidstat -u 1
这将每秒显示一次CPU使用率和统计信息,默认显示所有进程的数据。可以通过添加
-p <PID>
选项指定特定的进程。 -
显示进程的内存使用率和统计信息:
pidstat -r 1
类似于上面的示例,这将每秒显示一次内存使用率和统计信息。
-
显示进程的磁盘IO统计信息:
pidstat -d 1
这将每秒显示一次磁盘IO统计信息,包括读写速率、读写次数等。
-
显示特定进程的CPU使用率和统计信息:
pidstat -u -p <PID> 1
这将每秒显示指定进程的CPU使用率和统计信息,其中
<PID>
是目标进程的进程ID。 -
显示进程的启动时间:
pidstat -t
这将显示所有进程的启动时间。
pidstat
可以帮助您深入了解特定进程的性能行为,从而进行性能调优、问题排查等工作。请注意,具体选项和输出格式可能会因系统版本而异,您可以通过 man pidstat
查看完整的命令手册以获取更多信息。
5、vmstat
vmstat
(Virtual Memory Statistics)是一个在 Linux 系统中常用的性能分析工具,它提供了关于系统虚拟内存、进程、CPU活动和IO的详细统计信息。通过使用 vmstat
,您可以实时监控系统的性能,并且可以快速识别出潜在的瓶颈和问题。
5.1 语法
vmstat [options] [delay [count]]
-
options
: 用于指定一些特定的输出选项。 -
delay
: 两次输出之间的时间间隔(以秒为单位)。 -
count
: 输出次数限制。
5.2 示例
vmstat 5 3
这个示例命令会每隔5秒输出一次统计数据,一共输出3次。
输出示例:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st1 0 0 244304 67420 802252 0 0 0 4 3 4 1 1 97 1 00 0 0 243968 67420 802256 0 0 0 0 1159 2292 1 1 98 0 00 0 0 243636 67420 802256 0 0 0 0 1173 2261 1 1 98 0 0
在这个示例中,输出的各个列给出了不同的统计信息,包括进程状态、内存使用、交换空间使用、IO活动、系统活动以及CPU使用率等。通过观察这些数据,您可以了解系统的性能情况并识别潜在的问题。
vmstat
输出的列含义:
-
procs
: 进程相关统计。r
: 正在运行的进程数、b
: 等待运行的进程数。 -
memory
: 内存相关统计。swpd
: 虚拟内存使用量(以KB为单位)、free
: 空闲内存(以KB为单位)、buff
: 用作缓冲的内存(以KB为单位)、cache
: 用作缓存的内存(以KB为单位)。 -
swap
: 交换空间相关统计。si
: 从磁盘读入交换区的数据量(以KB为单位)、so
: 向磁盘写入交换区的数据量(以KB为单位)。 -
io
: IO相关统计。bi
: 每秒从块设备读入的块数量(如硬盘)(以块为单位)、bo
: 每秒写入块设备的块数量(以块为单位)。 -
system
: 系统相关统计。in
: 每秒的中断数、cs
: 每秒上下文切换数。 -
cpu
: CPU使用情况统计。%us
: 用户空间CPU使用率、%sy
: 系统CPU使用率、%id
: 空闲CPU百分比、%wa
: 等待IO的CPU百分比、%st
: 用于虚拟化的CPU时间百分比。
6、iostat
iostat
是一个在 Linux 系统中常用的命令,用于监视系统的磁盘和IO性能。它能够提供关于磁盘活动、IO延迟和吞吐量等信息,对于识别磁盘性能瓶颈和调优非常有帮助。
请注意,iostat
命令需要安装 sysstat
包才能使用。在大多数Linux发行版中,您可以使用包管理器来安装 sysstat
包。
6.1 语法
iostat [options] [interval] [count]
选项解释:
-
-c
:显示CPU统计信息。 -
-d
:显示磁盘统计信息。 -
-k
:以千字节为单位显示数据。 -
-m
:以兆字节为单位显示数据。 -
-x
:显示扩展统计信息,包括更多的磁盘和分区信息。
6.2 示例
iostat
命令的输出包含了各个磁盘和分区的统计数据,以及系统的平均负载、CPU利用率、上下文切换等信息。以下是示例输出的一部分:
Linux 5.4.0-81-generic (hostname) 08/13/2023 _x86_64_ (8 CPU)avg-cpu: %user %nice %system %iowait %steal %idle7.13 0.00 1.45 0.46 0.00 90.96Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.14 18.60 19.84 123759 132016
sdb 0.06 0.28 0.00 1863 0
在这个示例中,avg-cpu
部分显示了 CPU 利用率的统计信息,Device
部分显示了每个磁盘设备的统计数据,包括传输速率和总的读写字节数。您可以根据输出来评估系统的磁盘性能和负载情况。
-
显示平均IO统计信息,每秒更新一次,共更新5次:
iostat
-
显示详细的磁盘IO统计信息,每秒更新一次,共更新3次:
iostat -d 1 3
-
以千字节为单位显示数据,显示CPU和磁盘统计信息,每秒更新一次,共更新4次:
iostat -k -c -d 1 4
-
显示扩展的磁盘IO统计信息,每秒更新一次,共更新5次:
iostat -x 1 5
7、tcpdump
tcpdump
是一个在 Unix 系统上常用的网络抓包工具,用于捕获和分析网络数据包。它能够监听网络接口,捕获经过该接口的数据包,并以可读的格式显示数据包的内容。
tcpdump
支持多种过滤选项,以便只捕获感兴趣的数据包。
以下是一些常用的 tcpdump
命令选项以及示例说明:
-
基本使用:
tcpdump
这将在默认网络接口上捕获所有的数据包。但是,通常情况下,您会希望使用其他选项来限制抓包的范围。
-
指定网络接口:
tcpdump -i eth0
通过
-i
选项指定要捕获的网络接口,这里是eth0
。 -
指定数据包数量:
tcpdump -c 10
使用
-c
选项可以指定捕获的数据包数量,这里捕获前 10 个数据包。 -
捕获特定主机的数据包:
tcpdump host 192.168.1.100
使用
host
关键字可以捕获特定主机的所有数据包。 -
捕获特定端口的数据包:
tcpdump port 80
使用
port
关键字可以捕获特定端口的数据包,这里是端口 80(HTTP)的数据包。 -
组合多个过滤条件:
tcpdump host 192.168.1.100 and port 22
可以使用逻辑运算符
and
来组合多个过滤条件,这里捕获主机 192.168.1.100 上的端口 22(SSH)数据包。 -
保存抓包结果到文件:
tcpdump -w capture.pcap
使用
-w
选项可以将抓包结果保存到文件中,文件格式为 pcap。 -
读取保存的抓包文件:
tcpdump -r capture.pcap
使用
-r
选项可以读取保存的抓包文件并显示其内容。 -
显示详细数据包信息:
tcpdump -v
使用
-v
选项可以显示详细的数据包信息。 -
显示更详细的数据包信息:
tcpdump -vv
使用 -vv
选项可以显示更详细的数据包信息,包括解析的协议头。
这只是 tcpdump
的一些基本用法示例,该工具还支持许多其他选项和过滤条件,以满足各种网络抓包和分析的需求。请注意,由于抓包涉及到访问网络数据,通常需要以 root 或者具有适当权限的用户身份运行 tcpdump
。
相关文章:

Linux系统下的性能分析命令
在 Linux 系统下,有许多用于性能分析和调试的命令和工具,可以帮助您识别系统瓶颈、优化性能以及调查问题。本文将介绍在性能分析过程中,可能使用到的一些命令。 以下是一些常用的性能分析命令和工具汇总: 命令功能简述top用于实…...

第十三课:QtCmd 命令行终端应用程序开发
功能描述:开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果 QtCmd 不是因为它是 Qt 的组件,而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序,故取名为 QtCmd。 上述演示…...

Jmeter进阶使用:BeanShell实现接口前置和后置操作
一、背景 我们使用Jmeter做压力测试或者接口测试时,除了最简单的直接对接口发起请求,很多时候需要对接口进行一些前置操作:比如提前生成测试数据,以及一些后置操作:比如提取接口响应内容中的某个字段的值。举个最常用…...

【知识分享】高防服务器的防御机制
【知识分享】高防服务器的防御机制 易受到攻击的网站选择接入高防服务更安全,大家对于这个都清楚!但是对于高防服务如何实现防御来保障安全的,又了解多少呢?今天壹基比小源(贰伍壹叁壹叁壹贰玖捌)就来说说高防服务实现防御的常规…...

内网穿透-外远程连接中的RabbitMQ服务
文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…...

驱动DAY4 字符设备驱动分步注册和ioctl函数点亮LED灯
头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…...

Python爬虫——scrapy_当当网图书管道封装
创建爬虫项目 srcapy startproject scrapy_dangdang进入到spider文件里创建爬虫文件(这里爬取的是青春文学,仙侠玄幻分类) srcapy genspider dang http://category.dangdang.com/cp01.01.07.00.00.00.html获取图片、名字和价格 # 所有的se…...

Linux下如何修改CPU 电源工作模式
最近处理一起历史遗留问题,感觉很爽。 现象: 背景:设备采用ARM,即rk3568处理器,采用Linux系统;主要用于视觉后端处理 现象:当软件运行一段时间,大概1个小时(也不是很固定…...

Effective C++学习笔记(8)
目录 条款49:了解new-handler的行为条款50:了解new和delete的合理替换时机条款51:编写new和delete时需固守常规条款52:写了placement new也要写placement delete条款53:不要轻忽编译器的警告条款54:让自己熟…...

学校如何公布录取情况表?这个不用技术的方法,小白老师都能轻松制作
作为一名教师,我深切了解学生和家长们对录取情况的关注和重视。为了满足他们的需求,我们学校一直致力于改进公布录取情况的方式和效果。在本篇文章中,我将向您介绍我们学校独特的录取查询系统,并分享我们选择这种方式的原因。 我…...

Chart GPT免费可用地址共享资源
GPT4.0: https://gpt4e.ninvfeng.xyz github:https://github.com/ninvfeng/chatgpt4 WeUseAi:https://chatb.weuseai.pro AI.LS:https://n7.gpt03.xyz ChatX (iOS/macOS应用):https://itunes.apple.com/app/id6446304087 ch…...

设计模式十八:中介者模式(Mediator Pattern)
在中介者模式中,多个对象之间不再直接相互通信,而是通过一个中介者对象进行通信。这可以减少对象之间的依赖关系,使系统更加模块化。中介者模式适用于当对象之间的通信逻辑变得复杂,导致代码难以维护和理解时。 中介者模式使用场…...

神经网络基础-神经网络补充概念-12-向量化逻辑回归的梯度输出
代码实现 import numpy as npdef sigmoid(z):return 1 / (1 np.exp(-z))def compute_loss(X, y, theta):m len(y)h sigmoid(X.dot(theta))loss (-1/m) * np.sum(y * np.log(h) (1 - y) * np.log(1 - h))return lossdef compute_gradient(X, y, theta):m len(y)h sigmoi…...

2023-08-16力扣每日一题
链接: 2682. 找出转圈游戏输家 题意: 环形1到n,从1开始,每次移动 第i次*k ,当移动到出现过的序号时停下, 求没移动到的数字 解: 简单模拟题,我也以为有数学做法,可…...

耗资170亿美元?三星电子在得克萨斯州建设新的半导体工厂
据报道,三星电子在得克萨斯州泰勒市建设的新的半导体工厂预计将于2024年下半年投入运营。这座工厂将成为三星电子在美国的第二座芯片代工厂,与位于得克萨斯州奥斯汀市的第一座工厂相距不远。 此次投资将耗资约170亿美元,显示了三星电子在半导…...

黑马项目一阶段面试58题 Web14题(一)
一、什么是AJAX 异步的JavaScript和XML。用来做前端和后端的异步请求的技术。 异步请求:只更新部分前端界面的请求,做到局部更新。 比如注册,提示用户名已存在而整个页面没有动 比如百度图片搜索美女,进度条越变越短ÿ…...

多线程与高并发--------线程池
线程池 一、什么是线程池 在开发中,为了提升效率的操作,我们需要将一些业务采用多线程的方式去执行。 比如有一个比较大的任务,可以将任务分成几块,分别交给几个线程去执行,最终做一个汇总就可以了。 比如做业务操…...

深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想
大家好,我是微学AI,今天给大家介绍一下深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想,文本将介绍AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色,并结合了GPT-4接口来实现各个角色的功能,设置中央控制器,公司运作过程会生成…...

深入剖析:如何通过API优化云计算架构?快来看!
在当今数字化时代,云计算已经成为企业实现创新、提高效率和降低成本的核心策略之一。而在构建和管理云计算架构时,API(应用程序编程接口)的作用变得愈发重要。本文将深入探讨如何通过API优化云计算架构,实现更高效、灵…...

基于STM32设计的中药分装系统
一、设计需求 基于STM32设计的中药分装系统 【1】项目背景 中药文化是我国文化瑰宝之一,它具有疗效好、副作用小的优点,而且相对于西药,全天然的中药还具有标本兼治的特点,不仅可以用来治病,更可以对患者身体进行调理,所以格外受到当今一直追求生活质量的人们的追捧&quo…...

消息队列学习笔记
消息队列基础 适合消息队列解决的问题 异步处理:处理完关键步骤后直接返回结果,后续放入队列慢慢处理流量控制: 使用消息队列隔离网关和后端服务,以达到流量控制和保护后端服务的目的。能根据下游的处理能力自动调节流量&#x…...

贝锐蒲公英:助力企业打造稳定高效的智能安防监控网络
随着技术的快速发展和物联网的普及,企业面临着许多安全威胁和风险,如盗窃、入侵、信息泄露等,企业需要建立安防监控系统来保护其资产、员工和业务运营的安全。 然而,企业在搭建安防监控系统的过程中,可能会面临一些难…...

SASS 学习笔记
SASS 学习笔记 总共会写两个练手项目,成品在 https://goldenaarcher.com/scss-study 可以看到,代码在 https://github.com/GoldenaArcher/scss-study。 什么是 SASS SASS 是 CSS 预处理,它提供了变量(虽然现在 CSS 也提供了&am…...

Web菜鸟教程 - Springboot接入认证授权模块
网络安全的重要性不言而喻,如今早已不是以前随便弄个http请求就能爬到数据的时代,而作为一个架构师,网络安全必须在产品开发之初就考虑好。因为在产品开发的后期,一方面是客户增多,压力变大,可供利用的时间…...

【深入理解ES6】块级作用域绑定
1. var声明及变量提升机制 提升(Hoisting)机制:通过关键字var声明的变量,都会被当成在当前作用域顶部生命的变量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此处…...

使用fake为数据库生成随机数据
参考https://cloud.tencent.com/developer/article/1663417 增加了自己的代码,使得只需要构建内容映射字典,然后根据字典就可以直接将数据插入到数据库中 from faker import Faker import pandas as pd from urllib import parse # from pymongo import…...

树结构转List
使用LinkedList效率更高 1、单个顶级节点 public static List<CmsStudentOutline> getTreeList(CmsStudentOutline root) {List<CmsStudentOutline> list new ArrayList<>();Queue<CmsStudentOutline> queue new LinkedList<>();if (root nu…...

Android复习(Android基础-四大组件)——Broadcast
1. 广播分类 广播的发送方式:标准广播、有序广播、粘性广播广播的类型:系统广播、本地广播 1.1 标准广播 完全异步,无序的广播发出后,所有的广播接收器几乎都会在同一时间收到消息。(异步)但是消息无法截…...

Ubuntu下mysql8开启远程连接
环境 mysql8ubuntu22.04 更改配置文件 vim /etc/mysql/mysql.conf.d/mysqld.conf找到 bind-address 127.0.0.1 mysqlx-bind-address 127.0.0.1 把这两行注释掉,保存退出即可 修改mysql配置 登录mysql创建一个远程连接账户,名字任意,密码任意,用户名…...

java对象和json类型转换
fastjson参考 参考:http://doc.yaojieyun.com/www.runoob.com/w3cnote/java-json-instro.html 参考: http://doc.yaojieyun.com/www.runoob.com/w3cnote/fastjson-intro.html 序列化:JSON.toJSONString(person)将Java 对象转换为 JSON 字符串…...