Java多线程(三)——synchronized关键字(下) 发表于 2019-04-07 | 分类于 技术文章 synchronized同步语句块用关键字synchronized声明方法是有弊端的。比如线程A调用同步方法执行一个长时间任务,那么线程B就要等较长时间才能调用。 下面看一个例子: 123456789101112131415161718192021public class Task { ... 阅读全文 »
Hello World 发表于 2019-01-19 Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in ... 阅读全文 »
SonarQube使用以及集成Jenkins 发表于 2018-11-06 | 分类于 技术文章 [TOC] 简介sonarQube能够提供对代码的一整套检查扫描和分析功能,拥有一套服务器端程序,然后再通过客户端或者别的软件的插件的形式完成对各开发环境和软件的支持。 对编程语言的支持非常广泛,包括C、C++、Java、Objective C、Python、JavaScript、PHP、C#、S ... 阅读全文 »
设计模式(八)——建造者模式 发表于 2018-09-27 | 分类于 技术文章 建造者模式讲一个复杂构建与他的表示分离,使得同样的构建可以创建不同的表示。 优点 封装性:客户端不必知道产品内部组成的细节。 建造者独立,容易扩展。例子中,惠普和苹果建造者互相独立。 便于控制细节风险。 应用场景 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性。 隔离复杂对象的创建和使用 ... 阅读全文 »
设计模式(七)——模板模式 发表于 2018-09-26 | 分类于 技术文章 [TOC] 模板模式定义一个操作中的算法框架,将一些步骤延迟到子类中,使子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 子类重写或实现父类的方法。再由父类的模板方法调用这些公共的方法。所以被子类重写或者不必暴露的方法一般定义为私有的。 优点 封装不变不封,扩展可变部分。 提取公共部分 ... 阅读全文 »
设计模式(六)——组合模式 发表于 2018-09-26 | 分类于 技术文章 组合模式将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 一致性指的是这些对象都具有相同的接口。 优点: 高层模块调用简单 节点自有增加,容易扩展。 缺点:直接调用实现类,不符合依赖倒置原则。 使用场景 维护和展示部分整体关系场景,如菜单、文件和文 ... 阅读全文 »
设计模式(五)——装饰模式 发表于 2018-09-25 | 分类于 技术文章 [TOC] 装饰器模式动态的给一个对象添加一些额外的职责。就增加功能来说,装饰器模式比生成子类更灵活。 在装饰模式中, 必然有一个最基本、 最核心、 最原始的接口或抽象类充当 Component抽象构件。 优点 装饰类和被装饰类可以独立发展,不会互相耦合。 装饰器模式是继承关系的替代方案 装饰器模 ... 阅读全文 »
设计模式(四)——代理模式 发表于 2018-09-21 | 分类于 技术文章 [TOC] 代理模式定义:为其他对象提供一种代理以控制对这个对象的访问 上图中,Subject是一个抽象类或者接口,RealSubject是实现方法类,具体的业务执行,Proxy则是RealSubject的代理,直接和client接触的。 代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进 ... 阅读全文 »
设计模式(三)——工厂模式 发表于 2018-09-19 | 分类于 技术文章 工厂模式 定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法是一个类的实例化延迟到子类。 工厂方法可以解耦,降低代码的重复性。 工厂模式分类 简单工厂:静态工厂方法,一个模块仅需要一个工厂类, 没有必要把它产生出来。 工厂方法:多个工厂 抽象工厂:为创建一组相关或相互依赖的对象提供 ... 阅读全文 »
设计模式(二)——单例模式 发表于 2018-09-17 | 分类于 技术文章 单例模式 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。构造器私有化,不能被new出来。 项目代码:Github 单例的应用优点 在内存中只有一个实例, 减少了内存开支 当一个对象的产生需要 比较多的资源时, 如读取配置、 产生其他依赖对象时, 则可以通过在应用启动时直接 ... 阅读全文 »