Linux文件系统与日志管理

目录

一、Linux文件系统

1、inode 与 block 详解

1.1 inode 和 block 概述

1.2 inode表的内容 

1.3 查看文件的inode号码

1.4  模拟innode号耗尽故障处理

2、访问文件的流程

3、文件恢复

3.1 恢复误删除的ext3格式文件

3.2 恢复误删除的 xfs 格式文件

二、Linux日志文件管理

1、日志的功能

2、日志文件种类

3、日志消息级别

4、rsyslog工具:管理日志

4.1 rsyslog 相关文件

4.2 /etc/rsyslog.conf 配置文件格式

4.3 通过rsyslog软件将sshd程序的日志独立

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

5、journalctl工具:管理日志

6、logrotate工具:日志转储


一、Linux文件系统

  • Linux文件系统是用于组织和存储数据的一种结构化的方法,它定义了文件和目录的存储方式以及对它们进行访问和管理的规则
  • Linux支持多种文件系统类型,如Ext4、XFS、Btrfs等。文件系统类型影响文件系统的性能、稳定性和支持的特性

1、inode 与 block 详解

1.1 inode 和 block 概述

inode(索引节点): inode 是文件系统中的一种数据结构,用于存储文件或目录的元数据信息,如文件大小、权限、所有者、时间戳等。每个文件和目录都与一个唯一的 inode 相关联,它们可以通过 inode 而不是文件名来标识和访问

block(块):文件是存储在硬盘上的,硬盘的最小存储单位叫做 “扇区” (sector),每个扇区存储 512 字节。一般连续八个扇区组成一个 “块” (block),一个块是 4K 大小,是文件系统中存储数据的最小单位。当文件系统需要存储文件时,它将文件分割成块,并将这些块分配给存储介质上的不同位置。文件系统使用块来管理存储空间并存储文件数据

1.2 inode表的内容 

元数据:每个文件的属性信息,比如:文件的大小,时间,类型,权限等。而元数据是存放在inode(index node)表中

每一个inode表记录对应的保存了以下信息:

  • 文件的字节数
  • 文件拥有者的 User ID
  • 文件的 Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳,共有三个:
简写全名中文名含义
atimeaccess time访问时间文件内容最后被访问的时间
mtimemodify time修改时间文件内容最后被修改的时间
ctimechange time变化时间文件的元数据发生变化的时间(比如权限,所有者等)
  • 链接数,即有多少文件名指向这个 inode
  • 文件数据 block 的位置
 1.3 查看文件的inode号码
命令一:ls -i 文件名
命令二:stat 文件名

 注:

  1. innode不包含文件名。文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件

  2. 操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个或多个文件名

1.4  模拟innode号耗尽故障处理
df -i    #查看设备的inode号数量
touch {1..51300}|xargs -n1 touch   #到磁盘设备的挂载目录中创建大量的空文件
ls |wc -l         #统计创建文件的个数,即总inode号数
****************************************************
解决方法:
rm -rf 无用文件名          #删除无用的文件,释放inode号
如果设备是逻辑卷可通过扩容来增加空间容量,从而增加inode号数量

 注:

inode号是有限资源,它的多少与磁盘大小有关,inode号在同一设备上是唯一的,在不同设备上可能不唯一

2、访问文件的流程

总结:根据文件夹的文件名和indoe号的关系找到对应的inode表,再根据inode表当中的指针找到磁盘上的真实数据

3、文件恢复

3.1 恢复误删除的ext3格式文件

使用extundelete工具是一个开源的 Linux 数据恢复工具,支持 ext3 文件系统

#安装extundelete软件
yum -y install e2fsprogs-devel e2fsprogs-libs      #安装依赖软件
tar -jxvf extundelete-0.2.4.tar.bz2 -C /opt        #解压软件包,软件包从官网下载
cd /opt/extundelete-0.2.4                          #切换到安装目录下
./configure    #编译安装
make
make install
ls /usr/local/bin/    #查看extundelete软件

************************************************************************
目前使用版本只对ext3有效,设置磁盘分区略
mkfs.ext3 /dev/sdb1      #文件系统格式化
mount /dev/sdb1 /mnt     #挂载磁盘分区
cd  /mnt                 #切换到挂载点目录
echo 111>a               #创建文件
echo 222>b 
echo 333>c 
echo 444>d

************************************************************************
#模拟删除文件,并恢复
rm -rf a b c d         #模拟删除
umount /mnt            #解挂载
extundelete /dev/sdb1 --inode 2      #查看该分区下的存在哪些文件
extundelete /dev/sdb1 --restore-all  #恢复被删除的文件

************************************************************************
#验证,查看恢复的文件
cd ~           #切换到当前家目录
ls RECOVERED_FILES/     #在该目录下有恢复文件
 3.2 恢复误删除的 xfs 格式文件

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

xfsdump 的备份级别有两种
0(备份默认级别)表示完全备份
1-9表示增量备份
通式:xfsrestore -f  恢复文件的位置  存放恢复后文件的位置
选项说明
-f指定备份文件目录
-L指定标签 session label
-M指定设备标签 media label
-s备份单个文件,-s 后面不能直接跟路径

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

使用 xfsdump限制较多,还是最好提前备份重要数据,以防数据丢失

  • 不支持没有挂载的文件系统备份,所以只能备份已挂载的
  • 必须使用 root 的权限才能操作

  • 只能备份 XFS 文件系统

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

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

#安装xfsdump工具
yum install -y xfsdump命令安装

**************************************************
#目前使用版本只对xfs有效,设置磁盘分区略
mkfs.xfs /dev/sdb1      #文件系统格式化
mount /dev/sdb1 /mnt     #挂载磁盘分区
cd  /mnt                 #切换到挂载点目录
echo 111>a               #创建文件

**************************************************
#使用 xfsdump 命令备份整个分区到指定目录
xfsdump -f /opt/bak_sdb1 /dev/sdb1

**************************************************
#模拟删除文件并恢复
rm -rf /mnt/*     #删除/mnt目录下的所有文件
ls /mnt           #查看还有无文件
xfsrestore -f /opt/bak_sdb1 /data/  
#使用bak文件将数据恢复到/data下

**************************************************
#验证,查看恢复的文件
cd /data                #切换目录
ls /data                #在该目录下有恢复文件

二、Linux日志文件管理

1、日志的功能

记录:日志可以记录特定事件、活动或数据,以便将来进行查看和分析

故障排除:在软件开发和系统管理中,日志通常用于跟踪问题和故障,帮助识别和解决错误

监控:日志记录可以用于监视应用程序、系统或网络的性能和行为,从而及时发现异常并采取必要的措施

合规性:在许多行业中,日志记录是确保合规性和安全性的重要手段,例如在金融和医疗领域

分析:通过分析日志数据,可以获取有关系统使用情况、用户行为和趋势的宝贵信息,从而支持决策制定和优化流程

安全:日志记录对于安全审计和追踪潜在的安全威胁至关重要,能够帮助发现入侵和未经授权的访问

2、日志文件种类

①内核及系统日志
记录 Linux 内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息

  • /var/log/messages :系统中大部分的信息
  • /var/log/anaconda:anaconda的日志操作系统安装时安装的软件信息
  • /var/log/boot.log:系统服务启动的相关信息,文本格式

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

  • /var/log/secure:系统安全日志(用户登录),文本格式,应周期性分析
  • /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式文件,lastb命令进行查看

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

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

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

3、日志消息级别

级号消息级别说明
0EMERG紧急会导致主机系统不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

4、rsyslog工具:管理日志

4.1 rsyslog 相关文件
  • 程序包:rsyslog

  • 主程序:/usr/sbin/rsyslogd

  • CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}

  • CentOS 7,8:/usr/lib/systemd/system/rsyslog.service

  • 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf

  • 库文件: /lib64/rsyslog/*.so

4.2 /etc/rsyslog.conf 配置文件格式

由三部分组成:

  • MODULES:相关模块配置

  • GLOBAL DIRECTIVES:全局配置

  • RULES:日志记录相关的规则配置 

程序类型:mail 邮箱、corn 计划任务、auth 用户认证

自定义类型:local0~local6(7个类型)

注:rsyslog软件管理日志,需要rsyslog软件和其他服务程序之间要相互支持

4.3 通过rsyslog软件将sshd程序的日志独立

原本sshd软件的日志放在/var/log/secure日志中,与很多软件放在一起,因为这个软件比较重要,所以把sshd软件的日志单独存放

#在rsyslog配置文件里添加sshd的程序日志
vim /etc/rsyslog.conf
local6.*     /opt/sshd.log    
     
*************************************************************************
#修改sshd配置文件
vim /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV          #注释掉这行
SyslogFacility local6             #在sshd配置文件里将日志存放在local6类型中

**************************************************************************
#验证
systemctl restart rsyslog.service sshd     #重启rsyslog软件和sshd软件服务
ssh 172.16.12.12                 #远程连接
cat /opt/sshd.log                #查看sshd程序日志

①在rsyslog配置文件里添加sshd的程序日志 

 ②在sshd配置文件里将日志存放在local6类型中

③验证,重启rsyslog软件和sshd软件服务,查看指定目录下的日志 

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

允许将来自多个源头(如服务器、应用程序、网络设备)的日志数据传输到远程位置,通常是集中式的日志服务器或云端存储

要求:开启日志的远程传输功能在172.16.12.12

#客户端和日志服务器都要关闭防火墙和临时防护
systemctl   stop  firewalld      
setenforce  0  
**************************************************
#开启客户端和日志服务器tcp的514端口
vim /etc/rsyslog.conf 
$ModLoad imtcp
$InputTCPServerRun 514
或开启客户端和日志服务器udp的514端口
$ModLoad imudp
$UDPServerRun 514

**************************************************
systemctl restart rsyslog   #重启rsyslog服务
ss -ntap |grep 514       #查看514端口是否打开

**************************************************
#在172.16.12.10上设置发送日志到172.16.12.12主机去
vim /etc/rsyslog.conf    #修改rsyslog文件配置文件
*.info;mail.none;authpriv.none;cron.none       @@172.16.12.12
#@@代表使用tcp,@代表udp

**************************************************
#测试,在客户端把写日志进日志服务端
logger "this is test log from 172.16.12.10"
cat /var/log/messages   #在日志服务端查看客户端发来的日志信息

①客户端和日志服务器都要关闭防火墙和临时防护 

 ​​​​​②开启客户端和日志服务器tcp的514端口

③重启rsyslog服务并查看514端口是否打开

④ 在172.16.12.10上设置发送日志到172.16.12.12主机去

⑤ 测试,在客户端把写日志进日志服务端

5、journalctl工具:管理日志

日志的配置文件:

  • /etc/systemd/journald.conf
通式:journalctl [OPTIONS...] [MATCHES...]
选项说明
--no-full,--full, -l默认显示完整的字段内容,超长的部分换行显示或者被分页工具截断
-a,--all完整显示所有字段内容, 即使其中包含不可打印字符或者字段内容超长
-f,--follow只显示最新的日志项,并且不断显示新生成的日志项
-e,--pager-end在分页工具内立即跳转到日志的尾部
-n,--lines限制显示最新的日志行数,若不设参数则表示默认值10行
--no-tail显示所有日志行
-r,--reverse反转日志行的输出顺序, 也就是最先显示最新的日志
-o,--output控制日志的输出格式
--no-hostname不显示来源于本机的日志消息的主机名字段
-x,--catalog在日志的输出中增加一些解释性的短文本, 以帮助进一步说明日志的含义
-q,--quiet当以普通用户身份运行时, 不显示任何警告信息与提示信息
-m,--merge混合显示包括远程日志在内的所有可见日志
-b显示特定于某次启动的日志,"-b  1"表示按时间顺序排列最早的那次启动, "-b 2"则表示在时间上第二早的那次启动; "-b -0"表示最后一次启动, "-b -1"表示在时间上第二近的那次启动
--directory指定了另外一台主机上的日志目录
--list-boots列出每次启动的 序号(也就是相对于本次启动的偏移量)、32字符的ID、第一条日志的时间戳、最后一条日志的时间戳
-k,--dmesg仅显示内核日志
-u, --unit仅显示属于特定单元的日志
-p, --priority

根据日志等级(包括等级范围)过滤输出结果

-c, --cursor从指定的游标(cursor)开始显示日志
--after-cursor从指定的游标(cursor)之后开始显示日志
--show-cursor在最后一条日志之后显示游标
-S, --since=, -U, --until=显示晚于指定时间(--since=)的日志、显示早于指定时间(--until=)的日志
-F, --field显示所有日志中某个字段的所有可能值
-N, --fields输出所有日志字段的名称
--system, --user仅显示系统服务与内核的日志(--system)、 仅显示当前用户的日志(--user)
-M, --machine显示来自于正在运行的、特定名称的本地容器的日志
-D DIR, --directory=DIR仅显示来自于特定目录中的日志, 而不是默认的运行时和系统日志目录中的日志
案例:
#查看所有日志(默认情况下 ,只保存本次启动的日志)
 journalctl

#查看内核日志(不显示应用日志)
 journalctl -k

#查看系统本次启动的日志
 journalctl -b
 journalctl -b -0

#查看上一次启动的日志(需更改设置)
 journalctl -b -1

#查看指定时间的日志   -S=since    -U=unit
 journalctl --since="2024-1-8 19:00:00"  #查看2024-1-8 19:00:00的日志
 journalctl --since "20 min ago"   #查看20分钟前的日志
 journalctl --since yesterday      #查看昨天的日志
 journalctl -S "2023-12-31 19:00" -U "2024-1-8 19:00:00"  
#查看2023-12-31 19:00到2024-1-8 19:00:00的日志
 journalctl --since 09:00 --until "1 hour ago"
#从今天09:00 开始直至一小时前的systemd日志

#显示尾部的最新10行日志
 journalctl -n

#显示尾部指定行数的日志
 journalctl -n 20

#实时滚动显示最新日志
 journalctl -f

#查看指定服务的日志
 journalctl /usr/lib/systemd/systemd

#查看指定进程的日志
 journalctl _PID=1       

#查看某个路径的脚本的日志
 journalctl /usr/bin/bash

#查看指定用户的日志
 journalctl _UID=33 --since today

#查看某个 Unit 的日志
 journalctl -u nginx.service
 journalctl -u nginx.service --since today

#实时滚动显示某个 Unit 的最新日志
 journalctl -u nginx.service -f

#合并显示多个 Unit 的日志
 journalctl -u nginx.service -u php-fpm.service --since today

#查看指定优先级(及其以上级别)的日志,共有8级 0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
 journalctl -p err -b

#日志默认分页输出,--no-pager 改为正常的标准输出
 journalctl --no-pager

#日志管理journalctl
#以 JSON 格式(单行)输出
 journalctl -b -u nginx.service -o json

#以 JSON 格式(多行)输出,可读性更好
 journalctl -b -u nginx.serviceqq -o json-pretty

#显示日志占据的硬盘空间
 journalctl --disk-usage

#指定日志文件占据的最大空间
 journalctl --vacuum-size=1G

#指定日志文件保存多久
 journalctl --vacuum-time=1years

6、logrotate工具:日志转储

logrotate工具相关文件:

  • 计划任务:/etc/cron.daily/logrotate

  • 程序文件:/usr/sbin/logrotate

  • 配置文件: /etc/logrotate.conf

  • 日志文件:/var/lib/logrotate/logrotate.status

  • 程序独立的配置文件/etc/logrotate.d/*

以bootlog程序为例,查看独立的程序bootlog的配置文件格式:

配置文件的配置参数说明
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如果日志不存在,提示错误,此为默认值
以nginx软件的独立配置文件为模板
cat /etc/logrotate.d/nginx 

/var/log/nginx/*.log {
   daily      #一天生成一个新的日志
   rotate 5   #保留5天日志
   missingok  #无所谓有无日志
   compress   #通过gzip压缩转储以后得日志
   delaycompress  #转储的日志文件到下一次转储时才压缩
   notifempty  #空文件不转存
   create 644 ngnix nginx   #转存文件的属性
   postrotate
      if [ -f /app/nginx/logs/nginx.pid ]; then
          kill -USR1 `cat /app/nginx/logs/nginx.pid`
          #日志分割后,告诉nginx软件需重新生成新的日志文件
      fi
   endscript
}

 案例:分割日志

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

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

因为在httpd的配置文件中规定:访问httpd服务通过的日志文件只能存放在/var/log/httpd/access_log中

因为logrotate的子配置文件中规定重新加载httpd服务会在/var/log/httpd/下重新产生新的access_log文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java集合框架深度解析:HashMap

Java中的HashMap是一种基于哈希表的实现,提供了快速的查找性能。在这篇深度解析中,我们将深入探讨HashMap**的实现原理、适用场景、潜在问题以及并发控制策略。 1. HashMap的实现原理 1.1 哈希表 HashMap内部基于哈希表实现,通过散列函数将…

如何下载YouTube上的Mobile ALOHA视频?不用安装任何软件,一分钟搞定,一些好用的小技能又增加了^_^

一、背景 最近几天被斯坦福大学的移动双臂机器人——Mobile ALOHA刷屏了,就是下面这款能做饭,能收拾家务的机器人。因为是斯坦福大学研发的,他们的许多demo都上传到了国外的视频网站YouTube上面,为了防止未来的某天梯子不好用&am…

数据结构-测试5

一、判断题 1.二叉树只能用二叉链表表示(F) 二叉树的存储结构有两种,顺序存储结构和链式存储结构 2. 装填因子是散列表的一个重要参数,它反映散列表的装满程度。(T) 装填因子越小,发生冲突的可能性越小 3. 在任何情况…

CSS 发光输入框动画

<template><view class="content"><input placeholder="请输入..." class="input" /> </view> </template><script></script><style>/* 设置整个页面的背景颜色为 #212121 */body{background-c…

数据结构与算法(九)图链式存储

邻接表 度&#xff1a;无向图的度&#xff1a;顶点与邻接点连接的边就做度。有向图的度&#xff1a;指向顶点的边叫做入度&#xff0c;由顶点指向其他邻接点的边叫做出度 顶点&#xff1a;存储自身顶点信息和指向下一个临界点的指针 邻接点&#xff1a;保存临接点的存储下标…

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于海洋捕食者优化的Elman网络5.测试结果6.参考文献7.Matlab代码…

mysql索引失效的情况

目录 1破坏最左前缀法则2在索引列上做任何计算、函数操作&#xff0c;会导致索引失效而转向全表扫描。3存储引擎不能使用索引中范围条件右边的列4Mysql在使用不等于时无法使用索引会导致全表查询5is null可以使用索引&#xff0c;但是is not null无法使用索引6like以通配符开头…

网络调试 UDP1,开发板用动态地址-入门6

https://www.bilibili.com/video/BV1zx411d7eC?p11&vd_source109fb20ee1f39e5212cd7a443a0286c5 1, 开发板连接路由器 1.1&#xff0c;烧录无OS UDP例程 1.2&#xff0c;Mini USB连接电脑 1.3&#xff0c;开发板LAN接口连接路由器 2. Ping开发板与电脑之间通信* 2.1 根据…

消息队列-什么是MQ?何时使用MQ?怎么选择MQ?

什么是MQ&#xff1f; MessageQueue:就是消息 队列&#xff0c;任务队列&#xff0c;指令 队列。 功能&#xff1a;应用程序之间&#xff08;生产者与消费者&#xff09;的通信方式。 使用场景 从下面这个场景来感受MQ 的诞生 如果我们有很多任务需要处理&#xff0c;任务…

小白新手轻松部署扫雷小游戏

小白新手轻松部署扫雷小游戏 云效云效操作导入资源镜像仓库应用配置 最后 说到扫雷小游戏&#xff0c;可以说大家都玩儿过&#xff0c;印象中刚接触计算机的时候&#xff0c;对于这个扫雷小游戏&#xff0c;很多人都很喜欢&#xff0c;觉得很有意思&#xff0c;大家一起挑战看谁…

Spring学习 基于注解的AOP控制事务

8.1.拷贝上一章代码 8.2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 8.3.service Service Transactional(readOnlytrue,propagation Propagation.SUPPORTS) publi…

shell中的正则表达式、编程-grep、编程-SED、以及编程-AWK

正则表达式RE 用来处理文本 正则表达式(Regular Expression, RE)是一种字符模式, 用于在查找过程中匹配指定的字符. 在大多数程序里, 正则表达式都被置于两个正斜杠之间; 例如/l[oO]ve/就是由正斜杠界定的正则表达式, 它将匹配被查找的行中任何位置出现的相同模式. 在正则表达…

DD代驾.高级数分 已二面

dd高级数据分析面试感觉更偏数科一点&#xff0c;问了很多AB实验和反事实因果推断的问题&#xff0c;同时也比较关注怎么对模型进行的评价 一面&#xff1a;小组长|组员 40min 自我介绍项目深究1、你在实际工作做AB的流程2、AB实验你们咋算的样本量3、AB实验你们啥情况会做A…

Spark MLlib ----- ALS算法

补充 在谈ALS(Alternating Least Squares)之前首先来谈谈LS,即最小二乘法。LS算法是ALS的基础,是一种数优化技术,也是一种常用的机器学习算法,他通过最小化误差平方和寻找数据的最佳匹配,利用最小二乘法寻找最优的未知数据,保证求的数据与已知的数据误差最小。LS也被用…

Sortable.js:功能强大的JavaScript 拖拽库

原文地址&#xff1a;Sortable.js&#xff1a;功能强大的JavaScript 拖拽库 一、介绍 Sortable.js一个功能强大的JavaScript 拖拽库&#xff01;&#xff01;&#xff01;用于在网页上创建可拖放和可排序的元素。它提供了简单而强大的 API&#xff0c;使开发人员能够轻松地实…

java每日一题——输出9x9乘法表(答案及编程思路)

前言&#xff1a; 打好基础&#xff0c;daydayup! 题目&#xff1a;输出下图9x9乘法表 编程思路&#xff1a;java只能输出行&#xff0c;不能输出列&#xff0c;所以考虑好每一行输出的内容即可 public class demo {public static void main(String[] args) {for (int i 1; i…

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

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

鹦鹉目标检测数据集VOC格式600张

鹦鹉&#xff0c;一种色彩鲜艳、聪明伶俐的鸟类&#xff0c;以其模仿人类语言的能力和独特的喙形而广受喜爱。 鹦鹉属于鸟纲、鹦鹉科&#xff0c;是热带和亚热带地区的常见鸟类。它们的喙弯曲呈钩状&#xff0c;非常适合啄食种子、果实和坚果等食物。鹦鹉的羽毛通常非常鲜艳&a…

DVWA-Hight-xss漏洞

首先来到DVWA高级模式下反射型xss漏洞处 开始测试 <script>alert(/xss/)</script> 发现直接使用js代码不行&#xff0c;被直接过滤稍微试探针对的过滤对象 发现这里针对 <script>标签会直接过滤 我们改用<img>标签试探是否过滤 发现这里针对img标签没…

c语言-数组指针

文章目录 前言一、字符指针二、数组指针2.1 数组指针基础2.2 数组指针作函数参数 三、void*类型指针总结 前言 在c语言基础已经介绍过关于指针的概念和基本使用&#xff0c;本篇文章进一步介绍c语言中关于指针的应用。 一、字符指针 字符指针是指向字符的指针。 结果分析&…