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

Linux syslog 运行机制

Busybox的syslogd认识与使用

syslogd 的基本工作原理:

  • syslogd 是一个系统日志守护进程,它接收来自各种进程和系统服务的日志消息,并根据配置将这些消息存储到不同的日志文件中。

syslogd日志记录器由两个守护进程(klogd,syslogd)和一个配置文件(syslog.conf)组成。

syslogd和klogd是很有意思的守护进程,syslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括从klogd接收到的日志。

klogd首先接收内核的日志,然后将之发送给syslogd。

klogd不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为syslogd的客户端运行。

syslogd默认使用/etc/syslog.conf作为配置文件,负责截获应用程序消息,还可以截获klogd向其转发的内核消息。支持internet/unix domain sockets的特性使得这两个工具可以用于记录本地和远程的日志。

启动syslog之后,可以看出/var/log/messages在不停增加

  1. 重新启动syslogd /etc/init.d/syslogd restart

  2. 使用syslogd

2.syslogd配置syslog.conf

syslog.conf包括对syslogd的配置,每个配置包括两个域:selector和action。

2.1 syslog.conf的selector

selector有两部分组成:facility和level,两者之间用"."分隔;多个facility或者level之间用","分隔;多个selector之间用";"分隔

同时selector中可以使用通配符:

Name

Facility

Level

err/warn/...

任何一个facility

显示大于等于此级别的log

*

任何一个facility

任何一个级别

=

无效

只有该级别log才生效

!

无效

除了该级别,其他log生效

None

无效

不存储该facility任何log

2.2 syslog.conf的action

action主要是当信息满足selector时,该日志消息的输出方向。

一般分为三种:(1)存储到普通文件中;(2)写入到管道中;(3)远程转发到其它主机上。

常规文件

管道文件

远程转发

普通的文件名:/xx/bb

|文件名

@hostname

2.3 Facility和Level

提到syslog.con中的facility和level,需要看一下他在代码中对应关系。

相关facility和level都在syslog.h中定义,两这个共同组成一个32位数值;低3bit(0-3)表示level,其余部分(3-24)表示facility。

facilitynames[]中的名称对应syslog.conf中的facility,后面的值对应syslog()中的facility代码。

 

#ifdef SYSLOG_NAMES CODE facilitynames[] = { { "auth", LOG_AUTH }, { "authpriv", LOG_AUTHPRIV }, { "cron", LOG_CRON }, { "daemon", LOG_DAEMON }, { "ftp", LOG_FTP }, { "kern", LOG_KERN }, { "lpr", LOG_LPR }, { "mail", LOG_MAIL }, { "mark", INTERNAL_MARK }, /* INTERNAL */ { "news", LOG_NEWS }, { "security", LOG_AUTH }, /* DEPRECATED */ { "syslog", LOG_SYSLOG }, { "user", LOG_USER }, { "uucp", LOG_UUCP }, { "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, { "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, { "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, { "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, { NULL, -1 }

2.4 syslog.conf实例
 

#syslog.conf kern,user.* /var/log/messages #all messages of kern and user facilities kern.!err /var/log/critical #all messages of kern facility with priorities lower than err (warn, notice ...) .;auth,authpriv.none /var/log/noauth #all messages except ones with auth and authpriv facilities kern,user.*;kern.!=notice;*.err;syslog.none /var/log/OMG #some whicked rule just as an example =) . /dev/null #this prevents from logging to default log file (-O FILE or /var/log/messages)

Linux系统 coredump文件

Core dump 指的是进程由于异常或错误而终止时,系统将进程的内存映像(包括进程堆栈、寄存器状态等)保存到磁盘上的文件。这个文件可以用于分析进程崩溃的原因和状态。在 Linux 系统中,可以通过以下步骤

启用和使用 core dump:

1.使用ulimit命令:可以通过 ulimit-c unlimited命令使能Coredump文件的生成

2.修改系统配置文件:可以修改/proc/sys/kernel/core_pattern文件来指定coredump

3.gdb 分析your_program core.<pid>

ulimit -c unlimited

这个命令会将 core dump 文件的大小限制设置为无限制,这样就可以保存任何大小的 core dump 文件了。如果想要在每次启动系统时自动设置这个限制,可以将 ulimit -c unlimited 添加到系统启动脚本中,如 /etc/profile。

运行程序并生成 core dump 文件:在程序崩溃时,可以通过以下命令生成 core dump 文件:

ulimit -c unlimited # 先启用 core dump 支持 ./your_program # 运行程序

运行程序时,如果发生崩溃,系统会将进程的内存映像保存到一个 core dump 文件中。文件的名称通常是 core.<pid>,其中 <pid> 是进程的 ID。

分析 core dump 文件:可以使用 GDB 或其他调试工具来分析 core dump 文件,找出程序崩溃的原因和状态。例如,使用 GDB 可以通过以下命令来加载 core dump 文件:

gdb your_program core.<pid>

加载 core dump 文件后,可以使用 GDB 的各种命令来查看进程的状态、调用栈、寄存器状态等信息,以帮助分析崩溃原因。

原文链接:https://blog.csdn.net/weixin_42759508/article/details/138092162

文件的保存路径和命名规则

使用 sysctl 命令查看当前的 kernel.core_pattern 参数,它决定了核心转储文件的存储位置和格式

 

root@x9sp_armor_ap2:/var/log# sysctl kernel.core_pattern kernel.core_pattern = /data/coredump/current/core-%e-%p-%t-%s camshare coredump lost+found root@x9sp_armor_ap2:/data# cd coredump/ root@x9sp_armor_ap2:/data/coredump# ls -lh drwxr-xr-x 2 root root 1.0K Jan 1 05:00 backup -rw-r--r-- 1 root root 500.0M Jan 1 05:00 backup.img drwxr-xr-x 2 root root 1.0K Dec 31 2024 current -rw-r--r-- 1 root root 500.0M Jan 1 05:34 current.img root@x9sp_armor_ap2:/var/log# ls atop boot dmesg lastlog sa wtmp

armor_x9sp/yocto/meta-semidrive/recipes-core/coredump/coredump-data$ ls

coredump-data.sh coredump-profile.sh coredump.sh LICENSE

脚本的意思,在userdata分区划分2个500M,做成ext4软磁盘,然后分别存current和backup的数据,通过目录/data/coredump/backup 和/data/coredump/current 查看存储的内容

 

#!/bin/sh mkdir -p /data/coredump/backup mkdir -p /data/coredump/current if [ -e /data/coredump/backup.img ] && [ -e /data/coredump/current.img ] then tmp=/data/coredump/tmp.img mv /data/coredump/backup.img $tmp mv /data/coredump/current.img /data/coredump/backup.img mv $tmp /data/coredump/current.img fi if [ -e /data/coredump/current.img ] then echo "exist /data/coredump/current.img" else flimit=`ulimit -f` ulimit -f 1024000 dd if=/dev/zero of=/data/coredump/current.img bs=1M count=500 losetup /dev/loop7 /data/coredump/current.img mkfs.ext4 /dev/loop7 -N 8 ulimit -f $flimit fi losetup /dev/loop7 /data/coredump/current.img mount -t ext4 /dev/loop7 /data/coredump/current rm -rf /data/coredump/current/* if [ -e /data/coredump/backup.img ] then echo "exist /data/coredump/backup.img" else flimit=`ulimit -f` ulimit -f 1024000 dd if=/dev/zero of=/data/coredump/backup.img bs=1M count=500 losetup /dev/loop6 /data/coredump/backup.img mkfs.ext4 /dev/loop6 -N 8 ulimit -f $flimit fi losetup /dev/loop6 /data/coredump/backup.img mount -t ext4 /dev/loop6 /data/coredump/backup echo "/data/coredump/current/core-%e-%p-%t-%s" > /proc/sys/kernel/core_pattern

这里 /var/crash/core-%e-%p-%t 表示将核心转储文件存储在 /var/crash 目录下,文件名为 core-<程序名>-<进程PID>-<时间戳>

Config 配置

 

root@_ap2:/var/log# cat /etc/syslog.conf # /etc/syslog.conf Configuration file for busybox's syslogd utility root@x9sp_armor_ap2:/var/log# cat /etc/syslog-startup.conf # This configuration file is used by the busybox syslog init script, # /etc/init.d/syslog[.busybox] to set syslog configuration at start time. ## /mnt/nfs/mnt/share 这个在代码 sdrvnfsmnt ln -s /var/run/nfs ${D}/mnt/nfs DESTINATION=file # log destinations (buffer file remote) LOGFILE=/mnt/nfs/mnt/share/syslog_ap2/messages # where to log (file) REMOTE=loghost:514 # where to log (syslog remote) REDUCE=no # reduce-size logging DROPDUPLICATES=no # whether to drop duplicate log entries ROTATESIZE=4096 # rotate log if grown beyond X [kByte] ROTATEGENS=90 # keep X generations of rotated logs BUFFERSIZE=512 # size of circular buffer [kByte] FOREGROUND=no # run in foreground (don't use!) #LOGLEVEL=5 # local log level (between 1 and 8)

 

root@ap2:/data/coredump/current# ls -lhu -rw------- 1 root root 216.0K Jan 1 05:07 core-crash_program-1401-1704085667-11

 

root@_ap2:/etc# grep -rn "var/log" . ./sysconfig/sysstat:16:SA_DIR=/var/log/sa ./rc4.d/S99stop-bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./rc4.d/S99stop-bootlogd:69: cd /var/log ./rc2.d/S99stop-bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./rc2.d/S99stop-bootlogd:69: cd /var/log ./atop/atop.daily:4:LOGPATH=/var/log/atop ./rc5.d/S99stop-bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./rc5.d/S99stop-bootlogd:69: cd /var/log ./init.d/umountnfs.sh:14:# Write a reboot record to /var/log/wtmp before unmounting ./init.d/bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./init.d/bootlogd:69: cd /var/log ./init.d/dmesg.sh:10:if [ -f /var/log/dmesg ]; then ./init.d/dmesg.sh:14: mv -f /var/log/dmesg /var/log/dmesg.old ./init.d/dmesg.sh:17:dmesg -s 131072 > /var/log/dmesg ./init.d/stop-bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./init.d/stop-bootlogd:69: cd /var/log ./rcS.d/S07bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./rcS.d/S07bootlogd:69: cd /var/log ./rcS.d/S38dmesg.sh:10:if [ -f /var/log/dmesg ]; then ./rcS.d/S38dmesg.sh:14: mv -f /var/log/dmesg /var/log/dmesg.old ./rcS.d/S38dmesg.sh:17:dmesg -s 131072 > /var/log/dmesg ./rc1.d/S31umountnfs.sh:14:# Write a reboot record to /var/log/wtmp before unmounting ./rc6.d/S31umountnfs.sh:14:# Write a reboot record to /var/log/wtmp before unmounting ./login.defs:15:# Enable logging and display of /var/log/faillog login(1) failure info. ./login.defs:30:# Enable logging and display of /var/log/lastlog login(1) time info. ./login.defs:75:#SULOG_FILE /var/log/sulog ./login.defs:97:# last(1), when invoked as lastb(1), will read /var/log/btmp, so... ./login.defs:99:FTMP_FILE /var/log/btmp ./rc3.d/S99stop-bootlogd:67: [ -f /var/log/boot ] && [ -f /var/log/boot~ ] ./rc3.d/S99stop-bootlogd:69: cd /var/log ./rc0.d/S31umountnfs.sh:14:# Write a reboot record to /var/log/wtmp before unmounting ./default/volatiles/00_core:34:f root root 0664 /var/log/wtmp none ./default/volatiles/00_core:38:l root root 0755 /var/log /var/volatile/log ./default/volatiles/01_bootlogd:1:f root root 0644 /var/log/boot none ./default/volatiles/99_sysstat:1:d root root 0755 /var/log/sa none ./default/volatiles/99_sshd:2:f root root 0644 /var/log/lastlog none ./default/postinst:2:LOGFILE=/var/log/postinstall.log ./logrotate-dmesg.conf:4:/var/log/dmesg { ./logrotate.d/psaccs_atop:2:/var/log/atop/dummy_before { ./logrotate.d/psaccu_atop:2:/var/log/atop/dummy_after { ./lvm/lvm.conf:98: #file = "/var/log/lvm2.log"

/var/log/wtmp 是许多类 Unix 系统中用于记录用户登录和注销信息以及系统重启等事件的日志文件。系统管理员或相关工具可以通过查看这个文件来了解系统的使用情况和状态变化

在很多基于 Linux 的系统中, /var/log/sasysstat 软件包紧密相关,sysstat 用于收集、报告和保存系统活动信息。以下是关于 /var/log/sa 更详细的解读:

sysstat/var/log/sa 的关系

sysstat 包含了诸如 sar(System Activity Reporter)等工具,用于收集系统资源使用情况的数据,例如 CPU 使用率、内存使用、磁盘 I/O、网络流量等。

  • /var/log/sa 目录是 sysstat 存储这些收集到的数据的地方。该目录下通常会有以 sa 开头并跟上日期数字的文件,比如 sa01sa02 等,这些文件按天存储系统统计数据。例如,sa01 可能存储本月 1 号当天的系统活动数据

相关文章:

Linux syslog 运行机制

Busybox的syslogd认识与使用 syslogd 的基本工作原理&#xff1a; syslogd 是一个系统日志守护进程&#xff0c;它接收来自各种进程和系统服务的日志消息&#xff0c;并根据配置将这些消息存储到不同的日志文件中。 syslogd日志记录器由两个守护进程&#xff08;klogd&#x…...

ZYNQ初识10(zynq_7010)UART通信实验

基于bi站正点原子讲解视频&#xff1a; 系统框图&#xff08;基于串口的数据回环&#xff09;如下&#xff1a; 以下&#xff0c;是串口接收端的波形图&#xff0c;系统时钟和波特率时钟不同&#xff0c;为异步时钟&#xff0c;&#xff0c;需要先延时两拍&#xff0c;将时钟同…...

day38 tcp 并发 ,linux下的IO模型----IO多路复用

TCP 并发 由于tcp协议只能实现一对一的通信模式。为了实现一对多&#xff0c;有以下的的处理方式 1. 多进程 开销大 效率低 2. 多线程 创建线程需要耗时 3. 线程池 多线程模型创建线程耗时问题&#xff0c;提前创建 4. IO多路复用 在不创建进程和线程的前提下&#xff0c;对…...

el-date-picker 禁用一个月前、一个月后(当天之后)的时间 datetimerange

文章目录 功能需求今天是 2025-01-09示例1示例2 代码 Vue2 功能需求 时间范围选择器&#xff0c;最大时间选择尺度为一个月。 今天是 2025-01-09 示例1 选择 2025-01-02 日 禁用未来日期&#xff08;2025-01-09之后日期&#xff09; 禁用上月2号&#xff08;31日之前&#…...

ES6的高阶语法特性

一、模板字符串的高级用法 1.1.模板字符串的嵌套 模板字符串的嵌套允许在一个模板字符串内部再嵌入一个或多个模板字符串。这种嵌套结构在处理复杂数据结构或生成具有层级关系的文本时非常有用。 1. 嵌套示例 假设我们有一个包含多个对象的数组&#xff0c;每个对象都有名称、…...

数据在内存的存储

数据类型介绍 前面我们已经学习了基本的内置类型&#xff1a; char //字符数据类型 1字节 打印%c short //短整型 2字节 打印%hd int //整形 4字节 打印%d long long int //长整型 4/8字节 打印%ld l…...

【微服务】面试题 6、分布式事务

分布式事务面试题讲解 一、问题背景与解决方案概述 因微服务项目涉及远程调用可能引发分布式事务问题&#xff0c;需解决。主流解决方案有阿里 Seata 框架&#xff08;含 XA、AT、TCC 模式&#xff09;和 MQ。 二、Seata 框架关键角色 事务协调者&#xff08;TC&#xff09;&…...

VMware中Ubuntu如何连接网络?安排!

一、设置NAT模式 1、关闭Ubuntu虚拟机&#xff1a; 确保Ubuntu已经完全关机&#xff0c;而不是挂起或休眠状态。 2、编辑虚拟网络设置&#xff1a; 在VMware主界面点击“编辑”菜单&#xff0c;选择“虚拟网络编辑器”。 如果需要&#xff0c;选择VMnet8 (NAT模式)并点击“更改…...

最近在盘gitlab.0.先review了一下docker

# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上&#xff0c;实例是别的同事搭建的。最近又又又想了解一下&#xff0c;而且已经盘了一些了&#xff0c;所以写写记录一下。因为这个事儿没太多的进度压力&#xff0c;索性写到哪儿算哪儿&#xff0c;只要是新了解到的…...

TCP封装数据帧

void *send_data(void *arg) //这是一个发送数据的线程 {int sockfd init_tcp_cli("192.168.0.148",50000) //传ip和port&#xff0c;port 50000是因为大概前五万都被其它服务所占用&#xff0c;50000后是私人ipif(sockfd < 0){return NULL;}unsigned char …...

基于Springboot+Vue的仓库管理系统

开发一个基于Spring Boot和Vue的仓库管理系统涉及到前端和后端的开发。本文呢&#xff0c;给出一个简单的开发步骤指南&#xff0c;用于指导初入的新手小白如何开始构建这样一个系统&#xff0c;如果**你想直接学习全部内容&#xff0c;可以直接拉到文末哦。** 开始之前呢给小…...

工厂人员定位管理系统方案(二)人员精确定位系统架构设计,适用于工厂智能管理

哈喽~这里是维小帮&#xff0c;提供多个场所的定位管理方案&#xff0c;如需获取工厂人员定位管理系统解决方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信我们哦~撒花 在上一篇文章中&#xff0c;我们初步探讨了工厂人员定位管理系统的需求背景以及定位方…...

机器学习特征重要性之feature_importances_属性与permutation_importance方法

一、feature_importances_属性 在机器学习中&#xff0c;分类和回归算法的 feature_importances_ 属性用于衡量每个特征对模型预测的重要性。这个属性通常在基于树的算法中使用&#xff0c;通过 feature_importances_ 属性&#xff0c;您可以了解哪些特征对模型的预测最为重要…...

Go学习:多重赋值与匿名变量

目录 1. 变量的多重赋值 1.1 基本语法格式 1.2 交换变量值 2. 匿名变量的使用 1. 变量的多重赋值 1.1 基本语法格式 go语言中&#xff0c;可以将多个赋值语句 合并成 一句&#xff0c;比如&#xff1a; a : 10 b : 20 c : 30//a,b,c三个变量的赋值语句可以…...

解读Linux Bridge中的东西流向与南北流向

解读Linux Bridge中的东西流向与南北流向 在现代云计算和虚拟化环境中&#xff0c;网络流量的管理和优化变得越来越重要。Linux Bridge作为Linux内核提供的一个强大的二层交换机工具&#xff0c;在虚拟化和容器化应用中扮演着至关重要的角色。本文将深入探讨Linux Bridge中的两…...

spring mvn 国际化配置

目录 国际化配置测试测试自定义一个MessageSource类型的beanSpringApplicationUtil工具类MessageUtls工具类配置 国际化原理ResourceBundleMessageSource 国际化配置测试 测试 测试&#xff1a; 自定义一个MessageSource类型的bean import org.springframework.context.Mess…...

Windows下Dll在Unity中使用的一般方式

Windows下Dll在Unity中使用的一般方式 Unity中虽然已经有广泛的库和插件&#xff0c;但是相较于C的库生态而言&#xff0c;还是有一定的差距&#xff1b;因此本篇博文记录Windows下将C函数打包成动态链接库在Unity中使用的一般方法。 环境 Visual Studio 2019 &#xff0c; Uni…...

SQLite PRAGMA

SQLite的PRAGMA命令是一种特殊的命令&#xff0c;用于在SQLite环境中控制各种环境变量和状态标志。PRAGMA值可以被读取&#xff0c;也可以根据需求进行设置【0†source】。 PRAGMA命令的语法格式如下&#xff1a; 要查询当前的PRAGMA值&#xff0c;只需提供该PRAGMA的名字&am…...

Linux:进程控制

1.fork()函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0…...

一些计算机零碎知识随写(25年1月)-1

我原以为世界上有技术的那批人不会那么闲&#xff0c;我错了&#xff0c;被脚本真实了。 今天正隔着画画呢&#xff0c;手机突然弹出几条安全告警通知。 急忙打开服务器&#xff0c;发现问题不简单&#xff0c;直接关服务器重装系统..... 首先&#xff0c;不要认为小网站&…...

spring mvc源码学习笔记之十

前面的文章介绍了用 WebApplicationInitializer 或者 AbstractAnnotationConfigDispatcherServletInitializer 来代替 web.xml 。 我们学 java web 的时候就知道&#xff0c;servlet 容器会自动加载 web.xml。 那么&#xff0c;疑问就来了&#xff0c;WebApplicationInitialize…...

网络安全-安全散列函数,信息摘要SHA-1,MD5原理

安全散列函数 单向散列函数或者安全散列函数之所以重要&#xff0c;不仅在于消息认证(消息摘要。数据指纹)。还有数字签名&#xff08;加强版的消息认证&#xff09;和验证数据的完整性。常见的单向散列函数有MD5和SHA 散列函数的要求 散列函数的目的是文件、消息或者其它数据…...

《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》

《解锁计算机视觉智慧&#xff1a;编程实现图片场景文字描述的开源宝藏》 一、MiniGPT-4&#xff1a;小模型撬动大视觉理解&#xff08;一&#xff09;项目概览&#xff08;二&#xff09;核心亮点&#xff08;三&#xff09;上手体验 二、ClipCap-Chinese&#xff1a;中文场景…...

vue封装axios请求

在vue项目中我们发送请求一般是使用axios 我们可以封装axios来避免冗余代码 首先引入axios npm install axios创建环境配置文件 NODE_ENV development VITE_APP_TITLE dev VITE_APP_BASE_API /test VITE_SERVE "http://127.0.0.1"上面是创建dev配置文件 也可以…...

【前端动效】原生js实现拖拽排课效果

目录 1. 效果展示 2. 效果分析 2.1 关键点 2.2 实现方法 3. 代码实现 3.1 html部分 3.2 css部分 3.3 js部分 3.4 完整代码 4. 总结 1. 效果展示 如图所示&#xff0c;页面左侧有一个包含不同课程&#xff08;如语文、数学等&#xff09;的列表&#xff0c;页面右侧…...

Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。

文章目录 前言1 创建conda环境安装Selenium库2 浏览器驱动下载&#xff08;以Chrome和Edge为例&#xff09;3 基础使用&#xff08;以Chrome为例演示&#xff09;3.1 与浏览器相关的操作3.1.1 打开/关闭浏览器3.1.2 访问指定域名的网页3.1.3 控制浏览器的窗口大小3.1.4 前进/后…...

AI华佗?港中大、深圳大数据研究院提出医疗推理大模型HuatuoGPT-o1

编辑 | 白菜叶 OpenAI o1 的突破凸显了通过增强推理能力来提高自然语言大模型&#xff08;LLM&#xff09;的应用潜力。然而&#xff0c;大多数推理研究都集中在数学任务上&#xff0c;而医学等领域尚未得到充分探索。 医学领域虽然不同于数学&#xff0c;但鉴于医疗保健的高…...

openEuler22.03系统使用Kolla-ansible搭建OpenStack

Kolla-ansible 是一个利用 Ansible 自动化工具来搭建 OpenStack 云平台的开源项目&#xff0c;它通过容器化的方式部署 OpenStack 服务&#xff0c;能够简化安装过程、提高部署效率并增强系统的可维护性。 前置环境准备&#xff1a; 系统:openEuler-22.03-LTS-SP4 配置&…...

uni-app无限级树形组件简单实现

因为项目一些数据需要树形展示&#xff0c;但是官网组件没有。现在简单封装一个组件在app中使用&#xff0c;可以无线嵌套&#xff0c;展开&#xff0c;收缩&#xff0c;获取子节点数据等。 简单效果 组件TreeData <template><view class"tree"><te…...

初学stm32 --- ADC单通道采集

目录 ADC寄存器介绍&#xff08;F1&#xff09; ADC控制寄存器 1(ADC_CR1) ADC控制寄存器 2(ADC_CR2) ADC采样时间寄存器1(ADC_SMPR1) ADC采样时间寄存器2(ADC_SMPR2) ADC规则序列寄存器 1(ADC_SQR1) ADC规则序列寄存器 2(ADC_SQR2) ADC规则序列寄存器 3(ADC_SQR3) AD…...

css盒子水平垂直居中

目录 1采用flex弹性布局&#xff1a; 2子绝父相margin&#xff1a;负值&#xff1a; 3.子绝父相margin:auto&#xff1a; 4子绝父相transform&#xff1a; 5通过伪元素 6table布局 7grid弹性布局 文字 水平垂直居中链接&#xff1a;文字水平垂直居中-CSDN博客 以下为盒子…...

django基于Python的智能停车管理系统

1.系统概述 1.定义&#xff1a;Django 基于 Python 的智能停车管理系统是一个利用 Django 框架构建的软件系统&#xff0c;用于高效地管理停车场的各种事务&#xff0c;包括车辆进出记录、车位预订、收费管理等诸多功能。 2.目的&#xff1a;它的主要目的是提高停车场的运营效…...

Rabbit Rocket kafka 怎么实现消息有序消费和延迟消费的

在消息队列系统中&#xff0c;像 RabbitMQ、RocketMQ 和 Kafka 这样的系统&#xff0c;都支持不同的方式来实现消息的有序消费和延迟消费。下面我们分别探讨这些系统中如何实现这两种需求&#xff1a; 1. RabbitMQ&#xff1a;实现消息有序消费和延迟消费 有序消费&#xff1…...

Kafka 会丢消息吗?

目录 01 生产者(Producer) 02 消息代理(Broker) 03 消费者(Consumer) 来源:Kafka 会丢消息吗? Kafka 会丢失信息吗? 许多开发人员普遍认为,Kafka 的设计本身就能保证不会丢失消息。然而,Kafka 架构和配置的细微差别会导致消息的丢失。我们需要了解它如何以及何时…...

状态模式详解与应用

状态模式&#xff08;State Pattern&#xff09;&#xff0c;是一种行为型设计模式。它允许一个对象在其内部状态改变时改变它的行为&#xff0c;使得对象看起来似乎修改了它的类。通过将不同的行为封装在不同的状态类中&#xff0c;状态模式可以避免大量的条件判断语句&#x…...

红队工具使用全解析:揭开网络安全神秘面纱一角

红队工具使用全解析&#xff1a;揭开网络安全神秘面纱一角 B站红队公益课&#xff1a;https://space.bilibili.com/350329294 学习网盘资源链接&#xff1a;https://pan.quark.cn/s/4079487939e8 嘿&#xff0c;各位网络安全爱好者们&#xff01;在风云变幻的网络安全战场上&am…...

【Spring】Redis缓存+ehcache

文章目录 基于Spring的RedisehcacheRedis 缓存配置Cacheable 注解CacheEvict 注解缓存配置 基于Spring的Redisehcache Redis 缓存配置 在项目中添加 Redis 的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…...

【硬件介绍】Type-C接口详解

一、Type-C接口概述 Type-C接口特点&#xff1a;以其独特的扁头设计和无需区分正反两面的便捷性而广受欢迎。这种设计大大提高了用户的使用体验&#xff0c;避免了传统USB接口需要多次尝试才能正确插入的问题。Type-C接口内部结构&#xff1a;内部上下两排引脚的设计虽然可能不…...

网络传输层TCP协议

传输层TCP协议 1. TCP协议介绍 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一个要对数据的传输进行详细控制的传输层协议。 TCP 与 UDP 的不同&#xff0c;在于TCP是有连接、可靠、面向字节流的。具体来说&#xff0c;TCP设置了一大…...

Git 基础——《Pro Git》

⭐获取 Git 仓库 获取 Git 仓库有两种方式&#xff1a; 将未进行版本控制的本地目录转换为 Git 仓库。从其他服务器克隆一个已存在的 Git 仓库。 在已存在目录中初始化 Git 仓库 进入目标目录 在 Linux 上&#xff1a;$ cd /home/user/my_project在 macOS 上&#xff1a;$ c…...

数据结构与算法之二叉树: LeetCode 654. 最大二叉树 (Ts版)

最大二叉树 https://leetcode.cn/problems/maximum-binary-tree/ 描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值递归地在最大值 左边 的 子数组前缀上 构建左子树递归地在最大值…...

学习记录:C++宏定义包含多条语句,使用注意事项

应该使用 do - while(0) 结构的情况 在条件语句&#xff08;如 if - else、switch - case&#xff09;或循环语句&#xff08;如 for、while、do - while&#xff09;中使用宏&#xff1a; 当宏定义包含多条语句且会在上述语句中使用时&#xff0c;使用 do - while(0) 可确保…...

PHP 使用 Redis

PHP 使用 Redis PHP 是一种广泛使用的服务器端编程语言,而 Redis 是一个高性能的键值对存储系统。将 PHP 与 Redis 结合使用,可以为 Web 应用程序提供快速的读写性能和丰富的数据结构。本文将详细介绍如何在 PHP 中使用 Redis,包括安装、连接、基本操作以及一些高级应用。 …...

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(五)

文章目录 一、学生管理模块功能实现1、添加学生功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、学生管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码…...

下载并安装MySQL

在Linux系统上下载并安装数据库&#xff08;以MySQL为例&#xff09;的步骤如下&#xff1a; 一、下载MySQL 访问MySQL官网 打开浏览器&#xff0c;访问MySQL的官方网站&#xff1a;https://www.mysql.com/。 进入下载页面 在MySQL官网首页&#xff0c;找到并点击“Downloads…...

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…...

计算机视觉算法实战——车道线检测

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​​ ​​​​​​​​​​​​ ​​​​​ 车道线检测是计算机视觉领域的一个重要研究方向&#xff0c;尤其在自动驾驶和高级驾驶辅助…...

基于http协议的天气爬虫

该系统将基于目前比较流行的网络爬虫技术&#xff0c; 对网站上的天气数据进行查询分析&#xff0c; 最终使客户能够通过简单的操作&#xff0c; 快速&#xff0c; 准确的获取目标天气数据。主要包括两部分的功能&#xff0c; 第一部分是天气数据查询&#xff0c; 包括时间段数…...

自然语言处理基础:全面概述

自然语言处理基础&#xff1a;全面概述 什么是NLP及其重要性、NLP的核心组件、NLU与NLG、NLU与NLG的集成、NLP的挑战以及NLP的未来 自然语言处理&#xff08;NLP&#xff09;是人工智能&#xff08;AI&#xff09;中最引人入胜且具有影响力的领域之一。它驱动着我们日常使用的…...

软件架构考试基础知识 002:进程的状态与其切换

进程状态转换的说明 在操作系统中&#xff0c;进程的状态表示其当前的执行情况和资源占用情况。进程状态的转换反映了操作系统如何管理和调度进程。以下是进程状态转换的说明&#xff1a; 1. 三态模型&#xff08;Three-state Model&#xff09; 三态模型是最基础的进程状态模…...