2024年5月14日大约 10 分钟
volatile 关键字
volatile
是 Java 中的一个关键字,用于声明变量,表示该变量可能会被多个线程同时访问。使用 volatile 关键字修饰的变量具有以下两个特性:
- 可见性(Visibility): 当一个线程修改了 volatile 变量的值,该变量的新值会立即被其他线程看到。换句话说,对一个 volatile 变量的写操作对其他线程是可见的。
- 禁止指令重排序(Preventing Reordering): volatile 变量的读写操作会被禁止指令重排序优化,保证了变量操作的顺序性。
2022年6月21日大约 2 分钟
Java对象如果是数组类型,则虚拟机用3个字宽存储对象头;若是非数组类型,则用2个字宽存储对象头。在32位虚拟机中,1字宽等于4字节32bit;64位虚拟机中1字宽等于8字节64bit
Java对象头存储内容
长度 | 内容 | 说明 |
---|---|---|
32/64bit | Mark Word | 存储对象的HashCode、分代年龄和锁信息等 |
32/64bit | Class Meta Address | 存储指向对象类型数据的指针 |
32/64bit | Array Length | 数组的长度(仅仅对象是数组类型) |
2022年6月21日大约 2 分钟
锁 | 优点 | 缺点 | 试用场景 |
---|---|---|---|
重入锁 | 提供了更多的功能和灵活性,例如支持可中断等待、超时等待、条件等, 允许一个线程多次获取锁 | 需要手动释放锁,可能出现忘记释放锁的情况 | 需要更多功能和灵活性的场景,例如需要支持可中断等待、超时等待、条件等待等情况等 |
读写锁 | 将读操作和写操作分离,读操作可以并发执行,提高了并发性能,写操作是独占的,保证了数据的一致性 | 写操作可能会被读操作阻塞,导致写操作的响应时间变长 | 读操作频繁,写操作相对较少的场景,可以提高并发性能 |
偏向锁 | 加锁和解锁不需要额外开销 | 如果线程间存在锁竞争,会带来额外的锁消耗 | 适用于只有一个线程访问同步块场景 |
轻量级锁 | 竞争的线程不会阻塞,提高程序响应速度 | 如果始终得不到锁竞争线程,使用自旋会消耗CPU | 追求响应时间,同步块执行速度非常快 |
重量级锁 | 线程竞争不使用自旋,不会消耗CPU | 线程阻塞,响应时间缓慢 | 追求吞吐量,同步块执行速度较长 |
2022年6月21日大约 1 分钟
- Go-Spring v1.1.0-rc2版本,Git地址:https://github.com/go-spring/go-spring
安装
# 安装spring核心包
go get -u github.com/go-spring/spring-core@v1.1.0-rc2
# 安装web starter
# gin
go get -u github.com/go-spring/starter-gin@v1.1.0-rc2
# 安装grpc starter
go get -u github.com/go-spring/starter-grpc@v1.1.0-rc2
# 安装grpc server
go get -u github.com/go-spring/starter-grpc/server@v1.1.0-rc2
# 安装grpc client
go get -u github.com/go-spring/starter-grpc/client@v1.1.0-rc2
2021年11月24日大约 3 分钟
- Go-Spring v1.1.0-rc2
安装
# 安装spring核心包
go get -u github.com/go-spring/spring-core@v1.1.0-rc2
# 安装web starter
# gin
go get -u github.com/go-spring/starter-gin@v1.1.0-rc2
# echo
go get -u github.com/go-spring/starter-echo@v1.1.0-rc2
2021年11月18日大约 3 分钟
- Go-Spring v1.1.0-rc2版本,项目地址:https://github.com/go-spring/go-spring
安装
# 安装spring核心包
go get -u github.com/go-spring/spring-core@v1.1.0-rc2
# 安装web starter
# gin
go get -u github.com/go-spring/starter-gin@v1.1.0-rc2
# echo
go get -u github.com/go-spring/starter-echo@v1.1.0-rc2
2021年11月17日大约 7 分钟
- Go-Spring v1.1.0-rc2,项目地址:https://github.com/go-spring/go-spring
安装
# 安装spring核心包
go get -u github.com/go-spring/spring-core@v1.1.0-rc2
# 安装web starter
# gin
go get -u github.com/go-spring/starter-gin@v1.1.0-rc2
# echo
go get -u github.com/go-spring/starter-echo@v1.1.0-rc2
# 安装gorm starter
go get -u github.com/go-spring/starter-gorm@v1.1.0-rc2
# 安装gorm
go get -u github.com/jinzhu/gorm
# 安装 redis starter
# go-redis
go get -u github.com/go-spring/starter-go-redis@v1.1.0-rc2
# redigo
go get -u github.com/go-spring-starter-redigo@v1.1.0-rc2
2021年11月17日大约 4 分钟
Jstat
jstat
是 JDK 中的一个工具,用于监视 Java 虚拟机 (JVM) 的各种统计信息,比如堆内存、类加载、垃圾回收等。它可以提供实时的监控数据,帮助开发人员分析和调优 Java 应用程序的性能。
使用 jstat 工具需要指定 Java 虚拟机的进程 ID (PID)。下面是 jstat 命令的基本语法:
jstat [ options ] pid [ interval [ count ]]
2020年9月7日大约 2 分钟