- 博客(7)
- 收藏
- 关注
原创 CompletionService的使用和原理解析
最近在工作中遇到一个定时去抽取数据库表的元数据信息,然后做一些其他的业务的处理。显然通过jdbc连接数据库获取表的元数据信息是一个比较耗时的过程,我们后面的逻辑又需要用到这些数据,第一反应是用Future或者FutureTask来处理耗时的流程,如果只是处理单表的元素据获取Future或者FutureTask的时候比较方便,但是我们现在需要处理一批表的元数据获取,我们希望能够批量提交任务,然后在所...
2019-08-07 16:42:29 501
原创 ZOOKEEPER核心原理解析
ZAB协议简介zookeeper并没有采用完全的Paxos算法,而是采用了一种称为Zookeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)。ZAB协议是专门为Zookeeper设计的一种崩溃恢复的原子协议。Zookeeper中使用leader节点来处理集群中所有的事务请求,并采用ZAB的原子广播协议将数据同步到所有的follower节点中,完成数据的同步...
2019-07-31 19:01:53 199
原创 使用CGLIB和Java动态代理实现spring的事务控制
使用CGLIB和Java动态代理实现spring的事务控制spring事务控制分析DatasourceTransactionUtils数据源和事务控制ProxyStrategy策略模式接口JdkTransactionProxy,Java动态代理实现事务控制CglibTransactionProxy,CGLIG动态代理实现事务控制ProxyContextUserService接口UserServic...
2019-05-13 11:37:26 1127
原创 Java实现LRU算法(线程安全)
Java实现LRU算法(线程安全)LRU原理算法实现的思路若干疑问解答1、有了链表为什么还需压Map?2、为什么需要header和tailer节点后记LRU原理LRU缓存的思想:1、固定缓存大小,需要给缓存分配一个固定的大小。2、每次读取缓存都会改变缓存的使用时间,将缓存的存在时间重新刷新。3、需要在缓存满了后,将最近最久未使用的缓存删除,再添加最新的缓存。算法实现的思路使用Hash...
2019-04-18 11:21:38 3328 6
原创 Java动态代理监控JDBC连接和执行SQL的脚本参数
前言Java后他开发无法避免的需要和数据库打交道,我们希望能够能够再数据库中打印每一次JDBC的连接URL信息,执行的SQL脚本和传递的参数信息,本文仅仅实现了一个简单的Demo,算是简单的一个思路。JDBC的执行流程Java访问数据库的框架有很多,类似Mybatis,JPA等,熟悉Java开发的童鞋应该都知道不论使用何种框架,都无法避免的需要mysql-connector-java这个ja...
2019-01-14 15:05:13 1636
原创 分布式学习笔记-基于lua实现Redis分布式锁
redis分布式锁redis分布式锁的底层原理redis分布式锁的底层原理我们先通过一张图来对Redis分布式锁有一个只管的感受加锁的机制我们先来看上面的流程图,现在客户端1需要加锁,通过jedis访问redis资源,然后发送lua脚本到redis上,通过执行lua脚本的返回值来确定是否加锁成功,如果没有加锁成功那么客户端需要通过循环不断尝试加锁直到加锁成功为止。2.为什么选择lua...
2019-01-13 16:12:52 508
原创 单机条件下断电的情况下提交到线程池的任务该怎么办?
本文主要记录一下自己对于这个问题的想法和思路,由于时间匆忙有很多不完善的地方欢迎指正。一般情况下,这样的场景线程的任务肯定全部没有了,程序重启的时候这些任务也没有办法重做了。因此我们需要借助其他的方式来重做这些丢失的任务。大体的思路是日志+定时器的方式。处理的大体流程: 1) 提交线程池之前,记录数据库日志,设置标志位1(初始化状态) 2) 进入线程执行的时候,设置该日志的标志位2(运行中...
2018-11-13 20:35:51 1098
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人