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