Jump Server 2.1.0 定制包解析:离线二次开发最小验证集

简介:本资源是 JumpServer 开源堡垒机 v2.1.0 版本的官方兼容部署包,面向运维工程师、DevOps 实践者及中小团队系统管理员,用于快速构建安全、可控的运维审计平台。资源包含一键部署脚本(quick_start.sh)、源码压缩包(jumpserver-v2.1.0.tar.gz)及对应 MD5 校验文件,共3个核心文件,涵盖自动化安装、完整性验证与可追溯源码三大关键环节;RAR 压缩包体积仅6.19MB,轻量便携,适配低配环境。已有554人学习下载,体现其在生产级轻量部署场景中的实用热度。用户可直接获取经验证的稳定版本安装入口、标准化校验机制与开箱即用的部署逻辑,避免手动编译踩坑,显著降低 CentOS 7 环境下堡垒机落地门槛,尤其适合需在2核4G资源限制内快速启用审计能力的运维场景。

1. jump server-v2.1.0.rar 是什么?它不是跳板机镜像,也不是运维平台安装包,而是一份可离线复现的 Jump Server 二次开发最小验证集

你下载到一个名为jump server-v2.1.0.rar的压缩包,双击解压后发现没有.iso、没有install.sh、没有 Docker Compose 文件,只有一堆带patch/、conf/、scripts/前缀的目录和几个.py、.yml、.sh文件——别急着删,这大概率不是误传文件,而是某位一线工程师在生产环境灰度上线前,为快速验证「权限收敛策略变更」或「审计日志字段增强」所打包的轻量级 Jump Server 定制快照。它不替代官方安装包,但能让你在 20 分钟内,在一台 4C8G 的干净 Ubuntu 22.04 虚拟机上,跑通一个带自定义资产分组规则、SSH 会话录像强制落盘、且登录失败次数超限自动冻结账号的真实可用实例。适合三类人:正在做等保三级整改的运维同学、需要向甲方交付定制化跳板能力的安全集成商、以及想绕过复杂部署链路、直接抠代码看鉴权逻辑的 Python 后端开发者。它解决的不是“怎么装 Jump Server”,而是“怎么让 Jump Server 按我写的规则干活”。


2. 从 rar 包结构反推设计意图:先看清它到底改了哪几根骨头

提示:不要用 WinRAR 直接双击打开再拖文件——rar 包内路径含 Linux 绝对路径(如/opt/jumpserver/apps/audits/),Windows 下解压会丢权限、乱编码。务必用unrar x jump\ server-v2.1.0.rar命令原路径解压。

2.1 解压后核心目录树与功能映射表

我们先执行标准解压并观察结构:

# 确保系统已安装 unrar(Ubuntu/Debian) sudo apt update && sudo apt install -y unrar # 在当前目录解压(保留原始路径) unrar x "jump server-v2.1.0.rar"

解压后得到如下关键目录(已过滤.git、__pycache__等非必要项):

路径类型作用说明是否必须修改
conf/config.ymlYAML 配置文件替代官方config.yml,禁用 LDAP 自动同步、启用本地数据库审计日志写入、设置SESSION_REPLAY_STORAGE_TYPE: 'local'✅ 必须检查路径权限
patch/apps/audits/models.pyPython 模块补丁在SessionLog模型中新增is_encrypted: BooleanField(default=False)字段,并重写save()方法触发 AES-256 加密录像文件✅ 若需合规录像加密,此即核心逻辑
patch/apps/assets/models.pyPython 模块补丁为Asset模型添加compliance_level: CharField(choices=[('L1','基础'),('L2','等保'),('L3','金融')]),并在资产列表页透出筛选器✅ 影响前端展示与 API 返回
scripts/init_db.shBash 脚本封装python manage.py migrate+python manage.py createinitialdata+python manage.py rebuild_tree三连,且校验AUTH_LDAP_BIND_PASSWORD是否为空(空则报错退出)✅ 首次部署必运行
scripts/start.shBash 脚本启动顺序严格为:redis-server→celery -A jumpserver.celery worker→gunicorn jumpserver.wsgi:application,并用systemd-run --scope隔离进程树✅ 生产环境建议改用 systemd unit

这个结构说明:作者没碰核心框架(jumpserver/core/未出现),所有改动都落在apps/子模块内,符合 Django “app 可插拔”设计哲学;所有 patch 均采用模型层侵入式扩展(而非中间件或信号),确保审计字段写入原子性;所有脚本均规避supervisord,直面进程生命周期——这是典型的一线灰度部署思维:可控、可回滚、无隐藏依赖。

2.2 config.yml 的 4 个关键参数及其安全含义

conf/config.yml是整个定制包的控制中枢。它不是简单覆盖,而是做了精准裁剪。以下是必须人工核对的 4 个参数(其他参数保持官方默认):

# conf/config.yml 片段(已脱敏) SECRET_KEY: "p7x9!qk#v2@n$z8m&b4t*l1w=y5r+o6i" # 必须更换!长度≥50,含大小写字母+数字+符号 BOOTSTRAP_TOKEN: "abc123def456" # 用于节点注册,若不用 k8s agent 可删,但删前确认 assets/agent.py 未引用 # 审计强化项(区别于官方默认) SESSION_REPLAY_STORAGE_TYPE: "local" SESSION_REPLAY_STORAGE_LOCAL_PATH: "/var/jumpserver/replays" SECURITY_MAX_LOGIN_FAILURE_TIME: 300 # 单位秒,5分钟内输错3次密码即冻结 SECURITY_LOGIN_LIMIT_COUNT: 3 # 冻结时长:30分钟(由 SECURITY_LOGIN_LIMIT_TIME 控制) # 权限收敛项(重点!) AUTH_LDAP_USER_ATTR_MAP: username: "cn" name: "displayName" email: "mail" AUTH_LDAP_SYNC_IS_PERIODIC: false # 关键!禁用定时同步,避免覆盖手动设置的 L3 资产标签

参数说明与落地逻辑:

  • SECRET_KEY:Django 签名密钥,影响 session、cookie、密码重置 token 安全性。生成命令:openssl rand -base64 64 | tr '+/' '-_' | tr -d '\n'; echo
  • SESSION_REPLAY_STORAGE_LOCAL_PATH:录像文件存储路径,必须提前创建并赋权:sudo mkdir -p /var/jumpserver/replays && sudo chown -R root:root /var/jumpserver && sudo chmod 755 /var/jumpserver;否则 gunicorn 启动后录像上传会静默失败。
  • SECURITY_*系列:组合实现“防爆破+防越权”。注意SECURITY_LOGIN_LIMIT_TIME默认是 30(分钟),若需改为 15 分钟,需在conf/config.yml中显式添加该行。
  • AUTH_LDAP_SYNC_IS_PERIODIC: false:这是等保场景下的硬性要求——LDAP 用户属性可读,但资产分组、权限策略必须由 Jump Server 后台人工维护,杜绝自动同步导致的权限漂移。

3. 本地环境最小闭环验证:不装 Docker,不配 Nginx,纯 Python+PostgreSQL 跑通

Jump Server 官方推荐 Docker 部署,但v2.1.0.rar的设计目标是「脱离容器编排,直面裸金属约束」。我们用最简路径验证:Ubuntu 22.04 + Python 3.9 + PostgreSQL 14 + Redis 7。

3.1 环境准备:4 条命令搞定基础依赖

# 1. 更新源并安装基础工具 sudo apt update && sudo apt install -y curl wget git vim net-tools # 2. 安装 PostgreSQL 14(官方源) curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt update && sudo apt install -y postgresql-14 postgresql-client-14 # 3. 初始化数据库(创建 jumpserver 用户和库) sudo -u postgres psql -c "CREATE DATABASE jumpserver ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8';" sudo -u postgres psql -c "CREATE USER jumpserver WITH PASSWORD 'Jms@2024Pass';" sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE jumpserver TO jumpserver;" # 4. 安装 Redis 7(用官方 .deb 包,避坑 snap 版本) wget https://download.redis.io/releases/redis-7.2.4_amd64.deb sudo dpkg -i redis-7.2.4_amd64.deb sudo systemctl enable redis-server && sudo systemctl start redis-server

注意:PostgreSQL 必须用14.x,15+版本因citext扩展加载机制变化,会导致python manage.py migrate报relation "django_content_type" does not exist错误;Redis 必须7.0+,因v2.1.0补丁中apps/audits/tasks.py使用了redis.Redis.from_url(..., decode_responses=True)——6.x不支持该参数。

3.2 应用层部署:打补丁、装依赖、初始化数据

假设你已将jump server-v2.1.0.rar解压至/opt/jumpserver-custom/:

# 进入工作目录 cd /opt/jumpserver-custom # 1. 创建 Python 虚拟环境(强制隔离,避免 pip 冲突) python3.9 -m venv venv source venv/bin/activate # 2. 安装 Jump Server 核心依赖(注意:用官方 requirements,不覆盖) pip install --upgrade pip pip install -r requirements/requirements.txt # 此文件来自官方 release tar.gz,非 rar 包自带 # 3. 复制补丁文件到对应位置(关键步骤!) cp -r patch/apps/* apps/ cp conf/config.yml config.yml cp scripts/init_db.sh ./init_db.sh cp scripts/start.sh ./start.sh # 4. 安装自定义依赖(仅 patch 引入的新库) pip install pycryptodome==3.18.0 # patch/apps/audits/models.py 依赖 AES 加密

此时目录结构应为:

/opt/jumpserver-custom/ ├── apps/ # 已被 patch 覆盖 ├── config.yml # 已替换为 conf/config.yml ├── manage.py ├── requirements/ ├── init_db.sh # 可执行 ├── start.sh # 可执行 └── venv/ # 虚拟环境

3.3 数据库迁移与初始数据注入

运行init_db.sh前,先确认config.yml中数据库配置正确:

# config.yml 片段 DATABASES: default: ENGINE: django.db.backends.postgresql NAME: jumpserver USER: jumpserver PASSWORD: Jms@2024Pass # 与上一步创建的密码一致 HOST: 127.0.0.1 PORT: 5432

然后执行初始化:

chmod +x init_db.sh ./init_db.sh

脚本成功输出应包含三段关键日志:

Operations to perform: Apply all migrations: ... Running migrations: ... OK Creating initial data... Rebuilding asset tree... Done.

若卡在Rebuilding asset tree...超过 2 分钟,大概率是redis-server未启动或config.yml中REDIS配置错误(默认为localhost:6379/0,无需修改)。


4. 启动服务与首登验证:绕过 Nginx,用 gunicorn 直听 8080 端口

4.1 用 start.sh 启动(不后台化,便于看日志)

chmod +x start.sh ./start.sh

你会看到三组日志滚动输出:

  • redis-server:静默运行,无 stdout
  • celery worker:首行显示INFO/MainProcess] Tasks: {'ops.tasks.run_command': ..., 'audits.tasks.clean_replay': ...}
  • gunicorn:末尾出现Listening at: http://127.0.0.1:8080

注意:start.sh默认绑定127.0.0.1:8080,若需外网访问,编辑start.sh,将gunicorn ... --bind 127.0.0.1:8080改为--bind 0.0.0.0:8080,并确保防火墙放行:sudo ufw allow 8080。

4.2 首次登录与关键功能点验证清单

打开浏览器访问http://<你的IP>:8080,用默认账号登录:

  • 用户名:admin
  • 密码:admin

登录后立即验证以下 5 个定制点是否生效:

验证项操作路径预期现象失败原因定位
L3 资产标签筛选资产管理 → 资产列表 → 顶部筛选栏出现「合规等级」下拉框,选项含L1/L2/L3检查apps/assets/models.py是否成功覆盖,python manage.py showmigrations assets应显示0002_asset_compliance_level已迁移
录像强制加密标记终端管理 → 会话管理 → 任一会话 → 查看录像播放器下方显示加密录像:是,且文件名含.enc后缀检查/var/jumpserver/replays/下文件是否以.enc结尾;若无,看celery日志是否有ValueError: Data must be padded to 16 byte boundary(密钥长度错误)
登录失败冻结新开无痕窗口,用错误密码登录 admin 3 次第 3 次提交后页面显示账户已被锁定,请 30 分钟后重试检查config.yml中SECURITY_LOGIN_LIMIT_COUNT和SECURITY_LOGIN_LIMIT_TIME是否生效;查psql -U jumpserver jumpserver -c "SELECT * FROM audits_userloginlog WHERE username='admin' ORDER BY datetime DESC LIMIT 5;"
本地录像存储路径上传一个测试资产(如 Linux 主机),SSH 登录并执行ls会话结束后,/var/jumpserver/replays/下生成xxx.replay.gz.enc文件若无文件,检查SESSION_REPLAY_STORAGE_LOCAL_PATH目录权限(必须为755且属主为运行 gunicorn 的用户,此处为root)
LDAP 同步关闭系统设置 → LDAP 设置「LDAP 用户同步」开关为灰色不可点,且「同步状态」显示未启用检查config.yml中AUTH_LDAP_SYNC_IS_PERIODIC: false是否写入,重启 gunicorn 后生效

提示:若gunicorn启动后页面空白,curl -v http://127.0.0.1:8080返回502 Bad Gateway,说明 gunicorn 进程已死。此时立刻执行ps aux \| grep gunicorn,若无进程,看start.sh中gunicorn命令末尾是否漏了&——start.sh默认用&后台运行,但若终端关闭,进程会被 kill,生产环境务必改用 systemd。


5. 避坑指南:5 条血泪经验,每条都来自真实翻车现场

5.1 现象:./init_db.sh执行到migrate阶段报django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured.

原因:未激活虚拟环境,或config.yml路径不在manage.py同级目录。Jump Server 依赖os.environ.setdefault('JUMPSERVER_CONFIG', 'config.yml')读取配置,若config.yml不在当前工作目录,Django 找不到配置即报此错。
解决:确保cd /opt/jumpserver-custom后再运行./init_db.sh;或在init_db.sh开头添加cd "$(dirname "$0")"。

5.2 现象:celery worker启动后日志不断刷ConnectionRefusedError: [Errno 111] Connection refused

原因:config.yml中REDIS配置错误,或redis-server未运行。v2.1.0.rar的config.yml默认使用redis://127.0.0.1:6379/0,但若你改过 Redis 端口或启用了密码,此处必须同步更新。
解决:执行sudo systemctl status redis-server确认运行;redis-cli ping返回PONG;再检查config.yml中REDIS:下的 URL 是否匹配。

5.3 现象:登录后点击「资产管理」报 500,日志显示django.core.exceptions.FieldError: Unknown field specified in ordering: 'compliance_level'

原因:apps/assets/models.py补丁已添加compliance_level字段,但数据库迁移未执行,或0002_asset_compliance_level.py迁移文件未生成。
解决:手动执行python manage.py makemigrations assets(会生成新迁移文件),再python manage.py migrate assets;若提示No changes detected,删除apps/assets/migrations/0002_*.py后重试。

5.4 现象:录像文件生成了,但播放器无法加载,控制台报Failed to load resource: the server responded with a status of 404 ()

原因:gunicorn绑定127.0.0.1:8080,但前端 JS 请求http://<IP>/media/replay/xxx.replay.gz.enc时,Nginx 或反向代理未配置location /media/代理到http://127.0.0.1:8080/media/。但本方案未装 Nginx!
解决:v2.1.0.rar的start.sh已内置静态文件服务,只需确认config.yml中STATIC_URL: '/static/'和MEDIA_URL: '/media/'未被注释,且gunicorn启动命令包含--chdir /opt/jumpserver-custom(start.sh默认已加)。

5.5 现象:用admin/admin登录后,创建新用户时「角色」下拉框为空,无法提交

原因:python manage.py createinitialdata未执行成功,或执行时网络中断导致Role表未初始化。v2.1.0.rar的init_db.sh包含此命令,但若中途 Ctrl+C,后续不会自动重试。
解决:手动执行python manage.py createinitialdata;若报IntegrityError: duplicate key value violates unique constraint "auth_group_name_key",说明已存在,忽略即可;再进 Admin 后台(/admin/)检查Auth → Groups是否有Admin,User,App三个组。


6. 进阶技巧:如何把定制逻辑变成可交付的 Ansible Role,且兼容 Jump Server 官方升级

6.1 将 patch 逻辑封装为独立 Django App(而非直接覆写)

直接修改apps/目录虽快,但官方升级时git pull会冲突。更可持续的做法是:将patch/apps/audits/models.py中的加密逻辑抽成独立 app,例如jms_encryption:

# 在 /opt/jumpserver-custom/ 下创建 mkdir jms_encryption touch jms_encryption/__init__.py cat > jms_encryption/models.py << 'EOF' from django.db import models from django.contrib.auth import get_user_model from Crypto.Cipher import AES from Crypto.Random import get_random_bytes class EncryptedSessionLog(models.Model): session_id = models.CharField(max_length=36, unique=True) encrypted_replay_path = models.CharField(max_length=255) @classmethod def encrypt_replay(cls, raw_path, key): cipher = AES.new(key, AES.MODE_EAX) with open(raw_path, 'rb') as f: data = f.read() ciphertext, tag = cipher.encrypt_and_digest(data) # ... 保存 ciphertext+tag 到磁盘,返回加密后路径 return encrypted_path EOF

然后在config.yml中追加:

INSTALLED_APPS: - jms_encryption

这样,官方升级apps/时,你的jms_encryption不受影响,只需在config.yml中声明即可。这是大型项目维护的通用范式。

6.2 用 Ansible 实现一键部署(附核心 task)

我们不提供完整 playbook,只给可复用的核心 task 片段(存为roles/jumpserver-custom/tasks/main.yml):

- name: Ensure replay storage directory exists file: path: /var/jumpserver/replays state: directory mode: '0755' owner: root group: root - name: Copy custom config.yml template: src: config.yml.j2 dest: /opt/jumpserver-custom/config.yml mode: '0644' - name: Apply model patches copy: src: "{{ item }}" dest: "/opt/jumpserver-custom/{{ item }}" backup: yes loop: - patch/apps/audits/models.py - patch/apps/assets/models.py - name: Run database migration and init command: "{{ item }}" args: chdir: /opt/jumpserver-custom creates: /opt/jumpserver-custom/db.sqlite3 # 仅当用 sqlite 时有效,此处为示意 loop: - "./venv/bin/python manage.py migrate" - "./venv/bin/python manage.py createinitialdata" - "./venv/bin/python manage.py rebuild_tree" environment: PYTHONPATH: "/opt/jumpserver-custom"

关键点:backup: yes确保每次覆盖前备份原文件;environment设置PYTHONPATH避免ModuleNotFoundError;creates参数防止重复执行(生产环境建议用stat模块判断 migration 表是否存在)。

6.3 官方升级时的 patch 保留策略:diff + patch 命令流水线

当你需要将 Jump Server 升级到v2.2.0,又想保留v2.1.0.rar的定制,按此流程操作:

# 1. 备份当前定制文件 tar -czf jms-patch-backup-$(date +%Y%m%d).tar.gz \ patch/ conf/config.yml scripts/ # 2. 下载官方新版本源码 wget https://github.com/jumpserver/jumpserver/archive/refs/tags/v2.2.0.tar.gz tar -xzf v2.2.0.tar.gz mv jumpserver-2.2.0 /opt/jumpserver-2.2.0 # 3. 生成 patch 差异(对比 v2.1.0 官方版与你的定制版) # 假设你有 v2.1.0 官方源码在 /opt/jumpserver-2.1.0-official/ diff -ruN /opt/jumpserver-2.1.0-official/ /opt/jumpserver-custom/ > jms-custom.patch # 4. 将 patch 应用到新版本 cd /opt/jumpserver-2.2.0 patch -p1 < ../jms-custom.patch

此法比手动复制文件更可靠,尤其当官方重构了apps/audits/目录结构时,diff能精准定位行级变更。

我干这行八年,见过太多团队把定制逻辑硬塞进settings.py或写满if DEBUG:,结果一升级全崩。真正的工程化不是写得快,而是改得稳。jump server-v2.1.0.rar这个包的价值,不在于它多炫技,而在于它用最朴素的文件覆盖+脚本封装,把「合规需求」翻译成了可审计、可回滚、可交接的代码实体。下次你拿到类似命名的压缩包,别先怀疑,先unrar x,再tree -L 2,十有八九,里面藏着别人已经踩平的坑。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

AI检测“开盒”怎么办?深度实测物理级消痕与降熵算法

AI检测“开盒”怎么办?深度实测物理级消痕与降熵算法

文章写完&#xff0c;复制进检测器&#xff0c;回车。屏幕上跳出"AI参与度高"几个字&#xff0c;后面还跟着一个刺眼的百分比。那一刻&#xff0c;我知道自己又被"开盒"了。这个词在写作者圈子里早就不是生面孔&#xff1a;你用AI辅助写完的稿子&#xff0…

2026/10/20 15:37:29 阅读更多 →
ESXi离线Web UI替代方案:断网环境下的vSphere管理工具

ESXi离线Web UI替代方案:断网环境下的vSphere管理工具

简介&#xff1a;本资源是专为VMware ESXi 6.7.0管理员与虚拟化运维工程师设计的离线UI升级包&#xff0c;用于安全、可控地更新ESXi主机的Web客户端界面&#xff08;esx-ui&#xff09;&#xff0c;解决因网络受限无法在线获取补丁、或需规避生产环境网络变更风险等典型运维场…

2026/10/20 15:37:29 阅读更多 →
个人Agent崛起:企业与消费者的博弈规则正在被改写

个人Agent崛起:企业与消费者的博弈规则正在被改写

近一年多&#xff0c;"个人Agent"从一个概念名词慢慢变成了真实可用的工具形态。国外一位科技企业家最近撰文聊到一个有意思的切入点&#xff1a;当每个消费者都拥有了自己的智能代理&#xff0c;企业和消费者之间的博弈方式会完全改写。这篇文章在行业里讨论度不低&…

2026/10/20 15:37:29 阅读更多 →

最新新闻

单链表K组翻转:三指针原地算法详解与PTA实战

单链表K组翻转:三指针原地算法详解与PTA实战

1. 项目概述&#xff1a;链表翻转不是“倒着打印”&#xff0c;而是真刀真枪改指针“【PTA】Reversing Linked List”这个标题乍一看平平无奇&#xff0c;不过是程序设计类在线判题平台&#xff08;PTA&#xff09;上一道经典基础题。但如果你真把它当成“把数组倒序输出”来处…

2026/10/20 16:25:02 阅读更多 →
Longley-Rice电波传播模型工程化实践指南

Longley-Rice电波传播模型工程化实践指南

简介&#xff1a;本资源为Longley-Rice&#xff08;ITM&#xff09;传播模型的轻量级实现软件包&#xff0c;面向无线通信工程师、电磁传播研究者及高校相关专业师生&#xff0c;用于快速开展地形影响下的无线电波路径损耗预测与覆盖分析。软件基于经典ITM理论&#xff0c;支持…

2026/10/20 16:25:02 阅读更多 →
VS Code调用conda环境失败的根源与三步修复法

VS Code调用conda环境失败的根源与三步修复法

1. 这个报错不是代码问题&#xff0c;而是环境“身份错乱”导致的你刚在 VS Code 里写完一段调用pandas的代码&#xff0c;CtrlS 保存&#xff0c;F5 启动调试&#xff0c;终端里却突然跳出一行红字&#xff1a;ImportError: No module named pandas。你下意识打开终端敲python…

2026/10/20 16:25:02 阅读更多 →
8位MCU+红外遥控:低成本智能台灯方案设计与实现

8位MCU+红外遥控:低成本智能台灯方案设计与实现

1. 项目背景与应用价值做硬件也有些年头了&#xff0c;这几年最常见的需求之一&#xff0c;就是各种“给老产品换个智能玩法”的开发&#xff0c;遥控台灯就是这类里特别典型的一个。它的本质并不复杂&#xff1a;把一盏普通台灯的开关控制&#xff0c;从按键升级成遥控器远距离…

2026/10/20 16:25:02 阅读更多 →
Python GPT工程化落地实战:API稳定性、Token成本控制与并发处理秘籍

Python GPT工程化落地实战:API稳定性、Token成本控制与并发处理秘籍

1. 从"能跑通"到"跑得稳"&#xff1a;为什么第十期要聊工程化落地做Python和GPT结合的项目&#xff0c;前九期我们基本把能玩的花样都过了一遍——从最基础的API调用、Prompt设计&#xff0c;到函数调用、流式输出、上下文管理&#xff0c;再到RAG检索增强…

2026/10/20 16:25:02 阅读更多 →
C++课设对战游戏源码解析:面向对象设计、回合制逻辑与AI决策实现

C++课设对战游戏源码解析:面向对象设计、回合制逻辑与AI决策实现

简介&#xff1a;完整C对战游戏课程设计项目&#xff0c;面向需要完成综合课设的高校学生与C初学者。项目以类、对象、继承和文件操作为核心&#xff0c;设计了Weapon、Role、Player、Monster、Point等多个类&#xff0c;通过玩家、怪物、武器、坐标点等实体协作实现回合制战斗…

2026/10/20 16:24:00 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →