作者:小傅哥 博客:https://bugstack.cn - <手写Mybatis系列> 一.前言 为什么,要读框架源码? 因为手里的业务工程代码太拉胯了!通常作为业务研发,所开发出来的代码,大部分都是一连串的流程化处理,缺少功能逻辑的解耦,有着迭代频繁但可迭代性差的特点.所以这样的代码通常只能学习业务逻辑,却很难吸收到大型系统设计和功能逻辑实现的成功经验,往往都是失败的教训. 而所有系统的设计和实现,核心都在于如何解耦,如果解耦不清晰最后直接导致的就是再继续迭代功能时,会让整个系统的实现越…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 1. 为甚,撸Mybatis 我就知道,你会忍不住对它下手! 21年带着粉丝伙伴撸了一遍 Spring 源码,通过提取整个框架中的核心逻辑,简化代码实现过程,渐进式开发逐步实现 IOC.AOP 中的核心功能.让读者可以由浅入深的学习 Spring 的设计思路和落地代码,也能让更多的读者可以读懂 Spring 源码,当然这也包括让一些跟着动手实践的读者在面试中脱颖而出! 吃过小傅哥代码的读者,…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你只是在解释过程,而他是在阐述高度! 如果不是长时间的沉淀.积累和储备,我一定也没有办法用更多的维度和更多的视角来对一个问题进行多方面阐述.就像你我:越过峭壁山川,才知枕席还师的通达平坦.领略过雷声千嶂落,雨色万峰来,才闻到八表流云澄夜色,九霄华月动春城的宁静. 所以引申到编程开发,往简单了说就是写写代码,改改bug.但如果就局限在只是写写代码,其实很难领略到那些众多设计思想和复杂…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你这代码写的,咋这么轴呢! 说到轴,让我想起初中上学时老师说的话:"你那脑瓜子,咋跟手焖子似的!" 东北话手焖子就是那种冬天戴的大棉手套,棉手套里的棉花都被压的又沉又硬的了,所以来比喻脑瓜子笨. 而写轴代码的大部分都是刚毕业没多久,或者刚开始工作的码农,毕竟经验不足经历不多,写出一些不太好维护的代码也情有可原.而那些绝对多数锻炼出来的老码农,其实代码的稳定程度.设计经验.…
作者:小傅哥 博客:https://bugstack.cn - 手写Mybatis系列文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 码农,只会做不会说? 你有发现吗,其实很大一部分码农,都只是会写代码,不会讲东西.一遇到述职.答辩.分享.汇报,就很难流畅且有高度.有深度,并融合一部分引入入胜的趣味性来让观众更好的接受和理解你要传递的信息. 那为什么已经做了还讲不出来呢?因为做只是在已确定目标和既定路线下的执行,但为什么确定这个目标.为什么制定这个路线.横向的参照对比.纵向的深度设…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么,读不懂框架源码? 我们都知道作为一个程序员,如果想学习到更深层次的技术,就需要阅读大量的框架源码,学习这些框架源码中的开发套路和设计思想,从而提升自己的编程能力. 事大家都清楚,但在实操上,很多码农根本没法阅读框架源码.首先一个非常大的问题是,面对如此庞大的框架源码,不知道从哪下手.与平常的业务需求开发相比,框架源码中运用了大量的设计原则和设计模式对系统功能进行解耦和实现,…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你是否能预见复杂内容的设计问题? 讲道理,无论产品功能是否复杂,都有很大一部分程序员会写出一堆 if...else 来完成开发并顺利上线.这主要是原因没法预见当前的需求,发展是否长远.流量是否庞大.迭代是否迅速,所以在被催促上线的情况,不写 if...else 是不可能的! 那你说,既然 if...else 实现的这么快,还考虑数据结构.算法逻辑.设计模式.系统架构吗?当然这基本要…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 上学时,老师总说:不会你就问,但多数时候都不知道要问什么! 你总会在小傅哥的文章前言里,发现一些关于成长.学习.感悟以及对当篇内容的一个介绍,其实之所以写这样的铺垫性内容,主要是为了让大家对接下来的内容学习有一个较轻松的开场和过度. 就像我们上学时如果某一科的内容不会时,老师经常会说,你有不会的就要问.但对于学生本身来讲,可能已经不会的太多了,或者压根不知道自己不会什么,只有等看到…
前言 这应该是分布式锁演化的最后一个章节了,相信很多小伙伴们看完这个章节之后在应对高并发的情况下,如何保证线程安全心里肯定也会有谱了.在实际的项目中也可以参考一下老猫的github上的例子,当然代码没有经过特意的封装,需要小伙伴们自己再好好封装一下.那么接下来,就和大家分享一下基于zookeeper的分布式锁,由于此篇主要分享的是zk的分布式锁,所以对于zk本身的相关知识点,并不会涉及很多.和分布式锁实现有关的zk知识点会提及. Zookeeper实现分布式锁 何为ZK?(为了打字简单,后续老猫…
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.面向对象 2.JDK.JRE.JVM区别和联系 3.==和equals 4.final 5.String .StringBuffer.StringBuilder区别及使用场景 6.重载和重写的区别 7.接口和抽象类 8.List和Set 9.hashcode和equals 10.ArrayList和Linkedlist 11.HashMap和HashTable的区别及底层实现 12.ConcurrentHashMa…