摘要: 一、MVCC是什么呢? MVCC其实就是一个多版本并发控制,即多个不同版本的数据实现并发控制的技术,其基本思想是为每次事务生成一个新版本的数据, 在读数据时选择不同版本的数据即可以实现对事务结果的完整性读取。 二、MVCC主要有什么作用呢? 提高并发读写性能,操作时会生成事务id 1》每条记录都会保 阅读全文
posted @ 2020-06-13 18:36 boluo1230 阅读(3138) 评论(0) 推荐(0) 编辑
摘要: 我们先插入几条hash数据: 127.0.0.1:6379> hmset soft:1 id 1 title mobile download 123 created 122 OK 127.0.0.1:6379> hmset soft:2 id 2 title android download 456 阅读全文
posted @ 2020-06-11 11:08 boluo1230 阅读(6275) 评论(0) 推荐(0) 编辑
摘要: 一共分为三个范围: 作用某对象上,例如 synchronized (this)、synchronized (object) 作用在某方法上,例如: public void test() 作用在类上,例如: ① public synchronized static void test() ② sync 阅读全文
posted @ 2020-06-10 19:26 boluo1230 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 说到轻量级锁,我们必须先说一下轻量级锁是什么? synchronized在JDK1.6之后的优化锁后,一共有四种锁阶段: 无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁 而重量级锁,正处于是第四种阶段,即当某个线程长时间占有锁资源,而其他线程一直处于自旋状态并竞争激烈,锁将会升级为重量级锁 阅读全文
posted @ 2020-06-10 16:31 boluo1230 阅读(1227) 评论(0) 推荐(0) 编辑
摘要: 在排查之前,我想小伙伴对JVM内存结构都应该是了解的吧,不了解的传送门走一波: 《堆区域的一个详细了解并附带调优案例》 《帧栈核心组成部分详解》 排查之前,我脚的我们必须得了解一波啥是内存溢出?(传送门在这里:《你必须了解的内存溢出和内存泄漏》) 内存溢出:系统已经不能再分配出多余的空间给你所使用了 阅读全文
posted @ 2020-06-08 21:42 boluo1230 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 什么是内存溢出和内存泄漏呢? 内存溢出(Out Of Memory —— 也就是常说的OOM) 系统已经不能再分配出多余的空间给你所使用了。 比如:你从数据库查询出了100M的数据,但是系统只有90M的数据了,boom!!!没那么多内存了,所以就炸了 内存泄漏(Memory Leak) 在你使用一块 阅读全文
posted @ 2020-06-08 20:09 boluo1230 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 说到轻量级锁,我们必须先说一下轻量级锁是什么? synchronized在JDK1.6之后的优化锁后,一共有四种锁阶段: 无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁 而轻量级锁,正处于是第三种阶段。 那么如何才会触发偏向锁升级为轻量级锁?偏向锁又是如何升级为轻量级锁的呢? 1》如何触发 阅读全文
posted @ 2020-06-06 16:33 boluo1230 阅读(681) 评论(2) 推荐(0) 编辑
摘要: 多线程有什么好处呢?使用多线程它不香么? 对于单纯的网络IO来说,当请求量达到一定程度之后,多线程的确会有很大的优势, 不过并不是单纯的多线程,而是每个线程都有自己的多路复用模型(如:select、poll、epoll) 也就是多线程和多路复用模型混合。 那Redis为什么是单线程的呢?(这里指Re 阅读全文
posted @ 2020-06-04 15:43 boluo1230 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 再调用【size()】时,会出现什么样的一致性问题呢? 1》在没有put的情况下,调用concurrentHashMap的size()方法,可以直接获取到表的长度 2》在线程A调用size()方法的同时,线程B试图PUT了一个数据,那么线程A如何保证size()结果一致性呢? 当然,JDK设计人员一 阅读全文
posted @ 2020-06-02 15:24 boluo1230 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 什么是AQS? synchronized(基于底层C++,语言实现的同步机制) Aqs同步器(Java实现) 【Unsafe】魔法类 绕过虚拟机,直接操作底层的内存 话不多说,我们手动模拟一个AQS: 1》锁对象: package com.example.demo.thread.current; i 阅读全文
posted @ 2020-05-29 22:52 boluo1230 阅读(343) 评论(1) 推荐(0) 编辑