摘要: ReentrantLock在进行实例化时,可以通过构造函数的参数选择是否使用公平锁FairSync或者非公平锁NonfairSync,两者的区别比较简单,如果是公平锁则新来的线程会先检测同步队列中是否有等待的线程,如果有,则追加到同步队列尾,锁竞争过程强调的是有序进行,当然代价比较明显,线程切换会造 阅读全文
posted @ 2018-04-13 16:42 liamyu 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 看到公司有个部门提出了这个问题,补个粗略的解决方案。。。 1.编写拦截器 提供开启规则的注解: 定义两种行为: 拦截器的配置: Java代码使用; 页面代码: 其实该方案也可以验证提交数据是否有效,当然通常是把token放到只读的缓存了。。 伪代码。。没测试呢。。。 阅读全文
posted @ 2018-03-09 10:53 liamyu 阅读(2705) 评论(0) 推荐(0) 编辑
摘要: 清理邮件的时候发现之前看的一篇关于redis分布式锁实现的文章有人回复- -当时随意扫了眼文章,为了防止发生死锁,思路是使用setnx设置value为本地时间,然后获取锁失败时读取value进行时间比对。。然后我回复了下。。多台应用服务器存在时间不同步的问题。。 其实使用setnx时设置下redis 阅读全文
posted @ 2018-02-23 16:52 liamyu 阅读(5916) 评论(1) 推荐(0) 编辑
摘要: 1.编写sh脚本,便于服务器上管理工程: 文件中包含多个站位符,可以借助spring filter打包时进行填充,如将sh起名为app.sh放置于maven格式项目的src/main/bin目录下则在pom文件中可添加如下配置,如: 如此将包打好后扔于服务器上,就很方便了: 当然借助jenkens的 阅读全文
posted @ 2018-02-09 11:52 liamyu 阅读(1019) 评论(0) 推荐(0) 编辑
摘要: 倒计数锁存器(CountDown Latch)是异常性障碍,允许一个或多个线程等待一个或者多个其他线程来做某些事情。 对于间歇式的定时,始终应该优先使用System.nanoTime()而不是System.currentTimeMills,前者更加准确更加精确并且不受系统的实时时钟的调整影响。 三个 阅读全文
posted @ 2018-02-09 11:49 liamyu 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 在进行spring进行开发时,当某个接口有多种实现方式并且我们只想让一种生效时,比如声明如下一个接口和两个实现: 我们通常使用xml为某个接口配置实现类; 当然后来我们习惯使用注解的方式了,比如 当然也可以通过@Component进行扫描注入,这也是为了去除java令人发指的诸多xml配置的一项进步 阅读全文
posted @ 2017-12-16 22:42 liamyu 阅读(2261) 评论(0) 推荐(0) 编辑
摘要: Spring Cloud的负载均衡策略可以通过配置Ribbon搞定,也就是注入实现com.netflix.loadbalancer.IRule的类,当前包含的策略包括 1.RandomRule 随机策略 在while循环内,如果服务地址不为空会不停的循环直到随机出一个可用的服务。 @Suppress 阅读全文
posted @ 2017-11-26 11:50 liamyu 阅读(5360) 评论(0) 推荐(1) 编辑
摘要: C#的lambda表达式的好用就不多说了,中午吃饭的时候突然想到一个以前(有年头了,难道屌丝上岁数了就回忆这个么。。。)和同事争执的坑。。 列个demo吧。。 先是一个类,这个类的对象就是为了吃堆内存用的,, 然后再来个类存放个事件 测试代码如下; 估计乍一看,不知所云。。不明所以。其实主要想说的是 阅读全文
posted @ 2017-11-16 14:42 liamyu 阅读(9934) 评论(0) 推荐(0) 编辑
摘要: 上一篇最后提到了mandatory这个参数,对于设置mandatory参数个人感觉还是很重要的,尤其在RabbitMQ镜像队列发生故障转移时。 模拟个测试环境如下: 首先在集群队列中增加两个镜像队列的策略: 对于ha-promote-on-shutdown这个参数,可以参考文档,其作用就是当集群中m 阅读全文
posted @ 2017-11-03 13:58 liamyu 阅读(2275) 评论(0) 推荐(2) 编辑
摘要: 消息发布者向RabbitMQ进行消息投递时默认情况下是不返回发布者该条消息在broker中的状态的,也就是说发布者不知道这条消息是否真的抵达RabbitMQ的broker之上,也因此会发生消息丢失的情况。 对此,RabbitmQ提供了两种解决方案(以官方提供的SDK为例) 1.通过AMOP提供的事务 阅读全文
posted @ 2017-11-02 17:35 liamyu 阅读(7452) 评论(1) 推荐(1) 编辑