YellowStar5

风物长宜放眼量

0%

前面两篇文章,一篇文章我们介绍了Unsafe中的CAS,另一篇文章介绍了volatile语义及其实现,再来学习今天的Java原子类可以说是水到渠成。
再简单回顾一下Unsafe中CAS——该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值;至于volatile则提供了可见性(每次读写都可以拿到最新值)和重排序限制。

阅读全文 »

0.背景-缓存一致性

根据维基百科的定义:
在一个共享内存多处理器系统中,每个处理器都有一个单独的缓存,可以有很多共享数据副本:一个在主内存中,一个在每个请求它的处理器的本地缓存中。 当一个数据副本被更改时,其他副本必须反映该更改。 缓存一致性是确保共享操作数(数据)值的更改及时在整个系统中传播的学科。
下面图1是缓存不一致的示例图,图2是缓存一致的示例图

阅读全文 »

0.Unsafe介绍

JavaDoc说, Unsafe提供了一组用于执行底层的,不安全操作的方法。那么具体有哪些方法呢,我画了一张图。
Unsafe 方法分类
可以看到Unsafe中提供了CAS,内存操作,线程调度,本机信息,Class相关方法,查看和设置某个对象或字段,内存分配和释放相关操作,内存地址获取相关方法。我自己抽空对上述方法进行了注释,
你可以在这里看到
那么如何使用Unsafe呢?下面我们就来说说如何获取Unsafe并操作。

阅读全文 »

为什么要使用lombok。

  • 普通的 POJO 需要写或是用IDEA等集成开发环境生成大量gettter, setter方法
  • 普通的 POJO 对于 equals 和 hashCode 等方法,也需要自己维护。特别你写接口的时候,如果添加了
    一个字段忘了维护,可能会导致一些bug。
  • 普通的 POJO 没有 builder 的支持,得自己实现该模式。
  • ….

总之,lombok 极大地简化你的代码,去掉了那些模板代码,让你的POJO看起来更加地清爽(可以只有类名和字段的声明,加上少量的注解)。

jar 包的下载

1
2
3
4
5
6
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
阅读全文 »

1.启动一个带ACL 控制的Agent

首先,从这个网址下载consul,解压后发现就是个可执行文件,如果不可以执行,chmod +x consul 一下。

为了试验Consul较多的功能,这里我们打算启用一个dev模式,带ACL控制的Consul代理。
配置文件config.json如下

阅读全文 »