云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本
一、rsync远程同步
1.rsync基本概述
(1)sync同步
(2)async异步
(3)rsync远程同步
2.rsync的特点
可以镜像保存整个目录树和文件系统
可以保留原有权限,owner,group,时间,软硬链接,文件acl,文件属性等
传输效率高,使用同步算法
支持匿名传输,方便网站镜像,安全性高
3、rsync与scp的区别
4.rsyn的使用
安装rsync软件包
[root@localhost ~]# yum -y install rsync[root@localhost ~]# which rsync
/usr/bin/rsync
push 推,相当于上传;
pull 拉,相当于下载;
(1)本地同步
同步文件的内容,文件的属性,文件的新增,文件的修改,文件的删除(--delete)
在家目录中创建一些文件,将文件同步到opt下
[root@localhost ~]# cd
[root@localhost ~]# mkdir folder
在folder目录下创建f1,f2,f3
[root@localhost ~]# mkdir folder/f{1..3}
[root@localhost ~]# tree folder/
folder/
├── f1
├── f2
└── f33 directories, 0 files
在folder目录下的f1下创建file0,file1,file2,file3,file4
[root@localhost ~]# touch folder/f1/file{0..4}
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
├── f2
└── f33 directories, 5 files
同步文件
将folder目录下的文件传到opt目录
rsync -av /目录 /tmp 同步目录
[root@localhost ~]# rsync -av folder/ /opt/[root@localhost opt]# ls
a.txt f1 f2 f3
[root@localhost opt]# tree /opt/
/opt/
├── a.txt
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
├── f2
└── f3
使用rsync命令进行同步
rsync -avR 保存相对路径,也就是同步目录
[root@localhost ~]# rsync -avR folder/ /opt/[root@localhost ~]# tree /opt/
/opt/
└── folder
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
├── f2
└── f34 directories, 5 files
现在不传输到opt目录,就在本地的及格目录传
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
├── f2
└── f33 directories, 5 files
将f1下的文件同步到f2下
rsync -av /目录/ /tmp/ 同步目录下的文件
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
在f1底下创建file5文件
[root@localhost ~]# touch folder/f1/file5
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
├── f2
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ └── file4
└── f3
3 directories, 11 files
再次将f1下的文件同步到f2下,发现新创建的file5也被同步过去了
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
├── f2
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
└── f33 directories, 12 files
删除文件
删除f1下的file0文件
[root@localhost ~]# rm -rf folder/f1/file0
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
├── f2
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
└── f33 directories, 11 files
再次将f1下的文件同步到f2下,发现删除的file0在f2中仍然存在
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
├── f2
│ ├── file0
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
└── f33 directories, 11 files
使用--delete 进行删除同步,将f1 下的文件同步到f2下
[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
sending incremental file list
deleting file0sent 115 bytes received 21 bytes 272.00 bytes/sec
total size is 0 speedup is 0.00
发现f2中的file0文件也被删除了
[root@localhost ~]# tree folder/
folder/
├── f1
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
├── f2
│ ├── file1
│ ├── file2
│ ├── file3
│ ├── file4
│ └── file5
└── f33 directories, 10 files
由此看出:文件的增加会同步,而文件的删除并不会
rsync语法
rsync [选项] 原数据位置 目录位置
修改文件
对f1中的file1文件进行修改,然后编辑文件内容
[root@localhost ~]# vim folder/f1/file1
[root@localhost ~]# cat folder/f1/file1
大家好,我是阿优,超级无敌阿优!
[root@localhost ~]# cat folder/f2/file1
发现修改了f1中的内容,f2目录中没有发生改变再次使用--delete进行同步
[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
sending incremental file list
./
file1sent 217 bytes received 38 bytes 510.00 bytes/sec
total size is 47 speedup is 0.18发现f2中的file1文件也被修改了
[root@localhost ~]# cat folder/f2/file1
大家好,我是阿优,超级无敌阿优!
由此得出:文件的修改也会被rsync同步
[root@localhost ~]# touch folder/f1/file0 -m -d "2024-7-14 00:00"
[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
[root@localhost ~]# touch folder/f1/file0 -m -d "2024-7-14 00:00"
[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
[root@localhost ~]# ls -l folder/f1/file0
-rw-r--r--. 1 root root 0 7月 14 00:00 folder/f1/file0
#给组用户增加写的权限
[root@localhost ~]# chmod g+w folder/f1/file0
[root@localhost ~]# ls -l folder/f1/file0
-rw-rw-r--. 1 root root 0 7月 14 00:00 folder/f1/file0
[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
[root@localhost ~]# ls -l folder/f2/file0
-rw-rw-r--. 1 root root 0 7月 14 00:00 folder/f2/file0
#同步文件内容的修改、文件的删除,以及文件的属性的修改
(2)远程同步
向另一台主机 /tmp目录同步数据
[root@localhost ~]# rsync -av folder/ root@192.168.1.10:/tmp/
root@192.168.1.10's password:
要实现远程同步,要求对另一台主机也要安装rsync
远程主机上操作:
在tmp目录下新建一个大小为300M,名为lajiwenjian的文件
dd if=/dev/zero of=/tmp/lajiwenjian bs=300M count=1
查看tmp下的文件
ls -lh /tmp/
将文件同步到192.168.1.20的原主机上
rsync -a root@192.168.1.20::
关闭防火墙
systemctl stop firewalld
关闭selinux
setenforce 0
原主机上操作:
#从远程主机拉取数据
[root@localhost ~]# rsync -av root@192.168.1.10:/tmp/lajiwenjian /tmp/
root@192.168.1.10's password:
receiving incremental file list
lajiwenjiansent 43 bytes received 314,649,690 bytes 15,348,767.46 bytes/sec
total size is 314,572,800 speedup is 1.00
#查看,发现lajiwenjian已经存在
[root@localhost ~]# ls -l /tmp/
总用量 307200
-rw-r--r--. 1 root root 314572800 7月 18 11:04 lajiwenjian
由此证明:两台主机是可以进行远程同步数据的
(3)服务器项目同步
对原主机进行免密操作
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xoC7J0cpoMXgcvndhrxNRzX7BVbRtYi1vQC0Md9d2+4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|. .=o.ooB|
|.o . . .O+=.B|
|..* . . .o.= =+|
|.+ o + * . ..o.|
|. + * S . ...|
| + * . . |
| o + . E|
| + |
| |
+----[SHA256]-----+
[root@localhost ~]# ssh-copy-id root@192.168.1.10
再次从远程主机拉取数据
[root@localhost ~]# rsync -av root@192.168.1.10:/tmp/lajiwenjian /tmp/
receiving incremental file listsent 20 bytes received 51 bytes 6.76 bytes/sec
total size is 314,572,800 speedup is 4,430,602.82
启动rsync服务
检查rsync服务是否启动
[root@localhost ~]# systemctl status rsyncd
[root@localhost ~]# systemctl start rsyncd
[root@localhost ~]# netstat -lntup | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2664/rsync
tcp6 0 0 :::873 :::* LISTEN 2664/rsync
找到服务配置文件
[root@localhost ~]# find / -name "rsync*conf"
/etc/rsyncd.conf
[root@localhost ~]# vim /etc/rsyncd.conf
创建多级目录
[root@localhost ~]# mkdir -p /app/studentweb/src/main/java/co/goho/ayou.studentweb
[root@localhost ~]# tree /app/
/app/
└── studentweb
└── src
└── main
└── java
└── co
└── goho
└── ayou.studentweb7 directories, 0 files
在多级目录下创建.java文件
[root@localhost ~]touch /app/studentweb/src/main/java/co/goho/ayou.studentweb/File{0..9}.java
[root@localhost ~]# tree /app/
/app/
└── studentweb
└── src
└── main
└── java
└── co
└── goho
└── ayou.studentweb
├── File0.java
├── File1.java
├── File2.java
├── File3.java
├── File4.java
├── File5.java
├── File6.java
├── File7.java
├── File8.java
└── File9.java7 directories, 10 files
[root@localhost ~]# ls /app/
studentweb
检测app项目
进入app目录下的studentweb目录
[root@localhost ~]# cd /app/studentweb/编辑配置文件
[root@localhost studentweb]# vim /etc/rsyncd.conf重新启动rsyncd服务
[root@localhost studentweb]# systemctl restart rsyncd注:备份服务器不需要启动rsyncd服务
#在y主机提供了一个针对app/下项目的rsync服务
[root@localhost studentweb]# tree /app/
/app/
└── studentweb
└── src
└── main
└── java
└── co
└── goho
└── ayou.studentweb
├── File0.java
├── File1.java
├── File2.java
├── File3.java
├── File4.java
├── File5.java
├── File6.java
├── File7.java
├── File8.java
└── File9.java7 directories, 10 files
远程主机上操作:
从原主机对数据进行同步
rsync -av 原 ::目标目录
[root@dongdong ~]#rsync -a root@192.168.1.20::
[root@dongdong ~]#rsync -ac root@192.168.1.20::app /tmp/查看tmp目录
[root@dongdong ~]# ls -l /tmp/再次同步
[root@dongdong ~]# rsync -av root@192.168.1.20::app /tmp/再次查看
[root@dongdong ~]# ls -l /tmp/
[root@dongdong ~]# tree /tmp/src/
/tmp/src/
└── main
└── java
└── co
└── goho
└── ayou.studentweb
├── File0.java
├── File1.java
├── File2.java
├── File3.java
├── File4.java
├── File5.java
├── File6.java
├── File7.java
├── File8.java
└── File9.java5 directories, 10 files
发现原主机的数据被成功同步给远程主机了
二、自动化推取文件
1.检查并启动rsync服务
检查rsync服务是否启动
[root@localhost ~]# netstat -lntup | grep rsync
启动rsync服务
[root@localhost ~]# systemctl start rsyncd再次检查rsync服务是否启动
[root@localhost ~]# netstat -lntup | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3368/rsync
tcp6 0 0 :::873 :::* LISTEN 3368/rsync
2.设置每一分钟推送一次代码
(1)查看rsync所在的位置
[root@localhost ~]# which rsync
/usr/bin/rsync
(2)编辑计划任务--每分钟推取一次
[root@localhost ~]# crontab -e
*/1 * * * * /usr/bin/rsync -av /app/studentweb/ root@192.168.1.10:/tmp/
若文件没有被修改,则没必要推送
(3)编辑计划任务,删除计划任务
[root@localhost ~]# crontab -e
crontab: installing new crontab
您在 /var/spool/mail/root 中有新邮件
(4)另外开一台主机进行验证
删除/tmp下的所有内容
[root@dongdong ~]# rm -rf /tmp/*
在原主机计划任务编辑完成后,查看/tmp目录
[root@dongdong ~]# ls /tmp/
src
可以发现/tmp目录下多了src,是从原主机同步过来的
3.给rsyncd服务添加密码
(1)编辑配置文件
添加两属性
[root@localhost ~]# vim /etc/rsyncd.conf
auth users=user0,user1
#secrets file=/etc/rsync.secrets
(2)创建编辑rsync密码文件
账号:密码
[root@localhost ~]# vim /etc/rsync.secrets
tom:tomjerry:jerry
(3) 给密码文件添加权限
[root@localhost ~]# ls -l /etc/rsync.secrets
-rw-r--r--. 1 root root 28 7月 18 15:12 /etc/rsync.secrets[root@localhost ~]# #chmod 600 /etc/rsync.secrets
(4)重启rsyncd服务
[root@localhost ~]# systemctl restart rsyncd
4.安装监听工具
(1)安装inotify-tools软件包
[root@localhost ~]# yum -y install inotify-tools
此处安装完成后,会生成以下两个文件
(2)查看inotifywait的位置
[root@localhost ~]# which inotifywait
/usr/bin/inotifywait
(3)创建并编辑脚本文件
[root@localhost ~]# vim inotify.sh
#!/bin/bash
/usr/bin/inotifywait -mrq -e modify,delete,create,attrib,move /app/studentweb | while read events
dorsync -av /app/studentweb/ root@192.168.1.10:/tmp/
done
(4)进行查看
[root@localhost ~]# ls
anaconda-ks.cfg d0 echo.txt folder inotify.sh list vuehtml000
发现我们创建的inotify.sh脚本文件是存在的
(5)对脚本文件进行改名,将其改为inotiftest.sh
[root@localhost ~]# mv inotify.sh inotiftest.sh
(6)对更改后的脚本文件的用户权限进行修改
[root@localhost ~]# chmod 700 inotiftest.sh
[root@localhost ~]# ls
anaconda-ks.cfg d0 echo.txt folder inotiftest.sh list vuehtml000
(7)创建测试文件,及编辑所创建的文件,以便测试
在studentweb的目录下创建名为 天天好心情!的文件
[root@localhost ~]# touch /app/studentweb/天天好心情!
创建名为天天好心情 的文件
[root@localhost ~]# touch /app/studentweb/天天好心情创建名为/woshidongdong的文件
[root@localhost ~]# touch /app/studentweb/woshidongdong
[root@localhost ~]# vim /app/studentweb/woshidongdong查看编辑文件的内容
[root@localhost ~]# cat /app/studentweb/woshidongdong
天天好心情
(8)运行脚本文件
[root@localhost ~]# ./inotiftest.sh
sending incremental file list
./
.woshidongdong.swp
woshidongdong
天天好心情
天天好心情!
(9)将原主机的脚本转入后台运行
[root@localhost ~]# nohup ./inotiftest.sh &
[3] 17277
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"
(10)在另一台主机进行测试
[root@dongdong ~]# rm -rf /tmp/*
[root@dongdong ~]# ls /tmp/
src woshidongdong 天天好心情 天天好心情!
发现我们所创建的文件和内容也被同步到tmp目录下了
相关文章:
云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本
一、rsync远程同步 1.rsync基本概述 (1)sync同步 (2)async异步 (3)rsync远程同步 2.rsync的特点 可以镜像保存整个目录树和文件系统 可以保留原有权限,owner,group,时间,软硬链…...
【DGL系列】DGLGraph.out_edges简介
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 函数说明 用法示例 示例 1: 获取所有边的源节点和目标节点 示例 2: 获取特定节点的出边 示例 3: 获取所有边的边ID 示例 4: 获取所有信息&a…...
掌握品质之钥:ISO9001质量管理体系认证的巨大价值
在当今竞争激烈的市场环境中,企业若要脱颖而出并持续成功,就必须确保其产品和服务质量始终如一。ISO9001质量管理体系认证正是帮助企业实现这一目标的关键工具。本文将深入探讨ISO9001认证的巨大价值以及它如何助力企业提升竞争力、优化内部管理并赢得客…...
网络开局 与 Underlay网络自动化
由于出口和核心设备 部署在核心机房,地理位置集中,业务复杂,开局通常需要网络工程师进站调测。 因此核心层及核心以上的设备(包含核心层设备,旁挂独立AC设备和出口设备)推荐采用WEB网管开局方式或命令行开局方式。 核心以下的设备(包含汇聚层设备、接入层设备和AP)由于数量众…...
MySQL MVCC原理
全称Multi-Version Concurrency Control,即多版本并发控制,主要是为了提高数据库的并发性能。 1、版本链 对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列: 1、trx_id:每次一个事务对某条…...
编织文字的魔法:探索WebKit的CSS文本效果
编织文字的魔法:探索WebKit的CSS文本效果 在现代网页设计中,文本不仅仅是信息的载体,更是视觉表现的重要元素。WebKit,作为众多浏览器的核心引擎,支持一系列CSS文本效果,使开发者能够创造出引人注目的文本…...
如何在Linux上部署Ruby on Rails应用程序
在Linux上部署Ruby on Rails应用程序是一个相对复杂的过程,需要按照一系列步骤进行。下面是一个基本的部署过程,涵盖了从安装所需软件到部署应用程序的所有步骤。 安装必要的软件 在部署Ruby on Rails应用程序之前,需要确保Linux系统上安装了…...
极狐GitLab 如何管理 PostgreSQL 扩展?
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…...
SpringBoot如何使用Kafka来优化接口请求的并发
在Spring Boot中使用 Kafka 来优化接口请求的并发,主要是通过将耗时的任务异步化到Kafka消息队列中来实现。这样,接口可以立即响应客户端,而不需要等待耗时任务完成。 在Spring Boot应用程序中调用Kafka通常涉及使用Spring Kafka库ÿ…...
全面了解不同GPU算力型号的价格!
这两年人工智能(AI)、机器学习(ML)、深度学习和高性能计算(HPC)领域的快速发展,GPU算力已成为不可或缺的资源。企业、研究机构乃至个人开发者越来越依赖于GPU加速计算来处理大规模数据集和复杂模…...
Linux网络编程之UDP
文章目录 Linux网络编程之UDP1、端口号2、端口号和进程ID的区别3、重新认识网络通讯过程4、UDP协议的简单认识5、网络字节序6、socket编程接口6.1、socket常见接口6.2、sockaddr通用地址结构 7、简单的UDP网络程序7.1、服务器响应程序7.2、服务器执行命令行7.3、服务器英语单词…...
graham 算法计算平面投影点集的凸包
文章目录 向量的内积(点乘)、外积(叉乘)确定旋转方向numpy 的 cross 和 outernp.inner 向量与矩阵计算示例np.outer 向量与矩阵计算示例 python 示例生成样例散点数据图显示按极角排序的结果根据排序点计算向量转向并连成凸包 基本…...
【海外云手机】静态住宅IP集成解决方案
航海大背景下,企业和个人用户对于网络隐私、稳定性以及跨国业务的需求日益增加。静态住宅IP与海外云手机的结合,提供了一种创新的集成解决方案,能够有效应对这些需求。 本篇文章分为三个部分;静态住宅优势、云手机优势、集成解决…...
最新!CSSCI(2023-2024)期刊目录公布!
【SciencePub学术】据鲁迅美术学院7月16日消息,近日,南京大学中国社会科学研究评价中心公布了中文社会科学引文索引(CSSCI)(2023—2024)数据库最新入选目录。 C刊一般指CSSCI来源期刊,即南大核心…...
C语言 | Leetcode C语言题解之第237题删除链表中的节点
题目: 题解: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/void deleteNode(struct ListNode* node) {struct ListNode * p node->next;int temp;temp node->val;node->val…...
linux LED代码设计
设计目标: 写RGB LED灭、亮、闪烁等效果,不同颜色也需要设置 #include <iostream> #include <unistd.h> // 对于usleep() #include <fcntl.h> // 对于open(), close() #include <sys/ioctl.h> // 对于ioctl() #include <li…...
Jvm基础(一)
目录 JVM是什么运行时数据区域线程私有1.程序计数器2.虚拟机栈3.本地方法栈 线程共享1.方法区2.堆 二、对象创建1.给对象分配空间(1)指针碰撞(2)空闲列表 2.对象的内存布局对象的组成Mark Word类型指针实例数据:对齐填充 对象的访问定位句柄法 三、垃圾收集器和内存…...
深入理解FFmpeg--软/硬件解码流程
FFmpeg是一款强大的多媒体处理工具,支持软件和硬件解码。软件解码利用CPU执行解码过程,适用于各种平台,但可能对性能要求较高。硬件解码则利用GPU或其他专用硬件加速解码,能显著降低CPU负载,提升解码效率和能效。FFmpe…...
新的铸造厂通过 PROFIBUS 技术实现完全自动化
钢铁生产商某钢以其在厚钢板类别中极高的产品质量而闻名。其原材料(板坯连铸机)在钢铁厂本地生产,该厂最近新建了一座垂直连铸厂。该项目的一个主要目标是从一开始就完全自动化这座新工厂和整个铸造过程,以高成本效率实现最佳产品…...
【UE5.1】NPC人工智能——04 NPC巡逻
效果 步骤 一、准备行为树和黑板 1. 对我们之前创建的AI控制器创建一个子蓝图类 这里命名为“BP_NPC_AIController_Lion”,表示专门用于控制狮子的AI控制器 2. 打开狮子蓝图“Character_Lion” 在类默认值中将“AI控制器类”修改为“BP_NPC_AIController_Lion” 3…...
计算机视觉主流框架及其应用方向
文章目录 前言一、计算机视觉领域的主要框架1、深度学习框架1.1、TensorFlow1.2、PyTorch 2、神经网络模型2.1、卷积神经网络(CNN)2.2、循环神经网络(RNN) 二、框架在计算机视觉任务中的应用1、TensorFlow1.1、概述:1.…...
群晖 搭建alist 记录
docker搭建 使用docker-compose 创建一个 docker-compose.yml version: 3.5services:qbittorrent:image: linuxserver/qbittorrent:latestcontainer_name: qbittorrent# network_mode: hostenvironment:- PUID1000- PGID100- TZAsia/Shanghai- WEBUI_PORT8181 # 将外部端口…...
【北航主办丨本届SPIE独立出版丨已确认ISSN号】第三届智能机械与人机交互技术学术会议(IHCIT 2024,7月27)
由北京航空航天大学指导,北京航空航天大学自动化科学与电气工程学院主办,AEIC学术交流中心承办的第三届智能机械与人机交互技术学术会议(IHCIT 2024)将定于2024年7月27日于中国杭州召开。 大会面向基础与前沿、学科与产业…...
深入浅出WebRTC—NACK
WebRTC 中的 NACK(Negative Acknowledgment)机制是实时通信中处理网络丢包的关键组件。网络丢包是常见的现象,尤其是在无线网络或不稳定连接中。NACK 机制旨在通过请求重传丢失的数据包来减少这种影响,从而保持通信的连续性和质量…...
简单工厂模式、工厂模式和抽象工厂模式的区别
简单工厂模式、工厂模式和抽象工厂模式都是创建型设计模式,它们之间在目的、实现方式和适用场景上存在显著的区别。以下是对这三种模式的详细比较: 一、定义与目的 简单工厂模式(Simple Factory Pattern) 定义: 简单工…...
JVM-垃圾回收与内存分配
目录 垃圾收集器与内存分配策略 引用 对象的访问方式有哪些?(句柄和直接指针) Java的引用有哪些类型? 如何判断对象是否是垃圾? 请列举一些可作为GC Roots的对象? 对象头了解吗? mark word(hashcode、分代、锁标志位)、…...
Jolt路线图
1. 引言 a16z crypto团队2024年7月更新了其Jolt路线图: 主要分为3大维度: 1)链上验证维度: 1.1)Zeromorph:见Aztec Labs团队2023年论文 Zeromorph: Zero-Knowledge Multilinear-Evaluation Proofs from…...
NEEP-EN2-2019-Text4
英二-2019-Text4摘自赫芬顿邮报《The Huffington Post》2018年6月的一篇名为“Let’s Stop Pretending Quitting Straws Will Solve Plastic Pollution”的文章。 以下为个人解析,非官方公开标准资料,可能有误,仅供参考。(单词解释…...
docker 部署wechatbot-webhook 并获取接口实现微信群图片自动保存到chevereto图库等
功能如图: docker部署 version: "3" services:excalidraw:image: dannicool/docker-wechatbot-webhook:latestcontainer_name: wechatbot-webhookdeploy:resources:limits:cpus: 0.15memory: 500Mreservations:cpus: 0.05memory: 80Mrestart: alwayspor…...
OpenWrt安装快速入门指南
在刷新 OpenWrt 固件之前,建议进行以下准备: 1、不要急于安装,慢慢来。如果在安装过程中出现奇怪之处,请先找到答案,然后再继续。 2、准备好设备的精确型号,以便能够选择正确的OpenWrt固件。 3、手上有关…...
即墨公司做网站/百度资讯
C 预处理指令#pragma 一、定义介绍 #pragma是C预处理指令的一种,它可以设置编译器的状态,或者让编译器完成一些特定的工作。因此,它是一种操作编译器的指令。 二、功能作用 #pragma的作用是让编译器执行一些已经设定好的工作。通过#pragma后…...
杭州网站设计开发/app下载量推广
2019独角兽企业重金招聘Python工程师标准>>> https://github.com/javahongxi 本文转载自kaitao.toutiao.im 4.1 ServletContext接口介绍 ServletContext(Servlet上下文)接口定义了servlet运行在的Web应用的视图。容器供应商负责提供Servlet容…...
网站建设公司官网/百度指数查询平台
使用教程浏览器:ie编程语言:js使用ActiveXObject,该对象是微软的私有拓展名, 只在微软的IE浏览器上支持。指定打印机进行打印,是先将指定打印机设置成默认打印机,打印完成后,再恢复原来的打印机。//打印条码…...
做网站的价位/百度搜索引擎优化详解
可以访问 查看更多关于 消息中间件 的原创文章。移山是禧云自研的数据迁移平台,包含异构数据源的迁移、实时数据同步等服务。有兴趣的可以看这里:本文主要介绍移山实时数据同步服务产生的背景以及整体架构设计。可以访问一. 移山实时数据同步服务产生背…...
番禺网站建设哪里好/短网址
前言 本文主要是讲解在Controller中的开发,主要的知识点有如下: 编码过滤器使用注解开发注解RequestMapping详解业务方法接收参数字符串转日期重定向和转发返回JSONSpringMVC过滤编码器 在SpringMVC的控制器中,如果没有对编码进行任何的操作&…...
响应式网站做多大的尺寸/seo推广经验
自定义三维图表绘制 柱状图 环状图 三叶草图 这里仅给出环状图用作统计亚洲航班执航飞机制造公司统计的截图 根据相机高度,自动调节统计框及统计图大小。...