![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
yinghonghui
这个作者很懒,什么都没留下…
展开
-
java volatile解析
解析volatile之前需要先叙述一下cpu的内存机制。cpu 的操作数和操作指令是保存的内存中,在cpu计算的时候,先将数据复制一份在各自的高速缓存中。当设计到多核的cpu的时候,因为各自线程在各自cpu操作,那么同一个内存的变量就在不同的cpu里面有各自的一份缓存了。从而导致数据操作就有了缓存不一致的问题。常见的缓存一致性问题解决方案:1)通过在总线加LOCK#锁的方式2)通过缓存一...原创 2018-09-30 21:28:52 · 134 阅读 · 0 评论 -
java 线程池
参数:1.核心线程参数:corePoolSize2.最大线程数:maximumPoolSize3.keepAliveTime and unit 线程空闲的时候,存活时间。4.workQueue 用于存放任务的阻塞队列。5.handler 当队列和最大线程池都满了之后的饱和策略...原创 2018-09-30 23:30:53 · 186 阅读 · 0 评论 -
synchronized 原理
synchronized:JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步块的同步的。编译的时候会在同步的对象插入monitor.enter 指令,在方法退出,或者异常的时候插入monitor.exit指令。任意线程对一个(synchronized修饰的)对象访问前,先访问Monitor,尝试获取对象的使用权限,如果成功获取,线程将进入同步列队;如果失败的话,线程将执...原创 2018-10-03 23:23:43 · 120 阅读 · 0 评论 -
java 线程生命周期
java 线程包含五个生命周期:新建,就绪,运行,阻塞,死亡。新建状态:线程创建之后就进入创建状态。就绪状态:当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才...原创 2018-10-04 00:25:34 · 579 阅读 · 0 评论 -
分析jvm内存大致命令
ps -ef|grep javajps: 查询当前机器所有 JAVA 进程信息;jmap: 输出某个 java 进程内存情况 (如:产生那些对象及数量等);jstack: 打印某个 Java 线程的线程栈信息;jinfo: 用于查看 jvm 的配置参数。...原创 2018-10-14 14:11:56 · 592 阅读 · 0 评论 -
CAS ABA模式
CAS操作可能带来ABA问题,一个变量原本值是A。两个线程进行操作,线程1拿到A值,线程2,拿到A值,然后设置为B,然后再设置为A。这时候线程1,设置值,发现还是A,于是成功的设置值了。解决的方式在值上加版本号,1A,2B,3A 。jdk AtomicStampedReference 是解决这个问题的类。...原创 2018-10-09 10:48:30 · 369 阅读 · 0 评论 -
hash冲突的其他解决方式
hash 冲突的解决方法:1.开放定址法:在冲突的时候,用再散列函数再次哈希,直到不再冲突为止2.链地址法3.再哈希法 这种方法构造多个不同的哈希函数:Hi=RH1(key) i=1,2,…,k不易产生聚集,但是增加了计算的时间。4.建立公共溢出区https://www.cnblogs.com/wuchaodzxx/p/7396599.html...转载 2018-10-09 11:06:43 · 137 阅读 · 0 评论 -
可达性能分析
jvm 内存划分:程序计数器,java 栈,本地方法栈,堆,方法区(方法区,放着类的信息)。java 虚拟机回收的内存块是堆内存,采用的是可达性分析来判断一个对象是否存活着。GC roots 一般由下面来充当:1.虚拟机栈(栈桢中的本地变量表)中的引用的对象2.方法区中的类静态属性引用的对象3.方法区中的常量引用的对象4.本地方法栈中JNI(Native方法)的引用的对象https...转载 2018-10-09 12:41:50 · 102 阅读 · 0 评论 -
redis
1.redis key-value ,2.支持string,list ,set,sored set ,hash 数据结构3.支持事务,操作的原子性4.丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除redis 提供 6种数据淘汰策略volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰volati...原创 2018-10-09 17:45:56 · 100 阅读 · 0 评论