- 博客(14)
- 收藏
- 关注
原创 Java中PO、BO、VO、DTO、POJO的区别与使用场景
在Java开发中,分层架构设计是保证系统可维护性和扩展性的关键。不同的对象类型在不同层次中扮演着特定角色,理解PO、BO、VO、DTO、POJO等概念的区别和使用场景,对于设计清晰的系统架构至关重要。
2025-06-13 14:30:39
652
原创 Spring Boot配置中心敏感数据加密解决方案
在微服务架构中,配置中心往往存储着数据库密码、API密钥等敏感信息。本文介绍两种Spring Boot环境下的配置加密方案。1)使用jasypt-spring-boot-starter方案2)基于EnvironmentPostProcessor自定义加解密方案
2025-05-16 17:31:25
440
原创 使用注解实现数据库字段加解密方案
*** 标识要加解密的对象* 该注解的值会影响 SensitiveFiled 的作用*/@Inherited/*** 是否写入加密* @return 默认 true*//*** 读取的时候解密* @return 默认 false*//*** 标识要加解密的字段* 整体需要依赖 SensitiveObject 的取值情况*/@Inherited/*** 是否写入加密* @return 默认 true*//*** 读取的时候解密。
2025-05-16 16:29:41
265
原创 基于Redisson的Lock4j分布式锁
Component@Override// 示例:组合方法签名+参数哈希@Component@Override// 可记录告警日志或发送通知log.warn("关键操作锁获取失败:key={}, timeout={}ms, retries={}",// 抛出业务异常throw new ServiceException("系统资源繁忙,请稍后重试");
2025-04-25 19:23:45
375
原创 采用redis+caffeine设计缓存
在高性能的服务架构设计中,缓存是一个不可或缺的环节。在实际的项目中,我们通常会将一些热点数据存储到Redis或Memcached 这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。随着不断的发展,这一架构也产生了改进,在一些场景下可能单纯使用Redis类的远程缓存已经不够了,还需要进一步配合本地缓存使用,例如Guava cache或Caffeine,从而再次提升程序的响应速度与服务性能。
2025-04-18 18:55:05
142
原创 Spring状态机模式
*** 订单状态枚举* NEW -> 新建订单(初始状态)* PAID -> 已支付* DELIVERED -> 已发货* COMPLETED -> 已完成* CANCELLED -> 已取消* 订单事件枚举* PAY -> 支付操作* DELIVER -> 发货操作* RECEIVE -> 确认收货* CANCEL -> 取消订单// 订单状态枚举NEW, // 新建PAY_PROCESSING, // 支付处理中PAID, // 已支付。
2025-04-11 09:29:16
446
原创 告别if-else:Java中优雅的条件处理策略
在Java开发中,过度使用if-else语句会导致代码可读性差、维护成本高的问题。本文将介绍几种替代if-else的优雅方案,让你的代码更加简洁高效。
2025-04-03 09:41:58
315
原创 JVM对象创建
1.类加载new对象或对象克隆或序列化时判断是否加载过该对象,如果没有加载过,尝试加载2.分配空间类加载成功后,要为对象分配内存空间来存储这个对象,加载完毕后可以确定当前对象的大小...
2022-04-23 20:10:56
283
原创 自定义类加载器|打破JVM双亲委派机制
上一章什么是JVM双亲委派机制本章简单说明一下怎么去打破jvm的双亲委派机制jvm的双亲委派机制主要核心方法有两个1: loadClass决定有哪个类加载器去加载文件,之后调用findClass2: findClass扫描包,解析class知道核心方法后,从这两个方法入手首先这两个方法都是在ClassLoader这个文件中并且都是可以重写的那么就可以继承ClassLoader这个类,重写其中的两个方法代码如下:package com.example.demo.launcher;
2022-04-16 21:28:12
638
原创 JVM双亲委派机制
运行java程序时,首先会通过jvm.dll创建出c++实现的java虚拟机,在C++中创建bootstrap类加载器,之后会调用java的Launcher类的getLauncher初始化方法创建出ext类加载器和app类加载器。源码:当类加载器初始化完毕之后,就可以加载类了。加载类的核心方法loadClass就是双亲委派机制的核心代码loadClass方法加载过程1、findLoadedClass判断当前类有没有加载过2、判断parent父加载器是否不为空,如果不为空,调用父加载器的lo.
2022-04-16 18:14:50
511
原创 JVM类加载过程
类加载过程类加载过程有如下几步:加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载加载:在硬盘上找到并且读取字节码文件,也就是我们的java类,使用到类的时候会进行加载,比如说调用类的main方法或者new出来的对象,在加载阶段会在内存里面生成一个class文件,jvm在启动后调用的就是生成的class文件。验证:校验class文件是否正确。准备:给类的静态变量分配内存,赋予初始值。比如:publ
2021-02-04 15:34:05
382
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人