自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(191)
  • 收藏
  • 关注

原创 Redis面试题(二)

Redis中的哨兵用于监控主从集群的运行状态,并在主节点故障时自动进行故障转移核心的功能包括监控、通知和自动故障转移。哨兵会定期检查主从节点是否按照预期工作,当检测到主节点故障时,就在从节点中选举出一个新的主节点,并通知客户端连接到新的主节点。

2025-08-01 22:16:50 954

原创 Redis面试题(一)

Redis支持五种基本数据类型,分别是字符串、列表、哈希、集合和有序集合。还有三种扩展数据类型,分别是用于位级操作的Bitmap、用于基数估计的HyperLogLog、支持存储和查询地理坐标地GEO字符串是最基本地数据类型,可以存储文本、数字或者二进制数据,适合缓存单个对象,比如验证码、token、计数器等列表是一个有序地元素集合,支持从头部或尾部插入/删除元素,常用于消息队列或任务列表哈希是一个键值对集合,适合存储对象,如商品信息、用户信息等。

2025-08-01 10:34:24 611

原创 Spring面试题

通过 @SpringBootApplication 里的 @EnableAutoConfiguration 注解,触发框架去扫描特定文件中定义的各种自动配置类,再根据项目中是否有相关依赖、是否有自定义 Bean 等条件,筛选出合适的配置类,自动将其中的 Bean 注册到容器中,同时允许用户自定义配置覆盖默认设置,从而实现无需手动编写大量配置就能能快速集成各种功能的效果。对于单例 Bean 的循环依赖,它会结合 Spring 的三级缓存机制,提前暴露未完全初始化的实例来解决。2.Bean的实例化和注入。

2025-07-31 20:10:40 942

原创 分布式面试题

Seata的设计目标是对业务无入侵,因此它是从业务无入侵的两阶段提交(全局事务)入手,在传统的两阶段上进行改进,把一个分布式事务理解成一个包含了若干分支事务的全局事务。计数器比较简单粗暴,比如我们要限制 1s 能够通过的请求数,实现的思路就是从第一个请求进来开始计时,在接下来的 1s 内,每个请求进来请求数就+1,超过最大请求数的请求会被拒绝,等到 1s 结束后计数清零,重新开始计数。就是桶底出水的速度恒定,进水的速度可能快慢不一,但是当进水量大于出水量的时候,水会被装在桶里,不会直接被丢弃;

2025-07-30 21:40:11 969

原创 消息队列面试题

消息队列是一种非常重要的中间件技术,广泛应用于分布式系统中,以提高系统的可用性、解耦能力和异步通信效率①通过异步处理提高系统性能②削峰/限流③降低系统的耦合性。

2025-07-30 20:28:15 589

原创 Java集合框架篇面试题

1.Collection,主要由List、Set、Queue组成:List代表有序、可重复的集合,典型代表就是封装了动态数组的ArrayList和封装了链表的LinkedListSet代表无需、不可重复的集合,典型代表就是HashSet和TreeSetQueue代表队列,典型代表就是双端队列ArrayDeque,以及优先级队列PriorityQueue2.Map,代表键值对的集合,典型代表就是HashMap。

2025-07-30 18:23:43 1306

原创 MySQL面试题(三)

全局锁就是对整个数据库实例进行加锁,当执行全局锁定操作时,整个数据库将会处于只读状态,所有写操作都会被阻塞,直至全局锁被释放在进行全库备份,或者数据迁移时,可以使用全局锁来保证数据的一致性在MySQL中,获取全局锁后,所有表将被锁定为只读状态。在完成备份迁移后,要使用相关命令释放全局锁。

2025-07-28 14:51:39 658

原创 MySQL面试题(二)

慢查询日志用于SQL性能优化general log用于记录所有的SQL语句undo log用于和MVCC,记录数据被修改前的值。

2025-07-28 10:41:48 679

原创 MySQL面试题(一)

因为LIMIT是在最终结果集上执行的,如果在WHERE之前执行LIMIT,那么就会先返回所有行,然后再进行LIMIT限制,这样会增加数据传输的开销。

2025-07-27 16:27:17 1034

原创 MyBatis面试题

SqlSessionFactoryBuilder:一旦创建,就不再需要了。因此生命周期只存在于方法的内部SqlSessionFactory:用来创建SqlSession的,相当于一个数据库连接池,每次创建SqlSessionFactory都会使用数据库资源,多次创建和销毁是对资源的浪费。所以SqlSessionFactory是应用级的生命周期,而且应该是单例的。

2025-07-27 11:16:38 853

原创 JVM面试题

JVM,也就是Java虚拟机,它是Java实现跨平台的基石程序运行之前,需要先通过编译器将Java源代码文件编译成Java字节码文件程序运行时,JVM会对字节码文件进行逐行解释,翻译成机器码指令,并交给对应的操作系统执行。

2025-07-26 18:47:47 767

原创 Java并发编程面试题(三)

原子操作类是基于CAS+volatile实现的,底层依赖于Unsafe类,最常用的有AtomicInteger、AtomicLong、AtomicReference像 AtomicIntegerArray这种以Array结尾的,还可以原子更新数组里的元素像AtomicStampedReference还可以通过版本号的方式来解决CAS中的ABA问题。

2025-07-26 11:39:02 634

原创 Java并发编程面试题(二)

不是,它包括三个步骤1.从内存中读取i的值2.对i进行+1操作3.将新的值写回内存。

2025-07-25 22:09:48 1243

原创 Java并发编程面试题(一)

线程上下文切换是指CPU从一个线程切换到另一个线程执行时的过程在线程切换的过程中,CPU需要保存当前线程的执行状态,并加载下一个线程的上下文之所以要这样,是因为CPU在同一时刻只能执行一个线程,为了实现多线程并发执行,需要不断地在多个线程之间切换为了让用户感觉多个线程是在同时执行的,CPU资源的分配采用了时间片轮转的方式,线程在时间片占用CPU执行任务。当线程使用完时间片后,就会让出CPU让其他线程占用强引用最为普通的引用方式,表示一个对象处于有用且必须的状态。

2025-07-25 20:05:02 1283

原创 Java基础篇面试题(三)

根据实践发现,大部分的数据操作都集中在值比较小的范围,因此Integer搞了个缓存池,默认范围是-128到127。当我们使用自动装箱来创建这个范围内的Integer对象时,Java会直接从缓存中返回一个已存在的对象,而不是每次都创建一个新的对象。这意味着,对于这个值范围内的所有Integer对象,它们实际上是引用相同的对象实例。Integer缓存的主要目的是优化性能和内存使用。对于小整数的频繁操作,使用缓存可以显著减少对象创建的数量。

2025-07-24 21:42:43 675

原创 Java基础篇面试题(二)

Java的数据类型可以分为两类,引用数据类型+基本数据类型基本数据类型的默认值和占用大小如下所示:它们的默认值和占用大小如下所示:当把一个范围较小的数值或变量付给另外一个范围较大的变量时,会进行自动类型转换;反之,则需要强制类型转换就比如,小杯水倒入大杯没问题,但是反过来就可能溢出。自动装箱:基本数据类型转换成包装类型自动拆箱:包装类型转换为基本数据类型&是逻辑与&&是短路与运算虽然二者都要求运算符左右都是true,整个表达式的值才为true但是&&左边的式子为false时,右边的表达式会直接短路,不会继续

2025-07-23 22:03:04 604

原创 Java基础篇面试题(一)

所谓的跨平台,是指Java语言编写的程序,一次编译后,可以在多个操作系统上运行原理是增加了一个中间件JVM,JVM负责将Java字节码转换为特定平台的机器码,并执行。所谓字节码,就是Java程序经过编译后产生的.class文件1.编译:将源代码文件 .java 编译成 JVM 可以识别的字节码文件 .class2.解释:JVM 执行字节码文件,将字节码翻译成操作系统能识别的机器码3.执行:操作系统执行二进制的机器码。

2025-07-23 19:51:55 347

原创 HTTPS 详解:证书体系与加密通信的安全密码

网站域名(如证书持有者(公司 / 个人名称)证书签发机构(CA)公钥(用于加密的钥匙)证书有效期(通常 1-2 年)CA 的数字签名(证明证书未被篡改)通俗比喻:SSL 证书就像网站的 "数字身份证",而签发证书的 CA 机构就是 "互联网公安局"。HTTPS 的核心是 "证书体系"和证书体系通过信任链解决 "身份认证" 问题,确保你访问的是真实网站。加密流程先用非对称加密安全交换密钥,再用对称加密高效传输数据,兼顾安全性和性能。

2025-07-23 19:25:24 665

原创 揭秘域名解析:从网址到 IP 的神秘之旅

先打个比方:域名就像你家的 "门牌号"(如 "北京市朝阳区 XX 小区 3 号楼 501"),而 IP 地址则是快递员手中的 "经纬度坐标"。计算机之间的通信只能通过 IP 地址(如),但人类很难记住一串数字,于是 "域名解析(DNS 解析)" 应运而生 —— 它相当于互联网世界的 "地址翻译官"。核心目标:将域名()转换为 IP 地址(),让计算机找到目标服务器。

2025-07-23 19:23:33 876

原创 MySQL之EXPLAIN用法和结果分析

EXPLAIN是MySQL提供的一个用于模拟优化器执行SQL查询语句的功能。当我们在SELECT语句前加上EXPLAIN关键字并执行时,MySQL并不会真正去执行该查询并返回数据,而是返回该查询的执行计划信息。这些信息涵盖了表的读取顺序、数据读取操作的类型、哪些索引可供使用、哪些索引被实际运用、表之间的关联关系以及每张表预计被优化器查询的行数等关键内容。简单来说,EXPLAIN就像是给SQL查询做了一次“透视”,让我们清晰的看到MySQL内部处理查询的逻辑流程。

2025-07-20 15:01:38 666

原创 ThreadLocal方法调用流程详解:从对象到键值的交互逻辑

方法核心执行内容涉及对象keyvalueset(value)为当前线程存储 value 副本当前线程、ThreadLocalMap当前 ThreadLocal 实例用户传入的变量副本get()获取当前线程的 value 副本,无则初始化当前线程、ThreadLocalMap当前 ThreadLocal 实例线程存储的副本或结果remove()删除当前线程的 value 副本当前线程、ThreadLocalMap当前 ThreadLocal 实例。

2025-07-14 19:16:51 727

原创 一文读懂线程,进程,协程

进程是操作系统进行资源分配和调度的基本单位。可以把它理解成一个正在运行的程序实例,比如你打开电脑上的浏览器,操作系统就回为浏览器启动一个进程,这个进程包含了浏览器运行所需的代码,数据,系统资源。每个进程都有自己独立的地址空间,进程间的资源是相互隔离的,这意味着一个进程崩溃通常不会影响其他进程(除非涉及到系统级别的严重错误)。线程是进程内的一个执行单元,也被称为轻量级进程。一个进程可以包含多个线程,这些线程共享进程的资源(比如进程的内存空间、打开的文件等),它们在进程的地址空间内并发执行不同的任务。

2025-07-14 14:37:20 694

原创 23种设计模式:从基础到实战

设计模式的核心价值在于提高代码复用性,可扩展性和可读性。单例模式:控制实例唯一性,适用于全局资源管理工厂模式:解耦对象创建与使用,适合产品多样化场景适配器模式:解决接口不兼容问题,常用于集成第三方组件代理模式:增江对象功能,是AOP等技术的核心基础。

2025-07-13 19:34:24 556

原创 虚拟线程:Java并发编程的新范式

虚拟线程是Java平台上轻量级的线程实现,由JDK管理。它们与传统的操作系统线程相比,具有极低的内存占用和极快的创建/销毁速度。每个Java虚拟机(JVM)可以管理数百万个虚拟线程,这使得我们能够以一种全新的方式编写高并发应用程序。

2025-07-13 19:07:07 688

原创 经典垃圾收集器

选择垃圾收集器需根据应用的核心需求(吞吐量、响应时间、内存规模)和运行环境(CPU、内存)决定:简单客户端应用:Serial GC。吞吐量优先的后台任务:Parallel GC。响应时间优先的服务端应用(JDK 8 及以下):CMS GC;JDK 9 + 推荐 G1 GC。大内存场景:G1 GC(或更先进的 ZGC、Shenandoah GC)。

2025-07-11 00:00:00 496

原创 SpringIOC的模拟实现

容器的初始化、Bean 实例的创建与依赖注入,以及最终调用。方法,对指定目录下的所有文件进行递归扫描,将文件路径存于。// 我们所持有的所有对象 在beans中。综上所述,整个程序的运行调用流程涵盖了。// 从beans 中获得对应的对象。//field 需要由我们来赋值。3. 获取Bean实例并调用方法。方法,设定基础路径和基础包名。注解标记的类的实例,将其存储在。// 根据当前域中的类型的名字。注解标记的字段进行依赖注入。列表,运用反射机制创建被。方法来执行具体业务逻辑。

2025-07-10 19:43:46 882

原创 hashmap的get和post的流程(结合源码分析)

若索引位置有节点,检查第一个节点的 key 是否匹配,若匹配则返回该节点的值;若不匹配,检查是否有后续节点,若没有则返回 null;若有后续节点,检查是否为红黑树节点,若是则调用红黑树查找方法,若不是则遍历链表查找。接着计算索引位置,判断该位置是否为空,若为空,直接插入新节点;若不为空,检查第一个节点的 key 是否匹配,若匹配则记录该节点;若不匹配,检查是否为红黑树节点,若是则调用红黑树插入方法,若不是则遍历链表。若未找到,则在尾部插入新节点,且当链表长度达到 8 时,将其转换为红黑树。

2025-07-09 20:40:17 292

原创 HashMap源码解析(JDK1.8)

HashMap是Java集合框架中最重要、最常用的数据结构之一,它基于哈希表实现了Map接口。JDK1.8对HashMap进行了重大优化,下面我将从多个角度深入分析其实现原理。

2025-04-25 20:55:05 293

原创 AOP在项目里的实际应用

使用AOP在验证登录信息正确后,把数据库里对应的账号存储过期时间更新为从登陆时间开始后的24小时,24小时内可以无需验证直接登录进入主页。为了更好的理解AOP面向切面编程在实际生活里的应用,我借用一个项目里的例子。

2025-04-25 17:49:04 155

原创 AOP面向切面编程

/增强/通知 ---》前置通知。

2025-04-25 16:58:59 369

原创 抽象类和接口的区别和联系

一、核心区别abstractinterfacepublic。

2025-04-22 22:00:00 171

原创 面向对象编程三大特性解析与实例

银行账户类。

2025-04-22 21:45:00 284

原创 128陷阱

"128陷阱"是指Java中Integer类在-128到127之间的值会被缓存,导致在这个范围内的Integer对象比较会出现与预期不符的结果。这是由Integer的缓存机制引起的。典型示例。

2025-04-22 17:42:21 283

原创 Mybatis-Plus的BaseMapper接口

示例User user = new User(null, "张三", 23, "zhangsan@qcby.com");

2025-03-24 18:19:52 162

原创 SpringBoot的使用

从ThymeleafAutoConfiguration的源代码中我们可以得知ThymeleafProperties中配置了Thymeleaf的规则。比较(Comparators): >, <, >=, <= (gt, lt, ge, le)文字标记(Literal tokens): one, sometext, main,…数字文本(Number literals): 0, 34, 3.0, 12.3,…= (eq, ne)二元运算符(Binary operators): +, -, *, /, %

2025-03-21 16:54:53 899

原创 SQL触发器

修改DML或DDL触发器时,可以将CREATE关键字修改为ALTER。DROP TRIGGER 触发器名称。2. 创建DDL触发器。

2025-03-17 10:12:13 133

原创 SpringBoot配置文件加载位置和顺序

6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件。7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件。8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件。优先级由高到底,高优先级的配置会覆盖低优先级的配置;

2025-03-15 17:07:38 862

原创 YAML语法

name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi(YML文档里才可以,properties不可以)name: "zhangsan \n lisi":输出;只要是左对齐的一列数据,都是同一个层级的。不会转义字符串里面的特殊字符;会转义特殊字符,特殊字符最终只是一个普通的字符串数据。6. k: v:在下一行来写对象的属性和值的关系;2. k:(空格)v:表示一对键值对(空格必须有);字面量:普通的值(数字,字符串,布尔)属性和值也是大小写敏感;k: v:字面直接来写;

2025-03-15 17:05:34 228

原创 Springboot配置文件值注入

1、@ConfigurationProperties作用告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;*prefix=“user”:配置文件中user下面的所有属性和javaBena进行一一映射只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能,下面的注解都是一样@ConfigurationProperties默认从全局配置文件中获取值;2、@ConfigurationProperties用法1、@Value的作用。

2025-03-15 17:04:21 1049

原创 Spring Boot 入门

简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;优点:快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌TomcatStarters自动依赖和版本控制大量的自动装配,简化开发,也可以修改默认值无需配置XML无代码生成开箱即用准生产环境的运行时应用监控与云计算的天然集成。

2025-03-15 16:58:56 629

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除