自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yes

  • 博客(104)
  • 资源 (2)
  • 收藏
  • 关注

原创 调优 mybatis saveBatch 25倍性能

稍微总结下我粗略的对比(虽然粗略,但实验结果符合原理层面的理解),如果你想更准确地实验,可以使用JMH,并且测试更多组数(如 5000,10000等)的情况。批量保存方式数据量(条)耗时(ms)单条循环插入1000121011100059927mybatis-plus saveBatch(添加rewtire参数)10002589手动拼接sql10002275100055663jdbc executeBatch(添加rewtire参数)1000324。

2023-04-04 08:32:32 1373 1

原创 扯什么 try-catch 性能问题?

行啊yes,BB是一套一套的,走请你喝燕麦拿铁!” 老陈一把拉起我,我直接一个挣脱,“少来,我刚喝过咖啡,你那个倒立洗头,赶紧的!”我立马意识到老陈想岔开话题。正所谓听话不能听一半,以前读书时候最怕的就是一知半解,因为完全理解选择题能选对,完全不懂蒙可能蒙对,一知半解必定选到错误的选项!且不说性能,这代码的目的明显是让循环内部单次调用出错不影响循环的运行,你其到外面业务逻辑不就变了吗!“切,肯定 tryfor 性能好,想都不用想,不是的话我倒立洗头!“BB 不如 show code,看到没,老陈,我把。

2023-03-18 08:27:19 498

原创 Spring核心基础知识

最后我用一段话来简单描述下 Spring 的原理:Spring 根据我们提供的配置类和XML配置文件,解析其中的内容,得到它需要管理的 Bean 的信息以及之间的关联,并且 Spring 暴露出很多扩展点供我们定制,如,我们只需要实现这个接口就可以进行一些定制化的操作。Spring 得到 Bean 的信息后会根据反射来创建 Bean 实例,组装 Bean 之间的依赖关系,其中就会穿插进原生的或我们定义的相关来改造Bean,替换一些属性或代理原先的 Bean 逻辑。

2023-02-08 21:05:34 490

原创 单元测试,写起来到底有多痛?

这个问题看似非常简单,单元测试嘛,不就是咱们开发自己写些测试类,来测试自己写的代码逻辑对不对。这句话没有问题,但是不够准确。单元。它要求我们的测试粒度,小具体来说就是一个Test仅测试一个方法,对这句话的认识非常重要。把整个项目启动,开始玩真的调用,入参是数据库里面真的值,所有的操作都落库,一个Test从controller到service再到dao,一条龙打通。这种不叫单元测试,这叫集成测试。把整个项目启动这个方法,可以看到方法内部依赖yesDao和这时候我们的思维应该是。...

2022-07-22 09:48:18 420

原创 关于一张 5 亿数据表之我与 DBA 的 battle

事情是这样的,最近公司需要统一更改一些老表的主键类型,以前表的主键都是 int 类型,这次要改成 bigint。然后我整理的时候发现一张表,里面竟然有 5 亿的数据,之前排查问题优化过几条慢 sql,这个表的查询竟然没进慢 sql 名单,有点突破我的认知,平日使用也没啥问题。后面还发现了好多张 3000w 到 8000w 的表,里面字段数量也比较正常,10个左右,也在好好的用着,所以不要死板的听网上说超过 1000w、2000w 就要分表啥的。避免提前优化,出了问题再处理才是王道,因为你提...

2022-07-03 09:10:41 240 1

原创 5000字拿下 Netty Pipeline

现在我们深入下,看看事件到底是如何在 ChannelPipeline 中传播处理的。我们都知道,在 Netty 中业务处理逻辑都被拆分成一个个 ChannelHandler 实现,我们选装的 ChannelHandler 们又组成了一条链,叫 ChannelPipeline。实际上 ChannelPipeline 就是一条双向链表,它串联起了所有 ChannelHandler ,根据处理逻辑,使用者可以编排 ChannelHandler 在 ChannelPipeline 中的顺序,灵活变化处理步骤。

2022-04-11 14:31:37 501

原创 不吹牛,吃下我这篇,Spring面试这关算是过了(近2w字,源码级)

你好,我是yes。这次是 Spring 面试题的总结,有些答案我写的都是源码级别的,吃下这篇,Spring 面试绝对稳了。好了,话不多说,发车!说下你理解的 Spring可以从两个层面来理解 Spring。第一个层面指的是 Spring Framework,是一个开源的应用框架,提供 IOC 和 AOP 降低了应用开发的复杂度。第二个层面指的是 Spring 全家桶,Spring 发展到今天可以说几乎是统领了 Java,有关 Java 应用开发所需的全部功能, Spring 都提供了解决方案,包

2022-04-02 09:40:38 4685 7

原创 关于Spring循环依赖这个高频面试题,网上有好多错误观点

你好,我是yes。今天我们来盘 Spring 的经典面试题循环依赖。这的面试题很经典,网上相应的文章很多,但是我还是想写一下,因为有些文章的观点在我看来是错的。比如有构造器就无法解决循环依赖?一定要三级缓存才能解决循环依赖?到底为什么要三级缓存?好了,话不多少,我们来盘一盘。什么是循环依赖很简单,看下方的代码就知晓了@Servicepublic class A { @Autowired private B b;}@Servicepublic class B {

2022-03-12 10:50:42 449

原创 最近我面了12个人,发现这个基础题都答得不好

你好,我是 yes。一般面试我都会问一两道很基础的题目,来考察候选人的“地基”是否扎实,有些是操作系统层面的,有些是 Java 语言方面的,还有些…最近我都拿一道 Java 语言基础题来考察候选人:能否实现一个方法,调换两个 String 对象的实际值?代码代码代码代码String yesA = "a";String yesB = "b";//让yesA=b,yesB=a?能否实现这个 swap 方法swap(yesA, yesB); 别想看这道题,其实考察了好几个点:明确 n

2022-02-26 15:54:09 29207 68

原创 搞懂 select/poll/epoll,就这篇了

首先,我们知道 select/poll/epoll 是用来实现多路复用的,即一个线程利用它们即可 hold 住多个 socket。按照这个思路,线程不可别任何一个被管理的 Socket 阻塞,且任一个 Socket 来数据之后都得唤醒线程。想想看这应该如何实现呢?我们拿 select 的逻辑来分析下按照我们的理解,select 管理多个 Socket 的模型如下图所示:这里要注意一下内核态和用户态的交互,用户程序访问不了内核空间。所以,我们调用 select 会把所有要管理的 socket

2022-02-23 20:01:40 1538

原创 之前被问的 ConcurrentHashMap 面试题,我汇总了一下

上篇已经讲了关于 HashMap 的相关面试点,这篇就来盘盘 ConcurrentHashMap。我们都知道 HashMap 是非线程安全的,然后还有个 HashTable ,这玩意虽说是线程安全,但所有方法用的是同一把锁,并发度太低,性能不好。所以,如要在并发场景下使用 Map ,那就推荐用 ConcurrentHashMap。而谈到 ConcurrentHashMap,经常会被问到 JDK1.8 相对于 1.7 版本做哪些优化,所以我们先来看下 1.7 的是实现。ConcurrentHashMa

2022-02-16 14:12:20 1445 1

原创 不吹牛,吃下我这篇,Java面试第一关算是过了

你好,我是yes。集合类的面试题问的频率还是挺高的,几乎集中于 HashMap。说说Java的集合类这题一般用在开头,让你热热身,你也不需要说的那么详细,大致讲下,面试官会根据你回答的点继续挖的。Java集合从分类上看,有 collection 和 map 两种,前者是存储对象的集合类,后者存储的是键值对(key-value)CollectionSet主要功能是保证存储的集合不会重复,至于集体是有序还是无序的,需要看具体的实现类,比如 TreeSet 就是有序的,HashSet 是无序的(

2022-02-11 15:39:57 1720 1

原创 Netty 是如何实现 Reactor 的?

之前已经写了一篇对 Reactor 的理解,这篇我们来看看 Netty 是如何实现 Reactor 的。我们都知道 Netty 可以有两个线程组,一个是 bossGroup,一个是 workerGroup,之前也提到了 bossGroup 主要是接待新连接(老板接活),workerGroup 是负责新连接后续的一切 I/O (员工干活)对应到 Reactor 模型中,bossGroup 中的 eventLoop 就是主 Reactor,它的任务就是监听等待连接事件的到来,即 OP_ACCEPT,然后创建

2022-02-10 18:14:38 645

原创 大白话说 Reactor 模型

在深入 Netty 实现的 Reactor 之前,我们得先知道到底什么是 Reactor ?

2022-02-07 19:47:49 634 1

原创 Apache Dubbo 高危漏洞

你好,我是yes。前不久 Log4j2 的漏洞不是闹得沸沸扬扬吗,上百个应用更新的那一天,还记忆犹新。今天又看到了个 Apache Dubbo 的高危漏洞通告,好家伙一看这版本,我们的应用有漏洞…其实这个漏洞爆出来已经很多天了,影响面没 Log4j2 大,所以没那么“火”,不过也是个高危漏洞。又是一个可以远程代码执行的漏洞,漏洞的类型是因为反序列化的问题。从 360网络安全响应中心官网来看,1.14 号就通告了。对这个漏洞的评定结果如下:可以看到,还是属于影响比较严重的漏洞。具体是因为

2022-01-24 22:35:34 2132

原创 管你 JDK 还是 Linux,我 Netty 稳坐钓鱼台

说到 Netty ,但凡你在网上看过相关资料,那肯定会提到 JDK NIO 在 Linux 系统下空轮询的 bug,就是调用 Selector.select(timeout),即使没事件发生,也不会阻塞 timeout 时间,而是立马 return,这样的空轮询导致 CPU 100%。产生这个 bug 大致的原因我讲下:连接突然中断,poll 和 epoll 会被 POLLHUP 或者 POLLERR 事件唤醒,于是 Selector 就被唤醒了,但是 JDK Selector 一看,没事件(CONNEC

2022-01-22 10:42:12 264

原创 《干翻Netty》, 写一个底层通信框架需要考虑哪些?

什么是Netty?它是高性能 Java 网络通信的底层框架,可能你听过的很多中间件底层通信用的都是它,例如 RocketMQ、Dubbo、Elasticsearch等。它为什么这么流行?为什么这么多中间件都在它之上构建?易用。对 Java 的 NIO 进行了封装,屏蔽了 NIO 使用的复杂性,简化了网络通信的开发。且支持众多协议,不仅仅 HTTP、HTTP2、DNS、redis协议等等。网络编程需要考虑粘包和拆包问题,连接的管理,编解码的处理,Netty都为你定制好了,开箱即用。还提供的内存泄

2021-12-16 15:02:51 999

原创 刚线上又出现一个问题。。。热乎的

大家好,我是yes。事情是这样的,今天同事给我反馈了一个问题。就是一段时间未进入订单页面,再次进入之后会进行一次全量的从第三方拉取订单的操作,为的是及时更新订单信息。但是这个同事发现每次点订单都会发生全量拉取,这明显就不合理,非常耗费后端任务的资源。一开始我觉得这跟我肯定没关系,可能是前端代码出了 BUG (哈哈哈,上次也是这样想)。所以我告知了前端的同事,经过排查他很确定的告诉我代码肯定没问题,只有一小时内没进入过订单页面再次进去才会拉取。我看他信誓旦旦的样子,我信了,没办法,只能我自己去研究

2021-12-07 11:38:20 536

原创 你,可能没完全搞懂 Java 泛型

2021-12-01 14:26:56 479 1

原创 多年总结,学编程的一些核心建议

大家好,我是yes。不知道你们是如何踏上编程之路的,我是因为被电影里的骇客吸引,才选择了软工专业(其实是第二专业,哈哈)。本以为日后可以像电影里面的骇客那般啪啪啪的就把一栋楼的灯给灭了,弹指间即操纵肉鸡进行攻击。谁知到头来成了一位 CRUD Boy。不过万幸,最终我还是热爱编程的,从一开始的懵懵懂懂,到现在入了行,编程这个字可以说已经深深地刻在我的脑海里。既然已经踏上这条路了,那就好好的走下去吧,也学习编程多年了,今儿就来说说我个人认为的学编程的一些核心建议吧,抛砖引玉,欢迎讨论~善于搜索不论是初

2021-11-29 12:14:47 490

原创 这次,让我们捋清:同步、异步、阻塞、非阻塞

大家好,我是yes。继上一篇说透I/O模型后,我们来谈谈网络 I/O 经常会伴随的几个容易令人混淆的概念:同步、异步、阻塞、非阻塞的区别。这篇写完之后铺垫就差不多了,之后就正式开始 Netty 深度剖析了,敬请期待,嘻嘻。话不多说,发车!同步&异步同步和异步指的是:当前线程是否需要等待方法调用执行完毕。比如你调用一个搬运一百块石头的方法:同步指的是调用这个方法,你的线程需要等待这一百块石头搬完,然后得到搬完了的结果,接着再继续执行剩下的代码逻辑。//同步方式result =

2021-11-23 15:37:56 289

原创 填之前的坑,到底什么是伪共享?

大家好,我是yes。之前在写 FastThreadLocal 的时候,挖了个坑。咳咳,时间过得有点久了,但是影响不大今天就来补上。来谈谈什么是伪共享,并且为什么 Netty 要在这里移除这个优化?话不多说,发车!什么是伪共享?这个名词听着有点高级的感觉,实际上很好理解。我们都知道 CPU 的执行速度远大于从内存获取数据的速度,为了减少这个差距科研人员们就不断的研究,产出了高速缓存,但这个高速缓存造价过高,无法作为主存的介质,所以常见的 CPU 缓存结构如下图所示:距离 CPU 越近的缓存访

2021-11-20 10:10:47 538 1

原创 为什么网络 I/O 会被阻塞?

你好,我是yes。最近打算输出 Netty 相关的文章,如若要深入学习 Netty 这个底层通信框架,网络相关知识点不可或缺。所以我打算先写一些前置知识点,对齐一下认识,便于之后对 Netty 的理解。我们应该都知道 socket(套接字),你可以认为我们的通信都要基于这个玩意,而常说的网络通信又分为 TCP 与 UDP 两种,我以 TCP 通信为例来简单阐述下 socket 的通信流程。创建 socket首先服务端需要先创建一个 socket。在 Linux 中一切都是文件,那么创建的 socke

2021-11-18 11:29:12 844 1

原创 LinkedList 的作者说他自己都不用 LinkedList

大家好,我是 yes。关于市面上的一些面试题,我们都戏称它为八股文,而作为八股文前三甲,我觉得 ArrayList 和 LinkedList 的之间的比较定有一席之地。映射过来也就是关于数组与链表的比较。只要你在网上看过这道面试题,你看到的答案必然是:数组的查询...

2021-11-16 15:53:43 370

原创 从头到尾,通透I/O模型

你好,我是yes。上篇我们已经搞懂了 socket 的通信内幕,也明白了网络 I/O 确实会有很多阻塞点,阻塞 I/O 随着用户数的增长只能利用增加线程的方式来处理更多的请求,而线程不仅会占用内存资源且太多的线程竞争会导致频繁的上下文切换产生巨大的开销。因此,阻塞 I/O 已经不能满足需求了,所以后面大佬们不断地优化和演进,提出了多种 I/O 模型。在 UNIX 系统下,一共有五种 I/O 模型,今天我们就来盘一盘它!不过在介绍 I/O 模型之前,我们需要先了解一下前置知识。内核态和用户态我们的

2021-11-09 10:49:10 317

原创 Hibernate、JPA、Spring Data JPA 之间的关系

大家好,我是yes。国庆假期要没啦,明天最后一天了,要开始收收心啦~今天讲讲一个初学者(可能包括一些老手)都没去搞懂的几个概念:Hibernate、JPA、Spring Data JPA 之间的关联。嘿嘿,前段时间有位同学说去大厂面试被问了这个。好了,话不多说,发车!HibernateHibernate 就不多介绍了, 一个 ORM 框架,它提供了 HQL 来屏蔽底层不同数据库厂商 SQL 之间的差异,大大提升了程序的可移植性。也提供了一套 Criteria API 来进行数据操作,使用这套

2021-10-09 12:28:45 280

原创 剑指 Offer 55 - I. 二叉树的深度

输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。这个题目会的人写出来的时间估计是几秒钟。其实很直观,想要计算出树的深度,直接的想法就是 DFS,而 DFS 的实现就是利用递归就能完美的实现。递归跳出的条件很简单root == null,这个没什么疑义。如果不等于 null,那么当前的节点就算一个深度了,然后加上两个子树里面中

2021-09-28 14:45:24 167

原创 两分钟,谈谈 MySQL 索引的一些错误认识

你好,我是yes。今天就来谈谈有关 MySQL InnoDB索引的一些比较容易被误解的点。话不多说,直接发车!不一定会用上你认为会用上的索引为了故事可以顺利的发展,先来一张表, DDL 如下:现在要执行这个语句SELECT * FROM yes.t1 where f3 = 11;你觉得用的是哪个索引?很多同学可能会觉得虽然有 idx_f2_f3 这个联合索引,但是查询条件是 f3,没有 f2,不符合最左匹配原则,所以很显然只能进行全表扫描。我们来 explain 一下,看看:可以看到结

2021-09-28 14:44:31 243

原创 剑指 Offer 63. 股票的最大利润

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。来源:力扣(LeetCode)链接:htt

2021-09-27 17:53:43 71

原创 剑指 Offer 28. 对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1   /   2   2 / \ / 3  4 4  3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1   /   2   2   \   &n

2021-09-26 14:04:26 55

原创 剑指 Offer 27. 二叉树的镜像

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode mirrorTree(TreeNode root) { if (root

2021-09-24 10:54:04 61

原创 ThreadLocal的短板,我 TransmittableThreadLocal 来补上!

你好,我是yes。之前我已经分析了ThreadLocal、InheritableThreadLocal、FastThreadLocal。然后有小伙伴让我再说说TransmittableThreadLocal(下边统一简称:TTL)。那今天就来介绍介绍 TTL,补充下 ThreadLocal 家族的短板吧。这篇过后,ThreadLocal 就真的一网打尽了!不过还是建议先看看前置篇,不然理解起来可能有点困难。缘由任何一个组件的出现必有其缘由,知其缘由背景才能更深刻地理解它。我们知道 Threa

2021-09-23 12:10:28 226

原创 剑指 Offer 26. 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:true来源:力扣(LeetCode)链

2021-09-23 12:07:53 59

原创 剑指 Offer 32 - III. 从上到下打印二叉树 III

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[20,9],[15,7]]提示:节点总数 <= 1000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao

2021-09-22 14:08:14 74

原创 我滴乖乖,MySQL联合索引不一定要求最左匹配?跳跃索引!

你好,我是yes。关于 MySQL 索引相关的知识点,我已经写的差不多了,今天再来补充一点关于联合索引的。之前我在群里就看到有同学说最左匹配已经过时了,现在 MySQL 8 都不需要最左匹配就能用上联合索引了。那真的是这样吗?以下实验基于 MySQL8.0.26 版本为了故事顺利的发展,我们先建个表。CREATE TABLE `t1` ( `f1` int NOT NULL AUTO_INCREMENT, `f2` int NOT NULL, `f3` int NOT NULL,

2021-09-22 14:07:13 784

原创 剑指 Offer 32 - II. 从上到下打印二叉树 II

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof著作权归领扣网络所有。商业转载请联系官方

2021-09-17 10:04:56 55

原创 剑指 Offer 32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

2021-09-16 10:56:19 55

原创 剑指 Offer 11. 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi

2021-09-15 09:58:28 49

原创 阿里面试官问我: LRU 和 Innodb Buffer Pool 有什么关系?

你好,我是yes。这个问题来自我的 VIP 读者,他在简历里写了熟悉 MySQL ,然后被问了 LRU 相关实现之后紧接着被问与 Innodb Buffer Pool 的联系,然后读者就蒙了。所以 LRU 和 Innodb Buffer Pool 有什么联系吗?确实有。其实我之前的文章写到过这个,就在今年的三月份,不过是写 Kafka 的冷热分区时顺带提了一下 Innodb Buffer Pool。今天咱们再来仔细盘一盘它们两者之间的联系,还是挺有启发的。Buffer PoolBuffer

2021-09-14 19:49:27 111

原创 剑指 Offer 11二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 tar

2021-09-14 11:15:51 55

消息队列核心知识点-yes.zip

本开源PDF从消息队列常见面试题入手来解析消息队列,包括如何保证消息不丢失?如果处理重复消息?如何保证消息的有序性?如果处理消息堆积?等等,属于源码级别的解析

2021-08-14

rocketmq-my.7z

Apache RocketMQ 源码,Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件,通过git clone 下过于缓慢,并且容易失败,此压缩包包含了源代码,使得构建构建更加迅速,并且有些代码做了批注!

2020-07-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除