个人简介

Echo Blog


江湖无名 安心练剑
  • Annotation-02-built in
    Java 内置注解 注解 Annotation(注解)是JDK5.0及以后版本引入的。它的作用是修饰程序元素。 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。 程序可以利用java的反射机制来了解你的类及各种元素上有无何种标记,针对不同的标记,就去做相应的事件。 后续会对这些进行讲解,本文主要讲解 Java 内置注解。 @Override 指示一个方法声明要覆盖...
    2018-07-02 09:36:14 | Java
  • Annotation-01-annotation
    Java 注解 注解,元数据的一种形式,提供了程序本身之外的数据。注释对注释的代码的操作没有直接影响。 注解有许多用途,其中包括: 编译器的信息—编译器可以使用注释来检测错误或抑制警告。 编译时和部署时处理——软件工具可以处理注释信息来生成代码、XML文件等等。 运行时处理——可以在运行时检查一些注释。 这节课,还可以使...
    2018-07-02 09:07:11 | Java
  • Disruptor-03-技术实现细节
    # JMM JMM 系列 Disruptor Disruptor 是 LMAX一种新型零售金融交易平台, 后台架构的核心组件之一,能够在无锁的情况下实现网络的Queue并发操作, 官方描述: 一个线程里每秒处理6百万订单。 在设计Disruptor时要避免写竞争,让数据更久的留在cache里, 避免JMV 过度GC。 Disruptor的核心是一个circular array,有个...
    2018-07-02 06:30:21 | Concurrent
  • Disruptor-02-Get start
    Get start maven 导入 <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.4.2</version> </dependency> ...
    2018-07-02 06:30:21 | Concurrent
  • Disruptor-01-Introduction
    Disruptor Disruptor 是一个高性能的线程间消息传递库。 简介 要理解 Disruptor 是什么,最好的办法就是把它与人们理解得很透彻、目的很相似的东西进行比较。 在 Disruptor 的情况下,这将是Java的阻塞队列(BlockingQueue)。 与队列一样,Disruptor 的目的是在同一进程的线程之间移动数据(例如消息或事件)。 然而,Disruptor...
    2018-07-02 05:50:44 | Concurrent
  • Reflection-14-Java中如何获得A泛型中T的运行时类型及原理探究
    简介 如果经常写工具类,很大概率会遇到一个比较实际的问题,就是需要在泛型表达式 A<T> 中获取T的运行时类型。 获取它需要一些技巧。但这个技巧很少被透彻的解释过为什么会生效。在接下来的文章里,我们会从Java的泛型(Generics)谈起,结合JLS(Java语言标准,Java Language Specification)和JVMS(Java虚拟机标准,Java Virt...
    2018-07-01 09:07:11 | Java
  • Reflection-13-javabean 内省 PropertyDescriptor
    PropertyDescriptor 应用场景 大家都知道Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢? 一般的做法是将该java类封装称为一个JavaBean,即封装该私有属性,提供一对共有的get,set方法来访问私有属性。一般情况下都会这样做! 但遇到特殊情况呢?比如,先现有一个需求:访问一个Java类的...
    2018-07-01 09:07:11 | Java
  • Reflection-12-getFields 顺序确定吗
    getFields() 结果顺序固定吗? 背景 前端时间同事说遇到了 getFields() 顺序可能不一致的问题。 自己觉得这违反直觉。 因为觉得固定的 jdk 编译为 class 肯定是固定的,相同的 jvm 加载处理的策略肯定也是固定的。 那么反射获取的字段顺序肯定也是有序的。 结果查下来,却是超出自己意料之外的。 顺序固定吗 答案是不固定的。 如果想知道为什么,请继...
    2018-07-01 09:07:11 | Java