- 博客(22)
- 问答 (2)
- 收藏
- 关注
原创 设计模式-7-适配器模式
定义适配器模式将一个类的接口,转换成客户期望的另外一个接口,适配器让原本不兼容的类可以合作无间。适配器模式可以分为以下三种类型:1. 类适配器 2. 对象适配器 3. 接口适配器 具体定义和区别如下图Spring中HandlerAdapter参考《Head first 设计模式》...
2019-11-29 11:50:36
272
原创 设计模式-6-建造者模式
定义建造者模式,是将一个构建过程复杂的对象的构建过程和对象的表示分离,该模式主要关注的是构建过程。角色产品(product):具体产品抽象建造者(abstract builder):创建一个产品对象的各个部件指定的接口/抽象类具体建造者(builder):实现接口,构建和装配各个部件指挥者(director):构建一个使用builder接口的对象。主要用于创建一个复杂的对象,它主要有...
2019-11-27 20:41:54
111
原创 设计模式-5-原型模式
什么是原型模式原型模式是从一个已存在对象直接复制出一个相互独立但是属性完全一样对象复制的两种手段,克隆和序列化,并且都不会触发构造方法的执行,克隆区分浅拷贝和深拷贝原型模式的使用场景多个地方基于相同对象做各自独立的修改希望逃脱构造器的约束原型模式的优缺点优点在内存中直接二进制流进行拷贝,不用可以避免构造器的约束缺点也是因为没有构造器的约束,会逃脱构造器可能设...
2019-11-26 22:25:10
95
原创 设计模式-1-java程序的七大原则
七大设计原则单一职责原则接口隔离原则依赖倒转(置)原则里氏替换原则开闭原则迪米特法则(最少知道原则)合成复用原则单一职责原则降低单个类的复杂度,提高类的可读性,降低类变更时可能引起的风险接口隔离原则如果接口不同的实现类只需要用到接口部分方法,但不得不实现接口所有方法,这时候可以将该接口不同实现类所需要的方法迁移到不同新的接口,实现接口隔离依赖倒转原则...
2019-11-19 15:33:15
101
原创 设计模式-3-单例模式
单例的四大原则私有构造方法以静态方法或者枚举返回实例确保实例只有一个,尤其是多线程环境下确保使用反射和反序列化时不会构造新的对象单例模式的不同分类饿汉式、懒汉式、静态内部类方式、枚举方式饿汉式写法public class SingleTon { private final static SingleTon instance = new SingleTon(); ...
2019-11-18 20:31:49
102
原创 设计模式-2-UML类图说明
UML首先认识下各种图标意思详细说明类常用的属性和方法的表达方式如下接口和类表述方式几乎相似,参考类即可关联关联具有导航性:双向关联或单向关联具有多重性:比如一对一,一对多,多对多的关系聚合:表示整体和部分的关系,整体与部分可以分开,比如A类包含B类引用,A类对象创建时不会立即创建B类,而是等待外界对象传给他,比如通过set方法组合:表示整体和部分的关系,整体与部分不可...
2019-11-14 11:13:54
159
原创 java时间的一些操作
获取两个日期之间所有的日期列表方法一:使用Date方式直接操作private static List<String> dateT(Date beginTime, Date endTime) { List<String> daysList = new ArrayList<String>(); DateFormat format = new ...
2019-11-06 20:36:41
137
原创 java六大设计原则
设计原则单一职责原则理解:对于一个类而言,应该仅有一个引起它变化的原因。说白了就是,不同的类具备不同的职责,各施其责。这就好比一个团队,大家分工协作,互不影响,各做各的事情。应用:当我们做系统设计时,如果发现有一个类拥有了两种的职责,那就问自己一个问题:可以将这个类分成两个类吗?如果真的有必要,那就分吧。千万不要让一个类干的事情太多!开闭原则理解:简言之,对扩展开放,对修改...
2019-08-15 16:20:49
67
原创 java死锁&活锁&饥饿&无锁
死锁死锁的三种场景:线程死锁、线程池死锁、资源连接池死锁线程死锁:多个线程分别等待对方持有的锁,比如下面代码,线程Thread-1持有锁a并尝试获取锁b,Thread-2持有锁b并尝试获取锁a,导致两个线程都不能获取需要的锁@Testpublic void testLock1() throws InterruptedException { Object a = new Obje...
2019-08-15 09:44:11
296
原创 两张表说清java内存区域划分
java内存区域概表//变量、常量、静态变量的区别String str = "abc";//变量final String str = "abc";//常量static String str = "abc";//静态变量java内存区域细分表关于并不是所有对象都在堆内存中分配的说明(参考https://cloud.tencent.com/developer/article/1...
2019-07-14 15:40:29
74
转载 java.util.concurrent.atomic分类
转载自:https://juejin.im/post/5aeec351518825670a103292#heading-2其余转载内容放在对应段落java.util.concrrent.atomic包分类原子更新基本类型 AtomicBoolean 以原子更新的方式更新boolean AtomicInteger 以原子更新的方式更新Integer Atomic...
2019-07-04 14:25:07
238
原创 CAS和Unsafe分别是什么
从一个面试开始:CAS原理是什么我的回答是:数据做更改时会用一个递增的版本号判断数据是否发生过改变,如果已经发生过改变自旋直至到最新值然后变更;这里有两个地方我一直理解错误:1.版本号是自增的,所以我一直没理解为什么CAS会导致ABA问题2.CAS会自旋直至最新值做更新,所以一直疑问为什么要正确的答案在下面并没有递增的版本号,所以会导致ABA问题ABA问题:假如A、B...
2019-07-03 19:16:32
388
原创 PowerMock探路记
单独测试私有方法//单独测试私有方法isPrivatepublic class A{ //用于mock私有成员变量 private double distance; private void isPrivate(String str){ if(StringUtils.isEmpty(str)){ throw new Excep...
2019-07-03 14:55:46
988
1
转载 Java内存溢出(OOM)异常完全指南【转】
转载自:http://www.jianshu.com/p/2fdee831ed03 看了一部分,转载过来以后细细研究我的职业生涯中见过数以千计的内存溢出异常均与下文中的8种情况相关。本文分析什么情况会导致这些异常出现,提供示例代码的同时为您提供解决指南。Nikita Salnikov-Tarnovski Plumbr Co-Founder and VP of Engineering
2017-11-16 14:15:35
365
转载 在同一个类中调用另一个方法没有触发 Spring AOP 的问题【转】
转载自:https://segmentfault.com/a/1190000008379179一直只知道调用同一个类方法注解会失效,从来没有思考过原因,看过该作者剖析以及解决办法,顿时茅塞顿开,转载以备下次翻看。想想自己虽然入坑多年不思进取,大多时候是纸糊的老虎惭愧!!!起因考虑如下一个例子:@Target(value = {ElementType.METHOD})
2017-11-02 21:02:39
2570
2
空空如也
ubuntu安装openssh-server失败问题
2015-10-15
使用java static做缓存 如何定时清理重置static数据
2015-07-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人