Rsync+notify文件实时同步工具
rsync ( Remote sync,远程同步)
是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。
Rsync是Linux系统下的数据镜像备份工具,使用快速增量备份工具Remote sync 可以远程同步,可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他SSH、 rsync主机同步。
Rsync官方网站:https://rsync.samba.org/
同步方式
(1)完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。
(2)差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。
(3)增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)
同步过程
选项 含义
-r 递归模式,包含目录及子目录中的所有文件
-l 对于符号链接文件仍然复制为符号链接文件
-v 显示同步过程的详细(verbose)信息
-z 在传输文件时进行压缩( compress )
-a 归档模式,保留文件的权限、属性等信息,等同于组合选项"-r lptgoD"
-p 保留文件的权限标记
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-H 保留硬连接文件
-A 保留ACL属性信息
-D 保留设备文件及其他特殊文件
-delete 删除目标位置有而原始位置没有的文件
-checksum 根据校验和(而不是文件天小、修改时间)来决定是否跳过文件
实验操作:
主机 备注
192.168.32.129 客户端,发起端
192.168.32.130 服务端,同步源
客户端:192.168.32.129[root@localhost ~]# systemctl stop firewalld.service && setenforce 0
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
[root@localhost opt]# rpm -q rsync
若没有rsync,则yum安装
[root@localhost opt]# yum install -y rsync
[root@localhost opt]# rpm -q rsync
rsync-3.1.2-12.el7_9.x86_64
[root@localhost opt]# cd /home/
[root@localhost home]# ls
[root@localhost home]# mkdir -p /home/student && echo "this is school" > /home/student/1.txt
[root@localhost home]# ls /home/student/1.txt
/home/student/1.txt
[root@localhost home]# cat /home/student/1.txt
this is school
同步/home/student/下的文件到/opt/
[root@localhost home]# rsync -avz /home/student/ /opt/
sending incremental file list
./
1.txtsent 121 bytes received 38 bytes 318.00 bytes/sec
total size is 15 speedup is 0.09
[root@localhost home]# cd /opt/
[root@localhost opt]# ls
1. txt
[root@localhost opt]# mkdir
student
[root@localhost opt]# ls
1. txt student服务端:192.168.32.130
[root@localhost ~]# systemctl stop firewalld.service && setenforce 0
[root@localhost opt]# yum install -y rsync
[root@localhost opt]# rpm -q rsync
rsync-3.1.2-12.el7_9.x86_64[root@localhost opt]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd### 备份好方便回滚
[root@localhost ~]# cp /etc/rsyncd.conf /etc/rsyncd.conf_bak
### 配置
[root@localhost ~]# vim /etc/rsyncd.conf
[root@localhost ~]# mkdir -p /var/www/html
[root@localhost ~]# ls -ld /var/www/html
drwxr-xr-x. 2 root root 6 12月 11 10:54 /var/www/html
[root@localhost ~]# chmod +r /var/www/html/
[root@localhost ~]# vim /etc/rsyncd_users.db##给个权限,只有自己的用户访问,别的用户访问不了
[root@localhost ~]# cat /etc/rsyncd_users.db
zhangsan:123456## 重新加载rsync
[root@localhost ~]# rsync --daemon
[root@localhost ~]# netstat -antp|grep rsync
tcp 0 0 192.168.32.130:873 0.0.0.0:* LISTEN 59812/rsync
[root@localhost ~]# cd /var/www/html
[root@localhost html]# cp /etc/passwd /etc/shadow ./## 拷贝文件到当前的目录中
[root@localhost html]# ls
passwd shadow
[root@localhost html]### myhtml是/etc/rsyncd.conf 配置文件下指定的参数目录
下载服务端备份源中的数据,使用配置源的第二种方式进行备份
(rsync -avz zhangsan@192.168.32.130::myhtml /opt/ )客户端:192.168.32.129
[root@localhost opt]# rsync -avz zhangsan@192.168.32.130::myhtml /opt/
Password:
receiving incremental file list
shadowsent 46 bytes received 374 bytes 120.00 bytes/sec
total size is 1,361 speedup is 3.24## 拷贝文件到当前的目录中
[root@localhost opt]# ls
1.txt passwd shadow student
增量数据备份
服务端:192.168.32.130## 修改192.168.32.130配置文件下的password ,新增一行,表示增量数据
[root@localhost html]# vim /var/www/html/passwd
客户端:192.168.32.129
## 此时服务端的数据已经变动了,更新了里面修改过后的文件,密码为123456上面服务端中的创建的密码[root@localhost ~]# rsync -avz zhangsan@192.168.32.130::myhtml /opt/student/
Password:
receiving incremental file list
./
passwd
shadowsent 65 bytes received 768 bytes 238.00 bytes/sec
total size is 1,395 speedup is 1.67[root@localhost opt]# vim /opt/student/passwd
## 可以看到文件已经和服务端修改过的一样的了
配置免交互密码
客户端:192.168.32.129
[root@localhost opt]# echo "123456" > /etc/server.pass
[root@localhost opt]# chmod 600 /etc/server.pass服务端:192.168.32.130
## 由于本地没有此文件需要先自行创建一个文件数据,里面的数据可以随便输入
[root@localhost html]# vim /etc/yum.repos.d/local.repo## 把创建好的数据拷贝进html目录中
[root@localhost html]# cp /etc/yum.repos.d/local.repo /var/www/html/
## 备份源中已有新增的数据
客户端:192.168.32.129
[root@localhost opt]# rsync -avz --password-file=/etc/server.pass zhangsan@192.168.32.130::myhtml /opt/student/
## 此时免交互密码设置成功,可直接下载文件
可以看到客户端已经有同步新增数据文件了
使用inotify工具进行实时同步(上传数据)
发起端(客户端)配置rsync+inotify
使用inotify通知接口,可以用来监控文什系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为 inotify 通知机制出 Linux 内核提供,因此主要做木机监控,在触发式备份中应用时更适合上行同步。
服务端:192.168.32.130
[root@localhost html]# vim /etc/rsyncd.conf
[root@localhost html]# cat /var/run/rsyncd.pid
59812
## 杀掉进程
[root@localhost html]# kill $(cat /var/run/rsyncd.pid)
[root@localhost html]# netstat -antp|grep rsync
[root@localhost html]# rsync --daemon
[root@localhost html]# netstat -antp|grep rsync
tcp 0 0 192.168.32.130:873 0.0.0.0:* LISTEN 77936/rsync
[root@localhost html]# chmod 777 /var/www/html/
[root@localhost html]# ls /var/www/html/
local.repo passwd shadow客户端:192.168.32.129## inotify 的默认内核参数
[root@localhost opt]# cat /proc/sys/fs/inotify/max_queued_events
16384## 每个用户所能创建的Inotify实例的上限
[root@localhost opt]# cat /proc/sys/fs/inotify/max_user_instances
128## 每个inotify实例相关联的watches的上限,即每个inotify实例可监控的最大目录、文件数量
[root@localhost opt]# cat /proc/sys/fs/inotify/max_user_watches
8192
[root@localhost opt]# vim /etc/sysctl.conf
[root@localhost opt]# sysctl -p
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576把 inotify-tools-3.14.tar.gz 放入进 opt 目录中下载地址:https://sourceforge.net/projects/inotify-tools/files/inotify-tools-3.14.tar.gz/download
## 安装依赖包
[root@localhost opt]# yum install -y gcc gcc-c++ make
[root@localhost opt]# tar -zxvf inotify-tools-3.13.tar.gz
[root@localhost opt]# cd inotify-tools-3.13
[root@localhost inotify-tools-3.13]# ./configure && make && make install
使用命令进行监控(inotifywait -mrq -e modify,create,move,delete )
选项 含义
-e 用来指定要监控哪些事件
-m 表示持续监控
-r 表示递归整个目录
-q 简化输出信息
客户端:192.168.32.129
## 表示持续监控/opt/student/目录下的事件
[root@localhost opt]# inotifywait -mrq -e modify,create,move,delete /opt/student/## 另开一个客户端192.168.32.129窗口,模拟删除操作
[root@localhost ~]# cd /opt/student/
[root@localhost student]# ls
local.repo passwd shadow
[root@localhost student]# rm -rf passwd
## 查看实时监控窗口时间输出
## 日志实时记录打印删除事件
使用Shell脚本进行实时监控
## 监控端在什么地方,脚本也要放在相同地方[root@localhost opt]# vim inotify.sh
## --password-file=/etc/server.pass 指定密码文件
## zhangsan@192.168.32.130 指定用户,在/etc/rsyncd.conf配置文件
## /opt/student/ 客户端要同步给远程服务端的目录
## myhtml 远程服务端要同步的目录[root@localhost opt]# cat inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /opt/student/"
RSYNC_CMD="sudo rsync -arvH --delete --password-file=/etc/server.pass /opt/student/ zhangsan@192.168.32.130::myhtml"
# 使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
# while判断是否接收到监控记录
doif [ $(pgrep rsync | wc -l) -le 0 ] ; then#如果rsync未在执行,则立即启动 sudo $RSYNC_CMDfi
done
[root@localhost opt]# chmod +x /opt/inotify.sh
[root@localhost opt]# chmod 777 /opt/student/
[root@localhost opt]# chmod +x /etc/rc.d/rc.local
[root@localhost opt]# echo '/opt/inotify.sh' >> /etc/rc.d/rc.local
[root@localhost opt]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/local
/opt/inotify.sh## 启动脚本
[root@localhost opt]# sh /opt/inotify.sh
## 测试
## 复制文件到监控/opt/student/目录下
[root@localhost student]# cp /etc/yum.repos.d/* /opt/student/
## 可以看到脚本实时记录输出日志## 查看客户端192.168.32.129/opt/student/
## 查看监控脚本inotify.sh输出日志
## 查看远程同步目录服务端192.168.32.130备份同步目录是否自动同步
## 可以看到已经触发inotify.sh脚本自动同步了
生产环境同步实验(fastdfs)
环境
客户端:172.16.153.201(数据源目录)
服务端:172.16.153.202(远程同步目录)
客户端:172.16.153.201(数据源目录)
[root@201-app storage]# systemctl stop firewalld.service && setenforce 0
[root@201-app storage]# rpm -q rsync
rsync-3.0.9-18.el7.x86_64
若没有rsync,则yum安装
[root@localhost opt]# yum install -y rsync
[root@201-app storage]# rpm -q rsync
rsync-3.0.9-18.el7.x86_64
## 以上都有则正常
服务端:172.16.153.202(远程同步目录)
[root@202-app data]# systemctl stop firewalld.service && setenforce 0
[root@202-app data]# rpm -q rsync
rsync-3.0.9-18.el7.x86_64
若没有rsync,则yum安装
[root@localhost opt]# yum install -y rsync
[root@202-app data]# rpm -q rsync
rsync-3.0.9-18.el7.x86_64
## 以上都有则正常[root@202-app data]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd### 备份好方便回滚
[root@202-app data]# cp /etc/rsyncd.conf /etc/rsyncd.conf_bak
### 配置
[root@202-app data]# vim /etc/rsyncd.conf
[root@202-app data]# mkdir -p /var/www/html
[root@202-app data]# ls -ld /var/www/html
drwxr-xr-x. 2 root root 6 12月 12 11:00 /var/www/html
[root@202-app data]# chmod +r /var/www/html/
[root@202-app data]# vim /etc/rsyncd_users.db
##给个权限,只有自己的用户访问,别的用户访问不了
[root@localhost ~]# cat /etc/rsyncd_users.db
zhangsan:123456
## 给/etc/rsyncd_users.db 密码配置文件授权
[root@202-app html]# chmod 600 /etc/rsyncd_users.db
[root@202-app data]# kill $(cat /var/run/rsyncd.pid)
[root@202-app data]# rsync --daemon
[root@202-app data]# netstat -antp|grep rsync
tcp 0 0 172.16.153.202:873 0.0.0.0:* LISTEN 9566/rsync## 服务端rsync服务正常启动完成
客户端配置免交互密码(172.16.153.201)
[root@201-app storage]# echo "123456" > /etc/server.pass
[root@201-app storage]# chmod 600 /etc/server.pass
## 客户端先测试下免密同步是否成功
## 客户端:172.16.153.201
## 启动客户端rsync 服务
[root@201-app data]# rsync --daemon
[root@201-app data]# netstat -antp|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 17240/rsync
tcp6 0 0 :::873 :::* LISTEN 17240/rsync ## 测试
[root@201-app data]# rsync -avz --password-file=/etc/server.pass zhangsan@172.16.153.202::myhtml /data/
使用inotify工具进行实时同步(上传数据)
发起端(客户端)配置rsync+inotify
使用inotify通知接口,可以用来监控文什系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为 inotify 通知机制出 Linux 内核提供,因此主要做木机监控,在触发式备份中应用时更适合上行同步。
服务端:172.16.153.202
[root@202-app html]# vim /etc/rsyncd.conf
## 修改此处为no
[root@202-app html]# kill $(cat /var/run/rsyncd.pid)
[root@202-app html]# netstat -antp|grep rsync
[root@202-app html]# rsync --daemon
[root@202-app html]# netstat -antp|grep rsync
tcp 0 0 172.16.153.202:873 0.0.0.0:* LISTEN 22135/rsync
[root@202-app html]# chmod 777 /var/www/html/
[root@202-app html]# ls /var/www/html/
111 a.txt test
客户端:172.16.153.201## inotify 的默认内核参数
[root@201-app data]# cat /proc/sys/fs/inotify/max_queued_events
16384## 每个用户所能创建的Inotify实例的上限
[root@201-app data]# cat /proc/sys/fs/inotify/max_user_instances
1024## 每个inotify实例相关联的watches的上限,即每个inotify实例可监控的最大目录、文件数量
[root@201-app data]# cat /proc/sys/fs/inotify/max_user_watches
1048576[root@201-app data]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@201-app data]# sysctl -p
客户端安装inotify-tools-3.14.tar.gz
[root@201-app data]# yum install -y gcc gcc-c++ make
[root@201-app data]# tar -zxvf inotify-tools-3.13.tar.gz
[root@201-app data]# cd inotify-tools-3.13
[root@201-app inotify-tools-3.13]# ./configure && make && make install
使用命令进行监控(inotifywait -mrq -e modify,create,move,delete )选项 含义
-e 用来指定要监控哪些事件
-m 表示持续监控
-r 表示递归整个目录
-q 简化输出信息
客户端:172.16.153.201
## 表示持续监控/data/目录下的事件
[root@201-app inotify-tools-3.13]# inotifywait -mrq -e modify,create,move,delete /data/
## 有日志输出就可以了
客户端使用Shell脚本进行实时监控
客户端:172.16.153.201
## 监控端在什么地方,脚本也要放在相同地方
[root@201-app data]# vim inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /data/"
RSYNC_CMD="sudo rsync -arvH --password-file=/etc/server.pass /data/ zhangsan@172.16.153.202::myhtml"
# 使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
# while判断是否接收到监控记录
dosudo $RSYNC_CMD
done[root@201-app data]# chmod +x /data/inotify.sh
[root@201-app data]# chmod -R 777 /data/
[root@201-app data]# chmod +x /etc/rc.d/rc.local
[root@201-app data]# echo '/data/inotify.sh' >> /etc/rc.d/rc.local
客户端:172.16.153.201
服务端:172.16.153.202
实验成功## 附件同步脚本:#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /home/fastdfs/storage/"
RSYNC_CMD="sudo rsync -arvH --delete --password-file=/etc/server.pass /home/fastdfs/storage/ zhangsan@172.16.153.202::myhtml"
# 使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
# while判断是否接收到监控记录
dosudo $RSYNC_CMD
done
相关文章:

Rsync+notify文件实时同步工具
rsync ( Remote sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备…...

小信砍柴的题解
目录 原题描述: 时间:1s 空间:256M 题目描述: 输入格式: 输出格式: 样例1输入: 题目大意: 主要思路: 注意事项: 总代码: 原题描述&#…...
华为OD机试 - 跳格子3(Java JS Python C)
题目描述 小明和朋友们一起玩跳格子游戏, 每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7], 从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。 输入描述 第一行输入总的格子数量 n 第二行输入每个格子的分数 sc…...

每天五分钟计算机视觉:谷歌的Inception模块的计算成本的问题
计算成本 Inception 层还有一个问题,就是计算成本的问题,我们来看一下55 过滤器在该模块中的计算成本。 原始图片为28*28*192经过32个5*5的过滤操作,它的计算成本为: 我们输出28*28*32个数字,对于输出的每个数字来说,你都需要执行 55192 (5*5为卷积核的大小,192为通道…...

最新AI创作系统ChatGPT系统源码+DALL-E3文生图+支持AI绘画+GPT语音对话功能
一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…...

78-C语言-完数的判断,以及输出其因子
简介:一个数如果恰好等于它的因子之和,这个数就称为完数,C语言编程找出1000之内的所有完数,并输出其因子。因子可以整除该数字的数, 如6的因子:1 2 3,6%10 6%20 6%30 解释全在注…...

C# 使用FluentHttpClient请求WebApi
写在前面 FluentHttpClient 是一个REST API 异步调用 HTTP 客户端,调用过程非常便捷,采用流式编程,可以将所有请求所需的参数一次性发送,并直接获取序列化后的结果。 老规矩从NuGet上安装该类库: 这边一定要认准是 P…...

AXure交互及案列
AXure交互及案列 1.交互样式简介2.axure交互事件简介3.axure交互动作简介4.axure情形简介2.完成案列1.登录案列2.省市联动案列3.左侧联动 1.交互样式简介 Axure是一种强大的原型设计工具,它允许用户创建高保真的交互式原型,用于演示和测试Web和移动应用…...

美颜SDK技术对比,深入了解视频美颜SDK的工作机制
如何在实时视频中呈现更加自然、美丽的画面,而这正是美颜SDK技术发挥作用的领域之一。本文将对几种主流视频美颜SDK进行深入比较,以揭示它们的工作机制及各自的优劣之处。 随着科技的不断进步,美颜技术已经从简单的图片处理发展到了视频领域…...
OkHttp ,使用 HttpUrl.Builder 来添加查询参数并添加到请求对象
在使用 OkHttp 中,你可以使用 HttpUrl.Builder 来添加查询参数并将其添加到请求对象中。下面是一个示例代码: import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response;public class Main {public stat…...

图片速览 PoseGPT:基于量化的 3D 人体运动生成和预测(VQVAE)
papercodehttps://arxiv.org/pdf/2210.10542.pdfhttps://europe.naverlabs.com/research/computer-vision/posegpt/ 方法 将动作压缩到离散空间。使用GPT类的模型预测未来动作的离散索引。使用解码器解码动作得到输出。 效果 提出的方法在HumanAct12(一个标准但小规…...

Java对象结构
Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。 Object的三个部分 对象头包括三个字段,第一个字段叫做 Mark Word(标记字),用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。 第二个字段叫做 Class Pointer(类对象…...
基于redis的分布式锁实现方案
3. 基于redis的分布式锁实现方案: redis集群,原理是因为redis单线程串行处理. (1). SETNX方案: ①. SETNX(Set if not exists):a. 命令在指定的key不存在时,为key设置指定的值.b. SETNX Key Value设置成功,返回1.设置失败,返回0.c. 没有有效期的②. 原子操作(多个执行命令):Mu…...

基于JAVA+SpringBoot的线上智能问诊就医平台
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 智慧医药系统…...

adb: error: cannot create file/directory ‘d:/1.png‘: No such file or directory
将文件从设备读取到PC 由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错: adb pull <remote> <local> eg: C:\Users\admin>adb pull /sdcard/server.log C:\Users\admin\Desktop /sdcard/server.log: 1 file pulled.…...

Pelee: A Real-Time Object Detection System on Mobile Devices(CVPR 2019)
文章目录 年三十AbstractIntroductionPeleeNet:一个高效的特征提取网络架构消融实验数据集不同设计选择对性能的影响 在ImageNet ILSVRC 2012上的结果真实设备上的速度 Pelee:实时目标检测系统Overview在VOC 2007上的结果不同设计选择的影响与其他框架的比较真实设备…...

分布式理论 | RPC | Spring Boot 整合 Dubbo + ZooKeeper
一、基础 分布式理论 什么是分布式系统? 在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”; 分布式系统是由一组通过网络进行通信、为了完成共同的…...

局域网其他pc如何访问宿主机虚拟机IP?
文章目录 背景贝瑞蒲公英设置虚拟机网络连接测试 背景 使用贝瑞蒲公英异地组网,将家里的pc作为pgsql服务器在公司使用,但是虚拟机的ip和端口访问不了 贝瑞蒲公英 设置虚拟机网络 就是添加端口转发规则 连接测试 公网内其他pc连接测试 可以看到已经连接成…...

U8 语法制导翻译技术
文章目录 一、总述二、翻译文法1、概念 三、语法制导翻译1、概念2、带属性的翻译文法3)综合属性4)继承属性5)举例 3、 L-属性翻译文法(L-ATG)1)概念2)求值规则 4、简单赋值形式的L-ATGÿ…...
剑指offer A + B
剑指offer A B 题目 输入两个整数,求这两个整数的和是多少。 输入格式 输入两个整数A,B,用空格隔开,0≤A,B≤10的8次幂 输出格式 输出一个整数,表示这两个数的和 样例输入: 3 4样例输出: 7参考答…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...