手把手教你用Docker快速部署开源MES系统(附避坑指南)

低代码开发平台,快速搭建开源MES系统 基于为离散制造业提供方案及服务的定位,MS云低代码平台的本质是一系列协同制造软件的组合体,SaaS平台采用了云原生的技术架构,完全支持复杂制造业务场景下的低代码配置需求,90%以上需求可通过配置完成,无须再写代码。通过拖拉拽方式即可完成应用程序开发,极大的提高开发效率,配置后即可完成功能升级,开发效率提升70%以上。 阅读详情

从零到一:基于Docker容器化部署开源MES系统的实战全攻略

最近几年,制造业的数字化转型浪潮席卷而来,身边不少在中小型制造企业做IT的朋友都开始面临一个共同的挑战:老板想要上MES系统,但预算有限,动辄几十万甚至上百万的商业软件根本负担不起。我自己也经历过这个阶段,从最初的手忙脚乱到后来摸索出一套相对成熟的部署方案,今天就把这些实战经验整理出来,希望能帮到正在为此发愁的你。

开源MES系统,特别是像qcadoo、Free-MES、LiteMES这些在GitHub上活跃的项目,为预算有限的中小企业提供了绝佳的解决方案。它们不仅功能完整,而且因为开源,你可以根据自己工厂的实际需求进行二次开发,灵活性远超那些“一刀切”的商业软件。更重要的是,借助Docker这样的容器化技术,部署和维护的复杂度大大降低,一个懂点Linux和网络的基础IT人员就能搞定。

这篇文章就是为你准备的——无论你是中小制造企业的IT运维,还是对智能制造感兴趣的开发者,我都会用最直白的方式,带你一步步完成一个开源MES系统的生产级部署。我们会重点解决部署过程中最容易踩坑的数据库配置、应用服务器优化、网络设置等问题,确保你第一次尝试就能成功跑起来。

1. 部署前的环境准备与架构规划

在真正动手敲命令之前,花点时间做好规划能让你少走很多弯路。我见过太多人一上来就急着安装,结果因为环境不兼容或者资源不足,折腾半天又得推倒重来。

1.1 硬件与操作系统选择

对于中小型制造企业,MES系统的硬件需求其实并不夸张。根据我的经验,一个支持50个并发用户、管理5-10条生产线的场景,以下配置就足够了:

组件 最低配置 推荐配置 说明
CPU 4核 8核 现代多核处理器,主频2.0GHz以上
内存 8GB 16GB 数据库和应用服务器分开部署需要更多内存
存储 100GB SSD 200GB NVMe SSD 数据库性能对IO要求较高
网络 千兆以太网 千兆以太网 内网延迟应低于10ms

注意:如果你计划将MES与SCADA、ERP等系统集成,或者需要处理大量的实时生产数据,建议在推荐配置的基础上再增加50%的资源预留。

操作系统方面,Ubuntu Server LTS版本是我的首选。它社区支持好,软件包更新及时,而且对Docker的支持非常完善。我通常选择最新的LTS版本,比如Ubuntu 22.04或24.04,避免使用过于陈旧的发行版。

# 查看当前系统信息
lsb_release -a
uname -r

如果你的服务器已经安装了其他Linux发行版(比如CentOS),也不用担心,大部分步骤都是通用的,只是包管理器的命令需要相应调整。

1.2 Docker与Docker Compose安装

容器化部署的核心就是Docker,它能把应用及其所有依赖打包成一个标准化的单元,确保在任何环境下的运行一致性。这里我提供两种安装方式:官方脚本和apt仓库。

方法一:使用官方安装脚本(最简单)

# 下载并执行Docker安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 将当前用户加入docker组,避免每次都要sudo
sudo usermod -aG docker $USER
newgrp docker  # 立即生效,或重新登录

# 验证安装
docker --version
docker run hello-world

方法二:通过apt仓库安装(更可控)

# 卸载旧版本(如果有)
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖包
sudo apt-get update
sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker

安装完Docker后,还需要安装Docker Compose。虽然新版本的Docker已经包含了Compose插件,但我还是习惯用独立版本,因为有些老项目可能对版本有特定要求。

# 下载Docker Compose(这里以2.20.2为例,可替换为最新版本)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

1.3 网络与存储规划

生产环境下的MES系统通常需要与多个系统交互,合理的网络规划至关重要。我建议采用以下架构:

  • 数据库层:PostgreSQL/MySQL容器,单独的网络命名空间
  • 应用层:Spring Boot或Java Web应用容器
  • 缓存层:Redis容器,用于会话管理和热点数据缓存
  • 文件存储:MinIO或NFS共享存储
  • 前端:Nginx反向代理,处理静态资源和负载均衡

创建一个专用的Docker网络能让容器间通信更安全、更高效:

# 创建自定义网络
docker network create mes-network

# 查看网络详情
docker network inspect mes-network

存储方面,千万不要把数据库数据放在容器内部!容器重启或迁移时,内部数据会丢失。一定要使用数据卷(Volume)或绑定挂载(Bind Mount)。

# 创建数据卷
docker volume create postgres-data
docker volume create redis-data
docker volume create app-logs

# 查看所有数据卷
docker volume ls

2. 开源MES项目选型与源码获取

GitHub上开源MES项目不少,但质量参差不齐。根据我的实际使用经验,下面这几个项目值得重点关注:

2.1 主流开源MES项目对比

项目名称 技术栈 活跃度 部署难度 适合场景
Free-MES Spring Boot + Vue3 + MySQL ★★★★★ ★★☆☆☆ 中小型离散制造,功能全面
qcadoo Java + PostgreSQL + Tomcat ★★★★☆ ★★★☆☆ 欧洲开源项目,模块化设计
LiteMES Spring Boot + Vue2 + MySQL ★★★☆☆ ★★☆☆☆ 小型企业,轻量级,多租户
hm-MES Spring Boot + Layui + MySQL ★★★☆☆ ★★★☆☆ 看板功能强大,物联网集成好

提示:选择项目时不仅要看技术栈是否熟悉,更要关注项目的最近提交时间、Issue处理情况和社区活跃度。一个半年没更新的项目,很可能已经无人维护了。

我个人的推荐是Free-MES,原因有三:第一,它基于现代化的Spring Boot和Vue3技术栈,二次开发相对容易;第二,项目维护者提供了完整的Docker部署方案,对新手友好;第三,社区活跃,遇到问题能较快得到解答。

2.2 获取项目源码

直接从GitHub克隆是最简单的方式:

# 创建项目目录
mkdir -p ~/projects/mes-deployment
cd ~/projects/mes-deployment

# 克隆Free-MES项目
git clone https://github.com/metaxk-company/free-mes.git

# 进入项目目录
cd free-mes

# 查看项目结构
tree -L 2

典型的项目结构应该是这样的:

free-mes/
├── docker-compose.yml          # Docker Compose配置文件
├── README.md                   # 项目说明文档
├── source-code/                # 源代码目录
│   ├── backend/               # 后端Java代码
│   ├── frontend/              # 前端Vue代码
│   └── database/              # 数据库脚本
├── deployment/                 # 部署相关文件
│   ├── nginx/                 # Nginx配置
│   ├── init-scripts/          # 初始化脚本
│   └── config/                # 应用配置文件
└── images/                     # 截图和文档图片

如果网络环境访问GitHub较慢,可以考虑使用国内镜像或者先下载ZIP包:

# 使用Gitee镜像(如果项目有同步)
git clone https://gitee.com/metaxk-company/free-mes.git

# 或者下载ZIP包
wget https://github.com/metaxk-company/free-mes/archive/refs/heads/master.zip
unzip master.zip
mv free-mes-master free-mes

2.3 源码结构与关键文件解析

在部署之前,花点时间了解源码结构能帮你更好地理解整个系统:

# 查看后端项目结构
cd source-code/backend
find . -name "pom.xml" -o -name "application*.yml" | head -10

# 查看前端项目结构
cd ../frontend
ls -la

几个关键配置文件需要特别注意:

  1. application.yml:Spring Boot应用的主要配置文件,包含数据库连接、Redis配置、文件上传路径等
  2. docker-compose.yml:定义了所有服务的容器配置、网络和数据卷
  3. nginx.conf:Nginx反向代理配置,影响前端访问和后端API路由
  4. init.sql:数据库初始化脚本,创建表结构和基础数据

我建议在部署前先浏览一遍这些配置文件,根据你的实际环境调整参数。特别是数据库连接字符串、Redis地址、文件存储路径这些与环境相关的配置。

3. 数据库配置与优化实战

数据库是MES系统的心脏,配置不当会导致性能瓶颈甚至数据丢失。我踩过的坑,希望你不要再踩。

3.1 PostgreSQL vs MySQL的选择

大多数开源MES项目都支持PostgreSQL和MySQL,两者各有优劣:

PostgreSQL的优势:

  • 对复杂查询和JSON数据支持更好
  • 事务处理更严谨
  • 扩展性强,支持多种数据类型
  • 在qcadoo等项目中是首选

MySQL的优势:

  • 部署简单,资源占用相对较少
  • 社区庞大,遇到问题容易找到解决方案
  • 对Web应用生态支持更好
  • Free-MES和LiteMES默认使用MySQL

如果你不确定选哪个,我建议跟着项目推荐走。比如Free-MES官方文档推荐MySQL,那就用MySQL;qcadoo推荐PostgreSQL,那就用PostgreSQL。不要强行更换,避免兼容性问题。

3.2 PostgreSQL容器化部署与调优

对于选择PostgreSQL的项目,这里是一份生产级的Docker Compose配置:

version: '3.8'
services:
  postgres:
    image: postgres:15-alpine
    container_name: mes-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: mesdb
      POSTGRES_USER: mesuser
      POSTGRES_PASSWORD: StrongPassword123!
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./init-scripts:/docker-entrypoint-initdb.d
    ports:
      - "5432:5432"
    networks:
      - mes-network
    command: >
      postgres
      -c shared_buffers=256MB
      -c effective_cache_size=1GB
      -c maintenance_work_mem=64MB
      -c checkpoint_completion_target=0.9
      -c wal_buffers=16MB
      -c default_statistics_target=100
      -c random_page_cost=1.1
      -c effective_io_concurrency=200
      -c work_mem=4MB
      -c min_wal_size=1GB
      -c max_wal_size=4GB
      -c max_connections=200

volumes:
  postgres_data:
    driver: local

networks:
  mes-network:
    driver: bridge

关键配置说明:

  • shared_buffers:数据库缓存,建议设置为系统内存的25%
  • effective_cache_size:操作系统和数据库缓存总和,建议为系统内存的50-75%
  • max_connections:最大连接数,根据应用服务器数量调整

初始化数据库时,一定要先创建扩展和设置合适的字符集:

-- init.sql示例
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pg_trgm";

-- 设置字符集
UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8') WHERE datname = 'mesdb';

3.3 MySQL容器化部署与性能优化

对于MySQL,配置稍有不同:

services:
  mysql:
    image: mysql:8.0
    container_name: mes-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: RootPassword123!
      MYSQL_DATABASE: mesdb
      MYSQL_USER: mesuser
      MYSQL_PASSWORD: UserPassword123!
    volumes:
      - mysql_data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d
      - ./init-scripts:/docker-entrypoint-initdb.d
    ports:
      - "3306:3306"
    networks:
      - mes-network
    command: >
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
      --default-authentication-plugin=mysql_native_password
      --
开源mes系统OpenMES部署,小白级从0开始部署笔记 《新手部署OpenMES系统的实践记录》摘要:本文记录了作者从零开始部署开源制造执行系统OpenMES的完整过程。通过AI辅助,作者完成了环境配置(JDK、Git、MySQL等)、数据库导入、前后端部署等关键步骤,并分享了调试经验。文章特别强调数据库完整导入的重要性,以及如何利用AI工具解决部署过程中的报错问题。作为新手实操指南,本文详细展示了每个环节的具体操作,包括后端Spring Boot项目的Maven打包、前端Vue项目的npm构建等。作者总结了AI辅助开发的实用技巧,建议读者配合流程图保持整体进度 阅读详情

相关推荐

分享开源生产制造执行系统qcadooMES

Open source version qcadoo MES is available as commercial SaaS, but we have also Community Edtion. It is fully Open Source, based on AGPL licence. https://github.com/qcadoo/mes The technology of qcadoo MES is a combination of a bill of materials (BOM) with

通达的博客 5729

用Docker快速部署开源MES系统:手把手教程与避坑指南

容器化技术正成为企业软件交付与运维的主流方式,Docker通过镜像封装与环境隔离机制,有效解决了应用依赖冲突、环境不一致等部署难题,显著提升了系统交付的标准化程度和运维效率。在制造业数字化转型的大背景下,制造执行系统作为连接企业计划层与车间设备层的关键系统,其部署的稳定性直接关系到生产进度追踪、物料批次追溯和质量管控等核心业务的落地效果。然而开源MES系统组件多、依赖复杂,传统手工部署方式往往面临环境配置繁琐、问题排查困难等挑战。本文围绕Docker容器化部署开源MES系统的完整流程,从架构设计、环境准备、

weixin_31421613的博客 218

开源MES容器化部署:基于Odoo与Docker Compose的落地指南

制造执行系统(MES)是车间数字化的核心,但商业软件动辄数十万的成本与漫长实施周期让很多团队望而却步。开源MES虽项目众多,却大多难以开箱即用。容器化技术则提供了一条低成本验证与交付的路径:通过Docker封装应用与数据库,实现环境一致、快速部署和便捷回滚。Odoo社区版凭借成熟的制造模块和开放源码特性,恰好能承担起轻量级MES底座的职责,覆盖工单、工序报工、质检等核心职能。结合Docker Compose编排,即可在半天内拉通一套可演示、可试用的制造执行环境。本文从选型逻辑、环境准备、配置拆解到生产加固和

weixin_33585822的博客 278

手把手教你用.NET Core3.1+Vue3搭建小型MES系统(附SQL Server配置指南)

本文详细介绍了如何使用.NET Core 3.1与Vue3技术栈从零搭建轻量化MES系统,特别包含SQL Server数据库的优化配置指南。通过分层架构设计、实时生产进度跟踪和动态表单生成等核心功能实现,帮助中小型工厂快速部署高效的制造执行系统,提升生产管理效率。

weixin_30399821的博客 499

Java+YOLO工业视觉落地全流程:从环境搭建到产线部署,中小厂/接单首选,附10个避坑指南!

本地库加载失败,Docker容器里权限不足解决:在Dockerfile里创建非root用户,加工业级的权限控制。光照一定要均匀,用环形无影光源现象:金属/塑料/纸质包装反光强,错分率从1%飙升到20%。解决:一定要用环形无影光源,不要用普通的LED灯。ROI要精准,不要全图推理现象:全图推理延迟高,达不到产线节拍。解决:根据产线工件的固定位置,做精准的ROI提取,只处理目标所在的区域,推理速度可以提升3倍以上。置信度阈值不要设太高,小目标的置信度本来就低现象:小目标漏检率高。

2601_94871597的博客 424

深入理解C# MES开源项目:源代码分析与实践指南

本文还有配套的精品资源,点击获取 简介:本文对C# MES(制造执行系统)开源源代码进行详解,探讨了其关键技术和设计原则。C# MES是用C#语言开发的开源软件,用于实时监控和管理企业生产流程,位于ERP系统和底层控制系统之间。文章涵盖了C#语言基础、.NET Framework / .NET Core、ORM、设计模式、多线程、用户界面技术、RESTful API、异常处...

weixin_35935514的博客 3980

离散制造中小企业MES选型:B/S开源路线部署与避坑指南

MES系统是连接计划层与车间执行层的关键,用于解决离散制造中工单、报工、物料等现场数据断层。其核心原理是通过工单-工序-报工三级数据模型,实现生产进度与物料批次追溯。采用B/S架构与开源方案,能显著降低部署与二次开发成本,尤其适合车间工位分散、网络条件参差的中小制造企业。典型应用包括实时报工防错、BOM递归展开、ERP/WMS数据对接等。苦糖果MES系统正是基于此路线,为中小企业提供免费、可自主扩展的生产执行管理能力。

weixin_26742753的博客 271

苦糖果MES系统:离散制造中小企业开源生产执行管理系统部署与实操指南

MES系统是连接计划层与执行层的核心工业软件,通过工单管理、报工记录、物料齐套和质量追溯等模块,实现生产现场数据的实时采集与透明化管控。在离散制造场景中,B/S结构让终端免安装、升级即刷新,开源模式则大幅降低中小企业的License成本。对于年产值数千万、IT人力有限、订单多品种小批量的工厂,一套轻量级MES能有效解决插单频繁、报工滞后、缺料停线等典型痛点。苦糖果MES系统正是面向这一场景的开源免费方案,本文围绕其技术骨架、核心模块配置与落地避坑经验展开实操讲解。

weixin_29195217的博客 201

基于Ruoyi框架的开源MES系统部署与二次开发实战指南

制造企业数字化转型中,MES系统是连接计划层与执行层的核心枢纽,其选型与落地直接决定车间管理的精细化程度。MES并非简单软件安装,而是需要将排产、工单、质检、追溯等业务流程与系统功能深度耦合。基于Spring Boot和Vue构建的前后端分离架构,已成为当前主流技术方案,通过清晰划分后端服务与前端交互,既保障了系统的灵活扩展性,也降低了维护成本。开源框架Ruoyi凭借完善的RBAC权限体系、代码生成能力和活跃社区生态,为MES二次开发提供了高起点的底座支撑,使开发团队能将主要精力聚焦于生产工艺与质量管控逻辑

weixin_31102231的博客 259

QCADOO开源MES部署与车间落地实战指南

MES(制造执行系统)是连接计划与生产的中枢,其核心在于实时性、状态可控与数据可溯。QCADOO作为轻量级开源MES,基于Spring Boot与严格状态机设计,专为中小离散制造企业解决工单断点、报工失真、工序卡顿等典型执行断层问题。它不追求大而全,而是通过事务级闭环、Flyway数据库迁移、RESTful API集成与可扩展状态机,支撑从派工、扫码报工到返工返修的完整制造执行链路。本文聚焦Win10环境Docker一键部署、JDK17/PostgreSQL14兼容要点、生产级API调用范式及5类车间高频避

weixin_30219613的博客 287

AI办公Agent技术:文档与表格智能处理实践

办公自动化技术正从规则驱动转向语义理解,大语言模型(LLM)为办公Agent赋予了智能决策能力。这类系统通过五层架构整合自然语言处理、工具API调用和任务规划引擎,能自动完成文档分类、表格分析等高重复性工作。关键技术包括基于TF-IDF和BERT的特征提取、Excel公式自动生成等,在财务报告、法律审查等场景可实现90%以上的效率提升。随着多模态能力和领域专业化发展,办公Agent正在重塑企业文档处理流程,成为数字化转型的核心基础设施。

weixin_30263277的博客 516

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1380

从数据到图片:手把手构建FMCW雷达人体行为识别数据集(行走、跌倒、喝水等6类动作)

本文详细解析了如何利用FMCW雷达构建人体行为识别数据集,涵盖行走、跌倒、喝水等6类动作。通过多普勒特征可视化、图像标准化处理和自动化流水线设计,将原始雷达信号转化为高质量时频图像数据集,为智能家居和健康监护等应用提供可靠数据支持。

weixin_30706691的博客 377

卸载重装Ubuntu22.04双系统

先说一下写此篇文章的背景吧,我在Windows下配置了三个cornerNet深度学习环境分别是cuda10.3(显卡版本太高不支持),cuda11.3(配置后偶然看到一篇说这个版本win下只能用CPU跑),最后是cuda11.1终究还是没能跑通代码,因为它的代码是在Liunx系统写的,就想着装个Ubuntu试试看,在网上看说一般软件不要装太高版本,我就下载了470版的显卡驱动,跟着步骤升级了系统内核,结果第二天开机Ubuntu就崩了,开机黑屏左上角只有一道横杠显示,只能按ctrl+shift+f5进入命令窗

编程小白的博客 8079

告别玄学:手把手配置EtherCAT从站PDI接口与同步采样(含Sync/Latch信号实战)

本文详细解析了EtherCAT从站PDI接口配置与同步采样技术,涵盖微处理器通信与直接驱动IO模式选择、同步采样四大触发模式(SOF、Latch_in、Sync0/Sync1)及输出触发实战。通过伺服驱动器实例,帮助工程师突破配置难点,实现高精度同步控制,提升工业自动化系统性能。

weixin_30667649的博客 474

在Android中实现SIM卡的读写操作

在上述代码中,我们创建了一个PhoneStateListener的实例,并重写了onSimStateChanged方法来处理SIM卡状态改变的事件。然后,我们通过调用telephonyManager的listen方法注册了这个监听器,并指定了要监听的事件类型为SIM卡状态的改变。在上述代码中,我们调用telephonyManager的sendUssdRequest方法来发送USSD命令,并通过TelephonyManager.UssdResponseCallback来处理USSD响应和发送失败的情况。

2301_79326510的博客 918

Qt5.15.2配置安卓环境

否则,将会跳转到github,你可以自行下载解压到你设置的目录中,然后Qt会自动检测到。以上所需的工具确实有些繁多,而且如果单独下载又涉及科学上网问题,版本问题十分麻烦,好在Qt Creator 4.12之后已经可以自动下载SDK工具,NDK,基础包,openssl,以及gradle等,十分省心。回到正题,无论通过在线安装的方式,安装时勾选了Android,还是编译的方式,编译时编译了Qt Android库,想要使用Qt开发安卓应用仍然需要一些其他工作,包括安装编译安卓项目需要的SDK,NDK等。

weixin_41392061的博客 976

大模型微调部署实战及类GPT工具的高效使用

本文主要介绍了专栏《大模型微调部署实战及类GPT工具的高效使用》的核心内容,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 专栏亮点 3. 你的收获 4. 详细目录

herosunly的博客 22万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 别再乱调参了!随机森林超参数优化指南(附最佳实践案例)
下一篇: 解决Ubuntu 22.04中AppImage因缺失libfuse2无法运行的问题
半糖主义941
博客等级 码龄3年 416粉丝 1386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值