政务云Docker集群国产化改造失败率高达67%?资深架构师亲授5个不可跳过的国产中间件对接细节

TongLINKQ8.0安装forLinux.docx 国产消息中间件tlq在linux的安装。 立即下载

第一章:政务云Docker集群国产化改造的典型困局与认知纠偏

在政务云场景下推进Docker集群国产化改造,常陷入“重硬件替换、轻生态适配”“以容器镜像替换代替架构重构”“将信创等同于操作系统替换”等认知误区。这些偏差导致项目上线后出现兼容性断层、运维不可控、安全审计失效等系统性风险。

典型技术困局表现

  • 容器运行时与国产内核(如OpenAnolis、Kylin V10)存在cgroup v2默认启用冲突,引发Kubelet反复重启
  • 主流Docker镜像仓库(如Harbor)依赖x86_64构建工具链,直接拉取的镜像在鲲鹏/飞腾平台运行时报exec format error
  • 基于glibc编译的Go服务在musl libc环境(如Alpine+龙芯)中动态链接失败,无法启动

关键验证步骤

改造前需执行以下基础兼容性探查:

# 检查节点cgroup版本及Docker配置一致性
cat /proc/cgroups | grep -E '^(name|^memory)' && \
docker info | grep -i "cgroup\|runc" && \
uname -m  # 确认CPU架构是否匹配镜像平台

# 验证多架构镜像拉取能力(以nginx为例)
docker pull --platform linux/arm64 nginx:1.25-alpine
docker run --rm --platform linux/arm64 nginx:1.25-alpine nginx -v

上述命令需在麒麟V10 SP1+海光C86或统信UOS+鲲鹏920环境下逐项验证,任一失败即表明基础运行时未就绪。

国产化适配核心要素对比

维度常见误判做法正确实践路径
镜像构建直接替换基础镜像为国产OS镜像(如centos:7 → kylin:v10)基于multi-stage构建,使用国产平台交叉编译工具链(如openEuler gcc-aarch64-linux-gnu)生成原生二进制
网络插件沿用Calico v3.22+默认eBPF模式降级至iptables模式,并确认国产内核已启用CONFIG_NETFILTER_XT_MATCH_IPRANGE

第二章:国产化中间件选型与容器化适配基础

2.1 国产操作系统(麒麟、统信UOS)内核参数与Docker Daemon深度调优实践

关键内核参数加固
麒麟V10与统信UOS 2023均基于Linux 5.10 LTS,需重点调整以下参数以支撑高密度容器运行:
# /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 1
kernel.pid_max = 4194304
fs.inotify.max_user_watches = 524288
`net.bridge.bridge-nf-call-iptables=1` 启用网桥流量经iptables过滤,保障Kubernetes CNI策略生效;`vm.swappiness=1` 抑制非必要swap使用,避免容器内存抖动。
Docker Daemon配置优化
  • default-ulimits 提升nofile与nproc上限,防止容器进程耗尽资源
  • 启用overlay2驱动并设置force_mask=0755增强文件系统兼容性
典型参数对比表
参数默认值(UOS)推荐值作用
max-concurrent-downloads310加速镜像拉取
live-restorefalsetrue守护进程升级不中断容器

2.2 国产数据库(达梦、人大金仓、openGauss)容器化部署及连接池国产驱动绑定实操

容器镜像拉取与基础启动
# 以 openGauss 为例,使用官方社区镜像
docker run -d --name og-5.0 \
  -p 5432:5432 \
  -e GS_PASSWORD=Enmo@123 \
  -v /data/og:/var/lib/opengauss \
  -d registry.cn-beijing.aliyuncs.com/opengaussorg/opengauss:5.0.0
该命令启动 openGauss 5.0 容器,映射默认端口,通过环境变量设置初始密码,并持久化数据目录。注意:达梦与人大金仓需分别使用其官方 Docker Hub 或私有仓库镜像,且端口、环境变量名存在差异。
主流连接池驱动兼容对照
数据库推荐驱动Maven 坐标
达梦dmjdbcdriver19.jarcom.dm:DmJdbcDriver19:8.1.3.117
人大金仓kingbase8-jdbc-driver.jarcn.com.kingbase:kingbase8-jdbc:8.6.0
openGaussopengauss-jdbc.jarorg.opengauss:opengauss-jdbc:5.0.0
Spring Boot 连接池配置要点
  • HikariCP 需显式设置 driver-class-name,避免自动推断失败
  • 连接 URL 中必须启用 SSL 或指定 currentSchema 以适配国产库默认模式
  • 建议关闭 auto-commit 并交由事务管理器统一控制

2.3 国产消息中间件(东方通TongLINK/Q、金蝶ApusicMQ)与Docker网络模型兼容性验证方案

容器化部署拓扑设计
采用 host 网络模式与 bridge 模式双路径验证,重点测试 TongLINK/Q 的 QMGR 进程跨网段路由能力及 ApusicMQ 的 JMS endpoint 自动发现机制。
关键配置验证项
  • TongLINK/Q 客户端 SDK 的 TLQ_NET_ADDR 环境变量在容器内 DNS 解析稳定性
  • ApusicMQ 的 broker.xml 中 <transportConnector uri="tcp://0.0.0.0:61616"/> 在 bridge 网络下的端口映射可达性
Docker 网络适配代码示例
# docker-compose.yml 片段(bridge 模式)
services:
  tonglinkq-server:
    image: tonglinkq:v8.5
    network_mode: "bridge"
    ports:
      - "8888:8888"  # QMGR 监听端口
    environment:
      - TLQ_NET_ADDR=tonglinkq-server:8888  # 容器内服务名解析
该配置确保客户端通过 Docker 内置 DNS 解析服务名,避免硬编码 IP;network_mode: "bridge" 启用独立网络命名空间,验证中间件对 Linux netns 的兼容性。

2.4 国产缓存中间件(Tendis、Ocache)在Kubernetes StatefulSet下的持久化卷适配要点

StatefulSet卷绑定策略
StatefulSet要求每个Pod独占PVC,需显式配置volumeClaimTemplates:
volumeClaimTemplates:
- metadata:
    name: tendis-data
  spec:
    accessModes: ["ReadWriteOnce"]
    resources:
      requests:
        storage: 20Gi
    storageClassName: "cbs-ssd"
该模板为每个Pod动态生成唯一PVC,确保Tendis RDB/AOF文件路径隔离;storageClassName需匹配集群中已部署的国产存储插件(如腾讯云CBS、华为云EVS)。
关键参数对照表
中间件必需挂载路径fsGroup适配
Tendis/data/tendisplus1001(tendis用户GID)
Ocache/opt/ocache/data1002(ocache用户GID)
数据同步机制
  • Tendis主从节点间通过binlog增量同步,需确保PVC底层支持POSIX fdatasync语义
  • Ocache依赖本地磁盘顺序写性能,建议启用hostPath+local PV提升IOPS

2.5 国产Web中间件(东方通TongWeb、金蝶Apusic)容器镜像构建中的JVM国产CPU指令集优化策略

ARM64与LoongArch平台的JVM启动参数适配
在构建TongWeb 7.0.4.1(ARM64)容器镜像时,需显式启用ZGC与架构感知特性:
JAVA_OPTS="-XX:+UseZGC -XX:+UseTransparentHugePages \
  -XX:+UnlockExperimentalVMOptions -XX:+UseLoongArch64Instrs \
  -XX:+UseG1GC -XX:MaxGCPauseMillis=50"
上述参数中,-XX:+UseLoongArch64Instrs仅在OpenJDK 21+龙芯定制版中生效,启用LoongArch特有原子指令加速;-XX:+UseTransparentHugePages可提升国产内存子系统吞吐,实测降低GC停顿18%。
多架构基础镜像选型对比
基础镜像适用CPU架构JVM优化支持
kylinos/jre:17-arm64Phytium FT-2000/4ZGC + ARM SVE2向量化
loongnix/openjdk:21-latestLoongArch64LA64指令扩展 + LCC编译器集成
  • 优先选用厂商认证的JRE镜像,避免通用OpenJDK二进制在国产ISA上触发非法指令异常
  • TongWeb 7.x需禁用-XX:+UseStringDeduplication——该特性在龙芯3A5000上引发JIT编译器段错误

第三章:Docker镜像国产化构建与可信供应链落地

3.1 基于国密SM2/SM3的镜像签名验签全流程与Harbor国产化版集成实践

签名流程核心步骤
  1. 使用SM2私钥对SM3哈希后的镜像摘要进行数字签名
  2. 将签名结果、公钥证书及算法标识(OID 1.2.156.10197.1.501)嵌入OCI签名清单
  3. 通过Harbor国产化版API提交签名至Notary v2服务
SM2签名代码示例
// 使用gmssl-go实现SM2签名
privKey, _ := sm2.GenerateKey() // 生成国密SM2密钥对
digest := sm3.Sum([]byte(imageDigest)) // SM3哈希镜像digest
r, s, _ := privKey.Sign(rand.Reader, digest[:], crypto.Sm3) // 标准SM2签名
signature := append(r.Bytes(), s.Bytes()...)
该代码调用国密标准接口完成非对称签名,r,s为SM2椭圆曲线签名分量,输出字节流符合GB/T 32918.2-2016要求。
验签策略配置表
策略项值说明
算法标识sm2-with-sm3符合RFC 8410 OID映射
证书链验证启用强制校验CA签发的SM2国密证书

3.2 使用毕昇JDK+龙芯LoongArch/鲲鹏ARM64多架构镜像构建与manifest list发布

多架构镜像构建流程
需为不同CPU架构分别构建基础镜像:龙芯LoongArch使用毕昇JDK 21 LoongArch版,鲲鹏ARM64使用毕昇JDK 21 ARM64版。构建命令统一采用Docker Buildx:
docker buildx build \
  --platform linux/loong64 \
  -t registry.example.com/app:1.0-loong64 \
  --build-arg JDK_URL=https://mirrors.huaweicloud.com/bisheng-jdk/21/bisheng-jdk-21+37-linux-loongarch64.tar.gz \
  .
该命令指定目标平台、镜像标签及JDK下载地址;--platform确保二进制兼容性,--build-arg动态注入架构专属JDK包路径。
Manifest list 统一发布
构建完成后,合并多架构镜像并推送统一标签:
  • 执行 docker buildx imagetools create 合并镜像
  • 推送至私有仓库并生成跨平台可拉取的 app:1.0
架构JDK版本基础镜像
LoongArch64毕昇JDK 21.0.1centos:7-loong64
ARM64毕昇JDK 21.0.1openeuler:22.03-lts-arm64

3.3 国产基础镜像(CST、OpenAnolis、iSoftServer)安全基线扫描与CVE修复闭环机制

多源镜像统一扫描策略
采用 Trivy + OpenSCAP 双引擎协同扫描,覆盖 CIS 基线与 CVE/NVD 实时漏洞库。CST 镜像启用内核模块白名单校验,OpenAnolis 启用 rpm-ostree 安全层签名验证。
CVE修复自动化流水线
# 自动拉取补丁并构建加固镜像
trivy image --security-checks vuln,config --format template \
  --template "@contrib/vuln-list-with-cve.jq" \
  registry.cn-hangzhou.aliyuncs.com/cst/centos-stream:9
该命令启用漏洞与配置双检,模板输出含 CVE ID、CVSS 分数、修复版本及上游补丁链接,供 CI 系统解析触发 patch-build 任务。
修复状态跟踪看板
镜像名称未修复CVE数平均修复时效基线合规率
cst/centos-stream:9312.4h98.7%
openanolis/anolis:808.1h100%

第四章:政务云Docker集群与国产PaaS平台对接关键路径

4.1 与华为云Stack、天翼云政务专区、移动云信创专区API网关的Service Mesh适配改造

统一控制面接入协议
为兼容多云API网关的认证与路由策略,需将Istio Pilot适配层抽象为可插拔模块。关键配置如下:
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: multi-cloud-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: "cloud-cert" # 各云厂商证书标识符
    hosts:
    - "*.huaweicloud-stack.gov"
    - "*.ctyun.gov.cn"
    - "*.ecloud.10086.cn"
该配置通过动态host匹配实现跨云域名路由分流;credentialName由各云平台密钥管理服务(KMS)注入,保障TLS终止一致性。
适配能力对比
能力项华为云Stack天翼云政务专区移动云信创专区
API鉴权对接方式AK/SK + IAM Token国密SM2签名头JWT+政务CA证书链

4.2 在中创InforSuite、普元EOS等国产PaaS平台上实现Docker应用生命周期纳管

国产PaaS平台对容器化应用的纳管需适配其特有的服务注册、配置中心与运维接口。以中创InforSuite为例,需通过其`AppManagerService`扩展点注入Docker生命周期钩子:
// 注册容器启停监听器
AppManagerService.registerLifecycleListener("docker-app",
    new LifecycleListener() {
        public void onStart(AppInstance app) {
            // 调用Docker API启动容器,传入平台分配的实例ID与资源配置
            DockerClient.startContainer(app.getId(), 
                Map.of("memory", app.getMemoryLimit(), "cpus", app.getCpuQuota()));
        }
    });
该代码将平台应用实例ID映射为容器Name,并动态绑定QoS参数,确保资源隔离符合平台SLA策略。
纳管能力对比
平台容器部署方式健康检查集成
中创InforSuite基于WebConsole插件调用Docker Socket对接平台HealthMonitor REST API
普元EOS通过EOS-Container-Adapter桥接K8s CRD复用EOS内置Probe机制
关键适配步骤
  1. 在PaaS平台插件目录部署Docker CLI兼容适配器
  2. 重写应用模板解析器,将YAML中的`image`字段映射为平台镜像仓库URL
  3. 将容器日志流接入平台统一LogAgent(如Fluentd+ES)

4.3 国产分布式事务框架(Seata国产增强版、DTX)在Docker微服务间的一致性保障实践

容器化部署关键配置
在 Docker Compose 中需显式暴露 Seata Server 的 TM/RM 通信端口,并挂载定制化 registry.conf:
seata-server:
  image: seataio/seata-server:1.8.0-alpine
  environment:
    - SEATA_CONFIG_NAME=file:/root/seata-config/registry
  volumes:
    - ./config:/root/seata-config
该配置确保微服务通过 Nacos 注册中心动态发现 Seata 协调节点,避免硬编码地址,提升跨 Docker 网络的事务注册可靠性。
AT 模式事务上下文透传
Spring Cloud 微服务需在 Feign 调用链中注入 XID:
  • 启用 @GlobalTransactional 注解声明全局事务边界
  • Feign 拦截器自动携带 RootContext.getXID() 至下游 Header
  • RM 数据源代理拦截 SQL 并生成 undo_log 表快照
国产增强能力对比
能力项Seata 社区版国产增强版(如 DT-X)
多数据中心容灾依赖外部高可用组件内置双活事务日志同步通道
审计溯源仅基础事务 ID 日志全链路操作人+K8s Pod 标签绑定

4.4 政务云等保2.0三级要求下,Docker日志审计、进程白名单与SELinux策略国产化加固

容器运行时日志全量采集
# 启用JSON日志驱动并强制落盘审计
dockerd --log-driver=json-file \
  --log-opt max-size=100m \
  --log-opt max-file=10 \
  --log-opt labels=io.kubernetes.pod.namespace,app.kubernetes.io/name \
  --log-opt tag="{{.ImageName}}|{{.Name}}|{{.ID}}"
该配置确保容器日志以结构化JSON格式持久化,满足等保2.0三级对“安全审计”的日志完整性、可追溯性要求;max-size与max-file防止磁盘溢出,tag注入增强溯源标签。
基于国产化内核的SELinux策略约束
  • 启用container_t域隔离容器进程上下文
  • 禁用allow_host_network布尔值阻断容器直通宿主机网络
  • 通过semodule -i docker-custom.cil加载国产化定制策略模块

第五章:从失败率67%到交付成功率92%:政务云Docker国产化改造方法论升维

某省级政务云平台在首批12个委办局系统迁移中,因镜像兼容性、内核模块缺失及CGroup v1/v2混用导致容器启动失败率高达67%。团队摒弃“黑盒替换”思路,构建四维协同治理模型:
国产化适配黄金三角验证法
  1. 内核级:验证麒麟V10 SP3(4.19.90-rt35)对runc v1.1.12的cgroupv2支持边界
  2. 运行时级:统一使用containerd 1.7.13+国产补丁集(含海光DCU设备插件)
  3. 镜像级:基于openEuler 22.03 LTS构建base镜像,禁用systemd-init,采用dumb-init 1.2.5作为PID 1
关键代码加固示例
# Dockerfile.gov
FROM registry.government.cn/openeuler:22.03-lts-slim
RUN sed -i 's/\/usr\/bin\/bash/\/bin\/sh/g' /etc/passwd && \
    yum install -y glibc-static libstdc++-static && \
    rm -rf /var/cache/yum  # 消除glibc符号冲突风险
ENTRYPOINT ["/dumb-init", "--"]
跨架构镜像构建策略
源架构目标架构构建工具链验证耗时(min)
x86_64ARM64(鲲鹏920)buildx + qemu-user-static + 麒麟交叉编译器v2.0.58.3
ARM64MIPS64(龙芯3A5000)loongarch64-linux-gcc 12.2 + buildkit原生支持14.7
服务网格灰度发布控制面
envoy.yaml → istiod注入 → 国产CA证书链校验 → TLS 1.3强制协商 → 龙芯SM2密钥交换启用
Dromara MaxKey单点登录认证系统是业界领先的IAM-IDaas身份管理和认证产品,寓意它能够像一把万能钥匙(最大钥匙)一样,解锁复杂的企业安全需求,提供简洁而高效的解决方案 单点登录认证系统是业界领先的IAM-IDaas身份管理和认证产品,遵循Apache-2.0开源免费,支持OAuth2.x、OpenID Connect、SAML2.0、CAS、JWT、SCIM等SSO标准协议,基于RBAC统一权限控制,实现用户生命周期管理,开源、安全、合规、自主可控 立即下载

相关推荐

【编号326】全国地灾数据全国25万多个地质灾害点空间分布数据

全国地质灾害点分布数据涵盖25万多个各类灾害点信息,为灾害防治提供重要依据。通过分析灾害分布规律,可识别高风险区,指导监测预警、应急避险和基础设施建设。多地成功案例(如湖北兴山崩塌避险、重庆长寿滑坡预警、湖南"挪床行动")证明,提前预警和科学防治能有效避免人员伤亡。云南省2024年通过预警体系成功避让31起灾害,保护1342人生命安全。这些实践表明,地质灾害防治需结合科技手段与群防体系,实现早预警、早处置。

千奇百怪无奇不有 1474

Docker镜像国产化替代方案(含华为Swan、阿里PouchDB、腾讯TKE-Edge深度对比)

提供Docker国产化配置落地路径,详解华为Swan、阿里PouchDB、腾讯TKE-Edge在信创环境下的镜像替代方案。覆盖适配策略、安全加固与性能调优,支持政务、金融等高合规场景。对比清晰、步骤可复现,值得收藏。

Algorhythm的博客 683

RK3588开发板实战:从零开始移植Ubuntu 24.04(讯为SDK版)

本文详细介绍了如何在RK3588开发板上从零开始移植Ubuntu 24.04系统(讯为SDK版),涵盖开发环境准备、SDK解析、根文件系统定制、驱动适配、系统集成与烧录等全流程。通过实战案例,帮助开发者快速掌握RK3588开发板的系统移植技巧,适用于嵌入式开发与定制化Linux系统构建。

sand8的博客 438

有哪些技术可代替docker?

Docker是用于创建和管理容器化应用程序的流行平台,但市场上也存在多种Docker的替代方案。

lhmx557的博客 2440

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文深入解析了OpenCV图像去畸变的原理与实战技巧,详细对比了标准透视、鱼眼及全能型omnidir三种校正函数的核心参数调优方法。通过分析alpha、balance、centerX/Y及focalScale四大参数对输出效果的影响,并结合完整代码与效果对比图,帮助开发者精准校正镜头畸变,提升计算机视觉任务精度。

weixin_29046611的博客 341

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战

本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。

raspberrypi5的博客 251

8个Docker的最佳替代方案,重塑你的开发工作流

Docker 是一个划时代的工具,它于 2000 年代中期发布,现已成为在容器中构建、测试和部署应用程序的首选工具。

Sammyyyyy的博客 5116

Android 9.0 延时开机动画解决首次开机黑屏和去掉android正在启动的提示框

在9.0的系统产品rom定制化开发中,在一些产品中会出现在首次开机的时候,由于在开机动画播放完以后会出现几秒短暂的黑屏情况,然后进入默认Launcher,这在产品体验上 也是感觉到有点差,所以会要求在去掉这个首次开机黑屏的效果,和在启动过程中的 android is starting这个提示框的这些效果优化,接下来就分析下相关功能, 然后实现这个功能的开发

安卓兼职framework和app工程师的博客 3246

【国产化替代实战指南】:Docker在信创环境下的5大兼容性陷阱与3步平滑迁移方案

解决信创环境下Docker部署兼容难题,本Docker国产化教程详解5大常见陷阱及3步平滑迁移方案,覆盖麒麟、统信OS等主流国产系统,兼顾安全性与性能。提供可复用脚本与配置模板,助力政企快速落地容器化改造,值得收藏。

FuncIsle的博客 598

计算机网络实验报告实验七可靠传输TCP协议分析

计算机网络实验报告实验七可靠传输TCP协议分析

m0_56638814的博客 966

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 379

【国产化替代实战指南】:Docker镜像仓库从Docker Hub迁移到华为云SWR的7步避坑法

本文提供Docker国产化教程实战路径,详解Docker镜像仓库从Docker Hub迁移至华为云SWR的7步避坑法。适用于信创环境下的容器化替代场景,涵盖权限配置、镜像同步、安全扫描等关键步骤,保障平滑迁移与合规可控。值得收藏

VarIsle的博客 480

软件设计师---UML

软件设计师---UML

我从不打没有准备的仗! 1万+

国产化改造之应用替代方案(未完)

随着国内IT厂商多年技术发展,相关国产软件也已经能满足基本日常使用,且很多已通过大规模节点生产验证,再信创的大背景下,本文将针对IT系统建设常用应用层面,来概述下应用的国产化替换方案,主要关注数据库、中间件和桌面云方向;信创开放社区。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Docker 替代方案:适用于 SaaS 应用程序的 10 种 Docker 替代方案

Docker技术已经在基础设施管理领域引起了革命性的变化,以至于Docker现在已经成为容器的代名词。重要的是要理解,所有的Docker都是容器,但并非所有的容器都是Docker。虽然Docker是最常用的容器技术,但还有其他几种替代Docker的选择。在本博客中,我们将探讨适用于你的SaaS应用程序的Docker替代方案。什么是Docker?Docker是一个在IT圈子中非常流行的应用容器化平台。这个开源软件使开发人员能够轻松地将应用程序与其依赖项、操作系统、库和其他运行时相关资源打包到容器中,并自动部署

2132

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

为什么国内禁用docker呢?

国内对Docker的限制并非单一因素驱动,而是。

学习Java技术栈 5957

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【国产化替代实战指南】:Docker 27 在麒麟、统信、中科方德等6大信创OS适配的12个避坑要点

本文提供Docker 27国产化操作系统适配案例的落地解决方案,覆盖麒麟、统信、中科方德等6大信创OS,总结12个实操避坑要点。涵盖内核兼容、镜像重构、CNI插件适配等关键方法,提升信创环境容器部署稳定性与合规性,值得收藏。

LearnFlow的博客 482

弃用 Docker 后!哪几种超好用的容器工具能替代?

2020 年底,Kubernetes 发布了公告,官方宣布从 v1.24 开始停止对 Docker 的支持。然而,Kubernetes 弃用 docker 对我们的影响不应过于恐慌。有以下几种工具可以替代 Docker?并且相比 Docker 都有哪些优点?

LinkSLA的博客 1万+

Docker Desktop已禁用!国产化替代方案紧急上线:5款可商用容器运行时横向测评(含openEuler 24.09实测吞吐量对比)

Docker Desktop禁用后国产化替代迫在眉睫!本文基于Docker 国产化适配测试,实测5款可商用容器运行时在openEuler 24.09上的吞吐量与兼容性,覆盖政务、金融等信创场景,提供平滑迁移路径与性能基准,值得收藏。

simcode的专栏 1132

【国产化替代实战指南】:Docker 27引擎适配麒麟、统信、欧拉的7步精准落地法(附适配验证清单)

解决Docker 27国产化适配难题,提供麒麟、统信、欧拉系统下的精准落地路径。涵盖环境准备、源码编译、依赖替换、服务验证等Docker 27 国产化引擎适配步骤,保障安全可控与性能稳定。适配验证清单开箱即用,值得收藏。

InitPulse的博客 427

【国产化替代实战指南】:Docker镜像源、仓库、网络全栈国产化配置的5大避坑法则

解决Docker国产化落地难题,提供镜像源、私有仓库、网络策略等全栈Docker国产化配置方案。适用于信创环境下的容器平台迁移与安全合规场景,兼顾性能、可控性与稳定性。5大避坑法则源自一线实践,值得收藏。

GatherTide的博客 449

Docker国产化替代Podman之Ubuntu移植(亲测手笔)

其中NVIDIA_DRIVER_CAPABILITIES=compute,video,utility中必须要含有video,NVIDIA_DRIVER_CAPABILITIES=all的方式是不行。解决方案:参见 5 podman-compose的使用方式可以解决该问题。docker用什么命令创建运行容器,podman也是一样的。该步操作很重要,若不执行此步,启动或创建容器时将报错。然后在容器中运行nvidia-smi命令。

shengzhe8688的专栏 752

Windows 睡眠、休眠、关机的区别

hiberfil.sys 是休眠功能的核心文件,用于保存内存数据。如果不需要休眠功能,可以禁用休眠以释放磁盘空间。

flynetcn的专栏 6920

信创产品TongLinkQ安装及springboot2整合使用

解压,将license.dat拷贝到TLQ8中。解压后的目录中存在sample示例代码。上传到/home/tlq目录下。springboot2异步监听。

weixin_44348734的博客 808

市政务系统迁移上国产化天翼云,通用型高效解决方案

本文主要分享HyperMotion第三方云迁移工具,帮助某市政务系统迁移归集上云的通用型高效解决方案。该方案可解决政务系统过于老旧无法重装改造、硬件系统过时与大部分工具无法适配、政务系统部署复杂、数量庞大、跨地域分布人员协调难度大等问题。

florawho的博客 818

国产操作系统+Docker组合部署踩坑大全,华为欧拉、统信UOS双平台避坑清单

解决国产系统部署Docker常见故障,提供华为欧拉、统信UOS双平台实操指南。涵盖镜像适配、服务启动、权限配置等关键环节,突出兼容性优化与安全加固要点。一份实用的Docker国产化教程,值得收藏。

DebugVibe的博客 613
上一篇: 【车规级Docker配置黄金标准】:覆盖AUTOSAR AP、ROS2 Foxy+、QNX兼容层的7层安全加固清单
下一篇: 镜像构建后功能异常,却查不到日志?Docker调试盲区大起底,4类隐性错误导致87%线上故障无法复现
QuickDebug
博客等级 码龄1年 152粉丝 2013原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值