卧龙、凤雏!两源码学得一,代码质量都不会差!

news2024/11/22 21:05:12

作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!😄

有人问我,编程能力怎么提升,我说学源码学的。他有问我,是不学 Spring 源码比学 MyBatis 更好,MyBatis 太简单了!🤨 我说死鬼,且边去。

MyBatis 源码真的没有那么简单,也没有说不如 Spring 源码的设计。一个在源码中驾驭了数十种以上设计模式的 MyBatis 它的代码设计,可不是小扒菜。可以这么说,学了 Spring 源码可以应对面试和开发组件,但学了 MyBatis 的源码,那么你可以做架构师接下来,小傅哥就告诉你为什么!

一、卧龙凤雏:平分秋色

Spring 和 MyBatis 可以说是 Java 行业的卧龙凤雏,其他同类的框架也不少,但要说稳定、可靠、方便,还得是它们2个的组合。也正因为这样在各个企业中,也是用的非常之多,所以面试的时候也更喜欢问这2个框架源码。

那么这两个框架在设计和实现上,能平分秋色吗?🤔 问你这两个框架有啥不同,你能一句话就总结到位不?

卧龙:Spring - 万物皆可Bean,把一个 Bean 对象拆分到稀碎,细化流程。在每个拆分后的节点内,插入可被外部使用的动作流程。如你可以在Bean对象初始化过程中修改获得对象、修改对象、添加对象等任何你想扩展的流程。

凤雏:MyBatis - 与 Spring 不同的是,MyBatis 管理的是多边服务。左手拿着 JDBC、右手握着 Java DAO,通过六合之力,把两招合并成一整招。你过来呀,执行呀!

所以,在小傅哥深度学习完两套源码后,感受;Spring 复杂精妙,设计的高MyBatis 大开大和,设计的硬。Spring 学习完以后,使用 Spring 和调试 Bug 都会变得有理有据,也能基于 Spring 开发 SpringBoot Starter 组件。而 MyBatis 学习完,是更贴近业务开发,你能学习到非常多的编码技巧。就仅仅一个 session 会话流程模型的设计,你既可以用到 API网关,也可以用到如 ChatGPT 接口封装。有了 MyBatis 源码的学习经验,对于这样的同类诉求开发,你会变得非常得心应手。而这就是你在积累架构师对系统设计经验和落地能力。

二、架构之美:沁人心脾

我特别喜欢有难度也有复杂流程的的东西,因为难度一上来,就有了驾驭的空间。就像天罡36板斧的能力,只切菜就没看头。但如果是战场交锋,那么打起来肯定漂亮。而且很多小伙伴在职场上的晋升,也都是靠那些俏活上去的,天天搞 ERP 写 CRUD 多少年都白费蜡。

那么小傅哥在学习完 MyBatis 的源码后,就开始架构了 API 网关的设计。MyBatis 是管理着 JDBC 与 DAO,而 API 是管理着 RPC 与 HTTP。这不是天然的 session 会话模型设计吗,简直和 MyBatis 的架构一毛一样。干它势在必行!—— 小傅哥接下来就把这两套架构模型展示出来,让大家对比看看。

1. MyBatis ORM架构模型

2. API 网关架构模型

这些架构模型,都是小傅哥在学习和设计的时候一条条绘制出来的。主要你能按照我的学习路线指引,也一定能理解透彻每一条知识点,并且绘制出非常清晰有用的架构和模型图。

三、学习路线:走向高端

《手写 MyBatis:渐进式源码实践》有纸质图书和星球中的在线电子版。你可以按照自己的喜欢,选择扫码购买图书或者加入小傅哥的星球。

《手写 MyBatis:渐进式源码实践》@小傅哥

除了这本技术图书,小傅哥的知识星球里,涵盖了;业务项目(4)组件项目(3)技术小册(4)手撕源码(2)、以及简历辅导小白辅助的各类课程内容。加入后建议学习路线如下;https://bugstack.cn/md/zsxq/introduce.html

  1. 为了面试:Java面经手册(八股)、Lottery 分布式抽奖(项目)、SpringBoot Starter 中间件设计和开发(拉伸技术)、手写Spring/手写Mybatis(2选1)
  2. 夯实能力:重学Java设计模式、Lottery 分布式抽奖、手写Spring、手写Mybatis、ChatGPT 应用项目
  3. 拉伸技术:字节码、IDEA Plugin 开发手册、SpringBoot Starter、API网关
  4. 网络编程:Netty 4.x 小册、IM(Netty 4.x + JavaFx)
  5. 应届小白:重学Java设计模式、Java面经手册、手写Spring/手写Mybatis(2选1)、Lottery 分布式抽奖、SpringBoot Starter 中间件设计和开发,之后学习拉伸技术、网络编程

用户反馈

  • @星期一:通过两天的学习成功将第五、第六章节跑通并完成了测试,感受最深的是对策略模式和模板模式的进一步了解,之前在看重学java设计模式的时候,对于很多设计模式都处于一知半解的状态,现在结合这个抽奖系统,让我对这两个设计模式有了不一样的理解与认识,感觉真的很棒。这种边记笔记,边学习的感觉真的很好,以前可能看视频学,一天能看很多章节,但其实很多东西都没有弄懂,现在是一天一个章节,慢慢去理解代码怎么编写,怎么完成。这些天虽然还有些地方理解的不是很清楚,我还是继续接着学,到时候回头再来温习一遍。
  • @星期一:本身我自己学习是没有画图,记录学习遇到问题的解决方法的习惯,但加入了知识星球,看到里面许多像我一样的学员都开始跟着小傅哥去画图,去记录学习中遇到的问题,我自己也尝试着这样去做,发现学习的思路更加清晰,且记忆更深
  • @神经蛙:断断续续花了2个星期终于感觉完整学完了抽奖系统,首先非常感谢小傅哥,该项目确实让我感觉学习到很多优秀的内容,以下是我学习的一个阶段性总结
  • @L.ast:花费了十天时间把整个抽奖系统的基本内容全部动手实现,对个人而言设计模式、xxljob,kafka,以及路由组件设计这部分收获很多。打算抽一天时间回顾总结项目细节,尤其是对一些订单id和日期id这部分设计的作用,解决什么问题。
  • @BookSea:加入傅哥的星球是我做过最好的投资之一,2022年3月,加入了傅哥的星球。2023年3月,迎来了我的职业生涯的第一次跳槽。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32 event loop(事件循环)(17)

提示:本博客作为学习笔记,有错误的地方希望指正,主要参考乐鑫技术手册说明结合实例代码分析,结合理论知识学习后示例分析以及常见问题说明。 文章目录 一、ESP32 Event Loop 概述2、使用 esp_event APIs3、默认 event loop4、句柄…

Java进阶-面向对象进阶(抽象类接口内部类)

1 抽象类 1.1 概述 1.1.1 抽象类引入 ​ 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话…

Marvin - LLM驱动的AI函数开发包【Python】

Marvin是一个用于构建 AI 驱动软件的Python库。 Marvin 的工作是将 AI 直接集成到你的代码库中,使其看起来和感觉起来与任何其他功能一样。 Marvin 引入了一个新概念,称为 AI 函数(AI functions)。 AI函数与传统函数的不同之处在…

Java进阶-常用的API

1 Math类 1.1 概述 tips:了解内容 查看API文档,我们可以看到API文档中关于Math类的定义如下: Math类所在包为java.lang包,因此在使用的时候不需要进行导包。并且Math类被final修饰了,因此该类是不能被继承的。 Math类…

springboot+jsp超市库存进销存管理系统-a597o

Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架,和控制翻转容器的实现。Spring框架的一些核心功能理论,可以用于所有Java应用,Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现任何的编程模型&a…

PHP生成带有雪花背景的验证码

<?session_start();?> <FORM METHOD=POST ACTION=""> <input type=text name=number maxlength=4><img src="YanZhengMa.php?act=init"> <INPUT TYPE="submit" name="sub"> </FORM><?//检…

【分布族谱】正态分布和二项分布的关系

文章目录 正态分布二项分布验证 正态分布 正态分布&#xff0c;最早由棣莫弗在二项分布的渐近公式中得到&#xff0c;而真正奠定其地位的&#xff0c;应是高斯对测量误差的研究&#xff0c;故而又称Gauss分布。测量是人类定量认识自然界的基础&#xff0c;测量误差的普遍性&am…

本地电脑做服务器搭建私人音乐网站ThinkMusic + cpolar内网穿透

文章目录 1. 前言2. 本地网页搭建2.1 环境使用2.2 支持组建选择 3. 网页安装3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转发自CSDN lisacpolar的文章&#xff1a;ThinkMusic源码搭建音乐网站&#xff0c;并实现公网访问 1. 前言 在我们的日…

数据结构初阶(1)(一些学习数据结构所需掌握的先导知识:包装类、装箱与拆箱、泛型【泛型的编译——擦除机制、泛型的上界、泛型方法、裸类型】、List简介)

目录 包装类 基本数据类型&#xff08;Primitive Types&#xff09;&#xff1a; 包装类&#xff08;Wrapper Classes&#xff09;&#xff1a; 装箱和拆箱 自动装箱和自动拆箱 泛型 泛型的编译——很重要的擦除机制&#xff1a; 泛型的上界&#xff1a; 泛型方法&…

LC-1335. 工作计划的最低难度(区间DP、记忆化搜索==>动态规划)

1335. 工作计划的最低难度 难度困难97 你需要制定一份 d 天的工作计划表。工作之间存在依赖&#xff0c;要想执行第 i 项工作&#xff0c;你必须完成全部 j 项工作&#xff08; 0 < j < i&#xff09;。 你每天 至少 需要完成一项任务。工作计划的总难度是这 d 天每一…

JavaSE进阶(一)—— 面向对象进阶(static、单例、代码块、继承)

目录 一、static静态关键字 1. static是什么&#xff0c;static修饰成员变量的用法 2. 成员方法的分类 2.1 使用场景 3. static修饰成员方法的内存原理 4. static的注意事项[拓展] 二、static应用知识&#xff1a;工具类 1. 工具类是什么 2. 工具类的好处 3. 为什么工…

域名信息收集

被动信息收集 0x01 Certificate Transparency&#xff08;证书透明&#xff09; 证书透明度(Certificate Transparency)是证书授权机构的一个项目&#xff0c;证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址。查找某个域名…

Java进阶-字符串的使用

1.API 1.1API概述 什么是API ​ API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需要…

PPT技能之描边字,要大要醒目别整没用的

文字仅仅加粗&#xff0c;还是不够明显&#xff0c;不妨用上描边字。不会Photoshop&#xff0c;不会PS&#xff0c;也可以做好看的描边字。 描边字&#xff0c;是在文字的边缘加上边框&#xff0c;让文字更醒目、突出。 你的关注&#xff0c;是我最大的动力&#xff01;你的转…

【K8s】基本存储、高级存储(PV和PVC)、配置存储

文章目录 背景一、基本存储1、EmptyDir2、HostPath3、NFS 二、高级存储1、认识PV和PVC2、PV3、PVC4、生命周期 三、配置存储1、ConfigMap2、 Secret 背景 程序运行在容器中&#xff0c;而容器的生命周期可能极其短暂&#xff0c;容器销毁&#xff0c;数据丢失&#xff0c;因此…

pip install出现socket.timeout: The read operation timed out的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

MySQL 8.0不再担心被垃圾SQL搞爆内存

MySQL 8.0.28引入的新功能 MySQL 8.0.28开始&#xff0c;新增一个特性&#xff0c;支持监控统计并限制各个连接&#xff08;会话&#xff09;的内存消耗&#xff0c;避免大量用户连接因为执行垃圾SQL消耗过多内存&#xff0c;造成可能被OOM kill的风险。 首先&#xff0c;需要…

【Servlet】图解HTTP请求Tomcat服务器实现前后端交互

文章目录 前言如何构造HTTP请求&#xff1f;1、通过form表单构造HTTP请求① form发送GET请求② form发送POST请求 2、通过Ajax构造HTTP请求同步等待与异步等待的感性理解 3、使用postman构造HTTP请求4、通过 Java socket 构造 HTTP 请求 如何实现前端给后端传参1、query string…

Jetpack Compose 中的debug调试

之前在 Jetpack Compose 中的重组作用域和性能优化 一文中主要介绍了如何从代码层面进行一些优化以及提到了一些值得注意的优化事项&#xff0c;本文主要来了解一下官方提供了哪些工具层面的手段可以帮助我们进行Compose的debug性能调试。 常规debug方式 这个跟以前的方式一样…

『python爬虫』22. 初识自动化测试工具selenium(保姆级图文)

目录 1. selenium的安装配置2. 为什么使用selenium&#xff1f;它的优势和缺点是什么&#xff1f;3. selenium的基本使用4. selenium实战之csdn搜索python博文4.1 点击选择文章4.2 搜索栏输入搜索关键词4.3 实现代码 总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 …