java插件
文章平均质量分 75
研发过程中,各类Java中间件
iloveoverfly
年轻人不讲code德
展开
-
如何使用validation类似于AOP切面的形式抽象参数的校验逻辑?
开发中,通常操作逻辑都是先进性数据校验,校验完毕以后才进行真正的逻辑处理。通常情况下,可以使用javax.validation校验注解,类似于AOP面向切面的实现数据的校验。在springboot中引入spring-boot-starter-web依赖,就会自动引入hibernate-validator。如图:内置注解使用javax.validation校验参数,一般在controller层,对方法参数进行校验。常用的注解包括:@NotNull,值不能为空,@Positive,数字为..原创 2020-11-30 17:03:28 · 4008 阅读 · 1 评论 -
什么是分布式锁?Zookeeper和Redis是如何实现的?
为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。具体定义,实现和使用场景,请参详什么是分布式锁,该篇文章强力推荐,写得很透彻。着重强调下,分布式锁具体的条件和重要的实现逻辑。在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行常见的情景,例如定时任务在多个服务运行。同一个用户对同一...原创 2020-01-19 22:02:56 · 5539 阅读 · 0 评论 -
Springboot基于AbstractRoutingDataSource实现多数据源的动态切换
为了提高数据库的查询效率,利用数据库主从机制,写走主库,查询走从库。如果只是实现一主一从类似简单的主从模式,可以继承AbstractRoutingDataSource实现读写分离。而不需使用mycat,sharedingJDBC等数据库插件。分析AbstractRoutingDataSource可知,defaultTargetDataSource,表示默认的数据源;targetDataSour...原创 2020-01-17 20:48:11 · 5058 阅读 · 0 评论 -
CAS+失败重试方式实现数据库的原子性更新
在数据库修改单条数据时,常用的方式是select for update的悲观锁机制,如果锁竞争比较大,没有获得锁的操作会阻塞。使用CAS乐观锁的方式,可以大大提高并发性。例如,在分布式服务中,多个用户并发下单操作前会先扣减库存时,网上盗图,服务1,服务2和服务3为不同机器上的库存服务。库存扣减操作流程如下:使用cas方式的乐观锁,当库存还剩3个,3个用户同时下单,服务同时扣减库存,可以并发...原创 2020-01-04 17:00:15 · 4259 阅读 · 0 评论 -
基于mybatis 类型处理器typeHandlers实现数据库数据到业务对象的转换
在开发中,遇到需要把数据库中存储的json格式的数据转换为java对象中map集合或者list集合你是怎么处理?把数据库中的电话号码,身份证被对称加密的数据解密出来你是怎么处理的?在前后端的时间戳转换为数据库的date日期格式时,你是怎么处理的?在开发中,主流使用mybatis作为orm框架。从数据库数据库到项目业务对象的数据获取,mybatis提供了typeHandlers插件做转换。在修改...原创 2020-01-10 15:39:16 · 371 阅读 · 0 评论