Java
凌霄~
every morning you have two choices, continue to sleep with your dreams or wake up and chase them
展开
-
Zeus源码剖析之事件处理机制
Zeus的事件处理机制中对观察着模式的应用可以说是用到了极致,因此在分析解读zeus中的事件处理机制之前,我们先简单的脑补一下观察者设计模式。观察者设计模式,简单来说,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。 观察者模式举一个简单的例子,老鹰抓小鸡的游戏,package designPatterns.observer.eagle;/** * @time 2017/原创 2017-11-02 00:01:34 · 1218 阅读 · 0 评论 -
JVM运行时数据区
JVM运行时数据区(JVM Runtime Area) 其实就是指JVM在运行期间,其对计算机内存空间的划分和分配。本文主要从以下几个方面讨论JVM运行时数据区主要分为几部分: 1. JVM运行数据区里面有什么? 2. 虚拟机栈是什么?虚拟机栈里面有什么? 3. 帧栈是什么?帧栈里有什么? 4. 方法区是什么?方法区里有什么?JVM运行数据区里面有什么? Java虚拟...原创 2018-05-06 16:13:00 · 859 阅读 · 0 评论 -
线程池ThreadPoolExecutor源码解析
ExecutorService接口定义 在解读ThreadPoolExecutor源码之前,先解读关于线程池实现底层定义的的接口ExecutorService,定义了一些方法管理任务中止或者返回一个Future用以获取一个或者多个异步任务的执行结果,定义的方法如下:public interface ExecutorService extends Executor { //平滑的...原创 2018-08-07 00:17:22 · 269 阅读 · 0 评论 -
HashedWheelTimer实现定时调度任务以及源码分析
HashedWheelTimer实现定时调度任务 HashedWheelTimer 主要用来高效处理大量定时任务, 且任务对时间精度要求相对不高, 比如链接超时管理等场景, 缺点是, 内存占用相对较高. @Test public void test3() throws InterruptedException { DateTimeFormatter forma...原创 2018-08-30 01:13:07 · 1884 阅读 · 1 评论 -
InheritableThreadLocal使用与源码分析
InheritableThreadLocal使用 子线程需要获取父线程中的ThreadLocal中的值的时候,使用InheritableThreadLocalpublic class TestInheritableThreadLocal { public static final SecureRandom random = new SecureRandom(); pu...原创 2018-09-12 00:53:13 · 216 阅读 · 0 评论 -
AtomicReferenceFieldUpdater源码阅读笔记
AtomicReferenceFieldUpdater使用 AtomicReferenceFieldUpdater的作用就是原子更新类中被volatile修饰的字段,具体使用如下:class Person { volatile String name = "lx";}public class ReferenceFieldUpdaterTest { publi...原创 2018-09-14 23:57:18 · 2065 阅读 · 0 评论 -
String源码解读以及的intern()方法探究
文章目录String的属性构造函数intern()方法String的属性先看下String的属性如下:/**通过数组存储值*/private final char value[];/** 默认hashcode 为0 */private int hash; // Default to 0/**描述序列化类中的串行化字段*/private static final ObjectStre...原创 2018-09-23 10:31:52 · 343 阅读 · 0 评论 -
类型信息--深入理解反射
什么是RTTI RTTI(Run-Time Type Identification)运行时类型识别,其作用是在运行时识别一个对象的类型和类信息,运行时识别一个对象的类型。主要有两种方式,一种是“传统的”的RTTI,另一种是反射机制,它允许我们在运行时发现和使用类的信息。abstract class Shape { void draw() { System.out.pr...原创 2019-04-07 19:05:29 · 258 阅读 · 0 评论 -
Netty源码分析之EventLoop
Netty源码分析之EventLoopNetty源码分析之EventLoop简述NioEventLoopGroup关于 Reactor 的线程模型NioEventLoopGroup 与 Reactor 线程模型的对应单线程模型多线程模型主从多线程模型NioEventLoopGroup 类层次结构NioEventLoopGroup 实例化过程NioEventLoo原创 2018-01-27 11:18:45 · 616 阅读 · 0 评论 -
java8实战:Lambda 表达式
Java 8 Lambda 表达式Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。lambda表达式是一段可以传递的代码,它的核心思想是将面向对象中的传递数据变成传递行为。语法lambda 表达式的语法格式如下:原创 2018-02-05 14:33:56 · 628 阅读 · 0 评论 -
Zeus源码解读之定时任务执行与手动执行任务的过程分析
Zeus源码解读之定时任务执行与手动执行任务的过程分析zeus集群依赖任务执行模式 宙斯中任务出去任务独立调度之外,支持任务直接的复杂依赖调度,如下图一所示: 图1 A为根任务,B,C依赖A任务,D任务依赖B,C,只有当A执行成功之后,B,C才会执行,只有B,C都执行成功之后,D任务才会执行,C执行失败的情况,D就不会执行。zeus集群依赖任务DAG执行过程源码解读 Zeus的定时调度任务利原创 2017-11-06 16:41:14 · 1974 阅读 · 0 评论 -
lang包源码解读之ProcessBuilder
lang包源码解读之ProcessBuilder原创 2017-11-22 19:21:28 · 2056 阅读 · 2 评论 -
Spring IOC 容器源码分析
引言BeanDefinition 接口定义customizeBeanFactorybeanFactory加载 Bean loadBeanDefinitionsbeanFactorydoRegisterBeanDefinitionsprocessBeanDefinition注册 BeanBean 容器实例化完成后准备 Bean 容器 prepareBeanFactoryfactory初原创 2017-12-31 01:16:15 · 392 阅读 · 0 评论 -
ArrayList源码解读
ArrayList属性和类结构ArrayList类属性ArrayList内部类ArrayList的迭代器实现ListItrArrayList的迭代器实现SubListArrayList的Spliterator迭代器ArrayListSpliteratorArrayList扩容机制ArrayListsubList方法用来返回一个list的一部分的视图总结ArrayList属性和类结构原创 2018-01-01 02:34:03 · 277 阅读 · 0 评论 -
HashMap源码解读
HashMap的基础属性值HashMap的存储结构Node存储结构TreeNode存储结构HashMap的putK key V value执行分析HashMap的扩容HashMap的get取值过程分析有关HashMap的性能与伸缩性方面的思考HashMap的基础属性值HashMap的基础属性值有以下几个值 //默认的初始容量 static final int DEFAU原创 2018-01-03 01:13:43 · 490 阅读 · 0 评论 -
手动实现一个HashMap
手动实现一个HashMap概述定义数据存储实体Entry手动实现HashMap手动实现一个HashMap概述 在阅读完HashMap源码之后,为加深对源码的理解,手动实现了一个简单的HashMap,自己实现的HashMap仅仅实现了HashMap的put,get值方法以及resize()方法,实现扩容定义数据存储实体Entry自定义一个Entry,并重写hashCode和equals方法,这个实原创 2018-01-03 17:49:03 · 1742 阅读 · 0 评论 -
NIO学习笔记选择器Selector
选择器基础选择器Selector可选择通道SelectableChannel选择键SelectionKey使用选择器选择过程选择器基础 从最基础的层面来看,选择器提供了询问通道是否已经准备好执行每个 I/0 操作的能力。例如,我们需要了解一个 SocketChannel 对象是否还有更多的字节需要读取,或者我们需要知道ServerSocketChannel 是否有需要准备接受的连接。在与原创 2018-01-22 22:51:35 · 308 阅读 · 0 评论 -
Netty源码分析之Bootstrap启动过程分析
Bootstrap客户端部分连接源码NioSocketChannel 的初始化过程ChannelFactory和Channel 类型的确定Channel 实例化关于unsafe字段的初始化关于 pipeline 的初始化关于 EventLoop 初始化channel 的注册过程handler 的添加过程客户端连接分析服务器端部分Channel 的初始化过程Channel原创 2018-01-23 02:10:56 · 861 阅读 · 0 评论 -
NIO学习笔记通道Channel
通道基础ScatterGatherSocket通道socket 和 socket 通道之间的关系非阻塞模式ServerSocketChannelSocketChannelDatagramChannel管道通道工具类Channels总结通道基础通道(Channel)是 java.nio 的第二个主要创新。它们既不是一个扩展也不是一项增强,而是全新、极好的 Java I/O 示例,提原创 2018-01-18 01:25:30 · 435 阅读 · 0 评论 -
Netty源码分析之ChannelPipeline
Channel 与 ChannelPipelineChannelPipeline 的初始化再探ChannelPipeline 实例化过程ChannelInitializer 的添加自定义 ChannelHandler 的添加过程ChannelHandler 的名字自动生成 handler 的名字关于 Pipeline 的事件传输机制Outbound 操作outbound o原创 2018-01-27 01:30:07 · 413 阅读 · 0 评论