JAVA ’ 目录归档

Java中的模板模式

原文链接 作者:Pankaj Kumar   译者:f0tlo <1357654289@qq.com>

模板模式是一种行为设计模式,它的实现思路是,创建一个桩方法,并且定义一些步骤让子类来实现。模板方法定义了一个算法的执行步骤,或者说能够提供一种默认的实现,这种实现概括一部分子类或者全部子类的共同部分。

举一个例子帮助理解,假设提供一种造房子的算法。算法的步骤就是模拟造房子的过程:建地基、建支撑,最后添加墙和窗户 – 1. Fundation,2. Pillars,3. Walls,4. Windows。最重要的一点就是不能改变此建造过程,比如不可能在没用地基的时候就开始建造窗户。这个例子中,我们就创建了一个模板方法 – 将使用不同的方法完成对房子的建造。

为了确保子类不能重写(override)这个模板方法,应当使用final

阅读全文

Java IO: PipedInputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

PipedInputStream可以从管道中读取字节流数据,代码如下:

[code lang=”java”]
InputStream input = new PipedInputStream(pipedOutputStream);

int data = input.read();

while(data != -1) {

//do something with data…

doSomethingWithData(data);

data = input.read();

}

input.close();
[/code]

请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理

阅读全文

Java IO: PipedOutputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

PipedOutputStream可以往管道里写入读取字节流数据,代码如下:

[code lang=”java”]
OutputStream output = new PipedOutputStream(pipedInputStream);

while(moreData) {

int data = getMoreData();

output.write(data);

}

output.close();
[/code]

请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理

PipedOutputStream的write()方法取一个包含了待写入字节的int类型变量作为参数进行写入。

Java IO管道

一个PipedOutputStream总是需要与一个PipedInputStream相关联。当这两种流联系起来时,它们就形成了一条管道。要想更多地了解Java IO中的管道,请参考Java IO管道

Java Reflection(七):私有变量和私有方法

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
内容索引
访问私有变量
访问私有方法

在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点。使用这个功能并不困难,在进行单元测试时这个功能非常有效。本节会向你展示如何使用这个功能。

注意:这个功能只有在代码运行在单机Java应用(standalone Java application)中才会有效,就像你做单元测试或者一些常规的应用程序一样。如果你在Java Applet中使用这个功能,那么你就要想办法去应付SecurityManager对你限制了。但是一般情况下我们是不会这么做的,所以在本节里面我们不会探讨这个问题。

阅读全文

Java IO: File

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下几点:

  • 检测文件是否存在
  • 读取文件长度
  • 重命名或移动文件
  • 删除文件
  • 检测某个路径是文件还是目录
  • 读取目录中的文件列表

请注意:File只能访问文件以及文件系统的元数据。如果你想读写文件内容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile。如果你正在使用Java NIO,并且想使用完整的NIO解决方案,你会使用到java.nio.FileChannel(否则你也可以使用File)。

阅读全文

Java Reflection(六):Getters and Setters

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
使用Java反射你可以在运行期检查一个方法的信息以及在运行期调用这个方法,使用这个功能同样可以获取指定类的getters和setters,你不能直接寻找getters和setters,你需要检查一个类所有的方法来判断哪个方法是getters和setters。

阅读全文

Java Reflection(五):方法

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
内容索引
获取Method对象
方法参数以及返回类型
通过Method对象调用方法

使用Java反射你可以在运行期检查一个方法的信息以及在运行期调用这个方法,通过使用java.lang.reflect.Method类就可以实现上述功能。在本节会带你深入了解Method对象的信息。

阅读全文

《GO并发编程实战》—— WaitGroup

声明:本文是《Go并发编程实战》的样章,感谢图灵授权并发编程网站发布样章,禁止以任何形式转载此文。
我们在第6章多次提到过sync.WaitGroup类型和它的方法。sync.WaitGroup类型的值也是开箱即用的。例如,在声明

[code lang=”java”]
var wg sync.WaitGroup
[/code]

之后,我们就可以直接正常使用wg变量了。该类型有三个指针方法,即Add、Done和Wait。
类型sync.WaitGroup是一个结构体类型。在它之中有一个代表计数的字段。当一个sync.WaitGroup类型的变量被声明之后,其值中的那个计数值将会是0。我们可以通过该值的Add方法增大或减少其中的计数值。例如:

阅读全文

Java IO: RandomAccessFile

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分。FileInputStream和FileOutputStream没有这样的功能。

创建一个RandomAccessFile

在使用RandomAccessFile之前,必须初始化它。这是例子:

[code lang=”java”]
RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");
[/code]

阅读全文

Java 集合教程

作者:Jakob Jenkov。 原文地址 译者:David.zhang   译文地址  校对:方腾飞

这些Java集合API 以一组类和接口提供给开发者,这样做容易处理object集合,除了它们的size能动态改变之外,感觉collection的工作原理有点像Array,并且它们拥有比Array更多的该机特性

相比于你自己去写一个集合类,不如用Java提供这些立即可以使用的集合类,这个教程将关注于Java集合,并且Java6中有很多特殊的Java集合。

阅读全文

Java IO: FileOutputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

FileOutputStream可以往文件里写入字节流,它是OutputStream的子类,所以你可以像使用OutputStream那样使用FileOutputStream。

这是一个FileOutputStream的例子:

阅读全文

Java Reflection(四):变量

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)

内容索引
获取Field对象
变量名称
变量类型
获取或设置(get/set)变量值

使用Java反射机制你可以运行期检查一个类的变量信息(成员变量)或者获取或者设置变量的值。通过使用java.lang.reflect.Field类就可以实现上述功能。在本节会带你深入了解Field对象的信息。

阅读全文

《Java特种兵》5.2 线程安全

本文是《Java特种兵》的样章,感谢博文视点和作者授权本站发布

接下来的内容都将基于多核处理器,因为单核处理器不会出现将要谈到的可见性问题,不过并不代表单核CPU上多个线程就没有一致性问题,因为CPU有时间片原则,还会有其他的一些问题,例如重排序。

阅读全文

Java IO: OutputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

OutputStream类是Java IO API中所有输出流的基类。子类包括BufferedOutputStream,FileOutputStream等等。参考Java IO概述这一小节底部的表格,可以浏览完整的子类的列表。

阅读全文

Java IO: FileInputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

FileInputStream可以以字节流的形式读取文件内容。FileInputStream是InputStream的子类,这意味着你可以把FileInputStream当做InputStream使用(FileInputStream与InputStream的行为类似)。

阅读全文

return top