摘要: Redis数据库的数据结构 Redis 的键值对中的 key 就是字符串对象,而 value 就是指Redis的数据类型,可以是String,也可以是List、Hash、Set、 Zset 的数据类型。 其实是Redis 底层使用了一个全局哈希表保存所有键值对,哈希表的最大好处就是 O(1) 的时间 阅读全文
posted @ 2024-11-21 08:15 seven97_top 阅读(199) 评论(0) 推荐(1) 编辑
摘要: 五种常见数据类型 Redis中的数据类型指的是 value存储的数据类型,key都是以String类型存储的,value根据场景需要,可以以String、List等类型进行存储。 各数据类型介绍: Redis数据类型对应的底层数据结构 String 类型的应用场景 常用命令 存放键值:set key 阅读全文
posted @ 2024-11-20 08:15 seven97_top 阅读(288) 评论(0) 推荐(2) 编辑
摘要: 概述 使用 explain 输出 SELECT 语句执行的详细信息,包括以下信息: 表的加载顺序 sql 的查询类型 可能用到哪些索引,实际上用到哪些索引 读取的行数 Explain 执行计划包含字段信息如下:分别是 id、select_type、table、partitions、type、poss 阅读全文
posted @ 2024-11-19 08:15 seven97_top 阅读(347) 评论(1) 推荐(2) 编辑
摘要: 概述 undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。 redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复; binlog (归档日志):是 Server 层生成 阅读全文
posted @ 2024-11-14 08:15 seven97_top 阅读(416) 评论(0) 推荐(3) 编辑
摘要: 为什么要有 Buffer Pool? 虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。 要想提升查询性能,那就加个缓存。所以,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取。 为此,Innodb 存储引擎设计了一个缓冲池 阅读全文
posted @ 2024-11-12 08:15 seven97_top 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 整数类型的 UNSIGNED 属性有什么用? MySQL 中的整数类型可以使用可选的 UNSIGNED 属性来表示不允许负值的无符号整数。使用 UNSIGNED 属性可以将正整数的上限提高一倍,因为它不需要存储负数值。 例如, TINYINT UNSIGNED 类型的取值范围是 0 ~ 255,而普 阅读全文
posted @ 2024-11-11 08:15 seven97_top 阅读(485) 评论(0) 推荐(1) 编辑
摘要: 以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 并行收集: 指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。 并发收集: 指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上 吞吐量 阅读全文
posted @ 2024-11-07 08:15 seven97_top 阅读(227) 评论(0) 推荐(1) 编辑
摘要: 如何判断一个引用是否存活 引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。 优点:可即刻回收垃圾,当对象计数为0时,会立刻回收; 弊端:循环引用时,两个对象的计数都为1,导致两个对象都无法被释 阅读全文
posted @ 2024-11-05 08:15 seven97_top 阅读(262) 评论(2) 推荐(0) 编辑
摘要: 首先引入一个概念,什么是Java类加载器? 一句话总结:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。 官方总结:Java类加载器(英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加 阅读全文
posted @ 2024-11-04 08:15 seven97_top 阅读(387) 评论(2) 推荐(3) 编辑
摘要: TLAB TLAB是虚拟机在堆内存的eden划分出来的一块专用空间,是线程专属的。在虚拟机的TLAB功能启动的情况下,在线程初始化时,虚拟机会为每个线程分配一块TLAB空间(包含在 Eden 空间内),只给当前线程使用,这样每个线程都单独拥有一个空间,如果需要分配内存,就在自己的空间上分配,这样就不 阅读全文
posted @ 2024-10-31 08:15 seven97_top 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 前言 Callable、Future和FutureTask是jdk1.5,java.util.concurrent包提供的异步框架 这里先讲一下什么是异步?异步是指起多个线程,多个线程之间互不干扰,各自执行各自的任务,在代码中可能书写顺序有先有后,但有可能写在后面的线程会比写在前面的线程先执行任务, 阅读全文
posted @ 2024-10-30 08:15 seven97_top 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 什么是JVM 定义:Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境) 内存结构 JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。这也 阅读全文
posted @ 2024-10-29 08:15 seven97_top 阅读(370) 评论(0) 推荐(2) 编辑
摘要: 概述 线程本地变量。当使用 ThreadLocal 维护变量时, ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程。 每个线程都有一个 ThreadLocalMap ( ThreadLocal 内部类),Map中元素的键为 阅读全文
posted @ 2024-10-28 08:15 seven97_top 阅读(533) 评论(0) 推荐(1) 编辑
摘要: 前言 项目中经常会遇到一些非分布式的调度任务,需要在未来的某个时刻周期性执行。实现这样的功能,我们有多种方式可以选择: Timer类, jdk1.3引入,不推荐。 它所有任务都是串行执行的,同一时间只能有一个任务在执行,而且前一个任务的延迟或异常都将会影响到之后的任务。可能会出现任务执行时间过长而导 阅读全文
posted @ 2024-10-24 08:00 seven97_top 阅读(349) 评论(0) 推荐(2) 编辑
摘要: CountDownLatch的使用方式 CountDownLatch用于某个线程等待其他线程执行完任务再执行,与thread.join()功能类似。常见的应用场景是开启多个线程同时执行某个任务,等到所有任务执行完再执行特定操作,如汇总统计结果。 面试题:如何能够保证T2在T1执行完后执行,T3在T2 阅读全文
posted @ 2024-10-23 08:00 seven97_top 阅读(78) 评论(0) 推荐(0) 编辑
摘要: Q:经典面试题,SpringBoot 应用可以同时并发处理多少请求? A:SpringBoot 应用并发处理请求数主要由两个因素影响,使用的 Servlet容器(默认使用 Tomcat,常用的还有 jetty、undertow) 和 配置项。所以在默认配置下,SprigBoot 应用可以并发处理 2 阅读全文
posted @ 2024-10-22 08:00 seven97_top 阅读(677) 评论(0) 推荐(4) 编辑
摘要: 面试题:有 3 个独立的线程,一个只会输出 A,一个只会输出 B,一个只会输出 C,在三个线程启动的情况下,请用合理的方式让他们按顺序打印 ABC。 使用lock,Condition import java.util.concurrent.locks.Condition; import java.u 阅读全文
posted @ 2024-10-21 10:13 seven97_top 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 前言 生产者-消费者模式是一个十分经典的多线程并发协作模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深。 所谓的生产者-消费者,实际上包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库,生产者 阅读全文
posted @ 2024-10-16 23:12 seven97_top 阅读(350) 评论(0) 推荐(1) 编辑
摘要: ReentrantReadWriteLock使用场景 ReentrantReadWriteLock 是 Java 的一种读写锁,它允许多个读线程同时访问,但只允许一个写线程访问(会阻塞所有的读写线程)。这种锁的设计可以提高性能,特别是在读操作的数量远远超过写操作的情况下。 在并发场景中,为了解决线程 阅读全文
posted @ 2024-10-14 23:28 seven97_top 阅读(430) 评论(0) 推荐(3) 编辑
摘要: 最近上新的项目中需要用到dubbo,于是我决定温故知新,决定分享一下Dubbo在各种环境下的使用方式,本篇文章让你两小时就能学会使用dubbo 什么是Dubbo Dubbo是一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案,可以和Spring框架无缝集成。Du 阅读全文
posted @ 2024-10-13 21:18 seven97_top 阅读(501) 评论(0) 推荐(2) 编辑