摘要: 为什么用Spring 什么是Spring Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。 Spring的一个最大的目的就是使JAVA EE开发更加容易。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致 阅读全文
posted @ 2024-12-09 08:15 程序员Seven 阅读(2831) 评论(0) 推荐(2)
摘要: 概述 Redis单实例的架构,从最开始的一主N从,到读写分离,再到Sentinel哨兵机制,单实例的Redis缓存足以应对大多数的使用场景,也能实现主从故障迁移。 但是,在某些场景下,单实例存Redis缓存会存在的几个问题: 写并发:Redis单实例读写分离可以解决读操作的负载均衡,但对于写操作,仍 阅读全文
posted @ 2024-12-07 18:13 程序员Seven 阅读(475) 评论(0) 推荐(2)
摘要: 概述 Redis的高可用机制有持久化、复制、哨兵和集群。其主要的作用和解决的问题分别是: 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。 复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可 阅读全文
posted @ 2024-12-04 23:37 程序员Seven 阅读(877) 评论(0) 推荐(3)
摘要: 本地缓存带来的挑战 分布式缓存相比于本地缓存,在实现层面需要关注的点有哪些不同。梳理如下: 维度 本地缓存 集中式缓存 缓存量 受限于单机内存大小,存储数据有限 需要提供给分布式系统里面所有节点共同使用,对于大型系统而言,对集中式缓存的容量诉求非常的大,远超单机内存的容量大小。 可靠性 影响有限,只 阅读全文
posted @ 2024-12-02 08:15 程序员Seven 阅读(845) 评论(0) 推荐(3)
摘要: 使用复杂度高的命令 Redis提供了慢日志命令的统计功能 首先设置Redis的慢日志阈值,只有超过阈值的命令才会被记录,这里的单位是微妙,例如设置慢日志的阈值为5毫秒,同时设置只保留最近1000条慢日志记录: # 命令执行超过5毫秒记录慢日志 CONFIG SET slowlog-log-slowe 阅读全文
posted @ 2024-11-28 08:15 程序员Seven 阅读(596) 评论(0) 推荐(1)
摘要: 分布式锁 概述 分布式锁指的是,所有服务中的所有线程都去获取同一把锁,但只有一个线程可以成功的获得锁,其他没有获得锁的线程必须全部等待,直到持有锁的线程释放锁。 分布式锁是可以跨越多个实例,多个进程的锁 分布式锁具备的条件: 互斥性:任意时刻,只能有一个客户端持有锁 锁超时释放:持有锁超时,可以释放 阅读全文
posted @ 2024-11-26 08:15 程序员Seven 阅读(809) 评论(0) 推荐(1)
摘要: Redis为什么这么快? 完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘IO读取到内存这部分的开销。 数据结构简单,对数据操作也简单。【Redis中的数据结构】是专门进行设计的,每种数据结构都有一种或多种数据结构来支持。Redis正 阅读全文
posted @ 2024-11-25 08:15 程序员Seven 阅读(1877) 评论(2) 推荐(4)
摘要: 与关系型数据库事务的区别 Redis事务是指将多条命令加入队列,一次批量执行多条命令,每条命令会按顺序执行,事务执行过程中不会被其他客户端发来的命令所打断。也就是说,Redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 Redis事务和关系型数据库的事务不太一样,它不保证原子性,也 阅读全文
posted @ 2024-11-22 08:15 程序员Seven 阅读(462) 评论(0) 推荐(0)
摘要: Redis数据库的数据结构 Redis 的键值对中的 key 就是字符串对象,而 value 就是指Redis的数据类型,可以是String,也可以是List、Hash、Set、 Zset 的数据类型。 其实是Redis 底层使用了一个全局哈希表保存所有键值对,哈希表的最大好处就是 O(1) 的时间 阅读全文
posted @ 2024-11-21 08:15 程序员Seven 阅读(948) 评论(0) 推荐(2)
摘要: 五种常见数据类型 Redis中的数据类型指的是 value存储的数据类型,key都是以String类型存储的,value根据场景需要,可以以String、List等类型进行存储。 各数据类型介绍: Redis数据类型对应的底层数据结构 String 类型的应用场景 常用命令 存放键值:set key 阅读全文
posted @ 2024-11-20 08:15 程序员Seven 阅读(646) 评论(0) 推荐(3)
摘要: 概述 使用 explain 输出 SELECT 语句执行的详细信息,包括以下信息: 表的加载顺序 sql 的查询类型 可能用到哪些索引,实际上用到哪些索引 读取的行数 Explain 执行计划包含字段信息如下:分别是 id、select_type、table、partitions、type、poss 阅读全文
posted @ 2024-11-19 08:15 程序员Seven 阅读(617) 评论(1) 推荐(2)
摘要: 概述 undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。 redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复; binlog (归档日志):是 Server 层生成 阅读全文
posted @ 2024-11-14 08:15 程序员Seven 阅读(620) 评论(0) 推荐(4)
摘要: 为什么要有 Buffer Pool? 虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。 要想提升查询性能,那就加个缓存。所以,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取。 为此,Innodb 存储引擎设计了一个缓冲池 阅读全文
posted @ 2024-11-12 08:15 程序员Seven 阅读(390) 评论(0) 推荐(0)
摘要: 整数类型的 UNSIGNED 属性有什么用? MySQL 中的整数类型可以使用可选的 UNSIGNED 属性来表示不允许负值的无符号整数。使用 UNSIGNED 属性可以将正整数的上限提高一倍,因为它不需要存储负数值。 例如, TINYINT UNSIGNED 类型的取值范围是 0 ~ 255,而普 阅读全文
posted @ 2024-11-11 08:15 程序员Seven 阅读(625) 评论(0) 推荐(1)
摘要: 以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 并行收集: 指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。 并发收集: 指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上 吞吐量 阅读全文
posted @ 2024-11-07 08:15 程序员Seven 阅读(287) 评论(0) 推荐(1)
摘要: 如何判断一个引用是否存活 引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。 优点:可即刻回收垃圾,当对象计数为0时,会立刻回收; 弊端:循环引用时,两个对象的计数都为1,导致两个对象都无法被释 阅读全文
posted @ 2024-11-05 08:15 程序员Seven 阅读(342) 评论(2) 推荐(0)
摘要: 首先引入一个概念,什么是Java类加载器? 一句话总结:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。 官方总结:Java类加载器(英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加 阅读全文
posted @ 2024-11-04 08:15 程序员Seven 阅读(584) 评论(2) 推荐(3)
摘要: TLAB TLAB是虚拟机在堆内存的eden划分出来的一块专用空间,是线程专属的。在虚拟机的TLAB功能启动的情况下,在线程初始化时,虚拟机会为每个线程分配一块TLAB空间(包含在 Eden 空间内),只给当前线程使用,这样每个线程都单独拥有一个空间,如果需要分配内存,就在自己的空间上分配,这样就不 阅读全文
posted @ 2024-10-31 08:15 程序员Seven 阅读(159) 评论(0) 推荐(0)
摘要: 前言 Callable、Future和FutureTask是jdk1.5,java.util.concurrent包提供的异步框架 这里先讲一下什么是异步?异步是指起多个线程,多个线程之间互不干扰,各自执行各自的任务,在代码中可能书写顺序有先有后,但有可能写在后面的线程会比写在前面的线程先执行任务, 阅读全文
posted @ 2024-10-30 08:15 程序员Seven 阅读(337) 评论(0) 推荐(0)
摘要: 什么是JVM 定义:Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境) 内存结构 JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。这也 阅读全文
posted @ 2024-10-29 08:15 程序员Seven 阅读(521) 评论(0) 推荐(2)