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

云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本

一、rsync远程同步


1.rsync基本概述

(1)sync同步

(2)async异步

(3)rsync远程同步

2.rsync的特点

可以镜像保存整个目录树和文件系统
可以保留原有权限,owner,group,时间,软硬链接,文件acl,文件属性等
传输效率高,使用同步算法
支持匿名传输,方便网站镜像,安全性高

3、rsync与scp的区别

两者都可以实现远程同步,但是相对⽐⽽⾔,rsync能⼒更强
① ⽀持增量备份
② 数据同步时保持⽂件的原有属性

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
└── f3

3 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
└── f3

3 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
    └── f3

4 directories, 5 files

现在不传输到opt目录,就在本地的及格目录传

[root@localhost ~]# tree folder/
folder/
├── f1
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   └── file4
├── f2
└── f3

3 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
└── f3

3 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
└── f3

3 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
└── f3

3 directories, 11 files

使用--delete 进行删除同步,将f1 下的文件同步到f2下

[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
sending incremental file list
deleting file0

sent 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
└── f3

3 directories, 10 files

由此看出:文件的增加会同步,而文件的删除并不会


rsync语法

rsync [选项] 原数据位置 目录位置

-v 详细模式输出
-a 归档模式,递归的⽅式传输⽂件,并保持⽂件的属性
-R 保留相对路径

修改文件

对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
./
file1

sent 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
lajiwenjian

sent 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 list

sent 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.studentweb

7 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.java

7 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.java

7 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.java

5 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:tom

jerry: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
do

                rsync -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库&#xff…...

全面了解不同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代码设计

设计目标&#xff1a; 写RGB LED灭、亮、闪烁等效果&#xff0c;不同颜色也需要设置 #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类型指针实例数据&#xff1a;对齐填充 对象的访问定位句柄法 三、垃圾收集器和内存…...

深入理解FFmpeg--软/硬件解码流程

FFmpeg是一款强大的多媒体处理工具&#xff0c;支持软件和硬件解码。软件解码利用CPU执行解码过程&#xff0c;适用于各种平台&#xff0c;但可能对性能要求较高。硬件解码则利用GPU或其他专用硬件加速解码&#xff0c;能显著降低CPU负载&#xff0c;提升解码效率和能效。FFmpe…...

新的铸造厂通过 PROFIBUS 技术实现完全自动化

钢铁生产商某钢以其在厚钢板类别中极高的产品质量而闻名。其原材料&#xff08;板坯连铸机&#xff09;在钢铁厂本地生产&#xff0c;该厂最近新建了一座垂直连铸厂。该项目的一个主要目标是从一开始就完全自动化这座新工厂和整个铸造过程&#xff0c;以高成本效率实现最佳产品…...

【UE5.1】NPC人工智能——04 NPC巡逻

效果 步骤 一、准备行为树和黑板 1. 对我们之前创建的AI控制器创建一个子蓝图类 这里命名为“BP_NPC_AIController_Lion”&#xff0c;表示专门用于控制狮子的AI控制器 2. 打开狮子蓝图“Character_Lion” 在类默认值中将“AI控制器类”修改为“BP_NPC_AIController_Lion” 3…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...