自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring三级缓存的作用与原理详解

第二级缓存(earlySingletonObjects):这是一个存储早期暴露出来的singleton bean的缓存。在Spring框架中,Bean的创建过程涉及到了三级缓存机制。本文将深入探讨Spring中的三级缓存,以及其在bean生命周期中的重要作用。第一级缓存(singletonObjects):这是一个存储已经完全初始化完成的singleton bean的缓存。通过这种三级缓存机制,Spring可以很好地解决单例模式下的循环依赖问题,同时也能确保bean的创建过程高效且线程安全。

2025-05-16 18:50:44 370

原创 深入解析Spring Security:基于JWT的身份认证与授权实践

实现。

2025-05-14 10:26:33 638

原创 深入解析SpringBoot中的多线程与线程池实战

在现代Web应用中,高并发请求处理是一个常见的需求。例如,一个电商平台在促销活动期间,可能会面临大量用户同时下单的情况。为了提高系统的吞吐量和响应速度,我们需要使用多线程技术来并发处理这些请求。

2025-05-14 10:21:27 343

原创 深入解析Spring Security:JWT认证与授权实践

JWT是一种轻量级的认证和授权机制,由三部分组成:Header、Payload和Signature。它通过签名确保数据的完整性和安全性,适用于分布式系统的认证场景。通过Spring Security和JWT的结合,我们可以实现高效、安全的认证与授权机制。JWT的轻量级特性使其成为分布式系统的理想选择,而Spring Security的强大功能则为开发者提供了灵活的配置选项。

2025-05-14 10:19:45 182

原创 深入理解SpringCloud中的OpenFeign:原理、使用与业务场景

OpenFeign通过声明式的方式简化了微服务之间的调用,提高了开发效率。结合SpringCloud的其他组件,可以构建高可用、高性能的微服务系统。

2025-05-14 10:17:06 437

原创 深入理解SpringBoot中的线程池配置与使用

合理地配置和使用线程池可以显著提升系统的并发处理能力。SpringBoot提供了便捷的线程池配置方式,开发者可以根据业务需求灵活调整参数。

2025-05-14 09:53:19 404

原创 深入理解SpringBoot中的SpringCache缓存技术

SpringCache是Spring框架提供的一种缓存抽象,它通过注解的方式简化了缓存的使用。开发者无需关心底层缓存的具体实现(如Redis、Ehcache等),只需通过简单的注解即可实现缓存功能。SpringCache通过简单的注解实现了缓存的透明化管理,开发者可以专注于业务逻辑而无需关心缓存的具体实现。在电商等高并发场景中,合理使用缓存可以显著提升系统性能。

2025-05-14 09:50:52 544

原创 Java面试必备:深入理解SpringBoot自动配置原理

SpringBoot的自动配置是其核心优势之一,通过深入理解其原理,开发者可以更高效地构建应用。希望本文能帮助你在面试中脱颖而出,同时也能在实际开发中灵活运用这一特性。

2025-05-14 09:46:57 384

原创 互联网大厂Java面试题:深入解析SpringCloud微服务架构中的服务注册与发现机制

通过本文的解析,我们深入了解了Nacos的服务注册与发现机制,以及其在高并发环境下的优化策略。掌握这些技术点,能够帮助你在互联网大厂的Java面试中脱颖而出。

2025-05-14 09:31:07 398

原创 Java面试必备:Spring Boot中如何实现多数据源配置?

通过动态数据源配置,可以灵活地在Spring Boot项目中操作多个数据库。掌握这一技术点,不仅能提升面试竞争力,还能在实际开发中应对复杂的业务需求。

2025-05-14 09:27:28 574

原创 order by的工作流程

在日常的业务开发中,使用到MySQL的order by对数据进行排序是一个很正常的行为,那么你知道order by是如何工作的嘛?

2024-04-15 13:57:09 1158

原创 count(?)为什么越来越慢?

在日常的业务开发中,汇总记录使用是常见用法,分页查询的时候都会用到,那么随着系统记录的数量越来越多,你有没有发现这条语句执行的也越来越慢了呢?

2024-04-12 14:25:54 808

原创 表数据删除了一半,表文件大小却不变?MySQL删除执行流程

本文讨论的就如题目所示,为什么在 MySQL 中,把表数据删除了一半,表文件大小却不变的?以下讨论前提都是使用InnoDB存储引擎,使用DELETE删除,并非。

2024-04-11 10:41:34 1941

原创 MySQL全局锁,表锁,行锁介绍

数据库锁设计的初衷是处理并发问题,作为多用户共享的资源,当出现并发访问的时候,数据库需要合理的控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构根据加锁的范围,MySQL 里的锁大概可以分为全局锁,表级锁,行锁三类

2024-04-09 16:51:26 1032

原创 MVCC多版本并发控制

可重复读的核心就是一致性读,而事务更新数据的时候,只能用当前读如果当前记录的行锁被其他事务占用的话,就需要进入锁等待在可重复读隔离级别下,只需要在事务开始的时候创建一致性视图,之后事务里的其他查询都共用这个一致性视图;在读提交隔离级别下,每一个语句执行前都会重新算出一个新的视图。

2024-04-02 16:16:13 412

原创 MySQL事务隔离级别

在不同的隔离级别下,数据库行为是不同的,Oracle数据库默认隔离级别是读已提交MySQL默认隔离级别是可重复读,如果存在 Oracle 迁移到 MySQL,为保证数据库隔离级别一致,需要将 MySQL 的隔离级别改成读已提交MySQL 配置的方式是,将启动参数的值设置成,可以使用来查看当前隔离级别正常情况下,为了保证效率,我们一般都会把事务隔离级别调整成读已提交,那么什么时候需要可重复读的场景呢?大多数在做数据校对的时候,不希望有其他事务来干扰数据,启动可重复读是很方便的。

2024-04-02 13:16:30 798

原创 SQL更新语句执行流程

redolog 是 InnoDB 存储引擎独有的,是保证事物持久性的重要机制。当 mysql 意外宕机或崩溃时,保证已提交的事物,确定持久化到磁盘的一种措施,防止数据丢失;

2024-03-28 16:14:54 534

原创 SQL查询执行流程

在 MySQL 执行一条查询语句的时候,比如,这篇文章来简要的描述SQL查询的执行流程可以把整体结构分成 Server 层和存储引擎层,Server 层包括。存储引擎层则有常见的 InnoDB,MyISAM,Menory 存储引擎,在 MySQL5.5 后默认使用 InnoDB 存储引擎。

2024-03-27 17:53:26 431

原创 Lucene轻量级搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封装

Lucene 是一个本地全文搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封装

2024-03-11 21:30:51 1362

原创 不得不做,敏感词过滤最佳实践

当然,不想造轮子的程序员不是好架构师,既然知道了这个算法的基本原理,那么我们就手动来实现一下这个功能吧。

2024-03-09 18:55:44 791

原创 史上最详细的Springboot发送各类邮件教程

*** 普通邮件发送* @param form 发送人* @param to 发送对象* @param subject 主题* @param content 内容*//*** Html邮件发送* @param form 发送人* @param to 发送对象* @param subject 主题* @param content 内容*//*** 邮件发送* @param name 发送人名称* @param form 发送人* @param to 发送对象。

2024-03-09 17:26:41 12941 1

原创 枚举字典最佳实践

枚举是 Java 开发中必不可少的一部分,工作中常用来定义单例工具类,常量,状态字典等,本文主要介绍枚举当做字典的最佳实践。

2024-03-06 17:19:41 1263 1

原创 本地缓存Caffeine

一个项目里可能需要缓存的数据有很多,比如用户信息,权限信息,菜单信息等等,我们需要给不同的场景分配不同的命名空间,并设置不同的过期时间/*** 用户缓存,缓存时间单位/秒*//*** 菜单缓存,缓存时间单位/秒*/;/*** 缓存名称*//*** 过期时间*/...

2023-11-15 11:04:24 866 1

原创 alibabaCloud整合Nacos注册中心和配置中心

如果要在特定范围内(⽐如某个应⽤上)覆盖某个共享dataId上的特定属性,请使⽤ extension-config。user-service-dev.yml(nacos上的当前环境配置) > user-service.yml(⽐如其他应⽤的数据库url,都是⼀个固定的url,使⽤。上的)> application.yml(本地的)数据的,但是这时候从nacos配置中心修改成。是特例,需要为该应⽤配置扩展属性来覆盖。,服务里是不会更新的,获取数据还是。的共享配置,但其中有⼀个应⽤。这样是可以正常获取到。

2023-10-30 15:44:40 224 1

原创 mybatis查询大批量数据

服务端数据准备完成后,进行数据传输,它允许应用程序在数据库服务器上打开一个游标并按需检索数据,而不是一次性获取整个结果集,类似客户端向服务端分批。公司里有很多需要跑批数据的场景,这些数据几十万到几千万不等,目前我们采用的是分页查询,但是分页查询有个深度分页问题,上百万的数据就会查询的很慢。客户端而言,数据每次读取都是从本机器的内核缓冲区,所以性能会更快一些。代表的客户端内核源源不断的输送数据,直到客户端请求 Socket 缓冲区满,这时的。问题,我们可以选择使用分页查询,这样就不会导致内存溢出问题了。

2023-09-14 15:34:18 1796 1

原创 mybatis缓存源码解析

xml配置:yml配置:xml配置:yml配置:创建sqlSession代理对象默认使用2. 创建代理对象方法是个关键方法,决定是创建一个新的还是复用旧的3. 创建或复用对象如果在同一个事务中,则使用旧的对象如果不在同一个事务中,则重新通过创建新的对象如果不在同一个事务下,那么每次查询都会创建一个新的,那就看不到一级缓存的效果了,所以想要看效果,需要开启事务,保证几次查询用的是同一个创建新的对象这个日志很明显4. 创建对象这里的就是二级缓存的开关,

2023-09-13 15:25:07 481 1

原创 vite环境配置mockjs

vite环境下配置mockjs

2023-06-20 16:41:20 551

原创 vue配置scss全局样式

vue中配置scss全局样式

2023-06-20 13:31:32 516

原创 封装svg通用组件

使用vite+ts+vue3环境,封装svg通用组件

2023-06-20 12:42:41 182

原创 Mybatis批量插入的四种方式

测试结果还是显而易见的,循环插入>批量插入>BatchType插入>JDBC批量插入

2023-06-13 19:21:43 42574 1

原创 SPI机制

SPI (Service Provider Interface),主要适用于扩展作用,SPI可以很灵活的让接口和实现分离,让api提供者只提供接口,第三方来实现,然后可以使用配置文件的方式来实现替换或者扩展,在框架中比较常见,提高框架的可扩展性。

2023-05-11 18:03:02 238

原创 接口安全处理

在我们日常开发中,存在一些接口是敏感且重要的,比如充值接口,如果在你调用充值接口的时候被别人抓包了,然后就可以修改充值的金额,本来充值10元可以改成充值10w,产生重大生产问题,再或者说被被人抓包了,别人可以不限制的调用该充值10元的接口,调用几万次,也是会导致重大问题,那么我们该如何保证接口安全呢?说到数据加密,我们不难想到使用HTTPS进行传输,HTTPS使用了RSA和AES加密的方式保证了数据传输中的安全问题,具体的HTTPS的加密原理,请看。,所以一般转账类安全性要求高的接口开发,都需要。

2023-04-05 17:40:56 1167 2

原创 HTTPS加密原理

HTTPS加密原理

2023-03-28 22:28:06 182

原创 服务OOM和CPU飙升排查

java服务OOM和CPU飙升排查

2023-03-01 12:42:54 385

原创 MDC实现微服务链路追踪

MDC实现微服务链路追踪

2023-02-27 19:07:19 1778 1

原创 Nacos服务跨分组调用

Nacos服务跨分组调用

2023-02-27 13:54:45 8141 5

原创 git基础操作

git基础操作

2023-02-19 19:58:04 52

原创 ThreadLocal父子间通信的四种解决方案

ThreadLocal 是存储在线程栈帧中的一块数据存储区域,其可以做到线程与线程之间的读写隔离。但是在我们的日常场景中,经常会出现父线程需要向子线程中传递消息,而 ThreadLocal 仅能在当前线程上进行数据缓存,这里就介绍4种父子间通信问题;

2023-02-19 19:27:52 1851

原创 xxl-job的入门教程

xxljob分布式定时任务入门教程

2023-02-17 22:04:41 4271 1

空空如也

空空如也

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

TA关注的人

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