# bugstack虫洞栈 | 程序员的编码指南

你好,我是小傅哥,《重学Java设计模式》图书作者,一线互联网 Java 工程师、架构师。

一个着迷于技术又喜欢不断折腾的技术活跃者,从13年毕业到进入互联网,开发过交易、营销类项目,实现过运营、活动类项目,设计过中间件,组织过系统重构,编写过技术专利。不仅从事业务系统的开发工作,也经常做一些字节码插桩类的设计和实现,对架构的设计和落地有丰富的经验。在热衷于Java语言的同时,也喜欢研究中继器、I/O板卡、C#和PHP!

除此之外小傅哥并不只满足于CRUD搬砖,也关心业务、运营、产品、数据、测试、运维等各项知识体系的完善学习,就研发架构设计来讲,更全面的学习会更有利于做出更长远的架构设计。同时完善个人知识体系也更有利于个人成长。

所以你会看到小傅哥在工作之外的深夜、周末、假期会折腾于写文章、编小册、出书籍,并十分热情于对粉丝的交流、提问、解惑。并不深沉且少许逗比的我,希望能给大家带来最接地气的帮助和成长。

# 一、本站知识阅览

我给自己在技术职业成长上,定位成一个能抗住农夫三拳的架构师,所以我在编写和输出的技术内容上,也是以数据结构、算法逻辑、设计模式、核心技术、系统架构、服务运维等方面的知识扩展技术广度和深度,并以实践验证的学习方式进行汇总内容编写文章。也希望这些成体系的技术系列内容能帮助你慢慢且踏实的成长起来。

而这几大块内容也是每一个较贵的 Java 程序员应该掌握的内容,可以包括:

  • Java&Spring:以讲解Java、Spring核心知识为基础,用数学逻辑思维分析关于Java、Spring、Mybatis、Dubbo等核心源码技术内容。其中如《Java 面经手册》 (opens new window)是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。包括正在编写的《手撸 Spring》 (opens new window)通过手写简化版 Spring 框架,了解 Spring 核心原理。在手写的过程中会简化 Spring 源码,摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。这些都程序员学习技术成长过程中非常重要的知识,如果能深入学习那么对以后的个人成长帮助非常大。
  • 算法逻辑和数据结构:这部分内容主要以Java源码为入手,讲解其中的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等,这也正是《Java 面经手册》 (opens new window)的核心内容所在。
  • 面向对象《Java 设计模式》 (opens new window)的知识是在Java基础铺平,数据结构、算法逻辑有了一定的了解后,在深入学习和使用的技术。同样是一个需求在学过设计模式后,也阅读了不少别人优秀的代码,那么在他实现需求的时候,会拆分出很多的接口和接口的继承、抽象类的职责隔离实现、具体业务模块的分层、功能服务组件的细化、具体实现过程中对设计模式的运用等等。这样的代码实现后会非常具有易扩展和可维护的特点,否则一篇的ifelse不是坑自己就是坑下一个人。
  • 中间件:可能很大一部分研发并不会接触到中间件,也不太可能有人告诉你可以使用中间件的方式解决一些实际遇到的问题。因为大部分时候你都会认为中间件只是公司专门部门的人写的,或者是技术大牛搞的,总之与你没关系。但其实代码知识对数学逻辑的具体实现,业务开发有业务开发的方式,《Spring 中间件和开发》 (opens new window)也只是对Spring的关于容器中一些特定接口和类的使用,具体的还是普通的逻辑代码,比如暴露服务、采集日志、监控系统等。但如果你能早些学到这样技术的核心思想,那么对于升值、加薪、跳槽,都是非常有帮助的。
  • 通信专题:其实Netty是一项非常重要的技术,比如在RPC服务实现中的Dubbo、或者MQ、以及很多时候的通信里都是能用到的技术。就连小傅哥的第一次面试大厂也是靠着对Netty的学习,刷进来的!所以小傅哥编写了很多Netty从基础入门讲解到核心原理,告诉你如何处理半包、粘包,怎样定义消息协议,并开发了一个基于Netty的仿微信聊天项目,这些技术内容你都可以在我的博客学习到学习到。
  • 字节码编程:这项技术可能大多数研发,哪怕35岁的,可能也不一定接触到。但这样的技术你却基本都用过,比如你的IDEA是购买的吗,你怎么给让它能用的!你用过一些非入侵的全链路监控系统的,你通过字节码插桩搞过一些事情吗,那你用过Cglib吧,它的底层就是通过ASM字节码框架对字节码进行的一些列操作。
  • 关于:除了技术学习以外,还有很多伙伴会经常问我一些关于学习、成长以及在职场中怎么活下去。所以我结合我自己在大厂互联网中的学习和成长经历,给读者伙伴写了不少此类的内容。如简历编写、招聘要求、技术资料、代码规范、评审晋升、薪资待遇、副业收入等等。这些内容可能很多会帮助你度过一个安定的职场生涯!

# 二、学习路线参考

可能有很大一部分处于开始成长阶段的码农伙伴,不太清楚自己要从哪里开始学习,哪怕手里有几个T的资料,也没有办法把这些内容吸收到大脑中。因此我把一些非常有必要学习的知识串连出一条学习路径,帮助处于不同阶段的伙伴找到学习方向,也可以把自己的技术水平和工资代码,都拉起来。🌶

# 三、Java

# 1. 面经手册

共计 5 章 29 节,417页11.5万字,耗时 4 个月完成。涵盖数据结构、算法逻辑、并发编程、JVM以及简历和互联网大厂面试等内容。但此书并不是单纯的面试题,也不是内卷八股文。而是从一个单纯的和程序员有关的数学知识点开始,深入讲解 Java 的核心技术。并且每一章节都配有实践验证的源码,可以对照着一起撸才更有感觉!

# 2. 用Java实现JVM

本专题主要介绍如何通过java代码来实现JVM的基础功能(搜索解析class文件、字节码命令、运行时数据区等),从而让java程序员通过最熟知的java程序,学习JVM是如何将java程序一步步跑起来的,按照《java虚拟机规范》与go语言版的《自己动手写Java虚拟机》实现java版虚拟机案例

# 四、Spring

# 1. Spring 手撸专栏

本仓库以 Spring 源码学习为目的,通过带着读者一点点手写简化版 Spring 框架,了解 Spring 核心原理,为后续再深入学习 Spring 打下基础。

在手写的过程中会剔除 Spring 源码中繁杂的内容,摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。

# 2. SpringCloud

为了更好的实现领域驱动设计的落地,不仅要在设计思路上做到领域职责清晰、系统边界明确,还需要使用到Spring Boot、Spring Cloud框架服务体系来更好的构建微服务。后续部分章节将针对Spring Cloud的使用以及有益于构建微服务的知识技能做系列案例整理,以最终完成架构设计专题案例。网上不免有很多优秀的文章,但为了系统的学习更需要事必躬亲,亲力亲为。

# 3. 源码分析

介绍、分析、实现,Mybatis、mybatis-spring、Quartz,核心技术框架,学习最根本的原理内容。

# 五、面向对象

# 1. 设计模式

本书是作者小傅哥,基于互联网真实案例编写的Java设计模式实践图书。全书以解决方案为核心,从实际开发业务中抽离出交易、营销、规则引擎、中间件、框架源码等22个真实场景,对设计模式进行全面、彻底的分析。帮助读者灵活地使用各种设计模式,从容应对复杂变化的业务需求,编写出易维护、可扩展的代码结构。

# 2. 系统架构

分别介绍DDD结构、入门、案例,讲解工程框架的搭建以及各类技术解决方案,包括低代码、IDEA插件、脚手架、中台、全链路监控设计等。

# 3. 研发规范

通过代码评审、开发标准、上线流程、事故处理等方面的知识体现出研发规范的重要性,也从中学习该如何更好的写出可维护、可扩展、易使用的代码。

# 六、中间件|插件

# 1. Spring Boot 中间件

简要介绍 SpringBoot 插件的设计和实现,在 Spring Boot + 领域驱动设计使得微服务越来越火热,而随着微服务越来越多,服务的治理就显得尤为重要。

在我们的业务领域开发中,经常会有一些通用性功能搭建,比如;白名单、黑名单、限流、熔断等,为了更好的开发业务功能,我们需要将非业务功能的通用逻辑提取出来开发出通用组件,以便于业务系统使用。而不至于Copy来Copy去,让代码乱的得加薪才能修改的地步!

# 2. IDEA 插件开发

学习 IDEA-Plugin 开发技术,IDEA 插件开发可以开发出很多用于提效研发编程的技术插件,例如一些监控、脚手架、接口API以及调试、流程化低代码编排等等,所以这部分内容的价值还是蛮大的。

# 七、Netty 4.x

Netty4.x案例从简单入门到应用实战,全篇37章节优秀案例+实战源码[基础篇(13)、中级篇(13)、高级篇(3章+)、源码分析篇]

# 八、字节码编程

讲道理,市面上以及网络搜索中都基本很少有成体系的关于字节码编程的知识,这主要由于大部分开发人员其实很少接触这部分内容,包括;ASMJavassistByte-buddy以及JavaAgent,没有很大的市场也就没有很多的资料。但大家其实已经从其他的框架或者中间件中使用到,就像你用到的;Cglib、混沌工程、非入侵的全链路监控以及你是否使用过jetbrains-agent.jar做了某项实验?

# 九、专栏|小册|PDF

# 1. 出版图书

# - 小傅哥的《重学 Java 设计模式》 (opens new window) ⭐⭐⭐⭐

本书是作者小傅哥,基于互联网真实案例编写的Java设计模式实践图书。全书以解决方案为核心,从实际开发业务中抽离出交易、营销、规则引擎、中间件、框架源码等22个真实场景,对设计模式进行全面、彻底的分析。帮助读者灵活地使用各种设计模式,从容应对复杂变化的业务需求,编写出易维护、可扩展的代码结构。本书融合了生动有趣的动画插图和实践开发的类结构图,让读者不仅能体会设计模式的概念和原理,更能清楚地知晓落地方法。此外,本书还介绍了DDD四层架构、RPC中间件设计、分布式领域驱动设计和设计模式的结合使用等内容。

# 2. 小册专栏

# - SpringBoot 中间件设计和开发 (opens new window)

全小册19个章节,包括16个中间件的设计和开发,包括测试案例共30个代码库提供给读者学习使用。小册实现的中间件场景涵盖:技术框架、数据服务、数据组件、分布式技术、服务治理、字节码、IDEA插件七个方面,贯穿整个互联网系统架构中常用的核心内容。非常值得了解、学习、实践到掌握。

# - Netty + JavaFx 实战:仿桌面版微信聊天 (opens new window)

🎭 本项目是作者小傅哥使用JavaFx、Netty4.x、SpringBoot、Mysql等技术栈和偏向于DDD领域驱动设计方式,搭建的仿桌面版微信实现通信核心功能。

# 3. 输出PDF

# - 小傅哥的《Java 面经手册》 (opens new window) ⭐⭐⭐⭐

全书共计 5 章 29 节,417页11.5万字,耗时 4 个月完成。涵盖数据结构、算法逻辑、并发编程、JVM以及简历和互联网大厂面试等内容。但此书并不是单纯的面试题,也不是内卷八股文。而是从一个单纯的和程序员有关的数学知识点开始,深入讲解 Java 的核心技术。并且每一章节都配有实践验证的源码,可以对照着一起撸才更有感觉!

# - 小傅哥的《手撸 Spring》 (opens new window) ⭐⭐⭐⭐⭐

通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。

# - 小傅哥的《重学Java设计模式》PDF旧版 (opens new window)

本书从互联网实际业务开发中抽离出,交易、营销、秒杀、中间件、源码等22个真实业务场景,编写了18万字271页的实战型Java编程资料。如果书中含有不易理解的内容,一定是作者在编写的过程中缺少必要的描述和严格的校准,感谢把你的意见或者疑问提交给我,也欢迎与我多一些交互,互相进步共同成长。

# 4. 知识星球

保持初心,努力成为一个简单、干净、纯粹的技术人,为读者提供有价值的同好圈子。服务包括:技术解答、简历批阅、成长指导、内容分享,以及整理输出各项技术栈小册、PDF文件和录制技术视频。在星球向我提问关于成长、学习、职场、晋升、答辩、简历等各项你需要知道的内容,同时我也会不定期的整理和分享出各类属于星球的技术小册、编程视频、PDF文件和推荐一些真正有效让人成长的书籍和资料。

专属内容


感谢所有读者粉丝,对以上付费内容的支持,让我有更大的动力去坚持完成技术内容创作。

# 十、关于

讲讲自己、讲讲学习、讲讲职场,希望这样的经验可以给你的学习成长路上一些参考。