@@ -254,6 +254,14 @@ module.exports = {
254254 link : '/md/risk-control/risk-control-engine-architecture-design.md'
255255 } ]
256256 } ,
257+
258+ {
259+ text : 'Go微服务网关专栏概述' ,
260+ items : [ {
261+ text : 'Go微服务网关专栏概述' ,
262+ link : '/md/go-gateway/00-Go微服务网关专栏概述.md'
263+ } ]
264+ } ,
257265 ]
258266 } ,
259267
@@ -289,26 +297,21 @@ module.exports = {
289297 } ]
290298 } ,
291299
292-
293- {
294- text : '消息队列基础' ,
295- items : [ {
296- text : '消息队列基础' ,
297- link : '/md/mq/消息队列面试必问解析.md'
298- } ]
299- } ,
300-
301300 {
302- text : 'Kafka ' ,
301+ text : 'kafka ' ,
303302 items : [ {
304- text : 'Kafka基础 ' ,
303+ text : 'kafka ' ,
305304 link : '/md/kafka/00-Kafka专栏大纲.md'
306- } , ]
305+ } ]
307306 } ,
308307
309308 {
310309 text : 'RocketMQ' ,
311310 items : [ {
311+ text : '消息队列基础' ,
312+ link : '/md/RocketMQ/消息队列面试必问解析.md'
313+ } ,
314+ {
312315 text : 'RocketMQ基础' ,
313316 link : '/md/RocketMQ/01-RocketMQ核心内容.md'
314317 } ,
@@ -327,7 +330,7 @@ module.exports = {
327330 {
328331 text : 'RabbitMQ' ,
329332 items : [ {
330- text : '00- RabbitMQ' ,
333+ text : 'RabbitMQ' ,
331334 link : '/md/rabbitmq/00-RabbitMQ实战下载与安装.md'
332335 } , ]
333336 } ,
@@ -908,7 +911,6 @@ module.exports = {
908911 "06-运营后台系统设计" ,
909912 "07-大厂报价查询系统性能优化之道" ,
910913 "08-视频推荐索引构建" ,
911- "09-交易中台-如何防止订单二次重复支付?" ,
912914 "小游戏的大促实践" ,
913915 "事件中心架构概述" ,
914916 ]
@@ -966,6 +968,7 @@ module.exports = {
966968 "00-如何防止订单二次重复支付?" ,
967969 "01-扫码支付后都发生了啥?" ,
968970 "02-大厂的第三方支付业务架构设计" ,
971+ "wechat-pay-development-guide-avoid-pitfalls" ,
969972 ]
970973 } ] ,
971974
@@ -1078,6 +1081,7 @@ module.exports = {
10781081 sidebarDepth : 0 ,
10791082 children : [
10801083 "熔断限流" ,
1084+ "11-RPC的负载均衡" ,
10811085 ]
10821086 } ] ,
10831087
@@ -1116,7 +1120,8 @@ module.exports = {
11161120 collapsable : false ,
11171121 sidebarDepth : 0 ,
11181122 children : [
1119- "07-MQTT发布订阅模式介绍.md"
1123+ "MQTT与Kafka在物联网消息与流数据集成实践" ,
1124+ "07-MQTT发布订阅模式介绍"
11201125 ]
11211126 } ] ,
11221127 "/md/spider/" : [ {
@@ -1217,13 +1222,11 @@ module.exports = {
12171222 collapsable : false ,
12181223 sidebarDepth : 0 ,
12191224 children : [
1220- "01-SpringMVC的AsyncHandlerInterceptor异步的处理器拦截器" ,
1221- "02-实现http请求的异步长轮询" ,
1222- "03-SpringMVC拦截处理器" ,
12231225 "Spring之BeanNameAware和BeanFactoryAware接口" ,
12241226 "这次彻底搞懂IoC容器依赖注入的源码" ,
12251227 "别小看Spring过滤器,这些知识点你必须得掌握" ,
12261228 "Spring框架使用了哪些设计模式" ,
1229+ "阿里四面:你知道Spring AOP创建Proxy的过程吗?" ,
12271230 ]
12281231 } ,
12291232
@@ -1232,6 +1235,9 @@ module.exports = {
12321235 collapsable : false ,
12331236 sidebarDepth : 0 ,
12341237 children : [
1238+ "01-SpringMVC的AsyncHandlerInterceptor异步的处理器拦截器" ,
1239+ "02-实现http请求的异步长轮询" ,
1240+ "03-SpringMVC拦截处理器" ,
12351241 "SpringMVC-service-doDispatch" ,
12361242 "SpringMVC-DispatcherServlet-doDispatch" ,
12371243 ]
@@ -1244,6 +1250,7 @@ module.exports = {
12441250 children : [
12451251 "00-可能是全网最全的SpringBoot启动流程源码分析" ,
12461252 "01-HelloSpringBoot应用程序" ,
1253+ "SpringBoot默认线程池" ,
12471254 ]
12481255 } ,
12491256 ] ,
@@ -1358,6 +1365,9 @@ module.exports = {
13581365 sidebarDepth : 0 ,
13591366 children : [
13601367 "00-Spring响应式编程" ,
1368+ "响应式编程的适用场景" ,
1369+ "01-想让系统更具有弹性?了解背压机制和响应式流的秘密!" ,
1370+ "04-Spring为何偏爱Reactor响应式编程框架" ,
13611371 "05-流式操作:如何使用 Flux 和 Mono 高效构建响应式数据流?" ,
13621372 ]
13631373 } ] ,
@@ -1465,32 +1475,35 @@ module.exports = {
14651475 } ,
14661476 ] ,
14671477
1468- "/md/kafka" : [ {
1469- title : "Kafka基础 " ,
1478+ "/md/kafka/ " : [ {
1479+ title : "kafka " ,
14701480 collapsable : false ,
14711481 sidebarDepth : 0 ,
14721482 children : [
14731483 "00-Kafka专栏大纲" ,
1484+ "01-为何大厂都选择Kafka作为消息队列" ,
14741485 "Kafka门派知多少" ,
1475- "kafka-versions" ,
14761486 "08-全网最全图解Kafka适用场景" ,
14771487 "09-消息队列的消息大量积压怎么办?" ,
14781488 "15-基于kafka实现延迟队列" ,
1479- "kafka-transaction-implementation"
1480- ]
1481- } , ] ,
1482-
1483- "/md/mq" : [ {
1484- title : "消息队列基础" ,
1485- collapsable : false ,
1486- sidebarDepth : 0 ,
1487- children : [
1488- "消息队列面试必问解析" ,
1489- "消息队列的事务消息" ,
1489+ "kafka-transaction-implementation" ,
1490+ "kafka-versions" ,
14901491 ]
14911492 } , ] ,
14921493
14931494 "/md/RocketMQ/" : [ {
1495+ title : "消息队列基础" ,
1496+ collapsable : false ,
1497+ sidebarDepth : 0 ,
1498+ children : [
1499+ "消息队列面试必问解析" ,
1500+ "消息队列的事务消息" ,
1501+ "避免无法克服的队列积压" ,
1502+ "消息恰好被消费一次" ,
1503+ ]
1504+ } ,
1505+
1506+ {
14941507 title : "RocketMQ基础" ,
14951508 collapsable : false ,
14961509 sidebarDepth : 0 ,
@@ -1526,18 +1539,22 @@ module.exports = {
15261539 "RocketMQ在基金大厂的分布式事务实践" ,
15271540 ]
15281541 } ,
1529-
15301542 ] ,
1531- "/md/rabbitmq" : [ {
1543+
1544+ "/md/rabbitmq/" : [ {
15321545 title : "RabbitMQ" ,
15331546 collapsable : false ,
15341547 sidebarDepth : 0 ,
15351548 children : [
15361549 "00-RabbitMQ实战下载与安装" ,
1550+ "04-RabbitMQ & Spring整合开发" ,
15371551 "RabbitMQ消费端幂等性概念及解决方案" ,
15381552 "用了这么久的RabbitMQ异步编程竟然都是错的" ,
1553+ "RabbitMQ的 RPC 消息模式你会了吗?" ,
1554+ "12-RabbitMQ实战-消费端ACK、NACK及重回队列机制" ,
15391555 ]
1540- } ] ,
1556+ } , ] ,
1557+
15411558 "/md/redis/" : [ {
15421559 title : "Redis" ,
15431560 collapsable : false ,
@@ -1549,7 +1566,8 @@ module.exports = {
15491566 "03-Redisson公平锁加锁源码分析" ,
15501567 "04-Redisson读写锁加锁机制分析" ,
15511568 "05-缓存读写策略模式详解" ,
1552- "06-如何快速定位 Redis 热 key"
1569+ "06-如何快速定位 Redis 热 key" ,
1570+ "12-Redis 闭源?" ,
15531571 ]
15541572 } ] ,
15551573 "/md/es/" : [ {
@@ -1703,6 +1721,16 @@ module.exports = {
17031721 ]
17041722 } , ] ,
17051723
1724+ "/md/go-gateway/" : [ {
1725+ title : "Go微服务网关" ,
1726+ collapsable : false ,
1727+ sidebarDepth : 0 ,
1728+ children : [
1729+ "00-Go微服务网关专栏概述" ,
1730+ "open-systems-interconnection-model" ,
1731+ ]
1732+ } , ] ,
1733+
17061734 "/md/career/" : [ {
17071735 title : "职业规划" ,
17081736 collapsable : false ,
@@ -1740,6 +1768,8 @@ module.exports = {
17401768 children : [
17411769 "16-精益独立开发实践" ,
17421770 "17-用户画像都是怎么产生的?" ,
1771+ "20-个人支付解决方案" ,
1772+ "21-处理用户反馈和增长优化" ,
17431773 ]
17441774 } ] ,
17451775
0 commit comments