Linux(17):认识与分析登录档

news2024/12/25 12:30:46

什么是登录档

【详细而确实的分析以及备份系统的登录文件】是一个系统管理员应该要进行的任务之一。
登录档 就是记录系统活动信息的几个文件,例如:何时、何地(来源IP)、何人(什么服务名称)、做了什么动作(讯息登录啰)。
换句话说就是:记录系统在什么时候由哪个程序做了什么样的行为时,发生了何种的事件等等。

CentOS 7 登录档简易说明

Linux 主机在背景之下有相当多的 daemons 同时在工作着,这些工作中的程序总是会显示一些讯息,这些显示的讯息最终会被记载到登录文件当中。也就是说,记录这些系统的重要讯息就是登录文件的工作。

登录档的重要性
1.解决系统方面的错误:
系统可能会出现一些错误,包括硬件捉不到或者是某些系统服务无法顺利运作的情况。由于系统会将硬件侦测过程记录在登录文件内,只要透过查询登录文件就能够了解系统出了什么问题。
2.解决网络服务的问题:
由于网络服务的各种问题通常都会被写入特别的登录档,只要查询登录档就会知道出了什么差错,例如如果无法启动邮件服务器(postfix),那么查询一下/var/log/maillog 通常可以得到不错的解答。
3.过往事件记录簿:
WWW服务(httpd 软件)在某个时刻流量特别大,要了解为什么时,可以透过登录档去找出该时段是哪些IP在联机与查询的网页数据为何,就能够知道原因。

透过(1)察看屏幕上面的错误讯息与(2)登录文件的错误信息,几乎可以解决大部分的 Linux问题。

Linux 常见的登录档档名
登录文件可以帮助我们了解很多系统重要的事件,包括登入者的部分信息,因此登录文件的权限通常是设定为仅有 root 能够读取而已。
常见的几个登录档有下面几个:
/var/log/cron:
crontab排程有没有实际被进行?进行过程有没有发生错误?/etc/crontab是否撰写正确?在这个登录档内查询看看。
/var/log/dmesg:
记录系统在开机的时候核心侦测过程所产生的各项信息。由于CentOS 默认将开机时核心的硬件侦测过程取消显示,因此额外将数据记录一份在这个文件中;
/var/log/lastlog:
可以记录系统上面所有的账号最近一次登入系统时的相关信息。lastlog 指令就是利用这个文件的记录信息来显示的。
/var/log/maillog或/var /log/mail/*:
记录邮件的往来信息,其实主要是记录 postfix(SMTP 协议提供者)与 dovecot (POP3协议提供者)所产生的讯息啦。SMTP是发信所使用的通讯协议,POP3则是收信使用的通讯协议。postfix 与 dovecot 则分别是两套达成通讯协议的软件。
/var/log/messages:
这个文件相当的重要,几乎系统发生的错误讯息(或者是重要的信息)都会记录在这个文件中;如果系统发生莫名的错误时,这个文件是一定要查阅的登录档之一。
/var/log/secure:
基本上,只要牵涉到【需要输入账号密码】的软件,那么当登入时(不管登入正确或错误)都会被记录在此文件中。包括系统的 login程序、图形接口登入所使用的 gdm程序、su, sudo等程序、还有网络联机的ssh, telnet等程序,登入信息都会被记载在这里;
/var/log/wtmp,/var/loglfaillog:
这两个文件可以记录正确登入系统者的帐户信息 (wtmp)与错误登入时所使用的帐户信息 (faillog);
/var/log/httpd/*, /var/log/samba/*:
不同的网络服务会使用它们自己的登录文件来记载它们自己产生的各项讯息,上述的目录内则是个别服务所制订的登录档。

不同的Linux distributions ,通常登录档的档名不会相同(除了/var/log/messages 之外 )。

登录档所需相关服务(daemon)与程序
登录档的产生基本上有两种方式:一种是由软件开发商自行定义写入的登录档与相关格式,例如 WWW软件 apache 就是这样处理的。另一种则是由 Linux distribution 提供的登录档管理服务来统一管理。只要将讯息丢给这个服务后,他就会自己分门别类的将各种讯息放置到相关的登录档去。CentOS 提供 rsyslog.service 这个服务来统一管理登录档。

不过要注意的是,如果任凭登录文件持续记录的话,由于系统产生的信息天天都有,那么登录文件的容量将会持续增长,如果登录文件容量太大时,可能会导致大文件读写效率不佳的问题(因为要从磁盘读入内存,越大的文件消耗内存量越多)。所以需要对登录档备份与更新。
可以透过 logrotate(登录档轮替)来自动化处理登录文件容量与更新的问题。
所谓的 logrotate 基本上,就是将旧的登录档更改名称,然后建立一个空的登录档,如此一来,新的登录文件将重新开始记录,然后只要将旧的登录档留下一阵子就可以达到将登录档【轮转】的目的。
此外,如果旧的记录(大概要保存几个月吧!)保存了一段时间没有问题,那么就可以让系统自动的将他砍掉,免得占掉很多宝贵的硬盘空间。

总结一下,针对登录文件所需的功能,需要的服务与程序有:
systemd-journald.service:最主要的讯息收受者,由systemd提供的;
rsyslog.service:主要登录系统与网络等服务的讯息;
logrotate:主要在进行登录文件的轮替功能。

CentOs 7.x 使用 systemd 提供的 journalctl 日志管理
CentOS 7 除了保有既有的 rsyslog.service 之外,其实最上游还使用了systemd 自己的登录文件日志管理功能。他使用的是 systemd-journald.service 这个服务来支持的。基本上,系统由 systemd 所管理,那所有经由 systemd 启动的服务,如果再启动或结束的过程中发生一些问题或者是正常的讯息,就会将该讯息由 systemd-journald.service 以二进制的方式记录下来,之后再将这个讯息发送给 rsyslog.service 作进一步的记载。
systemd-journald.service 的记录主要都放置于内存中,因此在存取方面效能比较好~我们也能够透过journalctl 以及 systemctl status unit.service 来查看各个不同服务的登录档。登录档可以随着个别服务供用户查阅,在单一服务的处理上面,要比 /var/log/messages 简易很多。

登录档内容的一般格式

一般来说,系统产生的讯息经过记录下来的数据中,每条讯息均会记录几个重要数据:
事件发生的日期与时间;
发生此事件的主机名;
启动此事件的服务名称(如 systemd, CROND等)或指令与函式名称(如su, login…);
该讯息的实际数据内容。
这些信息的【详细度】是可以修改的,而且,这些信息可以作为系统除错之用。

在这里插入图片描述

发生底下几种情况时:
当你觉得系统似乎不太正常时;
某个 daemon 老是无法正常启动时;
某个使用者老是无法登入时;
某个 daemon 执行过程老是不顺畅时;
要去【巡视】登录档的内容。

rsyslog.service:记录登录文件的服务

Linux 的登录档主要是由 rsyslog.service 在负责,查看其是否自启动:

在这里插入图片描述

rsyslog.service 的配置文件:/etc/rsyslog.conf

rsyslogd 可以负责主机产生的各个信息的登录,而这些信息本身是有【严重等级】之分的。
基本上,rsyslogd 针对各种服务与讯息记录在某些文件的配置文件就是 /etc/rsyslog.conf,这个文件规定了【(1)什么服务(2)的什么等级讯息3需要被记录在哪里(装置或文件)】,所以设定的语法会是这样:
在这里插入图片描述
服务名称
rsyslogd 主要是透过Linux核心提供的 syslog 相关规范来设定数据的分类的,Linux 的 syslog 本身有规范一些服务讯息,可以透过这些服务来储存系统的讯息。Linux核心的 syslog 认识的服务类型主要有底下这些:(可使用man 3 syslog 查询到相关的信息,或查询 syslog.h这个文件来了解)
在这里插入图片描述
Linux 核心的 syslog 函数自行制订的服务名称,软件开发商可以透过呼叫上述的服务名称来记录他们的软件。
举例来说, sendmail 与 postfix 及 dovecot 都是与邮件有关的软件,这些软件在设计登录文件记录时,都会主动呼叫 syslog 内的 mail 服务名称(LOG_MAIL)。所以上述三个软件(sendmail, postfix, dovecot)产生的讯息在 syslog 看起来,就会是 【mail】类型的服务了。
在这里插入图片描述另外,每种服务所产生的数据量其实差异是很大的,举例来说,mail 的登录文件讯息很多,每一封信件进入后, mail 至少需要记录【寄信人的信息;与收信者的讯息】等等;而如果是用来做为工作站主机的,那么登入者(利用login登录主机处理事情)的数量一定不少,那个authpriv所管辖的内容就很多了。

讯息等级
同一个服务所产生的讯息也是有差别的,有启动时仅通知系统而已的一般讯息(information),有出现还不至于影响到正常运作的警告讯息 (warn),还有系统硬件发生严重错误时,所产生的重大问题讯息 (error 等等);讯基本上,Linux核心的 syslog 将讯息分为七个主要的等级,根据syslog.h 的定义,讯息名称与数值的对应如下:
在这里插入图片描述
基本上,在0(emerg)到6(info)的等级之间,等级数值越高代表越没事,等级靠近0则代表事情大了。
除了 0 到 6 之外还有两个比较特殊的等级,那就是debug(错误侦测等级)与none(不需登录等级)两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的信息时,就用这两个。
特别留意一下在讯息等级之前还有【=!】的链接符号。他代表的意思是:
.:代表【比后面还要严重的等级(含该等级)都被记录下来】的意思,例如: mail.info 代表只要是 mail
的信息,而且该信息等级严重于info (含 info本身)时,就会被记录下来的意思。
.=:代表所需要的等级就是后面接的等级而已,其他的不要。
.!:代表不等于,亦即是除了该等级外的其他等级都记录。
一般来说,比较常使用的是【.】这个链接符号。

讯息记录的文件名或装置或主机
一些常见的放置处:
文件的绝对路径:通常就是放在 /var/log 里头的文件;
打印机或其他:例如/dev/lp0 这个打印机装置;
使用者名称:显示给用户;
远程主机:例如@study.vbird.tsai 要对方主机也能支持才行;
*:代表【目前在在线的所有人】,类似 wall 这个指令的意义。

服务、daemon 与函数名称
在这里插入图片描述

CentOs 7.x 预设的 rsyslog.conf 内容

vim /etc/rsyslog.conf

在这里插入图片描述#kern.*:只要是核心产生的讯息,全部都送到 console(终端机)去。console通常是由外部装置连接到系统而来。这个项目通常应该是用在系统出现严重问题而无法使用默认的屏幕观察系统时,可以透过这个项目来连接取得核心的讯息。
*.info;mail.none;authpriv.none;cron.none:由于 mail, authpriv, cron等类别产生的讯息较多,且已经写入底下的数个文件中,因此在 /var/log/messages 里面就不记录这些项目。除此之外的其他讯息都写入
/var/log/messages 中。
authpriv.*:认证方面的讯息均写入 /var/log/secure 文件;
mail.*:邮件方面的讯息则均写入 /var/log/maillog 文件;
cron.*:例行性工作排程均写入/var/log/cron文件;
*.emerg:当产生最严重的错误等级时,将该等级的讯息以 wall 的方式广播给所有在系统登入的账号得知,要这么做的原因是希望在线的用户能够赶紧通知系统管理员来处理这么可怕的错误问题。
uucp,news.crit: ucp 是早期 Unix-like 系统进行数据传递的通讯协议,后来常用在新闻组的用途中。news则是新闻组。当新闻组方面的信息有严重错误时就写入 /var/log/spooler 文件中;
local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 文件中;

登录档的安全性检查

可以透过一个隐藏的属性来设定登录档,成为【只可以增加数据,但是不能被删除】的状态。

chatt r +a /var/1og/ admin.log

加入了这个属性之后,/var/log/admin.log 登录档从此就仅能被增加,而不能被删除,直到 root 以 【chattr -a /var/log/admin.log】 取消这个 a 的参数之后,才能被删除或移动。

登录档服务器的设定

登录档服务器的架构:
在这里插入图片描述
如上图所示,服务器会启动监听的埠口,客户端则将登录档再转出一份送到服务器去。而既然是登录档【服务器】,所以当然有服务器与客户端(client)。两者的设定分别是这样的:
1.Server 端:修改 rsyslogd 的启动配置文件,在 /etc/rsyslog.conf 内
在这里插入图片描述上面的是UDP埠口,底下的是TCP埠口。如果网络状态很稳定,就用UDP即可。不过,如果想要让数据比较稳定传输,那么建议使用TCP。

2.client 端:指定某个信息传送到这部主机即可
可以在 /etc/rsyslog.conf 内新增一行:TCP:*.* @@192.168.1.100,UDP:*.* @192.168.1.100

重新启动 rsyslog.service 后就OK。。。。

登录档的轮替

【rsyslogd 利用的是 daemon 的方式来启动的,当有需求的时候立刻就会被执行的,但是 logrotate 却是在规定的时间到了之后才来进行登录档的轮替,所以这个logrotate 程序是挂在cron底下进行的】

logrotate

logrotate主要是针对登录档来进行轮替的动作,记载了【在什么状态下才将登录档进行轮替】的设定。
logrotate这个程序的参数配置文件在:/etc/logrotate.conf/etc/logrotate.d/
logrotate.conf 才是主要的参数文件,至于 logrotate.d 是一个目录,该目录里面的所有文件都会被主动的读入 /etc/logrotate.conf 当中来进行。另外,在 /etc/logrotate.d 里面的文件中,如果没有规定到的一些细部设定,则以 /etc/logrotate.conf 这个文件的规定来指定为默认值。

logrotate 的主要功能就是将旧的登录文件移动成旧档,并且重新建立一个新的空的文件来记录,他的执行结果类似底下的图示:
在这里插入图片描述
当第一次执行完 rotate 之后,原本的 messages 会变成 messages.1 而且会制造一个空的 messages 给系统来储存登录文件。而第二次执行之后,则 messages.1 会变成 messages.2 而 messages 会变成messages.1,又造成一个空的 messages 来储存登录档。
如果仅设定保留三个登录档而已的话,那么执行第四次时,则messages.3这个文件就会被删除,并由后面的较新的保存登录档所取代。

vim /etc/logrotate.conf

在这里插入图片描述
可以知道 /etc/logrotate.d 其实就是由 /etc/logrotate.conf 所规划出来的目录。
如果独立出来一个目录,那么每个以 RPM 打包方式所建立的服务的登录档轮替设定,就可以独自成为一个文件,并且放置到 /etc/logrotate.d/ 当中即可。

一般来说,这个 /etc/logrotate.conf 是【预设的轮替状态】而已,各个服务都可以拥有自己的登录档轮替设定,也可以自行修改成自己喜欢的样式。

logrotate.conf 的设定语法是:
在这里插入图片描述

/etc/logrotate.d/syslog 这个轮替 rsyslog.service服务的文件:
在这里插入图片描述在上面的语法当中,正确的 logrotate 的写法为:
档名:被处理的登录文件绝对路径文件名写在前面,可以使用空格符分隔多个登录档;
参数:上述档名进行轮替的参数使用 {} 包括起来;
执行脚本:可呼叫外部指令来进行额外的命令下达,这个设定需与 sharedscripts …endscript 设定合用才行。至于可用的环境为:
1.prerotate:在启动 logrotate 之前进行的指令,例如修改登录文件的属性等动作;
2.postrotate:在做完 logrotate之后启动的指令,例如重新启动(kill -HUP)某个服务;/bin/kill -HUP… 的目的在于将系统的 rsyslogd 重新以其参数档(rsyslog.conf)的资料读入一次;
3.Prerotate 与 postrotate对于已加上特殊属性的文件处理上面,是相当重要的执行程序;

那么、/etc/logrotate.d/syslog 内设定的 5 个文件的轮替功能就变成了:
该设定只对 /var/log/ 内的 cron, maillog, messages, secure, spooler 有效;
登录档轮替每周一次、保留四个、且轮替下来的登录档不进行压缩(未更改默认值);
轮替完毕后(postrotate)取得 syslog 的 PID 后,以 kill -HUP 重新启动 syslogd。

实际测试 logrotate 的动作

logrotate [-vf] logfile;

在这里插入图片描述
由于 logrotate 的工作已经加入 crontab 里了,所以现在每天系统都会自动的给他查看 logrotate。

systemd-journald.service 简介

过去只有 rsyslogd 的年代中,由于 rsyslogd 必须要开机完成并且执行了 rsyslogd 这个daemon之后,登录文件才会开始记录。所以,核心还得要自己产生一个 klogd 的服务,才能将系统在开机过程、启动服务的过程中的信息记录下来,然后等 rsyslogd 启动后才传送给它来处理。

systemd 是核心唤醒的,然后又是第一支执行的软件,它可以主动呼叫 systemd-journald 来协助记载登录文件。因此在开机过程中的所有信息,包括启动服务与服务若启动失败的情况等等,都可以直接被记录到systemd-journald里。
不过 systemd-journald 由于是使用于内存的登录文件记录方式,因此重新启动过后,开机前的登录文件信息就不会被记载了。

虽然 systemd-journald 所记录的数据其实是在内存中,但是系统还是利用文件的型态将它记录到 /run/log/ 底下。不过 /run 在 CentOS 7 其实是内存内的数据,所以重新启动过后,这个/run/log 底下的数据就被刷新,旧的就不再存在了。

使用 journalctl 观察登录信息

journalctl [-nrpf] [--since TIME] [--until TIME] _optional

在这里插入图片描述在这里插入图片描述

logger 指令的应用

logger [-p 服务名称,等级] "讯息"

手动使用 logger 来传送数据到登录文档内:
在这里插入图片描述

保存 journal 的方式

systemd-journald.servicd 的讯息是不会放到下一次开机后的,所以,重新启动后,那之前的记录通通会遗失。

基本上,systemd-journald.service 的配置文件主要参考 /etc/systemd/journald.conf 的内容。
只是如果想要保存 journalctl 所读取的登录档那么就得要建立一个 /var/log/journal 的目录,并且处理一下该目录的权限,那么未来重新启动systemd-journald.service 之后,日志登录文件就会主动的复制一份到/var/log/journal目录下了。
1.先处理所需要的目录与相关权限设定;
在这里插入图片描述
2.重新启动 systemd- journald 并且观察备份的日志数据。
在这里插入图片描述

logwatch 为 CentOS 7 预设提供的一个登录文件分析软件。

《鸟哥的Linux私房菜-基础篇》学习笔记

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

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

相关文章

谷歌云数据中心利用地热能实现能源转型突破

随着全球气候变化问题日益严重,各大公司纷纷寻求更加可持续的能源解决方案。作为科技巨头的谷歌,近日在内华达州的数据中心取得了突破性的进展,开始使用100%地热能供电,为全球数据中心能源转型树立了新的标杆。 作为全球最大的搜…

MySQL慢SQL优化思路

MySQL慢SQL优化思路 具体思路: 1、慢查询日志记录慢 SQL 2、explain 分析 SQL 的执行计划 3、profile 分析执行耗时 4、Optimizer Trace 分析详情 5、确定问题并采用相应的措施 1、查看慢日志 1.1 使用命令查询慢日志配置 mysql> show variables like s…

网页设计的灵感从哪来?试试这15个灵感网站

设计灵感网站是许多设计师必备的工具,因为它们提供了一个创造性的源泉,可以帮助设计师找到灵感和灵感,从而开发出惊人的设计。 推荐15个设计灵感网站,涵盖了平面设计、网页设计、UI设计等不同领域的设计。 即时设计资源广场 即…

利用贝叶斯超参数优化,提升模型效果更科学(附Python代码)

超参数优化在大多数机器学习流水线中已成为必不可少的一步,而贝叶斯优化则是最为广为人知的一种“学习”超参数优化方法。 超参数优化的任务旨在帮助选择学习算法中成本(或目标)函数的一组最佳参数。这些参数可以是数据驱动的(例…

Java项目-瑞吉外卖Day5

视线新增套餐功能: 创建SetmealDish,SetmealDto类,与相关的mapper,service,serviceImpl,controller类。 Setmeal表示套餐,SetmealDish表示套餐对应的菜品。 交互过程: 前端请求&a…

【每日一题】最小体力消耗路径

文章目录 Tag题目来源解题思路方法一:二分枚举答案 写在最后 Tag 【二分枚举答案】【图】【2023-12-11】 题目来源 1631. 最小体力消耗路径 解题思路 拿到这个题目,计算从左上角到右下角的最小体力消耗值,有点像 64. 最小路径和。在 64 题…

FFmpeg的AVIOPROBE

文章目录 定义 可能你一直有疑问,ffmpeg的avformat是怎么提前知道码流是编码格式或者容器?恭喜你,看到这里,你找到答案了,在这里,ffmpeg通过这些probe函数来提前获取码流的编码格式。 看到下面的avs2_prob…

EasyExcel-最简单的读写excel工具类

前言&#xff1a; easyExcel 的官网文档给的示例非常全&#xff0c;可以参考https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read 在此我贴出自己的工具类&#xff0c;可以直接用 导包 <dependency><groupId>com.alibaba</groupId><…

【基础知识】大数据概述

关键词—分布式 化整为零&#xff0c;再化零为整 大数据的定义 传统数据库处理起来困难的数据集。 发展历程 中国开源生态图谱2023 参考内容 中国开源生态图谱 2023.pdf 技术组件说明 数据集成 sqoop、dataX、flume 数据存储 hdfs、kafka 数据处理 mapreduce、hive…

Vue快速入门教程

什么是Vue&#xff1f; 1&#xff0c;vue是一套前端框架&#xff0c;免除原生JavaScrip中dom操作&#xff0c;简化书写。 2&#xff0c;给予MVVM&#xff08;Model-View-ViewModel&#xff09;思想&#xff0c;实现数据的双向绑定&#xff0c;将编程的关注点放在数据上 官网&a…

jvs智能bi新增:数据集添加sql自定义节点、添加websocket任务进度动态展示等等

智能bi更新功能 新增: 1.数据集添加sql自定义输入节点&#xff0c;支持mysql Oracle数据源&#xff1b; 用户可以从这些数据源中获取数据&#xff0c;并通过SQL语句对数据进行自定义处理和分析。可以帮助用户更加灵活地处理和分析数据&#xff0c;满足各种个性化的需求。 2.…

Hive的metastore服务的两种运行模式

Hive的metastore服务的作用是为Hive CLI或者Hiveserver2提供元数据访问接口 1.metastore运行模式 metastore有两种运行模式&#xff0c;分别为嵌入式模式和独立服务模式。下面分别对两种模式进行说明&#xff1a; &#xff08;1&#xff09;嵌入式模式 &#xff08;2&#x…

基于ssm网上医院预约挂号系统+jsp论文

摘 要 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;因此传统管理方式就不适合。为了让医院预约挂号信息的管理模式进行升级&#xff0c;也为了更好的维护医院预约挂号信息&#xff0c;网上医院预约挂号系统的开发运用就显得很有…

基于SpringBoot+Vue社区医院服务系统(Java毕业设计)

点击咨询源码 大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的…

代码随想录算法训练营第三十八天|理论基础、509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

代码随想录 (programmercarl.com) 理论基础 一、题目类型&#xff1a; 动规基础、背包问题、打家劫舍、股票买卖、子序列问题 二、解题思路&#xff1a; 动态规划五部曲&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始…

yolov8安装过程中问题总结

1、ImportError: DLL load failed while importing _imaging: 找不到指定的模块。 解决办法&#xff1a; 卸载当前pillow版本&#xff0c;安装6.2.1版本 pip uninstall pillowpip install pillow6.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/2、No module named“req…

[面试篇~Spring] 必问基础知识

文章目录 1. 什么是 Spring2. Spring 框架有哪些主要的模块&#xff1f;3. 使用 Spring 框架能带来哪些好处&#xff1f;4. 什么是控制反转5. 什么是依赖注入6. 为什么使用依赖注入7. 在 Java 中依赖注入有哪几种方式8. 请解释下 Spring 框架中的 IoC&#xff1f;9. BeanFactor…

大数据讲课笔记1.4 进程管理

文章目录 零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;进程概述1、基本概念2、三维度看待进程3、引入多道编程模型&#xff08;1&#xff09;CPU利用率与进程数关系&#xff08;2&#xff09;从三个视角看多进程 4、进程的产生和消亡&#xff08;1&#xf…

go 编译apk

首先进行安装go 安装 wget https://studygolang.com/dl/golang/go1.21.5.linux-amd64.tar.gz tar zxvf go1.21.5.linux-amd64.tar.gz mv go /usr/local/ vim /etc/profile # 进行配置环境变量&#xff1a; export GOROOT/usr/local/go export PATH$PATH:$GOROOT/bin # 保存退…

算法Day28 二进制差异序列(格雷码)

二进制差异序列&#xff08;格雷码&#xff09; Description n 位二进制差异序列是一个由2^n个整数组成的序列&#xff0c;其中&#xff1a; 每个整数都在范围[0, 2^n - 1]内&#xff08;含0和2^n - 1&#xff09; 第一个整数是0 一个整数在序列中出现不超过一次 每对相邻整数…