设计模式 之 代理模式(律师,全权代理)
摘要:代理模式,也叫委托模式。 看下定义: (2020-04-10 9:26记) 是不是很像一种场景:打官司的时候,被告或者原告不愿意出庭,请律师嘛!律师到场代表我出庭,帮我进行辩护。 所以,我们这里设计一个事发案件(接口或者抽象类): 案件有两个case A 和B 实现类: 重点看构方法,要代理的话可以
阅读全文
posted @
2020-04-10 11:02
Jason_LZP
阅读(170)
推荐(0)
设计模式 之 建造者模式(和久必分)
摘要:建造者模式也叫生成器模式 (2020-04-09 14:32记) 上篇写了模板模式的构造,既定顺序或者说既定的算法,我们放到抽象父类当中去。但是现实生活却不是这样的,因为“变化,一直都在”,就跟这个世界一样。充满着变化! 假设一个产品,按照模板模式,先调用A,再调用B,完事了。但是用户不想要了,先掉
阅读全文
posted @
2020-04-09 14:32
Jason_LZP
阅读(151)
推荐(0)
设计模式 之 模板方法(分久必和)
摘要:看下模板方法模式的概念: (2020-04-09 10:08记) 其实模板模式相对于前面介绍的要简单很多,父类就是模板,子类按照我定义的模板规则(也叫算法来执行就可以). 首先,我们需要一个模板类,是一个抽象类,其中包含基本方法,基本方法是有子类去实现的,还有模板方法,是定义规则的,一般由父类定义好
阅读全文
posted @
2020-04-09 10:09
Jason_LZP
阅读(105)
推荐(0)
设计模式 之 观察者模式(间谍)
摘要:在介绍spring 监听事件都时候说了观察者模式,那么现在我们来讲讲观察者模式,也叫做发布订阅模式! (2020-04-07 ) 明天补充。 (2020-04-08) 首先,我们看下观察者模式都概念: 定义一对多都关系,当对象进行动作的时候,那个“多”,也会相应得回馈,这就是观察者模式,有点类似于间
阅读全文
posted @
2020-04-07 22:24
Jason_LZP
阅读(152)
推荐(0)
ApplicationContext 事件机制
摘要:ApplicationContext 事件机制 记住一句话,使用观察者模式,使你的业务逻辑之间解耦。 什么是观察者模式?我后续会写,现在讲具体事件机制用法。 (sorry 下班了 现在继续补上) 事件机制为我们提供了事件监听,订阅的实现。内部实现原理是观察者模式(后续写设计模式的时候会写),总体概括
阅读全文
posted @
2020-04-07 17:52
Jason_LZP
阅读(284)
推荐(0)
设计模式之抽象工厂模式
摘要:按照之前都尿性,我们来看下抽象工厂模式都定义: 为了满足相关或者相互依赖的关系,我们都采用抽象类,其中有公共方法去实现,有abstract修饰都需要不同方法实现的对象关系。 我们建立两个相关产品 A和B。 对于两个产品,进行分别实现。 对象实现也有了,看到概念,为创建相互依赖对象提供接口,无需指定具
阅读全文
posted @
2020-04-06 23:00
Jason_LZP
阅读(123)
推荐(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)
流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)
Optional
摘要:一般在代码中,很多地方要对 对象 进行null判断,java 8 提供了一个更好对方法。 Optional、OptionalDouble、OptionalInt和OptionalLong package com.jason.mq;import java.util.Optional;public cl
阅读全文
posted @
2020-02-03 01:02
Jason_LZP
阅读(269)
推荐(0)
Spliterator
摘要:Spliterator使用 这是java 8 新增但迭代器,不同其他迭代器,这个支持并行。 来看例子: package com.jason.mq;import java.util.ArrayList;import java.util.List;import java.util.Spliterator
阅读全文
posted @
2020-01-30 00:32
Jason_LZP
阅读(227)
推荐(0)