EMO's Blog

Thinking will not overcome fear but action will.

AQS源码分析

AbstractQueuedSychronizer设计思路与细节

AQS EMO’s Blog 概览 AQS总体是基于两种队列来设计的 CLH队列,这是一种虚拟队列,没有一个队列实体,只由节点自己来维护队列关系。主要承担的功能是t acquire锁 release锁 Condition队列,这是一个单向链表,主要是用来实现和Sychronized里的wait,notify以及not...

JVM学习笔记五

Java与线程

JVM EMO’s Blog 线程的实现 Java中的java.lang.Thread类,用的都是Native方法。 三种实现方式: 使用内核线程实现(1:1) 一个进程一个线程 使用用户线程实现(1:N) 一个进程N个线程 用户线程加轻量级进程混合实现(N:M) N个进程M个线程 内核线程实现 轻量级进程LWP,每一个都由一个内核线程支持,所以能独立调...

JVM学习笔记四

java内存模型

JVM EMO’s Blog Java内存模型概念 目的:定义程序中各种变量的访问规则,即变量值的存与取的规范。 其中变量指: 实例字段 静态字段 构成素组对象的元素 不包括线程共享的那些变量。因为他们不存在竞争问题。 内存模型规定了: 如何和何时看到其他线程修改后的变量 必须时如何同步的访问共享变量 内存模型结构 内存模型将内存划分成了主...

JVM学习笔记三

Java类加载器

JVM EMO’s Blog 类加载的流程 类型的生命周期: JVM把class文件加载到内存,并对数据进行校验,解析并初始化,最终形成JVM可以直接使用的Java类型的过程。 加载 获取类型的二进制字节流,然后将这些静态数据转存成方法区中的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区数据的访问入口。加载中对于二进制字节流的...

JVM学习笔记二

Java垃圾收集器与内存分配策略

JVM EMO’s Blog 程序计数器还有栈空间都是线程独占的,在内存分配和垃圾回收上他们不太需要考虑。 栈空间的内存大小在编译初期就能够确定 栈空间的内存随着方法或者线程进行回收 但是堆空间不一样,因为接口涉及到的各种不同实现会导致不同的内存占比,基本不可能在编译初期就决定好内存空间,所以动态的内存分配策略是很需要的。除此之外,堆...

Head First设计模式学习笔记十

责任链模式

设计模式 练习实例仓库 EMO’s Blog 责任链模式让一个以上的对象有机会能够处理某个请求。 责任链模式结构 责任链模式是为了让请求的发送者和请求的接收者之间解耦。这么做能够方便扩展。 假设我们现在需要开发一个邮件过滤系统,邮件的种类有三种:垃圾邮件,商业邮件,社交邮件。我们需要将其过滤后分别发送给不同的对象。这个时候我们就可以使用责任链模式来过滤邮件...

JVM学习笔记一

Java内存区域与内存溢出异常

JVM EMO’s Blog 运行时数据区域 程序计数器(Program Counter Register) [线程私有] Java虚拟机栈(Java Virtual Machine Stack) [线程私有] Java方法涉及的基本类型数据以及对象的引用存在这里 本地方法栈(Native Method Stack) [线程私有] 本地方法涉及的基本类型数据以...

Head First设计模式学习笔记九

代理模式

设计模式 练习实例仓库 EMO’s Blog 控制对象的访问 远程方法调用RMI graph LR A((客户对象)) B((客户辅助对象)) C((服务对象)) D((服务辅助对象)) A --> B B --> A C --> D D --> C B --...

Head First设计模式学习笔记八

状态模式

设计模式 练习实例仓库 EMO’s Blog 状态模式 状态模式允许对象在内部状态改变时改变它自己的行为,对象看起来好像修改了它的类。 问题:在这个实际里面StateMachine类会调用State类的行为函数,而State类的行为函数中又会反过来调用StateMachine类中的函数来切换状态。这不是违背了好莱坞设计原则吗? 个人感觉:这里...

Head First设计模式学习笔记七

模板方法模式

设计模式 练习实例仓库 EMO’s Blog 封装算法块,以便子类在任何时候都可以挂接进运算里。 新的OO设计原则:好莱坞原则,别调用我们,我们会调用你。 一个例子引出模板方法模式 例子 当存在两个子类都具有相同的方法,但是其中的某些方法需要不同的实现的时候,我们就可以用抽象类来构建他们的父类。假如现在有咖啡和茶这两种子类,他们都具备煮沸水,冲泡...

{ % if page.mermaid % } { % endif % }