分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

【无标题】STM32F767串口空闲中断+DMA实现不定帧长度的接收 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、配置串口与DMA二、空闲中断服务函数二.串口+DMA发送三、主函数总结 前言 提示:这里可以添加本文要记录的大概内容: 使用STM32F767实现串口空闲中断+DMA传输接收不定帧长度数据,以及当中可能遇到的错误总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、配置串口与DMA //硬件模块配置可直接通过CUBEMX配置 void MX_USART1_UART_Init(void) { huart1.In. 阅读详情

曾几何时,“并发高就分库,数据大就分表”已经成了处理 MySQL 数据增长问题的圣经。

面试官喜欢问,博主喜欢写,候选人也喜欢背,似乎已经形成了一个闭环。

但你有没有思考过, 分库分表真的适合你的系统吗?

分表

在业务刚刚发展起来的时候,流量全部达到了一个 MySQL 上,用户信息全落到了 user 表。

后来,user 表的数据量越来越大了。

于是,你做了一次垂直拆分,将原来的 user 表拆分成了新的 user 表和 user_details 表。

这样一拆之后,用户的信息分散到两个表,user 表面的数据量一下就变小了,user 表面数据量过大的问题暂时就解决了。

但随着业务的发展,线上的流量越来越大,单个 MySQL 已经扛不住流量的压力了。

当个库承受不住压力的时候,就需要分库了。

分库

顾名思义,分库就是将一个库拆成多个库,让多个库分担流量的压力。

拆成多个库也意味着进行了分表,也就是说分库一定分表,分表不一定分库。

我们可以根据 偏应用 还是 偏 DB ,将分库分表的实现方式分成三种类型:

  • JDBC 代理模式
  • DB 代理模式
  • Sharding On MySQL 的 DB 模式

JDBC 代理模式

JDBC 代理模式是一种无中心化的架构模式。ShardingSphere-JDBC 就是 JDBC 代理模式的典型实现。

通常以 jar 包括提供服务,让客户端直连数据库,这种模式无需额外部署和依赖,可理解为增强版的 JDBC 驱动。

JDBC 代理模式虽然简单,但违背了 DB 透明的原则,侵入性比较高,需要针对不同的语言编写不同的 Driver。

美团的 Zebra、MTDDL,阿里 TDDL 都是基于这种模式的实现。

DB 代理模式

DB 代理模式是中心化的架构模式。ShardingSphere-Proxy 就是 DB 代理模式的经典实现。

这种模式旨在实现透明化的数据库代理端,并独立于应用部署,因为独立部署,所以对异构语言没有限制,不会对应用造成侵入。

DB 代理模式比 JDBC 代理模式消耗的连接数会少,相对来说性能也会更好。

但中心化的设计也带来了单点的问题,为了保持高可用和高性能,还需要引入 LVS/F5 等 VIP 来实现流量的负载均衡,如果跨越 IDC,还依赖诸如 DNS 进行 IDC 分发,大大拉长了应用到数据库的链路,进而提高了响应时间。

阿里的 MyCat、美团的 Meituan Atlas 和百度 Heisenberg 就是基于 DB 代理模式的实现。

Sharding On MySQL

Sharding On MySQL 相当于屏蔽了分库分表的操作,是运维和中间件结合的沉淀,比较典型的例子是阿里的 DRDS。

这种模式让分库分表变得模糊,对应用来说,更像是一个封装了 MySQL 的新型数据库。

虽然用户使用变得更简单了,但简单的背后是运维的沉淀,分库分表该存在的问题它依然存在。

分库分表的成本

实现分库分表的方式有很多,但不同模式的实现似乎都是在弥补 MySQL 不支持分布式的缺陷。

分库分表这种强行让 MySQL 达到一个伪“分布式”的状态,也带来了一些新的问题,比如:

  1. 功能限制问题 :分库分表后跨维度 join、聚合、子查询不复存在,唯一键、外键等全局约束也只能靠业务保障,DB 慢慢弱化为存储。
  2. 运维复杂度问题 :分库分表后的多个库表的管理麻烦,运维成本非常高,数据查询也很麻烦。
  3. Sharding Key 问题 :非 Sharding key 的查询需要做额外的冗余处理,需要引入 Elasticsearch、ClickHouse 等其他节点,进一步提高了系统的复杂度。
  4. 唯一 ID 问题 :分库分表后唯一一个 ID 得不到保障,需要唯一 ID 进行改造。
  5. 分布式事务问题 :MySQL 自带的 XA 柔性事务性能太低,需要引入新的分布式事务解决方案。

NewSQL

从上文得知,分库分表需要牺牲 MySQL 的一些功能,还带来许多新的问题。

那有没有一种方案,既能拥有 MySQL 的功能,又能支持数据的可扩展?

有。那就是 NewSQL。

NewSQL 是一类关系数据库管理系统,旨在为在线事务处理(OLTP) 工作负载提供 NoSQL 系统的可扩展性,同时保持传统数据库系统的 ACID 保证。

国内比较知名的 NewSQL 有阿里的 OceanBase、腾讯的 TDSQL、PingCAP 的 TiDB。它们既有 MySQL 的功能,又有分布式可扩展的能力。

笔者对阿里的 OceanBase 只能说是略懂皮毛,就不过多描述。

我们重点看一下腾讯的 TDSQL 和 PingCAP 的 TiDB。

从两者的架构图(省略了部分模块)上可以看出,TDSQL 和 TiDB 的架构只有一些命名差别,可以说几乎一模一样。

两者整体来说分为三个部分:

  1. 计算 :负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划转发给底层的存储层执行。(TDSQL:SQL Engine 、TiDB:TiDB-Server)
  2. 存储 :分布式 KV 存储 ,类似 NoSQL 数据库,支持弹性扩容和缩容。(TDSQL:TDStore 、TiDB:TiKV)
  3. 管控 :整个集群的元信息管理模块,是整个集群的大脑。(TDSQL:TDMetaCluster 、TiDB:Placement Driver )

两者核心的存储模块(TDStore/TiKV),都是基于 RocksDB 开发而来,都是 KV 存储 的模式。

RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与读写功能的 LSM-tree 架构引擎。

底层利用了WAL(Write Ahead Log)技术和Sorted String Table,比 B 树类存储引擎更高的写吞吐。

NewSQL 平滑接入方案

因为笔者落地过 TiDB,所以会以 TiDB 为例描述如何接入 NewSQL,做到不影响线上使用的平滑迁移。

第一步:初始状态,所有线上读和写都落到 MySQL。

第二步:将 TiDB 作为 MySQL 的从节点接入系统,所有线上读写还是都落到 MySQL,日末通过脚本或者任务验证 MySQL 的数据和 TiDB 的数据是否一致,这一步主要验证 MySQL 数据同步到 TiDB 没有问题。

第三步:将部分读切换到 TiDB,这一步主要验证 TiDB 同步的数据读没有问题,验证系统 SQL 能正常在 TiDB 执行。

第四步:断掉 MySQL 和 TiDB 之间的同步,双写 MySQL 和 TiDB,所有的线上读流量都落到 MySQL。

第五步:将部分读流量切到 TiDB,验证 TiDB 写入的数据能够正常读取。这一阶段可以将部分幂等任务同时在两个数据源上执行,验证两者数据是否一致。

第六步:将所有的线上读流量切到 TiDB,同时保持双写,如果出问题随即切到 MySQL。

第七步:断掉 MySQL 的写流量,将 MySQL 作为 TiDB 的一个从库,作为降级使用。

整个方案的基础是: TiDB 兼容 MySQL 协议和 MySQL 生态 。

这个方案是建立在 完全不信任 TiDB 的基础上设计的,验证了 TiDB 和 MySQL 的契合点,所以整体会比较繁琐,实际落地的时候可以根据情况省略一部分步骤。

NewSQL 真的有那么好吗?

NewSQL 并是不万能的,也不必去过于神化 NewSQL,国内比较知名的几种 NewSQL 或多或少都存在部分功能缺陷,以 TiDB 为例:

  1. TiDB 的自增 ID 只能保证单个 TiKV 上的自增,并不能保证全局自增。
  2. 由于 TiKV 存储是根据 key 的二进制顺序排列的,使用自增 ID 可能会造成热块效应。
  3. TiDB 默认 RC(读已提交)的事务隔离级别,并且不支持 RR(可重复读)隔离级别,虽然提供了基本等价于RR的SI(Snapshot Isolation),但还是存在 写偏斜 问题
  4. TiDB 的点查(select point)性能比 MySQL 要差不少,在几个亿级别的数据量才能勉强和 MySQL 打平。
  5. 因为底层基于 Raft 协议做数据同步,所以 TiDB 延迟会比 MySQL 要高。
  6. ...

所以说,NewSQL 也并不是屠龙刀,需要根据实际应用去评估这些缺陷带来的影响。

NewSQL 的应用

NewSQL 在国内其实已经发展了很多年,OceanBase 诞生于 2010 年,TDSQL 可追溯到 2004 年,TiDB 诞生于 2015 年。

三者在国内外积累了不少的客户案例。

OceanBase

  1. OceanBase 已经覆盖 蚂蚁集团 100%核心链路,支撑全部五大业务板块。目前运行数十亿条不同的 SQL、数据量达数百 PB、服务器核数过百万。
  2. 中国工商银行 全行业务都使用 OceanBase,包含不限于存、贷、支付结算及创新业务等。
  3. OceanBase 凭借混合云架构、高可用、Oracle 兼容等特性,通过分布式中间件、金融套件、移动开发平台集成解决方案,支撑 网商银行 核心系统数字化转型。
  4. 招商银行 的“海量行情系统”和“历史收益系统”就是采用 OceanBase 作为底层数据库。

TDSQL

  1. 微众银行 实现了 TDSQL 私有化部署,是一个典型的两地多中心架构。
  2. 富途证券 的港股交易系统、东吴证券新一代核心交易系统底层存储都是 TDSQL。
  3. 数字广东 粤省事 、 深圳地铁码上乘车 等业务都是在 TDSQL 上面跑的。
  4. 平安银行、中国农业银行、华夏银行、中国银行 都有相关业务在 TDSQL 上。

TiDB

  1. 北京银行 的网联支付业务,所有北京银行的银行卡绑定在比如支付宝、微信上的支付操作,后端的数据库就是运行在 TiDB,而且是一个典型的两地三中心同城双活的架构,这个业务非常的关键,如果业务中断超过一定时间,就是需要上报银监会的。
  2. 日本排名第一的支付公司—— Paypay ,钱包和支付的业务都在 TiDB 上面。
  3. 中国人寿 的寿财险业务,正在用 TiDB 陆续替换 Oracle 。
  4. 肯德基 所有的会员登录系统,包括 KFC 的 APP 以及第三方登录,后台数据库都是用的 TiDB ,这套业务 2020 年 4 月份上线,已经经历过多次肯德基的大促等活动,目前肯德基的后台支付系统也已经切换到 TiDB 上。
  5. 麦当劳 的账户以及订单系统全部基于 TiDB,如果 TiDB 出问题了,那么国内所有的麦当劳门店,包括线上和线下的点单系统都将没法正常运行。
  6. 微众银行 最核心和最赚钱的微粒贷业务,后台的全量批处理业务就运行在 TiDB 上面。

分库分表和 NewSQL 到底怎么选?

分库分表是一个重量级的方案,它会带来很多新的问题,对基建和运维的要求也很高。

NewSQL 功能强大但也有功能缺陷。

如何去抉择需要根据系统现状和公司情况去综合判断。

分库分表是一个重量级的方案,如果 读写分离 、 冷热分离 等轻量级方案能解决的问题就没必要上 分库分表 。

如果缓存分流和读写分离都扛不住了,且你身处互联网企业,基建尚可且运维也跟得上, 分库分表 仍然是第一选择;

但如果你身处一个传统的企业,基建很差甚至没有基建,那么你可以考虑考虑 NewSQL 。

技术没有高低之分,能解决问题的技术就是好技术,技术方案选择上切莫炫技,也切勿过度设计!

《寻秦OL》.ani动画逆向解析:二进制结构与Unity重实现 动画文件格式是游戏资源逆向的核心入口,其本质是一组按特定规则组织的二进制数据流。理解魔数识别、字节序、字段对齐与差分编码等底层原理,是解析非标准格式的关键前提。技术价值在于绕过黑盒协议,直接从静态客户端提取可验证的原始语义;典型应用场景包括老游戏复刻、美术资产抢救、引擎跨平台迁移及教学级逆向训练。本文以《寻秦OL》的`.ani`文件为实例,深入剖析其C风格结构布局、GB2312中文命名、16位定点数旋转表示及帧主序差分存储机制,并基于C#在Unity中完成从字节流到AnimationClip的端到端重建,覆 阅读详情

相关推荐

离线反激转换器反馈环路设计:从理论到实践的Type II补偿器详解

在开关电源设计中,反馈环路稳定性是决定电源性能与可靠性的核心。其本质是通过补偿网络对功率级的小信号特性进行校正,以构建一个具有足够相位裕度和增益裕度的闭环系统。反激转换器作为一种广泛应用的隔离拓扑,其功率级在连续导通模式(CCM)和非连续导通模式(DCM)下呈现不同的零极点特性,这直接决定了补偿器的选型。Type II补偿器因其传递函数中固有的积分环节、低频零点与高频极点,恰好能与反激功率级的1P2Z(一个极点、两个零点)特性形成互补,有效塑造理想的回路增益曲线,实现快速稳定的动态响应。本文聚焦于采用TL4

weixin_30162121的博客 501

分库分表方案对比

房晓乐(葱头巴巴),PingCAP 资深解决方案架构师,前美团数据库专家、美团云 CDS 架构师、前搜狗、百度资深 DBA,擅长研究各种数据库架构,NewSQL 布道者。 原文链接:https://dbaplus.cn/news-11-1854-1.html 一、分库分表的背景 在谈论数据库架构演变和优化时,我们经常会听到分片、分库分表(Sharding)这样的关键词,在很长一段时间内,在各个公司、各中技术论坛里都很热衷谈论各种分片方案,尤其是互联网非常普及的 MySQL 数据库。但对笔者来说,分片、

ice-wee的专栏 3421

实战指南:从零搭建ROS2 + Cartographer 2D激光SLAM系统

本文详细介绍了如何从零开始搭建ROS2与Cartographer结合的2D激光SLAM系统,涵盖环境准备、激光雷达驱动配置、Cartographer安装与参数调优等关键步骤。通过实战案例和常见问题解决方案,帮助开发者快速掌握激光雷达建图技术,提升机器人自主导航能力。

weixin_29062255的博客 403

你觉得分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

曾几何时,“并发高就分库,数据大就分表”已经成了处理 MySQL 数据增长问题的圣经。面试官喜欢问,博主喜欢写,候选人也喜欢背,似乎已经形成了一个闭环。但你有没有思考过,分库分表真的适合你的系统吗?分表在业务刚刚发展起来的时候,流量全部打到了一个 MySQL 上,用户信息全落到了 user 表。后来,user 表的数据量越来越大了。于是,你做了一次垂直拆分,将原来的 user 表拆分成了新的 user 表和 user_details 表。这样一拆之后,用户的信息分散到两个表,user 表的数据量一下就变小了

资料免费分享,点击名片 161

OpenTCS打造移动机器人交通管制系统(四)

先分析下OpenTCS的一些策略方面的东西,这是OpenTCS的基础。 首先需要先明确下OpenTCS内核中的三个概念: 路由(Route) : 决定了车辆通过什么样的方式和算法来获得一段路径,未来车辆将沿着此路径运行。 派遣(Dispacher): 决定了一个订单应该关联哪一辆小车,即为订单分配车辆和为车辆分配订单。 调度(schedule):狭义上的调度,交通管制的核心,决定了何时分配...

白色冰激凌的技术专栏 5272

TMC5160电机驱动芯片实战:从模式选择到参数配置全解析

本文深入解析TMC5160电机驱动芯片的实战应用,涵盖三种核心工作模式的选择策略与参数配置。详细介绍了全功能运动控制、外部脉冲驱动及独立驱动模式的应用场景与配置要点,并提供了电流控制、静音优化、SPI通信及高级功能(如StallGuard2)的调优指南,帮助开发者充分发挥其高精度、低噪音性能。

weixin_29179311的博客 323

分库分表不一定适合你的系统,聊聊分库分表和NewSQL如何选择

曾几何时,“并发高就分库,数据大就分表”已经成了处理 MySQL 数据增长问题的圣经。面试官喜欢问,博主喜欢写,候选人也喜欢背,似乎已经形成了一个闭环。但你有没有思考过,分库分表真的适合你的系统吗?分表在业务刚刚发展起来的时候,流量全部打到了一个 MySQL 上,用户信息全落到了 user 表。后来,user 表的数据量越来越大了。于是,你做了一次垂直拆分,将原来的 user 表拆分成了新的 user 表和 user_details 表。这样一拆之后,用户的信息分散到两个表,user 表的数据量一下就变小了

jjc4261的博客 246

Qlib上手学习记录

Qlib 是一个面向人工智能的量化投资平台,其目标是通过在量化投资中运用AI技术来发掘潜力、赋能研究并创造价值,从探索投资策略到实现产品化部署。该平台支持多种机器学习建模范式,包括有监督学习、市场动态建模以及强化学习等。真的是走了很多弯路step 1. 使用 ananconda 建立环境,要主要必须是 python 3.8失败的下了以后 进入 glib folder 后执行是会报错的,不管你还什么source 都一样,整了很久使用前最好看下这个。

chenchihwen的专栏 3100

分库分表真要凉凉?聊聊我这些年踩过的坑和对NewSQL的真实看法

分库分表和NewSQL各有各的坑,关键是你有没有能力踩过这些坑。我见过用分库分表用到怀疑人生的团队,也见过引入NewSQL后天天被故障折磨的团队。技术没有绝对的好坏,只有合不合适。记得我一个朋友(某知名外卖平台架构师)说过一句话:“我宁可用熟悉的技术堆砌解决方案,也不要用陌生的’完美’技术。因为前者的坑我都知道在哪,后者的坑我可能都发现不了。这话我是服气的!对了,说到坑,我还想起一个血泪史…算了,篇幅有限,下次再聊吧!各位铁子们,有问题欢迎评论区交流,我看到一定回!

MoYanLunTan的博客 1494

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2859

计算机网络Wireshark实验(西安交通大学)

实验名称 计算机网络Wireshark实验 实验日期 2021 年 5 月 17 日 实验地点 XJTU

沉鱼叶的博客 1816

兄弟,聊聊架构师级MySQL的Client和Proxy分库分表吧!

孙玄,前58集团技术委员会主席,前转转二手交易平台首席架构师。今天想跟你聊点儿企业里那些年薪百万的架构师,他们的架构设计思维是如何升级的,我们来聊点儿干的!最近听了玄姐聊技术,对架构上的...

公众号-老炮说Java 482

游戏大厂状态同步与帧同步技术全解析——让虚拟世界万物协同的“时间齿轮”

本文深入解析了大厂游戏开发中的两种核心同步技术:状态同步和帧同步。状态同步适合大型MMO和FPS游戏,由服务端计算并广播世界状态;帧同步则通过统一操作输入实现MOBA和RTS游戏的绝对公平。文章详细比较了两者的差异、适用场景和底层实现原理,并揭秘了《王者荣耀》《PUBG》等热门游戏的同步机制。同时探讨了本地预测、延迟补偿、防作弊等关键技术,以及未来AI和云游戏带来的同步新挑战,为开发者提供了全面的技术参考和实践指南。

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

TiDB与CockroachDB深度对比:NewSQL分布式数据库选型与实战指南

在数据量爆炸式增长的时代,传统单机数据库面临扩展性瓶颈,分布式数据库应运而生。其核心原理是通过数据分片、多副本和分布式共识协议,在保证ACID事务的同时实现水平扩展。这项技术的核心价值在于,它让应用在享受SQL便利性和强一致性的同时,获得了近乎无限的横向扩展能力,从而支撑高并发在线交易处理(OLTP)和海量数据存储场景。本文聚焦于NewSQL领域两大开源代表——TiDB和CockroachDB,它们均源自Google Spanner的设计思想,但在架构哲学上却分道扬镳。TiDB采用分层解耦设计,深度兼容My

aofan9566的博客 412

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

聊聊后端开发中的数据库选型与性能优化

数据库选型的最终答案不是MySQL或PostgreSQL,而是你在业务场景中愿意为哪些性能缺陷买单。没有一个数据库能同时做到强一致性、无限扩展、低延迟和零运维成本——如果你看到某个方案声称自己做到了,它要么在吹牛,要么你还没遇到真正的海量并发。选型的过程本质上是权衡与取舍,而性能优化则是把这种取舍后的代价降到最低。别把数据库当作一个黑盒子。你往里面丢SQL,它吐结果,中间发生了什么?索引怎么走的?锁怎么加的?缓冲池够不够用?这些都是后端工程师必须直视的底层逻辑。

2501_90410679的博客 17

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

GaussDB vs MySQL:如何根据业务需求选择最适合的数据库(含成本与性能分析)

本文深入对比了华为云GaussDB与MySQL数据库的核心差异,从存算分离架构、性能成本、兼容性及迁移方案等维度,为不同业务场景提供选型指导。文章指出,GaussDB凭借其云原生架构在高并发、混合负载及弹性扩展场景优势明显,而MySQL在生态成熟度与初始成本上更具吸引力,决策应基于业务实际需求与长期规划。

p4q5r6s7t的博客 286

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

一本搞定后端技术,分布式系统实战派 #好书分享 #程序员 #分布式系统 #微服务

一本搞定后端技术,分布式系统实战派 #好书分享 #程序员 #分布式系统 #微服务

2501_93200089的博客 541

光大银行分布式数据库应用实践

主题:光大银行分布式数据库应用实践大纲:1. "分布式"在银行系统中主要解决的问题2. 分布式数据库在金融行业的应用情况现状3. 光大银行分布式数据库应用场景...

老叶茶馆 1314

MySQL 入门:最流行的开源关系型数据库介绍

MySQL作为全球最流行的开源关系型数据库,具有开源免费、支持事务、丰富索引等核心特性,适用于Web应用、电商系统等业务场景。其生态成熟、优化资料丰富,虽在大数据量处理和非结构化数据支持上存在不足,但依然是后端开发的必备技能。MySQL 8.0引入现代SQL特性,云服务提供托管方案,学习价值高且市场需求大。基础语法易学,高级优化需项目积累,掌握后能显著提升就业竞争力。

sitellla的博客 473
上一篇: Kafka 延时队列&重试队列
下一篇: CSS Houdini:用浏览器引擎实现高级CSS效果
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值