
Java
文章平均质量分 74
BAOLIANG196
这个作者很懒,什么都没留下…
展开
-
设计模式:模板方法模式(Template)
定义与结构模板方法(Template Method)模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。可以看出来,模板方法模式也是为了巧妙解决变化对系统带来的影响而设计的。使用模板方法使系统扩展性增强,最小化了变化对系统的原创 2016-05-02 14:54:37 · 531 阅读 · 0 评论 -
Java:垃圾回收机制
在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集器系统有自己的一套方案来判断哪个内存块是应该被回收的,哪个是不符合要求暂不回收的。垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无转载 2016-04-30 20:54:39 · 711 阅读 · 0 评论 -
设计模式:装饰模式(Decorator )
定义与结构装饰模式(Decorator)也叫包装器模式(Wrapper)。GOF 在《设计模式》一书中给出的定义为:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。让我们来理解一下这句话。我们来设计“门”这个类。假设你根据需求为“门”类作了如下 定义: 现在,在系统的一个地方需要一个能够报警的Door,你来怎么做呢?你或许写一个Door的子类原创 2016-04-30 17:08:28 · 531 阅读 · 0 评论 -
Java:JVM的内存区域划分
学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢?由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 如上图所示,首先Java源代码文件(.java后缀)会被Ja转载 2016-04-29 21:50:48 · 515 阅读 · 0 评论 -
设计模式:组合模式(Composite)
定义与结构组合(Composite)模式的其它翻译名称也很多,比如合成模式、树模式等等。在《设计模式》一书中给出的定义是:将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。从定义中可以得到使用组合模式的环境为:在设计中想表示对象的“部分-整体”层次结构;希望用户忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象。看下组合模式的组成。原创 2016-04-29 18:49:13 · 555 阅读 · 0 评论 -
Java:线程安全之静态变量、实例变量、局部变量
Java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同《java并发编程实践》中所说: 写道 给线程安全下定义比较困难。存在很多种定义,如:“一个类在可以被多个线程安全调用时就是线程安全的”。 此处不赘述了,首先给出静态变量、实例变量、局部变量在多线程环境下的线程安全问题结论,然后用示例验证,请大家擦亮眼睛,有错必究,否则误人子弟!静态变量:转载 2016-04-28 23:24:37 · 638 阅读 · 0 评论 -
Java:多线程学习
本文主要讲了java中多线程的相关定义、多线程的使用方法、线程同步、线程的几种状态、线程之间的数据传递及线程函数用法等。相关定义首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。线程和进程一样分为五个阶段:创建、原创 2016-04-27 15:12:35 · 984 阅读 · 0 评论 -
设计模式:中介者模式(Mediator)
定义与结构中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。GOF 给调停者模式下的定义是:用一个中介类对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者原创 2016-04-19 17:56:30 · 672 阅读 · 1 评论 -
设计模式:策略模式(Strategy)
转自:http://blog.youkuaiyun.com/jungle_hello定义策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算法,可以理解为不同的业务处理方法。这种做法会带来什么样的好处呢? 它将算法的使用转载 2016-04-19 14:29:37 · 704 阅读 · 0 评论 -
设计模式:命令模式(Command)
定义与结构命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。《设计模式》中命令模式的定义为:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。命令模式很好理解,举个例子,司令原创 2016-04-17 17:53:43 · 808 阅读 · 1 评论 -
Java:输入输出流
1.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java转载 2016-04-17 12:53:27 · 689 阅读 · 0 评论 -
Java:普通代码块、构造代码块、静态代码块
转自:http://blog.youkuaiyun.com/jungle_hello/article/details/51169517 执行顺序:(优先级从高到低。)静态代码块>main方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。class StaticBlock{ int num = 9; StaticBlock() {转载 2016-04-17 12:07:35 · 482 阅读 · 0 评论 -
设计模式:单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。在GOF书中给出的定义为:保证一个类仅有一个实例,并提供一个访问他的全局访问点。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易原创 2016-04-14 21:59:56 · 622 阅读 · 1 评论 -
设计模式:抽象工厂模式(Abstract Factory)
这篇博客主要讲一下抽象工厂模式先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。还是让我们用一个例子来形象地说明一下吧。 图中的BmwCar 和BenzCar 就是两个产品树(产品层次结构);而如图所示的BenzSportsCar 和BmwSportsCar 就是一个产品族。他们都可以放到跑车家族中,因此功能有所关联。同理BmwBussinessCar 和BenzSpo原创 2016-04-14 21:01:46 · 562 阅读 · 0 评论 -
设计模式:工厂方法模式(Factory Method)
一、引子话说十年前,有一个暴发户,他家有三辆汽车——Benz 奔驰、Bmw 宝马、Audi 奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz 车后跟司机说“开奔驰车!”,坐上Bmw 后他说“开宝马车!”,坐上Audi 说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在OO原创 2016-04-14 20:48:42 · 599 阅读 · 1 评论 -
设计模式:设计模式之概括
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 From Baidu 百科设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂原创 2016-04-14 20:12:32 · 656 阅读 · 0 评论 -
Java:构造函数的访问修饰符
构造方法可以处于public、protected、private和默认四种访问级别之一。 public public这里就不多说了 private 当构造方法为private级别时,意味着只能在当前类访问它,不能被继承,不能被其他程序用new创建实例对象。可以对比其他几种修饰符的作用:abstract修饰的类,不允许被实例化,这点和private修饰构造方法相同,但abstract修饰的类可原创 2015-11-17 10:31:46 · 13125 阅读 · 1 评论 -
Java:类的访问修饰符
可见性修饰符: public 在所有类中可见,在其他包中可以用import导入。 缺省 就是没有修饰符,在同一个包中的类中可见,在其他包中不能用import导入。原创 2015-11-17 10:17:38 · 470 阅读 · 0 评论 -
Java:public、private、protected修饰符
通常构造函数是public的, 今天无意间写了一个default的构造函数, 在另外一个包里面使用的时候居然发现The constructor is not visible,于是有了兴趣, 试验发现private, protected都是not visible.访问权限符:public对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中。 对于类来说: 也是一样。frie原创 2015-11-16 19:21:05 · 397 阅读 · 0 评论 -
Java:由Object.clone()而引出的protected权限问题
Object.clone()大家可能不太理解由Object.clone()而引出的protected权限问题这句话,那我们先看一段代码: 第一个类CloneClassOne package com.ustc.sup;public class CloneClassOne {}第二个类CloneClassTwo package com.ustc.sup;public class CloneClas原创 2015-11-12 16:06:03 · 7864 阅读 · 2 评论 -
Java:关于finally的说明
我们在异常处理时会使用finally关键字,那么大家可以看一下下面的代码public class TestException { public TestException() { } boolean testEx() throws Exception { boolean ret = true; try { ret = te原创 2015-11-09 12:53:01 · 468 阅读 · 0 评论 -
Java:try与finally
任何调用try 或者catch中的return语句之前,都会先执行finally语句,当然前提是finally存在。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。例一package exercise;/** * 基本类型测试try,finally *原创 2015-11-05 13:53:57 · 397 阅读 · 0 评论 -
Java:Java中Overriding and Hiding Methods
以前只是知道重写override和重载overload的区别,平时也是逮着用就是了, 但现在学Java时重写、替换、覆盖、置换、隐藏、重载等,简直乱得不行,归纳整理一下。从全局来看,java只有重写、隐藏、重载3种,具体归纳如下:基本概念方法签名:方法名+参数列表(参数类型、个数、顺序)。重写重写又叫覆盖、替换、置换。本文统一叫重写。 只有实例方法可以被重写!重写后的方法必须仍为实例方法!(实例原创 2015-10-22 21:17:50 · 1086 阅读 · 0 评论 -
Java:Stackoverflow上人气最旺的10个Java问题
1、为什么两个(1927年)时间相减得到一个奇怪的结果?如果执行下面的程序,程序解析两个间隔1秒的日期字符串并比较:public static void main(String[] args) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Str原创 2015-10-22 19:03:40 · 792 阅读 · 0 评论 -
Java:Effective Java 学习笔记(第49条:基本类型优先于装箱基本类型)
基本类型和装箱基本类型的区别:1.基本类型只有值,而装箱基本类型则具有与它们的值不同的同一性。 2.基本类型只有功能完备的至,而每个装箱基本类型除了它对应基本类型的所有功能值之外,还有个非功能值:null。 3.基本类型通常比装箱基本类型更节省时间和空间。 当在一项操作中混合使用基本类型和装箱基本类型时,装箱基本类型就是自动拆箱,这种情况无一例外。如果null对象引用被自动拆箱,就会得到一个N原创 2015-10-14 11:54:56 · 719 阅读 · 0 评论 -
Java:Java中的同一性和等同性
同一性(identity):java提供了判等运算符:==和!=,可以作用于基本数值类型,boolean型数值,引用类型.例如: 两个引用ref1和ref2引用了相同的对象或者都是null,那么表达式ref1==ref2的值为true,就算这两个引用具有不同的类型声明也是如此,否则表达式的值为false. 判等运算符测试的是引用的同一性,而不是对象的等同性.若两个引用指向同一个对象,那么它们是同原创 2015-10-14 11:48:13 · 1081 阅读 · 0 评论 -
Java:Effective Java 学习笔记(第48条:如果需要精确的答案,请避免使用float和double)
Effective Java Second Edition 第48条 如果需要精确的答案,请避免使用float和double。1.简介float和double类型主要是为了科学计算与工程计算而设计的,它们并没有提供完全精确的结果,所以不应该被用于需要精确结果的场合。在商业计算中要用BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数原创 2015-10-14 11:10:52 · 979 阅读 · 0 评论 -
Java:调用构造器的具体处理步骤
《Java 核心技术 卷1》关于调用构造器的具体处理步骤的叙述是:调用构造器的具体处理步骤所有数据域被初始化为默认值(0、false或者null)。按照在类说明中出现的次数,一次执行所有域初始化语句和初始化块。如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。(this(“Employee #” + nextId, s)只能放在第一行,否则编译出错。)执行这个构造器的主体。 怎么原创 2015-10-08 22:05:34 · 792 阅读 · 0 评论 -
Java:instanceof用法
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 用法: result = object instanceof class 参数: Result:布尔类型。 Object:必选项。任意对象表达式。 Class:必选项。任意已定义的对象类。 说明: 如转载 2015-09-26 15:58:23 · 414 阅读 · 0 评论 -
Java:String字符串内存分析
1.Java中内存分析:栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。例如,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动 释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆(heap):存放所有n原创 2015-09-19 23:00:02 · 3735 阅读 · 0 评论 -
Java:static静态方法
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:public class MainClass { // 使用static关键字声明静态方法 public static void print() { System.out.println("Hello World!");原创 2015-09-17 22:51:07 · 606 阅读 · 0 评论 -
Java:关于super()的用法
1.子类的构造的工程中必须调用父类的构造方法。//父类public class FaClass { public FaClass() { }}//子类public class SonClass extends FaClass { public SonClass(){ super();//显示调用父类构造方法 }}可以看到在子类SonClass原创 2015-09-17 11:34:44 · 534 阅读 · 0 评论