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

orangepi 5 plus ubuntu24.04上安装redroid

orangepi 5 plus 刷了2404的版本,内核也更新了。

GitHub - Joshua-Riek/ubuntu-rockchip: Ubuntu for Rockchip RK35XX Deviceshttps://github.com/Joshua-Riek/ubuntu-rockchip在这个上面安装redroid 时

redroid-modules/README.md at master · remote-android/redroid-modules · GitHubhttps://github.com/remote-android/redroid-modules/blob/master/README.md下面命令就不好用了,因为内核变了

# Ubuntu 20.04+ (kernel 5.0+)
sudo modprobe ashmem_linux
sudo modprobe binder_linux devices=binder,hwbinder,vndbinder

明白 ✅。你是在 RK3588 + Ubuntu 24.04 上想跑 reDroid (一个 Android in Docker 的实现)。

我帮你梳理一套专门针对 RK3588 / Ubuntu 24.04 的安装流程,顺便解释跟 ashmem/binder 的关系。


1. reDroid 的运行条件

reDroid 本质是一个 Android GSI 内核补丁 + 容器运行环境,依赖以下几点:

  • 内核必须支持 Android binder(binderfs/binder_linux)

  • ashmem 以前需要,但新版本可用 memfd 替代(你遇到 ashmem_linux not found 就是因为内核没带 ashmem,Ubuntu 24.04 默认也不用它了)

  • Docker 或 Podman 作为容器运行环境

  • GPU 驱动/硬件加速:RK3588 上要结合 Mali GPU 驱动 + drm/kms 才能硬解码显示


2. 检查内核支持

 容器场景通常只需要 binder(binderfs),ashmem 可由 memfd 兼容层替代。先检查 binder:

# 看配置(存在其一就行)
zcat /proc/config.gz 2>/dev/null | grep -E 'BINDER|BINDERFS' || \
grep -E 'BINDER|BINDERFS' /boot/config-$(uname -r)# 看能否加载 binder 模块
sudo modprobe binder_linux 2>/dev/null || true# 尝试挂载 binderfs
sudo mkdir -p /dev/binderfs
sudo mount -t binder none /dev/binderfs 2>/dev/null || sudo mount -t binder binder /dev/binderfs# 验证
ls -l /dev/binderfs

运行下面的脚本,确认 binder 是否启用:

zcat /proc/config.gz | grep BINDER || grep BINDER /boot/config-$(uname -r)ls /dev | grep binder
ls /dev/binderfs
  • 如果能看到 binder/binderfs → OK

  • ashmem 不出现没关系,reDroid >= 11 可以直接用 memfd,不会影响


3. 安装依赖

sudo apt update
sudo apt install -y docker.io uidmap curl unzip
sudo systemctl enable docker
sudo systemctl start docker

检查 Docker:

docker run hello-world

4. 拉取 reDroid 镜像

reDroid 官方提供 Android 各版本镜像(arm64 也支持):

# Android 13 示例
docker pull redroid/redroid:13.0.0-arm64

常见版本:12.0.0-arm64, 13.0.0-arm64, 14.0.0-arm64


5. 启动 reDroid 容器

运行命令示例:

sudo docker run -d --name redroid-gpu-rk \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/gpu-acc/android12-redroid-data:/data \--device /dev/dri:/dev/dri \--device /dev/mali0:/dev/mali0 \-p 55559:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_gpu_mode=guest \androidboot.redroid_memfd=true \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480

参数说明:

  • --privileged → 容器需要访问 binderfs

  • -v /dev/binderfs:/dev/binderfs → 挂载主机的 binderfs

  • androidboot.redroid_gpu_mode=guest → 使用 RK3588 的 GPU(host 需要 Mali 驱动)guest相当于没有用,另外使用guest时,连adb连不上,还在排查原因 

  • androidboot.redroid_memfd=true → 告诉 reDroid 用 memfd 替代 ashmem


6. 连接并使用

启动后,你可以通过 ADB 连接:

adb connect localhost:5555
adb shell

你应该能进入 Android 容器的 shell。


7. 显示/图形输出

在 SBC(RK3588)上,reDroid 默认是 headless(无界面)。常见做法有两种:

  • 用 scrcpy 或 VNC:在 reDroid 内跑 VNC server,然后用客户端连接

  • 直通 GPU:RK3588 内核+Docker 驱动允许时,可以跑 androidboot.redroid_gpu_mode=host,这样性能更好(但依赖 Mali GPU 驱动是否正确安装)


8. 总结

  • 不需要 ashmem → reDroid 用 memfd 替代

  • 只要保证 binderfs 可用 就能跑

  • GPU 加速在 RK3588 上可能要额外配置(比如装 Rockchip Mali 驱动、修改 Docker 参数) reDroid)?这样你只要运行脚本,就能直接起来一个 Android 容器。

 安装Docker + reDroid

以下是基于ubuntu2404的

sudo apt install -y docker.io uidmap curl unzip
sudo systemctl enable docker
sudo systemctl start docker

nano /etc/docker/daemon.json

{"registry-mirrors": ["https://docker.1ms.run"]
}

另外要加上代理才可以下载镜像

 终端命令行临时代理(仅当前终端有效):
export http_proxy=http://10.10.10.215:7897
export https_proxy=http://10.10.10.215:7897

终端永久代理设置(适用于所有终端)
打开终端,编辑~/.bashrc文件:nano ~/.bashrc
在文件底部加入:

export http_proxy="http://10.10.10.215:7897"
export https_proxy="http://10.10.10.215:7897"
运行下载

sudo mkdir -p /opt/android12-redroid-datasudo docker run -itd --rm --privileged \--pull always \-v /opt/android12-redroid-data:/data \-p 55556:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 \androidboot.redroid_height=1920 \androidboot.redroid_dpi=480 \

上面这个命令-v /opt/android12-redroid-data:/data 相当于把/opt/android12-redroid-data 映射给 android /data文件夹,在/opt/android12-redroid-data中就可以看到各种Android的文件

apt install adbsnap install scrcpy

这时本机上

adb connect localhost:55556scrcpy -s localhost:55556 

就可以远程控制了,

外网时

adb connect 10.10.10.211:55556 scrcpy -s 10.10.10.211:55556 

还有其它rom下载参考 redroid:15.0.0-latest 这个版本有问题,我试了12-13-14都可以,但是gpu加速还没有调试通过

redroid/redroid - Docker Image | Docker Hubhttps://hub.docker.com/r/redroid/redroid

目前还不支持gpu加速,要加速参考下面的香橙派5plus上跑云手机方案一 redroid(带硬件加速)https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

sudo docker run -itd --rm --privileged \ --pull always \ -v ~/data:/data \ -p 5555:5555 \ redroid/redroid:12.0.0_64only-latest
上面这个命令-v ~/data:/data 相当于把/root/data/ 映射给 android /data文件夹,在/root/data/中就可以看到各种文件

参考

Redroid running on ROCK 5B | Radxa | Open Innovation · Edge EmpoweredWhat is Redroid ?https://radxa.com/blog/Redroid-running-on-ROCK-5B/?utm_source=chatgpt.com

容器虚拟安卓 — Firefly WikiiCore-3588Q采用Rockchip RK3588新一代旗舰级八核64位处理器,最大可配32GB大内存;支持8K视频编解码;采用了BTB接口,传输能力更强;拥有丰富的接口,支持多硬盘、千兆网、WiFi6、5G/4G扩展和多种视频输入输出;支持多种操作系统;可适用于ARM PC、边缘计算、云服务器、智能NVR等领域https://wiki.t-firefly.com/zh_CN/iCore-3588Q/usage_aic.html

写一个做大做强的脚本,同时安装5 个android12 ,貌似可以同时在线运行

# 用户1
sudo docker run -itd --name redroid-u1 --rm --privileged \-v /dev/binderfs:/dev/binderfs \-v /opt/usr1/android12-redroid-data:/data \-p 55551:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true# 用户2
sudo docker run -itd --name redroid-u2 --rm --privileged \-v /dev/binderfs:/dev/binderfs \-v /opt/usr2/android12-redroid-data:/data \-p 55552:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true# 用户3
sudo docker run -itd --name redroid-u3 --rm --privileged \-v /dev/binderfs:/dev/binderfs \-v /opt/usr3/android12-redroid-data:/data \-p 55553:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true# 用户4
sudo docker run -itd --name redroid-u4 --rm --privileged \-v /dev/binderfs:/dev/binderfs \-v /opt/usr4/android12-redroid-data:/data \-p 55554:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true# 用户5
sudo docker run -itd --name redroid-u5 --rm --privileged \-v /dev/binderfs:/dev/binderfs \-v /opt/usr5/android12-redroid-data:/data \-p 55555:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true

上面的代码,随着重启动docker不会自动启动,下面代码执行后,会随着系统启动docker 

# 如已有旧容器,先删(忽略不存在的报错)
sudo docker rm -f redroid-u1 2>/dev/nullsudo docker run -d --name redroid-u1 \--privileged \--restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr1/android12-redroid-data:/data \-p 55551:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 \androidboot.redroid_height=1920 \androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true

方案(Docker 重启策略),给 u2 ~ u5 做到“开机自启、数据持久化、binderfs 挂载”。下面整套命令一次搞定(可整段复制执行)。

# 1) 确保 binderfs 开机自动挂载(只需执行一次)
sudo mkdir -p /dev/binderfs
grep -qE '^[^#]*\sbinderfs\s' /etc/fstab || \echo 'binder /dev/binderfs binder defaults,nofail 0 0' | sudo tee -a /etc/fstab
sudo mount -a   # 立即生效# 2) 为 u2~u5 准备数据目录
sudo mkdir -p /opt/usr2/android12-redroid-data \/opt/usr3/android12-redroid-data \/opt/usr4/android12-redroid-data \/opt/usr5/android12-redroid-data# 3) 如果之前起过容器,先删掉(忽略不存在的报错)
sudo docker rm -f redroid-u2 redroid-u3 redroid-u4 redroid-u5 2>/dev/null# 4) 以 --restart unless-stopped 方式重建(去掉 --rm,不要 --pull always)
sudo docker run -d --name redroid-u2 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr2/android12-redroid-data:/data \-p 55552:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=truesudo docker run -d --name redroid-u3 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr3/android12-redroid-data:/data \-p 55553:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=truesudo docker run -d --name redroid-u4 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr4/android12-redroid-data:/data \-p 55554:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=truesudo docker run -d --name redroid-u5 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr5/android12-redroid-data:/data \-p 55555:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=truesudo docker run -d --name redroid-u6 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr6/android12-redroid-data:/data \-p 55556:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true# 用户7
sudo docker run -d --name redroid-u7 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr7/android12-redroid-data:/data \-p 55557:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true# 用户8
sudo docker run -d --name redroid-u8 \--privileged --restart unless-stopped \-v /dev/binderfs:/dev/binderfs \-v /opt/usr8/android12-redroid-data:/data \-p 55558:5555 \redroid/redroid:12.0.0_64only-latest \androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true

验证

# 看容器是否在跑
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'# 检查重启策略
docker inspect -f '{{.Name}} => {{.HostConfig.RestartPolicy.Name}}' redroid-u2 redroid-u3 redroid-u4 redroid-u5
# 应显示 unless-stopped

连接(示例)

adb connect 127.0.0.1:55552
adb connect 127.0.0.1:55553
adb connect 127.0.0.1:55554
adb connect 127.0.0.1:55555

小提示

  • 自动启动场景不要--pull always,避免开机网络未就绪导致失败。

  • 端口冲突就把 -p 的左边(宿主机端口)改成空闲的。

  • 如果你之后也想让 u1 改为同样的策略,做法相同:去掉 --rm,加 --restart unless-stopped 重建即可。

另外测试时可以让路数可控,命令如下

# 保存为 setup_redroid_8.sh;执行示例:
#   sudo bash setup_redroid_8.sh
#   COUNT=4 sudo bash setup_redroid_8.sh
#   COUNT=6 START_IDX=3 BASE_PORT=55600 sudo bash setup_redroid_8.sh#!/usr/bin/env bash
set -euo pipefail# ===== 可配置项(环境变量可覆盖) =====
IMAGE="${IMAGE:-redroid/redroid:12.0.0_64only-latest}"
BASE="${BASE:-/opt}"
BINDERFS="${BINDERFS:-/dev/binderfs}"COUNT="${COUNT:-8}"        # 路数(实例个数)
START_IDX="${START_IDX:-1}"# 起始编号(实例名 redroid-u<idx>)
BASE_PORT="${BASE_PORT:-55550}"  # 宿主机端口起始(实际从 BASE_PORT+1 起)# ===== 1) 确保 binderfs 开机自动挂载(只需一次) =====
mkdir -p "$BINDERFS"
if ! grep -qE '(^|[[:space:]])binder[[:space:]]+/dev/binderfs[[:space:]]+binder' /etc/fstab; thenecho 'binder /dev/binderfs binder defaults,nofail 0 0' >> /etc/fstab
fi
mount -a# ===== 2) 预创建数据目录 =====
END_IDX=$((START_IDX + COUNT - 1))
for i in $(seq "$START_IDX" "$END_IDX"); domkdir -p "${BASE}/usr${i}/android12-redroid-data"
done# ===== 3) 如已存在同名容器,先清掉避免重名 =====
for i in $(seq "$START_IDX" "$END_IDX"); dodocker rm -f "redroid-u${i}" 2>/dev/null || true
done# ===== 4) 启动 N 路容器 =====
for i in $(seq "$START_IDX" "$END_IDX"); do# 宿主机端口:从 BASE_PORT+1 递增HOSTPORT=$(( BASE_PORT + (i - START_IDX + 1) ))NAME="redroid-u${i}"DATADIR="${BASE}/usr${i}/android12-redroid-data"echo "[*] Starting ${NAME} on host port ${HOSTPORT} ..."docker run -d --name "${NAME}" \--privileged \--restart unless-stopped \-v "${BINDERFS}:${BINDERFS}" \-v "${DATADIR}:/data" \-p "${HOSTPORT}:5555" \"${IMAGE}" \androidboot.redroid_width=1080 \androidboot.redroid_height=1920 \androidboot.redroid_dpi=480 \androidboot.redroid_memfd=true
doneecho "=== Done. Containers ==="
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'

你要把这些 Docker 镜像导出,其实有两种常用方法:


方法一:单个镜像导出成 .tar 文件

docker save

# 导出 redroid/redroid:15.0.0-latest 到本地 tar 文件
docker save -o redroid_15.0.0-latest.tar redroid/redroid:15.0.0-latest# 再比如导出 cnflysky/redroid-rk3588:12.0.0-latest
docker save -o redroid-rk3588_12.0.0-latest.tar cnflysky/redroid-rk3588:12.0.0-latest

导出的 .tar 文件可以拷贝到别的机器,用下面命令导入:

docker load -i redroid_15.0.0-latest.tar

方法二:批量导出所有镜像

你可以用一条命令循环导出:

for img in $(docker images --format "{{.Repository}}:{{.Tag}}"); dofname=$(echo $img | tr '/:' '_')echo "Saving $img to ${fname}.tar"docker save -o ${fname}.tar $img
done

执行后会在当前目录生成一堆 tar 文件,例如:

  • redroid_redroid_15.0.0-latest.tar

  • cnflysky_redroid-rk3588_12.0.0-latest.tar


方法三:打包整个镜像库(不常用)

如果你想一次性导出全部镜像到一个文件,可以:

docker save $(docker images -q) -o all-images.tar

然后另一台机器:

docker load -i all-images.tar

sudo chmod -R 755 /media/orangepi/opi_root/dockerTar


 进入容器

出问题调试
docker exec -it redroid-gpu-rk shredroid-gpu-rk是容器名
运行logcat 就有日志

👌 可以的,我帮你写一个完整的 shell 脚本,把所有镜像批量导出到你指定的目录 /media/orangepi/opi_root/dockerTar


脚本内容:save_all_images.sh

#!/bin/bash
set -e# 目标目录
DEST="/media/orangepi/opi_root/dockerTar"# 创建目标目录(如果不存在)
mkdir -p "$DEST"# 遍历所有镜像并导出
for img in $(docker images --format "{{.Repository}}:{{.Tag}}"); dofname=$(echo $img | tr '/:' '_')echo "Saving $img to $DEST/${fname}.tar"docker save -o "$DEST/${fname}.tar" "$img"
doneecho "✅ 所有镜像已保存到 $DEST"

使用方法

  1. 保存脚本:

    nano save_all_images.sh
    

    粘贴上面的内容,保存退出。

  2. 赋予可执行权限:

    chmod +x save_all_images.sh
    
  3. 执行脚本:

    ./save_all_images.sh
    
  4. 导出结果:
    所有镜像会以 repository_tag.tar 的形式保存到:

    /media/orangepi/opi_root/dockerTar
    

另外昨天突然不能上网上了,ip也是正常,把防火墙重搞一下好了
 

sudo ufw disablesudo iptables -F

查看npu的占用情况

watch sudo cat /sys/kernel/debug/rknpu/load


 

 参考

香橙派5plus上跑云手机方案一 redroid(带硬件加速)

香橙派5plus从ssd启动Ubuntu

 下面再总结一下如何使和gpu加速

redroid-rk3588/README_zh.md at main · CNflysky/redroid-rk3588 · GitHubhttps://github.com/CNflysky/redroid-rk3588/blob/main/README_zh.md

香橙派5plus上跑云手机方案一 redroid(带硬件加速)https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUwhttps://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw香橙派5plus从ssd启动Ubuntuhttps://mp.weixin.qq.com/s?__biz=MzU0OTkwODU2MA==&mid=2247484526&idx=1&sn=01a6526b10d0f28ebfc6671c5105f1bc&scene=21&poc_token=HEvYtmij6u_6cUcVxO18MKvVUGV5tL7dfgu0T3eOhttps://mp.weixin.qq.com/s?__biz=MzU0OTkwODU2MA==&mid=2247484526&idx=1&sn=01a6526b10d0f28ebfc6671c5105f1bc&scene=21&poc_token=HEvYtmij6u_6cUcVxO18MKvVUGV5tL7dfgu0T3eOUSE Redroid | Radxa DocsHelp you use Redroid cloud mirroringhttps://docs.radxa.com/en/rock5/rock5b/app-development/redroidhttps://docs.radxa.com/en/rock5/rock5b/app-development/redroid

探索香橙派5plus的云手机方案及多系统兼容性https://baijiahao.baidu.com/s?id=1833473653129708462&wfr=spider&for=pchttps://baijiahao.baidu.com/s?id=1833473653129708462&wfr=spider&for=pcGitHub - CNflysky/redroid-rk3588: Redroid images for Rockchip RK3588 series SoChttps://github.com/CNflysky/redroid-rk3588https://github.com/CNflysky/redroid-rk3588


文章转载自:

http://3ILI0vs8.nbsbn.cn
http://GvqyTava.nbsbn.cn
http://mXMtaEL2.nbsbn.cn
http://iYDIvYkd.nbsbn.cn
http://58DsqMxC.nbsbn.cn
http://WkwvZB0N.nbsbn.cn
http://2E9d1TAW.nbsbn.cn
http://v3F3kD53.nbsbn.cn
http://a8u61fwD.nbsbn.cn
http://Ry4lnenz.nbsbn.cn
http://dsgNNfpQ.nbsbn.cn
http://xHpCN4N6.nbsbn.cn
http://4r5tXykw.nbsbn.cn
http://oHPQYdQj.nbsbn.cn
http://WwPLkr08.nbsbn.cn
http://7LHCfZIb.nbsbn.cn
http://iHOZMvC7.nbsbn.cn
http://z8VgwD16.nbsbn.cn
http://xmBSYUqM.nbsbn.cn
http://NU784jee.nbsbn.cn
http://Odr7p0ee.nbsbn.cn
http://6ABIFCVO.nbsbn.cn
http://qh9N54DW.nbsbn.cn
http://CwcAwUIM.nbsbn.cn
http://8B5tmCEC.nbsbn.cn
http://TYDwyKjV.nbsbn.cn
http://howK6cAA.nbsbn.cn
http://bizZVJMy.nbsbn.cn
http://G2Ery2T0.nbsbn.cn
http://8hAgFIFY.nbsbn.cn
http://www.dtcms.com/a/364288.html

相关文章:

  • 如何查询自己的网络的出口IP
  • 写好 Prompt 的 12 条实践经验
  • Scrapy框架实战:大规模爬取华为应用市场应用详情数据
  • 华为HCIE证书多久续一次费?费用多少?
  • nano banana官方最强Prompt模板来了!六大场景模板详解
  • 如何将华为手机数据转移到OPPO手机
  • 《华为基本法》——企业文化的精髓,你学习了几条?
  • 车辆安全供电系统开发原则和实践
  • 利用 Java 爬虫获取淘宝商品详情 API 接口
  • 指针高级(1)
  • Meta-Learning入门:当AI学会“举一反三”——用MAML实现少样本图像分类 (Meta-Learning系列
  • Qt + windows + Linux+QtInstallerFramework打包教程
  • QNX pidin 命令中STATE 含义
  • vue2 + ts 实现透视卡片 + 瀑布上下移动效果
  • 计算机网络---CA证书体系(Certificate Authority)
  • FPGA离群值剔除算法
  • 【C++】在 Windows 系统调用第三方程序(创建进程)
  • 校园外卖点餐系统(代码+数据库+LW)
  • LeetCode 刷题【62. 不同路径】
  • 【Linux】Linux开发必备:Git版本控制与GDB调试全指南
  • ESXI8多网卡链路聚合
  • Nature Machine Intelligence 基于强化学习的磁性微型机器人自主三维位置控制
  • 【正则表达式】 正则表达式运算法优先级的先后是怎么排序的?
  • Elasticsearch(高性能分布式搜索引擎)01
  • 从“看见”到“行动”:一场机器视觉与机器人的软硬件共舞
  • 动态IP和静态IP配置上有什么区别
  • 云手机中的三大核心技术主要是指什么?
  • 都2025年了,还有人用Python 2吗
  • 华为HCIE数通含金量所剩无几?考试难度加大?
  • 【开题答辩全过程】以 垃圾分类和废物管理系统的设计与实现为例,包含答辩的问题和答案