自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tom弹架构

《Spring 5核心原理》、《Netty 4核心原理》、《设计模式就该这样学》作者,不只做一个技术者,更要做一个思考者

  • 博客(82)
  • 资源 (4)
  • 收藏
  • 关注

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

在阅读面试题之前,小伙伴们可以先看看我之前发布的系列文章,Spring核心原理包括源码分析和用30个类手写。面试刷题固然很重要,但是知其然知其所以然更重要。1 Spring环境预热篇标题备注Tom弹架构:Spring 5系统架构2021/12/01已更新Tom弹架构:Spring版本命名规则2021/12/02已更新Tom弹架构:基于Gradle的Spring源码下载及构建技巧2021/12/03已更新2 30个类手写实战篇标题备注Tom

2021-12-30 13:39:27 192

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

本文所有内容均节选自《设计模式就该这样学》序言Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复.

2021-12-12 21:00:35 556

原创 如何理解Java中眼花缭乱的各种并发锁?

在互联网公司面试中,很多小伙伴都被问到过关于锁的问题。 今天,我给大家一次性把Java并发锁的全家桶彻底讲明白。包括互斥锁、读写锁、重入锁、公平锁、悲观锁、自旋锁、偏向锁等等等等。视频有点长,大家一定要全部看完,保证你会醍醐灌顶。 ...

2022-11-14 20:47:00 188

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

在互联网公司面试中,很多小伙伴都被问到过关于锁的问题。 今天,我给大家一次性把Java并发锁的全家桶彻底讲明白。包括互斥锁、读写锁、重入锁、公平锁、悲观锁、自旋锁、偏向锁等等等等。视频有点长,大家一定要全部看完,保证你会醍醐灌顶。 ...

2022-11-14 20:47:00 185

原创 Spring中BeanFactory和FactoryBean的区别?

需要面试文档扫文章尾部二维码+\/免费拿!一位工作了4年的小伙伴,去京东面试被问到这样一个问题,Spring中的BeanFactory和FactoryBean有什么区别?因为没有看过源码,当时就感觉这是一个文字游戏,感觉没什么区别?那今天,我就给大家来聊清楚。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。好了,我们先来看BeanFactory。1、BeanFactory在Spring中最核心的就是Ioc容器,它保存了所有需要对...

2022-05-28 15:04:24 203

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

10万字Java总结面试题和答案可扫描左侧二维码+\/免费拿!呢作为一个高性能的网络通信框架,被越来越多互联网公司关注和重视。最近,有小伙伴在面试过程中被问到Netty是如何实现零拷贝的问题?,今天,我给大家来聊一聊。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。我们先来看什么是零拷贝?1、什么零拷贝在计算机中,完成数据传输,要么是通过网络,要么就是通过本地磁盘。通常完成一次完整I/O交互流程分为两阶段,首先拷贝到系统内核空间,由操作系统来完成;.

2022-05-27 14:24:12 144

原创 金三银四跳槽季,教你这几招提高面试成功率

一、面试前准备参加面试除了携带必要的证书、文凭、照片等常规的用品以外,还应事先做些“功课”,归纳起来大概有一下几个方面的准备工作。1.1 背熟自己的求职履历有些求职者跳槽太过频繁,将自己的求职履历经过精心“包装”,简历中含有大量“水分”。轮到面试时有时连自己都不清楚究竟“工作经验”是怎样“排列组合”了,一上阵便迅速“露出马脚”,不战自败。当然,现在企业选拔人才时也会着重考察履历的真实性,那些包装过度的履历和求职者本人会“吃苦头”的,大多逃不过面试官的“火眼真睛”。因此,在面试前,求职者要做足充分准

2022-02-28 16:04:20 632

原创 掌握这些招数,你也能写出HR眼中的高分简历

一、简历的定义简历就是将自身的经历、工作成绩、个人能力、性格等信息简要地列举出来。根据使用简历的目的不同,可以将简历分为展示型简历和求职型简历。此处跟大家分享的是求职简历。二、简历的作用1、简历是用人单位了解求职者的第一扇窗。因此,简历便成了求职者和用人单位沟通的第一通道,往往是招聘者了解求职者的第一个途径,适度地引起用人单位对求职者的兴趣才是最重要的。2、一份好的简历,能够在众多求职简历中脱颖而出,给招聘人员留下深刻的印象,它是帮助求职者应聘成功的敲门砖。一份能够吸引招聘者注意力的简历能够增加面试

2022-02-27 21:38:02 111

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

1、MongoDB索引 1.1、创建索引 db.books.ensureIndex{{number:1}} ...

2022-01-07 13:55:25 114

原创 MongoDB高级应用之高可用方案实战(4)

1、MongDB启动与关闭1.1、命令行启动./mongod --fork --dbpath=/opt/mongodb/data ----logpath=/opt/mongodb/log/mongodb.log1.2、配置文件启动./mongod -f mongodb.cfgmongoDB基本配置/opt/mongodb/mongodb.cfgdbpath=/opt/mongodb/datalogpath=/opt/mongodb/logs/mongodb.loglogappend=

2022-01-06 13:27:58 103

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

MongoDB的集群部署方案中有三类角色:实际数据存储结点、配置文件存储结点和路由接入结点。连接的客户端直接与路由结点相连,从配置结点上查询数据,根据查询结果到实际的存储结点上查询和存储数据。MongoDB的部署方案有单机部署、复本集(主备)部署、分片部署、复本集与分片混合部署。混合的部署方式如图:混合部署方式下向MongoDB写数据的流程如图:混合部署方式下读MongoDB里的数据流程如图:对于副本集,又有主和从两种角色,写数据和读数据也是不同,写数据的过程是只写到主结点中,由主结点以异步

2022-01-05 14:59:31 193

原创 MongoDB常用命令(2)

1、创建数据库use testdb2、创建集合db.t_member.insert({name:"zhaomin",age:23})3、查询db.t_member.find()db.t_member.findOne()4、修改db.t_member.update({name:"zhaomin"},{$set:{age:18}}) #不会影响其他属性列 ,主键冲突会报错db.t_member.update({name:"zhaomin"},{$set:{age:18}},true)#第

2022-01-04 17:57:13 160

原创 MongoDB基本介绍与安装(1)

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)1 什么是NoSQLNoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook

2021-12-31 14:03:01 84

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

本文节选自《Spring 5核心原理》Spring IoC容器还有一些高级特性,如使用lazy-init属性对Bean预初始化、使用FactoryBean产生或者修饰Bean对象的生成、IoC容器在初始化Bean过程中使用BeanPostProcessor后置处理器对Bean声明周期事件进行管理等。1 关于延时加载我们已经知道,IoC容器的初始化过程就是对Bean定义资源的定位、载入和注册,此时容器对Bean的依赖注入并没有发生,依赖注入是在应用程序第一次向容器索取Bean时通过getBean(.

2021-12-25 15:50:39 530

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

本文节选自《Spring 5核心原理》1 IoC与DI基本概念IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建、依赖,反转给容器来帮忙实现。我们需要创建一个容器,同时需要一种描述来让容器知道要创建的对象与对象的关系。这个描述最具体的表现就是我们所看到的配置文件。DI(Dependency Injection,依赖注入)就是指对象被动接受依赖类而不自己主动去找,换句话说,就是指对象不是从容器中查找它依赖的类,而是在容器实例化对象时主动将它依赖的类注入给.

2021-12-24 13:55:31 95

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

本文节选自《Spring 5核心原理》1 什么是Spring MVCSpring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。Spring MVC 角色划分清晰,分工明细。由于 Spring MVC 本身就是 Spring 框架的一部分,可以说和 Spring 框架是无缝集成。性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架,最热门的开发技能。首先从一个由Spring提供的DispatcherServlet开始,.

2021-12-22 13:43:49 508

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

本文节选自《Spring 5核心原理》阅读本文之前,请先阅读以下内容:30个类手写Spring核心原理之自定义ORM(上)(6)30个类手写Spring核心原理之自定义ORM(下)(7)4 动态数据源切换的底层原理这里简单介绍一下AbstractRoutingDataSource的基本原理。实现数据源切换的功能就是自定义一个类扩展AbstractRoutingDataSource抽象类,其实相当于数据源的路由中介,可以实现在项目运行时根据相应key值切换到对应的DataSource上。先看看.

2021-12-21 13:20:52 507

原创 【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变

1 事件背景经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决问题,然后进而继续发布了 2.16.0 版本。大家都以为2.16.0是最终终结版本了,没想到才过多久又爆雷,Log4j 2.17.0横空出世。相信各位小伙伴都在加班加点熬夜紧急修复和改正Apache Log4j爆出的安全漏洞,各企业都瑟瑟发抖,连网警都通知各位站长,包括我也收到了湖南长沙高新区网警的通知。

2021-12-20 10:35:24 810

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

本文节选自《Spring 5核心原理》3 基于Spring JDBC实现关键功能3.1 ClassMappingsClassMappings主要定义基础的映射类型,代码如下:package com.tom.orm.framework;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.math.BigDecimal;.

2021-12-17 14:05:16 953

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

本文节选自《Spring 5核心原理》1 实现思路概述1.1 从ResultSet说起说到ResultSet,有Java开发经验的“小伙伴”自然最熟悉不过了,不过我相信对于大多数人来说也算是“最熟悉的陌生人”。从ResultSet取值操作大家都会,比如:private static List<Member> select(String sql) { List<Member> result = new ArrayList<>(); Conn.

2021-12-16 13:32:41 1958

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

背景继前天正式发布的2.15.0之后,Apache log4j 2 团队宣布 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 版本目前还不完全支持。强烈推荐升级2.16.0。修正错误1、LOG4J2-3208:默认禁用 JN

2021-12-15 16:17:35 1749

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

本文节选自《Spring 5核心原理》前面我们已经完成了Spring IoC、DI、MVC三大核心模块的功能,并保证了功能可用。接下来要完成Spring的另一个核心模块—AOP,这也是最难的部分。1 基础配置首先,在application.properties中增加如下自定义配置,作为Spring AOP的基础配置:#多切面配置可以在key前面加前缀#例如 aspect.logAspect.#切面表达式#pointCut=public .* com.tom.spring.demo.s.

2021-12-14 13:44:47 2014 4

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

本文节选自《Spring 5核心原理》接下来我们来完成MVC模块的功能,应该不需要再做说明。Spring MVC的入口就是从DispatcherServlet开始的,而前面的章节中已完成了web.xml的基础配置。下面就从DispatcherServlet开始添砖加瓦。1 MVC顶层设计1.1 GPDispatcherServlet我们已经了解到Servlet的生命周期由init()到service()再到destory()组成,destory()方法我们不做实现。前面我们讲过,这是J2EE.

2021-12-13 14:55:15 960

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

背景近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。Apache Log4j2 是一款优秀的 Java 日志框架。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。由于 Apache Log4j2

2021-12-12 21:57:25 1151

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

本文节选自《Spring 5核心原理》在之前的源码分析中我们已经了解到,依赖注入(DI)的入口是getBean()方法,前面的IoC手写部分基本流程已通。先在GPApplicationContext中定义好IoC容器,然后将GPBeanWrapper对象保存到Map中。在GPApplicationContext中设计两个Map:factoryBeanObjectCache保存单例对象的缓存,factoryBeanInstanceCache保存GPBeanWrapper的缓存,变量命名也和原生Sprin.

2021-12-12 21:00:04 1286

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

本文节选自《Spring 5核心原理》1 Annotation(自定义配置)模块Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。1.1 @GPService@GPService代码如下:package com.tom.spring.formework.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import ja.

2021-12-12 20:59:32 695 2

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

本文节选自《Spring 5核心原理》1 IDEA集成Lombok插件1.1 安装插件IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多。Lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过Lombok注解减少getter、setter等方法的编写,在更改实体类时只需要修改属性即可,减少了很多重复代码的编写工作。首先需要安装IntelliJ IDEA中的Lombok插件,打开IntelliJ IDEA后单击菜单栏中的File→Sett.

2021-12-12 20:58:57 892

转载 大厂高频面试题Spring Bean生命周期最详解

Spring作为当前Java最流行、最强大的轻量级框架。Spring Bean的生命周期也是面试高频题,了解Spring Bean周期也能更好地帮助我们解决日常开发中的问题。程序员应该都知道Spring的基础容器是ApplicationContext。应很多粉丝的强烈建议,本文我来分析分析 ApplicationContext中Bean的生命周期。ApplicationContext是顶层容器接口BeanFactory的实现类,因此,我们了解了ApplicationContext的生命周期逻辑,也基本上了解

2021-12-12 20:58:25 488 4

原创 规格模式(Specification Pattern)

本文节选自《设计模式就该这样学》 1 规格模式的定义 ...

2021-11-26 16:06:00 131

原创 空对象模式(Null Object Pattern)

本文节选自《设计模式就该这样学》 1 空对象模式的定义 ...

2021-11-26 16:06:00 97

原创 雇工模式(Employee Pattern)

本文节选自《设计模式就该这样学》 1 雇工模式的定义 ...

2021-11-26 16:06:00 75

原创 对象池模式(Object Pool Pattern)

本文节选自《设计模式就该这样学》 1 对象池模式的定义 ...

2021-11-26 16:06:00 76

原创 彻底搞懂访问者模式的静态、动态和伪动态分派

本文节选自《设计模式就该这样学》 1 使用访问者模式实现KPI考核的场景 ...

2021-11-26 16:05:00 82

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

本文节选自《设计模式就该这样学》 ...

2021-11-25 10:30:00 130

原创 微信和QQ这么多群,该如何管理好友关系?

本文节选自《设计模式就该这样学》 ...

2021-11-23 13:39:00 79

原创 100行代码,轻松实现文本编辑器中草稿箱功能

本文节选自《设计模式就该这样学》 ...

2021-11-22 14:29:00 620

原创 使用命令模式重构播放器控制条

...

2021-11-19 16:04:00 64

原创 这个无敌设计,可以解析并运算任意数学表达式

本文节选自《设计模式就该这样学》 ...

2021-11-18 14:18:00 93

原创 基于Guava API实现异步通知和事件回调

本文节选自《设计模式就该这样学》 ...

2021-11-17 16:02:00 142

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

本文节选自《设计模式就该这样学》 1 状态模式的UML类图 ...

2021-11-16 13:46:00 198

走出软件 作坊 更好的做软件

走出软件作坊 走出软件 作坊 更好地做出自己的软件

2010-10-31

JAVA常见面试题目

JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目JAVA面试题目

2010-10-31

C语言的关于计算器的实现

C语言的关于计算器的实现 用栈实现 的 可以实现优先运算

2010-03-09

查看wdl文件的一个软件

可以用这个查看WDL文件

2007-11-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除