领域驱动设计(DDD)核心技术解析

微服务与实时通信架构解析:构建统一协作平台的核心技术 微服务架构通过将复杂系统拆分为独立部署、松耦合的服务单元,提升了系统的可维护性和可扩展性。其核心原理在于服务边界的清晰划分和基于API的通信机制,结合领域驱动设计(DDD)可以更好地映射业务能力。这种架构的技术价值在于支持团队独立开发、技术栈异构以及弹性伸缩,是现代SaaS应用,尤其是实时协作、社交平台等场景的基石。在实时通信领域,WebSocket提供了全双工通信能力,而消息队列(如Kafka、Redis Pub/Sub)则用于解耦和广播消息,两者协同构建了高并发、可扩展的实时消息系统。本文以开源统一通信 阅读详情

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。

Java程序员廖志伟

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。💡在这个美好的时刻,笔者不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

优快云

一、战略设计层

领域划分: 在实施领域驱动设计(DDD)时,首先需要对业务领域进行精确划分。这不仅仅是将业务分解成多个部分,而是深入理解业务的核心价值流,将其映射为多个领域。每个领域都有其独特的业务逻辑和实体。

核心域/支撑域/通用域识别:

  • 核心域:涉及业务的核心流程和业务逻辑,如在线购物中的商品管理、订单处理等。在技术实现上,核心域的识别通常需要通过业务分析师和领域专家的深入讨论,结合业务流程图、用例图等工具,明确核心业务流程。
  • 支撑域:提供核心域所需的通用服务,如用户管理、权限控制等。在实现上,支撑域通常采用模块化设计,通过接口和抽象类提供标准化的服务,以便核心域能够无差别地调用。
  • 通用域:跨多个领域共享的代码,如日期处理、日志记录等。在技术实现上,通用域的代码往往设计为独立的服务或库,通过接口暴露功能,使得各个领域可以重用这些代码。

子域拆分原则: 子域是核心域的进一步细分,每个子域都应该具备独立性和职责清晰。在技术实现上,子域的拆分可以基于以下原则:

  • 功能独立性:每个子域应独立完成特定功能,便于管理和维护。
  • 职责分离:子域内职责清晰,避免职责混搭,有助于代码的可读性和可维护性。
  • 领域一致性:子域内逻辑和概念应保持一致性,避免在不同子域中出现相互矛盾的定义。

限界上下文边界定义: 限界上下文是DDD中用来隔离业务逻辑的一种方式,它定义了领域模型的边界。在技术实现上,限界上下文的边界定义通常涉及以下步骤:

  • 业务能力原则:边界应基于业务能力而非技术组件,确保边界内外的交互清晰。
  • 内聚原则:边界内部应尽量内聚,减少外部依赖,提高模块的独立性。
  • 跨界协作原则:边界之间通过统一语言进行沟通,确保不同团队对领域模型的理解一致。

统一语言: 统一语言是跨团队沟通的一种方式,它有助于确保团队成员对术语的理解一致。在技术实现上,统一语言的构建和语义对齐可以采用以下方法:

  • 术语表构建方法:定义一个术语表,包含所有领域内的词汇,并确保术语的一致性。
  • 跨团队语义对齐:通过团队会议、工作坊等形式,确保不同团队成员对术语的理解一致。
  • 上下文映射模式:根据业务合作关系(如合作关系/客户-供应商等)定义上下文之间的关系,确保上下文之间的交互顺畅。

二、战术设计层

基础构件:

  • 实体标识设计:在实体标识设计上,可以使用UUID或数据库序列为实体生成唯一标识,确保实体的唯一性和不可变性。
  • 值对象不可变性实现:值对象一旦创建,其值不可更改,这在技术实现上可以通过在值对象的构造函数中设置只读属性来实现。
  • 聚合根一致性边界:聚合根定义了聚合内实体的生命周期和边界,在技术实现上,可以通过定义聚合根的接口和内部实体类来实现。

服务架构:

  • 领域服务与应用服务区分:领域服务关注业务逻辑,应用服务关注外部交互,这在技术实现上可以通过服务层的分离来实现,即领域服务层和应用服务层。
  • 工厂模式应用场景:用于创建复杂对象或对象组合,在技术实现上,可以通过工厂模式定义一个工厂接口,由具体的工厂类实现,负责创建对象实例。
  • 仓储接口设计(CQRS模式):通过仓储接口隔离读和写操作,在技术实现上,可以定义不同的仓储接口来处理读和写操作,从而实现CQRS模式。

事件驱动:

  • 领域事件建模:定义领域内的事件及其影响,在技术实现上,可以通过定义事件类和事件发布者来实现。
  • 事件溯源实现:记录事件历史,用于状态恢复,在技术实现上,可以通过事件日志和事件处理器来实现。
  • 最终一致性策略:确保系统最终达到一致状态,在技术实现上,可以通过消息队列和补偿事务来实现。

三、规则体系

业务规则:

  • 前置条件验证:确保业务操作在执行前满足条件,在技术实现上,可以通过业务规则引擎或自定义验证逻辑来实现。
  • 不变式约束:定义实体的属性不变性约束,在技术实现上,可以通过实体类的属性验证来实现。
  • 规则引擎集成:使用规则引擎来管理复杂的业务规则,在技术实现上,可以选择如Apache Camel、 Drools等规则引擎。

流程规则:

  • 状态机设计:定义实体的状态转换逻辑,在技术实现上,可以通过状态机框架或自定义状态机类来实现。
  • 工作流引擎对接:使用工作流引擎来管理业务流程,在技术实现上,可以选择如Activiti、Camunda等工作流引擎。
  • Saga事务补偿:处理分布式系统中可能出现的补偿事务,在技术实现上,可以通过 Saga模式或补偿事务库来实现。

四、扩展实践

架构集成:

  • 六边形架构适配:将六边形架构应用于DDD设计中,在技术实现上,可以通过定义外部系统接口、应用层、领域层等来实现。
  • 事件风暴工作坊:通过工作坊方式快速识别和设计领域事件,在技术实现上,可以通过会议纪要、白板讨论等方式进行。
  • 微服务拆分模式:根据业务需求将领域拆分为微服务,在技术实现上,可以通过容器化技术如Docker和编排工具如Kubernetes来实现。

效能工具:

  • 代码生成框架:自动化生成代码,提高开发效率,在技术实现上,可以选择如MyBatis Generator、Hibernate Envers等代码生成工具。
  • 契约测试工具:确保接口兼容性和稳定性,在技术实现上,可以选择如JBehave、SpecFlow等契约测试框架。
  • 可视化建模平台:提供可视化的领域模型设计工具,在技术实现上,可以选择如Enterprise Architect、Visual Paradigm等建模工具。

通过以上技术实现细节的补充,我们可以看到,DDD不仅是一种设计方法,更是一种深入理解业务和构建高质量软件的思考方式。从战略设计层的领域划分到战术设计层的基础构件和规则体系,再到扩展实践中的架构集成和效能工具,DDD贯穿了整个软件开发的生命周期,帮助开发者更好地理解业务、设计系统和构建高质量的软件。

优快云

📥博主的人生感悟和目标

Java程序员廖志伟

希望各位读者大大多多支持用心写文章的博主,现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

- 💂 博客主页: Java程序员廖志伟
- 👉 开源项目: Java程序员廖志伟
- 🌥 哔哩哔哩: Java程序员廖志伟
- 🎏 个人社区: Java程序员廖志伟
- 🔖 个人微信号: SeniorRD

Java程序员廖志伟

📙经过多年在优快云创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码--沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

C#实现MUD文字交互系统:从TCP协议到领域建模 MUD(Multi-User Dungeon)作为实时文本交互系统的原始范式,其核心逻辑——接收指令、校验上下文、变更状态、广播结果——至今仍是聊天机器人、教育IM、轻量级RPG等系统的底层骨架。它不依赖图形渲染,而聚焦于命令解析、状态机驱动与网络事件流控制,是理解高并发I/O、内存安全与领域建模的绝佳入口。C#凭借Span<T>零分配解析、PipeReader精准异步I/O、AssemblyLoadContext热重载等能力,在类型安全、调试可控与工程落地间取得关键平衡。本文以‘乔峰篇’为案例,深入拆解纯 阅读详情

相关推荐

转录组数据去批次方法整理(combat,combat-seq,removeBatchEffect)

正是因为这些非生物学的因素存在就有可能会导致我们的结果偏离真实的情况,那么实际分析的过程中研究者应当评估是否存在批次效应,并决定是否要进行去批次处理。批次效应是指样本在不同批次处理及测量的情况下引入与生物学情况不相关的技术误差,比如不同试剂耗材,不同操作者,不同的实验时间等。combat函数是基于贝叶斯框架下的调整数据批次效应的函数,主要适用于已经被过滤和标准化后的数据(combat-seq函数是基于二项回归分布下的调整数据批次效应的函数,主要适用于。值得注意的是,即使使用了所谓的去批次效应的工具,

zfyyzhys的博客 7862

【DDD】学习笔记-领域、子域、核心域、通用域和支撑域:傻傻分不清?

领域的核心思想就是将问题域逐级细分,来降低业务理解和系统实现的复杂度。通过领域细分,逐步缩小微服务需要解决的问题域,构建合适的领域模型,而领域模型映射成系统就是微服务了。核心域、支撑域和通用域的主要目标是:通过领域划分,区分不同子域在公司内的不同功能属性和重要性,从而公司可对不同子域采取不同的资源投入和建设策略,其关注度也会不一样。

xqdd的专栏 2032

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1878

DDD领域驱动中的支撑域、通用域、核心域

在领域驱动设计(DDD)中,有三个重要的概念:支撑域(Generic Subdomains)、通用域(Supporting Subdomains)和核心域(Core Domain)。领域驱动设计中的支撑域、通用域和核心域时,我们可以通过一个简单的电子商务系统的例子来解释它们。在实际的软件设计和架构中,根据不同的业务情况和需求,可以对支撑域、通用域和核心域进行合理的划分和设计,以便更好地满足业务的需求和组织的发展目标。上述例子中使用 C++ 实现了三个不同的类来模拟领域驱动设计中的支撑域、通用域和核心域。

liulilittle的博客 1728

从ResNet到EfficientNet:特征金字塔网络(FPN)在不同骨干网中的适配指南

本文深入探讨了特征金字塔网络(FPN)与ResNet、VGG、EfficientNet等主流骨干网络的适配策略。文章详细解析了FPN的核心原理,并针对不同骨干网络的特征提取特性,提供了通道对齐、参数量估算及迁移学习的系统化指南,旨在帮助开发者在目标检测等视觉任务中构建高性能、高效率的模型。

weixin_29047919的博客 221

Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)

简介:本文介绍了Android开发中常用的键值对存储方案,包括SharedPreferences、MMKV和DataStore,并且对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。

LiuYong_01的博客 1797

DDD 概念理解-理论篇

领域驱动设计(Domain Driven Design,DDD),DDD为我们提供了一种架构设计方法,既面向业务,又面向技术,从业务需求到领域建模,从领域服务到技术转化,强调开发人员与领域专家协同。DDD的核心思想是业务与技术相结合的一种过程,既强调业务的理解,又强调应用领域建模方法的使用。DDD本质上是面向对象分析的扩展和延伸,它基于面向对象分析技术进行了分层规划,同时对其中的核心概念和划分做了详细的指引。(理解是更深层次、全面的面相对象思维)

哎幽的成长 2249

2、Minikube安装Ingress

文章目录前言一、Ingress安装二、Ingress Demo1.创建一个pod和service2.部署ingress3.添加minikube域名映射三、遇到的坑 前言 上篇介绍了Minikube的安装,本篇介绍一下如何在Minikube中安装Ingress。 一、Ingress安装 Ingress安装很简单,Minikube里面带了Ingress附件。 安装Ingress minikube addons enable ingress 禁用Ingress minikube addons disa

star_apple的博客 3072

DDD领域驱动设计实战(09)- 核心域和精炼

一些名词在你的微服务设计和开发过程中不一定都用得上,但它可以帮你理解DDD的核心设计思想和理念。而这些思想和理念,在IT战略设计、业务建模和微服务设计中都是可以借鉴的。 让我们来理清它们与微服务的关系,了解它们在微服务设计中的作用。 领域和子域 领域用于确定边界,这也是为何DDD在设计中不断强调边界。 DDD会按规则细分业务领域,细分到一定程度后,DDD会将问题范围限定在特定边界内,在该边界内建立领域模型,进而用代码实现该领域模型,解决相应业务问题。 领域就是该边界内要解决的业务问题域。领域也有大小之分,其

JavaEdge全是干货的技术号 4745

第一章:GEE 和 GEEMAP

在本章中,我们将介绍地理空间数据科学、谷歌地球引擎和地理地图的基础知识。然后,我们将逐步完成设置 conda 环境和安装 geemap 的步骤。我们还将学习如何在不在您的计算机上安装任何东西的情况下将 geemap 与 Google Colab 一起使用。...

韩天放 8050

液滴碰撞壁面的过程背景论文——bouncing反弹,spreading扩展,splashing飞溅。铺展过程介绍。还存在很多未解之谜。

【1993-德国-Phenomena of liquid drop impact on solid and liquid surfaces】液滴碰撞壁面的过程背景——bouncing反弹,spreading扩展,splashing飞溅。还存在很多未解之谜。还存在很多未解之谜。不同液滴形状碰撞过程。

qq_15963745的博客 200

DDD中为什么要划分核心域、支撑域和通用域?

开发者应该专注于核心域 在领域驱动设计中,开发者会建立领域模型,模型中通常会划分出多个子域来。在现实生活中,资源永远是有限的,对于不同的领域,开发者应该有所取舍,把重点放在最能带来价值的领域中,这就是领域模型的核心域。 开发者应该把自己最好的资源投入到核心域的开发中,对于软件公司而言核心域应该是公司的骨干力量来实现。 支撑域可以外包 而要建立核心域需要其他子域的支持和协作,其中有些子域需要专业知识,不容易直接从市场得到,也需要自己开发,但是这些子域创造的价值不能直接被客户认可,或者价值不高,这样的子域称之为

surfirst的博客 2940

​ISP算法及架构分析介绍

ISP算法及架构分析介绍ISP即Image Signal Processor,是一种图像处理架构,不是我们用的下载器。ISP其实算是图像处理的一个特例,一般应用于前端设备(相对于SENSOR),从结果上看就是将RAW数据转换成压缩后的RGB(一般)数据,供后续CPU使用(识别、压缩等)。市面上很少有直接介绍ISP的书籍或者资料,今天我们主要是聊一聊ISP算法的架构,这样大...

OpenFPGA的博客 5406

DDD培训课程与视频资源全攻略

DDD培训课程与视频资源全攻略 本文全面分析了领域驱动设计(DDD)的培训课程、在线学习平台、视频讲座和会议演讲等学习资源,并提供了系统化的自学路径规划。内容包括知名培训机构和讲师(如Eric Evans、Vaughn Vernon等)的课程特色分析,主流在线平台(Pluralsight、Udemy等)的课程对比,以及精选的视频资源和会议演讲汇总,旨在为开发者提供一份完整的DDD学习指南。 知名培...

gitblog_00515的博客 980

efm32 入门.pdf

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从一个句子到真实上线产品:vibe-check构建ClearList案例全复盘

vibe-check 是一个面向 AI 编程工具的开源 PM skill,把一句模糊的产品想法变成可执行的构建计划。本文完整复盘它的旗舰案例 ClearList:一个帮搬家人群批量清仓二手物品的真实产品。从 Reddit 痛点挖掘、机会打分,到增长飞轮与冷启动策略,看看一条"搬家卖东西太累"的抱怨如何一步步长成上线产品。 [![vibe-check 开源产品规划 skill 项目横幅:一句话想法

gitblog_00473的博客 416

Camera2Demo

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

Java工程师进阶必看(领域驱动设计实战案例全公开)

掌握Java领域驱动设计实战,解决复杂业务系统设计难题。涵盖聚合根、值对象、限界上下文等核心方法,适用于高并发、可扩展系统开发。案例驱动,深入DDD分层架构与实践技巧,值得收藏。

QuickSolve的博客 664

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

10分钟上手企业级开发!nebula-framework:基于Spring Boot 3.0的DDD架构全家桶

你是否还在为后台管理系统搭建重复造轮子?从权限设计到代码生成,从异常处理到数据库操作,每次新项目都要从零开始?本文将带你解锁nebula-framework的企业级开发能力——这套基于Spring Boot 3.0的一站式开发平台,内置DDD架构规范与自动化代码生成工具,让中小型项目开发效率提升300%。读完本文你将掌握: - 如何用DDD架构规范快速拆分业务模块 - 代码生成器3分钟产出完整C...

gitblog_01407的博客 533

AlphaFold 2 安装与上手:如何从蛋白序列本地预测 3D 结构

X 射线晶体学或 NMR 测一个结构要数周甚至数月,而 AlphaFold 2 几分钟就能给出结果——100 个残基的蛋白在 A100 上只需 4.9 秒。本文带你把这个开源推理管线本地跑起来,并学会读输出的置信度分数。 ## 项目速览:一条序列换一组带置信度的结构 AlphaFold 是 DeepMind 推出的蛋白质 3D 结构预测系统,本仓库是其官方开源推理代码(代码 Apache 2.

gitblog_00892的博客 773

SOFABoot微服务拆分终极指南:基于领域驱动设计的实践方案

SOFABoot是蚂蚁集团开源的基于Spring Boot的微服务增强框架,为大规模微服务架构提供了完整的解决方案。这个强大的框架不仅完全兼容Spring Boot,还提供了就绪检查、类隔离、上下文隔离等企业级能力,特别适合复杂微服务系统的拆分和重构。 ## 📋 为什么需要SOFABoot进行微服务拆分? 在微服务架构演进过程中,单体应用拆分为多个微服务面临诸多挑战。SOFABoot通过以下

gitblog_00752的博客 1002

互联网大厂Java求职:面试官与谢飞机的搞笑面试对话

哦,JVM嘛,就是Java Virtual Machine,负责让Java程序跑起来的那个小东西。在某互联网大厂的面试室内,严肃的面试官正准备开始对一位叫谢飞机的程序员进行Java开发岗位的面试。:哦,IOC嘛,就是控制反转,具体怎么反转我就不知道了。:哈哈,有趣的理解。:Docker,我知道,是一种……:好的,谢飞机,今天的面试到此结束,请回去等通知。:最后一个问题,Docker的基本概念是什么?:说得不错,那你能讲讲JVM内存模型吗?:缓存嘛,不就是存起来,等下次再用吗?:线程池嘛,就是……

2301_79945976的博客 332

「2019年」原创技术75篇文章归档

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获! 2019年共计编写74篇原创文章,其中包括;JVM、JavaAgent、字节码编程、Netty网络通信、SpringCloud、源码分析、中间件开发以及架构设计和两篇走码文章。以下是有所内容的归档,欢迎收藏。 用Java实现JVM 本专题主要介绍如何通过 Java 代码来实现JVM的基础...

bugstack虫洞栈 4767

跨设备无缝协作:AppFlowy实时同步技术深度解析

AppFlowy 是 Notion 的一个开源替代品,您完全掌控您的数据和定制化需求。该产品基于Flutter和Rust构建而成,提供了强大的跨设备实时同步功能,让您的工作在不同设备间无缝衔接。 ## 实时同步技术:AppFlowy的核心优势 在当今多设备办公的环境下,实时同步技术成为提升工作效率的关键。AppFlowy采用先进的实时同步技术,确保您在任何设备上的修改都能即时反映到其他设备,实

gitblog_01175的博客 794

深度解析:ASP.NET Core微服务架构实战手册

在当今云原生时代,微服务架构已成为构建复杂分布式系统的标准范式。ASP.NET Core微服务项目展示了一个完整的电子商务系统实现,它巧妙地将现代.NET 8特性与微服务设计原则相结合,为开发者提供了一个实战级的参考架构。 ## 为什么选择这个微服务项目? 传统单体应用在面对业务扩展时常常遇到瓶颈,而微服务架构通过将系统拆分为独立部署的服务单元,实现了更好的可扩展性、技术栈灵活性和团队自治性。

gitblog_00239的博客 590

3个维度解析开源原神辅助工具:Snap Hutao提升游戏体验方案

开源原神辅助工具Snap Hutao集成了角色培养分析、数据同步管理和活动信息整合三大核心功能,为玩家提供安全可靠的游戏数据管理解决方案。作为独立运行的桌面应用,该工具通过本地数据处理与加密传输技术,在确保账号安全的前提下,帮助玩家优化角色培养策略、简化物品管理流程。 ## 分析游戏数据管理痛点 原神玩家普遍面临三类核心问题:角色培养路径规划缺乏数据支持、游戏内物品管理效率低下、活动信息分散导

gitblog_00833的博客 470
上一篇: ShardingSphere核心机制解析
下一篇: 领域驱动设计核心策略
Java廖志伟
博客等级 码龄2年 3609粉丝 1517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值