[纯干货] 如何用Spring 原生注解 快速实现策略模式+工厂模式

2019-10-24
阅读 7 分钟
6.2k
在这里面我很自然而然的就用到了策略模式 + 工厂模式的方式,包装内部实现细节,向外提供统一的调用方式,有效的减少if/else的业务代码,使得代码更容易维护,扩展。

Spring Bean 生命周期 (实例结合源码彻底讲透)

2019-10-21
阅读 17 分钟
18.2k
在应用开发中,常常需要执行一些特定的初始化工作,这些工作都是相对比较固定的,比如建立数据库连接,打开网络连接等,同时,在结束服务时,也有一些相对固定的销毁工作需要执行。为了便于这些工作的设计,Spring IoC容器提供了相关的功能,可以让应用定制Bean的初始化和销毁过程。

Spring IoC - 依赖注入 源码解析

2019-10-17
阅读 21 分钟
2.7k
前言 上一篇文章中,我们介绍了Spring IoC 的容器初始化过程 - IoC 容器初始化 本篇文章中,我们继续介绍Spring IoC 依赖注入的过程和源码解读。 还是如之前一样,为大家梳理一下步骤流程,以便于大家能在心里有个大概的脉络,更容易读懂源码,更容易抓住重点。 主要内容: beanName 解析转换 手动注册Bean检测 双亲容器...

Spring IoC - IoC 容器初始化 源码解析

2019-10-15
阅读 27 分钟
3.7k
前言 本章主要内容是由以下部分组成, Spring 中容器初始化入口 以最经典的ClassPathXmlApplicationContext 为例,讲解Spring IoC 的容器初始化过程 在学习源码的过程当中,我想强调两点: 一定要学会抓重点,归纳核心类、核心方法、核心步骤。 理解类、变量、方法名的命名,Spring 源码的命名是很讲究的,很多时候是自...

Spring IoC - Spring IoC 的设计

2019-10-14
阅读 3 分钟
1.7k
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其...

Spock in Java 慢慢爱上写单元测试

2019-10-08
阅读 14 分钟
8.1k
在了解学习Spock测试框架之前,我们应该先关注单元测试本身,了解我们常见的单测痛点,这样才能更好地去了解Spock这个测试框架是什么,我们为什么要使用它,能解决我们什么痛点。

微服务设计学习(一)关于微服务和如何建模服务

2019-10-07
阅读 4 分钟
2.6k
随着互联网在21世纪初被大规模接入,互联网由基于流量点击赢利的单方面信息发布的Web 1.0业务模式,转变为由用户主导而生成内容的Web 2.0业务模式。因此,互联网应用系统所需处理的访问量和数据量均疾速增长,后端技术架构也因此面临着巨大的挑战。

你为什么要看源码?如何看源码?

2019-10-07
阅读 2 分钟
2k
本文主要内容摘自加多大神的《Java并发编程之美》的前言内容,讲了为什么要看源码和如何看源码,讲的很精炼。这部分是属于源码学习方面的方法论,所以单独摘录下来并且总结。

Java 容器 - 一文详解HashMap

2019-10-06
阅读 15 分钟
1.7k
Map 类集合 Java Map类集合,与Collections类集合存在很大不同。它是与Collection 类平级的一个接口。 在集合框架中,通过部分视图方法这一根 微弱的线联系起来。 (在之后的分享中,我们会讨论到Collections 框架的内容) Map类集合中的存储单位是K-V键值对,就是 使用一定的哈希算法形成一组比较均匀的哈希值作为Key,...

Spring源码 - FactoryBean 应用拓展(附源码解析)

2019-09-23
阅读 8 分钟
2k
在学习Spring Core中IOC容器时,你肯定会接触到BeanFactory这个Spring中最基础的IOC容器。这个应该是大家学习Spring源码时最先接触到的类了。Spring中还存在这一个FactoryBean类,两者拼写上十分相似,并且使用频率都十分得高。在一些Spring面试题,也会问你这两者有什么区别。

JMH - Java 微基准测试工具

2019-09-09
阅读 8 分钟
2.7k
在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。

Java 基础 - 并不神奇的泛型

2019-08-30
阅读 9 分钟
2.8k
前阵子给公司新人培训Java 基础相关的一些点,系统整理了一下泛型相关的知识点。特来分享一下。希望能让一些对泛型不熟悉的同学完全掌握Java 泛型的相关知识点。

IntelliJ IDEA 超实用使用技巧分享

2019-08-05
阅读 7 分钟
6.2k
最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE。 同时,在这次分享之后,本人自己也学习到了一些新的使用技巧,所以借着这次机会,一起分享出来。希望可以帮到一些人。

带你了解集合世界的fail-fast机制 和 CopyOnWriteArrayList 源码详解

2019-07-17
阅读 7 分钟
2.4k
前言 学习情况记录 时间:week 2 SMART子目标 :Java 容器 记录在学习Java容器 知识点中,关于List的重点知识点。 知识点概览: 容器中的设计模式 从Arrays.asList() 看集合与数组的关系 集合世界中的 fail-fast 机制 什么是 fail-fast 机制 ArrayList.sublist() 有什么坑? foreach 循环里为什么不能进行元素的 remove/...

Week 2 - Java 容器 - 详细剖析 List 之 ArrayList, Vector, LinkedList

2019-07-15
阅读 4 分钟
1.8k
前言 学习情况记录 时间:week 2 SMART子目标 :Java 容器 记录在学习Java容器 知识点中,关于List的需要重点记录的知识点。 知识点概览: ArrayList 与 LinkedList对比 ArrayList 中的 RandomAccess 接口 是什么? LinkedList 中的 Deque 接口 是什么? 老调常谈 之 ArrayList 扩容机制 ArrayList 与 Vector 对比 Array...

Week 1 - Java 多线程 - 锁优化(轻量级锁、偏向锁原理及锁的状态流转)

2019-07-08
阅读 5 分钟
2.5k
前言 学习情况记录 时间:week 1 SMART子目标 :Java 多线程 记录在学习Java 多线程中 锁优化的有关知识点。 为了进一步改进高效并发,HotSpot虚拟机开发团队在JDK1.6版本上花费了大量精力实现各种锁优化。如适应性自旋、锁消除、锁粗化、轻量级锁和偏向锁等。(主要指的是synchronized的优化)。 适应性自旋 (自旋锁)...

Week 1 - Java 多线程 - CAS

2019-07-07
阅读 3 分钟
1.7k
前言 学习情况记录 时间:week 1 SMART子目标 :Java 多线程 记录在学习线程安全知识点中,关于CAS的有关知识点。 线程安全是指:多个线程不管以何种方式访问某个类,并且在主调代码中不需要进行同步,都能表现正确的行为。 常见的线程安全实现方法分为不可变对象、线程互斥同步、非阻塞同步、线程本地存储等方案,本文...

Week 1 - Java 多线程 - Java 内存模型

2019-07-07
阅读 6 分钟
2.7k
前言 学习情况记录 时间:week 1 SMART子目标 :Java 多线程 学习Java多线程,要了解多线程可能出现的并发现象,了解Java内存模型的知识是必不可少的。 对学习到的重要知识点进行的记录。 注:这里提到的是Java内存模型,是和并发编程相关的,不是JVM内存结构(堆、方法栈这些概念),这两个不是一回事,别弄混了。 Java...

Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)

2019-05-12
阅读 5 分钟
5.9k
同学们,在上一章中,我们主要讲了Zookeeper两种启动模式以及具体如何搭建。本章内容主要讲的是集群相关的原理内容,第一章可以当做是Zookeeper原理篇的基础部分,本章则是Zookeeper原理篇进阶部分,有关于Zookeeper集群的读写机制、ZAB协议的知识解析。

Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建

2019-05-12
阅读 4 分钟
2.6k
同道们,好久不见,上一章中,我主要讲了Zookeeper的一些基础的知识点。数据模型 + 原语集 + Watches机制。本章内容主要讲的是集群搭建相关的知识。

【开发小记】 Java 线程池 之 被“吃掉”的线程异常(附源码分析和解决方法)

2019-04-24
阅读 10 分钟
5.4k
这个问题解决起来是很简单的,外层加个try-catch就好了,但是这个异常如果没有被catch,线程池内部逻辑是怎么处理这个异常的呢?这个异常最后会跑到哪里呢?

Zookeeper学习系列【一】 教会你Zookeeper的一些基础概念

2019-04-19
阅读 8 分钟
8k
最近加入了部门的技术兴趣小组,被分配了Zookeeper的研究任务。在研究过程当中,发现Zookeeper由于其开源的特性和其卓越的性能特点,在业界使用广泛,有很多的应用场景,而这些不同的应用场景实际上底层的原理都是差不多的,只要你真正理解了Zookeeper的一些基础概念和机制,就能够触类旁通。