rabbitmq
摘要:最新因为项目中会使用rabbitmq,所以这里做个简单的随笔。 看图所示,由生产者(producer) 交换机(exchange) 队列(queue)消费者(组成) 一般程序设计需要用到rabbitmq的时候,都是这种情况。 当消息发送到队列之时,可以选择先到交换机,通过交换机去选择把消息送到不同的
阅读全文
posted @
2020-03-29 23:13
Jason_LZP
阅读(129)
推荐(0)
从购物车设计引发的一系列问题(rocketMQ在虚拟机中启动注意事项)
摘要:购物车大家都习惯用过,添加购物车,删除购物车等等操作。 看了很多github或者码云都仓库代码,购物车的实现一般都是直接操作数据库,进行增删改查。 个人认为是不对的! 你可以说,数据库可以分库分表或者其他操作。但是对于频繁操作数据库的,会造成数据库io崩掉,然后直接导致系统挂掉。这就是为什么很多数据
阅读全文
posted @
2020-03-25 23:29
Jason_LZP
阅读(297)
推荐(0)
设计模式之工厂模式
摘要:我们先来看下工厂模式的定义:以下文字或者代码都以截图都形式存在,你们别copy代码,重要都逻辑还是要自己敲一遍才行。 就是这么简单,那我们怎么实现呢。看代码! 首先,我们定义产品抽象类,具体产品根据抽象类来实现。 ok 产品有了,我们来理理工厂模式都那句话。定义一个创建对象都接口,让子类去决定实现哪
阅读全文
posted @
2020-03-23 23:11
Jason_LZP
阅读(102)
推荐(0)
redis 注解式 限流操作
摘要:当并发量比较大的时候,通常会用到限流。 这里讲解一个redis实现的限流方法。 首先这里有一个坑(我自己造成的) 我在编写注解式缓存的时候,重写了redisTemplete实现Bean,导致这个问题一天没解决,其实早就应该想到。 首先我们把Bean修改过来: @Beanpublic RedisTem
阅读全文
posted @
2020-03-20 16:26
Jason_LZP
阅读(589)
推荐(0)
注解式 redisson分布式锁
摘要:之前我加锁是在方法里面,但是有一个问题,就是没有解耦,就跟我说redis不同mysql缓存是一样的。 这里也写一个AOP,利用注解,进行方法的加锁。 首先,写一个ASPECT @Aspect@Componentpublic class RedisLockAspect { @Autowired pri
阅读全文
posted @
2020-03-19 11:59
Jason_LZP
阅读(1554)
推荐(0)
redis数据同步
摘要:数据同步,一直是个头痛的问题。 看过很多代码,很多实现都是在业务层众,先操作数据库,然后顺便更新缓存。达到同步的作用。 1、没有解耦 服务之间应该是解耦的 spring提供的AOP,就是用来干这个的。spring中的cache包,提供了一系列缓存更新的方法。 重点: @Cacheable @Cach
阅读全文
posted @
2020-03-18 16:55
Jason_LZP
阅读(617)
推荐(0)
redisson
摘要:在自己实现redis分布式锁的时候,我问了,为什么有些公司采用redisson去实现锁?! 其实理由有很多,个人认为最关键的还是锁的控制。 “拿来主义”,别人已经做好的,拿来用就行了,当然,你要懂原理就更好! 自己实现的锁有很多问题,比如说,锁的过期时间,在高并发情况下,不能保证每次任务进来的时间长
阅读全文
posted @
2020-03-17 23:39
Jason_LZP
阅读(563)
推荐(0)
CAS
摘要:这里讲的CAS 并不是CAS 的单点登录包。要了解单点登录的话,可以另外百度一下。 Compare And Set 意思很明显,先比较,后设置 为什么要先比较呢,就是因为在多线程的情况下,每次请求先后不一,这也就是乐观锁的概念。 一个update语句你就知道了: old_num = 先获取现有的库存
阅读全文
posted @
2020-03-17 14:19
Jason_LZP
阅读(115)
推荐(0)
Sku所想
摘要:先来看一段锁库存代码: 不用看具体代码逻辑,意思很简单,在数据库表设计过程中,下订单后,锁定下单的库存,等待付款。 这段代码从功能上讲,这个逻辑看似没问题,但是在并发角度讲,问题很大了。 首先,想象一下,两个线程都在执行这段逻辑(就两个买家都在买同一个商品),当买家1执行到set,还未执行到upda
阅读全文
posted @
2020-03-16 14:37
Jason_LZP
阅读(116)
推荐(0)
流api
摘要:流api的使用 追加说明,现如今,你们可以发现,越来越多代码采用流api等形式,如果你还看不懂,或者还不会用那就out啦!! List<Integer> integers = new ArrayList<>(); integers.add(1); integers.add(3); integers.
阅读全文
posted @
2020-03-03 21:10
Jason_LZP
阅读(174)
推荐(0)