news 2026/10/2 9:09:47

银河麒麟V10源码编译安装Redis并配置systemd管理实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银河麒麟V10源码编译安装Redis并配置systemd管理实战

说实话,在银河麒麟系统上装 Redis 这件事,光看标题会觉得没啥好写的。毕竟 Redis 是纯 C 写的,源码一编译,扔到哪个 Linux 上都能跑。但真正到我上手的时候,问题就变得很现实:不同版本的银河麒麟对应不同的包管理方式,自带的软件源里未必有 Redis,网上搜到的教程不是照搬 CentOS 就是照搬 Ubuntu,执行到一半不是缺依赖就是服务起不来。这篇是我从头到尾亲测的记录,包含源码编译、配置文件调整、systemd 守护、远程连接和排错,照着操作能少折腾几个小时。不管你是要在银河麒麟 V10 服务器版上跑业务缓存,还是想在虚拟机里研究 Redis 主从、可视化管理工具,这篇文章都适用。

1. 先把机器底细摸清:版本、架构和包管理现状

1.1 银河麒麟的系统版本可能骗过你

很多刚接触银河麒麟的同学,第一反应就是“这不就是 CentOS 吗”。其实银河麒麟 V10 有桌面版和服务器版,不同的版本底子可能完全不一样,有的基于 RPM 体系(能用 yum/dnf),有的基于 Debian 体系(能用 apt)。如果你不先确认这一点,后面安装依赖的时候会非常被动。

我上手后的第一件事,不是急着下载 Redis,而是先看系统信息:

cat /etc/os-release uname -m hostnamectl

我这边输出的核心内容大致是这样的:

NAME="Kylin" VERSION="V10" ID="kylin" PRETTY_NAME="Kylin V10"

架构是x86_64。如果你的机器是aarch64(ARM 架构),后面的编译参数不需要特殊处理,Redis 对这两种架构都支持得很好,只是下载源码包时不需要区分,源码编译会自动适配。

1.2 先探一下包管理器里有没有现成的 Redis

确定系统版本后,我习惯先看一眼包管理器的底牌。这一步不是多余的,因为有的银河麒麟源里确实收录了 redis-server,但版本可能比较旧;有的源里干脆就没有。

which yum dnf apt apt-get 2>/dev/null

然后分别试一下:

yum list redis 2>&1 | tail -n 10 apt-cache search redis-server 2>/dev/null

在我这台服务器上,yum list redis返回的是“没有匹配的软件包”,也就是官方源里根本没有 Redis。这种情况下,如果你还继续等 yum 安装,多半是浪费时间。所以接下来的思路就很清晰了:走源码编译这条路,不仅能拿到新版本,还能自己控制安装路径和配置细节。

1.3 评估一下机器配置

Redis 本身算是很轻量的服务,1 核 CPU、1G 内存的机器也能正常跑起来,甚至可以做简单的生产缓存。但如果你要编译源码,建议机器能剩出至少 1G 磁盘空间,编译过程中的临时文件比较多。另外,如果内存特别小,比如 512M,编译时用make -j2就好,不要开太多并行任务,否则内存会被直接吃满。

2. 为什么我一上来就走源码编译:不只是因为没得选

2.1 自带源的版本往往落后几个大版本

就算你的银河麒麟源里能找到 Redis,版本大概率也停留在 3.x 或者 4.x。Redis 3.x 和 4.x 在现在这个时间点已经有点跟不上节奏了,很多实用的特性都用不上。比如:

  • ACL 用户权限体系:Redis 6 才正式引入,可以给不同的业务配置不同的账号权限,避免所有人共用一条requirepass。
  • 多线程 I/O:Redis 6 之后在网络读写层面支持了多线程,对高并发场景提升比较明显。
  • Stream 数据类型:Redis 5 引入,适合做消息队列、事件流存储。
  • RESET 命令、客户端缓存、更好的集群管理工具等。

如果你的业务要用到这些能力,老版本包完全帮不上忙。而从源码编译,我完全可以挑一个稳定的长期支持版本,比如 6.2.5 或者更新的 7.x 系列。

2.2 源码编译在银河麒麟上的实际优点

源码编译听上去麻烦,其实在 Redis 这个项目上一点也不复杂。Redis 对依赖的要求很低,基本就是gcc和make,不像编译某些大型软件还要装一堆devel包。编译完之后,你可以把整个 Redis 安装到自定义目录,不污染系统环境的默认路径。

另外,自己编译还能选择内存分配器。Redis 默认用的是 jemalloc,某些系统环境编译时如果缺少对应头文件,可以用make MALLOC=libc切换到 glibc 自带的内存分配器。这种灵活性是二进制包给不了的。

2.3 把编译环境准备到“刚刚好”的状态

在银河麒麟上装编译工具链,命令要看你前面确认的包管理器类型。如果是 RPM 系:

yum groupinstall "Development Tools" -y

如果是 Debian 系:

apt update apt install build-essential -y

我用的是 RPM 系,所以直接执行了第一行。装完以后用gcc --version和make --version验证一下,只要能看到版本号,就说明编译环境已经 OK 了。

注意:如果机器没有外网,也没配置好本地源,yum groupinstall可能会失败。这种情况建议先用挂载的系统镜像配置一个本地 yum 源,再把Development Tools装上,优先级最高。

3. 从下载 Redis 6.2.5 源码到 make install 的完整过程

3.1 拿到源码包并放到计划目录

我习惯把源码统一放在/usr/local/src目录下,解压、编译都在同一个地方,后面清理也方便。

cd /usr/local/src wget https://download.redis.io/releases/redis-6.2.5.tar.gz

如果你的服务器访问国外站点很卡,或者根本下不动,可以换用国内的镜像源,常见的镜像站都有 Redis 源码包。下载完以后,强烈建议校验一下文件完整性。Redis 官网发布页面会给出对应的 SHA256 值,你可以用:

sha256sum redis-6.2.5.tar.gz

把计算出来的哈希值和官网页面上的值比对。不比对也能用,但生产环境下这是一个非常值得养成的习惯,省得拿到被篡改过的包还不知道。

3.2 解压、编译以及最常见的两个报错

解压命令没什么特别:

tar xzf redis-6.2.5.tar.gz cd redis-6.2.5

编译前,我先说两个很容易踩的坑,因为这两个坑几乎每个照着我这篇教程走的人都会碰到。

第一个坑:gcc: command not found。

原因很简单,编译工具链没装或者不完整。返回去执行第 2.3 节里的groupinstall命令,装完重开一个终端再试。

第二个坑:编译时报错zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory。

这是因为 Redis 默认启用了 jemalloc 内存分配器,但系统里没有对应的头文件。这时候不需要去装什么 jemalloc 开发包,直接强制使用 libc 分配器就行:

make MALLOC=libc -j$(nproc)

-j$(nproc)的意思是开启和 CPU 核数一致的并行编译,速度会快很多。如果你不知道机器是几核,可以用nproc命令查看。

编译成功以后,输出最后会提示你运行make test来跑测试套件。我建议你至少把make test跑一遍,这个过程会验证 Redis 在你这套环境下是否都正常,通常需要几分钟。如果提示缺少tcl,安装一下即可:

yum install tcl -y # 或者 apt install tcl -y

3.3 安装并做一次最小化启动验证

测试通过后,执行安装:

make install

默认会安装到/usr/local/bin目录下,这样redis-server、redis-cli、redis-benchmark这些命令在任意目录下都能直接用。验证一下版本:

redis-server --version

接着启动一个最原始的 Redis 实例试试手,先不加载任何配置文件:

redis-server --port 6379 --daemonize yes --save ""

这条命令的意思是:监听 6379 端口,以后台守护进程方式启动,并且不落盘。然后验证:

redis-cli -p 6379 ping

如果返回PONG,说明 Redis 在这台银河麒麟机器上已经能正常运行了。测试完以后把这个临时实例关掉:

redis-cli -p 6379 shutdown nosave

4. 别急着 start:先把 redis.conf 改成你想要的样子

4.1 准备独立的配置、数据和日志目录

Redis 源码目录里自带一份redis.conf,但它更像一份完整的手册,里面的注释非常多。我习惯的做法是新建一个专门的配置目录,把能用的配置精简到一份生产配置里。

mkdir -p /etc/redis mkdir -p /var/lib/redis mkdir -p /var/log/redis cp /usr/local/src/redis-6.2.5/redis.conf /etc/redis/6379.conf

这样配置、数据、日志三个目录互不干扰。后面如果同一个机器上要跑多个 Redis 实例,只需要复制多份配置,分别改端口和目录即可。

4.2 七个我每次都要改的参数

以下这份表格是我在银河麒麟上部署 Redis 时最关心的配置项,每个参数我都有实际调整过,不是网上随便抄来的:

配置项我这次用的值说明
bind0.0.0.0允许外部机器访问,前提是已做好密码保护
port6379默认端口,如果没有冲突不用改
protected-modeyes安全保护开关,必须设置密码,不能关
daemonizeno交给 systemd 管理时一定写 no
requirepass你自己设的强密码外部访问的密码
dir/var/lib/redisRDB 和 AOF 文件的存放目录
appendonlyyes开启 AOF 持久化,日志式落盘
appendfsynceverysec每秒刷一次盘,性能和可靠性的平衡点
maxmemory根据服务器实际内存调整防止 Redis 把内存吃光,建议至少留 1G 给系统

打开配置文件:

vim /etc/redis/6379.conf

直接搜索这几个参数,改成上面的值。这里我特意强调一下daemonize这个参数,后面用 systemd 管理 Redis 的时候,如果这里写了yes,Redis 会自己 fork 出一个守护进程,systemd 会认为主进程已经退出,然后出现“服务启动失败”或者“进程号对不上”的奇怪现象。所以我的建议是daemonize no,让 systemd 直接管住前台进程。

protected-mode yes这个参数在 Redis 6.2 里仍然默认开启。当 Redis 没有设置密码、并且绑定的不是本机回环地址时,外部客户端连进来会被拒绝。很多人在这一步抓狂,其实只要设置了强密码,再显式配置bind,就不会触发保护机制。密码建议用类似Kx9#pL2mRq7v这种足够长的随机串,别用123456,否则内网扫端口的人分分钟爆破。

4.3 关于“改完配置立刻生效”的说法

很多人以为改完redis.conf马上就能用,其实不是。Redis 的配置加载只发生在启动阶段,运行期间你还可以用CONFIG SET临时修改,但要想让配置文件里的内容持久化,还是需要重启服务。我习惯在改完配置后,先校验一下配置有没有语法错误:

redis-server /etc/redis/6379.conf --test-memory 512

--test-memory会做一次内存自检,顺便把配置解析之后的报错暴露出来,避免启动到一半才发现问题。内存自检不要在生产大内存机器上随便跑,它会把内存全部写一遍,有一定延迟。

5. 用 systemd 把 Redis 服务化:开机自启一个不落

5.1 编写 redis.service 单元文件

很多人编译装完 Redis,就是手动redis-server /etc/redis/6379.conf把它跑起来,这样一旦机器重启,Redis 不会跟着启动,而且日志、进程管理都很乱。正确做法是把它交给 systemd。

在/etc/systemd/system/目录下创建redis.service文件:

vim /etc/systemd/system/redis.service

内容如下:

[Unit] Description=Redis Server 6379 After=network.target [Service] Type=simple User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf ExecStop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a '你的密码' shutdown Restart=always RestartSec=3 [Install] WantedBy=multi-user.target

这个文件里最关键的是User=redis。Redis 官方不建议用 root 用户直接运行服务,否则一旦有命令执行漏洞,攻击者直接拿到 root 权限。所以我单独创建一个低权限用户:

useradd -s /sbin/nologin redis chown -R redis:redis /var/lib/redis /var/log/redis /etc/redis/6379.conf

注意,/var/lib/redis和/var/log/redis必须让 redis 用户可以写,不然启动后会立刻报权限错误,而且这个问题特别容易在这个环节出现。

5.2 启动、设置开机自启和状态检查

配置文件写好后,先重载 systemd:

systemctl daemon-reload systemctl enable --now redis

然后看一下服务状态:

systemctl status redis -l

如果一切正常,你会看到Active: active (running)。再用客户端验证一次:

redis-cli -h 127.0.0.1 -p 6379 -a '你的密码' ping

这里-a后面直接跟密码,命令执行后会有一条警告信息提示密码出现在命令行里,这是正常的,不会影响运行。想看更详细的信息,可以用:

ss -lntp | grep 6379

确保LISTEN状态没问题,说明 Redis 已经作为常驻服务跑起来了。

5.3 重启验证不是什么“仪式感”

配置完 systemd 之后,我强烈建议执行一次:

systemctl restart redis

为什么?因为很多问题只在重启时才会暴露。之前就有同事遇到ExecStop命令里的密码配错,平时好好的,一重启就停不掉服务,最后只能kill -9。提前重启一遍,确认它能自己停下、自己起来,后面再遇到机器重启就不会手忙脚乱。

6. 远程连接、防火墙和可视化客户端:Windows/跨机访问不再折腾

6.1 防火墙放行 6379 端口

很多人按照教程配好 Redis,然后在自己电脑上用客户端连接,结果一直超时。第一反应是 Redis 配置错了,实际上八成是服务器防火墙把端口拦了。

在银河麒麟上检查防火墙状态:

systemctl status firewalld

如果防火墙是开启的,放行 6379 端口:

firewall-cmd --permanent --add-port=6379/tcp firewall-cmd --reload

如果你发现这个机器用的是ufw,命令换成:

ufw allow 6379/tcp

如果业务要求比较严格,只允许特定网段的机器连接,可以这样写:

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.10.0/24 port protocol=tcp port=6379 accept' firewall-cmd --reload

这样比直接对所有 IP 开放更安全。

6.2 调整 bind 与访问权限的正确姿势

在配置文件里我建议bind 0.0.0.0,但这只是在“配合防火墙 + 强密码”前提下的选择。有些教程一上来就让大家用protected-mode no,我特别不推荐。因为一旦关掉保护模式并且没有密码,公网 Redis 漏洞扫描工具几分钟就能扫到你的服务器,接着就是写定时任务挖矿。

最稳妥的组合是:

  • protected-mode yes
  • bind 0.0.0.0
  • requirepass设置为高强度的随机密码
  • 防火墙只放行内网网段

如果你的机器 IP 是192.168.1.10,只允许内网访问,也可以把bind写成具体 IP:

bind 192.168.1.10

这样 Redis 只监听这个内网地址,外网连不进来,安全等级又提高了一档。

6.3 可视化客户端实测:Another Redis Desktop Manager

Redis 本身是命令行工具,但排查数据、查看 key 分布的时候,图形界面确实方便很多。网上比较多的是 Redis Desktop Manager,但它的新版已经转成商业收费了。我更推荐开源的 Another Redis Desktop Manager,也就是大家常说的 ARDM。

在 Windows 上使用很简单:下载对应的 exe 安装包,打开后新建连接,填写:

  • 地址:你银河麒麟机器的 IP
  • 端口:6379
  • 密码:配置文件里设置的 requirepass 值

连接成功后,你会看到 Redis 里所有的 key,可以按数据类型筛选,能看到 String、Hash、List、Set、Sorted Set 等类型的完整内容。这个工具对新手特别友好,也是一种直观理解 Redis 数据类型的方式。

如果你不想装图形界面,命令行里这样远程连接:

redis-cli -h 192.168.1.10 -p 6379 -a '你的密码'

进入交互模式后,输入info可以看到服务端详细信息,输入dbsize可以看当前库有多少 key。这里补充一个实际经验:多台客户端机器用同一个账号连接没问题,但生产环境建议用 Redis 6 以后的 ACL 功能,为每个业务账号单独授权,别全挤在requirepass这一层。

7. 排错记录:银河麒麟下最容易翻车的几个场景

7.1 服务启动“秒退”或状态一直 failed

这是排错里出现频率最高的问题。Redis 启动后立刻退出,systemctl status里面显示failed。这时候先别急着怀疑系统,直接用前台方式跑一下配置,真实错误会立刻打在屏幕上:

/usr/local/bin/redis-server /etc/redis/6379.conf

我遇到过的问题是dir参数指向的/var/lib/redis目录权限不对,导致 Redis 无法写入持久化文件,进程启动后自动退出。用ll /var/lib/redis查看权限,确保 owner 是redis。

还有一个很误导人的情况:配置里有daemonize yes,systemd 启动后显示“单元退出”,但 redis-server 进程其实还在后台跑着。这时候我已经在 4.2 节里反复强调过,使用 systemd 管理时一定把daemonize改成no。

7.2 外部客户端被拒绝连接:Protected Mode 报错

在远程用 ARDM 或者 redis-cli 连接时,如果返回类似这样的信息:

DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user.

说明当前 Redis 处于保护模式,同时没有设置密码,或者你没把bind配置成对外可见的地址。解决方法很简单:配置requirepass并重启服务。注意,重启时必须在systemctl restart redis后重新测试,很多远程连接问题都是因为改了配置但没重启。

7.3 编译阶段 jemalloc 报错和内核参数警告

编译报 jemalloc 头文件不存在的问题,我前面已经给过命令make MALLOC=libc。但这里还有一个延伸问题:Redis 启动时可能会有这样一个警告:

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.

这是系统内核参数vm.overcommit_memory的问题,Redis 在做后台持久化时,需要系统允许一定程度的内存超额申请。临时生效:

sysctl vm.overcommit_memory=1

永久生效,需要修改/etc/sysctl.conf,在文件末尾加上:

vm.overcommit_memory = 1 net.core.somaxconn = 511

然后执行sysctl -p加载。第二个参数somaxconn是为了优化高并发连接下的 TCP 队列长度,没有改的话在压力测试下也可能出现连接延迟。

7.4 目录权限和 SELinux 的坑

银河麒麟服务器版默认可能会开启 SELinux,这种情况下即使你的dir目录权限正确,Redis 也可能无法写文件,日志里会看到类似Permission denied的报错。用下面命令确认:

getenforce

如果返回Enforcing,说明 SELinux 在强制模式。快速验证是不是它造成的问题:

setenforce 0

然后重启 Redis。如果确实能正常工作了,说明就是 SELinux 策略拦的。内网测试环境临时关掉可以,但生产环境建议还是按安全策略给 Redis 目录打上正确的 SELinux 标签,不要图省事一关了之。

7.5 养成看日志的好习惯

日志是排错的第一入口。在 Redis 配置文件里设置:

logfile /var/log/redis/redis.log

然后一旦遇到问题,第一时间执行:

tail -n 50 /var/log/redis/redis.log

比到处瞎猜强得多。Redis 的日志写得其实很清楚,启动失败原因通常就在前面几行。

8. 用 redis-benchmark 实测一遍,顺便聊聊后续扩展

8.1 本地压测:看看到底能跑多少 QPS

Redis 装好、服务跑起来以后,我习惯用自带压测工具做一次快速验证,顺便确认这台机器的基本性能。

redis-benchmark -h 127.0.0.1 -p 6379 -a '你的密码' -c 50 -n 10000 -t set,get -q

解释一下参数:-c 50表示模拟 50 个并发客户端,-n 10000表示总共发送 10000 次请求,-t set,get只压测 SET 和 GET 两种命令,-q让输出更精简。

在我这台银河麒麟 V10 测试机上,结果稳定在每秒 8 万以上请求,延迟中位数在 1 毫秒以内。如果你测试结果在几万甚至几千,先别急着怀疑 Redis,看看是不是机器 CPU 频率太低、虚拟化环境性能受限,或者开启了太多其他服务占用了 CPU。

8.2 从“装上”到“用好”:常用命令和数据类型的实战理解

压测通过之后,Redis 就算真正能用了。但安全性、稳定性和业务价值,还需要进一步规划和理解。至少下面这几个新手上路必须会:

  • dbsize:查看当前库的 key 数量
  • info memory:查看内存使用情况
  • keys *:列出所有 key,仅限测试环境,生产环境慎用,key 很多时会卡住整个实例
  • type key名:查看某个 key 对应的数据类型
  • ttl key名:查看 key 剩余过期时间

这里也顺便说一说 Redis 各种数据类型对应的典型场景,这也是面试和工作里绕不开的点:

  • String:最基础,适合做计数器、缓存、分布式锁里的SETNX操作
  • Hash:适合存对象,比如用户信息、商品信息,内存使用比 String 存 JSON 更省
  • List:适合简单消息队列、最新消息列表
  • Set:适合去重、共同好友等集合运算
  • Sorted Set:适合排行榜、延迟队列,每个元素带一个分数,天然按分数排序
  • Stream:Redis 5 之后更专业的消息队列,支持消费者组

8.3 数据备份和日常维护要提前想好

Redis 数据全在内存里,一旦机器磁盘损坏、误删实例,持久化文件就是你唯一的退路。我在银河麒麟上的建议是:

  • 开启 RDB 快照,默认配置里已经有save 3600 1这类规则,表示 1 小时内至少 1 次写入变更时才触发快照。
  • 开启 AOF 日志,appendonly yes,并且appendfsync everysec。如果业务对数据完整性要求极高,可以改成always,但写入性能会明显下降。
  • 定期把/var/lib/redis/dump.rdb和 AOF 文件复制到其他机器或者备份盘上。

备份命令很简单:

cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +%F).rdb

如果是重要业务,建议同时用redis-cli BGSAVE手动触发一次快照,确保备份文件尽量新。恢复时把备份文件放到dir对应的目录,重启 Redis 即可自动加载。

8.4 有条件的话,用 Docker 或主从架构做升级

我这次是直接在银河麒麟裸机上编译安装的,这也是最通用、最可控的方案。但如果你所在的团队已经普及 Docker,也可以考虑用官方镜像跑 Redis。Redis 官方镜像本身也是基于 Debian 构建的,在银河麒麟的 Docker 环境中运行完全没问题,关键是要做好数据目录的卷挂载和端口映射。

如果你后续要搭建 Redis 主从架构或者哨兵集群,建议先把单机版这套 systemd 管理方式吃透。因为主从配置的核心就是 `replicaof 主节点IP 6379` 这一行,配置文件的路径、权限、目录管理逻辑和单机版完全一样。等主从起来以后,再去研究哨兵和集群,思路会顺畅很多。 最后再分享一个我个人的习惯:每次改完 Redis 配置,先在测试环境 `systemctl restart redis`,然后跑一遍 `redis-cli ping` 和 `redis-benchmark`,确认没有任何异常后才动生产。Redis 的配置项很多,但真正影响线上运行的核心就那么几个,把基础的持久化、内存上限、访问控制和防火墙守好,这台银河麒麟上跑 Redis 就稳了。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 9:09:27

混合配电系统双目标规划:NSGA-II与序贯蒙特卡洛的Python实现

摘要混合配电系统(交流/直流混合配电、含分布式电源与储能的多能源配电系统)的规划问题,本质上是一个在投资经济性与供电可靠性之间寻找最优平衡的多目标优化问题。传统方法要么只做经济性单目标优化,用惩罚项近似可靠性&#xff…

作者头像 李华
网站建设 2026/10/2 9:08:53

AI工程师必读:医疗与金融领域智能体构建的30个核心实践

1. 从“会聊天”到“能干活”:智能体到底改变了什么大语言模型刚火起来那阵子,大家最直观的体验就是“问答”——你问一句,它答一句,答得还挺像那么回事。但真把它扔进业务场景里,问题马上就来了:它只会说&…

作者头像 李华
网站建设 2026/10/2 9:08:20

GBase 8s 内部用户创建全攻略:权限管理与安全实践

看到标题里写着“GBase 8s 内部用户创建”,估计不少刚接触国产数据库的朋友第一反应是:这不就是 CREATE USER 一条语句的事吗?实际真上手搞过 GBase 8s 的人都知道,这个“内部用户”和 MySQL、Oracle 里的用户概念不完全是一回事…

作者头像 李华
网站建设 2026/10/2 9:07:35

基于毫米波雷达与TUIO协议的Unity非接触式交互系统实现

1. 项目背景与整体思路拆解 先交代一下我为什么会折腾这套东西。年初接了个人机交互展厅的项目,甲方要求"不碰屏幕、挥挥手就能操作",传统的红外触摸框和Kinect都试过,要么受环境光干扰严重,要么在玻璃展柜前面完全没法…

作者头像 李华
网站建设 2026/10/2 9:06:56

PyTorch实战:交警手势识别8类动作全流程与数据集落地

简介:本资源是一套基于PyTorch实现中国交通警察8种指挥手势识别的完整项目包,面向深度学习入门者、计算机视觉方向学生及智能交通应用开发者,帮助解决手势自动分类与关键点检测的工程落地问题。压缩包共34个文件,以31个Python脚本…

作者头像 李华
网站建设 2026/10/2 9:05:17

Claude Code实战指南:VS Code插件配置与企业级开发场景

1. Claude Code不是“另一个Copilot”,它是开发者工作流的重构起点你打开VS Code,右键选中一段Python函数,弹出菜单里多了一个“Ask Claude”选项——这不是插件浮夸的营销话术,而是我上周在给团队做代码评审时真实发生的场景。当…

作者头像 李华