看P8大佬肝完《微服务架构设计模式》的一点总结

完整详解阿里Java P5-P8百万年薪架构师的技能要求 疫情高峰期过去了,金三银四也来临了,最近很多同学给我留言:关于阿里的Java P系列薪资与技能的问题,本篇统一解答大家的疑惑。先晒一个大家最关心的薪资结构,最新的薪资结构,个人建议参考。好吧,下面我就逐一解读阿里Java 从P5到P8架构师的岗位与技能要求。 阅读详情

经常翻阅微服务材料的话,总会碰到 microservices.io 这个网站,总结了微服务方方面面的设计模式。网站的作者是 Chris Richardson。

 

这些相关的经验在 2018 年成为了《微服务架构设计模式》这本书,并且 2019 年引进国内。当时我第一时间购入了这本书,中间断断续续地一直没看完。最近准备分享内容的时候又翻起这本书,这次完整地读完了一遍。感觉应该是目前微服务领域最好的一本书了。另一本《Building Microservices》也不错,不过内容还是稍微单薄了一些。

这本书为我们提供了宏观上俯瞰微服务整个生态的大图,比如:

当然,18 年的时候,service mesh 之类的东西还没有太火,所以后来在网站上有个更新的版本:

个人很喜欢这种大图,不管什么领域,我只要照着图去一点一点填坑就行了,没有这样的图,总觉得是在望不见头的技术森林里兜兜转转,找不到北。

下面简单写一写我对这本书的总结,里面 saga 和测试的部分我就先省略了。

单体服务的困境

在单体时代,大家在一个仓库里开发,代码冲突解决起来很麻烦,上线的 CI/CD pipeline 也是等待到死。

拆分了以后,至少大家有各自的代码库,各自的上线流程,各自的线上服务。这样上线不打架了,上线以后也可以自己玩自己的灰度流程,一般不会互相影响。

服务拆分

虽然说是拆了,不过拆分也是要讲究方法的。

书里提供了两种思路,一种是按照业务/商业能力拆分,一种是按照 DDD 中的 sub domain 拆分。

  • 供应商管理

  • 送餐员信息管理

  • 餐馆信息管理:管理餐馆的订单、营业时间、营业地点

  • 消费者管理

  • 管理消费者信息

  • 订单获取和履行

  • 消费者订单管理:让消费者可以创建、管理订单

  • 餐馆订单管理:让餐馆可以管理订单的准备过程

  • 送餐管理

  • 送餐员状态管理:管理可以进行接单操作的送餐员的实时状态

  • 配送管理:订单配送追踪

  • 会计

  • 消费者记账:管理消费者的订单记录

  • 餐馆记账:管理餐馆的支付记录

  • 配送员记账:管理配送员的收入信息

     

最终大概会形成上面这些服务。

用 DDD 来做分析,其实我们得到的结果也差不多:

在拆分时,我们还应该用 SOLID 中的 SRP 原则和另外一个闭包原则 CCP(common closure principle) 来进行指导。

在拆分后,也要注意微服务的拆分会额外给我们带来的问题:

  • 网络延迟
  • 服务间同步通信导致可用性降低
  • 在服务间维持数据一致性
  • 获取一致的数据视图
  • 阻塞拆分的上帝类

服务集成

分布式服务通信大概可以分为 one-to-one 和 one-to-many:

RPC 很好理解,同步的 request/response。异步通信,一种是回调式的 request/response,一种是一对多的 pub/sub。

具体到 RPC 的话,可以使用多种协议和框架:

不过当 API 更新时,应该遵循 semver 的规范进行更新。社区里 gRPC 很多次更新都没有遵守 semver,给它的依赖方都造成了不小的麻烦。感兴趣的同学应该可以搜到一些相关的事件。

不得不说 Google 的程序员也并不是事事靠谱。

RPC 进行服务集成的时候,要注意不要被某些不稳定的服务慢响应拖死,要注意设置超时,熔断。

服务与服务之间要能找得到彼此,有两种方式,一种是基于服务注册中心的服务发现。

一种是基于 dns 的服务发现。基于 DNS 的现在应该不太多了。

除了 RPC 以外,还可以使用消息来进行服务间的集成。

使用 MQ 也可以模拟 RPC 的 request/response,不过这样会使你的服务强依赖于 MQ,如果 MQ 故障,那整个系统随之崩溃。

一般我们使用的是 broker-based mq 通信,但也有无 broker 的异步通信,书中这里举了个 ZeroMQ 的例子,之前个人不是很了解,需要再调研一下。

Event Sourcing

event sourcing 是一种特殊的设计模式,不记录实体的终态,而是记录所有状态修改的事件。然后通过对事件进行计算来得到实体最终的状态。

但这样事件累积太多以后会有性能问题,所以可以对一部分历史数据进行计算,得到一个中间的快照,之后的计算在快照的基础上再叠加。

看起来方案很酷,我们在实际工作中也确实在一些下游的计算逻辑中使用过这种设计模式,不过它也是有缺陷的:

  • 事件本身结构变化时,新老版本兼容比较难做
  • 如果代码中要同时处理新老版本数据,那么升级几次后会非常难维护
  • 因为容易追溯,所以删除数据变得非常麻烦,GDPR 类的法规要求用户注销时必须将历史数据删除干净,这对 Event Sourcing 是一个巨大的挑战

在使用异步消息来做解耦的时候,我们也会遇到一些实际的业务问题:

  • 这个数据我需要,你能不能在消息里帮我透传一下
  • 你重构的时候怎么把这个字段删了,我还要用呢
  • 你们原来的状态机变更都有 event,本来有三个,怎么现在变成两个了?
  • 你们 API 故障的时候,怎么消息顺序乱了?

     

这要求我们能有对上游的领域事件进行校验的系统,这里可以参考 Google 的 schema validation 这个项目,之前我在 《MQ 正在变成臭水沟》一文中有详述。这里就不提了。

查询模式

很多查询逻辑其实就是进行 API 的数据组合,这个涉及到需要组合数据的 API 组合器,和数据提供方:

  • API 组合器:通过查询数据提供方的服务实现查询操作
  • 数据提供方:提供数据

     

虽然看起来挺简单,写代码的时候,下面这些问题还是难处理:

  • 谁来负责拼装这些数据?有时是应用,有时是外部的 API Gateway,难以定立统一的标准,在公司里也经常扯皮
  • 增加额外的开销-一个请求要查询很多接口
  • 可用性降低-每个服务可用性 99.5%,实际接口可能是 99.5^5=97.5
  • 事务数据一致性难保障-需要使用分布式事务框架/使用事务消息和幂等消费

CQRS

业务开发经常自嘲是 CRUD 工程师,在架构设计里,CRUD 的 R 可以单独拆出来,像下面这样。

拆出来的好处?互联网大多是写少读多的服务,将关注点分离之后,读服务和写服务的存储可以做异构。

比如写可以是 MySQL,而读则可以是各种非常容易做横向扩展的 NoSQL。碰到检索需求,读还可以是 Elasticsearch。

读服务可以订阅写服务的 domain event,也可以是 MySQL 的 binlog。

在消费上游数据时,需要根据业务逻辑去判断有些状态机要怎么做处理。这里其实数据上是有耦合的,并不是放个 MQ 和 domain event 就能解耦干净了。

CQRS 的缺点也比较明显:

  • 架构复杂
  • 数据复制延迟问题
  • 查询一致性问题
  • 并发更新问题处理
  • 幂等问题需要处理

外部 API 模式

现在的互联网公司一般客户端都是多端,web、移动、向第三方开放的 open API。

如果我们直接把之前用拆分方法拆出来的这些内部 API 开放出去,那未来内部的 API 想升级就会非常非常地麻烦。

在单体时代,客户端走弱网 internet,只需要一次调用。微服务化以后,如果不做任何优化,那在 internet 这种慢速网络上就需要有多次调用。

这就是我们为什么需要中间有一个 API Gateway 的原因。

有了 Gateway 之后,在 internet 依然还是一次调用,在内部 IDC 强网络的状态下多次网路调用相对没有那么糟糕。

API Gateway 涉及到这些不同端的 API Gateway 应该要谁来维护的问题。下面是一种理想的情况,Mobile 团队负责维护他们在 Gateway 里的 API(也可能是单独的 Gateway),web 端团队维护 web 的 Gateway,open API 团队负责维护第三方应用的 Gateway API。

网关基础设施团队负责提供这三方都需要的基础库。

在研发 API Gateway 的时候,我们有多种可选项:

  • 直接使用开源产品

  • Kong

  • APISix

  • Traefik

  • 自研

  • Zuul

  • Spring Cloud Gateway

  • RESTFul 自己做一个

  • GraphQL 自己做一个

开源的 API Gateway 大多不支持 API 数据组合功能,所以公司内的 API Gateway 有时候有两层,一层是 nginx 之类的负责简单路由和鉴权的 gateway,后面还有一个业务的 BFF 来负责拼装端上需要的数据。

如果我们都是自研,那就可以在一个模块上把 API Gateway 需要的功能都实现。这里经常讨论的一个问题是,我们是要使用 REST 还是类似 GraphQL 的图查询。

Netflix 的工程师在 2012 年发表过一篇文章:

《为什么 REST 让我半夜睡不着》,老哥还挺幽默。内容大概是讲 Netflix 要面对成百上千的终端设备,Netflix 曾经希望能给所有终端提供大一统的方案,大家使用统一的 REST API,但后来发现这种统一的方式是放弃了对任一有自己特性的设备的优化,比如有些设备内存小,有些设备屏幕小,这些设备上你返回的很多字段数据对他们来说根本就用不上,纯粹是浪费网络带宽。有些设备用流式响应比返回完整响应性能更好,这也应该是要考虑的优化点。

所以 Netflix 做了一个叫 falcor 的方案,其实和后来 Facebook 的 GraphQL 非常类似,是用 JSON Graph 来描述内部 API 能提供的数据,然后用 JS 来定制图上的查询。

现在大多数人比较熟悉的还是 GraphQL:

GraphQL 是个好东西,但之前我个人对使用 GraphQL 一直持怀疑态度,主要是因为:

  • 网关容易被客户端的修改直接带崩
  • 稳定性非常难保障
  • 中文互联网上讲 GraphQL 的基本都没有提到限流,或者一笔带过,这是不太负责任的

直到最近我发现国外某公司公开了他们的 GraphQL 限流方案,这个方案非常有意思。

这本《微服务架构模式》难能可贵的地方在于几乎所有的技术方案,都很详尽地给出了优劣,这在其它书里是比较少见的。我们在某些人的文章和方案里永远只能看到优点,但在实践中落地技术方案的时候,其实更关注缺陷。对缺陷有心理准备,才不会在新方案出问题的时候心慌。

个人觉得这本书,无论是对微服务刚入门,或是工作几年的人,都值得一读,电子版已经整理好了

完整详解阿里Java P5-P8百万年薪架构师的技能要求! 疫情高峰期过去了,金九银十已经进入尾声了,最近很多同学给我留言:关于阿里的Java P系列薪资与技能的问题,本篇统一解答大家的疑惑。 先晒一个大家最关心的薪资结构,最新的薪资结构,个人建议翻倍参考。 薪资确实比较诱惑人啊,但问题的关键是: 自己的能力是否能匹配这个薪资呢? 对应岗位的技能要求是怎样的呢? 需要重点准备哪些面试技能? 好吧,下面我就逐一解读阿里Java 从P5到P8架构师的岗位与技能要求。 01 P5 Java高级工程师 1.岗位要求: 能独立完成日常工作,并能够对一些方案提出自己的建. 阅读详情

相关推荐

微服务架构设计模式

介绍微服务架构常用的设计模式,如事件驱动、CQRS、SAGA等,这是笔者通过学习和实践得出的方法论,让你微服务架构会面对的难题的解决方案有一个初步的了解

maquealone的博客 1531

《微服务架构设计模式》的一点总结

经常翻阅微服务材料的话,总会碰到 microservices.io 这个网站,总结了微服务方方面面的设计模式。网站的作者是 Chris Richardson。这些相关的经验在 2018 年...

weixin_45583158的博客 403

docker配置国内镜像源

【代码】docker配置国内镜像源。

愿听风成曲 9616

微服务架构设计模式综述

随着微服务的大量应用,在实践中也会遇到很多之前单体架构所没有的问题,微服务架构设计模式也应运而生。架构方面的权威Chris Richardson先生从多个角度归纳了42个设计模式,我将其归纳整理如下表,以飨读者。后面会陆续出关于微服务架构设计模式的文章,更加深入的阐述Richardson先生关于微服务架构设计模式的理解。 微服务架构设计模式 用图来自于Chris Richardson先...

Guilai1990的博客 2136

腾讯游戏安全组件运行异常的全面解决方案

在使用腾讯游戏时,玩家可能会遭遇游戏安全组件运行异常的问题,这不仅影响游戏的正常启动,还可能在游戏过程中引发一系列问题。本文将详细介绍解决腾讯游戏安全组件运行异常的几种方法,帮助玩家重拾游戏乐趣。腾讯游戏安全组件运行异常是一个复杂的问题,可能涉及服务设置、游戏更新、系统环境优化以及硬件与驱动检查等多个方面。最后,希望本文能帮助玩家顺利解决腾讯游戏安全组件运行异常的问题,让玩家能够无忧无虑地享受游戏带来的乐趣。首先,我们需要从系统的服务管理入手,检查与游戏安全组件相关的服务是否正常运行。

nntxthml的博客 5815

从零到一:手把手教你用YonBuilder for NCC搭建NC Cloud 2021.11开发环境(含避坑指南)

本文详细指导如何使用YonBuilder for NCC搭建NC Cloud 2021.11开发环境,涵盖硬件要求、软件安装、YonBuilder配置及常见故障排除。特别提供避坑指南,帮助开发者快速上手NCC开发,确保环境配置的原子化分解和开发思维的体系化建立。

weixin_42523326的博客 347

微服务是否适用于我的系统——《微服务架构设计模式》读书笔记

本文主要是《微服务架构设计模式》的摘抄笔记,对于想了解微服务架构是否适用于自己系统的朋友,可以一看: 一、写在最前面 第一、编写简洁的代码和使用自动化测试至关重要,因为这是现代软件开发的基础。 第二、关注微服务的本质,即服务的分解和定义,而不是技术,如容器和其他工具。 第三、确保你的服务松耦合,并且何以独立开发、测试和部署,不要搞成分布式单体,那将会是巨大的灾难。 第四、不能只是在...

Pc620的专栏 1537

Multisim14.0仿真(五十九)基于74LS161的24进制计数器应用设计

它具有同步预置、异步清零功能,支持并行数据加载,并可在计数使能控制下进行二进制计数。:低电平时,在下一个时钟上升沿加载输入数据(A, B, C, D)。(多个 74LS161D 串联构成 8 位、12 位等更长计数器)。低电平时,下一个时钟上升沿加载输入数据(A, B, C, D)。:低电平有效,立即清零计数器(不受时钟控制)。均为高电平时,每个时钟上升沿计数。:两者均为高电平时,计数器才能递增。:立即清零计数器(不受时钟控制)。(通过预置初始值控制计数范围)。(计数范围:0 ~ 15,即。

corlin6688的博客 4765

微服务架构设计模式 读书笔记一

作者:[美] 克里斯·理查森(Chris Richardson) 是Java社区的著名布道师、JavaOne等知名技术大会的常年主讲人,也是《POJOs in Action》(中文名《用轻量级框架开发企业应用》)一书的作者。 微服务领域公认的思想领袖,并定期在国际会议上发表演讲。 https://microservices.io的创建者,该网站专注于提供微服务架构模式语言。还包含指向其他资源(如文章、演示文稿和示例代码)的链接 什么是微服务? 微服务-也称为微服务架构,是一种架构方式,可将应用程序构造为.

重露成涓滴 489

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2448

X-AnyLabeling-main标注YOLO关键点POSE

同一物体的框和点的 群组编号 要相同。代表这些点和方框是同一物体上的。标注方框之后记得把后面的。顺序要和你标注的顺序一致。写入1,而且之后的点的。配置导出文件.yaml。

qq_53545309的博客 2113

《微服务架构设计模式》读书笔记——服务的拆分策略

目录 前言 1. 微服务架构到底是什么 1.1 软件架构的4+1视图 1.2 应用程序的两个层面需求 1.3 分层式架构风格 1.4 关于架构风格的六边形 1.5 什么是服务 1.6 微服务架构的架构风格 2 为应用程序定义微服务架构 2.1 定义应用程序架构的三步式流程 2.2 第一步:识别系统操作 2.2.1 识别系统操作的步骤与一些事项: 2.3 第二步:定义服务 2.3.1 根据业务能力进行服务拆分 2.3.2 根据子域进行服务拆分 ..

wdj_yyds的博客 707

YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发

YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4736

P5-P8都需要掌握哪些技术,按照罗列的技术栈查漏补缺,顺利进大厂

最近,由于公司项目比较忙,基本上都是996的工作方式,但粉丝朋友也不能落下。为此,特地整理了一份P5-P8都需要掌握哪些技术,按照罗列的技术栈查漏补缺,顺利进大厂。其实,通过写作和技术分享...

猿码天地 3783

【RBF预测】基于粒子群算法优化RBF神经网络实现数据回归预测含Matlab源码

1 简介 原油含水率预测对于确定油井水,油层位以及估计原油产量有着非常重要意义.BP神经网络是最近常用的原油含水率预测方法,然而,由于BP神经网络存在容易陷入局部极小值,收敛速度慢等问题,影响了其预测的实用性和准确性,对此,提出基于粒子群优化RBF神经网络(PSO-RBFNN)的原油含水率预测方法,粒子群优化算法用于RBF神经网络参数优化.在分析原油含水率预测的影响因素基础上,建立粒子群优化RBF神经网络的原油含水率预测模型.实验结果表明,在原油含水率预测中,基于粒子群优化RBF神经网络比BP神经网络有着

qq_59747472的博客 1236

VB摄像头监控

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

Go微服务架构实战指南:基于building-microservices-youtube的企业级解决方案

在当今云原生时代,单体应用正面临前所未有的挑战:部署困难、扩展性差、技术栈固化。如何将庞大的单体应用拆分为可独立开发、部署和扩展的微服务?building-microservices-youtube项目提供了一个完整的Go语言微服务实战案例,展示了如何通过清晰的服务边界、高效的通信机制和可靠的架构设计,构建可扩展的分布式系统。 ## 微服务拆分:从单体到分布式系统的演进之路 传统单体应用将所有

gitblog_00056的博客 972

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

基于SpringCloudAlibaba的微服务架构设计模式

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号。

huxian1234的专栏 1506

efm32 入门.pdf

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

太厉害了!GitHub上标星80K的微服务架构和架构设计模式笔记,看完跪了

这份文档围绕微服务的架构设计,深入浅出地介绍了微服务与SOA等其他架构的区别,软件系统服务的拆分策略,微服务的同步和异步通信模式,如何使用微服务进行事务管理,如何在微服务架构中设计业务逻辑。详细地介绍SpringBoot的开发,包括使用它的优缺点,以及在企业级开发中常用的工具包的整合,包括面向切面编程、Web开发、文档管理和调度管理,最后结合Dubbo完成一个示例性的分布式工程。主要讲解Docker的基础操作,介绍微服务中所用到的容器相关的技术,最后给出通用的基于容器的私有云架构。

2401_84447297的博客 1090

GitHub标星75K!微服务架构以及架构设计模式笔记,看完我爱了!

【文末自取】

jcc4261的博客 749

为面阿里P8,我肝了一份651个技术分支的脑图,要么?(限时领)

这半年,很多人选择安稳,我偏偏不。。 哥们我就想要跳槽,要不干脆去面个【P8 级架构师】吧,也算是摸摸行情,为后面的一些安排提前做好规划~ 差点儿就栽了,但哥一直都是超稳的,妥妥的。过程中发现,P8架构师岗的用人要求,比我预估的更体系化了,需要拥有需求至简抽象的思维模型、掌握哲学本质的思维模型、根据场景 Balance 的思维模型等。 准备面试的这段时间,主要是参考了之前在马士兵教育看见的那份花费大精力打磨的P8架构师的技术大纲,还有N多的大厂面试题,使我没有折在向 P8 进阶的路上,太棒了! 好.

文章中资料均可获取,有需要请添加yunduoa2019即可 3322

最全阿里技术P系列解读:P5-P8的技能要求和薪资结构

大家都熟知阿里技术的P系列,从P5-P10都有,越往上走人数越少,比较急缺的是P6-P8的岗位,以下我分别谈谈阿里Java的P6-P8的技能要求的区别,文末有阿里Java架构师进阶88期专题资料~一、 阿里P5(高级研发工程师)1.工作要求能独立完成日常工作,并能够对一些方案提出自己的建议。基本考核就是能上手独立完成工作,熟练掌握。2.技能要求(熟练)程序设计和开发。工作中需用到的Java开发的技...

weixin_33961829的博客 3748

阿里P8架构师推荐学习的44个微服务架构设计模式,总共451页

本文的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。本文不仅讨论了微服务架构的好处,还描述了它们的弊端。读者将掌握如何在使用单体架构和使用微服务架构之间做出正确的权衡。谁应该阅读本文?本文的重点是架构和开发,适合负责开发和交付软件的任何人(例如开发人员、架构师、CTO或工程副总裁)阅读。本文侧重于解释微服务架构的设计模式和其他概念。无论读者使用何种技术栈,我的目标都是让你们可以轻松读懂这本文。你只需要熟悉企业应用程序架构和设计的基础知识即可。

程序员高级码农的博客 678

一文读懂Springy-Store-Microservices:Spring Cloud微服务架构全景与8大组件深度解析

Springy-Store-Microservices 是一个基于 Spring Boot 与 Spring Cloud 构建的完整微服务实战项目,用一套"网上商店"业务演示云原生微服务架构:API 网关、服务注册发现、配置中心、OAuth2 授权、响应式编程、事件驱动(RabbitMQ/Kafka)与分布式链路追踪(Zipkin)一应俱全。对于想系统学习 Spring Cloud 微服务架构的新

gitblog_01068的博客 466

java p8级别_对标阿里P7-P8高级Java程序员的进阶技术路线

喜欢的可以转发收藏转发加关注最近招聘,很多工程师,招聘,我发现能够最终拿到offer的人,基本上在看到简历的那一瞬间就已经定下来了,后续的面试只不过是一种验证而已(注意,是验证,而不是走过场),除非你面试过程中犯错误,或者你不想来,否则,那个offer一定是可以拿下的。那些拿下offer的人,基本上都有这么一些特征1. 学校不错,一般都是985,211,如果学校一般,那么你下面的2和3满足的话,问...

weixin_39625975的博客 1578
上一篇: 深入源码剖析ThreadPoolExecutor的工作原理
下一篇: 我没听错吧!都22年了还有人不会算法?
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值