6 李一

尚未进行身份认证

我要认证

简单点

等级
TA的排名 19w+

卫语句等方式简化条件表达式

在阿里巴巴Java开发手册中建议优化如下:在《重构 改善既有代码的设计》描述如下:我之前设计模式相关博客中有介绍策略模式以及状态模式:策略模式与状态模式接下来我们简单介绍下卫语句常见优化后效果如果在项目中复杂逻辑的情况下,卫语句会使代码更加清晰、简略。...

2019-04-09 16:07:41

jvm 早期优化与晚期优化

jvm除了对内存进行清楚还会再编译期(早期)以及运行期(晚期)进行一些优化处理,这篇文章就简单编写一下我理解到得编译期与运行期jvm帮我们做了那些优化处理。该文由于个人水平有限,理解不够深刻。所以有些可能重要的点,我并不理解就没有编写。如果要深入学习可以百度学习其他文章。编译过程大致可以分为3个过程:  1、解析与填充符号表过程。 (不清楚具体操作与优化,后期学习补充)    2、插入...

2018-12-24 16:42:13

java垃圾回收机制

本文是针对个人感觉总要与否进行编写,某些常见,易懂的部分我会简单描述。不建议初次了解读本篇文章,本文适合巩固学习。如何判定对象是否已死引用计数算法:给对象一个引用计数器,当有地方引用计数器加一,一个引用失效计数器减一;计数器为0的对象可被清除。(缺点:互相引用时,计数器都为1时,对象已经不会在被使用,但并不会被消除)可达性分析算法:通过一系列成为“GC Roots”的对象作为起点,从...

2018-12-11 20:16:42

java内存分区

java内存分区程序计数器:是一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。(线程私有,不存在异常抛出)Java虚拟机栈:生命周期跟线程相同,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、方法出口等信息。每个方法从调用知道执行完的过程,对应着在虚拟机栈中入栈到出栈的过程。线程私有,定义大量本地变量或者减小栈内存空间会抛出StackOve...

2018-12-04 17:37:13

备忘录模式

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象回复到原先保存的状态。备忘录角色分类: Memento(备忘录)角色:负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录。备忘录实际上有两个接口,“备忘录管理者角色”只能看到备忘录提供的窄接口——对于备忘录角色中存放的属性是不可见的。“备忘...

2018-03-16 11:58:45

适配器模式

适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。 适配器模式有三种不同的类别,分别是:类适配器模式、对象的适配器模式、接口的适配器模式。类适配器模式 我们直接看代码吧:适配前接口public interface Voltage220 { public int out220();}...

2018-03-15 18:02:17

策略模式与状态模式

策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替代,此模式让算法发生变化,不会影响到使用算法的客户。 我们继续来打去学校的例子。先看代码。 定义一个策略接口:public interface ToSchoolStrategy { public void toSchool();}策略实现:public class ExceptionalStrategy im...

2018-03-15 14:41:17

观察者模式

观察者模式:定义一种一对多的依赖关系,让多个观察者对象同时监控某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。这个模式比较绕。我尽量吧上面具体展示在代码位置进行注释,希望对你能有帮助。我也是饶了好久好了若干次关系图才理清。希望我的注解能对你理解这种模式有所帮助。首先我们把主题与观察者接口定义:public interface ISubje...

2018-03-14 18:37:42

外观模式

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这种模式是我们日常开发经常用到的设计模式,也就是当我们对外提供服务时只是对每个服务提供一个接口,可能这个服务内部包含着相对复杂的算法与步骤,我们需要去调用多个服务甚至更多的Dao层去实现这个服务的需求,我们无意中就 用到了这种模式。看下代码实现你就知道是什么了。子系统A的方法:...

2018-03-13 16:33:44

模板方法模式

模板方法模式 :定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模块方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。也就是说抽象父类定义算法格式的骨架,一些不确定的实现由子类来实现。具体java实现如下: 抽象父类:public abstract class AbstractSchool { public final void studyDay(){...

2018-03-13 16:09:09

代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 代理模式有三种写法:静态代理 首先,我们需要一个代理接口public interface Something { public void doSthing();}然后代理对象的实现类。public class So...

2018-03-12 17:45:39

装饰器模式

装饰器模式,是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下(图片转自:https://www.cnblogs.com/jzb-blog/p/6717349.html): Component抽象构件角色:真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互。ConcreteCompoent具体构建角色(真实对象):定义一个将要接收附...

2018-03-12 14:29:11

原型模式

原型模式实际功能主要包含下面两个:通过克隆创建新的对象实例为克隆出来的新的对象实例复制原型实例属性的值。一般来说克隆对象与原型对象的值是一样的,但是也有一定区别,对于基本数据类型,我们会发现改变克隆模式的值原型模式不会改变。但是对于引用数据类型来说,如果是浅拷贝会出现他们所指的类型是同一区域,也就是改变克隆模式引用类型的值时,会影响到原型模式。如果是深拷贝的话就不会出现这种情况。下面我...

2018-03-09 13:49:55

生成器模式(建造者模式)

生成器模式功能:生成器模式的重心在于分离构建算法和具体的构建实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活的组合构造出不同的产品。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。...

2018-03-08 17:05:20

单例模式

单例模式,是一种常用的软件设计模式,划分为创建型。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。下面我们介绍常见的一些单例模式的写法(基于java),包括懒汉式、恶汉式、双检锁、内部类、枚举式。恶汉式public class ActSingleton { private static...

2018-03-07 13:30:48

普通工厂模式、工厂方法模式、抽象工厂模式

概述 属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂 。1.普通工厂模式使用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式。准备: 定义一个接口:public interface Api { public void say();}编写几个实现接口的方法:public class Impl1 imp...

2018-03-06 19:18:22

CAS(Compare and Swap)无锁算法 与 ConcurrentLinkedQueue 队列

了解CAS 我们就先了解一下乐观锁与悲观锁:独占锁是一种悲观锁,synchronized就是一种独占锁,它假设最坏的情况,并且只有在确保其它线程不会造成干扰的情况下执行,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。而另一个更加有效的锁就是乐观锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。CAS就是乐观锁运用到的策略。

2018-01-19 13:36:19

结合“锁”性能学习并发集合

“锁”的竞争必然会导致程序性能急剧下降,常见的提高“锁”性能有以下一些建议。我们根据“锁”的优化来顺便学习一下并发集合(java.util.concurrent包下的部分集合类)1.减少锁粒度所谓减少锁粒度,就是指缩小锁定对象的范围,从而减少锁冲突的可能性,进而提高系统的并发能力。我们来了解一下ConcurrentHashMap 类怎么实现减小锁粒度的:    通过分析Ha

2018-01-16 15:10:08

线程池学习理解

1.线程池是什么为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用。如果大家进行过数据库开发,对数据库连接池应该不会陌生。为了避免每次数据库查询都重新建立和销毁数据库连接,我们可以使用数据库连接池维护一些数据库连接,让他们长期保持在一个激活状态。当系统需要使用数据库时,并不是创建一个新的连接,而是从连接池中获得一个可用的连接即可。反之,当需要关闭连接时,并不真的把连接关闭,而是将这...

2018-01-05 14:19:54

类之间关系

原文地址:http://blog.csdn.net/zhengzhb/article/details/7187278转载只为方便个人查看。类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。 1.依赖(Dependence) 依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间

2017-09-14 16:37:50

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!