- 博客(13)
- 资源 (6)
- 问答 (3)
- 收藏
- 关注
原创 java基础面试准备--多线程1
一、如何控制多线程的执行顺序? join方式,让主线程等待子线程结束后才能继续运行。 原理 调用 Object 的 wait() 方法,让主线程等待。 ExecutorService executor = Executors.newSingleThreadExecutor(); 原理:把线程放到队列里面。先进先出。demo:public class ThreadTest { static...
2018-04-26 18:00:45 312
原创 java基础面试准备--集合
一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、各种集合的对比Vector和ArrayListvector是线程同步的,所以它也是线程安全的,而ArrayList是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高...
2018-04-26 16:32:03 354
原创 设计模式-状态模式
状态模式: 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 要点: 状态模式允许一个对象基于内部状态而拥有不同的行为。 和程序状态机不同,状态模式用类代表状态。 Context会将行为委托给当前状态对象。 通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了。 状态模式和策略模式有相同的类图,但是它们的意图不同。 策略模式通常会用行为或算法来配置Context类。 状...
2018-04-18 23:05:15 267
原创 设计模式-迭代器模式与组合模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。作用: 让我们游走于聚合内的每一个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。要点:迭代器允许访问聚合的元素,而不需要暴露它的内部...
2018-04-18 22:41:17 449
原创 设计模式-适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。使用对象组合,以修改的接口包装被适配者:这种做法还有额外的优点,那就是,被适配者的任何子类,都可以搭配着适配器使用。外观模式:提供了一个统一的接口,用来访问子系统中的一个接口。外观定义了一个高层接口,让子系统更容易使用。外观不只是简化了接口,也将客户从组件的子系统中解耦。外观和适配器可以包装许多类,但是...
2018-04-18 22:24:11 194
原创 设计模式-命令模式
命令模式:将 “请求” 封装成对象,以便使用不同的请求、队列或者日志来参与参数化其他对象。命令模式也支持可撤销的操作。命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作。调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用。调用者可以接受命令当作参数,甚至在运行时动态地进行。命令可以支持撤销,做法...
2018-04-18 21:46:48 214
原创 设计模式-单例模式(单件模式)
单件模式:确保一个类只有一个实例,并提供一个全局访问点。目的:确保类只有一个实例并提供全局访问。全局变量可以提供全局访问,但是不能确保只有一个实例。全局变量也会变相鼓励开发人员,用许多全局变量指向许多小对象来造成命名空间的污染。备注:单件模式确保程序中一个类最多只有一个实例。单件模式也提供访问这个实例的全局点。在Java中实现单件模式需要私有的构造器、要给静态方法和一个静态变量。确定在性能和资源上...
2018-04-17 22:00:19 341
原创 设计模式-工厂模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。所有工厂模式都用来封装对象的创建。工厂方法模式通过让子类决定创建的对象是什么,来达到将对象创建的过程封装的目的。工厂方法是抽象的,所以依赖子类来处理对象的创建。简单工厂:把全部的事情,在一个地方都处理完了,然而工厂方法却是创建要给框架,让子类决定要如何实现。简单工厂不具备工厂方法的弹性,因为简...
2018-04-17 21:50:43 225
原创 设计模式-装饰者模式
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。继承属于扩展形式之一,但不见得达到弹性涉及的最佳方式。在我们的设计中,应该允许行为可以被扩展,而无需修改现有的代码。组合和委托可用于在运行时动态地加上新的行为。除了继承,装饰者模式也可以让我们扩展行为。装饰者模式意味着一群装饰者类,这些类用来包装具体组件。装饰者类反映出被装饰者的组件类型(事实上,他们具有相同...
2018-04-17 20:25:13 262
原创 设计模式-观察者模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 观察者模式定义了对象之间的一对多关系。 主题(也就是观察者)用一个共同的接口来更新观察者 观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口。 使用此模式时,你可从被观察者处推(push)或(pull)数据(然而,推的方式被认为更“正确...
2018-04-17 20:14:58 190
原创 设计模式-模版方法模式
模版方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法定义了算法的步骤,把这些步骤的实现延迟到子类。模板方法模式为我们提供了一种代码复用的重要技巧。模板方法的抽象类可以定义具体方法、抽象方法和钩子。抽象方法由子类实现。钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要区覆盖它。...
2018-04-16 23:23:12 215
原创 设计模式-策略模式
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。备注: 观察者模式定义了对象之间的一对多关系。 主题(也就是观察者)用一个共同的接口来更新观察者。 观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口。 使用此模式时,你可从被观察者处推(push)或(pull)数据(然而,推的方式被认为更“正确...
2018-04-16 22:08:17 219
原创 设计模式-设计原则
找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。针对接口编程,而不是针对实现编程。多用组合少用继承:使用组合建立系统具有很大的弹性,不仅可将算法族封装成类,更可以在“运行时动态改变行为”,只要组合的行为对象更符合正确的接口标准即可。为了交互对象之间的松耦合设计而努力。类应该对扩展开放,对修改关闭。要依赖抽象,不要依赖具体类。不能让高层组件依赖低层组件,而且,不管高层...
2018-04-16 20:57:59 195
metronic.bootstrap 模板
2015-12-22
linux 环境下 ant+buld.xml 能够自动构建git项目
2018-06-07
gradle 编译spring源码报错
2016-05-27
Maven继承问题A->B->C
2016-02-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人