• 等级
  • 1191959 访问
  • 133 原创
  • 13 转发
  • 4709 排名
  • 372 评论
  • 813 获赞

Spring IoC:context:component-scan节点解析

前言在 SpringIoC:parseCustomElement详解 中,我们介绍了自定义命名空间节点解析的大部分内容,但是还剩下节点解析的具体过程。本文将以<context:component-scan/> 节点为例子,介绍自定义命名空间context 的 component-scan 节点的解析过程。 正文首先,我们回到 SpringIoC:parseCu...

2019-02-17 18:13:46

Spring IoC:parseCustomElement详解

前言我们通过 SpringIoC:parseDefaultElement详解(上)、SpringIoC:parseDefaultElement详解(下)解析了默认命名空间节点的解析,本文将解析自定义命名空间节点的解析。 正文首先让我们回到 SpringIoC:obtainFreshBeanFactory详解 文末的parseBeanDefinitions 方法。XmlV...

2019-02-16 17:45:30

Spring IoC:parseDefaultElement详解(下)

 前言在 SpringIoC:parseDefaultElement详解(上)中,我们介绍了 BeanDefinition的解析过程。本文将介绍 BeanDefinition 的注册。 processBeanDefinition(Elementele,BeanDefinitionParserDelegatedelegate) protectedvoidprocess...

2019-01-31 23:08:37

Spring IoC:parseDefaultElement详解(上)

前言接着 SpringIoC:obtainFreshBeanFactory详解 上文继续往下解析,本文来到parseDefaultElement方法。该方法是解析默认命名空间节点的方法,是加载Bean定义模块的最核心方法。 parseDefaultElement方法privatevoidparseDefaultElement(Elementele,BeanDef...

2019-01-30 22:30:23

Spring IoC:obtainFreshBeanFactory详解

前言上文 SpringIoC:refresh前的环境准备 介绍了 refresh方法前的环境准备操作,接下来正式进入refresh 方法。prepareRefresh 是refresh 里的第一个方法,主要是一些准备工作,比较简单的方法,看一下就了解了。接下来是 obtainFreshBeanFactory 方法,该方法用于获得一个新的BeanFactory,本文将详细介绍该方法。 ...

2019-01-27 00:47:03

位图法:判断一个数是否在40亿个整数中?

题目最近看到一个题目:给40亿个不重复的unsignedint的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 解法搜了一下资料,该题目是腾讯的一道面试题,目前网上普遍给出的答案有两种。1.《编程珠玑》给出的方案我们把40亿个数中的每一个用32位的二进制来表示,假设这40亿个数开始放在一个文件中。然后将这40亿个数分成两类:1.最高位...

2019-01-26 15:28:10

Spring IoC:refresh前的环境准备

前言在SpringIoC:源码学习总览中,我们简单介绍了IoC过程最重要的一个方法,也就是AbstractApplicationContext#refresh() 方法,在详细学习 refresh 方法之前,还有几个前置操作比较重要,需要稍微介绍下。 web.xml配置<?xmlversion="1.0"encoding="UTF-8"?><web-...

2019-01-19 22:34:08

Spring IoC:源码学习总览

前言Spring作为现在最优秀的框架之一,被广泛的应用于Java项目中,但是大多数人都只知道如何使用,而不知其中的原理。对大多数人来说可能知道如何使用已经足够了,但是对于想提升自己的人来说,学习Spring的源码是一个不错的选择。在过去的几个月里,我利用空闲时间将IoC的相关源码学习了一下,按照老习惯准备整理成笔记,以博文的形式记录下来,供自己以后使用,也供其他网友参考。由于涉及到的代码较多,...

2019-01-15 00:12:35

Java工具箱

前言本文类似于一个Java开发的“工具箱”,会记录一些Java开发者常用到的东西,例如:工具的一些环境配置、常用的技术网站等。本文不会一下子就有很多内容,会不断的完善。 一、JDK环境变量配置Windows环境1.首先下载一个JDK的exe安装文件,JDK官方下载地址:JDK8、JDK最新版2.将下载好的JDK安装到本地,例如:C:\ProgramFiles\Java\j...

2019-01-13 21:19:43

使用Guava实现限流器

为什么需要限流?在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。限流可以认为服务降级的一种,限流通过限制请求的流量以达到保护系统的目的。一般来说,系统的吞吐量是可以计算出一个阈值的,为了保证系统的稳定运行,一旦达到这个阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等等。否则,很容易导致服务器的宕机。现有的方案Google的Guava工...

2018-06-17 13:39:09

MyBatis根据表结构自动生成PO/Mapper代码的最佳实践

前言当我们新建一个表时,在项目中至少要新建3个文件:实体类*PO.java、接口类*POMapper.java、存放SQL的接口实现类*POMapper.xml。对于字段少的表来说,可能你不会在意,但是如果是一个字段超过几十个的表,那你可能要写的头昏眼花了。并且,当字段多了,手写错误的几率特别大。这个时候,我们就需要MyBatis来自动生成。基本使用1.新建配置文件在src/main/resour...

2018-06-04 23:10:42

Log4j2与Slf4j的最佳实践

前言日志对于项目的重要性不言而喻,现在市面上的日志框架多种多样:Log4j、Log4j2、Slf4j、JDKLog、Logback等等,如果没有真正深入了解过,可能会被搞得眼花缭乱。本文将介绍目前Java项目中最常见的Log4j2+Slf4j的使用组合,这也是我自己项目中目前使用的。另外,由于现在项目基本都是Servlet3.0及以上版本,因此本文针对Servlet3.0及更高的版本,如果...

2018-05-07 21:38:30

排序算法:快速排序

概述手写排序算法几乎是程序员面试必问的题目,大多数人都会选择写冒泡排序,如果此时你写的是其他改进过的排序算法,相信会让面试官眼前一亮。本文将介绍常见的排序算法中的“快速排序”。 基本思想快速排序(QuickSort)是对冒泡排序的一种改进。快速排序由C.A.R.Hoare在1962年提出。它的基本思想是:从要排序的数据中取一个数为“基准数”。 通过一趟排序将要排序的数据...

2018-04-24 22:02:57

排序算法:选择排序

前言上一次,我们介绍了排序算法中“龟速三兄弟”的二哥“插入排序”。今天,我们继续介绍“龟速三兄弟”中的小弟——“选择排序”。和二哥“插入排序”一样,由于同样是“龟速三兄弟”中的一员,但是处理过程没有大哥“冒泡排序”那么简单明了,因此有不少人可能都没接触过“选择排序”,本文将通过例子来介绍“选择排序”的完整过程。 基本思想每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始...

2018-04-12 23:04:49

排序算法:插入排序

前言上一次,我们介绍了排序算法中“龟速三兄弟”的大哥“冒泡排序”。今天,我们继续介绍“龟速三兄弟”中的二哥——“插入排序”。“冒泡排序”的过程和代码相信大多数人都比较熟悉,但是“插入排序”就不见得了。由于同样是“龟速三兄弟”中的一员,但是处理过程没有“冒泡排序”那么简单明了,因此有不少人可能都没接触过“插入排序”,本文将通过例子来介绍“插入排序”的完整过程。 基本思想将一个数插入一...

2018-04-06 18:09:58

排序算法:冒泡排序

前言对于Java程序员来说,一般对于算法没有什么要求,但是有一个算法除外——排序算法。排序算法不仅在日常开发中经常用到,还是面试中几乎必问的题目,并且通常是以“手写代码”的形式出现,因此掌握好排序算法是对每一个程序员的最基本要求。 谈到排序算法,第一个浮现在我们脑中的一定是“冒泡排序”。“冒泡排序”由于较简单的过程,得到大多数程序员的“厚爱”,本文将简单的介绍排序算法的整个过程。 ...

2018-04-05 00:45:55

关于自增操作,你真的懂了吗?

最近看见一道有意思的面试题,是关于自增操作的,让我回想起以前自己也遇到过,并且曾经也让我困惑过,今天拿出来跟大家分享,希望对大家有帮助。题目我相信有不少人会认为输出是100,但实际运行输出是0。为什么了?要知道其中的原理,我们需要先了解下栈中的局部变量表(本地变量表)和操作数栈。局部变量表和操作数栈在介绍JoonWhee:Java虚拟机:Java内存区域的Java虚拟机栈时,我们说过“每个方法在执...

2018-03-30 19:34:50

0基础Java自学之路

前言最近逛知乎的时候,经常看到有人在问“0基础如何自学Java”、“干了几年**,想转行干Java靠谱吗”等问题。不禁让我回想起了自己当初自学Java的日子,因此在这个周末花了点时间,整理了这篇文章,希望对这些正打算自学Java的或者打算转行Java的人有点帮助。 我的自学之路先告诉你们我的自学过程可能让你们有点参考。大三的时候,班主任请了2个已经拿到offer的实验室同学来跟...

2018-03-25 23:52:08

Java虚拟机面试题精选(二)

概述现在面试Java开发时,基本都会问到Java虚拟机的知识,根据职位不同问的内容深浅又有所区别。本文整理了10道面试中常问的Java虚拟机面试题,希望对正在面试的同学有所帮助。11.介绍下垃圾收集机制(在什么时候,对什么,做了什么)?在什么时候?在触发GC的时候,具体如下,这里只说常见的YoungGC和FullGC。触发YoungGC:当新生代中的Eden区没有足够空间进行分配时会触发Yo...

2018-03-25 23:47:37

Java虚拟机面试题精选(一)

概述现在面试Java开发时,基本都会问到Java虚拟机的知识,根据职位不同问的内容深浅又有所区别。本文整理了10道面试中常问的Java虚拟机面试题,希望对正在面试的同学有所帮助。1.介绍下Java内存区域(运行时数据区)。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为以下6个运行时数据区域。程序计数器(ProgramCounterRegister)一块较小的内存空间,可以看作...

2018-03-23 19:30:49

程序员囧辉

关注
  • 互联网·电子商务/Java开发工程师
  • 中国 上海 长宁区
奖章
  • 专栏达人
  • 持之以恒