- 博客(10)
- 收藏
- 关注
原创 SpringBoot初始化接口之CommandLineRunner
场景:通常我们在应用程序启动时执行一些特定的逻辑。如:数据初始化......。但是这些初始化代码在整个应用生命周期内只会执行一次。如果符合你的需求那么就可以在你的实现类里去实现CommandLineRunner接口。
2024-12-03 18:52:06
573
3
原创 IDEA报错:java: OutOfMemoryError: insufficient memory
当前报错场景在于:编译项目时install或者启动项目时报错:内存不足。
2024-11-21 16:32:55
1486
原创 redis雪崩解决方案
RandomUtils.nextInt(0, 10) * 60):这边是生成一个随机时间,作用就是为了防止同一时间大量key的过期去访问数据库。CacheKeyEnum.PRODUCT_DETAIL.getExpire():这边是我们枚举里面自定义的expire设置的过期时间为一天。CacheKeyEnum.PRODUCT_DETAIL.getKey():这边是我们枚举里面自定义的key。id:可以传业务ID来作redis的key,例如:订单ID(在我们业务中是唯一的)
2024-09-25 14:28:50
736
原创 Java实现埋点(自定义注解 + AOP + @Async)
埋点业务尽可能是异步解耦,即对主流程业务无影响。无埋点(全埋点):本篇文章就是采用的无埋点的设计,这个设计方案不会修改原始业务代码,采用自定义注解 + AOP + @Async进行实现。· 可视化埋点:这个就是前端的活了,在页面上设计点击事件,比如:按钮、页面滚动......(我一个java后端不是很了解,大家可以上网搜一下)代码埋点:每一个埋点都需要手动去添加代码,要是更新埋点方案,可能都需要改代码,技术人员的累趴下(成本比较大,而且代码容易堆积)代码埋点、可视化埋点、无埋点(全埋点)
2024-09-14 10:53:11
1612
2
原创 通用数据权限设计与实现(mybatis拦截器 + spring aop)
哈喽~ 大家好,今天给大家分享一下平时在工作当中遇到的数据权限问题。在我们的业务系统中,除了菜单/功能权限外,还有一个非常重要的功能,就是数据权限。数据及权限管理,大多数采用的方案还是硬编码的方式,也就是将这种逻辑以if/else等方式与业务代码耦合在一起,按需做数据权限划分。本文这里采用的是另一种比硬编码相对优雅的方式:mybatis拦截器+spring aop。
2024-06-28 11:03:28
1539
1
原创 docker安装portainer(可视化工具)
Portainer主张让容器管理变得更加简单,所以它的界面更加人性化,操作不复杂,即便非专业性非常强的人员,也能够很快掌握基本的管理能力。Portainer是一款开源的容器管理平台,提供了一个易于使用的Web UI界面,可用于管理和监控容器和集群。
2024-06-28 10:17:20
1411
原创 @Autowired 注解与 @Resource 注解有什么区别?
Autowired 注解默认按照 Bean 类型 (byType) 装配依赖的 Bean,默认的情况下,它要求依赖的对象必须存在,默认是不允许 null 值的,如果想要设置允许 null 值,可以设置它的 required 属性为 false。@Autowired 注解是由 Spring 框架提供,而 @Resource 注解则是 javax.annotation.Resource 提供,也就是 J2EE 的标准,但是 Spring 支持该注解注入 Bean。
2024-06-28 09:17:02
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人