Godot游戏自动化构建与发布:基于GitHub Actions与Docker的CI/CD实践

news2026/5/17 7:36:00
1. 项目概述当Godot遇上CI/CD如果你是一名独立游戏开发者或者在一个小团队里负责Godot引擎的项目那么“构建”和“部署”这两个词大概率是你开发流程里最头疼的环节之一。手动导出项目到不同平台Windows、Linux、macOS、Web、Android、iOS每次都要在编辑器里点点点等待漫长的打包过程还要小心翼翼地管理不同的导出预设和签名密钥。更别提当你想为每一次代码提交自动生成一个可测试的版本或者为每一次发布打上标签并自动构建所有平台包时那种无处下手的无力感。这就是abarichello/godot-ci这个项目要解决的核心痛点。它不是一个游戏也不是一个插件而是一个专门为Godot游戏引擎项目打造的持续集成与持续部署CI/CD解决方案模板。简单来说它提供了一套开箱即用的配置让你能把Godot项目的构建、测试、打包、发布这些重复性劳动完全交给云端或本地的自动化流水线来处理。项目的维护者abarichello将这些最佳实践封装起来让开发者尤其是那些对DevOps不太熟悉的游戏开发者能够以极低的门槛享受到自动化带来的效率提升和可靠性保障。我最初接触它是因为一个需要同时发布到SteamPC、Itch.ioWeb和移动端的小型项目。手动操作不仅容易出错而且耗时巨大。在尝试了多种方案后godot-ci以其对Godot生态的原生友好性和基于GitHub Actions的简洁设计脱颖而出。它就像给你的Godot项目配备了一个不知疲倦的构建机器人你只需要把代码推送到Git仓库剩下的编译、打包、甚至上传到分发平台全部自动完成。2. 核心设计思路为何选择GitHub Actions与Docker2.1 技术栈选型解析abarichello/godot-ci的核心设计建立在两个现代开发基础设施的基石之上GitHub Actions和Docker。这个选择背后有非常务实的考量。首先GitHub Actions是目前开源和私有项目中最主流的CI/CD平台之一。对于Godot开发者而言绝大多数人的代码仓库都托管在GitHub上。使用GitHub Actions意味着无需额外配置第三方CI服务如Jenkins、GitLab CI等所有的流水线配置.github/workflows/下的YAML文件和代码放在一起管理起来非常直观。Actions提供了丰富的虚拟环境Runner可以轻松运行Windows、Linux和macOS的构建任务完美覆盖Godot的所有导出平台。更重要的是它有非常慷慨的免费额度对于个人或小型团队的项目完全够用。其次Docker的引入是解决Godot CI环境复杂性的关键一招。Godot的构建尤其是涉及导出模板编译或特定平台工具链时对环境依赖有严格要求。不同版本的Godot可能需要不同版本的SCons、Python、SDK等。如果直接在CI的裸机环境里安装配置不仅步骤繁琐而且极易出现环境不一致导致的构建失败。godot-ci通过使用预构建的Docker镜像如barichello/godot-ci:mono-3.x将Godot引擎、所有构建工具和依赖项打包在一个隔离的、可复现的容器环境中。这意味着环境一致性在任何地方运行你的电脑、GitHub的服务器构建环境完全一样彻底杜绝“在我机器上是好的”这类问题。快速启动CI Runner无需花费时间安装Godot和一堆工具直接拉取镜像即可开始工作大大缩短流水线执行时间。版本管理通过切换不同的Docker镜像标签可以轻松地为项目切换不同的Godot版本如3.5, 3.6, 4.0或配置标准版、Mono/C#版。这种“GitHub Actions Docker”的组合将CI/CD的便利性和环境可控性做到了最佳平衡是项目能“开箱即用”的基础。2.2 项目结构总览当你将abarichello/godot-ci用作模板或参考其配置时你的项目结构会融入以下几个核心部分你的Godot项目根目录/ ├── .github/ │ └── workflows/ │ ├── build.yml # 主构建工作流在推送标签时触发多平台导出 │ ├── test.yml # 测试工作流在每次推送或PR时运行GUT单元测试 │ └── (其他自定义工作流) ├── export_presets.cfg # Godot编辑器生成的导出预设文件关键 ├── (你的游戏源码、场景、资源文件...) └── README.md其中export_presets.cfg文件是整个自动化流程的“指挥中心”。Godot编辑器里你配置的所有导出平台、选项、签名信息都以特定格式保存在这个文件里。godot-ci的工作流会读取这个文件自动识别并执行里面定义的所有导出预设无需你在YAML里为每个平台重复编写复杂的导出命令。.github/workflows/下的YAML文件定义了自动化流水线的行为。build.yml通常是核心它监听类似v*的Git标签推送事件例如git tag v1.0.0 git push --tags。一旦检测到就会触发一个构建任务拉取指定的Godot Docker镜像然后根据export_presets.cfg的配置为每一个预设的导出目标生成对应的游戏包。注意很多新手会忽略export_presets.cfg的重要性。务必确保在Godot编辑器的“导出”面板中完整配置好所有你需要的平台预设并且将这个文件提交到Git仓库。自动化流程不会使用你本地编辑器内存中的配置它只认这个配置文件。3. 从零开始配置你的Godot CI流水线3.1 前期准备与仓库设置在动手修改YAML文件之前需要完成几项准备工作。首先确保你的Godot项目本身是版本控制友好的。这意味着避免在资源路径中使用绝对路径或特殊字符。使用.gitignore文件排除*.import、Godot Mono缓存等生成性文件夹但必须包含export_presets.cfg。如果你的项目使用C#Mono版本需要确保.csproj文件也在版本控制中。其次在Godot编辑器中完成所有导出配置。打开“项目” - “导出”点击“添加…”选择目标平台如Windows Desktop, Linux/X11, macOS等。为每个平台配置好必要的选项例如应用名称、版本信息这些会打包进最终的程序中。导出路径和文件名建议使用类似builds/{platform}/{project_name}.{ext}的模式便于CI流程整理产出物。godot-ci的示例配置中通常使用build/目录。代码签名至关重要对于Windows.exe和macOS.app发布给玩家使用的版本必须签名否则会被系统安全机制拦截。你需要准备好代码签名证书并在对应平台的“代码签名”部分配置好。CI流程需要访问你的签名证书文件.pfx和密码这涉及到GitHub Secrets的安全配置是后续的关键步骤。每配置完一个预设就点击一次“导出项目”旁边的“管理导出预设”按钮进行保存。所有预设都会写入export_presets.cfg。3.2 核心工作流文件详解让我们深入build.yml这个核心文件拆解其关键部分。以下是一个高度概括和注释的版本展示了其工作原理name: Build Godot Project # 定义触发条件当推送符合 v* 模式的标签时触发 on: push: tags: - v* # 一个构建任务job名为“build” jobs: build: # 在最新的Ubuntu系统上运行这是GitHub Actions最常用且免费的环境 runs-on: ubuntu-latest # 定义构建产物Artifacts用于在流水线结束后下载打包好的游戏 outputs: artifact_name: ${{ steps.set_artifact_name.outputs.name }} steps: # 步骤1检出代码。这是所有Actions工作流的第一步获取你的项目源码。 - name: Checkout repository uses: actions/checkoutv4 with: submodules: recursive # 如果你的项目包含Git子模块这个很重要 # 步骤2设置构建产物名称。通常基于标签名和日期生成一个唯一的文件夹名。 - name: Set artifact name id: set_artifact_name run: echo namebuild-${{ github.ref_name }}-$(date %Y%m%d-%H%M) $GITHUB_OUTPUT # 步骤3执行构建。这是最核心的一步使用社区提供的Godot CI Action。 - name: Build Godot project uses: barichello/godot-ci-actionv1 # 注意这是另一个仓库是执行引擎 with: # 指定使用的Godot Docker镜像版本例如 3.6.1-stable 的Mono版本 godot_version: 3.6.1-stable godot_executable: mono # 使用支持C#的版本 # 指定导出预设文件的路径默认就是项目根目录下的 export_preset: export_presets.cfg # 指定相对路径所有平台的构建输出都会放在这个目录下 relative_path: ./build/ # 是否在构建失败时上传日志便于调试 on_error: upload_logs这个工作流的关键在于barichello/godot-ci-action这个Action。它不是一个Docker镜像而是一个封装了复杂逻辑的GitHub Action。它的内部会根据你指定的godot_version和godot_executable拉取对应的barichello/godot-ciDocker镜像。在容器内挂载你的项目代码。调用Godot引擎的无界面headless命令行模式读取export_presets.cfg并执行--export命令为每一个激活的预设进行导出。将所有输出文件整理到relative_path指定的目录中。3.3 代码签名与安全凭证管理自动化构建中最敏感的一环就是代码签名。你绝不可能将证书文件.pfx和密码明文放在代码仓库里。GitHub提供了Secrets和Variables功能来安全地存储这些机密信息。准备证书文件将你的.pfx文件进行Base64编码得到一个长字符串。在Linux/macOS终端可以执行base64 -i your_certificate.pfx -o encoded_cert.txt。打开这个txt文件复制全部内容。配置GitHub仓库机密进入你的GitHub仓库页面 - “Settings” - “Secrets and variables” - “Actions”。点击“New repository secret”。名称WINDOWS_PFX名称可自定但需与工作流中对应。值粘贴刚才复制的Base64字符串。保存。同理创建另一个Secret来存储证书密码例如名称WINDOWS_PFX_PASSWORD值为你的密码。在工作流中还原和使用证书你需要在build.yml中添加额外的步骤在构建步骤之前将Secret还原为文件并放置在Godot期望的路径下。通常Godot期望的路径是项目根目录下的某个位置或者一个绝对路径。你需要修改export_presets.cfg中的签名配置指向CI环境中的这个文件路径。一个还原证书的步骤示例- name: Setup Windows Code Signing Certificate if: matrix.os windows-latest # 可以条件化执行仅Windows构建需要 shell: bash run: | # 将Base64编码的Secret内容解码并写入文件 echo ${{ secrets.WINDOWS_PFX }} | base64 --decode certificate.pfx # 将证书文件移动到Godot导出预设中配置的路径或设置为环境变量 # 这里假设你的导出预设里配置的路径是项目根目录下的 cert/certificate.pfx mkdir -p cert mv certificate.pfx cert/certificate.pfx # 证书密码可以通过环境变量传递Godot命令行工具可以读取 echo WINDOWS_PFX_PASSWORD${{ secrets.WINDOWS_PFX_PASSWORD }} $GITHUB_ENV实操心得处理跨平台签名尤其是macOS的Developer ID Application证书更为复杂可能需要在macOS Runner上使用security命令导入钥匙串。abarichello/godot-ci的文档和示例中通常会有更详细的指引。务必先在本地测试通命令行的导出和签名再尝试自动化否则调试CI错误会非常耗时。4. 进阶配置与多平台构建策略4.1 使用构建矩阵实现并行打包上面的基础build.yml在一个Ubuntu Runner上执行所有平台的导出。虽然Godot支持交叉编译但有时你可能希望在不同的原生操作系统环境中进行构建或者为了最大化利用CI的并行能力以缩短总构建时间。这时可以使用GitHub Actions的构建矩阵Matrix Strategy。构建矩阵允许你定义一个任务job在多个配置下并行运行。对于Godot多平台构建一个常见的维度就是操作系统。jobs: build: runs-on: ${{ matrix.os }} # 运行平台由矩阵定义 strategy: matrix: # 定义三个并行的构建任务分别使用三种操作系统 os: [ubuntu-latest, windows-latest, macos-latest] # 可以同时定义其他维度如Godot版本 # godot_version: [3.6-stable, 4.0-stable] steps: - name: Checkout uses: actions/checkoutv4 - name: Build uses: barichello/godot-ci-actionv1 with: godot_version: 3.6.1-stable godot_executable: mono export_preset: export_presets.cfg relative_path: ./build/${{ matrix.os }}/ # 按操作系统分隔输出目录在这个配置中当推送标签时会同时启动三个独立的Runner一个Ubuntu、一个Windows、一个macOS。它们并行工作各自执行Godot导出。${{ matrix.os }}这个变量会在每个任务实例中被替换为对应的值。通过将输出目录设置为./build/${{ matrix.os }}/可以避免不同系统的构建产物相互覆盖。注意事项使用矩阵会消耗更多的CI分钟数尤其是macOS Runner消耗更快。并非所有平台都必须在原生系统构建。Godot在Linux上可以导出Windows通过交叉编译和Web通过EMSDK版本。你需要根据export_presets.cfg的配置和实际需求来设计矩阵。例如你可能只需要一个ubuntu-latest任务来导出Linux、Windows和Web版而单独一个macos-latest任务来导出macOS版因为macOS应用签名通常需要在macOS环境下。4.2 集成自动化测试持续集成不仅仅是构建还包括测试。Godot社区有一个流行的单元测试框架叫GUT (Godot Unit Test)。abarichello/godot-ci模板通常也包含一个test.yml工作流用于在每次推送代码或创建拉取请求PR时自动运行测试确保新提交的代码没有破坏现有功能。test.yml的结构更简单它不导出游戏而是运行Godot场景来执行测试name: Run Tests # 在推送代码到主分支或创建PR时触发测试 on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Run GUT Tests uses: barichello/godot-ci-actionv1 with: godot_version: 3.6.1-stable godot_executable: mono # 关键参数指定运行测试的场景或脚本 test_dir: res://test/ # 指向你的测试脚本/场景目录 # 或者直接指定一个测试场景文件 # test_scene: res://test/TestRunner.tscn这个步骤会启动Godot加载你指定的测试目录或场景运行所有单元测试并输出结果。如果任何测试失败整个CI流程就会标记为失败阻止有问题的代码合并到主分支或触发构建。这对于保持项目质量至关重要。4.3 构建后处理与产物分发构建成功的游戏包作为“构建产物Artifacts”存储在GitHub Actions的运行结果中通常可以保留90天。你可以手动下载它们。但对于真正的发布流程你往往希望自动做更多事创建GitHub Release并上传资产这是最直接的发布方式。可以使用softprops/action-gh-release这个Action。在build任务成功后添加一个新任务release它依赖于build任务并将构建产物上传到对应标签的Release页面。分发到游戏平台例如上传到Steam、Itch.io、Epic Games Store等。这通常需要调用这些平台的命令行工具如Steamworks SDK的steamcmd或API。你需要将平台的上传凭证如API Key存储为GitHub Secrets然后在工作流中添加步骤使用curl或其他工具进行上传。部署Web版本对于HTML5导出的游戏你可以使用peaceiris/actions-gh-pages等Action将build/web/目录下的内容自动部署到GitHub Pages让你的游戏立刻拥有一个在线可玩的版本。这些进阶操作极大地扩展了CI/CD流水线的价值实现了从代码提交到玩家可触达版本的端到端自动化。5. 常见问题排查与实战经验即便配置看起来完美在实际运行中依然会遇到各种问题。以下是我在多个项目中实践godot-ci后总结的“避坑指南”。5.1 典型失败场景与解决方案问题现象可能原因排查步骤与解决方案工作流在“Build Godot project”步骤失败日志显示Export preset is invalid or file not found1.export_presets.cfg文件不存在或路径错误。2. 文件存在但内部格式损坏或为空。3. 在Godot编辑器中配置了导出预设但未点击“管理导出预设”保存。1. 检查仓库中该文件是否存在以及工作流中export_preset参数路径是否正确默认是项目根目录。2. 打开export_presets.cfg确认其内容包含[preset.XX]等有效节。3.务必在Godot编辑器中完成配置后点击“导出项目”窗口右上角的“管理导出预设”确保预设被保存。构建成功但生成的游戏包无法运行如Windows报错“缺少VCRUNTIME140.dll”未包含Godot导出模板所需的运行时依赖库。这在Windows上尤其常见。Godot导出的Windows可执行文件默认是“独立”模式但某些配置下可能不是。在导出预设的“Windows桌面”-“二进制格式”中选择“独立”或者确保将godot_version_stable_win64.exe旁边的所有.dll文件与你的exe一起分发。CI流程导出的包通常是完整的。检查你的本地导出设置与CI是否一致。macOS构建失败错误与代码签名或钥匙串相关CI环境没有正确设置代码签名证书和临时钥匙串。macOS签名流程复杂。需要在macos-latestRunner上添加步骤1) 从Secrets解码证书文件。2) 使用security create-keychain创建临时钥匙串。3) 使用security import导入证书并设置信任。4) 使用security default-keychain和security unlock-keychain。详细命令需参考Apple开发者文档和社区示例。使用Mono版本构建C#项目失败提示找不到NuGet包或编译错误Docker镜像中可能缺少项目所需的特定.NET Framework版本或NuGet包。1. 确保你的.csproj文件正确并且所有依赖可通过NuGet正常恢复。2. 尝试在构建前增加一个步骤在容器内运行nuget restore或msbuild的恢复命令。3. 考虑使用更定制化的Dockerfile基于barichello/godot-ci镜像构建在其中预先安装你项目所需的特定依赖。构建时间异常漫长1. Docker镜像拉取慢。2. 项目资源文件巨大导入耗时。3. 并行化不足。1. 利用GitHub Actions的缓存功能缓存Docker镜像层或Godot的导出模板缓存。2. 优化项目资源使用合理的压缩格式。3. 使用构建矩阵并行导出不互斥的平台或拆分工作流。5.2 性能优化与成本控制对于个人或小团队GitHub Actions的免费额度每月2000分钟公开仓库无限通常足够。但为了更高效和节省时间可以考虑缓存Docker镜像使用actions/cache配合Docker的docker save/load或者直接使用支持层缓存的容器服务但GitHub Actions原生Runner不持久化Docker层。一个更有效的方法是缓存Godot编辑器本身如果使用非Docker的安装方式。缓存Godot导出缓存Godot在导出时会对资源进行导入和转换生成.import文件。这些文件在多次构建间如果不变是可以复用的。你可以尝试缓存项目根目录/.import/文件夹注意排除敏感信息。选择性触发通过on.paths配置仅当游戏脚本或核心资源文件发生变更时才触发完整的构建流水线。文档或配置文件的修改不应触发耗时的多平台构建。使用更小的基础镜像barichello/godot-ci提供了-slim标签的镜像体积更小拉取更快适合不需要额外调试工具的场景。5.3 从CI到CD实现完整发布流水线当你对基础的构建流程驾轻就熟后可以尝试搭建一个更完整的“发布流水线”。我的一个典型流程如下开发阶段每次推送到develop分支触发test.yml运行所有单元测试。预发布阶段当develop分支准备发布合并到release/*分支时触发一个build.yml的变体导出所有平台的“调试版”或“未签名版”并作为Artifacts提供下载供内部测试。正式发布阶段测试通过后为release/*分支打上v1.2.3这样的标签并推送。这触发正式的build.yml使用正式的代码签名证书导出所有平台的“发布版”。成功后触发release.yml任务从构建产物中收集所有平台包。在GitHub上创建名为v1.2.3的Release并附上变更日志。将所有构建产物作为附件上传到该Release。可选调用脚本将包自动上传到Steam、Itch.io等分发后台。这套流程将开发、测试、构建、发布无缝衔接极大地减少了人为失误让团队能更专注于游戏开发本身。abarichello/godot-ci提供的模板和Action正是实现这一自动化梦想的坚实起点。它可能不是唯一的选择但对于绝大多数Godot开发者来说它是当前最成熟、社区支持最好、也是最容易上手的那一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2620852.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…