Skip to content

Commit 91c491d

Browse files
committed
[docs update]picture url
1 parent a430800 commit 91c491d

19 files changed

+91
-58
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ dist/
1414
# Build files
1515
packages/*/lib/
1616
traversal-folder-replace-string.py
17+
format-markdown.py

README.en.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,8 @@ If you want to follow my updated articles and the dry goods I share in real time
368368

369369
**《Java Interview Blitz》:** A PDF version of "Java Interview Blitz" derived from this document specifically for interviews [Public](#公众号) Reply back to **"Interview Blitz "** and get it for free!
370370

371-
![My Public](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
371+
<div align="center">
372+
<img src="https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png" style="margin: 0 auto;" />
373+
</div>
372374

373375
![](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a2d826918a44bcbaa8d9272db3ad7d2~tplv-k3u1fbpfcp-watermark.image)

docs/cs-basics/data-structure/bloom-filter.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ tag:
2323

2424
布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于 1970 年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。
2525

26-
![布隆过滤器示意图](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/布隆过滤器-bit数组.png)
26+
![布隆过滤器示意图](https://oss.javaguide.cn/github/javaguide/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8-bit%E6%95%B0%E7%BB%84.png)
2727

2828
位数组中的每个元素都只占用 1 bit ,并且每个元素只能是 0 或者 1。这样申请一个 100w 个元素的位数组只占用 1000000Bit / 8 = 125000 Byte = 125000/1024 kb ≈ 122kb 的空间。
2929

@@ -43,7 +43,7 @@ tag:
4343

4444
举个简单的例子:
4545

46-
![布隆过滤器hash计算](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/布隆过滤器-hash运算.png)
46+
![布隆过滤器hash计算](https://oss.javaguide.cn/github/javaguide/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8-hash%E8%BF%90%E7%AE%97.png)
4747

4848
如图所示,当字符串存储要加入到布隆过滤器中时,该字符串首先由多个哈希函数生成不同的哈希值,然后将对应的位数组的下标设置为 1(当位数组初始化时,所有位置均为 0)。当第二次存储相同字符串时,因为先前的对应位置已设置为 1,所以很容易知道此值已经存在(去重非常方便)。
4949

docs/cs-basics/network/other-network-questions.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ tag:
108108
109109
图解(图片来源:《图解 HTTP》):
110110

111-
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/url输入到展示出来的过程.jpg" style="zoom:50%; " />
111+
<img src="https://oss.javaguide.cn/github/javaguide/url%E8%BE%93%E5%85%A5%E5%88%B0%E5%B1%95%E7%A4%BA%E5%87%BA%E6%9D%A5%E7%9A%84%E8%BF%87%E7%A8%8B.jpg" style="zoom:50%; " />
112112

113113
> 上图有一个错误,请注意,是 OSPF 不是 OPSF。 OSPF(Open Shortest Path First,ospf)开放最短路径优先协议, 是由 Internet 工程任务组开发的路由选择协议
114114
@@ -130,7 +130,7 @@ tag:
130130

131131
HTTP 状态码用于描述 HTTP 请求的结果,比如2xx 就代表请求被成功处理。
132132

133-
![HTTP 状态码](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019/7/状态码.png)
133+
![HTTP 状态码](https://oss.javaguide.cn/github/javaguide/%E7%8A%B6%E6%80%81%E7%A0%81.png)
134134

135135
关于 HTTP 状态码更详细的总结,可以看我写的这篇文章:[HTTP 常见状态码总结(应用层)](./http-status-codes.md)
136136

docs/database/mysql/some-thoughts-on-database-storage-time.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗
111111

112112
下图是 MySQL 5.6 版本中日期类型所占的存储空间:
113113

114-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/FhRGUVHFK0ujRPNA75f6CuOXQHTE.jpeg)
114+
![](https://oss.javaguide.cn/github/javaguide/FhRGUVHFK0ujRPNA75f6CuOXQHTE.jpeg)
115115

116116
可以看出 5.6.4 之后的 MySQL 多出了一个需要 0 ~ 3 字节的小数位。DateTime 和 Timestamp 会有几种不同的存储空间占用。
117117

@@ -153,7 +153,7 @@ MySQL 中时间到底怎么存储才好?Datetime?Timestamp? 数值保存的时
153153

154154
好像并没有一个银弹,很多程序员会觉得数值型时间戳是真的好,效率又高还各种兼容,但是很多人又觉得它表现的不够直观。这里插一嘴,《高性能 MySQL 》这本神书的作者就是推荐 Timestamp,原因是数值表示时间不够直观。下面是原文:
155155

156-
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/高性能mysql-不推荐用数值时间戳.jpg" style="zoom:50%;" />
156+
<img src="https://oss.javaguide.cn/github/javaguide/%E9%AB%98%E6%80%A7%E8%83%BDmysql-%E4%B8%8D%E6%8E%A8%E8%8D%90%E7%94%A8%E6%95%B0%E5%80%BC%E6%97%B6%E9%97%B4%E6%88%B3.jpg" style="zoom:50%;" />
157157

158158
每种方式都有各自的优势,根据实际场景才是王道。下面再对这三种方式做一个简单的对比,以供大家实际开发中选择正确的存放时间的数据类型:
159159

docs/database/mysql/transaction-isolation-level.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -73,27 +73,27 @@ SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTE
7373

7474
### 脏读(读未提交)
7575

76-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-31-1脏读(读未提交)实例.jpg)
76+
![](https://oss.javaguide.cn/github/javaguide/2019-31-1%E8%84%8F%E8%AF%BB(%E8%AF%BB%E6%9C%AA%E6%8F%90%E4%BA%A4)%E5%AE%9E%E4%BE%8B.jpg)
7777

7878
### 避免脏读(读已提交)
7979

80-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-31-2读已提交实例.jpg)
80+
![](https://oss.javaguide.cn/github/javaguide/2019-31-2%E8%AF%BB%E5%B7%B2%E6%8F%90%E4%BA%A4%E5%AE%9E%E4%BE%8B.jpg)
8181

8282
### 不可重复读
8383

8484
还是刚才上面的读已提交的图,虽然避免了读未提交,但是却出现了,一个事务还没有结束,就发生了 不可重复读问题。
8585

86-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-32-1不可重复读实例.jpg)
86+
![](https://oss.javaguide.cn/github/javaguide/2019-32-1%E4%B8%8D%E5%8F%AF%E9%87%8D%E5%A4%8D%E8%AF%BB%E5%AE%9E%E4%BE%8B.jpg)
8787

8888
### 可重复读
8989

90-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-33-2可重复读.jpg)
90+
![](https://oss.javaguide.cn/github/javaguide/2019-33-2%E5%8F%AF%E9%87%8D%E5%A4%8D%E8%AF%BB.jpg)
9191

9292
### 幻读
9393

9494
#### 演示幻读出现的情况
9595

96-
![](https://oss.javaguide.cn/github/javaguide/database/phantom_read.png)
96+
![](https://oss.javaguide.cn/github/javaguide/phantom_read.png)
9797

9898
SQL 脚本 1 在第一次查询工资为 500 的记录时只有一条,SQL 脚本 2 插入了一条工资为 500 的记录,提交之后;SQL 脚本 1 在同一个事务中再次使用当前读查询发现出现了两条工资为 500 的记录这种就是幻读。
9999

docs/distributed-system/distributed-configuration-center.md

+47-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,53 @@ category: 分布式
44
icon: "configuration"
55
---
66

7-
**分布式配置中心**
7+
**分布式配置中心** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 面试指北》中。
88

9+
![](https://oss.javaguide.cn/javamianshizhibei/distributed-system.png)
910

11+
[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)(点击链接即可查看详细介绍)的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。
1012

11-
![](https://oss.javaguide.cn/javamianshizhibei/distributed-system.png)
13+
![](https://oss.javaguide.cn/xingqiu/image-20220304102536445.png)
14+
15+
最近几年,市面上有越来越多的“技术大佬”开始办培训班/训练营,动辄成千上万的学费,却并没有什么干货,单纯的就是割韭菜。
16+
17+
为了帮助更多同学准备 Java 面试以及学习 Java ,我创建了一个纯粹的知识星球。虽然收费只有培训班/训练营的百分之一,但是知识星球里的内容质量更高,提供的服务也更全面。
18+
19+
欢迎准备 Java 面试以及学习 Java 的同学加入我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html),干货非常多,学习氛围也很不错!收费虽然是白菜价,但星球里的内容或许比你参加上万的培训班质量还要高。
20+
21+
<div align="center">
22+
<a href="https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html">
23+
<img src="https://oss.javaguide.cn/xingqiu/image-20220311203414600.png" style="margin: 0 auto; " />
24+
</a>
25+
</div>
26+
27+
28+
下面是星球提供的部分服务(点击下方图片即可获取知识星球的详细介绍):
29+
30+
<div align="center">
31+
<a href="https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html">
32+
<img src="https://oss.javaguide.cn/xingqiu/xingqiufuwu.png" style="margin: 0 auto; " />
33+
</a>
34+
</div>
35+
36+
37+
**我有自己的原则,不割韭菜,用心做内容,真心希望帮助到你!**
38+
39+
如果你感兴趣的话,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)
40+
41+
这里再送一个 30 元的新人优惠券(续费半价)。
42+
43+
<div align="center">
44+
<a href="https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html">
45+
<img src="https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuanheyi.png" style="margin: 0 auto; " />
46+
</a>
47+
</div>
48+
49+
50+
进入星球之后,记得添加微信,我会发你详细的星球使用指南。
51+
52+
<div align="center">
53+
<a href="https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html">
54+
<img src="https://oss.javaguide.cn/github/javaguide/IMG_3007.jpg" style="margin: 0 auto; " />
55+
</a>
56+
</div>

docs/high-availability/limit-request.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ Resilience4j 不仅提供限流,还提供了熔断、负载保护、自动重
202202

203203
> ShenYu 地址: https://github.com/apache/incubator-shenyu
204204
205-
![](https://oss.javaguide.cn/github/javaguide/csdn/e1e2a75f489e4854990dabe3b6cec522.png)
205+
![ShenYu 限流脚本](https://oss.javaguide.cn/github/javaguide/csdn/e1e2a75f489e4854990dabe3b6cec522.jpg)
206206

207207
## 相关阅读
208208

docs/high-availability/performance-test.md

-6
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,10 @@ title: 性能测试入门
33
category: 高可用
44
---
55

6-
# 性能测试入门
7-
86
性能测试一般情况下都是由测试这个职位去做的,那还需要我们开发学这个干嘛呢?了解性能测试的指标、分类以及工具等知识有助于我们更好地去写出性能更好的程序,另外作为开发这个角色,如果你会性能测试的话,相信也会为你的履历加分不少。
97

108
这篇文章是我会结合自己的实际经历以及在测试这里取的经所得,除此之外,我还借鉴了一些优秀书籍,希望对你有帮助。
119

12-
本文思维导图:
13-
14-
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/网站性能测试.png" style="zoom:50%;" />
15-
1610
## 一 不同角色看网站性能
1711

1812
### 1.1 用户

docs/high-performance/message-queue/message-queue.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ tag:
4545

4646
### 通过异步处理提高系统性能(减少响应所需时间)
4747

48-
![通过异步处理提高系统性能](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/Asynchronous-message-queue.png)
48+
![通过异步处理提高系统性能](https://oss.javaguide.cn/github/javaguide/Asynchronous-message-queue.png)
4949

5050
将用户的请求数据存储到消息队列之后就立即返回结果。随后,系统再对消息进行消费。
5151

@@ -57,7 +57,7 @@ tag:
5757

5858
举例:在电子商务一些秒杀、促销活动中,合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击。如下图所示:
5959

60-
![削峰](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/削峰-消息队列.png)
60+
![削峰](https://oss.javaguide.cn/github/javaguide/%E5%89%8A%E5%B3%B0-%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97.png)
6161

6262
### 降低系统耦合性
6363

docs/high-performance/message-queue/rabbitmq-intro.md

+9-10
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、
3131

3232
下面再来看看图1—— RabbitMQ 的整体模型架构。
3333

34-
![图1-RabbitMQ 的整体模型架构](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-16/96388546.jpg)
34+
![图1-RabbitMQ 的整体模型架构](https://oss.javaguide.cn/github/javaguide/rabbitmq/96388546.jpg)
3535

3636
下面我会一一介绍上图中的一些概念。
3737

@@ -52,15 +52,15 @@ RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、
5252

5353
Exchange(交换器) 示意图如下:
5454

55-
![Exchange(交换器) 示意图](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-16/24007899.jpg)
55+
![Exchange(交换器) 示意图](https://oss.javaguide.cn/github/javaguide/rabbitmq/24007899.jpg)
5656

5757
生产者将消息发给交换器的时候,一般会指定一个 **RoutingKey(路由键)**,用来指定这个消息的路由规则,而这个 **RoutingKey 需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效**
5858

5959
RabbitMQ 中通过 **Binding(绑定)****Exchange(交换器)****Queue(消息队列)** 关联起来,在绑定的时候一般会指定一个 **BindingKey(绑定建)** ,这样 RabbitMQ 就知道如何正确将消息路由到队列了,如下图所示。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。Exchange 和 Queue 的绑定可以是多对多的关系。
6060

6161
Binding(绑定) 示意图:
6262

63-
![Binding(绑定) 示意图](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-16/70553134.jpg)
63+
![Binding(绑定) 示意图](https://oss.javaguide.cn/github/javaguide/rabbitmq/70553134.jpg)
6464

6565
生产者将消息发送给交换器时,需要一个RoutingKey,当 BindingKey 和 RoutingKey 相匹配时,消息会被路由到对应的队列中。在绑定多个队列到同一个交换器的时候,这些绑定允许使用相同的 BindingKey。BindingKey 并不是在所有的情况下都生效,它依赖于交换器类型,比如fanout类型的交换器就会无视,而是将消息路由到所有绑定到该交换器的队列中。
6666

@@ -80,7 +80,7 @@ Binding(绑定) 示意图:
8080

8181
下图展示了生产者将消息存入 RabbitMQ Broker,以及消费者从Broker中消费数据的整个流程。
8282

83-
![消息队列的运转过程](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-16/67952922.jpg)
83+
![消息队列的运转过程](https://oss.javaguide.cn/github/javaguide/rabbitmq/67952922.jpg)
8484

8585
这样图1中的一些关于 RabbitMQ 的基本概念我们就介绍完毕了,下面再来介绍一下 **Exchange Types(交换器类型)**
8686

@@ -96,7 +96,7 @@ fanout 类型的Exchange路由规则非常简单,它会把所有发送到该Ex
9696

9797
direct 类型的Exchange路由规则也很简单,它会把消息路由到那些 Bindingkey 与 RoutingKey 完全匹配的 Queue 中。
9898

99-
![direct 类型交换器](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-16/37008021.jpg)
99+
![direct 类型交换器](https://oss.javaguide.cn/github/javaguide/rabbitmq/37008021.jpg)
100100

101101
以上图为例,如果发送消息的时候设置路由键为“warning”,那么消息会路由到 Queue1 和 Queue2。如果在发送消息的时候设置路由键为"Info”或者"debug”,消息只会路由到Queue2。如果以其他的路由键发送消息,则消息不会路由到这两个队列中。
102102

@@ -110,7 +110,7 @@ direct 类型常用在处理有优先级的任务,根据任务的优先级把
110110
- BindingKey 和 RoutingKey 一样也是点号“.”分隔的字符串;
111111
- BindingKey 中可以存在两种特殊字符串“\*”和“#”,用于做模糊匹配,其中“\*”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)。
112112

113-
![topic 类型交换器](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-16/73843.jpg)
113+
![topic 类型交换器](https://oss.javaguide.cn/github/javaguide/rabbitmq/73843.jpg)
114114

115115
以上图为例:
116116

@@ -132,7 +132,7 @@ headers 类型的交换器不依赖于路由键的匹配规则来路由消息,
132132

133133
注意:在安装 RabbitMQ 的时候需要注意 RabbitMQ 和 Erlang 的版本关系,如果不注意的话会导致出错,两者对应关系如下:
134134

135-
![RabbitMQ 和 Erlang 的版本关系](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/RabbitMQ-Erlang.png)
135+
![RabbitMQ 和 Erlang 的版本关系](https://oss.javaguide.cn/github/javaguide/rabbitmq/RabbitMQ-Erlang.png)
136136

137137
### 2.1 安装 erlang
138138

@@ -196,7 +196,7 @@ make && make install
196196
```erlang
197197
io:format("hello world~n", []).
198198
```
199-
![输出“hello world”](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-12/49570541.jpg)
199+
![输出“hello world”](https://oss.javaguide.cn/github/javaguide/rabbitmq/49570541.jpg)
200200

201201
大功告成,我们的 erlang 已经安装完成。
202202

@@ -304,6 +304,5 @@ Setting permissions for user "root" in vhost "/" ...
304304
305305
再次访问:http://你的ip地址:15672/ ,输入用户名和密码:root root
306306
307-
![RabbitMQ控制台](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-12/45835332.jpg)
308-
307+
![RabbitMQ控制台](https://oss.javaguide.cn/github/javaguide/rabbitmq/45835332.jpg)
309308

docs/java/basis/java-basic-questions-03.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ SPI 将服务接口和具体的服务实现分离开来,将服务调用方和
468468
469469
综上:**序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。**
470470

471-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2020-8/a478c74d-2c48-40ae-9374-87aacf05188c.png)
471+
![](https://oss.javaguide.cn/github/javaguide/a478c74d-2c48-40ae-9374-87aacf05188c.png)
472472

473473
<p style="text-align:right;font-size:13px;color:gray">https://www.corejavaguru.com/java/serialization/interview-questions-1</p>
474474

docs/java/basis/java-keyword-summary.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ static {
155155

156156
一个类中的静态代码块可以有多个,位置可以随便放,它不在任何的方法体内,JVM 加载类时会执行这些静态的代码块,如果静态代码块有多个,JVM 将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
157157

158-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-14/88531075.jpg)
158+
![](https://oss.javaguide.cn/github/javaguide/88531075.jpg)
159159

160160
静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问.
161161

docs/java/basis/serialization.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ tag:
2929
3030
综上:**序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。**
3131

32-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2020-8/a478c74d-2c48-40ae-9374-87aacf05188c.png)
32+
![](https://oss.javaguide.cn/github/javaguide/a478c74d-2c48-40ae-9374-87aacf05188c.png)
3333

3434
<p style="text-align:right;font-size:13px;color:gray">https://www.corejavaguru.com/java/serialization/interview-questions-1</p>
3535

@@ -198,7 +198,7 @@ Github 地址:[https://github.com/protostuff/protostuff](https://github.com/pr
198198

199199
Hessian 是一个轻量级的,自定义描述的二进制 RPC 协议。Hessian 是一个比较老的序列化实现了,并且同样也是跨语言的。
200200

201-
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2020-8/8613ec4c-bde5-47bf-897e-99e0f90b9fa3.png)
201+
![](https://oss.javaguide.cn/github/javaguide/8613ec4c-bde5-47bf-897e-99e0f90b9fa3.png)
202202

203203
Dubbo2.x 默认启用的序列化方式是 Hessian2 ,但是,Dubbo 对 Hessian2 进行了修改,不过大体结构还是差不多。
204204

0 commit comments

Comments
 (0)