自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Java线程间通信-虚假唤醒

什么是虚假唤醒?虚假唤醒(spurious wakeup)是一个表象,即在多处理器的系统下发出wait的程序有可能在没有notify唤醒的情形下苏醒继续执行。很难理解是吗?用一个代码示例来描述一下这种现象。代码演示public class Shop { private volatile int goodsCount; private final static int M...

2020-02-24 00:14:58 223

原创 Java设计模式之享元模式

概述享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。不使用简单享元模式的情况在支付系统中,清结算模块需要对商户的交易数据进行报表导出(假设报表强制需要最新的商户信息,如商户名称)。因为...

2020-02-23 01:49:09 186

原创 Spring之属性编辑器源码解析

示例定义Bean@Datapublic class Person { private String name; private Integer age; private String sex;}定义Spring配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:/...

2020-02-23 01:43:34 344

原创 Spring中Bean的生命周期

Bean的生命周期Java中,一个Bean的生命周期大致分为3个阶段:(1)创建。即通过构造函数或者反射方式创建的bean对象。(2)初始化。创建对象之后,bean可能需要一些初始化操作,如设置一些属性等等。(4)销毁。bean对象完成功能操作后,没有存在的必要了,就需要对其进行销毁。在JVM中,bean对象的销毁交由虚拟机去完成。Spring中对Bean的生命周期的管理(1)Inst...

2020-02-23 01:42:32 155

原创 Spring之BeanPostProcessor源码分析

BeanPostProcessorBeanPostProcessor是Spring一个非常重要的扩展接口,它使得在创建bean实例的前后做一些扩展处理。public interface BeanPostProcessor { /** 在任何bean初始化回调(比如InitializingBean的{@code afterPropertiesSet}或自定义 init-meth...

2020-02-23 01:41:23 371

原创 BeanFactoryPostProcessor源码分析

BeanFactoryPostProcessor概述Spring提供了BeanFactoryPostProcessor来对Spring的BeanFactory进行扩展。Spring的BeanFactoryPostProcessor大致分为两大类:(1)对BeanFactory中的Bean进行修改:org.springframework.beans.factory.config.BeanFac...

2020-02-23 01:40:25 189

原创 Java线程通信-假死

概述什么线程通信假死?即程序没有死锁,但是却卡住不执行了。对于线程间通信来说,就是所有的线程都wait了。代码演示public class Goods { private final int MAX = 1; private int goodsCount = 0; public synchronized void produce() { tr...

2020-02-23 01:31:53 706

原创 Mybatis之一级缓存源码分析

准备mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><confi...

2020-02-09 02:35:41 122

原创 Java数据结构之Queue(队列)

Queue(队列)Queue(队列)是一种特殊的线性表,它只允许在队头(front)进行删除操作(出队),在队尾(rear)进行插入操作(入队),是一种操作受限制的线性表。即:FIFO(First In, First Out)。从Queue的继承关系图可以看到,Queue接口实现了Collection接口,所以Queue具有Collection接口的所有特性。但是一般来说,在操作Queue...

2020-01-15 00:41:00 305

原创 Java数据结构之Stack(栈)

Stack(栈)Stack(栈)是一种特殊的线性表,它只允许在栈顶(top)进行增删操作。栈是一种操作受限制的线性表。即:LIFO(Last In, First Out)。Stack常见的方法// 压栈E push(E e);// 出栈E pop();// 获取栈顶元素,不出栈E peek();// 判断栈是否为空boolean empty();自己实现一个Stack(A...

2020-01-15 00:38:20 989

原创 Java序列化详解

Java序列化和反序列化概述序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。序列化的使用场景1、把的内存中的对象持久化。如存到数据库或文件中。2、进行PRC调用时传输对象。即可以在进程之间进行传递和接收。3、深度克隆对象。通过对对象进行序列化和反序列化可以深度克隆对象。在Java如何对对象进行序列化在Java中,对象想要进...

2019-09-10 11:26:36 219

原创 Java泛型详解

泛型是什么泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要...

2019-09-10 11:21:16 500

原创 ArrayList源码分析

ArrayList简介ArrayList类继承关系如下:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable从上面ArrayList的继承关系可知,ArrayLi...

2019-09-10 11:08:26 69

原创 LinkedList源码分析

LinkedList简介LinkedList类继承关系如下:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable从上面LinkedLis...

2019-09-10 10:06:51 78

空空如也

空空如也

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

TA关注的人

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