云计算【第一阶段(24)】Linux文件系统与日志分析

一、文件与存储系统的inode与block

1.1、硬盘存储

  • 最小存储单位:扇区(sector)
    • 每个扇区大小:512字节

1.2、文件存取

  • 最小存取单位:块(block)
  • 连续八个扇区组成:块(block)
    • 每个块大小:4K
  • 文件数据:实际数据与元信息
  • 操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。
  • 文件数据包括实际数据元信息(类似文件属性),文件数据存储在“块"中

1.3、inode

  • 定义:存储文件元信息的区域
  • 包含:创建者、创建日期、文件大小、文件权限等的区域
  • 特点:
    • 一个文件必须占用一个inode
    • 格式化文件系统时确定inode的总数
    • 至少占用一个block
    • 不包含文件名,文件名是存放在目录当中的。

元信息包括

  • 文件的字节数
  • 文件拥有者的userid
  • 文件的groupid
  • 文件的读,写,执行权限
  • 文件的时间戳

1.4、文件名与inode

  • 文件名存放位置:目录
  • 译名为"索引节点",也叫i节点
  • inode号码:操作系统识别文件的唯一标识,一个文件必须占用一个inode,并且至少占用一个block。
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。
  • 访问文件流程:
  1. 根据文件名查找inode号码
  2. 通过inode号码获取inode信息
  3. 检查用户权限
  4. 指向数据block并读取数据

1.4.1、硬盘分区后的结构

文件夹的indoe号中包括当前文件夹中文件名字文件的indoe号
先确定文件夹后再通过indoe找到block,如果一个block放不下数据,则可以占用多个block.
例如,有一个10kb的文件需要存储,
则会占用3个block(默认一个是4k),虽然最后一个block不能占满,
但也不能再放入其他文件的数据。
这3个block 有可能是连续的,也有可能是分散的,所以会有磁盘碎片。

1.4.2、访问文件的简单流程

1.5、Linux系统特点

  • 一切皆文件
  • 目录也是一种文件

1.6、查看文件名对应的inode 号码有两种方式

  • ls -i  文件名
  • stat  文件名

很显然stat看的更详细一些

1.7、linux系统文件三个主要的时间属性

  • ctime(change time)

最后一次改变文件或目录 (属性)的时间

  • atime(access time)

最后一次访问文件或目录的时间

  • mtime(modify time)

最后一次修改文件或目录(内容)的时间

1.8、inode 占用

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。

一个是数据区,存放文件数据,

另一个是inode区,存放inode所包含的信息。

每个inode的大小,一般是128字节或256字节。通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行"df   -i"命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。

inode节点的总数,在格式化时就给定了,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘12.8%。

由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。可直接删除inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响inode 号码;
3.打开一个文件以后,系统就以inode 号码来识别这个文件,不再考虑文件名。
4.文件数据被修改保存后,会生成一个新的inode 号码。

 1.8.1、实验1

先创建大量空文件

for ((i=1; i<=8680; i++)); do  touch /test/file$i  
done

 或者

touch {1..8680}.txt 

i占用满

 但是磁盘空间还有

当再创建其他的的时候

二、硬链接与软链接

为文件或目录建立链接文件
链接文件分类
硬链接

ln  源文件目标位置

 软链接

ln - s  源文件或目录   链接文件或目标位置

 详细内容看精讲第八段内容

云计算【第一阶段(12)】Linux常用命令精讲【二】_云计算怎么把目录改名-CSDN博客

三、恢复误删除的文件

3.1、恢复误删除的文件ext3

EXT类型文件恢复
extundelete 是一一个开源的Linux 数据恢复工具,支持ext3、 ext4文件系统。 ( ext4只能在centos6版本恢复,但是目前企业用centos6版本极少,略过)

3.1.1、实验1

安装位置:切勿将extundelete安装到你误删的文件所在硬盘上,以避免数据被覆盖的风险

需要挂载一个ext3的盘

1.安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++ 
2.编译安装extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

3.解压
tar jxvf extundelete-0.2.4.tar.bz2

4.切换目录

cd extundelete-0.2.4/

5.指定configure的配置路径 --prefix
./configure --prefix=/usr/local/extundelete && make && make install 或
./configure && make && make install

6.如果配置了指定的上面路径需要软链接
ln -s /usr/local/extundelete/bin/* /usr/bin/

模拟删除并执行恢复操作

cd /opt/yczj

切换到挂载点磁盘

添加数据
echo a>a
echo a>b
echo a>c

extundelete /dev/sdb2 --inode  2  #查看文件系统/dev/sdb2下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录。

rm -rf a b
extundelete /dev/sdb2  --inode 2

可以发现被删除了


cd ~
umount /test

extundelete /dev/sdc1 --restore-all #恢复/dev/sdc1 文件系统下的所有内容

#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件



ls RECOVERED FILES/

3.2、恢复误删除的文件XFS

xfsdump用于创建xfs文件系统的备份,而xfsrestore则用于将这些备份数据恢复到原始状态或指定位置,搭配使用。

xfsdump命令格式

xfsdump    -f    备份存放位置           要备份的路径或设备文件

xfsdump备份级别 (默认为0)

  • 0:完全备份
  • 1-9:增量备份

xfsdump常用选项:-f,-L,-M,-s

-f: 指定备份文件目录
-L: 指定标签session label
-M: 指定设备标签media labe
-s:备份单个文件,-s后面不能直接跟路径

xfsrestore命令格式

xfsrestore   恢复文件的位置      存放恢复后文件的位置

xfsdump使用限制

  • 只能备份已挂载的文件系统
  • 必须使用root的权限才能操作
  • 只能备份xfs文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同uuid的文件系统

实验

首先创建分区,格式化xfs,挂载

在挂载的地方创建一个文件

先查看rpm -qa | grep xfsdump如果未安装yum install -y xfsdump

备份

xfsdump -f      /opt/dump_sdb    /dev/sdb1       

可以加   -L dump_sdb -M sdb1

模拟删除,在挂载目录删除

恢复

xfsrestore  -f   /opt/dump_sdb1  /opt/ycnh

四、分析日志文件

4.1、日志的功能

用于记录系统,程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障

4.2、日志文件的分类

  • 内核及系统日志

由系统服务rsyslog统一进行管理,日志格式基本相似

  • 用户日志

记录系统用户登录及退出系统的相关信息

  • 程序日志

由各种应用程序独立管理的日志文件,记录格式不统一。


4.3、日志保存位置

默认位于: /var/log/目录下
主要日志文件介绍

  • 内核及公共消息日志 /var/log/messages
  • 计划任务日志 /var/log/cron
  • 系统引导日志 /var/log/dmesg
  • 邮件系统日志 /var/log/maillog
  • 用户登录日志 /var/log/lastlog  /var/log/secure  /var/log/wtmp  /var/run/btmp

4.3.1、常见的一些日志文件介绍:

/var/log/messages: 记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
/var/log/cron: 记录crond计划任务产生的事件信息。
/var/log/dmesg: 记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog: 记录进入或发出系统的电子邮件活动。
/var/log/secure: 记录用户认证相关的安全事件信息。
/var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
/var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式

4.4、rsyslog

内核及系统日志由系统服务rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/1og/下。
软件包:rsyslog-7.4.7-16.el7.x86_64
主要程序:/sbin/rsyslogd
配置文件:/etc/rsyslog.conf

4.5、日志消息的级别

日志级别级号消息级别说明
EMERG0紧急会导致主机系统不可用的情况
ALERT1警告必须马上采取措施解决的问题
CRIT2严重比较严重的情况
ERR3错误运行出现错误
WARNING4提醒可能会影响系统功能的事件
NOTICE5注意不会影响系统但值得注意的信息
INFO6信息一般信息,程序或系统调试信息等
DEBUG7调试详细的调试信息,用于开发或故障排除

4.6、日志记录的一般格式

4.7、用户日志分析

保存了用户登录,退出系统等相关信息

  • /var/log/lastlog: 最近的用户登录事件
  • /var/log/wtmp: 用户登录,注销及系统开,关机事件
  • /var/run/utmp: 当前登录的每个用户的详细信息
  • /var/log/secure 与用户验证相关的安全性事件

分析工具
users,who,w, last, lastb

4.7.1、分析工具详细分析命令

users:命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。


who:命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用户名、终端类型、登录日期及远程主机

w:命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的输出内容要丰富一些

last:命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵

lastb:命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息

4.8、程序日志分析

由相应的应用程序独立进行管理
web服务:/var/log/httpd/
access_log,error_log
代理服务:/var/log/squid/
access.log,cache.log
FTP服务:/var/log/xferlog


分析工具
文本查看,grep过滤检索, webmin管理套件中查看
awk, sed等文本过滤,格式化编辑工具
webalizer  Awstats等专用日志分析工具

4.9、日志管理策略

  • 及时作好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限

日志中可能会包含各类敏感信息,如账户,口令等

  • 集中管理日志

将服务器的日志文件发到统一的日志文件服务器,便于日志信息的统一收集, 整理和分析
杜绝日志信息的意外丢失, 恶意篡改或删除。

4.10、日志管理工具

4.10.1、Logrotate

(轮转,日志切割)       centos7  自带的一个

概念

Logrotate是一个在Linux系统中广泛使用的日志文件管理工具,主要用于日志文件的切割、压缩、删除和创建新日志文件等操作,以节省磁盘空间并方便日志管理

作用

1.如果没有日志轮转,日文件会越来越大
2.将丢弃系统中最旧的日志文件,以节省空间
3.logrotate本身不是系统守护进程,它是通过计划任务crond每天执行计划任务

Logrotate的常用参数

  • -v, --verbose:显示详细的转储过程信息。
  • -f, --force:强制进行日志转储,忽略配置文件中设置的时间间隔或大小限制。
  • -d, --debug:测试配置文件是否有错误,但不实际执行转储操作。
  • -m, --mail=command:压缩日志后,通过指定的命令发送日志到指定邮箱。
  • -s, --state=statefile:使用指定的状态文件记录转储的日志信息。

Logrotate的定时执行

  • Logrotate通常通过cron服务定时执行。在Linux系统中,/etc/cron.daily/logrotate 脚本负责每天执行一次Logrotate。
  • 用户也可以根据需要手动执行Logrotate,例如使用logrotate -vf /etc/logrotate.conf 命令强制立即执行一次转储操作。


配置

- 计划任务:/etc/cron.daily/logrotate
- 程序文件:/usr/sbin/logrotate
- 配置文件: /etc/logrotate.conf
- 日志文件:/var/lib/logrotate/logrotate.status

也可以在这里配置系统特定日志

以下是一个简单的Logrotate配置示例,用于切割和压缩/var/log/myapp.log日志文件:

/var/log/myapp.log { 
daily # 每天切割一次 
rotate 7 # 保留7个备份 
compress # 压缩备份文件 
missingok # 如果日志文件丢失,不报错继续滚动下一个日志 
notifempty # 如果日志文件为空,不进行轮转 
create 640 myuser mygroup # 切割后创建新文件,并设置权限和所有者 
}

 更多独立配置文件详解

配置参数说明
compress使用gzip压缩转储后的日志文件
nocompress不对转储后的日志文件进行压缩
copytruncate对于还在被打开中的日志文件,先备份当前日志并截断原文件
nocopytruncate备份日志文件但不截断原文件
create mode owner group使用指定的权限、所有者和所属组创建新的日志文件
nocreate不创建新的日志文件(仅保留备份)
delaycompress与compress一起使用时,延迟到下一次转储时才压缩当前转储的日志文件
nodelaycompress覆盖delaycompress选项,转储时立即压缩日志文件
errors address将转储时的错误信息发送到指定的Email地址
ifempty即使是空文件也进行转储(默认行为)
notifempty如果文件为空,则不进行转储
mail address将转储的日志文件发送到指定的E-mail地址
nomail转储时不发送日志文件到任何E-mail地址
olddir directory将转储后的日志文件放入指定的目录(需与当前日志文件在同一文件系统)
noolddir转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript在转储之前需要执行的命令(prerotate与endscript需单独成行)
postrotate/endscript在转储之后需要执行的命令(postrotate与endscript需单独成行)
daily指定转储周期为每天
weekly指定转储周期为每周
monthly指定转储周期为每月
rotate count指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份
tabooext [+] listlogrotate不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig.rpmsavev, 和~
size size当日志文件到达指定的大小时才转储(单位可以是bytes、KB或MB)
sharedscripts对每个匹配的日志文件条目,prerotatepostrotate脚本只运行一次,无论匹配了多少个日志文件
nosharedscripts对每个转储的日志文件,都执行一次prerotatepostrotate脚本(默认行为)
missingok如果日志不存在,不提示错误,继续处理下一个日志文件
nomissingok如果日志不存在,提示错误(默认行为)

4.10.2、webalizer日志分析工具

webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web​​​​​​​服务器日志分析。

Webalizer是用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。

webalizer支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式(Combined Logfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。webalizer支持命令行配置以及配置文件。可以支持多种语言,也可以自己进行本地化工作。webalizer支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。

软件:httpd 作为webalizer的页面服务器

 

4.10.3、journalctl命令

journalctl工具是CentOS-7才有的工具
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是 ,可以只用journalctl一个命令,查看所有日志(内核日志和 应用日志)。日志的配置文件/etc/systemd/journald.conf 


ps -ef | grep journald


journalctl -b    //查看本次启动的日志

journalctl -k     //查看内核日志

journalctl -xe  经常用来查看最近报错的日志
-e:从结尾开始看
-x:提供问题相关的网址

其他

日志工具可研究:Webmin、 Webalizer、Awstats等专用日志分析工具

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

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

相关文章

Java面试八股之如何提高MySQL的insert性能

如何提高MySQL的insert性能 提高MySQL的INSERT性能可以通过多种策略实现&#xff0c;以下是一些常见的优化技巧&#xff1a; 批量插入&#xff1a; 而不是逐条插入&#xff0c;可以使用单个INSERT语句插入多行数据。例如&#xff1a; INSERT INTO table_name (col1, col2) V…

Docker:一、安装与卸载、配置阿里云加速器(Ubuntu)

目录 &#x1f341;安装docker&#x1f332;1、环境准备&#x1f332;2、安装docker Engine&#x1f9ca;1、卸载旧版、任何冲突的包&#x1f9ca;2、使用存储库安装&#x1f9ca;3、安装 Docker 包。&#x1f9ca;4、查询是否安装成功&#x1f9ca;5、运行hello-world镜像&…

柯桥小语种学校成人生活口语学习|西班牙语中H为什么不发音…

01 H en el alfabeto espaol 西语字母表中的h 字母H是唯一一个在标准西班牙语中不再代表任何音素的字母。尽管在它单独出现时被叫做HACHE&#xff0c;但在大多数单词拼写中&#xff0c;它只是一个没有声音对应关系的字母&#xff0c;因此RAE称其为“无声的H”&#xff08;hac…

机器学习——无监督学习(k-means算法)

1、K-Means聚类算法 K表示超参数个数&#xff0c;如分成几个类别&#xff0c;K值就取多少。若无需求&#xff0c;可使用网格搜索找到最佳的K。 步骤&#xff1a; 1、随机设置K个特征空间内的点作为初始聚类中心&#xff1b; 2、对于其他每个点计算到K个中心的距离&#xff0c;…

荞面打造的甜蜜魔法:甜甜圈

食家巷荞面甜甜圈是一款具有特色的美食。它以荞面为主要原料&#xff0c;相较于普通面粉&#xff0c;荞面具有更高的营养价值&#xff0c;富含膳食纤维、维生素和矿物质。荞面甜甜圈的口感可能会更加扎实和有嚼劲&#xff0c;同时带着荞面特有的谷物香气。在制作过程中&#xf…

SpringBoot+OSS实现文件上传

创建spring boot项目 pom依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency><dependency><groupId>javax.xml.bind</groupI…

SpringBoot项目练习

文章目录 SpringBootVue后台管理系统所需软件下载、安装、版本查询Vue搭建一个简单的Vue项目 Spring项目1项目架构 SpringBootVue后台管理系统 学习视频&#xff1a; https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…

Pytorch(笔记7损失函数类型)

前言 损失函数&#xff08;Loss Function&#xff09;&#xff1a;是定义在单个样本上的&#xff0c;是指一个样本的误差&#xff0c;度量模型一次预测的好坏。 代价函数&#xff08;Cost Function&#xff09;成本函数经验风险&#xff1a;是定义在整个训练集上的&#xff0c…

集成学习(三)GBDT 梯度提升树

前面学习了&#xff1a;集成学习&#xff08;二&#xff09;Boosting-CSDN博客 梯度提升树&#xff1a;GBDT-Gradient Boosting Decision Tree 一、介绍 作为当代众多经典算法的基础&#xff0c;GBDT的求解过程可谓十分精妙&#xff0c;它不仅开创性地舍弃了使用原始标签进行…

virtualbox窗口和win10窗口的切换

1、问题&#xff1a; 从windows切换到虚拟机可以用快捷键 ALTTAB&#xff0c;但是从虚拟机到windows使用 ALTTAB 无法成功切换 2、解决方法&#xff1a; 按下图操作 按上面步骤设置之后&#xff0c;每次要从虚拟机窗口切换到windows窗口 只需要先按 CtrlAlt 跳出虚拟机窗口&…

【已解决】“import ... =“ 只能在 TypeScript 文件中使用

现象 在使用 import 语法的时候&#xff0c;代码报红&#xff0c;提示&#xff1a;“import ... “ 只能在 TypeScript 文件中使用 原因 代码被 VSCode 解析成 TypeScript 语法 解决方案&#xff1a; 关闭 JavaScript 的验证启用即可。 mac 快捷方式&#xff1a;comman s…

微机原理与单片机 知识体系梳理

单片机笔记分享 我个人感觉单片机要记的东西很多&#xff0c;也很琐碎&#xff0c;特别是一些位、寄存器以及相关作用等&#xff0c;非常难以记忆。因此复习时将知识点整理在了一起做成思维导图&#xff0c;希望对大家有所帮助。内容不是很多&#xff0c;可能有些没覆盖全&…

VMware CentOS7 Linux 网络配置

本文主要描述VMware虚拟机的网络配置。 如上所示&#xff0c;在CentOS Linux虚拟机中设置网络连接使用桥接模式&#xff0c;该模式对接主机物理网络&#xff0c;直接由主机的物理网络的DHCP服务器动态分配IP地址&#xff0c;或者在CentOS Linux的操作系统的网络配置中设置静态的…

HACCP体系认证:守护食品安全的黄金标准

在食品生产过程中&#xff0c;食品安全始终是重中之重。为了确保食品的安全性和质量&#xff0c;越来越多的企业开始采用HACCP&#xff08;危害分析关键控制点&#xff09;体系认证。这个体系不仅能帮助企业预防食品安全问题&#xff0c;还能显著提升产品质量和市场竞争力。 HA…

android新闻app(二)

新闻详细页&#xff1a; 历史浏览记录SQList&#xff1a; 分类&#xff1a; 历史浏览记录主体UI和详细&#xff1a; 侧边栏&#xff1a; 参考&#xff1a;浩宇开发

如何给gitlab其他访问者创建账号并增加权限

嗨&#xff0c;今天创建了项目之后&#xff0c;我想把项目链接发送给其他人&#xff0c;让他下载这个项目&#xff0c;结果发现对方打开显示登录的界面&#xff0c;没错&#xff0c;他要想使用这个git下载项目&#xff0c;首先他的有一个git账号 接下来我找有权限的相关人员给他…

认识并理解webSocket

今天逛牛客&#xff0c;看到有大佬分享说前端面试的时候遇到了关于webSocket的问题&#xff0c;一看自己都没见过这个知识点&#xff0c;赶紧学习一下&#xff0c;在此记录&#xff01; WebSocket 是一种网络通信协议&#xff0c;提供了全双工通信渠道&#xff0c;即客户端和服…

策略为王股票软件源代码-----如何修改为自己软件61----资讯菜单修改-----举例---------调用同花顺网页------

http://stock.sina.com.cn 将原来的新浪行情,修改为同花顺, 搜索 stock.sina.com.cn... StkUI\View\InfoView.cpp(58):char

论文阅读--Simple Baselines for Image Restoration

这篇文章是 2022 ECCV 的一篇文章&#xff0c;是旷视科技的一篇文章&#xff0c;针对图像恢复任务各种网络结构进行了梳理&#xff0c;最后总结出一种非常简单却高效的网络结构&#xff0c;这个网络结构甚至不需要非线性激活函数。 文章一开始就提到&#xff0c;虽然在图像复原…

VRPTW(MATLAB):常春藤算法(IVY)求解带时间窗的车辆路径问题VRPTW,MATLAB代码

详细介绍 VRPTW&#xff08;MATLAB&#xff09;&#xff1a;常春藤算法&#xff08;Ivy algorithm&#xff0c;IVY&#xff09;求解带时间窗的车辆路径问题VRPTW&#xff08;提供MATLAB代码&#xff09;-CSDN博客 ********************************求解结果******************…