上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页
摘要: 1、前言 Redis 的持久化分为 2 种,一种是 RDB(全量 redis database),一种是 AOF(增量 append only file)。 RDB 是旧的模式,现在基本上都使用 AOF。当然,今天两个都会一起聊聊。 2、RDB RDB 流程图: RDB 特点: RDB 是一种快照模 阅读全文
posted @ 2020-05-20 00:04 星火燎原智勇 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 性能测试报告 查看了下阿里 Redis 的性能测试报告如下,能够达到数十万、百万级别的 QPS,就以 4GB 集群版本,2 个节点,2 核,qps 基本上就已经达到 16 万。 Redis 的设计与实现 其实 Redis 主要是通过三个方面来满足这样高效吞吐量的性能需求 高效的数据结构 多路复用 I 阅读全文
posted @ 2020-05-20 00:03 星火燎原智勇 阅读(890) 评论(0) 推荐(0) 编辑
摘要: Redis 作为广为人知的内存数据库,在玩具项目和复杂的工业级别项目中都看到它的身影,然而 Redis 却是使用单线程模型进行设计的,这与很多人固有的观念有所冲突,为什么单线程的程序能够抗住每秒几百万的请求量呢?这也是我们今天要讨论的问题之一。 除此之外,Redis 6.0 新版本却抛弃了单线程模型 阅读全文
posted @ 2020-05-19 23:56 星火燎原智勇 阅读(271) 评论(0) 推荐(0) 编辑
摘要: redis有五种基本数据结构:字符串、hash、set、zset、list。但是你知道构成这五种结构的底层数据结构是怎样的吗? 今天我们来花费五分钟的时间了解一下。 1、string 这里不得不提动态字符串 SDS,即 ”simple dynamic string" 的缩写。redis 中所有场景中 阅读全文
posted @ 2020-05-19 19:11 星火燎原智勇 阅读(1727) 评论(1) 推荐(0) 编辑
摘要: 直接上脑图,下面图是花费了两天的时间才完成的,有兴趣的同学好好看一下: 阅读全文
posted @ 2020-05-19 17:48 星火燎原智勇 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 先来提出问题和给出答案,之后再刨根问底的揭开面纱: 问:volatile 的可见性和禁止指令重排序是怎么实现的? 答:可见性:是通过缓存一致性协议来达到的 禁止指令重排序:JMM 模型里有 8 个指令来完成数据的读写,通过其中 load 和 store 指令相互组合成的 4 个内存屏障实现禁止指令重 阅读全文
posted @ 2020-04-28 16:10 星火燎原智勇 阅读(710) 评论(1) 推荐(3) 编辑
摘要: 来看一道笔试题: 模拟一个容器,有 2 个线程生成数据写入,10 个线程消费的生产者消费者模型 阅读全文
posted @ 2020-04-28 10:27 星火燎原智勇 阅读(236) 评论(0) 推荐(0) 编辑
摘要: CLH 队列 CLH同步队列是一个FIFO双向队列,AQS 依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获取同步状态 阅读全文
posted @ 2020-04-28 10:19 星火燎原智勇 阅读(2848) 评论(1) 推荐(0) 编辑
摘要: 背景 这篇博文是接着上一篇 线程池专题 的一个补充,是针对线程池底层队列的种类做一个进一步的深入详解,上一篇博文主要针对一线大厂针对线程池的灵魂 5 问展开的,而这一篇也是综合了另外面试经验,把底层的一些内容再深入剖析一下。 线程池任务处理 如果运行的线程数 < corePoolSize,则 Exe 阅读全文
posted @ 2020-04-28 01:22 星火燎原智勇 阅读(1427) 评论(0) 推荐(0) 编辑
摘要: 背景 线程池的基本介绍、为什么使用线程池以及使用线程池的配置等基础篇可以参考我之前的一篇博文:JAVA 线程池基本总结 今天这里主要针对面试相关的再进行一次有针对性的整理和总结,每个细节点都是被问到过的,所以每个细节点都需要搞明白,搞透。 面试题目 来看一下灵魂 5 连问 1、什么是线程池? 2、说 阅读全文
posted @ 2020-04-27 19:14 星火燎原智勇 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 我们知道,concurrent包是基于AQS (AbstractQueuedSynchronizer)框架,AQS框架借助于两个类:Unsafe(提供CAS操作) 和 LockSupport(提供park/unpark操作)。因此,LockSupport可谓构建concurrent包的基础之一。理解 阅读全文
posted @ 2020-04-27 11:26 星火燎原智勇 阅读(2381) 评论(0) 推荐(0) 编辑
摘要: 1、Lock Lock 是一个接口,具体定义如下: public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLoc 阅读全文
posted @ 2020-04-26 14:54 星火燎原智勇 阅读(981) 评论(0) 推荐(0) 编辑
摘要: 我们需要先从线程来讲起,相关基本概念这里就不做过多的阐述,都太基本了,有需要可以参考:synchronized 相关概念。这里先从线程状态聊起 1、线程状态 线程共有 5 种状态: 新建状态:新建线程对象,并没有调用start()方法之前 就绪状态:调用start()方法之后线程就进入就绪状态,但是 阅读全文
posted @ 2020-04-26 11:28 星火燎原智勇 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 协程概念 “协程”(Coroutine)概念最早由 Melvin Conway 于 1958 年提出。虽然被提出的时间很早,但是使用它的年限很短。尤其是最近几年,随着 Go、Lua 等语言的流行,把协程推向了一个新的高潮。 协程其实可以认为是比线程更小的执行单元。为啥说他是一个执行单元,因为他自带C 阅读全文
posted @ 2020-04-26 10:59 星火燎原智勇 阅读(1597) 评论(0) 推荐(0) 编辑
摘要: JVM 堆内存组成 Java堆由 Perm区 和 Heap区 组成,Heap区 由 Old区 和 New区(也叫Young区)组成,New区 由 Eden区、From区 和 To区(Survivor)组成。见下图 Heap 区示例: Eden区用于存放新生成的对象。Eden中的对象生命不会超过一次 阅读全文
posted @ 2020-04-23 00:52 星火燎原智勇 阅读(671) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页