- 博客(15)
- 收藏
- 关注
原创 QPS与TPS极速入门:核心区别与应用场景
比如:下单 1 次(1 个 TPS)需要:查库存→查地址→创建订单→扣余额👉 1 个事务 = 4 次接口请求(4 个 QPS)下单整个流程:扣库存 + 生成订单 + 写日志,算。用户刷页面、点按钮、查列表、查用户信息。1 秒 1000 个用户访问接口 →。1 秒 200 笔订单完成 →。每秒查询 / 请求数。
2026-04-16 10:16:55
76
原创 Maven依赖管理:dependencies与dependencyManagement核心区别
我要用这个库(直接拿过来用)。我规定所有模块用这个版本(只定规矩,不拿东西)。最佳实践多模块项目中,父 POM 用锁死所有版本子模块用按需引入且不写版本,确保全项目版本一致、无冲突。要不要我帮你整理一份常用框架(如 Spring Boot、MyBatis-Plus)的dependencyManagement 版本锁定模板,你可以直接复制到父 POM 中使用?
2026-04-15 14:11:08
287
原创 PO,VO,DTO
PO只对应数据库表只有 getter/setter放在entity或po包DTO接口的输入输出加验证注解放在dto包,可分requestresponseVO为前端定制可包含展示逻辑放在vo包转换原则Controller 入口:DTO → POController 出口:PO/BO → VOService 内部:尽量用 PO,复杂业务用 BO命名规范UserPOUserDTOUserVO或UserPO 对数据库,DTO 对接口,VO 对前端。从第一天就建立这个习惯,你的代码会清晰很多。
2026-02-14 06:28:38
375
原创 @EqualsAndHashCode
一定要加:数据库实体类必须正确实现equals()和hashCode()推荐配置:使用并只包含主键作用:确保集合操作、缓存、比较等场景的正确性性能:只比较主键,效率更高一致性:符合数据库记录比较的语义在你的 MyBatis-Plus 实体类中,建议都采用这种模式。这是企业开发中的最佳实践。
2026-02-14 06:01:25
163
原创 SQL与NoSQL
/ 对比表格@Data/*│ 对比维度 │ SQL数据库 │ NoSQL数据库 ││ 数据结构 │ 表格,行列结构 │ 文档、键值、列族、图 ││ 数据模型 │ 关系模型,严格Schema │ 灵活Schema或无Schema ││ 查询语言 │ SQL │ 多种查询语言 ││ 事务支持 │ ACID事务 │ 部分支持,最终一致性 ││ 扩展性 │ 垂直扩展 │ 水平扩展 ││ 性能 │ 复杂查询优 │ 简单读写优 │。
2026-02-05 14:51:29
110
原创 缓存击穿 vs 缓存雪崩 vs 缓存穿透
场景:一个热点key突然失效,大量请求同时访问数据库│ 时间线: ││ t1: 热点key缓存过期 ││ t2: 请求1 查缓存 → 未命中 → 查询数据库 ││ t3: 请求2 查缓存 → 未命中 → 查询数据库 (并发) ││ t4: 请求N 查缓存 → 未命中 → 查询数据库 ││ ... 瞬间大量请求打到数据库,造成压力峰值 │场景1:大量key在同一时间过期│ 时间线: ││ t1: 00:00:00 大量key同时过期 │。
2026-02-05 04:08:28
280
原创 Spring容器启动源码解析
Override// 1. 准备刷新// 2. 获取新的 BeanFactory// 3. 准备 BeanFactorytry {// 4. 后置处理 BeanFactory// 5. 调用 BeanFactoryPostProcessor// 6. 注册 BeanPostProcessor// 7. 初始化消息源// 8. 初始化事件广播器// 9. 初始化特殊 Bean// 10. 注册监听器// 11. 实例化所有单例 Bean。
2026-02-01 15:24:24
456
原创 动态代理 (Dynamic Proxy)
灵活性:运行时动态生成代理,无需为每个类编写代理代码解耦:业务逻辑与横切关注点分离可维护性:集中管理代理逻辑,便于修改和扩展AOP支持:Spring AOP、事务管理等的基础适用场景:日志记录性能监控事务管理安全控制缓存处理重试机制熔断降级异步调用这是现代Java企业级开发的核心技术之一,特别是Spring框架的基础。
2026-01-30 22:49:21
143
原创 获取JoinPoint信息方法
基础信息对象信息:getTarget(目标对象)、getThis(代理对象)签名信息方法信息:Method对象、参数类型、返回类型、修饰符参数信息:getArgs、参数名称、参数类型注解信息:方法注解、类注解、参数注解源位置Spring信息:Bean类型、代理类型实用技巧使用缓存提高性能合理序列化复杂对象注意线程安全性合理使用工具类封装根据业务需求选择性获取信息。
2026-01-30 22:49:05
90
原创 静态代理(Static Proxy)
静态代理是一种在编译期确定代理关系的设计模式,通过代理类控制对真实对象的访问。它包含三个角色:抽象主题(Subject)、真实主题(RealSubject)和代理(Proxy)。静态代理可实现多种功能增强,包括日志记录、权限控制、缓存等常见场景,以及远程代理、虚拟代理等特殊应用。其优点是职责清晰、扩展性强、访问可控,但存在代码冗余、维护困难等缺点。相比动态代理,静态代理更适用于接口稳定、代理逻辑简单的场景,虽然灵活性较低但性能更优。在实际开发中,静态代理为对象访问控制提供了基础实现方案。
2026-01-29 16:02:01
308
原创 依赖注入的方法
Qualifier// 使用自定义限定符@Component@Autowired@Autowired注入方式优点缺点推荐度构造器注入1. 不可变性2. 依赖完整3. 易于测试4. 避免循环依赖参数多时较冗长⭐⭐⭐⭐⭐Setter注入1. 可选依赖2. 解决循环依赖1. 可变性2. 可能依赖不全⭐⭐⭐字段注入1. 代码简洁2. 易于书写1. 不可变2. 难以测试3. 隐藏依赖⭐方法注入1. 灵活性高。
2026-01-29 15:55:37
393
原创 @Profile
Conditional(ProfileCondition.class) // 基于Profile的条件注解// 支持的Profile列表@Profile环境隔离:不同环境使用不同配置条件化Bean:根据Profile创建不同的Bean配置管理:组织多环境配置文件部署适配:适应不同部署环境使用建议明确定义Profile命名规范合理分组相关Profile避免Profile冲突做好Profile验证使用Profile表达式增强灵活性通过合理使用@Profile,可以实现代码的环境无关性。
2026-01-28 18:54:08
397
原创 ResourceUtils
/ 资源协议常量// 静态工具方法主要功能统一资源访问:处理各种协议的资源(classpath:, file:, jar: 等)URL转换:将资源位置字符串转换为 URL 或 File协议判断:判断资源类型(文件、Jar包、War包等)使用场景加载配置文件读取模板文件访问静态资源处理证书和密钥文件动态加载资源最佳实践始终使用正确的前缀(classpath:, file: 等)配合Spring的Resource接口使用考虑资源缓存以提高性能。
2026-01-28 18:39:51
184
原创 IDEA自带数据库导入SQL文件
起因是在看黑马程序员苍穹外卖网课,里面的数据库环境搭载环节,需要我们把事先准备好的sql脚步注入到mysql数据库里,老师用的是mysql自带的图形化界面,而我用的是idea自带的,操作不太一样。最后才发现这么简单,就是选择sql脚步(脚本的英文就是scripts)
2025-10-15 19:35:16
273
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅