rsyslog学习

rsyslog是什么

RSYSLOG(Remote System Logging)是一个开源的日志处理工具,用于在 Linux 和 Unix 系统上收集、处理和转发日志。它是一个健壮且高性能的日志处理程序,可以替换 Syslogd 作为标准的系统日志程序。RSYSLOG 提供了许多高级功能,如支持多种协议、过滤消息、模板处理和热插拔输出模块等。

RSYSLOG 具有以下主要特点:

  1. 高性能:相较于传统的 Syslogd,RSYSLOG 在日志处理和转发上提供了更高的性能。

  2. 可扩展性:通过插件和模块,可以轻松地扩展 RSYSLOG 的功能,并支持不同的输入/输出目标,例如数据库、消息队列、文件、网络等。

  3. 过滤和处理能力:RSYSLOG 提供了高级过滤和处理功能,可以基于正则表达式、属性比较、IF/THEN 构造等对日志进行筛选和处理。这使得 RSYSLOG 能更好地满足实际应用的要求。

  4. 支持多种协议:RSYSLOG 支持多种日志传输协议,如 TCP、UDP、TLS(加密日志传输)等。这为日志传输提供了更多选择。

  5. 可配置性:RSYSLOG 提供了一个灵活的配置文件(rsyslog.conf),可以通过这个文件调整日志收集、处理和转发的细节。

RSYSLOG 在许多 Linux 发行版(如 Ubuntu、CentOS 或 Debian 等)中是默认的系统日志工具。对于运维人员而言,熟悉和掌握 RSYSLOG 的使用是很有价值的,因为它可以帮助他们更好地监控和管理系统日志。

rsyslog在服务器端和客户端怎样配置(udp方式)

要配置RSYSLOG以使用UDP方式在服务器端和客户端之间传输日志,请按照以下步骤操作。

**服务器端配置**

1. 首先,打开RSYSLOG配置文件。通常,该文件位于`/etc/rsyslog.conf`。使用文本编辑器打开该文件,如`sudo nano /etc/rsyslog.conf`。

2. 在配置文件中,取消注释或添加以下行以启用UDP接收器:

module(load="imudp")
input(type="imudp" port="514")

这将加载`imudp`模块并侦听端口514上的UDP日志信息。

3. (可选)您还可以配置服务器端将远程日志存储在单独的文件中,以便于管理;在配置文件中添加以下行:

$template RemoteLogs,"/var/log/remote/%HOSTNAME%.log"
*.* ?RemoteLogs

这将为每个远程客户端创建一个单独的日志文件,文件名格式为`<客户端主机名>.log`。

4. 保存并关闭配置文件。

5. 重新启动RSYSLOG服务以应用更改:

sudo systemctl restart rsyslog

**客户端配置**

1. 打开客户端的RSYSLOG配置文件,通常位于`/etc/rsyslog.conf`。使用文本编辑器打开该文件,例如`sudo nano /etc/rsyslog.conf`。

2. 在配置文件中,添加以下行以将日志消息发送到远程服务器(将`<your_server_ip>`替换为服务器的IP地址):

*.* @<your_server_ip>:514

注意`@`符号表示使用UDP方式。另外,端口号"514"也应与服务器端的配置一致。

3. 保存并关闭配置文件。

4. 重新启动RSYSLOG服务以应用更改:

sudo systemctl restart rsyslog

现在,客户端应开始将其日志消息通过UDP方式发送到服务器。服务器将按照配置文件中指定的设置接收并存储这些日志消息。

rsyslog客户端怎样通过udp发送消息,logger怎么用

你可以使用 logger 命令在RSYSLOG客户端上通过UDP发送消息。logger 是一个用于在UNIX和类UNIX操作系统上添加日志的命令行实用程序。通过指定远程服务器的IP地址和端口,logger 可以将日志消息发送到该服务器。

假设你已经按照前面提到的指南配置了RSYSLOG客户端,那么你可以使用以下命令通过UDP发送日志消息(将<your_server_ip>替换为服务器的IP地址):

logger --udp --server <your_server_ip> --port 514 "This is a test log message."

这里:

  • --udp 表示使用UDP协议。
  • --server 指定了远程服务器的IP地址。
  • --port 指定了远程服务器的UDP端口号。
  • This is a test log message. 是要发送的日志消息。

执行此命令后,日志消息将被发送到指定的远程服务器,服务器应根据其配置文件接收并处理消息。

同时,logger 还具有其他选项可以用于定制日志消息。例如:

  • -p:设置消息的优先级,例如-p local0.info(默认为:user.info)。
  • -t:为消息添加TAG,例如-t MyCustomTag(默认为:logger)。

要获取有关 logger 的更多信息和选项,您可以在终端中输入 man logger 或 logger --help 以查看帮助文档。

rsyslog内部处理机制

RSYSLOG 的内部处理机制主要包括以下几个阶段:

1. **输入模块(Input Modules)**:输入模块负责从各种来源收集日志数据。输入模块可以获取来自文件、内核、程序、网络(TCP/UDP)等的日志。RSYSLOG 提供了一系列内置模块,同时还支持自定义开发的模块。输入模块将收集到的数据转换成公共格式,然后传递给主管道进行处理。

2. **主管道(Main Message Queue)**:主管道是 RSYSLOG 内部处理过程的核心。日志消息从输入模块进入主管道,然后根据配置文件中指定的规则进行处理。主管道可以进行数据过滤、转换、聚合等操作。配置文件中定义的各种条件、模板和动作都在主管道中执行。

3. **动作队列(Action Queues)**:主管道处理完日志消息后,消息会进入动作队列。动作队列负责将日志消息以异步方式传递给对应的输出模块。动作队列可以为每个输出模块维护一个单独的队列,确保输出模块可以独立地处理消息,而不影响其他模块。动作队列还可以使用不同的调度策略、磁盘缓存和流控等机制,提高系统的稳定性。

4. **输出模块(Output Modules)**:输出模块负责将日志消息写入最终的目标。RSYSLOG 支持多种输出目标,包括文件、数据库、远程服务器、消息队列等。输出模块会从动作队列中获取日志消息,然后根据指定的格式和设置将消息写入对应的目标。

RSYSLOG 的内部处理机制采用了模块化、分层的设计,提供了丰富的功能和灵活性。通过合理配置输入、主管道、动作队列和输出模块,您可以实现各种复杂的日志处理需求。

rsyslog中的队列

RSYSLOG 中的队列是一个用于在输入模块、主管道、动作队列之间传递日志消息的缓冲区。队列以异步方式处理日志消息,提高了 Rsyslog 的性能和稳定性。在 Rsyslog 中有两种队列类型:主消息队列(Main Message Queue)和动作队列(Action Queues)。

1. **主消息队列(Main Message Queue)**

主消息队列是 Rsyslog 中的主要队列。当输入模块接收到日志消息时,它们首先存储在主消息队列。接着,Rsyslog 根据配置文件中定义的规则、过滤器和模板处理这些日志消息。经过处理后,日志消息会被分发到相应的动作队列。

主消息队列具有以下特点:

- 异步处理:主消息队列能够确保输入模块在将数据写入队列后立即返回,而不需要等待主管道处理完成。
- 内存限制:主消息队列可以配置内存限制,当队列达到最大内存值时,可以选择丢弃消息或将其写入磁盘。
- 调度策略:Rsyslog 可以在主消息队列中实现不同的调度策略,如直接、平衡、随机等。

2. **动作队列(Action Queues)**

当主消息队列处理完日志消息后,消息会进入相应的动作队列,动作队列负责将消息传递给对应的输出模块。每个输出目标都可以有一个单独的动作队列。

动作队列具有以下特点:

- 异步处理:动作队列确保输出模块在接收到消息后不会阻塞主消息队列的处理速度。
- 独立性:每个输出目标可以维护一个单独的动作队列,确保输出模块之间不会相互干扰。
- 磁盘缓存:动作队列支持将消息在磁盘上进行缓存,当内存队列溢出或系统未响应时,缓存的消息可以重启后继续处理。
- 流控制:通过流控制机制,动作队列能够限制输出模块的处理速度,以避免过载系统。

要配置 Rsyslog 队列,你需要编辑配置文件(通常位于 `/etc/rsyslog.conf` )。配置文件中,你可以设置队列的内存限制、磁盘缓存、调度策略等参数。具体的配置选项和语法可以参考 Rsyslog 官方文档:https://www.rsyslog.com/doc/v8-stable/configuration/queues.html

rsyslog中的多线程是在哪个模块中

RSYSLOG 中的多线程支持主要适用于输入模块、动作队列和部分输出模块。通过多线程,RSYSLOG 可以更有效地处理并发日志事件,并提高其处理能力和性能。

1. **输入模块**: 对于多个输入源(如网络、文件、系统日志等)的处理,输入模块可以采用多线程。RSYSLOG 中的某些输入模块已实现了多线程处理,如 `imrelp` (用于 RELP 协议) 和 `imtcp` (用于 TCP 协议)。这些输入模块可以在独立的线程中接收和处理日志消息,减轻了主消息队列的负担。

2. **动作队列**: 动作队列是 RSYSLOG 中实现多线程处理的关键部分。每个动作队列可以在独立的线程中运行,将日志消息传递给对应的输出模块。这样一来,不同的输出目标之间可以实现并行处理,提高了整体性能。

3. **输出模块**: 部分输出模块也支持多线程处理。例如,`omfwd` (用于将日志消息转发到远程服务器) 和 `omelasticsearch` (用于将日志消息传输到 Elasticsearch)。这些多线程输出模块可以在独立的线程中处理消息传输任务,防止阻塞其他输出操作。

综上所述,RSYSLOG 的多线程支持主要集中在输入模块、动作队列和部分输出模块。通过多线程处理,RSYSLOG 可以实现更高效的日志处理和传输。

rsyslog中的队列是无锁队列

RSYSLOG 中的队列采用了无锁队列(Lock-Free Queue)的设计。无锁队列可以在多线程环境下高效并发地操作,避免了因为锁争用导致的性能问题。相比于传统的基于锁的队列,无锁队列在保证线程安全的前提下,节省了锁操作的开销,从而提高了性能。

RSYSLOG 之所以采用无锁队列设计,主要是为了在多线程处理模式下提供更好的性能。当输入模块、主消息队列、动作队列和输出模块之间存在多线程并发时,无锁队列可以降低线程之间的争用,减少等待时间,提高吞吐量。

需要注意的是,虽然无锁队列有较好的性能优势,但在实现和调试方面会比基于锁的队列更加复杂。在架构和开发 RSYSLOG 之初,开发团队充分权衡了这些因素,最终选择了无锁队列作为 RSYSLOG 的核心队列实现。

总之,RSYSLOG 中的队列是采用无锁队列设计的,这有助于在多线程环境下提高并发性能,避免锁争用带来的性能问题。

rsyslog可以用在公网收集日志吗

RSYSLOG 本身具备通过公网收集日志的能力。然而,将 RSYSLOG 配置在公网中的日志收集服务时,需要注意一些安全和可靠性方面的问题。以下是一些建议,可以帮助你更安全地在公网部署 RSYSLOG :

1. **使用加密协议**:使用如 RELP(Reliable Event Logging Protocol)或者 TLS/SSL 以加密方式传输日志数据。这可以提高数据传输的安全性,防止日志数据被截获或篡改。

2. **强制身份验证**:为发送和接收方配置身份验证,以确保只有合法的客户端和服务器之间才能传输日志数据。例如,可以使用 TLS/SSL 证书进行双向认证。

3. **使用防火墙限制访问**:配置防火墙限制访问 RSYSLOG 服务器的来源 IP 和端口,以减少潜在的恶意攻击。

4. **遵循最小权限原则**:确保 RSYSLOG 以最小权限运行,以减少安全漏洞风险。避免使用 root 用户运行 RSYSLOG 进程。

5. **定期更新和打补丁**:跟踪和应用 RSYSLOG 及其依赖库的安全更新,及时修补潜在的安全漏洞。

6. **日志审计和监控**:定期审查和监控 RSYSLOG 服务器的日志记录,以便迅速发现和应对潜在的安全威胁。

综上,虽然 RSYSLOG 可以用于公网日志收集,但你需要确保采取有效的安全措施来降低风险。在公网环境下,保护日志数据的安全性和确保系统的可靠性非常重要。

怎样优化rsyslog的性能

在详细解释如何优化 RSYSLOG 性能之前,需要了解影响 RSYSLOG 性能的因素主要包括:硬件资源、输入和输出模块的配置、队列配置、过滤器和模板等。下面详细介绍一些优化 RSYSLOG 性能的策略:

1. **使用多线程输入模块**:对于多个输入源(如网络、文件、系统日志等)的处理,使用多线程输入模块可以缩短处理时间并提高并发性能。例如,选择使用 `imtcp` 和 `imrelp` 等支持多线程的输入模块。

2. **调整队列配置**:
   - *使用内存队列*:在内存队列中存储日志消息比磁盘队列更快。如果在容量和数据可靠性方面允许的情况下,可以使用内存队列代替磁盘队列。
   - *增加队列大小*:根据系统负载情况,增加主消息队列和动作队列的大小,以便在高流量情况下避免队列阻塞。
   - *使用批量处理*:通过调整队列的高窗口水位线、低窗口水位线和批量处理数,可以减少每次处理日志消息时的系统开销。

3. **优化日志过滤器和模板**:
   - 使用简单的过滤器规则,避免使用复杂的正则表达式,以减少规则匹配过程中的计算开销。
   - 优化模板,确保模板格式化过程简洁高效。
   - 如果有多个类似的过滤条件,可以合并为一个条件,以简化规则和提高性能。

4. **调整 I/O 缓冲区大小和批量处理设置**:
   - 根据系统环境和网络条件,调整 I/O 缓冲区大小,以减少 I/O 阻塞和等待时间。
   - 启用批量处理功能,可以减少每次处理日志消息时的系统开销。

5. **使用高性能硬件和网络设备**:
   - 高性能的 CPU、内存和存储设备可以提高 RSYSLOG 处理能力。
   - 使用高带宽、低延迟的网络设备,保证日志消息快速传输。

6. **限制无用日志的接收和处理**:
   - 尽量过滤掉不相关、无用的日志,避免额外的处理和存储开销。
   - 在配置中设置日志丢弃功能,以应对突发流量过载。

7. **调整 RSYSLOG 各项配置**:
   - 配置文件中增加 `$ActionQueueType LinkedList`,设置队列类型为链表。
   - 设置 `$ActionResumeRetryCount` 为较大值,以减少失败和重连尝试导致的资源浪费。
   - 调整 `$ActionQueueDequeueBatchSize`,设置更高的批量处理数目。

8. **监控和调整 RSYSLOG 性能**:
   - 定期监控 RSYSLOG 的性能指标(如 CPU 占用、内存占用等),以便针对性地进行调优。
   - 及时发现潜在的性能瓶颈,进一步优化配置和使用策略。

这些优化策略可以帮助你在实际环境中提高 RSYSLOG 的性能。不过,在尝试这些优化策略时,请务必根据自己的系统环境和需求进行调整。并通过测试和监控,确定最佳配置。

rsyslog匹配解析日志

当然可以。这里有一个更复杂的示例,展示了如何使用 rsyslog 配置文件中的过滤器和模板来匹配、解析和处理日志消息。这个示例包括从日志消息中提取关键信息,同时将不同类型的日志消息写入不同的日志文件。

首先,我们在 rsyslog 配置文件中定义两个模板,分别针对 error 和 info 日志级别:

# Custom templates
$template ErrorTemplate, "[%timestamp% %host%] %msg%\n"
$template InfoTemplate, "[%timestamp% %host%] %msg%\n"

接下来,我们创建一个过滤器,该过滤器首先检查消息是否包含 "error" 或 "info"。然后我们使用正则表达式提取日志消息中的一些关键信息,如用户 ID 和错误代码,并根据日志级别将消息写入不同的日志文件:

# Define regular expressions for key information extraction
$!UID=regex:^(?:.*UserID[:=]{1}\s?)(\d+).*
$!ErrorCode=regex:^(?:.*ErrorCode[:=]{1}\s?)(\w+).*# Filter for error messages
:msg, contains, "error" {# Extract key information using regular expressionsset $!UID = re_extract($!msg, $!UID, 0, "", "");set $!ErrorCode = re_extract($!msg, $!ErrorCode, 0, "", "");# Save message with ErrorTemplateaction(type="omfile" file="/var/log/custom_error.log" template="ErrorTemplate")stop # Stop processing this message
}# Filter for info messages
:msg, contains, "info" {# Extract key information using regular expressionsset $!UID = re_extract($!msg, $!UID, 0, "", "");# Save message with InfoTemplateaction(type="omfile" file="/var/log/custom_info.log" template="InfoTemplate")stop # Stop processing this message
}

在这个示例中,我们定义了两个过滤器,一个用于处理包含 "error" 的日志消息,另一个用于处理包含 "info" 的日志消息。在每个过滤器中,我们使用正则表达式提取关键信息,并将消息写入不同的日志文件。如果日志消息与过滤器中的条件匹配,则通过 stop 命令阻止进一步处理该日志消息。

这个示例展示了使用 rsyslog 配置文件进行更复杂的匹配、解析和处理日志消息。您可以根据自己的需求调整过滤器的逻辑,以满足特定的日志处理场景。

在上面的示例中,我们使用 re_extract() 函数和正则表达式提取日志消息中的关键信息。以下两行定义了提取用户 ID 和错误代码所需的正则表达式:

$!UID=regex:^(?:.*UserID[:=]{1}\s?)(\d+).*
$!ErrorCode=regex:^(?:.*ErrorCode[:=]{1}\s?)(\w+).*

接下来,在每个过滤器中,我们使用 set 语句与 re_extract() 函数结合前面定义的正则表达式来实际提取关键信息:

set $!UID = re_extract($!msg, $!UID, 0, "", "");
set $!ErrorCode = re_extract($!msg, $!ErrorCode, 0, "", "");

re_extract() 函数的参数解释如下:

  1. $!msg - 输入日志消息。
  2. $!UID 或 $!ErrorCode - 用于在日志消息中查找指定内容的正则表达式。
  3. 0 - 子匹配的起始索引值,通常设置为 0(第一个子匹配)。
  4. "" - 如果找不到匹配项,返回的默认值,此处为空字符串。
  5. "" - 分隔符,仅在提取多个子匹配时使用,此处为空字符串。

所以,在这个示例中,我们使用 re_extract() 函数和正则表达式从日志消息中提取用户 ID 和错误代码。提取到的信息随后可以用于进一步的处理和记录。

rsyslog的action有哪些

action() 是用于定义 rsyslog 输出操作的配置指令。type 参数指定了要使用的输出模块。rsyslog 提供了多种输出模块,您可以根据需求选择不同的模块。以下是一些常见的输出模块类型:

  1. omfile:将日志消息写入到本地文件系统中的文件。 示例:

    action(type="omfile" file="/var/log/example.log")
    
  2. omfwd:将日志消息转发到远程主机,通过 TCP、UDP 或 RELP 协议。 示例:

    action(type="omfwd" target="192.168.1.100" port="514" protocol="udp")
    
  3. omrelp:通过可靠事件日志协议(RELP)将日志消息转发到远程主机。 示例:

    action(type="omrelp" target="192.168.1.100" port="20514")
    
  4. ommail:将日志消息通过电子邮件发送。 示例:

    action(type="ommail" server="mail.example.com" mail.from="rsyslog@example.com" mail.to="admin@example.com" subject="Rsyslog Alert")
    
  5. omprog:将日志消息发送到外部程序进行处理。 示例:

    action(type="omprog" binary="/path/to/your/script.sh")
    
  6. omelasticsearch:将日志消息发送到 Elasticsearch 服务器。 示例:

    action(type="omelasticsearch" server="localhost" serverport="9200" searchIndex="rsyslog_test")
    
  7. omkafka:将日志消息发送到 Apache Kafka 集群。 示例:

    action(type="omkafka" topic="rsyslog_test" broker=["localhost:9092"])
    
  8. ommongodb:将日志消息保存到 MongoDB 数据库。 示例:

    action(type="ommongodb" server="localhost" db="your-db-name" collection="your-collection-name")
    
  9. ommysql:将日志消息保存到 mysql 数据库。 示例:

    action(type="ommysql" server="localhost" db="your_db_name" uid="your_db_user" pwd="your_db_password")
    
  10. 上述列表中的输出模块只是 rsyslog 支持的部分类型。您可以在 rsyslog 文档中找到更多输出模块和详细信息:rsyslog documentation - Output modules

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

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

相关文章

力扣学习笔记——239. 滑动窗口最大值

力扣学习笔记——239. 滑动窗口最大值 题目描述 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输…

第96步 深度学习图像目标检测:FCOS建模

基于WIN10的64位系统演示 一、写在前面 本期开始&#xff0c;我们继续学习深度学习图像目标检测系列&#xff0c;FCOS&#xff08;Fully Convolutional One-Stage Object Detection&#xff09;模型。 二、FCOS简介 FCOS&#xff08;Fully Convolutional One-Stage Object D…

Javaweb之Vue组件库Element的详细解析

4 Vue组件库Element 4.1 Element介绍 不知道同学们还否记得我们之前讲解的前端开发模式MVVM&#xff0c;我们之前学习的vue是侧重于VM开发的&#xff0c;主要用于数据绑定到视图的&#xff0c;那么接下来我们学习的ElementUI就是一款侧重于V开发的前端框架&#xff0c;主要用…

两年功能五年自动化测试面试经验分享

最近有机会做一些面试工作&#xff0c;主要负责面试软件测试人员招聘的技术面试。 之前一直是应聘者的角色&#xff0c;经历了不少次的面试之后&#xff0c;多少也积累一点面试的经验&#xff0c;现在发生了角色转变。初次的面试就碰到个工作年限比我长的&#xff0c;也没有时…

【数据结构实验】排序(一)冒泡排序改进算法 Bubble及其性能分析

文章目录 1. 引言2. 冒泡排序算法原理2.1 传统冒泡排序2.2 改进的冒泡排序 3. 实验内容3.1 实验题目&#xff08;一&#xff09;输入要求&#xff08;二&#xff09;输出要求 3.2 算法实现 4. 实验结果5. 实验结论 1. 引言 排序算法是计算机科学中一个重要而基础的研究领域&…

AndroidStudio2022.3.1 Patch3使用国内下载源加速

记录一下这个版本的as在使用国内下载源加速碰到的诸多问题。 一、gradle-8.0-bin.zip下载慢 编辑项目文件夹/gradle/wrapper/gradle-wrapper.properties&#xff0c;文件内容改为如下&#xff1a; #Fri Nov 24 18:50:06 CST 2023 distributionBaseGRADLE_USER_HOME distribu…

井盖位移传感器怎么监测井盖安全

井盖在城市基础设施建设中扮演着不可或缺的角色&#xff0c;虽然看似并不起眼但确实是城市规划中一个重要的组成部分。在城市规划建设之初都需要首先考虑排水系统的设计&#xff0c;而井盖作为排水系统的一个重要组成部分&#xff0c;一旦出现问题便会造成交通中断或者环境受影…

1panel可视化Docker面板安装与使用

官网地址1Panel - 现代化、开源的 Linux 服务器运维管理面板 文章目录 目录 文章目录 前言 一、环境准备 二、使用步骤 1.安装命令 2.一些命令 3.使用 总结 前言 一、环境准备 虚拟机centos 已经安装好docker和 Docker Compose 或者都没安装 1panel会帮你自动安装 二、使用…

【腾讯云云上实验室】向量数据库相亲社交应用实践

快速入口 &#x1f449;向量数据库_大模型知识库_向量数据存储_向量数据检索- 腾讯云 (tencent.com) 文章目录 前言1. 向量数据库概念及原理1.1 向量数据库概念1.2 向量数据库核心原理1.3 向量数据库优缺点1.4 向量数据库与传统数据库的区别 2. 腾讯云向量数据库的基本特性及优…

Linux学习笔记之六(进程之间的管道通信和信号处理)

目录 1、管道通信1.1、无名管道1.1、有名管道 2、信号处理2.1、信号的种类和发送2.2、信号的接受和处理 1、管道通信 管道通信是一个设备中进程与进程之间通信的一种方式&#xff0c;分为无名管道和有名管道两种。前者只能用于有亲缘关系的进程之间的通信&#xff0c;如父子进…

Proteus仿真--用DS1302与12864LCD设计的可调式中文电子日历

本文主要介绍用DS1302和12864 LCD的可调式中文电子日历&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中12864LCD上面显示中文年月日信息时间信息&#xff0c;按键K1-K4&#xff0c;K1用于年月日时分选择&#xff0c;K2用于加功能&#xff0c;K3用于…

CSS水平居中与垂直居中的方法

当我们页面布局的时候&#xff0c;通常需要把某一个元素居中&#xff0c;这一篇文章为大家介绍一下居中的几种方法&#xff0c;本人文笔有限&#xff0c;请见谅&#xff01; 一.水平居中 行内元素水平居中的方法&#xff0c;我们使用text-align:center; <!DOCTYPE html&g…

夜神模拟器 burp抓包 ADB 微信小程序

夜神模拟器 burp抓包 ADB 微信小程序 初始环境准备应用连接证书转换设置夜神模拟器环境ADB配置测试burp抓包 初始环境准备 既然想了解如何抓包&#xff0c;我想大多数是已经安装好 夜神模拟器 和 Burp 了&#xff0c;这里就不在赘述&#xff0c;直接开始操作。 openssl 的下载…

module java.base does not “opens java.io“ to unnamed module

环境 如上图所示&#xff0c; Runtime version的版本是JAVA 17 项目所需要JDK版本为JAVA 8 解决

Alibaba Cloud Linux 3安装Docker

进行docker安装&#xff08;以社区版为例&#xff09; 添加docker-ce的dnf源 dnf config-manager --add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.安装Alibaba Cloud Linux 3专用的dnf源兼容插件 dnf -y install dnf-plugin-releasever-adap…

⑦【Redis GEO 】Redis常用数据类型:GEO [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Redis GEO ⑦Redis GEO 基本操作命令1.geoadd …

Ubuntu系统安装docker

1.检查是否安装老版本 检查卸载老版本docker ubuntu下自带了docker的库&#xff0c;不需要添加新的源。 但是ubuntu自带的docker版本太低&#xff0c;需要先卸载旧的再安装新的。 apt-get remove docker docker-engine docker.io containerd runc 如果不能正常卸载&#x…

如何通过 Al 的能力提升编程的效率?

通过人工智能&#xff08;AI&#xff09;的技术&#xff0c;可以提升编程效率和能力。以下是一些建议和方法&#xff1a; 代码自动生成&#xff1a;使用AI技术&#xff0c;可以根据程序员的需求和输入&#xff0c;自动生成代码。这可以提高编程效率&#xff0c;减少编写代码所需…

AI换脸教程

方法一、MJ换脸大法 1.点击这个网站添加一个机器人到自己的服务器 https://discord.com/oauth2/authorize?client_id1090660574196674713&permissions274877945856&scopebot 2. /saveid 回车选择你自己的照片&#xff0c;并且在名字框命名身份&#xff0c;回车 3.…

微信小程序文件预览和下载-文件系统

文件预览和下载 在下载之前&#xff0c;我们得先调用接口获取文件下载的url 然后通过wx.downloadFile将下载文件资源到本地 wx.downloadFile({url: res.data.url,success: function (res) {console.log(数据,res);} })tempFilePath就是临时临时文件路径。 通过wx.openDocume…