- 博客(14)
- 资源 (16)
- 收藏
- 关注
原创 ImportBeanDefinitionRegistrar+SPI简化Spring开发
相信使用Spring的小伙伴会在开发中遇到配置各式各样的bean的情况,例如配置数据库,配置redis,配置AOP等。springboot已经很大程度上帮我们简化了配置,但实际业务开发中是否有其无法满足的地方呢?或者在传统spring项目中如何简化配置?如一些定制化的功能,再如去xml化。本文尝试使用ImportBeanDefinitionRegistrar+SPI的方式来实现。后文会有更多的应用...
2020-03-21 20:54:40 346
原创 xxl-job调度效率与分布式锁等待问题
xxl-job原生的调度处理,存在单线程以及数据库排它锁的局限与缺陷,在大量、高频任务调度下会有明显的效率问题,容易引发任务调度错失或调度不均等问题,即使使用集群化多实例部署也无法规避。本文尝试通过调度分片与分布式锁改造两方面探讨调度效率提升问题。
2023-03-11 14:46:27 2277
原创 xxl-job扩展基于dubbo调用的JobHandler
针对以dubbo为RPC通信组件的微服务架构,以xxl-job实现无侵入性的调度中心组件,分离调度与业务
2023-03-10 23:34:10 1072
原创 windows下PowerShell别名使用
个人在windows下习惯用PowerShell替代CMD作为命令行工具。如何自定义命令来提高生产力呢?linux中有alias工具,如alias grep='grep --color'alias tailf='tail -f'alias duh='du -lah --max-depth=1'或者在profile中定义函数function duf(){ du -lah --max-depth==1}PowerShell中同样支持alias工具。使用参考PowerShell设置命令
2020-08-30 19:01:51 875
原创 Spring自动配置Redis
原理参考ImportBeanDefinitionRegistrar+SPI简化Spring开发本文描述通过注解方式在spring中自动配置RedisTemplate,并支持启用注解方式的redis cache首先约定redis的配置文件如下:redis: host: 127.0.0.1 port: 6379 password: passwd db: 0 timeout: ...
2020-03-22 17:15:51 372
原创 Spring自定义注解定义AOP配置去xml
原理参考ImportBeanDefinitionRegistrar+SPI简化Spring开发spring中AOP使用非常广泛,引入方式一般分为两种,注解方式或xml方式。直接方式使用@AspectJ这样的注解,其缺点是需要手写切面实现业务逻辑,不太方便用第三方包做切面。xml方式打破了注解方式的局限,配置起来较为灵活,但xml毕竟偏向于配置,有一定的臃肿性。换句话说,在去xml的大趋势下,如何...
2020-03-22 16:46:19 299
原创 基于SpringAOP写个简单的Redis缓存
缓存应用场景非常多,Spring框架中对缓存的抽象与支持已经非常全面。有时候本地缓存是不够的,需要分布式缓存,本文尝试基于Spring+Redis实现一个简单的分布式缓存。spring-data-redis中已经有基于Redis的缓存实现,感兴趣的小伙伴可自行研究。网上也有一些优秀的开源方案,如阿里的jetcache可供参考。大部分方案在redis序列化时采用的是JDK序列化方式,这种方式的问题...
2020-03-22 15:58:44 142
原创 Spring自动装配guava EventBus
原理参考ImportBeanDefinitionRegistrar+SPI简化Spring开发guava EventBus是一个进程内事件总线,可以看做是消息队列的进程内版本,用作进程内解耦、通知、异步处理等。网上有很多对其介绍的。com.alpha.coding.common.event这个package下是对guava EventBus的二次封装,方便在spring框架下使用,结合spri...
2020-03-21 23:20:44 564
原创 Spring动态从配置文件定义bean
原理参考ImportBeanDefinitionRegistrar+SPI简化Spring开发有时候需要从配置文件(.yml或.json)反序列化成Object并注入到context中,例如我喜欢用一个yaml文件描述caffeine缓存定义:- {cacheName: s30, spec: "initialCapacity=100,maximumSize=500,expireAfterWri...
2020-03-21 22:22:48 502
原创 Spring动态注入外部文件到classpath
原理参考**ImportBeanDefinitionRegistrar+SPI简化Spring开发**一个比较典型的场景是配置文件的动态注入,配置文件与代码是分离的,常用的解决办法是配置中心,如Apollo、disconf、Eureka等。如果不满足配置中心的应用条件我们该如何解决呢?下面是简单的实现首先定义注入外部文件的注解:@Retention(RetentionPolicy.RUNT...
2020-03-21 21:42:05 568
原创 定制Element-UI 图片上传组件
业务中有需要使用上传图片的场景,于是打算写一个通用的组件。上传时会带额外的参数path字段,用于告诉后端是哪个模块下,比如logo、头像等。话不多说,直接撸代码吧<template> <div> <el-upload class="upload-demo" action="1122" list-type="pict...
2020-02-28 18:46:32 148
原创 Spring fastjson跨时区问题
相信有的小伙伴有这样的业务场景,服务端时区跟客户端(如浏览器)不一致,接口处理时需要转换掉。场景一:服务端查询出来的时间是UTC时间,客户端在中国,需要展示为东八区时间;场景二:客户端在中国,时间是东八区时间,服务端使用的UTC时间,存入时需要转换客户端时间为UTC时间。我们知道SpringMVC下,经常会配置HttpMessageConverter进行消息转换,如常用的ByteArrayH...
2020-02-28 17:59:33 5550
原创 Spring AOP失效:this引用问题处理
AOP技术使用非常广泛,在Spring体系中随处可见,如缓存、事务等。在Spring的bean中使用this引用,可能会导致AOP失效。简单例子:@Slf4j@Componentpublic class SysUserCache { @Autowired private SysUserMapper sysUserMapper; @Cacheable(cacheN...
2020-02-28 16:33:30 1931
原创 临时代码
#include #ifndef _Sort_H #define _Sort_H class Sort { public: Sort() = default; //--------------- void printArray(const int*, const int); //----------------- vo
2014-08-27 22:16:48 351
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人