Tom弹架构_社区达人页

个人头像照片
Tom弹架构
已加入开发者社区748

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
江湖新秀
江湖新秀

成就

已发布192篇文章
12条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
  • Spring
  • 分布式
  • 微服务
  • Java架构
  • 设计模式
擅长领域
技术认证

暂时未有相关云产品技术能力~

咕泡科技联合创始人。著有畅销书《Spring 5核心原理与30个类手写实战》、《Netty 4核心原理与手写RPC框架实战》、《设计模式就该这样学》、《Java面试八股文》。一个从美术生转型Java开发的程序员,3年内做到架构师,5年内做到CTO。14年Java从业经验,6年线上教学经验。

暂无精选文章
暂无更多信息

2023年08月

  • 08.31 20:29:15
    发表了文章 2023-08-31 20:29:15

    谈谈分布式事务的3种解决方案

    前几天,有一位10多年经验的架构师在面试互联网大厂时被问到这样一个问题,说请你谈谈分布式事务的解决方案。那今天,我给大家分享一下我对这个问题的理解。
  • 08.31 20:24:16
    发表了文章 2023-08-31 20:24:16

    为什么Netty线程池默认大小为CPU核数的2倍

    有位工作5年的小伙伴问我说,为什么Netty线程池默认大小为CPU核数的2倍,今天,我花2分钟时间给大家专门分享一下我对这个问题的理解。
  • 08.31 20:14:14
    发表了文章 2023-08-31 20:14:14

    谈谈你对MVCC的理解

    MVCC也是一道非常高频的面试题,今天我花两分钟时间给大家梳理一下。另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以在我的煮叶简介中找到。
  • 08.31 20:07:30
    发表了文章 2023-08-31 20:07:30

    Spring中@Autowired和@Resource的区别

    有非常多的小伙伴从大厂毕业,导致招聘也卷得相当厉害,不管是应届生、中开、高开,都会问技术原理。还经常问一些日常开发不太需要了解的知识点对比。今天,就给大家分享一个应届生被问到的一道面试题,在Spring中,@Autowired注解和@Resource注解的区别。
  • 08.31 20:00:41
    发表了文章 2023-08-31 20:00:41

    谈谈你对深克隆和浅克隆的理解

    一个工作了5年的程序员私信我说,前几天去阿里面试被问到这样一个这样的面试题,说谈谈你对深克隆和浅克隆的理解。他回答说深克隆是克隆值,浅克隆是克隆引用,当时他只说了这样一句话,回答完以后,他看到面试官的表情很诧异,面试也没有继续深入追问了。小伙伴们,如果是你来回答,你也会这样回回答吗?
  • 08.31 19:54:03
    发表了文章 2023-08-31 19:54:03

    一次性聊透JVM架构设计,就算八股文也得会

    有位小伙伴在我的粉丝群里面问我一个面试题,说面试被问对JVM的理解,不知道怎么回答,今天咱们来聊透,就算是八股文你也得会。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。
  • 08.31 19:48:09
    发表了文章 2023-08-31 19:48:09

    Spring中BeanFactory和FactoryBean的区别?

    一位工作了4年的小伙伴,去京东面试被问到这样一个问题,Spring中的BeanFactory和FactoryBean有什么区别?因为没有看过源码,当时就感觉这是一个文字游戏,感觉没什么区别? 那今天,我就给大家来聊清楚。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。好了,我们先来看BeanFactory。
  • 08.31 19:44:45
    发表了文章 2023-08-31 19:44:45

    前中电技术总监带你了解,什么是零拷贝,Netty是如何实现的?

    呢作为一个高性能的网络通信框架,被越来越多互联网公司关注和重视。最近,有小伙伴在面试过程中被问到Netty是如何实现零拷贝的问题?,今天,我给大家来聊一聊。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。
  • 08.31 19:41:02
    发表了文章 2023-08-31 19:41:02

    如何解决缓存雪崩、缓存穿透和缓存击穿?

    上一期视频,我跟大家聊了我对缓存雪崩、缓存穿透和缓存击穿的理解。那官方又是如何解释的呢?另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。
  • 08.31 19:38:16
    发表了文章 2023-08-31 19:38:16

    什么是Redis缓存雪崩、缓存穿透和缓存击穿?

    什么是Redis缓存雪崩、缓存穿透、缓存击穿?关于这个问题至少有20位以上的粉丝咨询过我。这确实是一道互联网大厂的高频面试题。今天,我给大家来聊一聊。
  • 08.31 18:40:09
    发表了文章 2023-08-31 18:40:09

    Redis是单线程还是多线程,为什么效率这么高?

    Redis是单线程还是多线程?这个问题,把一个5年开发经验的程序员给问懵了。可能很多小伙伴平时都听说过,Redis就是单线程的。但是我们学习Redis命令的时候,有经常有设置异步,比如bgsave命令,它的作用是在后台异步持久化数据到磁盘,那既然是异步,肯定需要由线程来完成。
  • 08.31 18:34:03
    发表了文章 2023-08-31 18:34:03

    3分钟通晓,互联网架构20年以来的演进

    作为一个Java程序员,你可能也思考过,为什么我还是普通开发,为什么我还是高级开发,普通开发和高级开发有什么区别?你是不是也想过要成为架构师?想要成为合格的架构师,就必须要了解架构的演进,今天,我们就来聊一聊,Java架构的演变历史。
  • 08.31 18:17:58
    发表了文章 2023-08-31 18:17:58

    美团面试真题,如何保证Kafka消息不丢失?

    一位工作了5年的小伙伴去美团面试以后,跟我反馈说,被问到一个“如何保证Kafka消息不丢失?”的问题,不知道如何回答。其实,这道题真的很基础。 很多小伙伴可能只会回答说,消息要持久化,添加消息确认机制。如果,你只是这样回答,那就和普通的程序员没什么区别。要想让面试官感觉你确实有不一样的理解,就应该从多个方面更全面地来分析和回答这个问题。今天,我来给大家讲明白。
  • 08.31 18:12:20
    发表了文章 2023-08-31 18:12:20

    最通俗的方式理解Spring循环依赖三级缓存

    有位粉丝找我,说要耽误我5分钟时间,想让我帮助它理解一下Spring循环依赖的三级缓存,绕晕了一个星期,没有想明白。我想今天,用最通俗易懂的方式给大家重新梳理一下,保证让你听懂了。
  • 08.31 18:05:37
    发表了文章 2023-08-31 18:05:37

    为什么越来越多的人选择Spring Boot?

    我们都知道,Spring是一个非常经典的应用框架,与其说是Java开发不如说是Spring开发,为什么现在越来越多的人会选择用Spring Boot呢?。要回答这个问题,还需要从Java Web开发的发展历史开始说起。
  • 08.31 17:59:27
    发表了文章 2023-08-31 17:59:27

    哪些情况下的单例对象可能会破坏?

    有位小伙伴在评论区留言,希望我分享一些设计模式相关的面试题。设计模式本身是很抽象的,但是在很多面试中又经常被问到,很多小伙伴其实都能答得上,但是又不知道怎么样回答才能让面试官满意,往往越简单的知识越能够体现出核心竞争力。
  • 08.31 17:06:10
    发表了文章 2023-08-31 17:06:10

    Spring Boot自动装配原理

    昨天,有位在广州工作4年的小伙伴,在面试中被问到SpringBoot自动装配原理,当时,自我感觉比较好,他要的是30K,但是都没有拿到Offer。今天,我给大家分享一下我的理解。
  • 08.31 16:59:41
    发表了文章 2023-08-31 16:59:41

    为什么ConcurrentHashMap不允许插入null值?

    在Java语言中,给ConcurrentHashMap和Hashtable这些线程安全的集合中的Key或者Value插入 null(空) 值的会报空指针异常,但是单线程操作的HashMap又允许 Key 或者 Value 插入 null(空) 值。这到底是为什么呢?
  • 08.31 16:55:10
    发表了文章 2023-08-31 16:55:10

    请简述Spring MVC的执行流程

    今天我给大家介绍一下Spring MVC的详细执行流程。我把Spring MVC的执行流程划分为三个阶段,配置阶段、初始化阶段和运行阶段。
  • 08.31 16:52:13
    发表了文章 2023-08-31 16:52:13

    两个Integer对象比较大小,为什么100等于100,1000不等于1000 ?

    前几天,有位小伙伴向我反馈,在维护代码过程中,出现了一个莫名其妙的问题。明明上线之后程序跑得还好好的,可程序上线运行一段时间之后,所有,代码没有做任何修改,发 cxccccc现运行结果和期望值恰好相反。因为涉及到金额造成了比较大的损失,最后,这位小伙伴还被公司辞退了,大家可以来评论一下,这位小伙伴背的这个锅值不值?
  • 08.31 16:44:19
    发表了文章 2023-08-31 16:44:19

    刚折腾完Log4J,又爆Spring RCE核弹级漏洞

    继Log4J爆出安全漏洞之后,又在深夜,Spring的github上又更新了一条可能造成RCE(远程命令执行漏洞)的问题代码,随即在国内的安全圈炸开了锅。有安全专家建议升级到JDK 9以上,有些专家又建议回滚到JDK 7以下,一时间小伙伴们不知道该怎么办了。大家来看一段动画演示,怎么改都是“将军"。
  • 08.31 16:38:10
    发表了文章 2023-08-31 16:38:10

    什么条件下会产出死锁,如何避免死锁?

    一个去美团面试的小伙伴私我说,被面试官问到一个死锁的问题难道了,面试前还特意刷了题,面试的时候就是脑子一片空白不知道怎么回答。今天,我给大家彻底讲明白。
  • 08.31 16:34:37
    发表了文章 2023-08-31 16:34:37

    什么是内存溢出,什么是内存泄漏?

    什么是内存溢出,什么是内存泄漏?这是很多小伙伴经常问我的一个问题,今天花3分钟时间给大家介绍一下。先来介绍什么是内存溢出?
  • 08.31 16:29:55
    发表了文章 2023-08-31 16:29:55

    3分钟轻松理解单线程下的HashMap工作原理

    HashMap主要是用来处理键值对数据。随着JDK版本的更新,JDK1.8对HashMap对底层也做了一些优化。今天我带大家一起来结合源码,深入浅出HashMap工作原理。
  • 08.31 16:23:41
    发表了文章 2023-08-31 16:23:41

    被面试官问烂的Spring AOP原理,你是怎么答的?

    Spring AOP在Spring体系中深不可测,Spring AOP原理也是经常在互联网大厂面试时被问到,今天,我给大家抽丝剥茧,详细到你无法想象。我划分为四个阶段给大家介绍:创建代理对象阶段、拦截目标对象阶段、调用代理对象阶段、调用目标对象阶段。
  • 08.31 16:17:39
    发表了文章 2023-08-31 16:17:39

    为什么Spring中每个Bean都要定义作用域

    前面的视频中都有提到过Spring Bean的作用域。本期视频呢,我针对Spring Bean作用域做一个详细的解答。关于Spring Bean的作用域,我一共分为两个部分来介绍。首先,介绍Spring Bean作用域的定义,然后,介绍Spring为什么要定义作用域?
  • 08.31 16:09:32
    发表了文章 2023-08-31 16:09:32

    谈谈你对Spring Bean的理解

    咱们先来看什么是Spring Bean?
  • 08.31 15:52:56
    发表了文章 2023-08-31 15:52:56

    Spring中的Bean是线程安全的吗?

    金三银四的招聘季到了,Spring 作为最热门的框架,在很多大厂面试中都会问到相关的问题。 前几天,就有好几个同学就问我,在面试中被问到这样一个问题。Spring中的Bean是不是线程安全的。大家总觉得在面试过程差了一点意思。但是又说不上来是什么原因。这是因为,大家可能对Spring 的本质还欠缺一些深度的思考。
  • 08.31 15:35:54
    发表了文章 2023-08-31 15:35:54

    MongoDB高级应用之数据转存与恢复(5)

    创建索引同时指定索引的名字
  • 08.31 15:24:49
    发表了文章 2023-08-31 15:24:49
  • 08.31 15:13:05
    发表了文章 2023-08-31 15:13:05

    图解MongoDB集群部署原理(3)

    MongoDB的集群部署方案中有三类角色:实际数据存储结点、配置文件存储结点和路由接入结点。
  • 08.31 15:04:38
    发表了文章 2023-08-31 15:04:38

    MongoDB常用命令(2)

    1、创建数据库
  • 08.31 14:47:21
    发表了文章 2023-08-31 14:47:21

    MongoDB基本介绍与安装(1)

    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)
  • 08.31 14:35:25
    发表了文章 2023-08-31 14:35:25

    Spring核心原理之 IoC容器中那些鲜为人知的细节(3)

    Spring IoC容器还有一些高级特性,如使用lazy-init属性对Bean预初始化、使用FactoryBean产生或者修饰Bean对象的生成、IoC容器在初始化Bean过程中使用BeanPostProcessor后置处理器对Bean声明周期事件进行管理等。
  • 08.31 14:27:48
    发表了文章 2023-08-31 14:27:48

    Spring核心原理之IoC容器初体验(2)

    IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建、依赖,反转给容器来帮忙实现。我们需要创建一个容器,同时需要一种描述来让容器知道要创建的对象与对象的关系。这个描述最具体的表现就是我们所看到的配置文件。
  • 08.31 14:21:19
    发表了文章 2023-08-31 14:21:19

    Spring核心原理分析之MVC九大组件(1)

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。Spring MVC 角色划分清晰,分工明细。由于 Spring MVC 本身就是 Spring 框架的一部分,可以说和 Spring 框架是无缝集成。性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架,最热门的开发技能。
  • 08.31 14:13:48
    发表了文章 2023-08-31 14:13:48

    30个类手写Spring核心原理之动态数据源切换(8)

    这里简单介绍一下AbstractRoutingDataSource的基本原理。实现数据源切换的功能就是自定义一个类扩展AbstractRoutingDataSource抽象类,其实相当于数据源的路由中介,可以实现在项目运行时根据相应key值切换到对应的DataSource上。先看看AbstractRoutingDataSource类的源码:
  • 08.31 14:07:44
    发表了文章 2023-08-31 14:07:44

    30个类手写Spring核心原理之自定义ORM(下)(7)

    ClassMappings主要定义基础的映射类型,代码如下:
  • 08.31 14:01:16
    发表了文章 2023-08-31 14:01:16

    30个类手写Spring核心原理之自定义ORM(上)(6)

    说到ResultSet,有Java开发经验的“小伙伴”自然最熟悉不过了,不过我相信对于大多数人来说也算是“最熟悉的陌生人”。从ResultSet取值操作大家都会,比如:
  • 08.31 13:54:54
    发表了文章 2023-08-31 13:54:54

    【紧急】继续折腾,Log4j再发2.16.0,强烈建议升级

    由于SLF4J适配兼容性的中断,Log4j 现在发布两个版本的SLF4J to Log4j的适配器。log4j-slf4j-impl对应 SLF4J 1.7.x 及更早版本;log4j-slf4j18-impl对应SLF4J 1.8.x 及更高版本一起使用。SLF4J-2.0.0 alpha 版本目前还不完全支持。
  • 08.31 13:36:04
    发表了文章 2023-08-31 13:36:04

    30个类手写Spring核心原理之AOP代码织入(5)

    前面我们已经完成了Spring IoC、DI、MVC三大核心模块的功能,并保证了功能可用。接下来要完成Spring的另一个核心模块—AOP,这也是最难的部分。
  • 08.31 13:16:14
    发表了文章 2023-08-31 13:16:14

    30个类手写Spring核心原理之MVC映射功能(4)

    接下来我们来完成MVC模块的功能,应该不需要再做说明。Spring MVC的入口就是从DispatcherServlet开始的,而前面的章节中已完成了web.xml的基础配置。下面就从DispatcherServlet开始添砖加瓦。
  • 08.31 13:07:27
    发表了文章 2023-08-31 13:07:27

    30个类手写Spring核心原理之依赖注入功能(3)

    在之前的源码分析中我们已经了解到,依赖注入(DI)的入口是getBean()方法,前面的IoC手写部分基本流程已通。先在GPApplicationContext中定义好IoC容器,然后将GPBeanWrapper对象保存到Map中。在GPApplicationContext中设计两个Map:factoryBeanObjectCache保存单例对象的缓存,factoryBeanInstanceCache保存GPBeanWrapper的缓存,变量命名也和原生Spring一致,这两个对象的设计其实就是注册式单例模式的经典应用。
  • 08.31 13:02:11
    发表了文章 2023-08-31 13:02:11

    【紧急】Apache Log4j任意代码执行漏洞安全风险升级修复教程

    近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
  • 08.31 12:54:07
    发表了文章 2023-08-31 12:54:07

    30个类手写Spring核心原理之Ioc顶层架构设计(2)

    Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。
  • 08.31 12:42:47
    发表了文章 2023-08-31 12:42:47

    30个类手写Spring核心原理之环境准备(1)

    IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多。Lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过Lombok注解减少getter、setter等方法的编写,在更改实体类时只需要修改属性即可,减少了很多重复代码的编写工作。 首先需要安装IntelliJ IDEA中的Lombok插件,打开IntelliJ IDEA后单击菜单栏中的File→Settings(如下图所示),或者使用快捷键Ctrl+Alt+S进入设置界面。
  • 08.31 11:03:31
    发表了文章 2023-08-31 11:03:31

    雇工模式(Employee Pattern)

    雇工模式(Employee Pattern)也叫作仆人模式(Servant Pattern),属于行为型设计模式,它为一组类提供通用的功能,而不需要类实现这些功能,也是命令模式的一种扩展。
  • 08.31 11:00:00
    发表了文章 2023-08-31 11:00:00

    空对象模式(Null Object Pattern)

    空对象模式(Null Object Pattern)不属于GoF设计模式,但是它作为一种经常出现的模式足以被视为设计模式了。其具体定义为设计一个空对象取代NULL对象实例的检查。NULL对象不是检查控制,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为,属于行为型设计模式。
  • 08.31 10:55:24
    发表了文章 2023-08-31 10:55:24

    规格模式(Specification Pattern)

    规格模式(Specification Pattern)可以认为是组合模式的一种扩展。很多时候程序中的某些条件决定了业务逻辑,这些条件就可以抽离出来以某种关系(与、或、非)进行组合,从而灵活地对业务逻辑进行定制。另外,在查询、过滤等应用场合中,通过预定义多个条件,然后使用这些条件的组合来处理查询或过滤,而不是使用逻辑判断语句来处理,可以简化整个实现逻辑。
  • 08.31 10:51:04
    发表了文章 2023-08-31 10:51:04

    对象池模式(Object Pool Pattern)

    对象池模式(Object Pool Pattern),是创建型设计模式的一种,将对象预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象来处理请求,减少频繁创建对象所占用的内存空间和初始化时间。
  • 发表了文章 2023-09-01

    如果Spring中有两个ID相同的Bean,会报错吗?

  • 发表了文章 2023-09-01

    Java场景面试题:短信验证码接口被狂刷,怎么办?

  • 发表了文章 2023-09-01

    彻底讲明白Java中眼花缭乱的各种并发锁

  • 发表了文章 2023-09-01

    雪花算法的实现原理

  • 发表了文章 2023-09-01

    谈谈你对Spring MVC中的九大组件的理解?

  • 发表了文章 2023-09-01

    Java高频面试题,谈谈你对OAuth的理解,这道题你会了吗?

  • 发表了文章 2023-09-01

    谈谈你对Nacos配置动态更新原理的理解,这道题一定要会

  • 发表了文章 2023-09-01

    工作八年?是高级开发?竟然答不出:如何保证RabbitMQ的高可用?

  • 发表了文章 2023-09-01

    什么是乐观锁,什么是悲观锁?

  • 发表了文章 2023-09-01

    MySQL存储引擎MyISAM和InnoDB的区别

  • 发表了文章 2023-09-01

    ThreadLocal真的会造成内存泄漏吗?

  • 发表了文章 2023-09-01

    ConcurrentHashMap是如何保证线程安全的?

  • 发表了文章 2023-09-01

    为什么HashMap会产生死循环?

  • 发表了文章 2023-09-01

    Spring为何需要三级缓存解决循环依赖,而不是二级缓存?

  • 发表了文章 2023-09-01

    Spring Bean的生命周期全过程

  • 发表了文章 2023-09-01

    肝了30天总结,史上最全面透彻的Spring核心原理分析和27道高频面试题

  • 发表了文章 2023-09-01

    花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

  • 发表了文章 2023-09-01

    彻底搞懂Spring状态机原理,实现订单与物流解耦

  • 发表了文章 2023-09-01

    没有性能瓶颈的无限级菜单树应该这样设计

  • 发表了文章 2023-09-01

    Java场景面试题:手机扫码登录到底是怎么实现的?

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息