使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步
文章目录
- 🌀使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步
- 前言
- 介绍
- 架构图
- 🧱系统环境
- 🔧Rsync配置(两台都需安装)
- 关闭SELinux(两台都需)
- 📦配置目标端(client)为 Rsync 服务端
- 创建用户和目录
- 配置 /etc/rsyncd.conf
- rsyncd.conf 配置文件讲解
- 创建认证文件
- 启动并设置开机自启
- 在这里插入图片描述
- 🚀配置源端(server)安装并使用 Lsyncd 实现实时同步
- 安装 lsyncd
- 创建用户、目录及认证文件
- 测试 Rsync 是否能正常使用
- 参数解释
- 作用总结
- ⚙️配置 Lsyncd 实现实时监听同步
- 配置 /etc/lsyncd.conf
- lsyncd.conf配置讲解
- 全局配置
- 同步设置
- rsync 配置
- 启动并设置 Lsyncd 自启动
- 🧪测试同步效果
- 📝总结
- 📚推荐扩展
🌀使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步
在日常运维中,我们经常遇到需要将一台服务器上的数据实时同步到另一台服务器的场景,比如配置文件同步、数据热备、静态资源同步等。本文将基于以下环境,通过 Rsync + Lsyncd 来实现文件的实时同步。
前言
在分布式系统中,数据同步是一个重要的需求,尤其是当我们希望将两台服务器的数据保持一致时。rsync
和 lsyncd
是两种常见的数据同步工具,它们能高效地处理文件同步和实时数据同步。本文将通过在两台 CentOS 7.9 服务器上配置 rsync
和 lsyncd
,展示如何进行数据同步的操作和配置。
介绍
- rsync:是一款用于远程和本地文件同步的工具,支持增量传输,能有效减少网络带宽的使用。它通常用于备份和镜像操作。
- lsyncd:是一个基于
rsync
的实时同步工具,它利用inotify
机制监听文件变化,实时同步指定的目录。lsyncd
配合rsync
使用,能够实现近乎实时的数据同步。
本文将介绍如何通过 rsync
配合 lsyncd
实现文件同步,并通过配置文件和命令展示如何设置。
架构图
以下是本次同步任务的架构图:
+---------------------+ rsync/lsyncd +---------------------+
| |<--------------------->| |
| Server | | Client |
| 10.255.101.216 | | 10.255.101.217 |
| | | |
| - Data Directory | | - Data Directory |
| - Rsync + Lsyncd | | - Rsync Daemon |
| | | |
+---------------------+ +---------------------+
通过这种架构,server
上的文件会通过 rsync
和 lsyncd
实时同步到 client
上,确保两个节点的数据保持一致。
🧱系统环境
主机名 | IP地址 | 系统版本 | 备注 |
---|---|---|---|
server | 10.255.101.216 | CentOS Linux release 7.9.2009 (Core) | 源服务器 |
client | 10.255.101.217 | CentOS Linux release 7.9.2009 (Core) | 目标服务器 |
- CPU:2核
- 内存:4G
- 存储:50G
- rsync:3.1.2
- lsyncd:2.2.2
🔧Rsync配置(两台都需安装)
yum -y install rsync
关闭SELinux(两台都需)
getenforce
# 如果输出不是 Disabled,则执行
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
📦配置目标端(client)为 Rsync 服务端
创建用户和目录
groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync # 组名在前,用户名在后
echo "test123456." | passwd --stdin rsync # 设置密码
mkdir /data/
chown -R rsync:rsync /data/
配置 /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors = yes
read only = false
list = false
auth users = rsync
secrets file = /etc/rsync.password[client-10.255.101.217]
comment = "test"
path = /data/
rsyncd.conf 配置文件讲解
下面对 rsyncd.conf
配置文件中的各个参数进行详细讲解:
- uid 和 gid:这两个参数设置
rsync
守护进程运行时使用的用户和用户组。rsync
进程将以该用户身份进行操作,这有助于限制进程的权限,避免过高的安全风险。此配置确保rsync
进程不会以 root 权限运行,从而提高安全性。 - port:指定
rsync
服务监听的端口。默认情况下,rsync
使用 873 端口。可以根据需要修改端口号,但修改后需确保客户端连接时也指定相应的端口。 - fake super:启用此选项后,
rsync
会模拟root
用户的权限,允许传输文件时保持文件的所有者和权限信息。这对于普通用户的权限不足情况下,允许同步时模拟一些root
权限以便传输文件。 - use chroot:此选项设置是否在 chroot 环境中运行
rsync
服务。设置为no
可以避免使用 chroot 环境,从而让rsync
可以访问系统的其他部分,而不局限于一个虚拟文件系统。设置为yes
会把rsync
进程限制在指定的目录路径中,增加安全性。 - max connections:限制
rsync
守护进程可以同时处理的最大连接数。此配置项的目的是防止过多的连接导致系统资源被占用过多。 - timeout:设置
rsync
连接的超时时间(单位:秒)。如果在超时时间内没有数据传输,rsync
会自动断开连接。 - pid file:指定存储
rsync
守护进程 PID(进程 ID)的文件路径。这对于管理rsync
服务非常有用,可以帮助查看进程是否正常运行,并进行相应的操作(如停止进程等)。 - lock file:此选项指定
rsync
守护进程使用的锁文件。该文件防止多个rsync
进程同时访问相同的资源,避免出现数据冲突或文件损坏。 - log file:指定
rsync
守护进程日志文件的路径。所有的活动日志都会记录到这个文件中,可以用来检查同步操作的状态和排查问题。 - ignore errors:启用此选项后,
rsync
将忽略在传输过程中遇到的错误,而不会立即停止同步过程。通常用在需要保证同步不间断的场景,但请注意,忽略错误可能会导致一些文件传输失败而未被及时发现。 - read only:设置为
false
表示目标目录是可写的,允许进行数据同步时的修改。如果设置为true
,则目标目录将变为只读,rsync
只会将文件从源同步到目标,而不会修改目标文件。 - list:设置为
false
时,客户端无法列出同步模块的内容。通过禁用列表功能,可以提高安全性,避免泄露不应公开的目录信息。 - auth users:指定允许进行身份验证的用户列表。在此配置中,
rsync
只允许名为rsync
的用户连接和同步数据。客户端连接时需要提供有效的用户名和密码。 - secrets file:指定存储
rsync
用户密码的文件路径。该文件存储了与auth users
配对的用户名和密码,用于身份验证。密码文件通常有严格的权限控制,确保只有rsync
进程可以读取。 - [client-10.255.101.217]:这是一个同步模块的定义。在此模块下,
rsync
会同步指定路径的文件。模块名称通常与目标机器的 IP 地址、主机名或其他标识符相关,以便在多个同步任务中进行区分。 - comment:为该同步模块添加注释,用于描述该模块的作用或用途。在此配置中,
comment
被设置为"test"
,可以根据实际需求更改。 - path:指定
rsync
服务需要同步的目录路径。在此配置中,rsync
将同步client
上的/data/
目录。
创建认证文件
echo "rsync:test123456." > /etc/rsync.password
chmod 600 /etc/rsync.password
启动并设置开机自启
systemctl start rsyncd
systemctl enable rsyncd
验证运行状态:
systemctl status rsyncd
🚀配置源端(server)安装并使用 Lsyncd 实现实时同步
安装 lsyncd
yum install -y epel-release
yum install -y lsyncd
创建用户、目录及认证文件
groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync # 组名在前,用户名在后
echo "test123456." | passwd --stdin rsync # 设置密码
mkdir /data
touch /data/file{1..10}.txt # 创建模拟数据# 创建 rsync 密码文件
echo "test123456." > /etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd
测试 Rsync 是否能正常使用
rsync -avz --password-file=/etc/rsyncd.pwd /data/ rsync@10.255.101.217::client-10.255.101.217
目标端
/data
目录应成功收到同步的文件。
参数解释
-
rsync
:调用rsync
工具进行文件同步。 -
-a
:归档模式(archive mode)。这个选项会递归地同步文件,并保留文件的权限、符号链接、时间戳等信息。它等同于-rlptgoD
,即:-r
:递归同步目录。-l
:复制符号链接为符号链接。-p
:保留文件的权限信息。-t
:保留文件的修改时间。-g
:保留文件的组信息。-o
:保留文件的所有者信息。-D
:保留设备信息和特殊文件。
-
-v
:详细模式(verbose)。使rsync
输出详细的同步过程,包括每个文件的同步状态。此选项会显示文件传输的进度和文件列表,便于跟踪同步情况。 -
-z
:压缩传输。在传输文件时启用压缩,以减少网络带宽的使用,尤其适用于较大的文件。 -
--password-file=/etc/rsyncd.pwd
:指定存放密码的文件路径。rsync
会从这个文件中读取与指定的rsync
用户(本例中是rsync
)相关的密码,而不是通过交互式的方式输入密码。该文件的权限应设置为仅rsync
用户可读,以保障安全性。 -
/data/
:指定本地源目录路径。这个路径表示需要同步的本地目录。rsync
会将这个目录中的文件同步到远程主机的指定目录。 -
rsync@10.255.101.217::client-10.255.101.217
:rsync
:指定用于连接远程rsync
服务的用户。10.255.101.217
:远程rsync
服务的 IP 地址。::client-10.255.101.217
:指定rsync
服务上的模块名。模块名是在rsyncd.conf
配置文件中定义的,这里指向client-10.255.101.217
模块,表示同步目标为rsync
服务端的该模块所对应的目录。
作用总结
该命令会将本地 /data/
目录中的文件递归同步到远程 rsync
服务器上,目标路径由 rsync
服务器上的 client-10.255.101.217
模块决定。同步过程中会保留文件的权限、时间戳等元数据,且传输数据时会进行压缩以节省带宽,同时通过指定的密码文件实现自动认证。
⚙️配置 Lsyncd 实现实时监听同步
配置 /etc/lsyncd.conf
settings {logfile = "/var/log/lsyncd/lsyncd.log",statusFile = "/var/log/lsyncd/lsyncd.status",inotifyMode = "CloseWrite or Modify",maxProcesses = 8,insist = true,
}sync {default.rsync,source = "/data/",target = "rsync@10.255.101.217::client-10.255.101.217",delete = false,exclude = { ".*", "logs/*.log" },delay = 1,init = false,rsync = {binary = "/usr/bin/rsync",archive = true,compress = true,verbose = true,password_file = "/etc/rsyncd.pwd",_extra = {"--bwlimit=200"}}
}
lsyncd.conf配置讲解
全局配置
-
logfile = "/var/log/lsyncd/lsyncd.log"
:指定日志文件的保存路径。所有同步操作的日志信息将写入此文件,便于后续查看和调试。 -
statusFile = "/var/log/lsyncd/lsyncd.status"
:指定状态文件的路径,记录当前同步的状态信息。 -
inotifyMode = "CloseWrite or Modify"
:inotify
监听模式。lsyncd
使用inotify
监听文件系统事件来触发文件同步。这个配置指示lsyncd
监听文件的修改操作(Modify
)或者文件关闭写入操作(CloseWrite
)。当文件发生这些事件时,lsyncd
会启动同步任务。 -
maxProcesses = 8
:最大同步进程数。lsyncd
会使用多进程并行执行同步操作,这个选项限制了最大进程数为 8。 -
insist = true
:该选项指定如果进程出现异常终止,是否继续运行。true
表示lsyncd
会尝试在出现异常后继续运行。
同步设置
-
default.rsync
:表示同步方式是rsync
,即使用rsync
协议进行数据传输。 -
source = "/data/"
:本地同步的源目录,指向/data/
目录。 -
target = "rsync@10.255.101.217::client-10.255.101.217"
:指定远程目标路径,使用rsync
协议通过rsync
用户连接到远程主机10.255.101.217
,并同步到client-10.255.101.217
模块。 -
delete = false
:指定是否删除目标目录中不在源目录中的文件。false
表示不同步删除操作,即目标目录中未在源目录的文件不会被删除。 -
exclude = { ".*", "logs/*.log" }
:排除的文件和目录。这个选项指定了不需要同步的文件或目录:"*.*"
:排除所有以.
开头的隐藏文件或目录。"logs/*.log"
:排除logs
目录中的所有.log
文件。
-
delay = 1
:设置每次文件同步的延迟时间为 1 秒。这样可以避免文件频繁变化时导致的过度同步操作。 -
init = false
:指定是否在lsyncd
启动时立即执行同步。如果设置为false
,则lsyncd
启动时不会自动同步数据,等待监控到文件变化后才会执行同步。
rsync 配置
这些选项用于配置 rsync
的具体参数:
-
binary = "/usr/bin/rsync"
:指定rsync
可执行文件的路径,通常不需要修改,除非rsync
安装在非标准路径。 -
archive = true
:启用rsync
的归档模式,确保文件的符号链接、权限、时间戳等信息都能被保留。 -
compress = true
:启用压缩,在同步时对数据进行压缩,从而减少传输的数据量,特别适用于网络带宽有限的情况。 -
verbose = true
:启用详细模式,输出详细的同步过程,帮助调试和查看同步的文件。 -
password_file = "/etc/rsyncd.pwd"
:指定存储rsync
密码的文件路径,这样可以避免每次同步时都要手动输入密码。 -
_extra = {"--bwlimit=200"}
:添加额外的rsync
参数,这里设置了带宽限制为200KB/s
,用于限制同步过程中的带宽使用。
启动并设置 Lsyncd 自启动
systemctl start lsyncd
systemctl enable lsyncd
🧪测试同步效果
在 server 添加新文件:
touch /data/file{11..20}.txt
在 client 上查看是否实时同步:
ls -l /data/
✅ 你将看到 file11.txt ~ file20.txt 自动同步到目标机的 /data
目录。
📝总结
通过本方案:
- ✅ 利用了 rsync 进行安全、高效的数据传输;
- ✅ 使用 Lsyncd 实现了源端目录的实时监听;
- ✅ 达到数据实时同步的效果,适合小文件频繁变更的场景;
- ✅ 配置灵活,支持压缩、排除规则、带宽限制等。
📚推荐扩展
- 日志查看:
tail -f /var/log/lsyncd/lsyncd.log
- 支持双向同步请参考:
lsyncd
+inotifywait
或使用Unison
- 实时同步大量小文件建议优化 inotify 参数或调大 fs.inotify.max_user_watches
如果你也有类似需求,不妨动手试试吧!有什么问题欢迎留言讨论~
相关文章:
使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步
文章目录 🌀使用 Rsync Lsyncd 实现 CentOS 7 实时文件同步前言介绍架构图🧱系统环境🔧Rsync配置(两台都需安装)关闭SELinux(两台都需) 📦配置目标端(client)…...
软件工程第三章习题
一、选择题 1. (1)答案:D 解析:可行性研究是对项目在技术、经济、操作等多方面进行全面评估论证,也称为项目论证 。技术可行性研究、操作可行性研究、经济可行性研究只是可行性研究的部分内容,不能涵盖整体概念。 2. (2)答案&…...
基于ElasticSearch的向量检索技术实践
基于ElasticSearch的向量检索技术实践 作者:Tableau 原文地址:https://zhuanlan.zhihu.com/p/620260383 图片、视频、语音、文本等非结构化数据可以通过人工智能技术(深度学习算法)提取特征向量,然后通过对这些特征向量…...
Spring Boot 项目日志系统全攻略:Logback、Log4j2、Log4j与SLF4J整合指南
Spring Boot 项目日志系统全攻略:Logback、Log4j2、Log4j与SLF4J整合指南 日志系统是应用程序不可或缺的组成部分,良好的日志实践能极大提升开发调试和线上问题排查的效率。本文将全面介绍Spring Boot项目中各种日志框架的配置与使用方案,包…...
【设计模式】责任链模式
简介 很多公司都有请假的流程,当员工提交请假申请时,请求会沿着 组长 → 经理 → CEO 的链条传递,直到有对应层级的领导处理。 适用场景 一个请求需要多个对象中的一个或多个处理(如审批流程、过滤器链)。处理对象和…...
智能气候前沿:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测
全球气候变化已成为21世纪最严峻的环境挑战,其复杂的驱动因素如温室气体排放、气溶胶浓度、野火、海冰融化以及农业和生态系统变化等,交织影响着全球的气候格局。 第一:气候变化驱动因素与数据科学基础 1.1气候变化 全球气候变化 中国碳中…...
es 原生linux部署集群
背景 目的: 1. 理解不同部署方式的架构差异 2. 对比环境配置的复杂度 3. 评估性能与资源管理 4. 探索扩展性与高可用性 5. 学习安全与隔离机制 6. 实践监控与维护 7. 掌握混合部署与云原生场景 实验的最终目标 技能提升: 全面掌握Elasticsear…...
Springboot 同时支持不同的数据库,Oracle,Postgresql
## 关键字 Java,Springboot,Vscode,支持多种数据库 ## 背景环境 我在实际项目开发工程中遇到这样一个问题,用户 A 使用 Oracle 数据库,用户 B 使用 Postgresql 数据库,但是用户 AB 都使用我们的项目。所以…...
go --- go run main.go 和 go run .
目录 go run main.gogo run .示例 go run main.go 功能:只编译和运行指定的文件(main.go),忽略同目录下的其他文件。适用场景: 当你只需要运行一个独立的文件,且该文件不依赖其他文件时。适合单文件程序或…...
关于Spring MVC中@RequestMapping注解的详细解析,涵盖其核心功能、属性、使用场景及最佳实践
以下是关于Spring MVC中RequestMapping注解的详细解析,涵盖其核心功能、属性、使用场景及最佳实践: 1. 基础概念 RequestMapping是Spring MVC的核心注解,用于将HTTP请求映射到控制器(Controller)的方法上。它支持类级…...
deepseek使用记录26——从体力异化到脑力异化
我们的一切发现和进步,似乎结果是使物质力量具有理智生命,而人的生命则化为愚钝的物质力量。AI快速发展的现实中,人面临着比工业革命更深刻的异化。在工业革命中,人的身躯沦为了机器的一部分,而现在人的脑袋沦为了AI的…...
Ubertool 的详细介绍、安装指南及使用说明
Ubertool:多协议网络分析与调试平台 一、Ubertool 简介 Ubertool 是一款开源的 多协议网络分析工具,专为物联网(IoT)、嵌入式系统和工业自动化领域设计。它支持蓝牙、Wi-Fi、LoRa、CAN总线等多种通信协议的实时监控、数据包捕获…...
用 HTML、CSS 和 jQuery 打造多页输入框验证功能
在网页开发中,输入框验证是至关重要的一环,它能确保用户输入的数据符合特定要求,提升交互的准确性与流畅性。今天,我们就来深入剖析一个运用 HTML、CSS 和 jQuery 实现多页输入框验证的精彩实例,带你领略前端开发中表单…...
在CentOS上安装Docker需要注意的事项
文章目录 前言Docker Engine如何设置仓库设置镜像加速器获取镜像加速器地址 写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-…...
Chrome 135 版本新特性
Chrome 135 版本新特性 一、Chrome 135 版本浏览器更新 ** 1. 第三方托管账户注册迁移到 OIDC 授权码流程** Chrome 135 将账户注册的登录页面从营销网站迁移到动态网站,同时也将 OpenID Connect (OIDC) 的隐式流程迁移到授权码流程。这样做的目的是进一步提升第…...
CMake实战指南一:add_custom_command
CMake 进阶:add_custom_command 用法详解与实战指南 在 CMake 构建系统中,add_custom_command 是一个灵活且强大的工具,允许开发者在构建流程中插入自定义操作。无论是生成中间文件、执行预处理脚本,还是在目标构建前后触发额外逻…...
K8S学习之基础七十五:istio实现灰度发布
istio实现灰度发布 上传镜像到harbor 创建两个版本的pod vi deployment-v1.yaml apiVersion: apps/v1 kind: Deployment metadata:name: appv1labels:app: v1 spec:replicas: 1selector:matchLabels:app: v1apply: canarytemplate:metadata:labels:app: v1apply: canaryspec…...
7-1 列出连通集
作者 陈越 单位 浙江大学 给定一个有 n 个顶点和 m 条边的无向图,请用深度优先遍历(DFS)和广度优先遍历(BFS)分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时,假设我们总是从编号最小的顶点…...
XML Schema 指示器
XML Schema 指示器 引言 XML Schema 是一种用于定义 XML 文档结构的语言,它能够确保 XML 文档的合法性。在 XML 文档的解析和应用中,XML Schema 指示器(XML Schema Indicator)扮演着至关重要的角色。本文将详细介绍 XML Schema 指示器的概念、作用、应用场景以及如何使用…...
Linux内核中TCP协议栈的实现:tcp_close函数的深度剖析
引言 TCP(传输控制协议)作为互联网协议族中的核心协议之一,负责在不可靠的网络层之上提供可靠的、面向连接的字节流服务。Linux内核中的TCP协议栈实现了TCP协议的全部功能,包括连接建立、数据传输、流量控制、拥塞控制以及连接关闭等。本文将深入分析Linux内核中tcp_close…...
17-产品经理-创建发布
点击“发布”-“创建发布”。 填写发布名称,选择测试的版本。还可以设置此次发布是否为“里程碑”。 点击“保存”后,进入该发布详情页面。需要为此次发布关联需求、已解决BUG、以及遗留BUG。可以通过设置条件,进行“搜索”,然后批…...
了解Spring的统一功能
目录 一、统一数据返回格式 1.引入统一数据返回格式 2.学习使用统一数据返回格式 support方法 beforeBodyWrite方法 统一数据返回格式具体逻辑 使用统一数据返回格式存在的问题 解决方法: 统一数据返回格式的优点 统一数据返回格式代码实现(包含了…...
123213
根据道路在道路网的地位、交通功能、对沿线的服务功能划分可分为快速路、主干路、次干路及支路 快速路完全为交通功能服务, 主干路以交通功能为主, 次干路是城市区域性的交通干道,为区域交通集散服务,兼有服务功能,结合主干路组成干路网 …...
通过 axios 请求回来的 HTML 字符串渲染到 Vue 界面上并添加样式
1. 通过 axios 获取数据 使用 axios 发起请求,获取返回的 HTML 字符串数据。 2. 在 Vue 中处理和渲染数据 由于 HTML 字符串中可能包含一些标签和样式,直接插入到 Vue 的模板中可能会导致样式问题。可以通过以下方式处理: 方法一…...
P1162 填涂颜色(BFS)
题目描述 由数字 0 组成的方阵中,有一任意形状的由数字 1 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 2。例如:66 的方阵(n6),涂色前和涂色后的方阵如下: 如果从某个 0 出发,只向上下…...
【笔记】VS中C#类库项目引用另一个类库项目的方法
VS中C#类库项目引用另一个类库项目的方法 在 C# 开发中,有时我们需要在一个类库项目中引用另一个类库项目,但另一个项目可能尚未编译成 DLL。在这种情况下,我们仍然可以通过 Visual Studio 提供的项目引用功能进行依赖管理。 🎯 …...
进程内存分布--之smaps呈现memory-layout.cpp内存分布
上一篇介绍了:进程内存分布--之单线程代码来内存分布呈现memory-layout.cpp 这里我们使用smaps将更加形象的的体现内存分布,smaps文件是Linux的proc文件系统提供的一种可以查看内存资源使用情况的方法,Linux系统中运行的库、堆、栈等信息都可在smaps中查…...
再看自适应RAG方法:SEAKR|PIKE-RAG|DeepRAG
当大语言模型开始"怀疑人生":一场关于知识检索的AI内心戏 各位看官,今天我们要聊一个AI界的"哲学难题"——当大语言模型突然意识到自己可能是个"半瓶子醋",会发生什么奇妙反应? 想象一下这个场景:某天深夜,ChatGPT正对着用户提问"如…...
DNS服务(Linux)
DNS 介绍 dns,Domain Name Server,它的作用是将域名解析为 IP 地址,或者将IP地址解析为域名。 这需要运行在三层和四层,也就是说它需要使用 TCP 或 UDP 协议,并且需要绑定端口,53。在使用时先通过 UDP 去…...
探秘PythonJSON解析深度剖析json.loads处理嵌套JSON字符串的奥秘
哈喽,大家好,我是木头左! 在当今数字化时代,数据以各种格式呈现,而JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在众多领域广泛应用。Python作为一门强大的编程语言,其内置的json模块为处理JSON数据提供了便捷的方法。然而,当遇到像{"name&q…...
Day7 FIFO与鼠标控制
文章目录 1. harib04a例程(获取按键编码)2. harib04b例程(加快中断处理)3. harib04c例程(FIFO缓冲区)4. harib04d例程(改善FIFO缓冲区)5. harib04e例程(整理FIFO缓冲区&a…...
软件工程第一章习题
第1章软件与软件工程 1.选择题 (1)下列说法中正确的是( )o A.20世纪50年代提出了软件工程的概念 B.20世纪60年代提出了软件工程的概念 C.20世纪70年代出现了客户机/服务器技术 D.20世纪80年代软件工程学科达到成熟 (2)软件危机的主要原因是( Do B.软件生产…...
Ollama 手动高速下载Win/Linux/Mac安装包及安装方法
前言 Ollama下载速度太慢,按这个方式,速度嘎嘎的快----下载地址 手动安装 如果要从以前的版本升级,则应删除旧库。比如:sudo rm -rf /usr/lib/ollama 解压 tar -C /usr -xzf ollama-linux-amd64.tgz # 解压到/usr文件夹# 如…...
Jmeter+Jenkins+Ant自动化持续集成环境搭建
一、安装准备 1.JDK:jdk-8u121-windows-x64 2.jmeter工具:apache-jmeter-2.13 3.ANT工具:apache-ant-1.9.7-bin 4.jenkins工具:jenkins-2.32.2 二、软件安装 1.JDK的安装 >双击JDK安装包,选择安装路径(本人是…...
【11】Redis快速安装与Golang实战指南
文章目录 1 Redis 基础与安装部署1.1 Redis 核心特性解析1.2 Docker Compose 快速部署1.3 Redis 本地快速部署 2 Golang 与 Redis 集成实战2.1 环境准备与依赖安装2.2 核心操作与数据结构实践2.2.1 基础键值操作2.2.2 哈希结构存储用户信息 3 生产级应用场景实战3.1 分布式锁实…...
ISP算法.红外图像增强
在图像处理领域,常见的图像处理一般都是白光相机,实际红外相机也是常见的一种相机,它可以用来对发热的东西进行成像,也可以作为白光相机夜晚不可见的一种辅助手段,为白光相机赋能夜视能力。 红外相机的成像原理在于辐射…...
Spring Boot中使用RedisTemplate操作Redis的几种数据类型详解
Redis作为高性能的键值存储系统,在现代Java应用中扮演着重要角色。Spring Boot通过RedisTemplate为开发者提供了便捷的Redis操作方式。本文将详细介绍如何使用RedisTemplate操作Redis的五种主要数据类型。 一、RedisTemplate简介 RedisTemplate是Spring Data Redi…...
大数据与人工智能之大数据架构(Hadoop、Spark、Flink)
一、核心特性与架构设计 1. Hadoop:分布式批处理的基石 核心组件: HDFS:分布式文件系统,支持大规模数据存储。MapReduce:基于“分而治之”的批处理模型,适合离线分析。 架构特点: 批处理主导&…...
VSCode中Marp插件
VSCode神级插件Marp,用Markdown来做PPT 优秀教程:https://zhuanlan.zhihu.com/p/582872955...
C++20 数学常数:<numbers> 头文件的革新
文章目录 一、<numbers> 头文件中的数学常数二、使用示例三、优势与应用场景(一)提高代码可读性(二)提高精度(三)适用于多种数据类型(四)简化数学计算 四、总结 C20 标准引入了…...
OpenCV--图像平滑处理
在数字图像处理领域,图像平滑处理是一项极为重要的技术,广泛应用于计算机视觉、医学影像分析、安防监控等多个领域。在 OpenCV 这一强大的计算机视觉库的助力下,我们能便捷地实现多种图像平滑算法。本文将深入探讨图像平滑的原理,…...
【KMP】P7114 [NOIP2020] 字符串匹配|省选-
本文涉及知识点 较难理解的字符串查找算法KMP P7114 [NOIP2020] 字符串匹配 题目描述 小 C 学习完了字符串匹配的相关内容,现在他正在做一道习题。 对于一个字符串 S S S,题目要求他找到 S S S 的所有具有下列形式的拆分方案数: S A …...
C++20 统一容器擦除:std::erase 和 std::erase_if
文章目录 一、std::erase 的用法1.1 语法1.2 参数1.3 返回值1.4 示例 二、std::erase_if 的用法2.1 语法2.2 参数2.3 返回值2.4 示例 三、优势与应用场景3.1 统一的接口3.2 简化代码3.3 适用范围广 四、总结 C20 引入了两个非常实用的函数模板: std::erase 和 std…...
阿里云oss视频苹果端无法播放问题记录
记录一下苹果端视频不可以播放的原因. 看了一下其他视频可以正常播放,但是今天客户发来的视频无法正常播放.咨询过阿里云售后给出的原因是编码格式过高. 需要调整编码格式为:baseline, 下面记录如何使用ffmpeg修改视频的编码格式. 下载文件(可从官方下载) 配置环境变量(系统变…...
10-MySQL-性能优化思路
1、优化思路 当我们发现了一个慢SQL的问题的时候,需要做性能优化,一般我们是为了提高SQL查询更快,一个查询的流程由下图的各环节组成,每个环节都会消耗时间,要减少消耗时候需要从各个环节都分析一遍。 2 连接配置优化…...
Postman之参数化详解
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 小伙伴们,好久不见呀,今天呢笔者想和大家聊聊postman参数化,在接口测试中,部分参数每次发送请求是唯一的数值&a…...
【c++深入系列】:类和对象详解(下)
🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 你的人生剧本,不是父母的续集,不是子女的前传,更不是朋友的外传——你是自己故事的主角 ★★★ 本文前…...
浅谈「分词」:原理 + 方案对比 + 最佳实践
在文本搜索、自然语言处理、智能推荐等场景中,「分词」 是一个基础但至关重要的技术点。无论是用数据库做模糊查询,还是构建搜索引擎,分词都是提高效率和准确度的核心手段。 🔍 一、什么是分词? 分词(Tok…...
第十八:GC 垃圾回收
2.1 三色标记# 灰色:对象已被标记,但这个对象包含的子对象未标记黑色:对象已被标记,且这个对象包含的子对象也已标记,gcmarkBits对应的位为1(该对象不会在本次GC中被清理)白色:对象…...
【微机及接口技术】- 第七章 可编程定时/计数器
文章目录 第一节 定时/计数器的概述一、定时与计数二、定时方法 第二节 可编程定时/计数器8254一、8254-2的基本功能二、8254的内部结构和外部引脚三、8254 的工作方式1. 方式0:计数到零产生中断方式2. 方式1:硬件可重触发单稳方式3. 方式2:速…...