摘要: 本案例主要讲解Redis实现分布式锁的两种实现方式:Jedis实现、Redisson实现。网上关于这方面讲解太多了,Van自认为文笔没他们好,还是用示例代码说明。 一、jedis 实现 该方案只考虑Redis单机部署的场景 1.1 加锁 1.1.1 原理 jedis.set(String key, S... 阅读原文
2019-09-21 17:01:14 阅读(3656) 评论(0)
摘要: 关于限流 常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应,获取的方式有两种:阻塞等待令牌或者取不到立即返回失败,下图来自网上: 本... 阅读原文
2019-09-21 15:23:04 阅读(2894) 评论(0)
摘要: 前言: 最近的时候遇到一个需求,就是当服务器接到请求并不需要任务执行完成才返回结果,可以立即返回结果,让任务异步的去执行。开始考虑是直接启一个新的线程去执行任务或者把任务提交到一个线程池去执行,这两种方法都是可以的。但是Spring 这么强大,肯定有什么更简单的方法,就 google 了一下,还真有呢。就是... 阅读原文
2019-09-21 14:33:04 阅读(2237) 评论(0)
摘要: Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点: Redis 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis 不... 阅读原文
2019-09-21 14:01:02 阅读(2870) 评论(0)
摘要: 夯实Java基础,修炼Java内功。 阅读原文
2019-09-21 12:53:05 阅读(2409) 评论(0)
摘要:   |=  关于 |= 运算符:|= 运算符和 += 这一类的运算符一样,拆解开就是 a = a | b; 代码如下:   public static strictfp void main(String[] args) { int a = 5; // 0000 0101 in... 阅读原文
2019-09-21 12:28:01 阅读(2309) 评论(0)
摘要: 本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q ... 阅读原文
2019-09-21 11:00:06 阅读(3624) 评论(0)
摘要: 1. 事务可重复读采坑 1.1. 问题 今天碰到个事务幻读的情况,不容易啊,这不是事务间造成的问题,而是rpc调用产生的问题,实际上业务比较规范也不会出现这样的问题。 具体情况是系统A方法a开启required事务,在事务方法中rpc调用了系统B,生成了一条订单,而之后系统A又用sql查询了这条订单,会发现... 阅读原文
2019-09-21 09:32:02 阅读(2378) 评论(0)
摘要: 在ribbon使用断路器 改造serice-ribbon 工程的代码,首先在pox.xml文件中加入spring-cloud-starter-hystrix的起步依赖: 引入 <dependency> <groupId>org.springframework.cloud&l... 阅读原文
2019-09-21 08:00:02 阅读(2444) 评论(0)
摘要: 基于上一篇文章的工程,启动eureka-server 工程;启动service-hi工程,它的端口为8765;将service-hi的配置文件的端口改为8763,并启动,这时你会发现:service-hi在eureka-server注册了2个实例,这就相当于一个小的集群。 重新新建一个spring-boot... 阅读原文
2019-09-21 06:32:02 阅读(2416) 评论(0)