基于Docker Compose的Halo博客极简部署与运维指南

news2026/4/30 0:30:40
1. 项目概述一个极简的Halo博客部署方案最近在折腾个人博客发现很多朋友对Halo这个开源博客系统很感兴趣但又被其相对“标准”的部署流程劝退。官方文档虽然详尽但对于只是想快速搭起来看看效果、或者对Docker、云服务器不那么熟悉的新手来说步骤还是略显繁琐。正是在这个背景下我注意到了GitHub上一个名为openkursar/hello-halo的项目。这个项目本质上不是一个新软件而是一个精心编排的Docker Compose配置集目标非常明确让任何人在几分钟内用一条命令就能启动一个功能完整的Halo博客并且包含了数据库、反向代理等生产环境必备的组件。简单来说hello-halo就是一个“开箱即用”的Halo一键部署包。它把部署Halo时所有让人头疼的琐事——比如拉取镜像、配置数据库连接、设置反向代理、处理SSL证书——都打包好了。你不需要分别去研究Halo、MySQL、Nginx各自的配置怎么写也不需要手动创建网络和卷。对于个人博主、技术爱好者、甚至是想要快速搭建一个团队知识库的小组来说这无疑大大降低了技术门槛。我自己也实际测试了几轮从干净的Linux服务器到本地开发机都能顺利跑起来。接下来我就把这个项目的核心设计、具体怎么用、以及我在实操中踩过的坑和总结的技巧毫无保留地分享给你。无论你是刚接触博客搭建的小白还是想寻找更优雅部署方案的老手相信这篇内容都能给你带来直接的帮助。2. 核心设计思路与方案选型2.1 为什么选择Docker Compose作为基础hello-halo项目的基石是Docker Compose这个选择背后有非常务实的考量。部署一个像Halo这样依赖数据库MySQL或H2的Web应用传统方式需要在服务器上手动安装Java运行环境、数据库软件然后进行一系列复杂的配置。这个过程容易出错且环境难以复制。Docker Compose通过一个docker-compose.yml文件定义了所有服务Halo、MySQL、Nginx、它们之间的依赖关系、网络配置、数据卷挂载等。这带来了几个核心优势环境隔离与一致性每个服务运行在独立的容器中互不干扰。你在自己电脑上测试成功的配置可以百分百复现到云服务器上彻底杜绝了“在我机器上是好的”这类问题。一键启停与管理通过docker-compose up -d和docker-compose down两条命令就能完成整个应用栈的启动和清理管理成本极低。资源声明清晰所有配置从数据库密码到服务器端口都白纸黑字地写在YAML文件里一目了然方便版本管理和修改。hello-halo正是抓住了这一点它提供的不是一个脚本而是一个声明式的、可版本化的环境描述文件。这比单纯写一个安装脚本要更现代也更可靠。2.2 项目架构与组件职责解析我们来看一下hello-halo默认集成的“全家桶”架构。一个典型的部署包含以下三个核心服务halo这是主角即Halo博客系统的应用容器。项目通常会指定一个稳定的Halo版本镜像如halohub/halo:2.17。它的工作就是运行Java程序处理用户的博客访问、后台管理等所有业务逻辑。mysql数据库容器。Halo需要持久化存储文章、页面、评论、设置等所有数据。虽然Halo内置了H2数据库一个文件型数据库用于演示但用于生产环境MySQL这类独立数据库在性能、可靠性和备份方面都更胜一筹。hello-halo默认集成了MySQL并预先配置好了Halo连接数据库所需的参数。nginx反向代理容器。这是架构中非常关键的一环。它主要负责两件事端口转发与负载均衡单实例下主要是转发外部用户访问的是80HTTP或443HTTPS端口Nginx接收请求后将其转发到内部Halo容器实际监听的端口如8090。这样对外只暴露Nginx更安全。SSL/TLS终止如果你配置了HTTPS强烈建议SSL证书的配置和卸载工作是在Nginx这一层完成的Halo应用本身无需处理证书架构更清晰。此外架构中还包含了Docker网络和卷Volume自定义网络所有上述容器被加入同一个自定义的Docker网络例如名为halo-network。在这个网络内容器之间可以使用服务名如mysql直接通信无需知道对方IP这是Docker Compose带来的便利。数据卷分别为MySQL的数据mysql_data、Halo的工作目录halo_data和Nginx的配置nginx_conf创建了命名卷。确保容器销毁重建后你的博客数据和配置不会丢失。这种“应用数据库反向代理”的三层架构是当前Web应用部署的最小化最佳实践。hello-halo将其模板化让你直接站在了最佳实践的起点上。2.3 与纯Docker或手动部署的对比你可能会问我用docker run命令一个个启动容器或者干脆不用Docker手动部署不行吗当然可以但hello-halo的价值在于省心省力。vs 纯Docker命令用docker run部署多个关联容器你需要手动创建网络、指定容器间链接、挨个配置环境变量、映射端口和卷。命令冗长且易错。hello-halo的docker-compose.yml一份文件就替代了所有这些命令管理和修改的效率不在一个量级。vs 手动部署手动部署需要在服务器上安装配置Java、MySQL、Nginx处理用户权限、服务自启systemd、防火墙设置等。步骤繁多对新手极不友好且系统环境容易被污染。hello-halo的容器化方案完全避开了这些问题保持服务器环境干净。所以这个项目的定位非常精准它不替代Halo而是优化Halo的交付和部署体验。它面向的是那些希望快速获得一个可运行、易维护的Halo实例的用户。3. 快速开始十分钟内搭建你的博客3.1 环境准备与前置条件在开始之前你需要准备好以下环境。别担心要求很简单一台服务器或本地电脑Linux如 Ubuntu 20.04/22.04, CentOS 7/8、macOS 或 Windows需安装WSL2。我个人推荐使用一台云服务器如腾讯云、阿里云的轻量应用服务器这样你的博客才能被公网访问。安装Docker与Docker Compose这是唯一必须的软件依赖。对于Linux服务器通常可以通过包管理器一键安装。以Ubuntu为例# 更新软件包索引 sudo apt-get update # 安装依赖工具 sudo apt-get install ca-certificates curl # 添加Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod ar /etc/apt/keyrings/docker.arch # 设置Docker仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后运行docker --version和docker compose version注意是compose不是docker-compose确认安装成功。获取项目文件你需要将hello-halo的配置文件拿到手。通常有两种方式克隆Git仓库推荐如果项目托管在GitHub上使用git clone命令。直接下载ZIP包在仓库页面找到下载链接解压即可。注意在云服务器上请确保安全组或防火墙规则已经放行了80HTTP和443HTTPS端口否则外部无法访问。如果只是本地测试可以只映射到本地端口如8080。3.2 配置文件解读与关键参数修改拿到文件后别急着运行。花几分钟理解并修改docker-compose.yml文件能让后续使用更顺心。我们来看一个典型的配置片段version: 3.8 services: halo: image: halohub/halo:2.17 container_name: halo restart: unless-stopped depends_on: - mysql networks: - halo-network volumes: - halo_data:/root/.halo2 environment: - SPRING_PROFILES_ACTIVEproduction - HALO_DATABASEmysql - HALO_DATABASE_HOSTmysql - HALO_DATABASE_PORT3306 - HALO_DATABASE_NAMEhalodb - HALO_DATABASE_USERNAMEhalo - HALO_DATABASE_PASSWORDopenkursar # 强烈建议修改 - HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORDadmin # 初始化超级管理员密码务必修改 - HALO_WORK_DIR/root/.halo2 command: - --halo.security.initializer.superadminusernameadmin - --halo.security.initializer.superadminpassword${HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD} mysql: image: mysql:8.0 container_name: mysql restart: unless-stopped networks: - halo-network volumes: - mysql_data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORDroot # 建议修改 - MYSQL_DATABASEhalodb - MYSQL_USERhalo - MYSQL_PASSWORDopenkursar # 必须与HALO_DATABASE_PASSWORD一致强烈建议修改 command: --default-authentication-pluginmysql_native_password nginx: image: nginx:alpine container_name: nginx restart: unless-stopped depends_on: - halo networks: - halo-network ports: - 80:80 - 443:443 volumes: - nginx_conf:/etc/nginx/conf.d - ./cert:/etc/nginx/cert # 假设SSL证书放在宿主机./cert目录 volumes: halo_data: mysql_data: nginx_conf: networks: halo-network: driver: bridge你必须修改的几个关键参数数据库密码配置文件中出现了多个数据库密码。MYSQL_ROOT_PASSWORDMySQL root用户的密码。生产环境务必修改为一个强密码。MYSQL_PASSWORD和HALO_DATABASE_PASSWORD这是Halo应用连接数据库使用的密码。这两个值必须完全相同。示例中的openkursar是默认值必须修改。Halo超级管理员密码HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD这个环境变量决定了你第一次登录Halo后台/admin的密码。请务必修改并且不要使用admin这种简单密码。SSL证书路径如果你准备配置HTTPS需要将你的SSL证书通常包括.crt和.key文件放到宿主机的一个目录如./cert并确保nginx服务中卷挂载的路径./cert:/etc/nginx/cert正确指向它。同时你还需要修改Nginx的配置文件通常在./nginx/conf.d/目录下来启用SSL。其他可选修改端口映射如果你本地80/443端口已被占用可以修改nginx服务的ports映射例如- 8080:80。镜像版本可以修改halo和mysql的image标签来指定特定版本如halohub/halo:2.18。建议使用稳定版而非latest标签。3.3 一键启动与初始化验证修改好配置文件后启动过程简单得不可思议。启动所有服务在包含docker-compose.yml文件的目录下执行以下命令。-d参数表示在后台运行。docker compose up -d你会看到Docker开始拉取镜像、创建网络、卷和容器。稍等片刻直到命令执行完成。检查服务状态使用以下命令查看容器是否正常运行。docker compose ps如果所有服务的State一栏都是Up则表示启动成功。你也可以用docker logs halo查看Halo容器的启动日志确认没有报错。访问并初始化博客打开浏览器访问http://你的服务器IP如果你修改了Nginx端口则访问http://你的服务器IP:端口。如果一切正常你应该会看到Halo的初始化安装界面。根据提示设置你的博客名称、用户名即超级管理员用户名已在配置中指定为admin和密码这里输入的密码需要与配置文件中HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD一致或者你可以在初始化界面修改但建议保持一致避免混淆。完成初始化后即可进入Halo管理后台http://你的服务器IP/admin和博客前台。至此一个完整的Halo博客就已经在运行了。整个过程你几乎没有接触任何复杂的服务器配置。4. 深入配置打造你的专属博客环境4.1 自定义Nginx配置与HTTPS强化默认的hello-halo项目可能只提供了一个基础的Nginx配置仅支持HTTP。要启用HTTPS并优化访问我们需要自定义配置。准备SSL证书你可以从云服务商如阿里云、腾讯云申请免费的SSL证书如TrustAsia、Let‘s Encrypt通常下载后得到.crt或.pem和.key文件。创建Nginx配置文件在项目目录下创建一个nginx文件夹并在其中创建conf.d文件夹。然后在conf.d内新建一个文件例如halo.conf。mkdir -p nginx/conf.d vi nginx/conf.d/halo.conf编辑Halo的Nginx配置将以下配置写入halo.conf。这是一个支持HTTP自动跳转HTTPS并包含一些基础优化的配置。# HTTP 重定向到 HTTPS server { listen 80; server_name your-domain.com www.your-domain.com; # 替换为你的域名 return 301 https://$server_name$request_uri; } # HTTPS 配置 server { listen 443 ssl http2; server_name your-domain.com www.your-domain.com; # 替换为你的域名 # SSL证书路径对应docker-compose.yml中的卷挂载 ssl_certificate /etc/nginx/cert/your-domain.com.crt; # 替换为你的证书文件 ssl_certificate_key /etc/nginx/cert/your-domain.com.key; # 替换为你的私钥文件 # SSL优化配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # 安全响应头 add_header X-Frame-Options SAMEORIGIN always; add_header X-Content-Type-Options nosniff always; add_header X-XSS-Protection 1; modeblock always; # 日志 access_log /var/log/nginx/halo.access.log; error_log /var/log/nginx/halo.error.log; # 反向代理到Halo location / { proxy_pass http://halo:8090; # 使用Docker服务名 halo proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 上传文件大小限制可选 client_max_body_size 1024m; } # 后台管理路径代理 location /admin { proxy_pass http://halo:8090/admin; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }修改docker-compose.yml需要更新Nginx服务的卷挂载将我们自定义的配置目录挂载进去并确保证书目录挂载正确。nginx: ... volumes: - ./nginx/conf.d:/etc/nginx/conf.d # 挂载自定义配置 - ./cert:/etc/nginx/cert # 挂载SSL证书 ...重启服务修改后需要重启Nginx容器以使配置生效。docker compose restart nginx现在访问你的域名应该会自动跳转到HTTPS的安全连接了。4.2 数据库配置优化与数据持久化默认配置使用了MySQL 8.0。为了更好的性能和可靠性我们可以进行一些调整。调整MySQL配置文件可以创建一个自定义的my.cnf配置文件挂载到MySQL容器中以调整缓冲区大小、字符集等。在项目目录创建mysql/conf.d文件夹并新建custom.cnf。mkdir -p mysql/conf.d vi mysql/conf.d/custom.cnf写入基础优化配置[mysqld] # 字符集 character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci # 连接数 max_connections1000 # 缓冲区 innodb_buffer_pool_size256M # 日志 slow_query_log1 slow_query_log_file/var/lib/mysql/slow.log long_query_time2修改docker-compose.yml中MySQL服务的卷挂载mysql: ... volumes: - mysql_data:/var/lib/mysql - ./mysql/conf.d:/etc/mysql/conf.d # 挂载自定义配置 ...关于数据持久化docker-compose.yml中定义的mysql_data和halo_data都是Docker的命名卷。它们的数据默认存储在Docker管理的位置如/var/lib/docker/volumes/。这是数据安全的关键。即使你执行docker compose down删除了容器只要不删除这些卷你的博客文章和数据库数据就不会丢失。下次docker compose up -d时数据会自动恢复。实操心得定期备份这些卷是良好的习惯。可以使用docker run --rm -v mysql_data:/source -v /path/to/backup:/backup alpine tar czf /backup/mysql_backup.tar.gz -C /source .这样的命令将卷内容打包备份到宿主机。4.3 Halo应用参数调优与插件管理Halo本身也可以通过环境变量进行配置调优。除了前面提到的数据库连接和初始化密码还有一些有用的参数JVM内存参数如果服务器内存较小可以限制Halo容器的内存使用避免被OOM内存溢出杀死。在docker-compose.yml的halo服务下添加halo: ... environment: - JAVA_OPTS-Xmx512m -Xms256m # 设置JVM堆内存最大512M初始256M ...时区设置确保博客时间显示正确。可以同时设置容器的时区和JVM的时区。halo: ... environment: - TZAsia/Shanghai - JAVA_OPTS-Duser.timezoneAsia/Shanghai ... ...插件与主题安装Halo的强大之处在于其丰富的插件和主题市场。进入Halo后台的“插件”和“主题”模块可以直接在线安装。安装的插件和主题文件会保存在halo_data卷中因此也是持久化的。一个重要技巧如果你从Halo官网下载了主题或插件的ZIP包可以通过Docker命令将其复制到正在运行的Halo容器内。例如将本地的theme.zip复制到容器的主题目录docker cp ./theme.zip halo:/root/.halo2/themes/然后进入Halo后台的“主题”页面就能看到并安装这个主题了。5. 运维管理日常维护与问题排查5.1 常用Docker Compose运维命令掌握以下几个命令你就能轻松管理整个博客栈查看运行状态docker compose ps查看实时日志特别是排查启动问题时docker compose logs # 查看所有服务日志 docker compose logs halo # 只看Halo服务日志 docker compose logs -f halo # 持续跟踪followHalo日志停止服务docker compose down。注意这个命令会停止并删除所有容器但默认不会删除数据卷mysql_data,halo_data等所以你的数据是安全的。如果你想同时删除数据卷危险操作数据会丢失需要加-v参数docker compose down -v。重启单个服务如修改了Nginx配置后docker compose restart nginx重新构建并启动如修改了docker-compose.yml后docker compose up -d --build。如果只添加了新的环境变量通常重启即可。进入容器内部用于调试docker compose exec halo bash # 进入Halo容器 docker compose exec mysql mysql -uhalo -p # 进入MySQL并连接数据库会提示输入密码5.2 数据备份与迁移方案备份是生命线。你需要备份两部分数据库MySQL和Halo的工作目录包含文章、主题、插件等。数据库备份# 方法一使用docker compose exec执行mysqldump docker compose exec mysql mysqldump -uhalo -p[你的密码] halodb backup_$(date %Y%m%d).sql # 方法二进入容器再执行更安全避免密码出现在命令行历史 docker compose exec mysql bash # 在容器内执行 mysqldump -uhalo -p halodb /tmp/backup.sql # 然后从容器复制到宿主机 docker cp mysql:/tmp/backup.sql ./Halo工作目录备份Halo的工作目录是一个卷你可以直接备份这个卷的数据。首先找到卷在宿主机上的实际路径docker volume inspect hello-halo_halo_data | grep Mountpoint然后使用tar或rsync备份该目录即可。迁移在新服务器上安装好Docker和Docker Compose将备份的SQL文件和数据目录恢复到对应的卷中然后启动docker compose up -d即可。关键在于确保docker-compose.yml中的数据库密码等配置与备份时一致。5.3 常见问题与故障排查实录以下是我在多次部署和帮朋友排查问题时遇到的典型情况问题1访问博客显示“502 Bad Gateway”或“连接被拒绝”。排查思路首先docker compose ps检查所有容器是否都是Up状态。如果Nginx是Up但Halo不是重点查Halo日志docker compose logs halo。常见原因是数据库连接失败检查HALO_DATABASE_PASSWORD是否与MYSQL_PASSWORD一致以及MySQL容器是否已完全启动可能需要等待几十秒。如果Halo日志显示启动成功检查Nginx配置中proxy_pass的地址是否为http://halo:8090服务名和端口。检查服务器防火墙/安全组是否放行了80/443端口。问题2后台能登录但前台访问样式丢失或部分功能异常。排查思路检查Nginx配置中location /的proxy_set_header部分是否完整特别是Host和X-Forwarded-Proto头这对Halo生成正确的资源链接至关重要。清除浏览器缓存或尝试无痕模式访问。查看Halo后台“系统-博客设置”中的“博客地址”是否正确应设置为你的域名含https://。问题3上传图片或附件失败提示文件过大。解决方案这需要在Nginx和Halo两处调整。Nginx在halo.conf的location /块中添加client_max_body_size 1024m;如前面配置示例所示。Halo在Halo后台的“系统-博客设置-高级选项”中找到“附件上传大小限制”进行调整。修改后记得重启Nginx和Halo服务。问题4如何升级Halo版本安全升级步骤完整备份按照5.2节的方法备份数据库和Halo工作目录。修改docker-compose.yml中halo服务的image标签指向新版本如halohub/halo:2.18。执行docker compose pull halo拉取新镜像。执行docker compose up -d重新创建并启动容器。Docker Compose会使用新镜像启动Halo容器并保持其他服务不变。访问博客检查功能是否正常。Halo的版本升级通常会在首次访问时自动执行数据库迁移。问题5服务器重启后博客没有自动启动。解决方案确保docker-compose.yml中每个服务的restart策略设置为always或unless-stopped默认已是unless-stopped。这样Docker守护进程启动后容器会自动重启。此外你还可以将Docker服务本身设置为开机自启sudo systemctl enable docker。通过这套hello-halo方案你获得的不只是一个博客更是一个易于理解、维护和扩展的现代化应用部署范例。它把最佳实践封装成了简单的配置让你能更专注于博客内容创作本身而不是底层的基础设施。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

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

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

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…