当前位置: 首页 > news >正文

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

什么是登录档

【详细而确实的分析以及备份系统的登录文件】是一个系统管理员应该要进行的任务之一。
登录档 就是记录系统活动信息的几个文件,例如:何时、何地(来源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私房菜-基础篇》学习笔记

相关文章:

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

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

STM32上模拟CH340芯片的功能 (一)

#虚拟串口模拟CH340# 代码gitee地址:STM32F103_CH340: 用STM32模拟ch340USB串口的功能 一、思路 1. 确定通信接口:CH340是一款USB转串口芯片,因此您需要选择STM32上的某个USB接口来实现USB通信。通常情况下,STM32系列芯片都有内…...

图论——最小生成树

图论——最小生成树 A wise man changes his mind, a fool never will 生成树 一个连通图的生成树是一个极小的连通子图,它包含图中全部的n个顶点,但只有构成一棵树的n-1条边。 最小生成树 在这些边中选择N-1条出来,连接所有的N个点。这N-1…...

C++基础 -42- STL库之list链表

———————STL库之list链表——————— &#x1f384; list链表的格式(需要定义头文件) list<int> data1(4, 100);list<int> data2(4, 500);&#x1f384;list链表的合并接口 &#x1f384;举例使用合并接口并且验证 data2.merge(data1);list<int>::…...

Backend - Python 序列化

目录 一、作用1&#xff1a;代码块存入数据库 二、作用2&#xff1a;前后端传递数据 &#xff08;一&#xff09;前端 1. JSON.stringify() 2. JSON.parse() &#xff08;二&#xff09;后端 1. json.dumps() &#xff08;1&#xff09;作用 &#xff08;2&#xff09…...

初级数据结构(一)——顺序表

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 NULL | 初级数据结构&#xff08;二&#xff09;——链表 下一篇-> 1、顺序表的特点 1.1、数组 现实中数据记录一般都记录在表格中&#xff0c;如进货单、菜单等&#xff0c;它们的最大特点就是…...

实现:切换页面切换标题,扩展 vue-router 的类型

布局容器-页面标题 网址&#xff1a;https://router.vuejs.org/zh/guide/advanced/meta 给每一个路由添加 元信息 数据 router/index.ts const router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{ path: /login, component: () > im…...

已通过考试和认证注册以及后续计划表

已通过考试和认证注册以及后续计划表 软考 - 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试信息系统集成及服务项目管理人员工程类考试计划你关注的证书样子 软考 - 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试 高级 信息系统项目管理师&…...

开源计算机视觉库OpenCV详解

目录 1、概述 2、OpenCV详细介绍 2.1、OpenCV的起源 2.2、OpenCV开发语言 2.3、OpenCV的应用领域 3、OpenCV模块划分 4、OpenCV源码文件结构 4.1、根目录介绍 4.2、常用模块介绍 4.3、CUDA加速模块 5、OpenCV配置以及Visual Studio使用OpenCV 6、关于Lena图片 7、…...

使用pytorch查看中间层特征矩阵以及卷积核参数

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 1和4是之前讲过的alexnet和resnet模型 2是分析中间层特征矩阵的脚本 3是查看卷积核参数的脚本 1设置预处理方法 和图像训练的时候用的预处理方法保持一致 2实例化模型 3载入之前的模型参数 4载入…...

HarmonyOS4.0从零开始的开发教程09页签切换

HarmonyOS&#xff08;七&#xff09;页签切换 List组件和Grid组件的使用 Tabs组件的使用 概述 在我们常用的应用中&#xff0c;经常会有视图内容切换的场景&#xff0c;来展示更加丰富的内容。比如下面这个页面&#xff0c;点击底部的页签的选项&#xff0c;可以实现“首页…...

大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)

大电流H桥电机驱动电路的设计与解析&#xff08;包括自举电路的讲解&#xff0c;以IR2104LR7843为例&#xff09; 电机驱动板主要采用两种驱动芯片&#xff0c;一种是全桥驱动&#xff08;如&#xff1a;HIP4082&#xff09;&#xff0c;一种是半桥驱动&#xff08;如&#xff…...

windows11 windows 11 (win11 win 11) 怎么安装 Python3 ? numpy? sounddevice? 声音信号处理库?

首先确认要安装的 sounddevice 库&#xff0c;链接&#xff1a;https://python-sounddevice.readthedocs.io/en/0.4.6/ 根据文档&#xff0c;可知最新的 sounddevice 版本是 0.4.6 进入安装页面查看&#xff0c;发现 Newest sounddevice 可以使用 pip 安装&#xff0c;如下图…...

git如何配置多个远程仓库,并且进行切换

一、配置多个远程仓库并进行切换&#xff0c;请按照以下步骤进行操作&#xff1a; 打开命令行终端&#xff0c;并进入您的 Git 仓库所在的目录。添加第一个远程仓库&#xff0c;使用以下命令&#xff1a;git remote add origin <第一个远程仓库的 URL>这里将远程仓库命名…...

计算机存储单位 + 程序编译过程

C语言的编译过程 计算机存储单位 头文件包含的两种方式 使用 C/C 程序常用的IDE 常用的C语言编译器&#xff1a; 在选择编译器时&#xff0c;需考虑平台兼容性、性能优化、调试工具和开发人员的个人偏好等因素。 详细教程可转 爱编程的大丙...

vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)

目录 一、什么是Vue路由导航守卫&#xff1f; 二、全局守卫 1、beforeEach 下面是一个beforeEach的示例代码&#xff1a; 2、beforeResolve 下面是一个beforeResolve的示例代码&#xff1a; 3、afterEach 下面是一个afterEach的示例代码&#xff1a; 三、路由独享守卫…...

单片机双机通信控制跑马灯

实验要求 两个单片机各驱动8个LED灯&#xff0c;构成两个跑马灯&#xff0c;要求甲单片机LED的点亮方式是从上至下&#xff0c;首先是最上面第一个点亮、其次是前两个点亮、其次是前三个点亮……直至8个灯全部点亮&#xff0c;8个灯全部灭&#xff0c;重复这个过程&#xff0c…...

微信小程序:button微信开放能力打开客服会话分享到聊天框

文档 https://developers.weixin.qq.com/miniprogram/dev/component/button.html 打开客服会话 按钮关键属性 open-type"contact"功能按钮 <button class"mo-open-type"open-type"contact"> </button>分享 <button class&q…...

【数据结构】——队列实现二叉树的功能

前言&#xff1a;二叉树的实现方式多种多样&#xff0c;有数组实现满二叉树&#xff0c;有链表实现完全二叉树&#xff0c;今天我们就用队列来实现二叉树。 创建二叉树&#xff1a; typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTre…...

【已解决】Win7虚拟机安装VMtools报错

在做以前的实验的时候发现要用到Win7虚拟机&#xff0c;于是就安装了一个Win7的虚拟机&#xff0c;但是发现屏幕太小&#xff0c;而且来回复制文本、复制文件太不方便了&#xff0c;索性就安装了VMtools&#xff0c;发现还安装不成– 情况1 报错&#xff1a;本程序需要您将此…...

华为OD机试真题-小明找位置-2023年OD统一考试(C卷)

题目描述&#xff1a; 小朋友出操&#xff0c;按学号从小到大排成一列&#xff1b;小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n)&#xff1b;学号为整数类型&#xff0c;队列规模<10000&#xff1b; 输…...

2023.2版idea安装教程,现在jdk8已经过去式了,不同idea支持的jdk不同。升级jdk后idea也要随之升级

下载idea2023.2版本&#xff0c;下载之前需要删除之前的版本&#xff0c;一定要删除干净&#xff0c;删除程序要勾选那两个delete 下载路径&#xff1a;其他版本 - IntelliJ IDEA (jetbrains.com.cn) 选择2023.2版本 下载后进入安装程序&#xff0c;选择安装目录&#xff0c;然…...

CSS3技巧36:让内容垂直居中的三种方式

让内容垂直居中&#xff0c;是一个很重要的应用情景&#xff0c;在很多场合都会需要。这也是面试的时候&#xff0c;一些考官喜欢拿来初面的小题目。 这里&#xff0c;小结下让内容垂直居中的三种方式。 当然&#xff0c;读者如果有更好的方法&#xff0c;也可以提出来。 基本…...

空间运算设备-Apple Vision Pro

苹果以其在科技领域的创新而闻名&#xff0c;他们致力于推动技术的边界&#xff0c;这在他们的产品中表现得非常明显。他们尝试开发一项的新型突破性显示技术。在 2023 年 6 月 5 日官网宣布将发布 Apple Vision Pro 头戴空间设备&#xff0c;我们一起来了解一下 Apple Vision …...

cocos creator “TypeError: Cannot set property ‘string‘ of null

背景&#xff1a; 学习cocos creator时遇到"TypeError: Cannot set property string of null" 错误。具体代码如下&#xff1a;property({ type: Label })public stepsLabel: Label | null null;update(deltaTime: number) {this.stepsLabel.string Math.floor(…...

简谈MySQL的binlog模式

一、MySQL的binlog模式介绍 MySQL的binlog模式是一种日志模式&#xff0c;用于记录对MySQL数据库进行的更改操作。通过启用binlog模式&#xff0c;可以将数据库的更改操作记录到二进制日志文件中&#xff0c;以便在后续需要时进行恢复和复制。 要启用binlog模式&#xff0c;请…...

Linux 环境部署RabbitMQ

1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一&#xff1a;在线拉取 docker pull rabbitmq:3-management 方式二&#xff1a;从本地加载&#xff08;本文章带有mq安装包&#xff09; docker load -i mq.tar 1.2.安装MQ 执行下面的命令来运行…...

【1day】泛微e-office OA系统xml.php 文件 SORT_ID 参数 SQL 注入漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

智能无人零售:革新零售消费体验的未来

智能无人零售&#xff1a;革新零售消费体验的未来 在当今数字化时代&#xff0c;智能无人零售正以惊人的速度改变着我们的购物方式和消费体验。这一新兴领域的发展&#xff0c;为消费者带来了前所未有的便利和个性化选择。 智能无人零售是指利用先进的智能技术和自动化系统&…...

代币化对网约车区块链平台的影响

The effects of tokenization on ride-hailing blockchain platforms 再一次分析一下一篇关于区块链的文章&#xff0c;这篇文章比较新&#xff0c;2023年发表在POMS上。 由于这篇文章跟之前那几篇关注假货的文章的重点不一样&#xff0c;所以需要仔细读一下他的INTRODUCTION…...

YOLOv7 学习笔记

文章目录 前言一、YOLOv7贡献和改进二、YOLOv7核心概念三、YOLOv7架构改进总结 前言 在深度学习和计算机视觉领域&#xff0c;目标检测一直是一个极具挑战性和实用性的研究领域。特别是在实时目标检测方面&#xff0c;准确率和速度之间的平衡成为了关键考量因素。YOLO&#xf…...

【51单片机系列】74HC595实现对LED点阵的控制

本文是关于LED点阵的使用&#xff0c;使用74HC595模块实现对LED点阵的控制。 文章目录 一、8x8LED点阵的原理1.1 LED点阵显示原理1.2 LED点阵内部结构图1.3 开发板上的LED点阵原理图1.4 74HC595芯片 二、使用74HC595模块实现流水灯效果三、 使用74HC595模块控制LED点阵对角线亮…...

Canal笔记:安装与整合Springboot模式Mysql同步Redis

官方文档 https://github.com/alibaba/canal 使用场景 学习一件东西前&#xff0c;要知道为什么使用它。 1、同步mysql数据到redis 常规情况下&#xff0c;产生数据的方法可能有很多地方&#xff0c;那么就需要在多个地方中&#xff0c;都去做mysql数据同步到redis的处理&…...

C++的继承语法

在面向对象编程中&#xff0c;继承是一种强大的机制&#xff0c;允许一个类&#xff08;子类&#xff09;从另一个类&#xff08;父类&#xff09;继承属性和方法。C是一种支持面向对象编程的编程语言&#xff0c;通过其灵活而强大的继承语法&#xff0c;开发者可以构建更加模块…...

C# .NET平台提取PDF表格数据,并转换为txt、CSV和Excel表格文件

处理PDF文件中的内容是比较麻烦的事情&#xff0c;特别是以表格形式呈现的各种数据。为了充分利用这些宝贵的数据资源&#xff0c;我们可以通过程序提取PDF文件中的表格&#xff0c;并将其保存为更易于处理和分析的格式&#xff0c;如txt、csv、xlsx&#xff0c;从而更方便地对…...

spring boot学习第五篇:spring boot与JPA结合

1、准备表&#xff0c;创建表语句如下 CREATE TABLE girl (id int(11) NOT NULL AUTO_INCREMENT,cup_Size varchar(100) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4…...

代理IP怎么使用?Mac苹果系统设置http代理IP教程

代理IP是一种通过将请求转发到另一个服务器&#xff0c;以隐藏自己的真实IP地址的服务器。使用代理IP可以保护您的隐私和安全&#xff0c;防止被跟踪或被攻击。在本文中&#xff0c;我们将介绍如何在Mac苹果系统上设置http代理IP教程。 一、了解代理IP 代理IP地址是一种可以用来…...

postgresql_conf中常用配置项

在 PostgreSQL 的 postgresql.conf 配置文件中&#xff0c;有许多常用的配置项&#xff0c;这些配置项可以根据特定需求和性能优化进行调整。以下是一些常用的配置项及其作用&#xff1a; 1. shared_buffers 用于设置 PostgreSQL 实例使用的共享内存缓冲区大小。增加此值可以…...

使用MfgTool烧写前需准备的文件

一. 简介 本文我们就来学习&#xff0c;如何将我们编译的 uboot&#xff0c;zImage&#xff08;内核镜像&#xff09;&#xff0c;xxx.dtb设备树文件&#xff0c;还有制作的根文件系统&#xff0c;这四个文件烧写到开发板中&#xff0c;最后 开发板能正常启动。 本文这里使用…...

SAP UI5 walkthrough step4 XML Views

SAPUI5 指出多种VIEW类型&#xff0c;包括XML,HTML,JavaScript 推荐使用XML&#xff0c;因为可读性更高 我们提前介绍一下MVC架构。 MVC是一种软件架构模式&#xff0c;它包括三个主要组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;…...

Java 1对1

文章目录 前言 客户端 服务器端 输出线程端 End 前言 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的网络传输协议&#xff0c;它提供了端到端的数据传输和可靠性保证。 本程序就是基于tcp协议编写而成的。 利用 TCP 协议进行通信的…...

云服务器Centos中安装Docker

云服务器Centos中安装Docker 1 简介DockerCentosCentos和Ubuntu区别 2 安装3 测试hello-world的镜像测试 1 简介 Docker Docker是一个开源的应用容器引擎&#xff0c;利用操作系统本身已有的机制和特性&#xff0c;可以实现远超传统虚拟机的轻量级虚拟化。它支持将软件编译成…...

人工智能教程(三):更多有用的 Python 库

目录 前言 推荐 JupyterLab 入门 复杂的矩阵运算 其它人工智能和机器学习的 Python 库 前言 在本系列的上一篇人工智能教程&#xff08;二&#xff09;&#xff1a;人工智能的历史以及再探矩阵中&#xff0c;我们回顾了人工智能的历史&#xff0c;然后详细地讨论了矩阵。在…...

【带头学C++】----- 九、类和对象 ---- 9.10 C++设计模式之单例模式设计

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️麻烦您点个关注&#xff0c;不迷路❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目 录 9.10 C设计模式之单例模式设计 举例说明&#xff1a; 9.10 C设计模式之单例模式设计 看过我之前的文章的&#xff0c;简单讲解过C/Q…...

Qt之QCache和QContiguousCache

一.QCache QCache在构造的时候指定了缓存中允许的最大成本,也就是如下构造函数中的参数maxCost。默认情况下,QCaches maxCost() 是100。 QCache(int maxCost = 100) ~QCache() void clear() bool contains(const Key &key) const int count() const bool insert(const …...

Django讲课笔记01:初探Django框架

文章目录 一、学习目标二、课程导入&#xff08;一&#xff09;课程简介&#xff08;二&#xff09;课程目标&#xff08;三&#xff09;适用人群&#xff08;四&#xff09;教学方式&#xff08;五&#xff09;评估方式&#xff08;六&#xff09;参考教材 三、新课讲授&#…...

JS中的闭包

闭包 闭包的概念其实很简单&#xff0c;就是函数A内部有一个函数B,函数B可以访问函数A的变量。也就是说闭包是指有权访问另一个函数作用域中变量的函数&#xff0c;利用闭包可以突破作用域链。 闭包的特性&#xff1a; 1、函数内再嵌套函数 2、内部函数可以引用外层的参数和变…...

深度学习在计算机视觉中的应用

深度学习在计算机视觉中的应用 摘要&#xff1a;本文介绍了深度学习在计算机视觉领域的应用&#xff0c;包括目标检测、图像分类、人脸识别等。通过分析深度学习在计算机视觉中的实际应用案例&#xff0c;阐述了深度学习在计算机视觉中的优势和未来发展趋势。 一、引言 计算…...

模板与泛型编程

函数模板 显示实例化 区别定义与声明 T是模板形参 int是模板实参 inpunt是函数形参 3是函数实参 显示实例化 模板必须实例化可见 翻译单元一处定义原则 与内联函数异同 引入原因&#xff1a;函数模板是为了编译器两个阶段的处理 内联函数是为了能在编译期展开 模板实参的类…...

【Fastadmin】一个完整的轮播图功能示例

目录 1.效果展示&#xff1a; 列表 添加及编辑页面同 2.建表&#xff1a; 3.使用crud一键生成并创建控制器 4.html页面 add.html edit.html index.php 5.js页面 6.小知识点 1.效果展示&#xff1a; 列表 添加及编辑页面同 2.建表&#xff1a; 表名&#xff1a;fa_x…...