一.什么是cas CAS的全称是Compare-And-Swap,他是一条CPU并发原语。 java中的CAS,都是通过unsafe类实现的,其主要的操作是,当一个线程从主内存拿到一个变量到自己工作内存,并经过计算处理,准备写回主内存的时候,会首先比对当前主内存的变量指向的内存地址里面的值,与期望值 ...
分类:
编程语言 时间:
2020-09-17 20:08:32
阅读次数:
36
Java Unsafe 测试代码 import com.User; import org.junit.Before; import org.junit.Test; import sun.misc.Unsafe; import java.lang.reflect.Field; import java. ...
分类:
编程语言 时间:
2020-08-28 15:05:16
阅读次数:
64
URL中只能使用US-ASCII字符集可以显示的字符,如果需要在URL中使用不属于此字符集的字符,就要使用特殊的符号对该字符进行编码,如最常使用的空格用%20来表示。 除了那些无法显示的字符外,还需要在URL中对那些保留(reserved)字符和不安全(unsafe)字符进行编码。 保留字符是指那些 ...
分类:
Web程序 时间:
2020-07-28 22:37:11
阅读次数:
126
当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问 ...
分类:
编程语言 时间:
2020-07-23 01:47:26
阅读次数:
97
在性能测试过程中,往往会出现各种各样的性能瓶颈。其中java常见瓶颈故障模型有cpu资源瓶颈;文件IO瓶颈;网络IO瓶颈;内存资源瓶颈;资源消耗不高程序本身执行慢等场景模型。 如何快速定位分析这些类型瓶颈?工欲善其事必先利其器。 本文主要讲述针对cpu高耗和网络IO瓶颈两个场景,使用排查提效脚本工具 ...
分类:
编程语言 时间:
2020-07-22 15:53:07
阅读次数:
66
指针变量声明:例: int* p1, p2, p3; public static unsafe void swap(int a,int b) { int temp; temp = a; a = b; b = a; } public static unsafe void swapP(int* pa,i ...
遇到的问题 1 unsafe 2 { 3 fixed (byte* ptrdata = dataGrayScaleImage) 4 for (int i = 0; i < height; i++) 5 { 6 ... 7 } 8 } 解析: 1、fixed 语句禁止垃圾回收器重定位可移动的变量。fi ...
分类:
其他好文 时间:
2020-07-15 15:36:02
阅读次数:
63
原理: 1 zookeeper 可以建立临时节点文件 znode 结构如高度为2的树 在 basepath+lockname上建立 basepath+lockname 1 basepath+lockname 2 basepath+lockname 3 的顺序节点 2 watcher机制。可以建立某一 ...
分类:
其他好文 时间:
2020-07-07 17:48:36
阅读次数:
67
多线程的同步方法 1.买票的例子 通过synchronized锁住保证线程的安全 //买票 public class SafeBuyTicket { public static void main(String[] args) { BuyTicket sation=new BuyTicket(); ...
分类:
编程语言 时间:
2020-06-28 15:29:29
阅读次数:
51
无锁 乐观锁(非阻塞) 共享模式之无锁 CAS 与 volatile 原子整数 原子引用 原子累加器 Unsafe CAS无锁方案 CAS无锁主要看重三个变量: 预估值 + 修改值 + 主存值 预估值: 主要用来判断是否等于主存值, 是则将修改值修改到主存值中 修改值: 即将需要修改的新值, 修改到 ...
分类:
其他好文 时间:
2020-06-26 18:28:48
阅读次数:
57