- 博客(35)
- 收藏
- 关注
原创 使用注解封装查询相关的功能
在query对象中使用WordUtils工具类——对字符串命名方式做处理,具体代码见下文query对象中定义了一个tuple抽象对象——这个类是创建一个QueryParam注解类@Repeatable(QueryParams.class)作用允许在一个方法上同一个注解多次使用创建一个QueryParams包装QueryParam创建QueryConverterAspect类,添加@Aspect和@Component。
2025-09-17 21:02:00
675
原创 spring、springMVC、springboot
Spring框架生态解析(150字摘要) Spring是Java开发的核心框架,提供IoC容器和AOP等基础功能。其子模块SpringMVC专司Web层开发,处理HTTP请求响应。SpringBoot作为上层封装,通过自动配置和starter机制简化了Spring应用开发。三者呈递进关系:Spring是地基(基础容器),SpringMVC处理Web层(Servlet实现),SpringBoot则是开发加速器(内嵌容器+自动配置)。典型场景中,SpringBoot整合前两者,开发者仅需@SpringBootA
2025-07-03 14:27:07
698
原创 @Transaction事务注解
组件作用标记事务入口AOP 拦截事务逻辑解析事务属性控制事务行为启动 AOP 事务管理**事务失效 80% 是因为“代理机制未生效”,20% 是因为“异常未被识别”或“配置不当”。**理解 Spring AOP 是关键。
2025-06-30 14:38:26
910
原创 Bean的初始化和实例化的区别
摘要:Spring Bean的生命周期分为实例化和初始化两个关键阶段。实例化是指通过构造函数创建对象的过程;初始化则包括依赖注入、执行@PostConstruct方法、实现InitializingBean接口的afterPropertiesSet()等操作,使Bean达到可用状态。BeanPostProcessor可以在初始化前后对Bean进行增强处理。合理使用@PostConstruct、afterPropertiesSet等方法进行属性修改,其中@PostConstruct是最安全常用的初始化点。完整生
2025-06-26 15:33:36
472
原创 不同隔离级别增删改语句默认加锁种类
本文系统梳理了数据库事务隔离级别与锁机制的关系。主要内容包括:1)区分读锁(共享锁S)和写锁(排他锁X);2)分析不同隔离级别下查询和修改操作的默认加锁行为,指出Serializable级别会为普通SELECT加S锁;3)对比快照读(MVCC无锁)与当前读(FOR UPDATE加锁)的区别;4)强调所有修改操作都会加X锁,UPDATE/DELETE还可能加间隙锁。通过表格直观展示了各隔离级别下的锁行为差异,帮助理解数据库并发控制机制。
2025-06-16 11:08:59
355
原创 临时表和子查询的区别
SQL查询优化对比:临时表(A)与子查询(B)两种写法在逻辑上等效,但执行层面存在差异。临时表适用于复杂查询和大数据场景,具有可复用性、分步调试和可控性优势;子查询则更简洁,适合简单的一次性查询。MySQL 8.0+优化器缩小了性能差距。建议根据查询复杂度、数据量和复用需求选择合适方案,复杂场景优先考虑临时表,简单查询可使用子查询。
2025-06-11 16:03:56
442
原创 MySQL索引下推
索引下推(ICP)是MySQL 5.6+引入的查询优化技术,通过将WHERE条件下推到存储引擎层进行过滤,减少不必要的回表操作。当WHERE条件涉及多列索引且部分条件无法直接使用索引时,ICP允许引擎先过滤数据再回表,显著提升性能。在EXPLAIN结果中,"Using index condition"即表示使用了ICP。该技术适用于二级索引查询,要求条件涉及索引的多列,能有效减少数据访问量,优化查询效率。
2025-06-11 15:22:33
396
原创 组合索引、聚簇索引、覆盖索引的区别
组合索引是对多个列联合建立的一个索引。这是一个对两列的联合索引。聚簇索引是指表的数据行实际存储在索引的叶子节点中。在 MySQL 的 InnoDB 引擎中,主键就是聚簇索引。覆盖索引是指一个查询所需要的所有列都可以从一个索引中直接获取到,不需要回表查询主键。特性组合索引聚簇索引覆盖索引定义多个列组成一个索引数据按主键顺序存储查询列全部包含在索引中是否存数据不存原始行数据,只存索引列叶子节点存放整行数据索引中已包含查询所需所有列是否唯一可唯一也可非唯一通常是主键(唯一)
2025-06-11 15:17:16
1132
原创 docker迁移
内容方法镜像数据卷tar打包配置文件.cnf.conf同步过去容器参数使用保留配置如果你有用 Docker Compose,我可以帮你转换为跨服务器部署方案。如果要用更优的方式(如远程备份 + 数据库导入),也可以告诉我。是否需要?
2025-06-09 17:43:03
740
原创 RPC和openFeign的区别
OpenFeign 是基于 HTTP 的远程调用工具(属于 REST 风格),而 RPC 是一种更底层、更高效的远程调用机制,可以使用二进制协议进行通信。你关心的点推荐选择性能优先,高频调用选择 Dubbo、gRPC 等 RPC 框架易用性、可调试使用 OpenFeign服务对外暴露 APIHTTP/REST 更合适多语言交互使用 gRPC、Thrift与 Spring Cloud 深度集成OpenFeign 是首选如果你是在 Java 微服务项目中使用 Spring Cloud,
2025-06-09 17:09:15
481
原创 函数式接口@FunctionalInterface
只包含一个抽象方法的接口(可以有默认方法和静态方法),是 Java 8 引入以支持 Lambda 表达式的关键点。
2025-06-09 17:06:44
335
原创 MySQL、SQL Server、Oracle、PostgreSQL 等数据库锁的切换情况、条件、机制和注意事项
本文对比分析了四种主流数据库的锁机制: 1️⃣ MySQL:支持行锁和表锁,未命中索引时会从行锁退化为表锁,属于被迫降级而非自由切换 2️⃣ SQLServer:唯一支持行锁/页锁/表锁自动升级的数据库,根据访问量阈值或内存压力动态调整锁粒度 3️⃣ Oracle:仅支持行锁和表锁,但行锁不可升级,需显式指定表锁,采用乐观并发+行锁策略 4️⃣ PostgreSQL:基于MVCC实现行锁,SELECT不阻塞,锁类型由操作决定且不会自动切换 关键差异:自动锁升级仅SQLServer支持,MySQL是退化,Or
2025-05-29 15:09:52
774
原创 springboot整合mycat
该文件为全局自增主键配置对于table定义了autoIncrement=“true” primaryKey="id"的表,需要配置全局自增序号(注意全大写)。,类型为String,值格式为dataId-分表ID,dataId用于分组ID计算,为数据量提供扩展性;实现calculateRange范围分片DN计算方法(参数是burst值)在类中定义volume、step、mod三个变量,并提供set方法。实现calculate 等值分片DN计算方法(参数是burst值)Volume是每组分片的数据容量。
2023-05-15 16:28:35
1984
原创 Mysql8的特性
mysql为了避免无限递归默认递归次数为1000,可以通过设置cte_max_recursion_depth参数增加递归深度,还可以通过max_execution_time限制执行时间,超过此时间也会终止递归操作。以上是我们研究了树型表的查询方法,通过递归的方式查询课程分类比较灵活,因为它可以不限制层级。如果树的层级固定可以使用表的自链接去查询,比如:我们只查询两级课程分类,可以用下边的SQL。初始节点为1-1-1,通过递归找到它的父级节点,父级节点包括所有级别的节点。下边我们使用递归实现课程分类的查询。
2023-05-14 16:56:17
402
原创 购物车的实现
用户添加购物车,只需要将要加入购物车的商品存入到Redis中即可。一个用户可以将多件商品加入购物车,存储到Redis中的数据可以采用Hash类型。我们发现个问题,就是用户将商品加入购物车,无论数量是正负,都会执行添加购物车,如果数量
2023-03-10 17:32:05
2250
原创 Netty
该方法会首先切换 EventLoopGroup 到关闭状态从而拒绝新的任务的加入,然后在任务队列的任务都处理完成后,停止线程的运行。ps:简单讲,netty是一个基于协议,支持快速构建客户端、服务端,用于网络io交互的异步非阻塞、高性能、可维护框架。netty 的 Future 继承自 jdk 的 Future,而 Promise 又对 netty Future 进行了扩展。netty 中的 Future 与 jdk 中的 Future 同名,但是是两个接口。ch调用write得流程。
2023-03-04 09:31:16
198
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2