2023 版 QQ 机器人运行部署文档

news2024/7/7 16:25:38

文章目录

  • 1.前置说明
  • 2.机器人框架的下载与运行
    • 2.1 下载机器人框架
    • 2.2 下载可操作框架的静态页面
    • 2.3 运行机器人框架
  • 3.登录QQ机器人
    • 3.1 前提说明
    • 3.2 扫码登录
    • 3.3 注意事项
  • 4.后端程序处理消息
    • 4.1 下载 stater
    • 4.2 stater 基本说明
    • 4.3 运行后端程序
    • 4.4 测试消息处理
    • 4.5 关于扩展消息处理
  • 5.Linux 服务器持续运行 QQ 机器人
    • 5.1 安装 docker
      • 🍀 基于centos的安装
      • 🍀 基于ubuntu
    • 5.2 配置阿里云加速器
      • 🍀 找到相应页面
      • 🍀 创建 docker 目录
      • 🍀 创建 daemon.json 文件
      • 🍀 重新加载服务配置文件
      • 🍀 重启 docker 引擎
    • 5.3 将手机与服务器处于同一网络:socks5
      • 🍀 什么是 SOCKS5
      • 🍀 设置数据卷
      • 🍀 运行容器
      • 🍀 创建用户
      • 🍀 验证
      • 🍀 下载连接工具
      • 🍀 手机与服务器建立连接
    • 5.4 将所有启动文件放到 Linux
      • 🍀 下载并上传 Linux 版的 pbbot-rq.exe
      • 🍀 上传静态页面
      • 🍀 打包并上传后端程序
      • 🍀 Linux 安装 JDK 环境
      • 🍀 登录 QQ 机器人
        • 📌 前提说明
        • 📌 启动 pbbot-rq
        • 📌 扫码登录
      • 🍀 启动后端程序
      • 🍀 测试
      • 🍀 停止运行
        • 📌 停止后端程序运行
        • 📌 停止 pbbot-rq 框架运行
  • 6.总结

1.前置说明

  1. 该部署文档会按照先在 Windows 上部署运行再在 Linux 服务器上部署运行的步骤讲解,每一步操作都会比较详细,提供保姆级教程,因此可以放心食用。

  2. 你在 Windows 上部署运行需要有的环境:

    • JDK8 及以上版本;
    • 集成开发环境 IDEA;
    • Maven(IDEA 会自带,也可以额外下载)。
  3. 如果你想让你的机器人持续运行,监听消息,你需要购买一个 Linux 服务器,同时将服务器防火墙所有端口开放。

    image-20230925173308258

  4. 当然,你还需要准备一个 QQ 号作为我们的机器人,等级不要太低,群聊容易被封,私聊应该没什么问题。

  5. 我们等会需要从 Github 上下载一些东西,如果你受到了网速的影响无法下载,可以从我的网盘中直接获取:https://pan.baidu.com/s/17s2usSxazCoV0FtqOGajTQ?pwd=1314

    需要下载的东西包括了:

    • pbbot-rq-v0.1.14-win-x86_64.exe
    • static.zip
    • Spring-Mirai-Server-master.zip
    • socksdroid-1.0.3.apk
    • pbbot-rq-v0.1.14-linux-x86_64

2.机器人框架的下载与运行

这里我们选用基于 ricq-高性能 QQ 协议 的机器人框架 pbbot-rq。

2.1 下载机器人框架

框架版本地址:https://github.com/ProtobufBot/pbrq/releases

由于先在 Windows 上进行演示,这里我们选择下载当前最新 0.0.14 windows 版本。

image-20230925003542343

在硬盘任意位置创建一个文件夹,这里取名为 pbrq,将下载好的 pbbot-rq-v0.1.14-win-x86_64.exe 放到 pbrq 文件夹下。

image-20230925004446658

为了 方便/简化 后续命令的执行,我们在这里将 pbbot-rq-v0.1.14-win-x86_64.exe 重命名为 pbbot-rq.exe

image-20230925005504322

2.2 下载可操作框架的静态页面

静态页面版本地址:https://github.com/lz1998/ricq-react-ui/releases

这里我们下载当前最新的 v0.1.7 版本。

image-20230925004745100

将下载好的 static.zip 解压后也放到 pbrq 文件夹下。

image-20230925005537344

2.3 运行机器人框架

在 pbrq 文件夹下打开 cmd 窗口:

image-20230925005154715

执行命令:

pbbot-rq --bind-addr 0.0.0.0:9000 --static-dir static

image-20230925005642630

3.登录QQ机器人

⚠️ 如果你下定决心尝试实现 QQ 机器人,请不要半途而废,最好找到比较充裕的时间把该文档的过程一次性走完。因为如果频繁的下线又登录QQ机器人存在账号被封的风险。当然这是我遇到的情况,虽然解封非常简单,只需要扫脸认证一下是本人即可。但还是最好不要这么做。

3.1 前提说明

为了保证 QQ 登录的可靠性,我们需要先对作为机器人登录的 QQ 做以下处理:

  • 在手机上登录 QQ,找到 设置 -> 账号安全 -> 登录设备管理,把除了当前本机之外的其他设备管理全删除,效果如图:

    image-20230925010705311

  • 将你的手机与使用的电脑处于同一网络中,有两种可选方式:

    1. 手机关闭 wifi,使用流量,同时开启手机热点,让电脑连上手机热点;
    2. 手机和电脑使用同一 wifi 信号,例如 校园网。

    ⚠️ 记得如果在手机和电脑上启动了代理设备(翻墙软件),记得关闭下。

3.2 扫码登录

🏠 访问本地网页:http://localhost:9000

image-20230925011345485

点击“创建账号”,切换到“QRCode”扫码登录方式,将 QQ 号 作为“Seed”,将 Watch 作为“Protocol”。

image-20230925011639561

配置信息完毕,点击“Login”,就会弹出一个二维码,直接使用手机进行扫码。

image-20230925011922670

扫码后,手机上会弹出“登录确认”提醒:

image-20230925012149459

点击“登录”,再次查看网页界面,切换到“正在运行”界面,就可以看到我们正在运行的 QQ 了:

image-20230925012339994

运行成功后,建议不要频繁关闭又运行 pbbot-cq 机器人框架程序,因为一旦关闭了 cmd 就意味着 QQ 下线了,频繁登录可能导致被封。

这时候查看我们的 cmd 控制台,发现一直在发出警告:

image-20230925012500617

这是正常的,因为该 pbbot-rq 框架一直在尝试与本机的 8081 端口建立连接。也就是我们可以编写后端程序来处理这些消息了,例如存储或者回复消息。

当然,如果你尝试使用其它 QQ 账号向该 QQ 发送消息,pbbot-rq 是可以收到消息的,会在 cmd 控制台上显示出来:

image-20230925013259222

3.3 注意事项

如果遇到如下图所示登陆失败的情况:当前设备网络不稳定或处于夏杂网络环境,为了你的帐号安全,建议将两个设备连接同一网络或将被扫描设备连接你的手机热点后,重新扫码登录。

1680886697151

那么你在电脑上登录校验时,注意以下几点:

  • 设备种子统一使用 QQ 号;
  • 电脑要连接你手机的热点或使用同一 wifi,且保证代理软件已关闭;
  • QQ中 设置 --> 账号安全 --> 登录设备管理 --> 删除所有除了你登录在当前手机的设备,相当于只留下了一个当前登录 QQ 的本地手机设备。

4.后端程序处理消息

我们使用一个后端程序来与 pbbot-rq 建立连接,可以接收到消息并做出处理后交给 pbbot-rq 进一步处理。

关于这个后端程序,pbbot-rq 的作者已经为我们提供了一个快速开发的 spring boot stateer,我们只需要在此基础上进一步修改代码做自定义处理即可。

4.1 下载 stater

🏠 仓库地址:https://github.com/ProtobufBot/Spring-Mirai-Server

image-20230925014359820

4.2 stater 基本说明

下载完成后解压缩,使用 IDEA 打开该项目。

image-20230925014633510

Plugin 包下有四个插件类,是对消息进行处理的插件,允许执行的插件以及插件的执行顺序在 application.yml 中进行配置:

spring:
  bot:
    plugin-list: # 配置插件列表(有序),如果插件返回0,继续执行剩余插件,如果插件返回1,终止剩余插件执行
      - net.lz1998.pbbot.plugin.LogPlugin # 日志插件
      - net.lz1998.pbbot.plugin.DemoPlugin # 测试插件
      - net.lz1998.pbbot.plugin.ImagePlugin # 动态生成图片插件
      - net.lz1998.pbbot.plugin.HelloPlugin # 测试插件

server:
  port: 8081 # 不要去动这个端口,因为 pbbot-rq 在尝试向本机的 8081 端口建立连接。

4.3 运行后端程序

为了方便测试与便于理解,我们先将 ImagePluginHelloPlugin 的配置注释掉:

spring:
  bot:
    plugin-list: # 配置插件列表(有序),如果插件返回0,继续执行剩余插件,如果插件返回1,终止剩余插件执行
      - net.lz1998.pbbot.plugin.LogPlugin # 日志插件
      - net.lz1998.pbbot.plugin.DemoPlugin # 测试插件
#      - net.lz1998.pbbot.plugin.ImagePlugin # 动态生成图片插件
#      - net.lz1998.pbbot.plugin.HelloPlugin # 测试插件

server:
  port: 8081

再将 DemoPlugin 修改为以下内容:

@Component
public class DemoPlugin extends BotPlugin {

    /**
     * 对私聊消息进行处理,这里我们实现一个QQ机器人复读机效果
     */
    @Override
    public int onPrivateMessage(@NotNull Bot bot, @NotNull OnebotEvent.PrivateMessageEvent event) {
        // 拿到发送给 QQ 机器人消息的发送者的 QQ 号
        long userId = event.getUserId();
        // 拿到发送者的发送消息内容
        String eventRawMessage = event.getRawMessage();
        // 构建准备回复的消息,将发送者消息作为 QQ 机器人的回复
        Msg msg = Msg.builder().text(eventRawMessage);
        // 发送消息
        bot.sendPrivateMsg(userId, msg, false);
        // 表示不继续执行下一个插件
        return MESSAGE_BLOCK;
    }
}

MyAspect 类的 @Component 注解注释掉:

image-20230925020904394

找到 SpringMiraiServerApplication 启动类,启动项目。

image-20230925020002159

可以看到新的连接已经建立了,其实是与 pbbot-rq 建立了连接。我们再观察 cmd 控制台,发现也不报警告了:

image-20230925020132189

4.4 测试消息处理

我们在上一步修改了 DemoPlugin 的代码,对发送给 QQ 机器人私有消息进行了处理,即会回复重复的消息,我们就此进行测试。

拿其它 QQ 账号向 QQ 机器人发送消息,发现 QQ 机器人进行了回复:

image-20230925020557421

查看 cmd 控制台:

image-20230925020631368

查看后端应用程序控制台:

image-20230925021023061

4.5 关于扩展消息处理

你可以自定义插件类去对消息做更多处理,作者提供的四个插件类已经做了一些示例来处理来自“私聊”和“群聊”的消息。

当然,了解更多的功能,你可以参考作者的博客:lz1998’s blog

⚠️ 在对群聊消息进行处理回复时,你需要注意 QQ 机器人的等级不要太低。我目前的 QQ 机器人等级是 3 个月亮,在十几个人的群聊里进行 QQ 机器人的消息回复没有任何问题,但当加入了一百多个人的大群进行消息回复一段时间后,就会被腾讯禁用无法发送消息到群聊(隔 24 个小时后又恢复了,如此往复几天后不再会被禁用),但私聊还是被允许的。

5.Linux 服务器持续运行 QQ 机器人

上述已经演示了如何在 Windows 上运行,为了让 QQ 机器人持续运行提供服务,我们需要把 QQ 机器人放到 Linux 服务器上。

5.1 安装 docker

🍀 基于centos的安装

  1. 安装yum-utils

    sudo yum install -y yum-utils
    
  2. 从国内服务器上下载docker

    sudo yum-config-manager \
        --add-repo \
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 安装docker

    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. 验证是否成功

    sudo docker --version
    

🍀 基于ubuntu

  1. 安装需要的包

    sudo apt-get update
    
  2. 安装依赖包

    sudo apt-get install \
       apt-transport-https \
       ca-certificates \
       curl \
       gnupg-agent \
       software-properties-common
    
  3. 添加 阿里 GPG 密钥

    sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
  4. 设置远程仓库

    sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    
  5. 安装 Docker-CE

    sudo apt-get update
    
    # 会让你输入 y/n,选择输入 y
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  6. 验证是否成功

    sudo docker --version
    

    image-20230925143542814

5.2 配置阿里云加速器

国内镜像中心常用的为阿里云与网易云,选择其中一个加速器进行配置即可。在本地 Docker 中指定要使用的国内加速器地址后,就可以直接从国内镜像中心下载镜像了。这里我们配置阿里云加速器。

🍀 找到相应页面

若要配置阿里云加速器,必须首先要有阿里云的账号。

登录阿里云后,打开阿里云的容器镜像服务 (aliyun.com)。

然后找到如下页面,可以查看到你的 registry-mirrors

image-20230925143122500

🍀 创建 docker 目录

sudo mkdir -p /etc/docker

🍀 创建 daemon.json 文件

注意,该 json 数据中的 URL 地址是与阿里云用户登录账号绑定的,不同的阿里云用户所生成的地址是不同的。

sudo vim /etc/docker/daemon.json

将以下内容放入 daemon.json 中,registry-mirrors 的值需要查看你的阿里云用户的加速器地址。

{
  "registry-mirrors": ["https://*******.mirror.aliyuncs.com"]
}

🍀 重新加载服务配置文件

sudo systemctl daemon-reload

🍀 重启 docker 引擎

sudo systemctl restart docker

5.3 将手机与服务器处于同一网络:socks5

在 Windows 上登录 QQ 机器人时,我们说明了需要让手机和电脑处于同一网络,这里我们需要同样进行处理,让手机和 Linux 服务器也处于同一网络。

🍀 什么是 SOCKS5

SOCKS5 是一个代理协议,它在使用 TCP/IP 协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问 Internet 网中的服务器,或者使通讯更加安全。

socks5 类似于梯子,可以通过 socks5 协议,将自己的设备“伪装”成对应的服务器(socks5 属于明文代理,不能用来做一些特殊的事),可以使用 socks5 来做跳板机等常用的运维工具。

🍀 设置数据卷

# 创建目录
sudo mkdir -p /app/socks5-docker

# 编辑配置信息
sudo vim /app/socks5-docker/sockd.passwd

将以下内容写入到 sockd.passwd 中:

sockd:xJY9EJy0Bk//U

🍀 运行容器

sudo docker run \
--name sockd \
--publish 2020:2020 \
--volume /app/socks5-docker/sockd.passwd:/home/danted/conf/sockd.passwd \
-d lozyme/sockd

🍀 创建用户

这里我将用户的用户名设置为 testu,密码设置为 testp

sudo docker exec sockd script/pam add testu testp

🍀 验证

sudo curl https://ifconfig.co --socks5 127.0.0.1:2020 --proxy-user testu:testp
#此处显示为你的服务器 ip,则为成功

🍀 下载连接工具

这个工具是在手机上进行安装使用的。

🏠 下载地址:Releases · bndeff/socksdroid (github.com)

image-20230407211553664

下载完成后,将安装包发送给手机,然后手机上安装。

🍀 手机与服务器建立连接

进行如下配置:

  • Server IP:你的服务器的 IP 地址;
  • Server Port:2020;
  • Username:用户名,使用我们之前配置的 testu;
  • Password:密码,使用我们之前配置的 testp。

image-20230407211836481

设置完成后,点击右上角的“开关”,即可开启代理。

image-20230925160705464

5.4 将所有启动文件放到 Linux

🍀 下载并上传 Linux 版的 pbbot-rq.exe

🏠 Releases · ProtobufBot/pbrq (github.com)

image-20230925153010584

在 Linux 服务器上新建 qqrobot 文件夹,添加权限,并进入到该目录下:

# 在根目录下创建 qqrobot 文件夹
sudo rmdir /qqrobot

# 添加权限,方便文件上传
sudo chmod 777 /qqrobot

# 进入 qqrobot 文件夹
cd qqrobot

将从 Github 下载好的 pbbot-rq-v0.1.14-linux-x86_64 上传到 qqrobott 文件夹下:

image-20230925161256386

# 将 pbbot-rq-v0.1.14-linux-x86_64 重命名为 pbbot-rq
sudo mv pbbot-rq-v0.1.14-linux-x86_64 pbbot-rq

# 添加权限
sudo chmod 777 pbbot-rq

🍀 上传静态页面

我们只需要将之前下载的 static.zip 重新解压一份上传到 Linux 服务器的 qqrobot 文件夹下即可。

image-20230925163231014

🍀 打包并上传后端程序

使用 IDEA 打开我们在本文第四节使用的 Spring-Mirai-Serve,该项目我们已经实现了私聊时的复读机功能。

现在我们把这个项目打包成 jar,放到 Linux 服务器上去运行。

image-20230925161938280

打包后在 target 文件夹下就可以看到了:

image-20230925162030349

我们将 spring-mirai-server-0.0.1-SNAPSHOT.jar 同样上传到 Linux 服务器的 qqrobot 文件夹下:

image-20230925163320932

🍀 Linux 安装 JDK 环境

  • centos

    sudo yum install java-1.8.0-openjdk
    
  • ubuntu

    # 会让你输入 y/n,选择输入 y
    sudo apt install openjdk-8-jre-headless
    

🍀 登录 QQ 机器人

📌 前提说明

这里与之前在 Windows 上登录 QQ 机器人同样的要求:

  • 保证登录设备只存在手机本机一个;
  • 服务器和手机处于同一网络,这个问题我们已经使用 socks 解决了,登录成功后就可以关闭 socks 了。
📌 启动 pbbot-rq
# 在 qqrobot 文件夹下执行该命令,采用的后台运行模式
sudo nohup ./pbbot-rq --bind-addr 0.0.0.0:9000 --static-dir static >pbrq.log 2>&1 &

🏠 在自己电脑上访问:http://【服务器IP】:9000

image-20230925163825481

📌 扫码登录

image-20230925163944747

点击“Login”,就会显示登录二维码。

image-20230925164027600

使用手机扫码后,就能登录成功了。

image-20230925164139909

登陆成功后,就可以关闭 socks 了,在 Linux 上的操作:

# 关闭 socks
sudo docker stop sockd

# 启动 socks
sudo docker start sockd

🍀 启动后端程序

# 在 qqrobot 文件夹下执行该命令,采用的后台运行模式
sudo nohup java -jar spring-mirai-server-0.0.1-SNAPSHOT.jar >qqrobot.log 2>&1 &

🍀 测试

使用其它账号尝试向 QQ 机器人发送消息:

image-20230925164424339

🍀 停止运行

📌 停止后端程序运行

如果你是想让 QQ 机器人停止对消息的处理而不是退出登录,则只需要停止后端程序的运行。当然也推荐这么做,避免重复登录。

# 查看后端程序运行的 pid
sudo ps -ef | grep java

image-20230925165158023

# 格式:sudo kill <pid>
sudo kill 22016
📌 停止 pbbot-rq 框架运行

这意味着 QQ 机器人下线。

# 查看框架运行的 pid
sudo ps -ef | grep pbbot-rq

image-20230925165517716

# 格式:sudo kill <pid>
sudo kill 21915

6.总结

以上就是全部说明,每一步都是我的实际操作。

最后,如果你在运行 QQ 机器人一段时间后遇到了如下问题被迫下线:

image-20230925171156245

你只需要点击“去处理”,认证是本人登录即可,非常简单。初次使用 QQ 机器人时可能会遇到这个问题,运行久了就不会出现了。

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

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

相关文章

ISE_ChipScope Pro的使用

1.ChipScope Pro Core Inserter 使用流程 在之前以及编译好的流水灯实验上进行学习 ChipScope的使用。 一、新建一个ChipScope 核 点击Next,然后在下一个框中选择 Finish&#xff0c;你就会在项目菜单中看到有XX.cdc核文件。 二、对核文件进行设置 右键“Synthesize – XST” …

计算机丢失ac1st16.dll怎么解决?教你简单的修复ac1st16.dl文件

在使用Windows操作系统时&#xff0c;有时会遇到一些DLL文件丢失的问题&#xff0c;其中之一就是AC1ST16.DLL。AC1ST16.DLL是用于AutoCAD相关软件的动态链接库文件&#xff0c;当该文件丢失时&#xff0c;可能会导致软件无法正常运行。本文将详细介绍多种解决AC1ST16.DLL丢失问…

OpenGL超级宝典(第五版)第8章fbo_drawbuffers例子分析

目录 1. 概述 2. 疑难点剖析 2.1 SetupRC函数分析 2.2 multibuffer.vs分析 2.3 RenderScene分析 3. 其它 1. 概述 《OpenGL超级宝典(第五版&#xff09;》如下&#xff1a; 该书第8版的 fbo_drawbuffers工程展示了如下技术点&#xff1a; 什么是帧缓冲区对象&#xff08…

【Linux】进程间通信方式②——文件共享映射(附图解与代码实现)

我们来简单了解下文件共享映射的定义&#xff1a;通过映射文件&#xff0c;使用映射机制&#xff0c;实现资源共享&#xff0c;完成进程通信 具体是如何实现的呢&#xff1f;跟随着这篇博客&#xff0c;我们来看一看 进程通过文件共享映射实现通信的具体步骤 由某一进程创建映…

【湖科大教书匠】计算机网络随堂笔记第2章(计算机网络物理层)

目录 2.1、物理层的基本概念 2.2、物理层下面的传输媒体 导引型传输媒体 同轴电缆 双绞线 光纤 电力线 非导引型传输媒体 无线电波 微波 红外线 可见光 2.3、传输方式 串行传输和并行传输 同步传输和异步传输 单向通信&#xff08;单工&#xff09;、双向交替通信&#xf…

【LeetCode-简单题】110. 平衡二叉树

文章目录 题目方法一&#xff1a;后序递归 题目 方法一&#xff1a;后序递归 递归遍历的同时判断是否是平衡二叉树&#xff0c;如果不是&#xff0c;就置为-1&#xff0c;如果是 就正常做递归求最大深度 参考图解网址 判断平衡二叉树 class Solution {public boolean isBalanc…

誉天在线项目-放大招-Vue3集成RichText富文本客户端组件QuillEditor

背景 开发中我们需要填写图文内容&#xff0c;就是含有图片和文字&#xff0c;html标准组件中是没有的。都是第三方来实现&#xff0c;就需要我们去集成。 有早期的fckEditor、ckEditor等&#xff0c;新的我们使用了vue框架&#xff0c;市场又推出了quillEditor。下面我们就在…

【【萌新的SOC学习之绪论】】

萌新的SOC学习之绪论 Vitis 统一软件平台的前身为 Xilinx SDK&#xff0c;从 Vivado 2019.2 版本开始&#xff0c;Xilinx SDK 开发环境已统一整合 到全功能一体化的 Vitis 中。Vitis 开发平台除了启动方式、软件界面、使用方法与 SDK 开发平台略有区别&#xff0c; 其他操作几…

使用acme.sh申请免费ssl证书(Cloudflare方式API自动验证增加DNS Record到期证书到期自动重新申请)

下载acme.sh curl https://get.acme.sh | sh -s emailmyexample.comcd ~/.acme.sh/获取Cloudflare密钥 Preferences | Cloudflare 登录选择账户详情选择API Token选择创建令牌选择区域DNS模板&#xff0c;并设置编辑写入权限生成并复制令牌备用回到首页概览界面下部获取账号…

【RabbitMQ实战】3分钟在Linux上安装RabbitMQ

本节采用docker安装RabbitMQ。采用的是bitnami的镜像。Bitnami是一个提供各种流行应用的Docker镜像和软件包的公司。采用docker的方式3分钟就可以把我们想安装的程序运行起来&#xff0c;不得不说真的很方便啊&#xff0c;好了&#xff0c;开搞。使用前提&#xff1a;Linux虚拟…

3D设计软件Rhinoceros 6 mac 犀牛6中文版功能特征

Rhinoceros Mac中文版是一款3D设计软件“犀牛”&#xff0c;在众多三维建模软件中&#xff0c;Rhinoceros mac因为其体积小、功能强大、对硬件要求低而广受欢迎&#xff0c;对于专业的3D设计人员来说它是一款非常不错的3D建模软件&#xff0c;Rhinoceros Mac中文版能轻易整合3D…

苹果手机短信删除了怎么恢复?3种有效方法介绍

手机短信是一种即时通信方式&#xff0c;人们可以使用短信来达到快速传递信息的目的。在没有网络或者网络不稳定的时候&#xff0c;短信仍然可以做到发送和接收&#xff0c;这弥补了其他网络通信软件的缺点。 所以说&#xff0c;手机短信仍然是我们生活中不可缺少的一部分。当…

【rtp】mid 扩展: RtpMid 字符串扩展的解析和写入

mid 是uint8_t 类型? 扩展填写的是字符串,读取字符串后atoi 转 uint8_t : webrtc 看起来是个字符串:写入 扩展的值是改变了: 这里是更新扩展的长度: 新的大小小于原来的,没有缩减内存,而是对于多余的置位0了:if (len < current_len) {memset(

基于SSM的高校图书馆个性化服务的设计与实现(有报告)。Javaee项目。

演示视频&#xff1a; 基于SSM的高校图书馆个性化服务的设计与实现&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过S…

如何在低代码平台中应用可视化编程

可视化编程&#xff0c;亦即可视化程序设计&#xff1a;以“所见即所得”的编程思想为原则&#xff0c;力图实现编程工作的可视化&#xff0c;即随时可以看到结果&#xff0c;程序与结果的调整同步。可视化编程的理念来源于可视化技术&#xff0c;它指的是一种把计算机程序中的…

深度学习在视频直播美颜sdk中的应用

视频直播美颜SDK是一类用于实时视频美颜处理的工具包&#xff0c;它们利用深度学习算法来提高视频直播中的主播和观众的外观吸引力。本文将深入探讨深度学习在视频直播美颜sdk中的应用&#xff0c;以及这些应用对直播行业的重要性。 一、人脸检测与关键点定位 通过卷积神经网…

Centos7安装go解释器

Centos7安装go解释器 下载解压go压缩包编辑go变量结果验证 下载解压go压缩包 # 下载 wget -c https://go.dev/dl/go1.20.2.linux-amd64.tar.gz# 解压到指定目录 tar xvf go1.20.2.linux-amd64.tar.gz -C /usr/local/编辑go变量 /etc/profile.d/go.sh # 指定go执行程序位置 e…

多线程进阶:常见的锁策略、CAS

之前我们所了解的属于多线程的初阶内容。今天开始&#xff0c;我们进入多线程进阶的学习。 锁的策略 乐观锁 悲观锁 这不是两把具体的锁&#xff0c;应该叫做“两类锁” 乐观锁&#xff1a;预测锁竞争不是很激烈&#xff08;这里做的工作可能就会少一些&#xff09; 悲观锁…

【操作系统笔记六】内存分配

内存对齐 问题&#xff1a;为什么需要内存对齐呢&#xff1f; 主要原因是为了兼容&#xff0c;为了让程序可以运行在不同的处理器中&#xff0c;有很多处理器在访问内存的时候&#xff0c;只能从特定的内存地址读取数据。换个说法就是处理器每次只能从内存取出特定个数字节的数…

WKB近似

WKB方法用于研究一种特定类型的微分方程的全局性质 很有用这种特定的微分方程形如&#xff1a; 经过一些不是特别复杂的推导&#xff0c;我们可以得到他的WKB近似解。 该近似解的选择取决于函数和参数的性质同时&#xff0c;我们默认函数的定义域为当恒大于零,时&#xff1a; 当…