Skip to content

Commit 92510af

Browse files
committed
小傅哥,docs:卧龙、凤雏!两源码学得一,代码质量都不会差!
1 parent 6e191d3 commit 92510af

File tree

6 files changed

+90
-0
lines changed

6 files changed

+90
-0
lines changed

docs/.vuepress/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,6 +2056,7 @@ function genBarAbout() {
20562056
"study/2022-10-15-面试官:深度不够,建议回去深挖.md",
20572057
"study/2022-12-25-我把ChatGPT拉到微信群里了.md",
20582058
"study/2023-04-02-国外码农,会卷八股文吗?.md",
2059+
"study/2023-05-14-卧龙、凤雏!两源码学得一,代码质量都不会差!.md",
20592060
]
20602061
},
20612062
{
174 KB
Loading
1.05 MB
Loading
59.5 KB
Loading
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: 卧龙、凤雏!两源码学得一,代码质量都不会差!
3+
lock: need
4+
---
5+
6+
# 卧龙、凤雏!两源码学得一,代码质量都不会差!
7+
8+
作者:小傅哥
9+
<br/>博客:[https://bugstack.cn](https://bugstack.cn)
10+
11+
> 沉淀、分享、成长,让自己和他人都能有所收获!😄
12+
13+
有人问我,编程能力怎么提升,我说学源码学的。他有问我,是不学 Spring 源码比学 MyBatis 更好,MyBatis 太简单了!🤨 我说死鬼,且边去。
14+
15+
MyBatis 源码真的没有那么简单,也没有说不如 Spring 源码的设计。一个在源码中驾驭了数十种以上设计模式的 MyBatis 它的代码设计,可不是小扒菜。可以这么说,学了 Spring 源码可以应对面试和开发组件,但学了 MyBatis 的源码,**那么你可以做架构师**`接下来,小傅哥就告诉你为什么!`
16+
17+
## 一、卧龙凤雏:平分秋色
18+
19+
Spring 和 MyBatis 可以说是 Java 行业的卧龙凤雏,其他同类的框架也不少,但要说稳定、可靠、方便,还得是它们2个的组合。也正因为这样在各个企业中,也是用的非常之多,所以面试的时候也更喜欢问这2个框架源码。
20+
21+
那么这两个框架在设计和实现上,能平分秋色吗?🤔 问你这两个框架有啥不同,你能一句话就总结到位不?
22+
23+
<div align="center">
24+
<img src="https://bugstack.cn/images/article/about/about-230514-01.png?raw=true" width="750px">
25+
</div>
26+
27+
**卧龙:Spring** - 万物皆可Bean,把一个 Bean 对象拆分到稀碎,细化流程。在每个拆分后的节点内,插入可被外部使用的动作流程。如你可以在Bean对象初始化过程中修改获得对象、修改对象、添加对象等任何你想扩展的流程。
28+
29+
**凤雏:MyBatis** - 与 Spring 不同的是,MyBatis 管理的是多边服务。左手拿着 JDBC、右手握着 Java DAO,通过六合之力,把两招合并成一整招。你过来呀,执行呀!
30+
31+
所以,在小傅哥深度学习完两套源码后,感受;**Spring 复杂精妙,设计的高****MyBatis 大开大和,设计的硬**。Spring 学习完以后,使用 Spring 和调试 Bug 都会变得有理有据,也能基于 Spring 开发 SpringBoot Starter 组件。而 MyBatis 学习完,是更贴近业务开发,你能学习到非常多的编码技巧。就仅仅一个 session 会话流程模型的设计,你既可以用到 API网关,也可以用到如 ChatGPT 接口封装。有了 MyBatis 源码的学习经验,对于这样的同类诉求开发,你会变得非常得心应手。而这就是你在积累架构师对系统设计经验和落地能力。
32+
33+
## 二、架构之美:沁人心脾
34+
35+
我特别喜欢有难度也有复杂流程的的东西,因为难度一上来,就有了驾驭的空间。就像天罡36板斧的能力,只切菜就没看头。但如果是战场交锋,那么打起来肯定漂亮。而且很多小伙伴在职场上的晋升,也都是靠那些**俏活**上去的,天天搞 ERP 写 CRUD 多少年都白费蜡。
36+
37+
那么小傅哥在学习完 MyBatis 的源码后,就开始架构了 API 网关的设计。MyBatis 是管理着 JDBC 与 DAO,而 API 是管理着 RPC 与 HTTP。这不是天然的 session 会话模型设计吗,简直和 MyBatis 的架构一毛一样。干它势在必行!—— 小傅哥接下来就把这两套架构模型展示出来,让大家对比看看。
38+
39+
### 1. MyBatis ORM架构模型
40+
41+
<div align="center">
42+
<img src="https://bugstack.cn/images/article/spring/mybatis-220320-00.png?raw=true" width="950px">
43+
</div>
44+
45+
### 2. API 网关架构模型
46+
47+
<div align="center">
48+
<img src="https://bugstack.cn/images/article/assembly/api-gateway/api-gateway-0-04.png?raw=true" width="950px">
49+
</div>
50+
51+
这些架构模型,都是小傅哥在学习和设计的时候一条条绘制出来的。主要你能按照我的学习路线指引,也一定能理解透彻每一条知识点,并且绘制出非常清晰有用的架构和模型图。
52+
53+
## 三、学习路线:走向高端
54+
55+
[《手写 MyBatis:渐进式源码实践》](https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BANUJK1olXwQBUVpdAE8SAF8IGVIVXQUCU24ZVxNJXF9RXh5UHw0cSgYYXBcIWDoXSQVJQwYAXV5dC0sQHDZNRwYlNGYHJBcZDhJ0fB1XUgRlL3RUIxYbeEcbM244G1oUXQEKU1hfCHsnA2g4STXN67Da8e9B3OGY1uefK1olXQELUV9ZCkkTBmYMEmsSXQ8yIgoCXAhHXjhMK2slXjYFVFdJDjlWUXsOaWslXTYBZF5cCEMUBmgMGFwRQQYBV1taAFcXBGYNGl8XXwICVV5bOEkWAmsBK2s)有纸质图书和星球中的在线电子版。你可以按照自己的喜欢,选择扫码购买图书或者加入小傅哥的星球。
56+
57+
<div align="center">
58+
<img src="https://bugstack.cn/images/article/about/about-230514-03.png?raw=true" width="200px"/>
59+
<div style="font-size: 12px;">《手写 MyBatis:渐进式源码实践》@小傅哥</div>
60+
</div>
61+
62+
除了这本技术图书,**小傅哥的知识星球里**,涵盖了;`业务项目(4)``组件项目(3)``技术小册(4)``手撕源码(2)`、以及`简历辅导``小白辅助`的各类课程内容。加入后建议学习路线如下;
63+
64+
<div align="center">
65+
<img src="https://bugstack.cn/images/system/zsxq/coupon.png?raw=true" width="350px">
66+
<div style="font-size: 12px;">知识星球:码农会锁 - 应用级实战项目学习社群</div>
67+
</div>
68+
69+
1. **为了面试**:Java面经手册(八股)、Lottery 分布式抽奖(项目)、SpringBoot Starter 中间件设计和开发(拉伸技术)、手写Spring/手写Mybatis(2选1)
70+
2. **夯实能力**:重学Java设计模式、Lottery 分布式抽奖、手写Spring、手写Mybatis、ChatGPT 应用项目
71+
3. **拉伸技术**:字节码、IDEA Plugin 开发手册、SpringBoot Starter、API网关
72+
4. **网络编程**:Netty 4.x 小册、IM(Netty 4.x + JavaFx)
73+
5. **应届小白**:重学Java设计模式、Java面经手册、手写Spring/手写Mybatis(2选1)、Lottery 分布式抽奖、SpringBoot Starter 中间件设计和开发,之后学习拉伸技术、网络编程
74+
75+
<div align="center">
76+
<img src="https://bugstack.cn/images/article/about/about-230514-02.png?raw=true" width="750px">
77+
</div>
78+
79+
---
80+
81+
**用户反馈**
82+
83+
- [@星期一](https://t.zsxq.com/0chHS92j5)`通过两天的学习成功将第五、第六章节跑通并完成了测试,感受最深的是对策略模式和模板模式的进一步了解,之前在看重学java设计模式的时候,对于很多设计模式都处于一知半解的状态,现在结合这个抽奖系统,让我对这两个设计模式有了不一样的理解与认识,感觉真的很棒。这种边记笔记,边学习的感觉真的很好,以前可能看视频学,一天能看很多章节,但其实很多东西都没有弄懂,现在是一天一个章节,慢慢去理解代码怎么编写,怎么完成。这些天虽然还有些地方理解的不是很清楚,我还是继续接着学,到时候回头再来温习一遍。`
84+
- [@星期一](https://t.zsxq.com/0cmdaowpB)`本身我自己学习是没有画图,记录学习遇到问题的解决方法的习惯,但加入了知识星球,看到里面许多像我一样的学员都开始跟着小傅哥去画图,去记录学习中遇到的问题,我自己也尝试着这样去做,发现学习的思路更加清晰,且记忆更深`
85+
- [@神经蛙](https://t.zsxq.com/0cIVeIzgI)`断断续续花了2个星期终于感觉完整学完了抽奖系统,首先非常感谢小傅哥,该项目确实让我感觉学习到很多优秀的内容,以下是我学习的一个阶段性总结`
86+
- [@L.ast](https://t.zsxq.com/0cJSH02ju)`花费了十天时间把整个抽奖系统的基本内容全部动手实现,对个人而言设计模式、xxljob,kafka,以及路由组件设计这部分收获很多。打算抽一天时间回顾总结项目细节,尤其是对一些订单id和日期id这部分设计的作用,解决什么问题。`
87+
- [@BookSea](https://t.zsxq.com/0cxV12kki)`加入傅哥的星球是我做过最好的投资之一,2022年3月,加入了傅哥的星球。2023年3月,迎来了我的职业生涯的第一次跳槽。`
88+

docs/md/project/lottery/Part-2/第10节:实现和使用分库分表.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ pay: https://t.zsxq.com/ZzzFIyn
3838
- [在这一章节我们会学习到的技术:AOP、数据源切换、散列算法、哈希寻址、ThreadLocal @星期一](https://t.zsxq.com/0dKxVQDri)
3939
- [总结一下db-Router,不得不说。太牛了。尤其是Java反射。真的是刷新了认知。@陈晓川](https://t.zsxq.com/0dCcY5F1T)
4040
- [路由组件执行流程分析 @twinkler](https://t.zsxq.com/0dtJdw4bi)
41+
- [通过debug理清了路由组件的执行流程 @T](https://t.zsxq.com/0ezh7FlF0)
4142

4243
## 一、开发日志
4344

0 commit comments

Comments
 (0)