Helmper:声明式Helm Chart与镜像管理工具,实现安全合规的K8s部署

news2026/5/3 12:17:56
1. Helmper一个声明式、一体化的Helm Chart与镜像管理工具在Kubernetes生态里Helm Chart的依赖管理和镜像分发一直是个挺磨人的活儿。尤其是当你身处金融、医疗这类对合规和安全有严苛要求的行业或者需要在隔离网络Air-Gapped环境中部署时问题会变得更加棘手。你需要从上游拉取Chart解析出所有容器镜像再把它们安全地搬运到自己的私有仓库中间可能还涉及漏洞扫描、补丁修复和镜像签名。这个过程如果手动操作不仅繁琐易错还很难形成可审计、可复现的流水线。我最近在项目里深度使用了一个叫Helmper的工具它用Go写成核心目标就是解决上述痛点。简单来说Helmper是一个“搬运工”加“质检员”它通过一个声明式的YAML配置文件就能自动完成从远程OCI仓库拉取Helm Chart、解析并拉取所有相关容器镜像、进行漏洞扫描与修复、镜像签名最后将Chart和镜像一并推送到你指定的私有仓库的全过程。最让我欣赏的是它通过gRPC连接Trivy和Buildkit这意味着你可以在非特权容器或CI/CD环境中安全运行无需直接挂载Docker Socket安全性提升了一大截。2. 核心设计思路与工作原理拆解2.1 为什么需要Helmper传统流程的痛点在没有Helmper之前一个典型的“Chart入仓”流程可能是这样的手动解析依赖使用helm template或helm pull加helm show values来获取Chart渲染后的所有镜像列表。编写搬运脚本写一个Shell或Python脚本循环遍历镜像列表用docker pull、docker tag、docker push完成镜像迁移。安全环节脱节漏洞扫描Trivy和修复使用docker build重新打补丁镜像通常是另一个独立的流水线阶段脚本复杂且与搬运流程耦合度低。签名与审计镜像签名Cosign又需要额外的步骤和密钥管理。配置管理分散Chart版本、目标仓库地址、安全扫描策略等配置散落在多个脚本或配置文件中难以维护。这个过程不仅容易出错而且极难保证在不同环境、不同时间点执行操作的一致性即二进制可复现性。Helmper的设计正是为了将这一系列离散的操作标准化、声明化、流水线化。2.2 Helmper的架构与组件协同Helmper本身是一个协调者Orchestrator它并不重复造轮子而是集成了几个云原生领域的顶级开源工具通过Go SDK或gRPC调用它们Helm SDK: 用于与Helm仓库和OCI仓库交互拉取Chart解析Chart依赖和values.yaml确保对Helm生态的完全兼容。Oras (Go库): 用于高效、标准地与OCI仓库交互推送和拉取Chart及镜像等OCI制品。它替代了传统的Docker CLI更轻量更适合程序化操作。Trivy (gRPC): 作为漏洞扫描器。Helmper通过gRPC调用Trivy服务获取容器镜像的漏洞报告。这种解耦方式意味着Trivy可以独立部署和升级。Copacetic (基于Buildkit): 作为漏洞修复工具。它利用Trivy的报告通过Buildkit在无需Docker Daemon的情况下直接对镜像层打补丁生成修复后的新镜像。Cosign: 用于对修复后的镜像进行数字签名保证镜像的完整性和来源可信。关键设计优势通过gRPC连接Trivy和Buildkit是Helmper架构上的一个亮点。这避免了在工具容器内运行Docker-in-DockerDinD或挂载/var/run/docker.sock带来的安全风险和复杂性。你可以在一个无根Rootless的Pod或容器中运行Helmper而扫描和构建服务可以部署在集群的其他地方。2.3 声明式配置一切的核心Helmper的所有行为都由一个helmper.yaml文件驱动。这种声明式的方式带来了几个好处版本控制配置文件可以放入Git仓库任何变更都有记录可追溯。可重复执行同一份配置在任何地方运行结果是一致的。易于集成配置文件本身就是CI/CD流水线的一个输入很容易与Argo CD、Jenkins等工具集成。3. 从入门到精通Helmper的完整实操指南3.1 环境准备与安装Helmper提供了两种使用方式作为Helm插件或独立二进制文件。对于Kubernetes管理员我推荐使用Helm插件方式更符合使用习惯。作为Helm插件安装helm plugin install https://github.com/ChristofferNissen/helmper安装后你会多出一个helm helmper子命令。安装依赖服务用于高级功能如果你想使用漏洞修复和签名功能需要提前部署Trivy和Buildkit服务。这里给出一个简单的Kubernetes Deployment示例用于在集群内部署这些服务供Helmper连接。trivy-server.yamlapiVersion: apps/v1 kind: Deployment metadata: name: trivy-server spec: replicas: 1 selector: matchLabels: app: trivy-server template: metadata: labels: app: trivy-server spec: containers: - name: trivy image: aquasec/trivy:latest command: [trivy, server, --listen, 0.0.0.0:8887] ports: - containerPort: 8887 --- apiVersion: v1 kind: Service metadata: name: trivy-service spec: selector: app: trivy-server ports: - port: 8887 targetPort: 8887buildkitd.yamlapiVersion: apps/v1 kind: Deployment metadata: name: buildkitd spec: replicas: 1 selector: matchLabels: app: buildkitd template: metadata: labels: app: buildkitd spec: containers: - name: buildkitd image: moby/buildkit:latest command: [buildkitd, --addr, tcp://0.0.0.0:8888] ports: - containerPort: 8888 securityContext: privileged: true # Buildkit通常需要特权模式 --- apiVersion: v1 kind: Service metadata: name: buildkit-service spec: selector: app: buildkitd ports: - port: 8888 targetPort: 8888应用这两个文件kubectl apply -f trivy-server.yaml -f buildkitd.yaml。注意生产环境中你需要考虑这些服务的持久化、高可用和网络策略。Buildkit以特权模式运行存在安全风险需评估或寻找Rootless Buildkit方案。3.2 基础配置与实践简单的Chart与镜像搬运我们从最简单的场景开始将一个指定的Prometheus Chart及其所有镜像搬运到内网的一个私有仓库。首先创建一个helmper.yaml文件# helmper.yaml k8s_version: 1.28.0 # 指定K8s版本用于Helm模板渲染的兼容性检查 import: enabled: true # 开启导入功能 charts: - name: prometheus version: 25.8.0 # 指定Chart版本 # valuesFilePath: ./my-values.yaml # (可选) 指定自定义values文件用于精确解析镜像地址 repo: name: prometheus-community url: https://prometheus-community.github.io/helm-charts/ registries: - name: my-internal-registry url: oci://registry.internal.company.com:5000 # insecure: true # 如果使用HTTP而非HTTPS需要开启 # plainHTTP: true # 同上关键配置解析k8s_version: 这个参数很重要。Helm在渲染模板时部分API对象和行为与K8s版本相关。指定正确的版本可以确保Helmper解析出的镜像列表与目标集群环境一致。charts.repo.url: 支持传统的Helm仓库地址也支持OCI仓库地址如oci://ghcr.io/helm-charts。registries.url: 目标仓库地址必须以oci://开头。Helmper会将Chart和镜像都推送到这里。认证配置Helmper巧妙地复用现有生态的认证方式。对于Helm操作拉Chart它会读取HELM_REGISTRY_CONFIG环境变量指定的文件或者~/.config/helm/registry.json。对于Oras操作推拉镜像它会读取$DOCKER_CONFIG/config.json或~/.docker/config.json。因此操作前只需用对应工具登录即可# 登录目标私有仓库Docker格式 docker login registry.internal.company.com:5000 -u username -p password # 或者如果源Chart在私有OCI仓库也需要登录 helm registry login ghcr.io -u username -p token执行搬运# 作为Helm插件使用 helm helmper -f helmper.yaml # 或者使用独立二进制 ./helmper -f helmper.yaml执行后Helmper会拉取指定的Prometheus Chart解析出所有容器镜像包括其子Chart如kube-state-metrics的镜像然后将这些镜像逐个拉取、重新打上目标仓库的标签并推送上去。最后它会把Chart本身也以OCI制品的形式推送到目标仓库。3.3 高级配置集成漏洞扫描、修复与签名在安全要求严格的场景我们不仅需要搬运还需要对镜像进行“安检”和“加固”。下面是一个集成了全链路安全能力的配置示例。# helmper-full.yaml k8s_version: 1.28.0 charts: - name: ingress-nginx version: 4.10.0 repo: name: ingress-nginx url: https://kubernetes.github.io/ingress-nginx registries: - name: secure-registry url: oci://secure-registry.internal.company.com # 假设是HTTPS且已有有效证书无需insecure import: enabled: true copacetic: # 漏洞修复配置块 enabled: true # 启用修复 ignoreErrors: false # 建议设为false让修复失败时任务整体失败 buildkitd: addr: tcp://buildkit-service.default.svc.cluster.local:8888 # 指向K8s集群内的Buildkit服务 trivy: addr: http://trivy-service.default.svc.cluster.local:8887 # 指向K8s集群内的Trivy服务 insecure: false # 根据Trivy服务是否使用TLS决定 ignoreUnfixed: true # 只修复有补丁的漏洞这是一个实用策略 output: tars: folder: ./tmp/tars # 修复过程中产生的临时tar文件目录 clean: true # 任务完成后清理 reports: folder: ./tmp/reports # Trivy漏洞报告输出目录 clean: true # 任务完成后清理 cosign: # 镜像签名配置块 enabled: true keyRef: /mnt/secrets/cosign.key # Cosign私钥路径可从Secret挂载 KeyRefPass: # 私钥密码可通过环境变量传入 # allowInsecure: true # 如果仓库是HTTP需开启 # allowHTTPRegistry: true # 同上工作流程详解解析与拉取Helmper拉取ingress-nginx Chart并解析出所有镜像。漏洞扫描对于每个镜像Helmper通过gRPC调用Trivy服务进行扫描生成漏洞报告。漏洞修复Helmper将镜像和Trivy报告发送给Copacetic。Copacetic通过gRPC驱动Buildkit根据报告中的补丁信息构建一个新的、已修复漏洞的镜像层。这个过程是在不启动容器的情况下直接操作镜像文件系统层完成的非常高效。镜像签名修复后的镜像被推送到临时位置然后Cosign使用你提供的私钥对其进行签名。签名信息一个单独的签名镜像会被一同推送到OCI仓库。最终推送签名后的镜像被推送到你配置的最终目标仓库secure-registry。实操心得密钥管理cosign.key私钥的安全至关重要。在CI/CD中建议将私钥存储在诸如HashiCorp Vault、AWS Secrets Manager等秘密管理器中在流水线运行时动态注入到文件系统或环境变量中。KeyRefPass也可以通过环境变量COSIGN_PASSWORD传递。3.4 配置技巧与最佳实践使用valuesFilePath进行镜像替换很多时候我们会在自定义的values.yaml中覆盖镜像仓库地址。为了确保Helmper能解析到最终使用的镜像务必通过valuesFilePath指定你的values文件。否则它只会解析Chart默认的镜像地址。批量处理与增量更新charts字段是一个列表你可以配置多个Chart。Helmper会按顺序处理。结合GitOps你可以将helmper.yaml文件模板化通过工具自动生成需要更新的Chart列表实现批量同步。利用输出文件进行审计将import.copacetic.output.reports.folder设置为一个持久化目录并设置clean: false。这样每次运行的Trivy漏洞报告都会保留下来可以作为安全审计的依据。处理私有源仓库如果源Chart仓库是私有的确保在执行Helmper前已经通过helm registry login完成认证。认证信息会自动被Helm SDK使用。网络策略在Kubernetes中运行Helmper时需要确保其Pod能访问目标OCI仓库出站。Trivy和Buildkit的Service集群内。互联网用于拉取上游Chart和镜像如果是空气隙环境则需提前导入。4. 深入原理Helmper如何保证二进制可复现性“二进制可复现性”Binary Reproducibility在软件供应链安全中是个重要概念。它指的是给定相同的输入源码、依赖版本、构建环境每次构建产生的二进制文件应该是完全相同的。对于Helm部署这意味着使用同一份Chart和同一组镜像在任何时间、任何环境部署都应该得到完全一致的K8s资源。Helmper从以下几个方面助力实现这一点锁定所有依赖你需要在helmper.yaml中明确指定每个Chart的name和version。这锁定了Chart本身的确切版本。固化镜像清单Helmper在解析Chart时会根据你指定的k8s_version和valuesFilePath渲染出确定的Kubernetes资源清单从而提取出绝对确定的镜像列表包括tag。这避免了使用浮动tag如latest带来的不确定性。集中存储Helmper将所有提取出的镜像经过扫描、修复、签名后和Chart本身都推送到你控制的私有OCI仓库。这个仓库成为了你部署流水线的唯一可信源。过程可审计如果启用了Copacetic和Trivy修复漏洞的过程和扫描报告都被记录下来。这意味着你不仅存储了镜像还存储了“为何此镜像与此版本的基础镜像不同”的安全上下文。这样一来你的GitOps仓库里只需要引用这个私有仓库中由Helmper处理后的Chart地址。当Argo CD等工具同步时它拉取的是所有依赖都已内部化、且经过安全加固的确定版本彻底消除了因外部网络波动、上游镜像更新或删除导致的部署失败风险。5. 常见问题排查与实战经验分享即使工具设计得再完善在实际落地时也难免会遇到坑。下面是我在多个项目中实践Helmper后总结的一些典型问题和解决方法。5.1 认证与网络问题问题1推送镜像到私有仓库时提示“未授权”401 Unauthorized。排查首先确认docker login或等价的登录命令已成功执行并且~/.docker/config.json文件包含了目标仓库的认证信息。解决检查认证是否过期。Docker的认证token默认有效期为3小时。在长时间运行的CI/CD流水线中需要在运行Helmper前刷新认证。可以使用echo $DOCKER_CONFIG检查当前生效的配置路径。问题2拉取某些特定仓库如ECR、GCR的Chart或镜像失败。排查云厂商的容器仓库有时需要特定的认证助手credential helper。Helmper依赖Oras而Oras使用Docker的认证体系。解决确保在运行Helmper的主机上已安装并配置好对应的Docker credential helper如docker-credential-ecr-login。通常在你用AWS CLI或云SDK登录后helper会自动配置。问题3在Kubernetes Pod中运行Helmper无法访问集群内的Trivy/Buildkit服务。排查检查Pod的DNS解析和服务发现是否正常。使用nslookup trivy-service.default.svc.cluster.local命令进行测试。解决确保Service定义正确且Pod所在Namespace的NetworkPolicy允许对目标Service的访问。在配置中使用完整的Kubernetes服务DNS名称service-name.namespace.svc.cluster.local是最可靠的方式。5.2 镜像处理相关问题问题4漏洞修复Copacetic阶段耗时极长或内存占用高。排查修复漏洞本质上是调用Buildkit进行镜像构建。大型镜像如包含完整操作系统的镜像的下载、解压、打补丁、重新压缩过程非常消耗I/O和CPU资源。解决增加资源限制为运行Helmper和Buildkit的Pod配置足够的CPU和内存请求与限制。使用缓存为Buildkit配置持久化缓存如registry缓存模式可以显著加速后续对同一基础镜像的修复操作。这需要修改Buildkit的部署配置。分步执行对于大量镜像可以考虑分批运行Helmper或者先只进行扫描和搬运在低峰期再单独执行修复任务。问题5Cosign签名失败报错“私钥格式错误”或“密码错误”。排查确认私钥文件路径正确且文件内容无误。Cosign支持PKCS#8和ECDSA等格式的私钥。解决使用cosign generate-key-pair命令生成密钥对确保格式兼容。如果私钥有密码确保KeyRefPass配置正确或者通过COSIGN_PASSWORD环境变量传递。检查目标仓库是否支持OCI 1.1规范这是存储签名等Referrers API所必需的。对于旧版Distribution可能需要设置环境变量COSIGN_REPOSITORY或使用其他兼容模式。5.3 配置与执行问题问题6Helmper解析出的镜像列表与手动helm template结果不一致。排查这是最常见的问题之一。根本原因在于Helm渲染模板时的上下文不同。解决核对k8s_version确保配置中的k8s_version与你手动执行helm template时使用的--kube-version一致。核对valuesFilePath确保你通过valuesFilePath指定了所有自定义的values文件包括--set参数传递的值也应该整合到一个values文件中再指定。启用调试暂时修改配置只进行解析不执行导入import.enabled: false观察Helmper的日志输出看它解析出了哪些镜像。问题7如何处理Chart的子依赖Dependencies经验Helmper的一个强大之处在于它能自动处理子依赖。当你指定一个父Chart如prometheusHelmper会递归地拉取和分析其Chart.yaml中定义的所有dependencies并提取这些子Chart如kube-state-metrics的镜像。你无需在配置中显式列出子Chart。下表汇总了更多常见问题及速查建议问题现象可能原因排查步骤与解决方案执行失败报错“找不到Chart”1. 仓库地址错误2. 网络不通3. Chart名称或版本不存在1. 用helm repo add和helm search repo手动验证仓库和Chart。2. 检查网络连接和代理设置。3. 确认Helmper配置中的repo.url和chart.name/version完全正确。推送Chart到OCI仓库失败1. 仓库不支持OCI格式2. 认证失败3. 路径权限不足1. 确认目标仓库支持OCI如Harbor 2.0 ECR。2. 用helm registry login和helm push手动测试。3. 确保用户有向该仓库路径推送的权限。Trivy扫描报告为空或连接失败1. Trivy服务未就绪2. gRPC地址或端口错误3. 镜像为scratch或Distroless1. 检查Trivy Deployment Pod状态和日志。2. 在Helmper Pod内用telnet或curl测试连通性。3. 某些极简镜像可能没有包管理器Trivy无法扫描。修复后镜像tag包含哈希串这是Copacetic的正常行为。它为修复后的镜像生成包含基础镜像哈希的新tag以确保唯一性。无需处理。Helmper会记录这个新tag并推送到仓库。这是保证可复现性的一部分。配置文件复杂难以维护当需要管理数十个Chart时单个YAML文件会变得臃肿。将helmper.yaml拆分为基础配置和Chart列表配置。使用脚本或配置管理工具如Jsonnet, Kustomize动态生成最终配置。6. 集成到CI/CD与GitOps工作流Helmper的真正威力在于与现有自动化流程的结合。下面是一个基于GitLab CI和Argo CD的集成方案设想。阶段一镜像同步与加固流水线GitLab CI触发定时任务如每天凌晨或监测到上游Chart仓库更新时触发。构建环境启动一个包含Helmper二进制、Docker CLI用于登录、Cosign的Runner Pod。该Pod需要能访问集群内的Trivy和Buildkit服务。执行同步从Git仓库获取定义好的helmper.yaml配置。执行helm helmper -f helmper.yaml。此步骤会完成拉取、扫描、修复、签名、推送全流程。提交变更如果配置中Chart版本有更新或者生成了新的修复后镜像流水线可以自动更新helmper.yaml中的版本号或生成一个报告提交回Git仓库触发下一阶段。阶段二GitOps部署Argo CD应用源你的Git仓库中存放着Kubernetes应用声明其中Helm Chart的source指向Helmper处理后的私有OCI仓库如oci://secure-registry.internal.company.com/prometheus。自动同步当阶段一的流水线将新Chart和镜像推送到私有仓库后Argo CD检测到仓库中有新版本会自动同步到目标Kubernetes集群。安全合规整个流程中部署所使用的所有制品都来自内部可控的、经过安全扫描和签名的源完美满足了合规审计的要求。这种模式将“供应链安全”和“部署”两个关注点清晰地分离开。开发团队只需关心Argo CD中的应用配置而平台或安全团队则通过维护helmper.yaml和对应的流水线来保证供应链的安全与稳定。在我个人的实践中引入Helmper后最大的感受是“确定性”和“可追溯性”得到了极大提升。以往需要多个团队协作、涉及多个手工步骤的镜像入仓和安全加固流程现在变成了一个由配置文件驱动的、可自动重复执行的任务。虽然初期在配置和调试上会花些时间尤其是打通Trivy和Buildkit的服务连接但一旦跑通后续的维护成本非常低。对于任何需要严格管理第三方Chart和镜像的企业环境尤其是那些有隔离网络需求的场景Helmper提供了一个非常优雅且强大的解决方案。它的设计哲学——复用成熟组件、声明式配置、无守护进程依赖——都让它显得格外务实和高效。

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