设计模式
文章平均质量分 53
DanceDonkey
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态代理对象
JDK中如果创建代理对象,要基于接口和InvocaionHandler接口实现,创建出来的代理对象可以理解为一个接口门面,而被代理的接口在调用方法时,被拦截的方法其实是接口中定义的方法,当然,既然是接口的方法,那方法上标注的注解信息也可以获取到.定义一个Run接口public interface Run{ public void run();}定义一个Speak接口public interface Speak{ public void speak(String msg);}定原创 2022-05-27 18:07:50 · 444 阅读 · 0 评论 -
IO流与字符编码问题
JavaIO根据流向可分类输入流与输出流,根据操作操作单位可分为字节流与字符流。字节流可以操作任意二进制文件,而字符流只能操作字符串或文本文件。在写文件的时候,如果想要以指定的编码写入,可以通过String类的getBytes(charset)方法,以指定的字符集编码成二进制写入,如果想用字符流以指定的编码写入,则必须借助转换流,同理,如果用字符流用指定的编码读取数据,则必须借助转换流,如果不指定,则使用操作系统默认的编码,如果操作系统默认的编码和文件的编码不一致,则就可能会出现乱码问题!字符流以指原创 2021-06-30 11:00:21 · 908 阅读 · 0 评论 -
一文搞懂布隆过滤器以及如何解决Redis的缓存穿透问题
1.什么是缓存穿透?正常的查询数据库流程应该是先查缓存,如果缓存没有,再去查询数据库。当在数据库中查询完成后将查询的结果放入到缓存,这样下次请求的话就可以在缓存中获取到。那么缓存穿透就是类似于一种恶意攻击,例如数据库中存在id为1,2,3,4,5一共5条数据,如果一个请求查询id为6的数据,很明显这个数据缓存中没有,那么就会去查询数据库,但是数据库中也没有,那这样就造成了缓存穿透。如果这个请求一直在向服务器发送查询,则会给数据库带来很大的压力。2.什么是布隆过滤器?布隆过滤器(Bloom Filte原创 2020-10-11 19:22:23 · 777 阅读 · 0 评论 -
详解 策略模式+工厂模式解决if else 冗余问题
首先来看一下这段代码 String name = "李四"; @Test public void noDesign(){ if ("张三".equals(name)){ System.out.println("张三执行业务"); }else if ("李四".equals(name)){ System.out.println("李四执行业务"); }else if ("王五".equals(n原创 2020-09-11 13:41:46 · 403 阅读 · 0 评论 -
spring基于注解和XML方法的通知
一、基于注解的通知1.创建一个User类@Componentpublic class User { public void add(){ System.out.println("user ... add ..."); }}2.创建一个增强类@Component@Aspect //这个注解会创建一个代理对象public class UserAdvice { //前置通知 在被增强的方法之前执行,环绕之前之后执行 @Before("exec原创 2020-06-07 13:21:02 · 194 阅读 · 0 评论 -
Java设计模式-动态代理
一、实现方式有哪些?1.基于接口实现:JDK动态代理2.基于类实现:cglib方式3.基于java字节码方式:javasist二、JDK动态代理实现一、定义一个接口 UserServicepublic interface UserService { void add(); void delete(); void update(); void select();}二、添加实现public class UserService原创 2020-05-28 16:13:14 · 187 阅读 · 0 评论
分享