<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[A_zhenzhen的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/A_zhenzhen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; A_zhenzhen]]></copyright><item><title><![CDATA[java注解处理器——在编译期修改语法树]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/86065063</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/86065063</guid><author>A_zhenzhen</author><pubDate>Tue, 08 Jan 2019 14:23:15 +0800</pubDate><description><![CDATA[目录



前言

从需求说起

添加打印日志代码的方案

第一种方案，硬编码

第二种方案，AOP

第三种方案，修改class文件

注解处理器的用法：

1、实现AbstractProcessor

2、添加注解

名称分析模块的思想及设计

语法树的操作：

JCTree的介绍

​​

TreeMaker

TreeMaker.Modifiers

TreeMaker.ClassDef...]]></description><category></category></item><item><title><![CDATA[Zookeeper实现分布式锁]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78843030</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78843030</guid><author>A_zhenzhen</author><pubDate>Tue, 19 Dec 2017 15:18:30 +0800</pubDate><description><![CDATA[在zookeeper中，通过数据节点来表示一个锁，例如/exclusive_lock/lock节点就可以被定义为一个锁。

1、排它锁
获取锁

所有的客户端都试图通过调用create()接口，在/exclusive_lock节点下创建临时子结点/exclusive_lock/lock。成功创建的客户端就认为获取了锁，其它没有获取到锁的客户端就需要到/exclusive_lock节点上注]]></description><category></category></item><item><title><![CDATA[Zookeeper的关键机制的实现原理]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78840416</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78840416</guid><author>A_zhenzhen</author><pubDate>Tue, 19 Dec 2017 11:03:29 +0800</pubDate><description><![CDATA[1、zookeeper的会话管理


会话（Session）是Zookeeper的一个重要的抽象。保证请求有序、临时znode节点、监事点都与会话密切相关。因此会话的跟踪机制对ZooKeeper来说也非常重要。ZooKeeper服务器的一个重要任务就是跟踪并维护这些会话。在独立模式下，单个服务器会跟踪所有的会话，而在仲裁模式下则由群首服务器来跟踪和维护。群首服务器和独立模式的服务器实际上运行]]></description><category></category></item><item><title><![CDATA[分布式一致性算法Paxos，Zookeeper的ZAB协议，Raft算法]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78839843</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78839843</guid><author>A_zhenzhen</author><pubDate>Tue, 19 Dec 2017 10:26:22 +0800</pubDate><description><![CDATA[Paxos算法：
Paxos一直是分布式协议的标准，但是Paxos难于理解，更难以实现，Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。

阶段一：

1、Proposer选择一个提案变化Mn,然后向Acceptor的某个超过半数的子集成员发送 编号为Mn的Prepare请求。

2、如果一个Acceptor收到一个编号为Mn的Prepare请求，且编号Mn]]></description><category></category></item><item><title><![CDATA[JAVA中的数值的有符号无符号操作]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78835327</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78835327</guid><author>A_zhenzhen</author><pubDate>Mon, 18 Dec 2017 17:37:08 +0800</pubDate><description><![CDATA[原码
反码
补码
Java的符号类型
有符号扩展和无符号扩展]]></description><category></category></item><item><title><![CDATA[存储引擎——Hash存储引擎，B树存储引擎，LSM树存储引擎]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78831866</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78831866</guid><author>A_zhenzhen</author><pubDate>Mon, 18 Dec 2017 13:08:49 +0800</pubDate><description><![CDATA[哈希存储引擎
B树存储引擎
LSM树存储引擎
并发控制
存储快照实现原理]]></description><category></category></item><item><title><![CDATA[红黑树详解]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78830812</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78830812</guid><author>A_zhenzhen</author><pubDate>Mon, 18 Dec 2017 11:03:52 +0800</pubDate><description><![CDATA[红黑树的左旋与右旋，插入，删除的过程详细分析]]></description><category></category></item><item><title><![CDATA[二叉搜索树的基本操作]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78829892</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78829892</guid><author>A_zhenzhen</author><pubDate>Mon, 18 Dec 2017 09:39:32 +0800</pubDate><description><![CDATA[前言：二叉树的基本性质

高度为h的二叉树，最多有2^h-1个节点（满二叉树）。
二叉树的搜索，插入，删除]]></description><category></category></item><item><title><![CDATA[ThreadLocal详解]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78112312</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78112312</guid><author>A_zhenzhen</author><pubDate>Wed, 27 Sep 2017 14:17:49 +0800</pubDate><description><![CDATA[ThreadLocal用来解决多线程环境中资源竞争的问题。它不是通过加锁的方式，而是通过每个线程保存一份资源的副本，这样各个线程访问本线程自己的那一份儿，从而避免了对资源竞争的问题。]]></description><category></category></item><item><title><![CDATA[虚拟机字节码执行引擎]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78036920</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78036920</guid><author>A_zhenzhen</author><pubDate>Wed, 20 Sep 2017 09:25:53 +0800</pubDate><description><![CDATA[Java虚拟机字节码执行引擎是Java虚拟机最核心的组成部分之一。它负责Java程序的执行，执行的过程主要包括方法的调用和方法代码的执行（对代码块代码的执行其实在虚拟机内部也是组装成方法执行的）。
所以对执行引擎的讲解主要就是讲解方法的调用和方法执行过程。下边先讲解用于支持虚拟机进行方法调用和方法执行的数据结构——栈帧。]]></description><category></category></item><item><title><![CDATA[虚拟机类加载机制与类加载器详解]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78028706</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/78028706</guid><author>A_zhenzhen</author><pubDate>Tue, 19 Sep 2017 12:54:21 +0800</pubDate><description><![CDATA[虚拟机类加载机制概述虚拟机把描述类的数据从Class文件加载到内存，并对数据进行校验、转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型，这就是虚拟机的类加载机制。 
在Java语言里面，类型的加载、连接和初始化过程都是在程序运行时期完成的。类加载的时机类的加载过程包括七个阶段：加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoluti]]></description><category></category></item><item><title><![CDATA[Java类文件结构详解]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77977345</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77977345</guid><author>A_zhenzhen</author><pubDate>Thu, 14 Sep 2017 10:29:23 +0800</pubDate><description><![CDATA[Class文件是一组以8位字节为基础单位的二进制流，各项数据项目严格按照顺序紧凑地排列在Class文件之中，中间没有添加任何分隔符，如果是超过8位字节以上空间的数据项，则会按照高位在前的方式（Big-Endian）分割成若干个8位字节进行存储。
Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。]]></description><category></category></item><item><title><![CDATA[java8的jps,jstat,jstack,jmp,jinfo,jhat使用详解及Java自带可视化监控与故障分析工具的介绍]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77962376</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77962376</guid><author>A_zhenzhen</author><pubDate>Wed, 13 Sep 2017 10:05:35 +0800</pubDate><description><![CDATA[概述
JDK提供的免费的JVM监控与故障处理工具有：


jps：JVM Process Status Tool, 显示指定系统内所有的HotSpot虚拟机进程jstat：JVM Statistics Monitoring Tool, 用于收集HotSpot虚拟机各方面的运行数据jinfo：Configuration Info for java，显示虚拟机配置信息.jmap：Memory ]]></description><category></category></item><item><title><![CDATA[java垃圾收集与内存分配策略]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77946471</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77946471</guid><author>A_zhenzhen</author><pubDate>Tue, 12 Sep 2017 16:18:39 +0800</pubDate><description><![CDATA[垃圾收集（Garbage Collection GC）

         在Java中垃圾回收主要是针对堆（Heap）的垃圾收集（方法区也有垃圾收集）。垃圾收集主要分为两步：

              1、找出需要被回收的对象； 

              2、将需要被回收的对象进行内存回收。

找出需要被回收的对象（即不可能再被任何途径使用的对象），主要有两种算法：

        ...]]></description><category></category></item><item><title><![CDATA[jdk8 HotSpot内存模型]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77917991</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77917991</guid><author>A_zhenzhen</author><pubDate>Sat, 09 Sep 2017 21:14:22 +0800</pubDate><description><![CDATA[概述
java的内存管理采用自动内存管理机制，这样就不需要程序员去写释放内存的代码，而且不容易出现内存泄漏问题。正是由于内存的申请和释放都交给了Java虚拟机，一旦出现内存泄漏和溢出问题时，在不了解Java虚拟机内存结构和自动管理机制的情况下，很难排查问题的所在。所以一个成熟的程序员和架构师，必须很好的掌握Java虚拟机的自动内存管理机制。
运行时数据区


上图的虚拟机运行时数据区是J]]></description><category></category></item><item><title><![CDATA[Docker入门与实战详细笔记]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77867589</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77867589</guid><author>A_zhenzhen</author><pubDate>Wed, 06 Sep 2017 15:57:44 +0800</pubDate><description><![CDATA[一、	镜像1.1、	获取镜像命令： docker pull NAME[:TAG]
例： docker pull centos  相当于 docker pull centos:latest  相当于 docker pull registry.hub.docker.com/centos:latest
registry.hub.docker.com是默认的注册服务器（Docker Hub）
1.2]]></description><category></category></item><item><title><![CDATA[tbschedule3.3.3+spring+maven实例教程]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77865310</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77865310</guid><author>A_zhenzhen</author><pubDate>Wed, 06 Sep 2017 13:36:44 +0800</pubDate><description><![CDATA[tbschedule是淘宝的一个分布式任务调度框架，可访问官方网址http://code.taobao.org/p/tbschedule/wiki/index/获取源代码和了解具体的介绍，在这里就不再做重复的介绍了，直接给出实例教程。
1、在maven的pom.xml中引入tbschedule依赖


    com.taobao.pamirs.schedule
    tbschedule]]></description><category></category></item><item><title><![CDATA[tbschedule3.3.3源码详解]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77862607</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/77862607</guid><author>A_zhenzhen</author><pubDate>Wed, 06 Sep 2017 09:56:31 +0800</pubDate><description><![CDATA[tbschedule是出自淘宝的一个分布式任务调度框架，经过了众多大型项目的考验。了解及使用可参考官方文档 http://code.taobao.org/p/tbschedule/wiki/index/

tbschedule的数据结构




tbschedule在zookeeper中的数据结构及与类的对应关系


下面从tbschedule的初始化流程入手，一步步分析tbs]]></description><category></category></item><item><title><![CDATA[Spring 注入枚举值]]></title><link>https://blog.youkuaiyun.com/A_zhenzhen/article/details/21616107</link><guid>https://blog.youkuaiyun.com/A_zhenzhen/article/details/21616107</guid><author>A_zhenzhen</author><pubDate>Thu, 20 Mar 2014 14:09:41 +0800</pubDate><description><![CDATA[Spring注入枚举值


 

LUCENE_43



 name="matchVersion">匹配参数名

public EnglishAnalyzer(Version matchVersion) {
    this(matchVersion, DefaultSetHolder.DEFAULT_STOP_SET);
  } 

type="org.apach]]></description><category></category></item></channel></rss>