万字长文带你深入Redis底层数据结构

今天 08:00
阅读 29 分钟
47
Redis 的键值对中的 key 就是字符串对象,而 value 就是指Redis的数据类型,可以是String,也可以是List、Hash、Set、 Zset 的数据类型。

Redis中常见的数据类型及其应用场景

11 月 20 日
阅读 10 分钟
41
Redis中的数据类型指的是 value存储的数据类型,key都是以String类型存储的,value根据场景需要,可以以String、List等类型进行存储。

Mysql篇-语句执行计划详解(explain)

11 月 18 日
阅读 8 分钟
53
概述使用 explain 输出 SELECT 语句执行的详细信息,包括以下信息:表的加载顺序sql 的查询类型可能用到哪些索引,实际上用到哪些索引读取的行数Explain 执行计划包含字段信息如下:分别是 id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra 12个字段。通过explain e...

Mysql篇-三大日志

11 月 14 日
阅读 7 分钟
56
概述undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;binlog (归档日志):是 Server 层生成的日志,主要用于数据备份和主从复制;回滚日志(undo log...

Mysql篇-Buffer Pool中的三大链表

11 月 12 日
阅读 6 分钟
31
为什么要有 Buffer Pool?虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。要想提升查询性能,那就加个缓存。所以,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取。为此,Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库...

Mysql数据类型面试题15连问

11 月 11 日
阅读 5 分钟
66
MySQL 中的整数类型可以使用可选的 UNSIGNED 属性来表示不允许负值的无符号整数。使用 UNSIGNED 属性可以将正整数的上限提高一倍,因为它不需要存储负数值。

一起了解早期使用的各种垃圾收集器

11 月 7 日
阅读 5 分钟
69
以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。并行收集: 指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。并发收集: 指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上吞吐量: 即CPU用于运行用户...

一文夯实垃圾收集的理论基础

11 月 5 日
阅读 15 分钟
62
给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。

说说Java的类加载机制?究竟什么是双亲委派模型?

11 月 4 日
阅读 15 分钟
93
官方总结:Java类加载器(英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。

对象一定分配在堆中吗?聊聊TLAB和逃逸分析技术

10 月 31 日
阅读 2 分钟
134
TLAB是虚拟机在堆内存的eden划分出来的一块专用空间,是线程专属的。在虚拟机的TLAB功能启动的情况下,在线程初始化时,虚拟机会为每个线程分配一块TLAB空间(包含在 Eden 空间内),只给当前线程使用,这样每个线程都单独拥有一个空间,如果需要分配内存,就在自己的空间上分配,这样就不存在竞争的情况,可以大大提升...

深入理解Java中的FutureTask:用法和原理

10 月 30 日
阅读 15 分钟
275
这里先讲一下什么是异步?异步是指起多个线程,多个线程之间互不干扰,各自执行各自的任务,在代码中可能书写顺序有先有后,但有可能写在后面的线程会比写在前面的线程先执行任务,异步对应并行的概念,常见的异步操作有线程池、Callable、completeFuture等。

聊聊jvm的内存结构, 以及各种结构的作用

10 月 29 日
阅读 14 分钟
304
JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。这也就是常说的运行时数据区

史上最全ThreadLocal 详解

10 月 28 日
阅读 9 分钟
466
线程本地变量。当使用 ThreadLocal 维护变量时, ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程。

Tomcat线程池详解,为什么SpringBoot最大支持200并发?

10 月 22 日
阅读 3 分钟
282
A:SpringBoot 应用并发处理请求数主要由两个因素影响,使用的 Servlet容器(默认使用 Tomcat,常用的还有 jetty、undertow) 和 配置项。所以在默认配置下,SprigBoot 应用可以并发处理 200 请求。

一文夯实并发编程的理论基础

10 月 21 日
阅读 11 分钟
256
java当中的共享变量;都放在主内存当中,如类的成员变量(实例变量),还有静态的成员变量(类变量),都是存储在主内存中的。每一个线程都可以访问主内存;