5分钟学会使用Linux的 grep、find、ls、wc 命令

news2024/9/20 14:20:52

Linux基础命令和工具

  • 一、前导:概述
    • 1.1、监控
    • 1.2、测试
    • 1.3、优化
  • 二、grep 搜索字符
  • 三、find 查找文件
  • 四、ls 显示文件
  • 五、wc 命令
  • 六、总结

一、前导:概述

本系列主要讲解Linux运行时命令,包括网络、磁盘、内存、CPU相关参数等,主要是为了分享怎么通过常见的 Linux 命令去排查相关问题。比如:

  1. 发现机器的CPU负荷比较高,那么怎么查到是哪个进程CPU占用率比较高?
  2. 磁盘IO的写入很频繁,怎么查到是哪个进程或线程对磁盘IO频繁的操作?
  3. 等等。

本系列就是分享诸如这类问题的排查技巧。注意,本系列的核心方向不是去讲解Linux的命令查找、显示当前目录等(比如lscat等)基础命令操作。本系列的重点分享内容包括:

  1. Linux基础命令和工具。
  2. CPU性能监控
  3. 内存性能监控。
  4. 文件IO性能监控
  5. 网络IO性能监控

强烈推荐:Linux 大牛,Netflix 高级性能架构师 Brendan Gregg的博客http://www.brendangregg.com。《性能之巅》书籍就是他出版的,主要分为:CPU、内存、磁盘、网络四大块。

下面对应的命令大部分都不是专为某一个模块设计的。所以先把基本的命令都掌握,再去细分每个命令的侧重点。

1.1、监控

常用的命令:

工具描述
free显示系统内存使用情况,包括使用的内存、空闲的内存、缓存和交换区等信息。
ping用于测试网络连接的工具,通过向目标主机发送 ICMP 回显请求并等待回复来测量网络延迟。
vmstatVirtual Memory Statistics,虚拟内存统计工具,提供系统内存、进程、CPU活动等信息。
iostat用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息。
dstat显示了cpu使用情况,磁盘io情况,网络发包情况和换页情况,输出是彩色的,可读性较强,相对于vmstatiostat的输入更加详细且较为直观。
pidstat监控所有或指定进程的资源占用情况,如CPU、内存、设备IO、任务切换、线程等。
top动态显示系统性能信息,包括负载、进程状态、CPU 使用率、内存使用及交换分区的信息。
iotopLINUX进程实时监控工具,类似于 top 命令的工具,用于实时监控磁盘 I/O 使用情况及进程的信息。
htop交互式进程查看器,提供用户友好的界面,支持按键操作以管理进程。一个文本模式的应用程序(在控制台或者X终端中),需要ncurses
mpstat报告 CPU 的统计信息,显示每个 CPU 的使用情况,有助于分析 CPU 性能。
netstat显示与 IP、TCP、UDP 和 ICMP 协议相关的网络连接和统计信息。一般用于检验本机各端口的网络连接情况。
ps显示当前进程的状态和相关信息,类似于 Windows 的任务管理器。
strace跟踪程序执行过程中产生的系统调用及接收到的信号,用于诊断程序问题。
ltrace跟踪进程调用的库函数,帮助分析程序的库函数使用情况。
uptime显示系统当前运行时间和负载信息,为用户提供系统负载状态的一个快照。能够打印系统总共运行了多长时间和系统的平均负载,uptime命令最后输出的三个数字的含义分别是1分钟,5分钟,15分钟内系统的平均负荷。
lsof列出当前系统中打开的文件及相关进程,帮助识别文件使用情况。
perfLinux kernel 自带的性能分析工具,帮助识别程序性能瓶颈,通过分析 CPU 使用情况及热点函数。是Linux kernel自带的系统性能优化工具。优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature,用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。
tcpdump网络抓包工具,捕获和分析网络数据包,常用于网络故障排查和监控。
sar收集和报告系统活动信息,涵盖 CPU、内存、I/O、网络等性能指标。
blktrace跟踪块设备 I/O 操作,分析系统的磁盘 I/O 性能及行为。

下面这张图是 Brendan Gregg 提供的一个性能优化命令集。可以看到有很多命令可以监控系统的性能,比如文件系统相关、调用栈相关、网络相关等的命令。
在这里插入图片描述

1.2、测试

在这里插入图片描述
sysbench是一个模块化、跨平台、多线程基准测试工具,可用于以下性能测试:

  1. CPU性能。

  2. 磁盘IO性能。

  3. 调度程序性能。

  4. 内存分配及传输速度。

  5. POSIX线程性能。

  6. 数据库性能(OLTP基准测试)。

Linux CPU使用率主要是从以下几个维度进行统计:

指标描述
%usr 普通进程在用户模式下执行的时间
%sys进程在内核模式下的执行时间
%nice被提高优先级的进程在用户模式下的执行时间
%idle空闲时间
%iowait等待I/O完成的时间
%irp处理硬中断请求花费的时间
%soft处理软中断请求花费的时间
%steal是衡量虚拟机CPU的指标,是指分配给本虚拟机的时间片被同一宿主机别的虚拟机占用,一般%steal值较高时,说明宿主机的资源使用已达到瓶颈。

一般情况下,CPU大部分的时间片都是消耗在用户态和内核态上。

sysuser间的比例是相互影响的,%sys比例高意味着被测服务频繁的进行用户态和系统态之间的切换,会带来一定的CPU开销,这样分配处理业务的时间片就会较少,造成系统性能的下降。对于IO密集型系统,无论是网络IO还是磁盘IO,一般都会产生大量的中断,从而导致%sys相对升高,其中磁盘IO密集型系统,对磁盘的读写需要占用大量的CPU,会导致%iowait的值一定比例的升高,所以当出现%iowait较高时,需排查是否存在大量的不合理的日志操作,或者频繁的数据载入等情况;

1.3、优化

Linux Performance Tuning Tools的示意图,展示了Linux系统中不同的工具及其对应的组件。
在这里插入图片描述

  • 操作系统: 应用程序,系统库,系统调用接口,设备驱动程序。

  • env: 环境变量。

  • 硬件: CPU,内存总线,DRAM。

  • Linux内核: VFS,文件系统,卷管理器,块设备接口

  • I/O总线: I/O桥接。

  • 互联: CPU互联,网络控制器。

  • 应用配置: tune2fs,应用配置

  • Linux内核: stap, kpatch, ionice, ip route, sysctl

  • 互联: nice、taskset、/dev/cpuset、ulimit、numactl、ethtool、tc、ip

  • 存储: hdparm, blockdev, swapon

  • 网络: ethtool, etc

二、grep 搜索字符

grep 命令用于在文件中执行关键词搜索,并显示匹配的效果。

基本语法:

grep [选项] 模式 [文件...]

部分常用选项:

参数作用
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择,仅列出没有关键词的行。v 是 invert 的缩写。
-r递归搜索文件目录
-C n打印匹配行的前后n行
-E使用扩展正则表达式。
-l仅显示包含匹配行的文件名。
-h不显示文件名。
-w仅匹配整个单词。
-o仅显示匹配的模式。
-q静默模式,不输出任何内容。
-A n显示匹配行及其后面的 n 行。
-B n显示匹配行及其前面的 n 行。
-f 文件名从文件中读取模式。

基本正则表达式:

  • .:匹配任意单个字符。
  • *:匹配前一个字符零次或多次。
  • []:匹配括号内的任意一个字符。
  • [^]:匹配括号内以外的任意一个字符。
  • \: 转义字符,用于匹配特殊字符。
  • ^:匹配行首。
  • $:匹配行尾。
  • |:或运算符。
  • ():分组运算符。

扩展正则表达式:

  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • {}:匹配前一个字符指定次数。

示例:

  1. 在指定文件查找,查找login关键字。

    grep  login  ImUser.cpp
    
  2. 多个文件中搜索。

    grep  login  ImUser.cpp MsgConn.cpp
    
  3. 在多个文件搜索的时候,可以使用通配符。在以 cpp结尾的文件中,搜索包含login 的行

    grep  login  *.cpp
    
  4. 递归搜索目录下所有文件, 搜索 msg_server目录下所有文件,打印出包含 login的行。

    grep login -r msg_server/
    
  5. 反向查找,查找文件中,不包含 CImUser 的行。

    grep -v CImUser ImUser.cpp
    
  6. 找出文件中包含 login的行,并打印出行号。

    grep  -n login  ImUser.cpp
    
  7. 找出文件中包含 login的行,打印出行号,并显示前后3行。

    grep -C 3 -n login  ImUser.cpp
    
  8. 找出文件中包含 login的行,打印出行号,并显示前后3行,并忽略大小写。

    grep -C 3 -i -n login  ImUser.cpp
    

注意事项:

  • grep 命令通常用于处理文本文件,但也支持从标准输入读取数据。
  • grep 命令的效率取决于模式的复杂度和文件的大小。
  • grep 命令可以与其他命令结合使用,例如 管道重定向

其他相关命令:

  • egrep:等价于 grep -E,使用扩展正则表达式。
  • fgrep:等价于 grep -F,使用固定字符串匹配。
  • ag:更快更强大的搜索工具。

三、find 查找文件

find 命令用于在文件系统中搜索文件和目录,并对找到的项目执行操作。通过文件名查找文件的所在位置,文件名查找支持模糊匹配。

基本语法:

find [起始目录] [选项] [表达式]

参数:

  • 起始目录 指定搜索的起始目录。如果省略,则默认从当前目录开始搜索。
  • 选项 用于控制搜索行为和输出结果。
  • 表达式 用于描述要搜索的目标文件或目录。

主要选项:

选项作用
-name 模式根据文件名匹配模式搜索。支持通配符 *?
-iname 模式根据文件名匹配模式搜索,忽略大小写。
-type 类型根据文件类型搜索。例如 f 表示文件,d 表示目录,l 表示符号链接。
-size +n搜索大小大于 n 个块的文件。
-size -n搜索大小小于 n 个块的文件。
-size n搜索大小等于 n 个块的文件。
-mtime +n搜索修改时间距离现在超过 n 天的文件。
-mtime -n搜索修改时间距离现在少于 n 天的文件。
-mtime n搜索修改时间距离现在正好 n 天的文件。
-atime根据访问时间进行搜索。用法与 -mtime 相同。
-ctime根据文件创建时间进行搜索。用法与 -mtime 相同。
-user 用户名搜索属于特定用户的文件。
-group 组名搜索属于特定组的文件。
-perm 模式根据权限模式搜索文件。例如 -perm 644 搜索权限为 -rw-r--r-- 的文件。
-exec 命令 {} \;对找到的文件执行指定的命令。
-ok 命令 {} \;对找到的文件执行指定的命令,并在执行前提示用户确认。
-print打印找到的文件的路径。
-print0打印找到的文件的路径,并使用空字符作为分隔符。
-depth先搜索子目录再搜索当前目录。
-maxdepth n设置最大搜索深度。
-mindepth n设置最小搜索深度。
!取反运算符,用于排除某些文件或目录。
-o或运算符,用于组合多个搜索条件。
-a与运算符,用于组合多个搜索条件。
()括号用于分组搜索条件。

示例:

  1. 查找当前目录下所有以 .txt 结尾的文件:

    find . -name "*.txt"
    
  2. 查找 /home 目录下所有大于 10M 的文件:

    find /home -size +10M
    
  3. 查找 /tmp 目录下修改时间距离现在超过 7 天的文件:

    find /tmp -mtime +7
    
  4. 查找当前目录下所有权限为 755 的文件:

    find . -perm 755
    
  5. 查找 /var/log 目录下所有以 .log 结尾的文件,并删除它们:

    find /var/log -name "*.log" -delete
    
  6. 查找当前目录下所有目录,并打印它们的路径:

    find . -type d -print
    
  7. 查找当前目录下所有以 .txt 结尾的文件,并把它们复制到 /backup 目录:

    find . -name "*.txt" -exec cp {} /backup \;
    
  8. 查找当前目录下所有以 .txt 结尾的文件,并提示用户是否删除它们:

    find . -name "*.txt" -ok rm {} \;
    

实用示例:

find . -name FILE_NAME
find . -iname FILE_NAME 忽略文件名称大小写

##查找/etc/下名称中带有passwd的文件,查找一层
find /etc -maxdepth 1 -name passwd     

find /mnt -size 20K       ##查找/mnt文件大小近似20k的文件
find /mnt -size +20K      ##查找/mnt文件大小大于20k的文件
find /mnt -size -20K      ##查找/mnt文件大小小于20k的文件

##查找/etc/下名称中带有.conf的文件,且只查找第二层
find /etc -maxdepth 2 -mindepth 2 -name .conf 
 
find /mnt -type d         ##按type查找/mnt中目录
find /mnt -type f         ##按type查找/mnt中文件
find /mnt -cmin 10        ##查找/mnt中十分钟左右修改的
find /mnt -cmin +10       ##查找/mnt中十分钟以上修改的
find /mnt -cmin -10       ##查找/mnt中十分钟以内修改的
find /mnt -ctime 10       ##查找/mnt中十天左右修改的
find /mnt -ctime +10      ##查找/mnt中十天以上修改的
find /mnt -ctime -10      ##查找/mnt中十天以内修改的

注意事项:

  • find 命令是一个功能强大的工具,需要谨慎使用,以免误删重要文件。
  • 可以使用 man find 命令查看 find 命令的详细帮助信息。

四、ls 显示文件

ls 命令用于列出目录的内容。它可以显示文件和目录的名称、大小、修改时间、权限等信息。

基本语法:

ls [选项] [文件或目录...]
选项描述类别
-a显示所有文件,包括隐藏文件(以 . 开头的文件)。列出文件信息
-l以长格式列出文件信息,包括文件权限、文件大小、文件所有者、修改时间等。列出文件信息
-h以易于阅读的格式显示文件大小,例如 1K、2M、3G 等。列出文件信息
-t按修改时间排序。列出文件信息
-r反转排序顺序。列出文件信息
-S按文件大小排序。列出文件信息
-i显示文件 inode 号。列出文件信息
-d显示目录本身的信息,而不是目录内的文件信息。列出文件信息
-R递归列出所有子目录。列出文件信息
-F在文件名后添加标记,表示文件类型。例如 / 表示目录,* 表示可执行文件,@ 表示符号链接等。文件显示格式
-b将不可打印字符显示为反斜杠转义字符。文件显示格式
-c使用数字字符编码显示文件。文件显示格式
-G显示颜色,用于区分不同类型的文件。文件显示格式
-1单行显示文件名,每个文件名占一行。其他
-C多列显示文件名,根据终端宽度自动调整列数。其他
-m用逗号分隔显示文件名。其他
-n使用数字用户 ID 和组 ID 显示文件信息。其他
-p在目录名后添加 /其他
-q将不可打印字符显示为 ?其他
-s显示文件大小(以块为单位)。其他

示例:

  1. 列出当前目录下所有文件:

    ls
    
  2. 以长格式列出当前目录下所有文件:

    ls -l
    
  3. 列出当前目录下所有文件,包括隐藏文件:

    ls -a
    
  4. 列出当前目录下所有文件,按修改时间排序:

    ls -lt
    
  5. 递归列出 /home/user 目录下所有文件:

    ls -R /home/user
    
  6. 列出当前目录下所有文件,并用颜色区分文件类型:

    ls -G
    

实用示例:

# 按最新修改的时间排序,新修改的在前面显示。
ls -lt  
# 按最新修改的时间排序,新修改的在前面显示,并显示子目录的文件信息
ls -ltR 
# 以单位显示文件大小
ls -lh 

注意事项:

  • ls 命令通常用于查看当前目录下的文件和目录,也可以指定其他目录进行查看。
  • ls 命令可以使用多种选项组合,以实现不同的显示效果。
  • ls 命令的输出结果可能会根据终端设置和系统环境有所不同。
  • 除了上述常用选项外,ls 命令还有其他一些较少使用的选项,可以通过 man ls 命令查看详细帮助信息。

五、wc 命令

wc 命令用于统计文件中的行数、字数和字节数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

基本语法:

wc [选项] [文件...]

主要选项:

  • -l或--lines 统计行数。
  • -w或--words 统计字数。
  • -c或--bytes或--chars 统计字节数。
  • -m 统计字符数。
  • -L 统计最长行的长度。
  • -W 统计单词数。

示例:

  1. 统计文件 test.txt 的行数、字数和字节数:

    wc test.txt
    
  2. 只统计文件 test.txt 的行数:

    wc -l test.txt
    
  3. 统计多个文件 test.txtdata.log 的行数:

    wc -l test.txt data.log
    
  4. 统计文件 test.txt 的最长行的长度:

    wc -L test.txt
    

注意事项:

  • wc 命令默认统计所有三个值(行数、字数和字节数)。
  • wc 命令可以使用多个选项组合,以实现不同的统计功能。
  • wc 命令的输出结果可能会根据文件内容和系统环境有所不同。

其他:

  • wc 命令可以用于统计标准输入的内容,例如:

    cat test.txt | wc -l
    
  • wc 命令可以与其他命令结合使用,例如:

    # 统计文件 `test.txt` 中包含 "error" 字符串的行数。
    grep "error" test.txt | wc -l
    

六、总结

本文介绍了 grep、find、ls 和 wc 四个常用的 Linux 命令,它们在文件搜索、查找、列出和统计等方面发挥着重要的作用。希望这篇文章能够帮助你更好地理解和运用这些命令,提升 Linux 文件管理的效率。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

伏图芯片应力仿真功能介绍

随着电子产品向小型化、规模化、集成化方向发展,机械应力对器件性能的影响日益显著。产品在晶圆加工、芯片封装、元器件装配等过程中均会受到机械应力的作用,可能会直接影响芯片的电性能和可靠性。 仿真技术在芯片产品研发设计和故障排查阶段扮演着至关…

Python | Leetcode Python题解之第372题超级次方

题目: 题解: class Solution:def superPow(self, a: int, b: List[int]) -> int:MOD 1337ans 1for e in b:ans pow(ans, 10, MOD) * pow(a, e, MOD) % MODreturn ans

NIOS Eclipse突然报错:No rule to make target `/system.h

NIOS Eclipse突然报错:No rule to make target /system.h 今天打开NIOS Eclipse编译昨天完好的工程,发现报错。我就纳闷了,代码没有修改,编译结果报错 控制台中problems选线中显示: No rule to make target /system…

嵌入式开发神器——vim配置

本期主题: 讲解vim的一些配置,让大家也可以用上自己定制化的vim 目录 0. 目前个人所用的vim配置截图1. vim的插件1. 怎么找插件2. 如何安装插件3. 安装好了如何使用插件 2. 个人配置的vim链接 0. 目前个人所用的vim配置截图 1. vim的插件 1. 怎么找插件…

【Qt】输入类控件QSlider

目录 输入类控件QSlider 例子:调整窗口大小 例子:通过自定义快捷键调整滑动条位置 输入类控件QSlider 使用QSlider表示一个滑动条 QDail与QSlider都继承于QAbstractSlider,所以其用法基本相似。 核心属性 属性说明 value 持有的数值 mi…

【hot100篇-python刷题记录】【反转链表】

R6-链表篇 思路:想到使用2个指针来做 pre在head前,now就是head 初始:nowhead,predummy 每次需要进行的操作: tmpnow.next now.next-->pre prenow nowtmp class Solution:def reverseList(self, head: Optional[ListNode]) -> …

280Hz显示器哪家强

280Hz显示器哪家强?今天就给大家带来6大品牌和型号的280Hz显示器一起对比对比! 1.280Hz显示器 - HKC G27H3显示器 HKC G27H3是一款高性价比的电竞显示器,以下是它的一些特点: - **高刷新率与快速响应**: - 拥有280H…

【Arduino】试验带识别模块的吃鸡助手

在前面的试验中,我们试验了声音触发点击,方面多指操作的辅助功能, 【Arduino】自制声控点击器(吼叫吃鸡助手)-CSDN博客 如果声控模块换成图像识别模块,就是一个自动识别并shot的功能了, 通过…

使用GDIView工具排查GDI对象泄漏案例的若干细节总结

目录 1、查看任务管理器,发现程序中有明显的GDI对象泄漏 2、使用GDIView工具查看发生泄漏的是哪一种GDI对象 3、尝试找到复现问题的方法,缩小排查范围,逐步地找到GDI对象的泄漏点 4、本案例中的相关细节点的思考与总结(有价值…

httpClient与openfeign

目录 介绍 maven坐标 发送请求步骤 发送get请求 ​发送post请求 介绍 是一个客户端编程的工具包&#xff0c;也就是在java程序中&#xff0c;可以构造http请求并且发送请求 maven坐标 httpclient <dependency> <groupId>org.apache.httpcomponents</g…

【Kotlin设计模式】建造者模式在Android中的应用

前言 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;一步一步地构建一个复杂对象的不同部分&#xff0c;而不是直接创建该对象的实例。建造者模式的核心思想是将对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的…

如何使用ssm实现基于ssm的疫情物质管理系统

TOC ssm170基于ssm的疫情物质管理系统jsp 第一章 绪论 1.1 研究背景 时代总是在进步的&#xff0c;自从进入了信息时代&#xff0c;面对大量的不同种类的数据&#xff0c;仅仅依靠有限的人力去处理&#xff0c;显然是不行的&#xff0c;毕竟人工处理大量的数据会耗费较长时…

git提交项目,报403无权限

这个在公司内网git上提交项目时&#xff0c;使用的是刚分配到的账号和密码。创建完组和项目后一切准备完毕了&#xff0c;但是在提交时缺出了乌龙&#xff0c;报403&#xff0c;上面一堆英文&#xff0c;大致的意思是说我没有上传本项目的权限&#xff0c;报错信息如下图所示&a…

5.1二叉树——基本概念梳理

本篇博客梳理二叉树相关的基本概念 一、树的概念与结构 1&#xff0e;树是递归定义的 树根N棵子树&#xff0c;每棵子树也可按照相同方式拆分 注意&#xff1a;子树之间不能有交集&#xff0c;否则变成图&#xff08;是另一种数据结构&#xff09; 2&#xff0e;树的相关概…

Linux进程信号——信号的概念与产生

文章目录 信号及其产生与发送什么是Linux信号信号的产生终端按键系统调用软件条件硬件条件 核心转储存储临时信号 信号及其产生与发送 我们从生活中理解信号&#xff0c;例如各种指示灯&#xff0c;红绿灯之类的&#xff0c;我们能认识红绿灯是因为每一种不同的情况在我们大脑…

Apache Doris 跨集群数据同步 CCR 全面介绍

CCR 概述 CCR&#xff08;Cross Cluster Replication&#xff09;也就是跨集群数据复制&#xff0c;能够在库/表级别将源集群的数据变更同步到目标集群&#xff0c;可用于提升在线服务的数据可用性、隔离在离线负载、建设两地三中心等。 CCR 通常被用于容灾备份、读写分离、集…

末代皇帝Intel核显黑苹果,NUC10的性能到底有多强

末代皇帝Intel核显黑苹果&#xff0c;NUC10的性能到底有多强 一、可以核显的Intel iGPU有哪些 核显是一个伟大的产物&#xff0c;它可以在我们没有多余的钱去买多余的显卡的时候排上用场&#xff0c;特别是在mini小主机的市场上&#xff0c;核显就显得尤为重要的&#xff0c;…

图形化的Agent工具

1 图形化 Agent 工具 1.1 核心组件 机器人 Bot&#xff1a;一个 AI 应用&#xff0c;或称为 Agent知识库&#xff1a;上传个人数据&#xff0c;机器人可根据其内容进行回复工作流&#xff1a;将大问题拆解成多个小问题&#xff0c;通过路径实现&#xff0c;路径上的每个节点完…

tomcat实战演练

一.tomcat介绍 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c; Tomcat 具有处理 HTML 页面的功能&#xff0c;它还是一个 Servlet 和 JSP容器。Tomc…

Python优化算法13——飞蛾扑火优化算法(MFO)

科研里面优化算法都用的多&#xff0c;尤其是各种动物园里面的智能仿生优化算法&#xff0c;但是目前都是MATLAB的代码多&#xff0c;python几乎没有什么包&#xff0c;这次把优化算法系列的代码都从底层手写开始。 需要看以前的优化算法文章可以参考&#xff1a;Python优化算…