文件系统与日志分析

一,文件系统

(一)inode  和block概述

1,文件数据包括元信息与实际数据
2,文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

3,block (块)
连续的八个扇区组成一个 block

是文件存取的最小单位

4,inode (索引节点)
中文译名为“索引节点”,也叫i节点

用于存储文件元信息

5,注意:一个文件必须占用一个inode,但至少占用一个block

(二)inode包含文件的元信息

文件的字节数
文件拥有者的UserID
文件的Group ID
文件的读、写、执行权限
文件的时间戳

用stat命令可以查看某个文件的inode信息
示例: stat aa.txt

(三)Linux系统文件三个主要的时间属性

1,    ctime(change time)

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

2,   atime(access time)

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

3,    mtime(modify time)

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

最好用mtime 假如你看了一眼日志,日志的atime 就会变化 所以根据atime去找具体时间段的日志容易混淆,但是日志不会人为更改内容,mtime时间准确

(四)inode的内容

1,目录文件的结构

目录也是一种文件

目录文件的结构

2,每个inode都有一个号码,操作系统用inode号码来识别不同的文件
3,Linux系统内部不使用文件名,而使用inode号码来识
别文件
4,对于用户,文件名只是inode号码便于识别的别称

(五)inode的号码

1,用户通过文件名打开文件时,系统内部的过程


1,系统找到这个文件名对应的inode号码
2,通过inode号码,获取inode信息,

3,根据inode信息,找到文件数据所在的block,读出数据

2,查看inode号码的方法

ls-i命令:查看文件名对应的inode号码

ls  -i  aa.txt

stat命令:查看文件inode  信息中的inode号码

stat   aa.txt

3,inode号有限,他的多少和磁盘大小有关

inode 号在同一块设备(磁盘,逻辑卷等)上是唯一的,不同设备有可能有一样

inode号有限,他的多少和磁盘大小有关

4,例题

问:我磁盘空间还剩余很多但是无法继续建立文件?

答:因为inode 号用完了,

       解决方法:
       如果是lvm 扩容

        如果是普通分区,删除没有用的空文件

(六)inode  的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象


1,当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
2,移动或重命名文件时,只改变文件名,不影响inode号码

3,打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

删除文件后空间没变化
[root@localhost opt]#lsof |grep delete
..............................................
80 /boot/bigfile (deleted)[root@localhost opt]#echo " " > /boot/bigfile

lsof 打开系统中已经被打开的文件

(七)在linux 使用文件过程

根据文件夹的文件名和inode 号的关系,找到对应的inode 表(属主 属组)再根据inode表中的指针找到磁盘上的真实数据

二,文件恢复extundelete(只能恢复ext3)

(一)实验环境

在编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel,

这两个包在系统安装光盘的/Package 目录下就有,使用 rpm 或 yum 命令将其安装。

e2fsprogs-devel 安装依赖于 libcom_err-devel 包

[root@localhost ~]#yum -y install e2fsprogs-devel e2fsprogs-libs
#安装依赖软件
[root@localhost ~]# tar -jxvf extundelete-0.2.4.tar.bz2 -C /opt
#解压软件
[root@localhost ~]# cd /opt/extundelete-0.2.4
#切换到目录下
[root@localhost extundelete-0.2.4]# ./configure  
#编译安装
[root@localhost extundelete-0.2.4]#make
[root@localhost extundelete-0.2.4]#make install
[root@localhost extundelete-0.2.4]#cd /usr/local/bin/
[root@localhost bin]#ls
extundelete  you-get#验证恢复,目前使用版本只对ext3 有效,分区略
[root@localhost ~]# mkfs.ext3 /dev/sdb1
[root@localhost ~]# mkdir /test/ 
[root@localhost ~]# mount /dev/sdb1 /test/ 
[root@localhost ~]# cd /test/
[root@localhost test]# echo a>a 
[root@localhost test]# echo a>b 
[root@localhost test]# echo a>c 
[root@localhost test]# echo a>d

(二)模拟删除并恢复

可以使用extundelete /dev/sdb1 --inode 2

查看文件系统/dev/sdb1 下存在哪些文件,

具体的使用情况。其中--inode 2 代表从 i 节点为 2 的文件开始查看,一般文件系统格式化挂

载之后,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。

在恢复前需要先解挂载

[root@localhost test]# rm -rf a b
#模拟删除
[root@localhost test]# ls c d lost+foun
[root@localhost test]# cd 
[root@localhost ~]# umount /test/
#解挂载
[root@localhost ~]#extundelete /dev/sdb1 --inode 2
#                  命令          查看的分区   从2节点开始
#查看该分区下的存在哪些文件[root@localhost ~]# extundelete /dev/sdb1 --restore-all
#                     命令      需要恢复的分区设备    恢复选项,全都要
#使用恢复

执行完恢复的命令后,在当前目录下会出现一个/RECOVERED_FILES/目录,里面保

存了已经恢复的文件

[root@localhost ~]# ls
anaconda-ks.cfg extundelete-0.2.4 extundelete-0.2.4.tar.bz2 RECOVERED_FILES 
[root@localhost ~]# cd RECOVERED_FILES/
[root@localhost RECOVERED_FILES]# ls
a b ext3

三,xfs类型备份和恢复

CentOS 7 系统默认采用 xfs 类型的文件。针对 xfs 文件系统目前也没有比较成熟的文件恢复工具,所以建议提前做好数 据备份以避免数据丢失

(一)实验环境

xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。

若系统中未安装 xfsdump与xfsrestore工具,可

以通过yum install -y xfsdump命令安装。

xfsdump 按照inode 顺序备份一个 xfs 文件系统。xfsdump 的备份级别有两种:

  • 0 表示完全备份

  • 1-9 表示增量 备份

  • xfsdump 的备份级别默认为 0

xfsdump 的命令格式为:

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

常用的备份参数包括以下几种:

  • -f:指定备份文件目录

  • -L:指定标签 session label

  • -M:指定设备标签 media label

  • -s:备份单个文件,-s 后面不能直接跟路径

使用 xfsdump 时,需要注意以下的几个限制:

  • 不支持没有挂载的文件系统备份,所以只能备份已挂载的;

  • 必须使用 root 的权限才能操作;

  • 只能备份 XFS 文件系统;

  • 备份下来的数据只能让 xfsrestore 解析;

  • 不能备份两个具有相同 UUID 的文件系统(可使用blkid查看)。

(二)具体过程

##########前期准备
[root@localhost opt]#mkfs.xfs -f /dev/sdb1
#-f强制格式化
[root@localhost ~]# fdisk /dev/sdb
#分区略
[root@localhost data]#partprobe /dev/sdb
#刷新分区
[root@localhost ~]# mkfs.xfs /dev/sdb1
#格式化
[root@localhost ~]# mkdir /date 
[root@localhost ~]# mount /dev/sdb1 /date/
#挂载
[root@localhost ~]# cd /date 
[root@localhost date]# cp /etc/passwd ./ 
#将passwd文件拷入
[root@localhost date]# mkdir test 
[root@localhost date]# touch test/a############备份
[root@localhost data]#rpm -qa |grep xfsdump
#查看是否已安装
xfsdump-3.1.4-1.el7.x86_64
[root@localhost data]#yum install xfsdump -y
#未安装可以使用yum安装[root@localhost ~]# xfsdump -f /opt/dump_sdb2        /dev/sdb2           [-L dump_sdb1 -M sdb1]
#                    命令   指定备份目录路径和文件名      分区                 打上标记 现在不打后面也要输入
#使用 xfsdump 命令备份整个分区  并打上标记[root@localhost ~]#xfsdump -f /opt/dump_sdb2 /dev/sdb2
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control============================= dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)-> dump_sdb2   (文件标签)please enter label for media in drive 0 (timeout in 300 sec)-> sdb2(设备标签)
media label entered: "sdb2"

模拟数据丢失后恢复

[root@localhost data]#cd /data/
[root@localhost data]#rm -rf /*
[root@localhost data]#ls#恢复
[root@localhost opt]#xfsrestore -f /opt/dump_sdb1 /data/
# 使用 bak文件 将数据恢复到 /data 下
[root@localhost opt]#ls /data/
passwd  test[root@localhost opt]#xfsdump -l 1 -f /backup/dump_sdb1_level_1 /sdb1 -L dump_sdb1_level_1 -M sdb1
#设定级别

四,日志

/var/log

(一)日志功能

用于记录系统、程序运行中发生的各种事件

通过阅读日志,有助于诊断和解决系统故障

(二)常见的一些日志文件:

1,系统日志

/var/log/messages :系统中大部分的信息

/var/log/secure:系统安全日志,文本格式,应周期性分析

2,用户日志

/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看

/var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看

 /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看

/var/log/lastlog    最近的用户登录事件

3,其余的一些日志

/var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况

/var/log/boot.log 系统服务启动的相关信息,文本格式

/var/log/anaconda : anaconda的日志操作系统安装时安装的软件信息

/var/log/cron       计划任务日志

/var/log/maillog     邮件系统日志

(三)日志消息的级别

在 Linux 内核中,根据日志消息的重要程度不同,将其分为不同 的优先级别(数字等级越小,优先级越高,消息越重要)

0 EMERG(紧急):会导致主机系统不可用的情况。

1 ALERT(警告):必须马上采取措施解决的问题。

2 CRIT(严重):比较严重的情况。

3 ERR(错误):运行出现错误。

4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。

5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。

6 INFO(信息):一般信息。

7 DEBUG(调试):程序或系统调试信息等

(四)日志记录的一般格式

日志文件的格式包含以下 4 列:

  • 事件产生的时间。

  • 产生事件的服务器的主机名。

  • 产生事件的服务名或程序名。

  • 事件的具体信息。

(五)内核和公共日志

1,日志的配置文件 位置在 /etc/rsyslog.conf

[root@localhost ~]#vim /etc/rsyslog.conf
#查看rsyslog.conf 配置文件
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#表示所有info等级以上的所有等级的信息都写到对应的日志文件里
mail.none
#表示某事件的信息不写到日志文件里(这里比如是邮件)

2,内核和公共消息日志存储位置

内核及大多数系统消息被记录到公共日志文件/var/log/messages 中

而其他一些程序消息被记录到各自独立的日志文件中,此外日志消息还能够记录到特定的存储设备中,或者直接发送给指定用户。

对于 rsyslog 服务统一管理的大部分日志文件,使用的日志记录格式基本上是相同的。

以公共日志/var/log/messages 文件的记录格式为例,其中每一行表示一条日志消息,每一条消息均包括以下四个字段。

  • 时间标签:消息发出的日期和时间。

  • 主机名:生成消息的计算机的名称。

  • 子系统名称:发出消息的应用程序的名称。

  • 消息:消息的具体内容。

(六)查询当前登录的用户情况

1,users

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

[root@localhost log]#users
root

2,who

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可

以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用

户名、终端类型、登录日期及远程主机

[root@localhost log]#who
root     pts/0        2021-09-20 20:12 (192.168.91.1)
root     pts/3        2021-09-20 13:09 (192.168.91.1)
zhangsan :0           2021-09-20 20:12 (:0

3,w

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

[root@localhost log]#w20:16:08 up  7:16,  3 users,  load average: 0.07, 0.06, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.91.1     20:12    4:00   0.06s  0.02s bash
root     pts/3    192.168.91.1     13:09    0.00s  0.96s  0.02s w
zhangsan :0       :0               20:12   ?xdm?   1:39   0.17s /usr/libexec/gnome-session-binary -

(七)查询用户登录的历史记录

1,last

last 命令用于查询成功登录到系统的用户记录,

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

[root@localhost log]#last
zhangsan :0           :0               Mon Sep 20 20:12   still logged in   
root     pts/0        192.168.91.1     Mon Sep 20 20:12   still logged in   
root     pts/0        192.168.91.1     Mon Sep 20 19:48 - 20:10  (00:22)    
root     pts/3        192.168.91.1     Mon Sep 20 13:09   still logged in   
root     pts/2        192.168.91.1     Tue Sep 14 17:42 - 15:09 (5+21:27)  

2    lastb 

lastb 命令用于查询登录失败的用户记录,

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

[root@localhost log]#lastb
btmp begins Mon Sep 20 14:33:01 2021

 

(八)日志管理策略

  • 及时作好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限(日志中可能会包含各类敏感信息,如账号、口令等)
  • 集中管理日志
  1. 将服务器的日志文件发到统一的日志文件服务器
  2. 便于日志信息的统一收集、整理和分析
  3. 杜绝日志信息的意外丢失、恶意篡改或删除

五,日志服务管理

(一)rsyslog 系统日志服务

rsyslog 系统日志服务软件      帮助管理日志

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。

(二)rsyslog 特性

  • 多线程

  • UDP, TCP, SSL, TLS, RELP

  • MySQL, PGSQL, Oracle实现日志存储

  • 强大的过滤器,可实现过滤记录日志信息中任意部分

  • 自定义输出格式 可以日志

  • 适用于企业级

(三)ELK 日志收集

ELK:由Elasticsearch, Logstash, Kibana三个软件组成

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene

  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能

  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用

  • Kibana 可以提供的日志分析友好的 Web 界面

  • kafka消息队列

(四)rsyslog

1,查看rsyslog   的配置文件

 2,实验模拟通过 rsyslog 软件将sshd程序的日志 独立出来

sshd 软件的 日志 是放在 /var/log/secure 日志中,很多其他软件 放在一起和这个软件比较重要,所以我们要把 sshd 软件的日志单独存放。

2.1  自定义一个日志配置文件

2.2  看sshd的配置文件

软件名为openssh-server 

rpm -qc openssh-server 

2.3    希望他的日志单独存放 

          改ssh 自己的配置文件

2.4  重启配置文件

2.5 ,开另一台机器,先关防火墙     

ssh 连接过来

2.6   看 我们ssh   的日志文件  /data/sshd.log

3,作用
 能看到谁在暴力破解你的密码

(五)网络日志(远程日志功能)

1,实验目的:把日志汇总到一台总的日志服务器上

2,实验步骤:

开虚拟机2   虚拟机3   将2,3的防火墙都关闭

3,打开虚拟机2  日志的配置文件

4,这边用tcp  或者udp 都可以     

我们将这两行解除注释 

5,重新启动rsyslog

6,  查看开启的端口

 7,将虚拟机3重复以上操作

8,dd 复制日志路径,p粘贴  将日志路径改为要发送的   日志服务器

 此处加@@192.168.217.105   指tcp

                                                                     @192.168.217.105   指udp

 9,重新启动rsyslog

 10,测试   我们这边手写一个日志   logger " this  test from 192.168.217.77"

11,查看最新日志消息

12,我们再去  日志汇总机  查看日志消息,可以看到也有该日志

(六) 日志管理工具 journactl

CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

1,服务程序报错处理方式

第一种

1,我们这边模拟服务故障,会提醒我们去到  systemctl status httpd.service  查看

2, systemctl status httpd.service屏幕不够大,显示不全   

标准输出重定向

3, systemctl status httpd.service

告诉我们 第42行错误   应该是  isten 错了

4, vim +42  直接进到第42行改

 

第二种

journactl    -xe     可以查看实时日志  以及日志的报错信息

2,     journactl    使用方法

journactl  -u  程序名              只想看一个程序的内容

journalctl -xe --no-pager        可以查看日志详细信息

journactl  -S”开始时间”   -U”结束时间”            想查看一个时间段的日志输入

3,如果想查看几点几分到几点几分的日志

在内存中查找

#查看指定时间的日志

journalctl --since="2017-10-30 18:10:30"
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since "2017-01-10" --until "2017-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"
 

在日志文件中查找

(七)logrotate——日志转储

使用logrotate命令。logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行

首先,我们在/var/log/httpd的目录下看到两个文件,这是httpd服务的日志信息
 

 如果我们现在把access_log文件移动成一个新的文件,加载后又会生成新的文件

 

 这是因为在httpd的配置文件中规定了

 

 我们查看一下logrotate的配置文件

 下面是有关的详细信息

配置参数说明
compress通过gzip压缩转储以后的日志
nocompress不压缩
copytruncate用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate备份日志文件但是不截断
create mode ownergroup转储文件,使用指定的权限,所有者,所属组创建新的日志文件
nocreate不建立新的日志文件
delaycompress和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress覆盖 delaycompress 选项,转储同时压缩
errors address专储时的错误信息发送到指定的Email地址
ifempty即使是空文件也转储,此为默认选项
notifempty如果是空文件的话,不转储
mail address把转储的日志文件发送到指定的E-mail 地址
nomail转储时不发送日志文件
olddir directory转储后的日志文件放入指定目录,必须和当前日志文件在同一个文件系统
noolddir转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript在转储以前需要执行的命令,这两个关键字必须单独成行
postrotate/endscript在转储以后需要执行的命令,这两个关键字必须单独成行
daily指定转储周期为每天
weekly指定转储周期为每周
monthly指定转储周期为每月
rotate count指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份
tabooext [+] list让logrotate*不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig,.rpmsave, v, 和~
size size当日志文件到达指定的大小时才转储bytes(缺省)及KB或MB
sharedscripts默认,对每个转储日志运行prerotate和postrotate脚本,日志文件的绝对路径作为第一个参数传递给脚本。 这意味着单个脚本可以针对与多个文件匹配的日志文件条目多次运行(例如/ var / log / news /.example)。 如果指定此项sharedscripts,则无论有多少个日志*与通配符模式匹配,脚本都只会运行一次
nosharedscripts针对每一个转储的日志文件,都执行一次prerotate和 postrotate脚本,此为默认值
missingok如果日志不存在,不提示错误,继续处理下一个
nomissingok如果日志不存在,提示错误,此为默认值

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

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

相关文章

从零开始了解Figma:全面介绍这款设计工具,让你熟练运用!

什么是Figma? 它是一个类似于Sketch或XD的UI设计工具,但Figma和后两者的本质区别在于它是基于web的,也就是说,只要有浏览器和网络,它就可以打开和使用。 Figma为什么强大? Windows上最好的UI设计工具 由…

Redisson 源码解析 - 分布式锁实现过程

一、Redisson 分布式锁源码解析 Redisson是架设在Redis基础上的一个Java驻内存数据网格。在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常…

一文搞定JMM核心原理

公众号《鲁大猿》,寻精品资料,帮你构建Java全栈知识体系 www.jiagoujishu.cn (架构技术.cn) JMM引入 从堆栈说起 JVM内部使用的Java内存模型在线程栈和堆之间划分内存。 此图从逻辑角度说明了Java内存模型: # 堆栈里…

SpringBoot + Mybatis 实现多数据源原来如此简单

1、为什么需要整合多数据源 在开发的过程中,我们可能会遇到一个工程使用多个数据源的情况,总体而言分为以下几个原因 a、数据隔离:将不同的数据存储在不同的数据库中,如多租户场景 b、性能优化:将数据分散到多个数据库…

【野火i.MX6ULL开发板】利用microUSB线烧入Debian镜像

0、前言 烧入Debian镜像有两种方式:SD卡、USB SD卡:需要SD卡(不是所有型号都可以,建议去了解了解)、SD卡读卡器 USB:需要microUSB线 由于SD卡的网上资料很多了,又因为所需硬件(SD卡…

Spring应用的部署与管理

一、前言 部署是将开发好的应用发布到服务器上,使其能够被用户访问的关键步骤。Spring框架提供了灵活的部署选项,本文将介绍Spring应用的常见部署方式和一些建议,帮助开发者顺利将应用投放到生产环境。 二、传统部署方式:WAR包 传…

09Bean的生命周期及循环依赖

Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。 所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。 Bean的生命周期之5步 ● 第一步:实例化Bean(无参构造方法执行) ● 第二步:Bean属性赋值(注…

基于YOLOv7算法的高精度实时19类动物目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法的高精度实时19类动物目标检测系统可用于日常生活中检测与定位19类动物目标(水牛、 斑马、 大象、 水豚、 海龟、 猫、 奶牛、 鹿、 狗、 火烈鸟、 长颈鹿、 捷豹、 袋鼠、 狮子、 鹦鹉、 企鹅、 犀牛、 羊和老虎)&#x…

[Kubernetes]5. k8s集群StatefulSet详解,以及数据持久化(SC PV PVC)

前面通过deployment结合service来部署无状态的应用,下面来讲解通过satefulSet结合service来部署有状态的应用 一.StatefulSet详解 1.有状态和无状态区别 无状态: 无状态(stateless)、牲畜(cattle)、无名(nameless)、可丢弃(disposable) 有状态: 有状态(stateful)、宠物(pet)…

【Python机器学习】构造决策树

通常来说,构造决策树直到所有叶结点都是纯的叶结点,但这会导致模型非常复杂,并且对于训练数据高度过拟合。 为了防止过拟合,有两种常见策略: 1、尽早停止树的生长,也叫预剪枝 2、先构造树,但…

系统架构设计师教程(十)软件可靠性基础知识

软件可靠性基础知识 10.1 软件架构演化和定义的关系10.1.1 演化的重要性10.1.2 演化和定义的关系 10.2 面向对象软件架构演化过程10.2.1 对象演化10.2.2 消息演化10.2.3 复合片段演化10.2.4 约束演化 10.3 软件架构演化方式的分类10.3.1 软件架构演化时期10.3.2 软件架构静态演…

免费服务器腾讯云_腾讯云免费服务器申请流程(2024更新)

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

径向基函数插值

一、径向基函数的定义 如果 ∣ ∣ x 1 ∣ ∣ ∣ ∣ x 2 ∣ ∣ ||x_1||||x_2|| ∣∣x1​∣∣∣∣x2​∣∣,那么 ϕ ( x 1 ) ϕ ( x 2 ) \phi(x_1)\phi(x_2) ϕ(x1​)ϕ(x2​) 的函数 ϕ \phi ϕ 就是径向函数,即仅由 r ∣ ∣ x ∣ ∣ r||x|| r∣∣…

金蝶EAS pdfviewlocal 任意文件读取漏洞复现

0x01 产品简介 金蝶EAS 为集团型企业提供功能全面、性能稳定、扩展性强的数字化平台,帮助企业链接外部产业链上下游,实现信息共享、风险共担,优化生态圈资源配置,构筑产业生态的护城河,同时打通企业内部价值链的数据链…

《中学物理奇妙日志——30天物理学探索之旅》提纲

《中学物理奇妙日志——30天物理学探索之旅》提纲 第一部分:物理学基础(第1-5天) 第一天:引言 - 从生活中的物理现象出发,阐述物理学的定义与重要性 子主题:物理学的历史、发展及在现代生活中的广泛应用 …

视图与索引连表查询内/外联和子查询

1.视图 先介绍一下视图: 从SQL的角度来看,视图和表是相同的,两者的区别在于表中存储的是实际的数据,而视图中保存的是SELECT语句(视图本身并不存储数据)。 使用视图可以轻松完成跨多表查询数据等复杂操作…

大学生如何当一个程序员——第三篇:热门专业学习之路5

第三篇:热门专业学习之路5 1.WEB前端快速入门2.JavaScript基础与深入解析3.jQuery应用与项目开发4.PHP、数据库编程与设计5. Http服务于Ajax编程6. 做一个阶段项目7. H5新特性与移动端开发8.高级框架9.微信小程序 各位小伙伴想要博客相关资料的话关注公众号&#xf…

R语言(12):绘图

12.1 创建图形 12.1.1 plot函数 plot(c(1,2,3),c(1,2,4)) plot(c(1,2,3),c(1,2,4),"b") plot(c(-3,3),c(-1,5),"n",xlab "x",ylab "y")12.1.2 添加线条&#xff1a;abline()函数 x <- c(1,2,3) y <- c(1,3,8) plot(x,y) lm…

算法28:力扣64题,最小路径和------------样本模型

题目&#xff1a; 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 。沿途只可以向下或者向右走&#xff0c;沿途的数字都累加就是距离累加和 * 返回累加和最小值 思路&#xff1a; 1. 既然是给定二维数组matrix&#xff0c;那么二维数…

寒假前端第一次作业

1、用户注册&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户注册</title> …