当前位置: 首页 > article >正文

云原生环境中的存储管理:从PV到StorageClass的全面解析

云原生环境中的存储管理从PV到StorageClass的全面解析 硬核开场各位技术大佬们今天咱们来聊聊云原生环境中的存储管理。别以为存储就是简单的挂载磁盘在云原生环境中存储管理涉及PV、PVC、StorageClass、StatefulSet等多个组件复杂得很今天susu就带你们深入解析云原生环境中的存储管理最佳实践从存储类型选择到备份策略从StatefulSet部署到存储性能优化全给你整明白 核心内容1. 云原生存储的挑战动态性容器的快速创建和销毁持久化需要数据在容器重启后保持可扩展性存储需要随应用规模扩展性能满足不同应用的性能需求可靠性确保数据安全和高可用2. 存储类型2.1 临时存储apiVersion: v1 kind: Pod metadata: name: temp-storage-pod spec: containers: - name: app image: nginx volumeMounts: - name: temp-volume mountPath: /tmp volumes: - name: temp-volume emptyDir: {}2.2 持久卷PV和持久卷声明PVC# 定义PV apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: standard hostPath: path: /mnt/data --- # 定义PVC apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: standard --- # 使用PVC apiVersion: v1 kind: Pod metadata: name: pv-pod spec: containers: - name: app image: nginx volumeMounts: - name: persistent-storage mountPath: /usr/share/nginx/html volumes: - name: persistent-storage persistentVolumeClaim: claimName: my-pvc2.3 存储类StorageClassapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: kubernetes.io/aws-ebs parameters: type: gp3 iopsPerGB: 10000 encrypted: true reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: slow provisioner: kubernetes.io/aws-ebs parameters: type: gp2 encrypted: true reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: Immediate3. 云提供商存储3.1 AWS EBSapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: aws-ebs-gp3 defaultClass: true provisioner: kubernetes.io/aws-ebs parameters: type: gp3 iopsPerGB: 10000 encrypted: true reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer3.2 GCP Persistent DiskapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: gcp-pd-ssd provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd replication-type: none reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer3.3 Azure DiskapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azure-disk-premium provisioner: kubernetes.io/azure-disk parameters: storageaccounttype: Premium_LRS kind: Managed reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer4. StatefulSet与存储4.1 部署StatefulSetapiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-statefulset namespace: default spec: serviceName: mysql replicas: 3 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:8.0 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: password ports: - containerPort: 3306 volumeMounts: - name: mysql-data mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-data spec: accessModes: [ReadWriteOnce] storageClassName: fast resources: requests: storage: 20Gi4.2 服务发现apiVersion: v1 kind: Service metadata: name: mysql namespace: default spec: selector: app: mysql ports: - port: 3306 targetPort: 3306 clusterIP: None5. 存储性能优化5.1 配置存储QoSapiVersion: v1 kind: PersistentVolumeClaim metadata: name: high-performance-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: fast volumeMode: Filesystem5.2 使用本地存储apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: PersistentVolume metadata: name: local-pv spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /mnt/disks/ssd1 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node15.3 存储分片apiVersion: apps/v1 kind: StatefulSet metadata: name: sharded-app namespace: default spec: serviceName: sharded-app replicas: 4 selector: matchLabels: app: sharded-app template: metadata: labels: app: sharded-app spec: containers: - name: app image: my-app:latest volumeMounts: - name: data mountPath: /data volumeClaimTemplates: - metadata: name: data spec: accessModes: [ReadWriteOnce] storageClassName: fast resources: requests: storage: 100Gi6. 存储备份与恢复6.1 使用Velero# 安装Velero wget https://github.com/vmware-tanzu/velero/releases/download/v1.9.0/velero-v1.9.0-linux-amd64.tar.gz tar -xzf velero-v1.9.0-linux-amd64.tar.gz mv velero-v1.9.0-linux-amd64/velero /usr/local/bin/ # 配置Velero velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.5.0 \ --bucket velero-backups \ --secret-file ./credentials-velero \ --backup-location-config regionus-east-1 \ --snapshot-location-config regionus-east-1 # 创建备份 velero backup create mysql-backup --include-namespaces default # 查看备份 velero backup get # 恢复备份 velero restore create --from-backup mysql-backup6.2 数据库备份# 创建备份脚本 cat EOF backup-mysql.sh #!/bin/bash POD_NAME$(kubectl get pods -l appmysql -o jsonpath{.items[0].metadata.name}) kubectl exec $POD_NAME -- mysqldump -u root -p$MYSQL_ROOT_PASSWORD --all-databases mysql-backup-$(date %Y%m%d).sql EOF chmod x backup-mysql.sh # 执行备份 ./backup-mysql.sh # 恢复备份 POD_NAME$(kubectl get pods -l appmysql -o jsonpath{.items[0].metadata.name}) kubectl cp mysql-backup-20230401.sql $POD_NAME:/tmp/ kubectl exec $POD_NAME -- mysql -u root -p$MYSQL_ROOT_PASSWORD /tmp/mysql-backup-20230401.sql7. 存储安全7.1 加密存储apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: encrypted-storage provisioner: kubernetes.io/aws-ebs parameters: type: gp3 encrypted: true kmsKeyId: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer7.2 访问控制apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: storage-admin namespace: default rules: - apiGroups: [storage.k8s.io] resources: [storageclasses, persistentvolumes, persistentvolumeclaims] verbs: [get, list, create, update, delete] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: storage-admin-binding namespace: default subjects: - kind: User name: admin apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: storage-admin apiGroup: rbac.authorization.k8s.io8. 存储监控8.1 Prometheus监控apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: kubernetes-storage namespace: monitoring spec: selector: matchLabels: k8s-app: kubelet endpoints: - port: http-metrics interval: 15s path: /metrics honorLabels: true metricRelabelings: - sourceLabels: [__name__] regex: kubelet_volume_stats_.* action: keep8.2 Grafana Dashboard{ annotations: { list: [ { builtIn: 1, datasource: -- Grafana --, enable: true, hide: true, iconColor: rgba(0, 211, 255, 1), name: Annotations Alerts, type: dashboard } ] }, editable: true, gnetId: null, graphTooltip: 0, id: 1, links: [], panels: [ { aliasColors: {}, bars: false, dashLength: 10, dashes: false, datasource: Prometheus, fieldConfig: { defaults: { custom: {} }, overrides: [] }, fill: 1, fillGradient: 0, gridPos: { h: 8, w: 12, x: 0, y: 0 }, hiddenSeries: false, id: 2, legend: { avg: false, current: false, max: false, min: false, show: true, total: false, values: false }, lines: true, linewidth: 1, nullPointMode: null, options: { alertThreshold: true }, percentage: false, pluginVersion: 7.3.6, pointradius: 2, points: false, renderer: flot, seriesOverrides: [], spaceLength: 10, stack: false, steppedLine: false, targets: [ { expr: sum(kubelet_volume_stats_available_bytes{namespace\default\}) by (persistentvolumeclaim), interval: , legendFormat: {{persistentvolumeclaim}}, refId: A } ], thresholds: [], timeFrom: null, timeRegions: [], timeShift: null, title: 存储可用空间, tooltip: { shared: true, sort: 0, value_type: individual }, type: graph, xaxis: { buckets: null, mode: time, name: null, show: true, values: [] }, yaxes: [ { format: bytes, label: null, logBase: 1, max: null, min: 0, show: true }, { format: short, label: null, logBase: 1, max: null, min: null, show: true } ], yaxis: { align: false, alignLevel: null } } ], refresh: 5s, schemaVersion: 26, style: dark, tags: [], templating: { list: [] }, time: { from: now-6h, to: now }, timepicker: {}, timezone: , title: 存储监控, uid: storage-monitoring, version: 1 }9. 高级存储配置9.1 本地持久卷apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: PersistentVolume metadata: name: local-pv-1 spec: capacity: storage: 1Ti accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /mnt/disks/ssd1 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node1 --- apiVersion: v1 kind: PersistentVolume metadata: name: local-pv-2 spec: capacity: storage: 1Ti accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /mnt/disks/ssd2 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node29.2 存储快照apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-aws-vsc driver: kubernetes.io/aws-ebs deletionPolicy: Delete --- apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: mysql-snapshot spec: volumeSnapshotClassName: csi-aws-vsc source: persistentVolumeClaimName: mysql-data --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-restore spec: storageClassName: fast dataSource: name: mysql-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 20Gi9.3 存储池管理# 安装OpenEBS helm repo add openebs https://openebs.github.io/charts helm repo update helm install openebs openebs/openebs --namespace openebs --create-namespace # 验证安装 kubectl get pods -n openebs # 创建存储池 kubectl apply -f - EOF apiVersion: openebs.io/v1alpha1 kind: StoragePoolClaim metadata: name: openebs-pool namespace: openebs spec: name: openebs-pool type: hostpath poolSpec: poolType: striped hostpath: path: /mnt/openebs EOF # 创建存储类 kubectl apply -f - EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: openebs-standard provisioner: openebs.io/local parameters: storagePool: openebs-pool fsType: ext4 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer EOF10. 存储管理工具kubectlKubernetes命令行工具# 查看PV kubectl get pv # 查看PVC kubectl get pvc # 查看StorageClass kubectl get storageclassVelero备份和恢复工具# 查看备份 velero backup get # 查看恢复 velero restore get # 查看备份位置 velero backup-location getOpenEBS容器原生存储# 查看存储池 kubectl get spc -n openebs # 查看卷 kubectl get cstorvolume -n openebsRook云原生存储编排# 查看Ceph集群 kubectl get cephcluster -n rook-ceph # 查看存储池 kubectl get cephblockpool -n rook-ceph # 查看存储类 kubectl get storageclass | grep rook️ 最佳实践选择合适的存储类型根据应用需求选择存储类型数据库等有状态应用使用持久存储临时数据使用emptyDir配置文件使用ConfigMapStorageClass配置创建多个StorageClass满足不同性能需求配置合适的reclaimPolicy启用volume expansion使用WaitForFirstConsumer绑定模式StatefulSet部署使用volumeClaimTemplates自动创建PVC配置Headless Service用于服务发现合理设置副本数考虑使用StatefulSet的有序部署和删除性能优化使用本地存储提高性能配置合适的存储QoS考虑存储分片监控存储性能指标备份与恢复定期备份重要数据使用Velero进行集群级备份测试恢复流程存储备份到外部存储安全配置启用存储加密配置适当的访问控制限制存储资源使用定期审计存储配置监控与告警监控存储使用情况设置存储容量告警监控存储I/O性能建立存储健康检查自动化管理使用Helm管理存储组件实施存储配置自动化建立存储配置版本控制自动化存储备份文档和培训建立存储架构文档培训团队存储知识记录存储配置变更分享存储最佳实践持续改进定期评估存储性能优化存储配置学习和应用新的存储技术适应业务需求变化 总结云原生环境中的存储管理是应用稳定运行的重要组成部分涉及多个组件和配置。通过本文的实践你应该已经掌握了存储类型的选择和使用PV、PVC和StorageClass的配置云提供商存储的使用StatefulSet与存储的集成存储性能优化策略存储备份与恢复存储安全配置存储监控与告警高级存储配置存储管理工具的使用记住存储配置是一个持续优化的过程需要根据业务需求和应用特点不断调整。在实际生产环境中要结合具体情况选择合适的存储方案确保数据的安全和高可用。susu碎碎念存储是数据的基础一定要重视选择存储类型时要考虑性能和成本定期备份数据避免数据丢失监控存储使用情况及时扩容存储安全不能忽视要加密敏感数据文档很重要要记录存储架构和配置持续学习存储新技术保持技术先进性觉得有用点个赞再走咱们下期见

相关文章:

云原生环境中的存储管理:从PV到StorageClass的全面解析

云原生环境中的存储管理:从PV到StorageClass的全面解析 🔥 硬核开场 各位技术大佬们,今天咱们来聊聊云原生环境中的存储管理。别以为存储就是简单的挂载磁盘,在云原生环境中,存储管理涉及PV、PVC、StorageClass、State…...

【初阶数据结构】 归序而上的云阶 堆

📖 点击展开/收起 文章目录 文章目录 1.堆的概念2.堆的接口实现堆的定义2.1 堆的初始化2.2 堆的销毁2.3 获取堆顶数据2.4 堆的向下调整2.5 堆的向上调整2.6 堆的插入2.7 堆顶数据删除2.8 堆的判空 3.完整代码展示Heap.hHeap.c 4.建堆方法1.向上调整建堆2.向下调整建…...

VH6501干扰测试进阶:用CAPL脚本精准控制错误帧的‘连发’与‘间隔’(Repetitions类详解)

VH6501干扰测试进阶:用CAPL脚本精准控制错误帧的‘连发’与‘间隔’(Repetitions类详解) 在汽车电子测试领域,VH6501作为一款专业的CAN总线干扰接口,其核心价值在于能够模拟真实世界中复杂多变的通信故障场景。而真正区…...

Kubernetes网络管理:从CNI到Ingress的全面解析

Kubernetes网络管理:从CNI到Ingress的全面解析 🔥 硬核开场 各位技术大佬们,今天咱们来聊聊Kubernetes网络管理。别以为Kubernetes的网络就是简单的IP分配,实际上它涉及CNI插件、Service、Ingress、NetworkPolicy等多个组件&#…...

Qwen3.5-27B企业落地指南:电商客服/教育答疑/办公提效三大场景应用

Qwen3.5-27B企业落地指南:电商客服/教育答疑/办公提效三大场景应用 1. 企业级AI助手的新选择 在数字化转型浪潮中,企业正寻求更智能的解决方案来提升运营效率。Qwen3.5-27B作为一款视觉多模态理解模型,为企业提供了全新的AI助手选择。这款模…...

从ChatGPT的‘提示词’到图像修复:PromptIR如何用‘提示学习’教会AI看图说话并‘修图’?

PromptIR:当提示学习遇见图像修复,AI如何像ChatGPT一样"看图说话" 你是否曾经对着模糊的老照片叹气,或是被雾霾笼罩的风景照感到无奈?图像修复技术正以前所未有的速度发展,而最新突破PromptIR将自然语言处理…...

别再死记硬背公式了!手把手带你画图推导‘放苹果’问题的状态转移方程

可视化拆解动态规划:从画图到推导‘放苹果’问题的本质 在算法学习的道路上,动态规划(DP)常常是让初学者望而生畏的难关。那些看似神奇的递推公式,往往被当作黑盒魔法般死记硬背。今天,我们要彻底改变这种学…...

D14: 周复盘:人是核心,工具是杠杆

文章目录 D14: 周复盘:人是核心,工具是杠杆 🎯 本周回顾:都发生了什么? 第一周的大事记 数据不会说谎 核心复盘内容 复盘维度一:人的层面——谁在进步,谁在旁观? 复盘维度二:工具层面——哪些工具真的在产生价值? 复盘维度三:流程层面——AI 改变了什么,没改变什么…...

JiYuTrainer深度解析:极域电子教室反控制技术架构揭秘

JiYuTrainer深度解析:极域电子教室反控制技术架构揭秘 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer JiYuTrainer是一款针对极域电子教室系统的专业反控制软件&#…...

1 7.2 网卡的设置

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

实测对比:Faster-LIO vs FastLIO2,iVox到底让我的Livox Mid360快了多少?

Faster-LIO与FastLIO2性能实测:iVox如何提升Livox Mid360的SLAM效率 当Livox Mid360固态激光雷达以每秒240,000点的速度扫描环境时,传统基于ikd-tree的SLAM算法常面临计算瓶颈。去年我们团队在无人机巡检项目中就遭遇过这样的困境——FastLIO2在复杂植被…...

Claude API 注册被拒?国内开发者最全绕坑指南

作为一名在AI工具堆里摸爬滚打的国内开发者,Claude API注册那道坎,我算是结结实实摔过跟头。前阵子为了接入Claude做合同解析工具,光注册就折腾了快一周,踩过的坑能凑成一本"血泪史"。最初我抱着侥幸心理,用…...

终极指南:如何用ViGEmBus虚拟手柄驱动解决Windows游戏兼容性问题

终极指南:如何用ViGEmBus虚拟手柄驱动解决Windows游戏兼容性问题 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾为心爱的Switch手柄无法…...

马斯克五步法实战:用Notion和飞书搭建你的个人效率系统(附模板)

马斯克五步法实战:用Notion和飞书搭建你的个人效率系统(附模板) 在信息爆炸的时代,个人知识管理和团队协作效率成为职场竞争力的关键分水岭。埃隆马斯克创立的五步工作法(需求验证→流程简化→持续优化→快速迭代→全面…...

2025_NIPS_iVideoGPT: Interactive VideoGPTs are Scalable World Models

文章核心内容与创新点总结 核心内容 iVideoGPT 是一款基于自回归Transformer的可扩展世界模型,通过融合视觉观测、动作、奖励等多模态信号,实现交互式环境模拟。其核心是先在百万级人类与机器人操作轨迹上预训练,再针对下游任务(动作条件视频预测、视觉规划、基于模型的强…...

Windows 10系统精简终极指南:如何用开源工具让你的电脑快如闪电?

Windows 10系统精简终极指南:如何用开源工具让你的电脑快如闪电? 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Origina…...

AI视频字幕去除技术革命:3分钟掌握专业级硬字幕清理方案

AI视频字幕去除技术革命:3分钟掌握专业级硬字幕清理方案 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based tool …...

如何用CardEditor将桌游卡牌设计效率提升300%:新手完整指南

如何用CardEditor将桌游卡牌设计效率提升300%:新手完整指南 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca…...

麒麟V10/龙蜥arm架构二进制安装mysql8.0.36

一、安装前环境监测 在MySQL被收购后,MySQL最初的作者担心MySQL存在闭源的风险,在MySQL的分支上开发了mariadb。后来一些Linux分发版就将mariadb作为系统默认安装的数据库系统 rpm -qa |grep -i mariadb#可能显示的结果:mariadb-libs-5.5.6…...

【nanobot】 实战与二次开发:4000 行代码,一套完整的 【AI Agent】 框架

🐈 nanobot 实战与二次开发:4000 行代码,一套完整的 AI Agent 框架 🤵‍♂️ 个人主页:小李同学_LSH的主页 ✍🏻 作者简介:LLM学习者 🐋 希望大家多多支持,我们一起进步&…...

从“定比分点”到“交比不变”:用初中三角形面积公式,轻松理解射影几何的核心定理

从“定比分点”到“交比不变”:用初中三角形面积公式,轻松理解射影几何的核心定理 数学的魅力往往藏在我们最熟悉的工具里。当你第一次听说"射影几何"时,脑海中浮现的可能是复杂的坐标系和晦涩的符号——但今天,我要带你…...

CentOS系统------DBMS

逻辑梳理一、准备工作 # 切换到root或使用sudo su - 二、安装 Apache sudo yum install -y httpd sudo systemctl start httpd sudo systemctl enable httpd 三、安装 PHP 环境 sudo yum install -y php php-mysqlnd php-json php-mbstring sudo systemctl restart httpd 四、安…...

告别JIT编译卡顿:用.NET 8.0 AOT编译你的第一个独立Web API(附完整配置流程)

告别JIT编译卡顿:用.NET 8.0 AOT编译你的第一个独立Web API(附完整配置流程) 你是否经历过这样的场景:深夜上线新版本,服务器刚启动就被用户投诉"请求超时"?监控面板上那条刺眼的冷启动曲线&…...

释放存储空间:你的免费开源视频图像压缩神器

释放存储空间:你的免费开源视频图像压缩神器 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 你是否…...

Agent记忆架构设计剖析系列:原理、权衡与场景适配(hermes设计原理)

Hermes 是一款主打 “自我进化” 的 Agent 框架,其记忆系统的核心设计哲学是认知经济性—— 即 “只记住对未来行为有价值的信息”,通过严格的记忆审查与精炼机制,将有限的计算资源集中于高价值记忆,实现了记忆质量与系统效率的平…...

STM32H743+SOEM+英威腾DA200伺服:一个嵌入式EtherCAT主站的完整调试笔记(含代码)

STM32H743与英威腾DA200伺服的EtherCAT主站实战:从硬件搭建到运动控制 在工业自动化领域,实时以太网通信协议EtherCAT因其卓越的性能和灵活性正成为运动控制系统的首选方案。本文将分享一个基于STM32H743微控制器和SOEM开源库实现EtherCAT主站控制英威腾…...

抖音无水印视频下载终极指南:3步实现高效批量下载与智能管理

抖音无水印视频下载终极指南:3步实现高效批量下载与智能管理 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...

避坑指南:STM32H7的SD卡虚拟U盘项目,为什么加了FreeRTOS后USB读写就挂了?

STM32H7虚拟U盘开发实战:FreeRTOS环境下USB与SD卡协同设计精要 在嵌入式存储解决方案中,将SD卡通过USB接口模拟为U盘是常见需求。当项目从裸机迁移到FreeRTOS环境时,原本稳定的USB大容量存储类(MSC)功能可能突然失效—…...

real-anime-z快速上手指南:无需代码,通过WebUI生成高质量动漫图

real-anime-z快速上手指南:无需代码,通过WebUI生成高质量动漫图 1. 模型简介 real-anime-z是基于Z-Image的LoRA版本开发的文生图模型,专注于生成高质量的动漫风格图片。这个模型通过Xinference部署,并提供了基于Gradio的WebUI界…...

金蝶云单据下推避坑指南:当子单据体遇上复杂条件,我这样用插件搞定

金蝶云单据下推高阶实战:复杂条件与跨层级数据抓取全解析 当你在金蝶云项目中遇到需要根据特定条件筛选子单据体数据,并且还要跨层级获取基础资料值时,是否感到无从下手?本文将带你深入剖析这个典型业务场景的解决方案。 1. 复杂下…...