摘要:
双重检查锁定的设想: 多个线程试图在同一时间创建对象,会通过加锁来保证只有一个线程能创建对象 在对象创建好后,执行 getInstance() 方法将不需要获取锁,直接返回已创建好的对象 对于 Instance 类,以下是双重检查锁定代码 public class DoubleCheckedLock 阅读全文
摘要:
概念 面向切面编程 Aspect Oriented Programming 底层使用了动态代理,指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式。 原理 阅读源码 要实现 AOP 必须添加注解 @EnableAspectJAutoProxy,点击该注解,进入接口 Enable 阅读全文
摘要:
概述 给容器中注册组件一共有 4 种方法 包扫描+组件标注注解 (@Controller/@Service/@Repository/@Component)[自己写的类] @Bean[导入的第三方包里面的组件] @Import[快速给容器中导入一个组件] @Import(要导入到容器中的组件);容器中 阅读全文
摘要:
一、理论算法 引用计数法 比较古老经典的垃圾手机算法,核心是在对象被其他所引用时计数器 +1,而当引用失效时则 -1 这种方式有个严重的问题:无法处理循环引用的情况,还有每次进行加减操作比较浪费系统性能。 标记清除法 分为标记和清除两个阶段进行处理内存中的对象 弊端是空间碎片问题,垃圾回收后的空间是 阅读全文
摘要:
传统的 ACID 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个 阅读全文
摘要:
1.类加载子系统 负责从文件系统或者网络中加载 Class 信息,加载的信息存放在一块称为方法区的内存空间。 2.方法区 就是存放类信息,常量信息,常量池信息,包括字符串字面量和数字常量等 3.Java 堆 在 Java 虚拟机启动的时候建立 Java 堆,它是 Java 程序最主要的内存工作区域, 阅读全文
摘要:
转载自:https://www.cnblogs.com/lgk8023/p/6427977.html Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过 javax.servlet.Servlet 接口中的 init() 、 service() 和 des 阅读全文
摘要:
简介与概念 RabbitMQ 简介 RabbitMQ 是一个由 erlang 开发的 AMQP(Advanved Message Queue Protocol) 的开源实现。 相关概念 Message 消息,消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成, 阅读全文
摘要:
用途 大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力 消息服务中两个重要概念: 消息代理(message broker) 目的地(destination) 当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。 消息队列主要有两种形式的目的地 队列(queu 阅读全文
摘要:
类从加载到运行到销毁过程 类加载器过程 1.加载 加载 把二进制形式的 Java 类型读入到 Java 虚拟机中 2.连接过程中的 3 个子过程 验证 对 class 字节码验证 准备 为类变量分配内存,设置默认值。 但是在到达初始化之前,类变量都没有初始化为真正的初始值 解析 解析过程就是在类型的 阅读全文