java进阶
安善良民弱女子
起风了,唯有努力生存!
展开
-
设计模式(三):建造者模式Builder(创建型模式)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 一.适用性1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。二.参与者1.Builder 为创建一个Product对象的各个部件指定抽象接口。2.ConcreteBuilder 实现Builder的接口以构造和原创 2016-07-14 17:17:38 · 387 阅读 · 0 评论 -
纵向拆分和横向拆分
纵向拆分:通过对业务进行梳理,根据业务的特性把应用拆开,不同的业务模块独立部署。 例如:商品购买流程可拆分为: 订单管理 订单稽查 新增产品 产品查询 客户管理 历史查询横向拆分:将核心的、公共的业务拆分出来,通过分布式服务框架对业务进行服务化,消费者通过标准的契约来消费这些服务。服务提供者独立打包、部署和演进,与消费者解耦。 例如业务1:订单创建服务 库存查询 移动支付服务 等 业务2原创 2017-11-09 21:01:08 · 7393 阅读 · 0 评论 -
接口初始化和类初始化区别
虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 1. 遇到new、getstatic、putstatic、invokestatic这四条字节码指令时, 如果类还没有进行过初始化,则需要先触发其初始化。 生成这四条指令最常见的Java代码场景是: 使用new关键字实例化对象时、 读取一个类的静态字段(static)时(被static修饰又被final修饰的,已在编译期把结果放入原创 2017-11-09 20:59:10 · 5567 阅读 · 5 评论 -
类加载全过程
类加载全过程: 加载,验证,准备,解析,初始化加载:需要完成: 1. 通过一个类的权限定名来获取定义此类的二进制字节流 2. 将这个字节所代表的静态存储结构转化为方法区的运行时数据结构。 3. 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。验证:是连接阶段的第一步:连接阶段是:验证,准备,解析 目的: 为了确保Class文件的原创 2017-11-09 20:52:17 · 292 阅读 · 0 评论 -
getDeclaredMethod和getMethod的区别
getDeclaredMethod和getMethod的区别:getDeclaredMethod*()获取的是类自身声明的所有方法,包含public、protected和private方法。 getMethod*()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法.ApplicationContext context = null ;原创 2017-11-09 20:42:33 · 1780 阅读 · 0 评论 -
newInstance() 和 new 区别
原作者:http://blog.csdn.net/truong/article/details/34928645 newInstance: 弱类型。低效率。只能调用无参构造。 new: 强类型。相对高效。能调用任何public构造。在初始化一个类,生成一个实例的时候;newInstance() 和 new 有什么区别? 创建方式: newInstance:类加载机制转载 2017-03-21 10:34:13 · 2246 阅读 · 0 评论 -
设计模式(十):装饰模式Decorate(结构型模式)
例子:package com.zoey.designPattern.Decorator;/* * 装饰模式(Decorator):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活 * Component是定义一个对象接口,可以给这些对象动态地添加职责。 */public abstract class Component { public abstrac原创 2016-10-08 16:28:27 · 487 阅读 · 0 评论 -
设计模式(九):策略模式Strategy(行为型模式)
例子如下:package com.zoey.designPattern.Strategy;/* * 策略模式Strategy * 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法 的变化, * 不会影响到使用算法的客户 * Strategy类,定义所有支持的算法的公共接口 *///抽象算法类public abstract class Strategy {原创 2016-10-08 15:23:37 · 274 阅读 · 0 评论 -
编码中长思考这四个原则
单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责太多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。 这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。开放-封闭原则(OCP The Open-Closed Principle) 是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。原创 2016-10-08 15:49:17 · 329 阅读 · 0 评论 -
设计模式(一):工厂模式FactoryMethod(创建型模式)
一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。一.适用性1.当一个类不知道它所必须创建的对象的类的时候。2.当一个类希望由它的子类来指定它所创建的对象的时候。3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。二.特点 核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类原创 2016-06-07 11:46:29 · 337 阅读 · 0 评论 -
设计模式(八):组合模式Composite(结构型模式)
将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 一. 适用性1.你想表示对象的部分-整体层次结构。2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。二.参与者1.Component 为组合中的对象声明接口。 在适当的情况下,实现所有类共有接口的缺省行为。原创 2016-07-18 14:03:58 · 378 阅读 · 0 评论 -
设计模式(七):桥接模式Bridge(结构型模式)
将抽象部分与它的实现部分分离,使它们都可以独立地变化。一. 适用性1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。3.对一个抽象的实现部分的修改原创 2016-07-18 11:30:24 · 361 阅读 · 0 评论 -
设计模式(六):适配器模式Adapter(结构型模式)
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 一.适用性 1.你想使用一个已经存在的类,而它的接口不符合你的需求 2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口不一定兼容的类)协同工作 3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每个都进行子类化以匹配它原创 2016-07-15 15:20:32 · 364 阅读 · 0 评论 -
设计模式(五):原型模式Prototype(创建型模式)
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。一. 适用性1.当一个系统应该独立于它的产品创建、构成和表示时。2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。3.为了避免创建一个与产品类层次平行的工厂类层次时。4.当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。二.参与者1. pro 声明一原创 2016-07-15 14:39:58 · 389 阅读 · 0 评论 -
设计模式(四):单例模式Singleton(创建型模式)
保证一个类仅有一个实例,并提供一个访问它的全局访问点。一. 适用性1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。二.实例package com.zoey.designPattern.Singleton;public class Work { private static Work原创 2016-07-15 10:33:36 · 440 阅读 · 0 评论 -
设计模式(二):抽象工厂AbstractFactory(创建型模式)
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。一.适用性1.一个系统要独立于它的产品的创建、组合和表示时。2.一个系统要由多个产品系列中的一个来配置时。3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。二.实例package com.zoey.designPattern.AbstractFactory;pub原创 2016-07-14 16:14:09 · 408 阅读 · 0 评论 -
CountDownLatch
CountDownLatch:CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。 例如:应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等原创 2017-11-09 21:02:46 · 162 阅读 · 0 评论