- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 java注解处理器——在编译期修改语法树
目录前言从需求说起添加打印日志代码的方案第一种方案,硬编码第二种方案,AOP第三种方案,修改class文件注解处理器的用法:1、实现AbstractProcessor2、添加注解名称分析模块的思想及设计语法树的操作:JCTree的介绍TreeMakerTreeMaker.ModifiersTreeMaker.ClassDef...
2019-01-08 14:23:15 14404 26
原创 Java类文件结构详解
Class文件是一组以8位字节为基础单位的二进制流,各项数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,如果是超过8位字节以上空间的数据项,则会按照高位在前的方式(Big-Endian)分割成若干个8位字节进行存储。Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。
2017-09-14 10:29:23 9326 5
原创 jdk8 HotSpot内存模型
概述java的内存管理采用自动内存管理机制,这样就不需要程序员去写释放内存的代码,而且不容易出现内存泄漏问题。正是由于内存的申请和释放都交给了Java虚拟机,一旦出现内存泄漏和溢出问题时,在不了解Java虚拟机内存结构和自动管理机制的情况下,很难排查问题的所在。所以一个成熟的程序员和架构师,必须很好的掌握Java虚拟机的自动内存管理机制。运行时数据区上图的虚拟机运行时数据区是J
2017-09-09 21:14:22 7073
原创 tbschedule3.3.3源码详解
tbschedule是出自淘宝的一个分布式任务调度框架,经过了众多大型项目的考验。了解及使用可参考官方文档 http://code.taobao.org/p/tbschedule/wiki/index/tbschedule的数据结构tbschedule在zookeeper中的数据结构及与类的对应关系下面从tbschedule的初始化流程入手,一步步分析tbs
2017-09-06 09:56:31 3914 1
原创 Zookeeper实现分布式锁
在zookeeper中,通过数据节点来表示一个锁,例如/exclusive_lock/lock节点就可以被定义为一个锁。1、排它锁获取锁所有的客户端都试图通过调用create()接口,在/exclusive_lock节点下创建临时子结点/exclusive_lock/lock。成功创建的客户端就认为获取了锁,其它没有获取到锁的客户端就需要到/exclusive_lock节点上注
2017-12-19 15:18:30 519
原创 Zookeeper的关键机制的实现原理
1、zookeeper的会话管理会话(Session)是Zookeeper的一个重要的抽象。保证请求有序、临时znode节点、监事点都与会话密切相关。因此会话的跟踪机制对ZooKeeper来说也非常重要。ZooKeeper服务器的一个重要任务就是跟踪并维护这些会话。在独立模式下,单个服务器会跟踪所有的会话,而在仲裁模式下则由群首服务器来跟踪和维护。群首服务器和独立模式的服务器实际上运行
2017-12-19 11:03:29 5090 1
原创 分布式一致性算法Paxos,Zookeeper的ZAB协议,Raft算法
Paxos算法:Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。阶段一:1、Proposer选择一个提案变化Mn,然后向Acceptor的某个超过半数的子集成员发送 编号为Mn的Prepare请求。2、如果一个Acceptor收到一个编号为Mn的Prepare请求,且编号Mn
2017-12-19 10:26:22 2905 1
原创 ThreadLocal详解
ThreadLocal用来解决多线程环境中资源竞争的问题。它不是通过加锁的方式,而是通过每个线程保存一份资源的副本,这样各个线程访问本线程自己的那一份儿,从而避免了对资源竞争的问题。
2017-09-27 14:17:49 4490
原创 虚拟机字节码执行引擎
Java虚拟机字节码执行引擎是Java虚拟机最核心的组成部分之一。它负责Java程序的执行,执行的过程主要包括方法的调用和方法代码的执行(对代码块代码的执行其实在虚拟机内部也是组装成方法执行的)。所以对执行引擎的讲解主要就是讲解方法的调用和方法执行过程。下边先讲解用于支持虚拟机进行方法调用和方法执行的数据结构——栈帧。
2017-09-20 09:25:53 2998
原创 虚拟机类加载机制与类加载器详解
虚拟机类加载机制概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行时期完成的。类加载的时机类的加载过程包括七个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoluti
2017-09-19 12:54:21 3276 2
原创 java8的jps,jstat,jstack,jmp,jinfo,jhat使用详解及Java自带可视化监控与故障分析工具的介绍
概述JDK提供的免费的JVM监控与故障处理工具有:jps:JVM Process Status Tool, 显示指定系统内所有的HotSpot虚拟机进程jstat:JVM Statistics Monitoring Tool, 用于收集HotSpot虚拟机各方面的运行数据jinfo:Configuration Info for java,显示虚拟机配置信息.jmap:Memory
2017-09-13 10:05:35 4406
原创 java垃圾收集与内存分配策略
垃圾收集(Garbage Collection GC) 在Java中垃圾回收主要是针对堆(Heap)的垃圾收集(方法区也有垃圾收集)。垃圾收集主要分为两步: 1、找出需要被回收的对象; 2、将需要被回收的对象进行内存回收。找出需要被回收的对象(即不可能再被任何途径使用的对象),主要有两种算法: ...
2017-09-12 16:18:39 3095
原创 Docker入门与实战详细笔记
一、 镜像1.1、 获取镜像命令: docker pull NAME[:TAG]例: docker pull centos 相当于 docker pull centos:latest 相当于 docker pull registry.hub.docker.com/centos:latestregistry.hub.docker.com是默认的注册服务器(Docker Hub)1.2
2017-09-06 15:57:44 5660
原创 tbschedule3.3.3+spring+maven实例教程
tbschedule是淘宝的一个分布式任务调度框架,可访问官方网址http://code.taobao.org/p/tbschedule/wiki/index/获取源代码和了解具体的介绍,在这里就不再做重复的介绍了,直接给出实例教程。1、在maven的pom.xml中引入tbschedule依赖 com.taobao.pamirs.schedule tbschedule
2017-09-06 13:36:44 2105
原创 Spring 注入枚举值
Spring注入枚举值 LUCENE_43 name="matchVersion">匹配参数名public EnglishAnalyzer(Version matchVersion) { this(matchVersion, DefaultSetHolder.DEFAULT_STOP_SET); } type="org.apach
2014-03-20 14:09:41 759
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人