Luckylau's Blog

Keep Moving, Keep Learning


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 搜索
close
Luckylau's Blog

Let's go 之goLand搭建环境

发表于 2018-06-19 | 分类于 go

​ 一直听说go语言的良好特性,于是开始我的第一个go语言程序。我是用goLand编译器开始这段旅程,记录一下遇到的坑,Let’s go~。

下载SDK

​ 我是mac本开发的,首先第一步是去官网下载go的SDK,可能需要翻墙才能下载。我有个百度网盘可以提供给大家。

然后双击这个go1.10.3.darwin-amd64.pkg安装包即可,其实这个时候go已经安装好了,在终端输入

1
go version
阅读全文 »
Luckylau's Blog

java中的Unsafe类使用

发表于 2018-06-14 | 分类于 java

Unsafe类存在sun.misc.Unsafe中可以直接读写内存、获得地址偏移值、锁定或释放线程。concurrentHashmap的1.7版本大量使用该类来提高提升Java运行效率。下面我们介绍一下其使用。

操作成员变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class test {
public static Unsafe getUnsafe() {
try {
final Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
unsafeField.setAccessible(true);
// the unsafe instance
return (Unsafe) unsafeField.get(null);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args)throws Exception {
Unsafe unsafe = getUnsafe();
Dog dog = new Dog();
// 获取name属性偏移量
long nameOffset = unsafe.objectFieldOffset(Dog.class.getDeclaredField("name"));
unsafe.putObject(dog, nameOffset, "李富貴");
//获取age属性偏移量
long ageOffset = unsafe.objectFieldOffset(Dog.class.getDeclaredField("age"));
unsafe.putInt(dog, ageOffset,5);
System.out.println(dog.toString());
}
}
class Dog {
private String name;
private int age;
@Override
public String toString() {
return "{\"Dog\":{"
+ " \"name\":\"" + name + "\""
+ ", \"age\":\"" + age + "\""
+ "}}";
}
}
阅读全文 »
Luckylau's Blog

concurrentHashmap的设计之美

发表于 2018-06-06 | 分类于 java

concurrentHashmap是Java工程师接触最多的关于并发和线程安全的类,本篇从jdk1.6, jdk1.7, jdk1.8三个版本的实现来详细分析其设计之美。

结构原型

首先简单从整体把握concurrentHashmap的结构原理。

JDK1.6和JDK1.7版本

阅读全文 »
Luckylau's Blog

缓存设计在系统中的重要性

发表于 2018-05-15 | 分类于 分布式架构
Luckylau's Blog

设计模式之适配器模式

发表于 2018-05-05 | 分类于 java

​ 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

​ “适配器”这个词我们平时倒是不少见,比如“电源适配器”,将220V的点转换为电子设备可以接收的小电压的电,可见变压器就是一种“适配器”。不难想到,读卡器是作为内存卡和笔记本之间的适配器,您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。还有我们平时用到的转接头,也是适配器,一端是VGA接口的信号,另一端就可以转换成HDMI的信号。

阅读全文 »
Luckylau's Blog

设计模式之装饰器模式

发表于 2018-05-05 | 分类于 java

​ 装饰器模式(Decorator Pattern)以客户端透明的方式扩展对象的功能。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装,是继承关系的一个替代方案。说到装饰者模式,估计大家都不陌生,Java I/O的设计就是采用了装饰者模式。想必初学Java I/O的时候大家都经历过一段“懵逼”期,各种InputStream和OutputStream层层嵌套,感觉就像洋葱,如果给装饰者一个形象化的吉祥物,想必非洋葱莫属。

阅读全文 »
1…111213…36
Luckylau

Luckylau

人生识字忧患始

215 日志
14 分类
33 标签
GitHub Weibo
© 2017 - 2022 Luckylau
由 Hexo 强力驱动
主题 - NexT.Pisces