随笔分类 - Java-Thinking
摘要:1. 可以用二进制表达数字可以用二进制表达数字(加前缀0b/0B),包括:byte, short, int, long // 可以用二进制表达数字(加前缀0b/0B),包括:byte, short, int, long @Test public void testLiterals() { // An 8-bit 'byte' value: byte aByte = (byte)0b00100001; // A 16-bit 'short' value: short aShort = (short)0b10...
阅读全文
摘要:Web service是一个平台独立的,松耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Web services涉及技术:XML XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想SOAP 即Simple Object Access Protocol,SOAP使用XML消息调用远程方法,这样web services可以通过HTTP协议的
阅读全文
摘要:参考:http://docs.oracle.com/javase/6/docs/technotes/guides/net/enhancements-6.0.htmlhttp://blog.csdn.net/j2eeweiwei/article/details/3932789主要内容包括:更为实用的 NetworkInterface(Enhancement to NetworkInterface)、DNS 域名的国际化支持(Support for Internationalized Domain Names)、HTTP协商认证(HTTP Negotiate authentication)、跨平台
阅读全文
摘要:1. API改变增加了两个实现类java.util.zip.DeflaterInputStream: 此类为解压缩 "deflate" 压缩格式的数据实现流过滤器。它还用作其他解压缩过滤器(如 GZIPInputStream)的基础。java.util.zip.InflaterOutputStream: 为解压缩 "deflate" 压缩格式存储的数据实现输出流过滤器。比如,当客户希望通过网络发送压缩数据时,它们会非常有用。这些数据可以通过DeflaterInputStream压缩为包,然后通过网络发送。接收端接收到这些压缩的包后,再通过Inflater
阅读全文
摘要:1. JDK1.6中提供了java.io.Console类JDK1.6中提供了java.io.Console 类专用来访问基于字符的控制台设备。你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳。但我们不总是能得到可用的Console,一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。2. File类增加了如下方法如下方法获取磁盘使用信息:getTotalSpace() -
阅读全文
摘要:2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。集合框架增强如下:1. 增加了如下新接口(Interface)Deque - 一个双端队列,支持元素从双端插入与移除。从Queue接口继承而来。BlockingDeque - 一个队列当获取元素时如果队列为空则阻塞以等待;当插入时等待队列有空间可用。继承自Deque接口,此接口类属于java.util.concurrent包。NavigableSet - 一个可导航的继承于SortedSet接口的Set。 它可以按正序或倒序访问,此接口意图取代So
阅读全文
摘要:Document Object Model (DOM) Level 3文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。DOM3通过引入统一方式载入和保存文档和文档验证方法对DOM进行进一步扩展,DOM3包含一个名为“DOM载入与保存”的新模块,DOM核心扩展后可支持XML1.0的所有内容,包扩XML Infoset、 XPath、和XML Base。Java API:org.w3c.dom,
阅读全文
摘要:一. 背景System.getenv(String)方法继续有效;增加了新的System.getenv()方法,返回保存环境变量的Map。同时增加了以纳秒为计量单位的时间表示法nanoTime()。二. 示范代码 @Test public void testSystem() { long currentTime = System.currentTimeMillis(); long nanoTime = System.nanoTime(); System.out.println(currentTime + "|" + nanoTime); ...
阅读全文
摘要:java.lang.Thread类增强特性如下:线程优先级已经更改。java.lang.Thread.MIN_PRIORITY = 1java.lang.Thread.NORM_PRIORITY = 5java.lang.Thread.MAX_PRIORITY = 10为查询执行线程的状态提供了新的Thread.State枚举类及getState()方法。线程类增加了新的dump方法-getStackTrace()和getAllStackTraces(),为获取当前线程或者是所有线程的stack trace提供了编程的方法。以前只在ThreadGroup类中提供的uncaughtExcep..
阅读全文
摘要:集合框架在JDK1.5中增强特性如下:一. 新语言特性的增强泛型(Generics)- 增加了集合框架在编译时段的元素类型检查,节省了遍历元素时类型转换代码量。For-Loop循环(Enhanced for loop)- 节省了遍历集合中显式iterators的调用。自动装箱/拆箱(Autoboxing/unboxing)- 自动将基本类型及其包装类之间进行互相转换。更多阅读:JDK1.5新特性,语言篇二. 增加了三个新的接口Queue- 队列接口,除了基本的集合操作外,它还提供了额外的插入、提取和检查操作。Queue使用时要尽量避免Collection的add()和remove()方法,而是
阅读全文
摘要:java.util.concurrent, java.util.concurrent.atomic,和java.util.concurrent.locks 包提供了高性能的、可扩展的框架,保证开发并发类库与程序的线程安全性;诸如:线程池、线程安全的集合、各种同步器、任务计划框架、任务同步工具、原子变量、锁等等。此包将程序员从以前手写此类代码的环境中解放出来,就像集合框架为数据结构做的事一样。额外的,此包提供了低级别的原生调用以适应高级应用开发。详细参考:《Java Concurrency》读书笔记,使用JDK并发包构建程序更多内容:有关Java Concurrency的全部文章
阅读全文
摘要:一. 背景这是一个简单的文本扫描类,能够解析基本数据类型与字符串。它是StringTokenizer和Matcher类之间的某种结合。最大的优点是读取控制台输入非常方便,其它功能,有点鸡肋。二. 示范代码package com.clzhang.sample.thinking;import java.util.*;import org.junit.Test;public class JDK15Scanner { @Test public void testScanner() { // 主要功能,读取控制台输入 Scanner scanner1 = new ...
阅读全文
摘要:一. 背景ProcessBuilder类是用来创建操作系统进程的。与Runtime.exec相比,它提供了更加方便的方法以创建子进程。每个ProcessBuilder实例管理着一个进程属性的集合。start()方法用这些属性创建一个新的Process实例。start()方法可以从同一个实例重复调用(可以更改属性值后再调用)。每个ProcessBuilder实例管理着进程的如下属性:一条命令(a command),可以用List来表示,也可以用变长字符串。命令后面的参数与命令合并在一起。如:“cmd /c dir”,可以拆分为三个字符串,也可以放到一个List中。一个运行环境(an enviro
阅读全文
摘要:Formatter类提供了对布局对齐和排列的支持,以及对数值、字符串和日期、时间数据的常规格式和特定于语言环境的输出的支持。通用Java类型,诸如byte、BigDecimal和Calendar都被支持。Java语言格式化后的字符串很像C语言的printf函数,但比C语言严谨,比如,C语言忽略无效参数,而Java则会抛出异常。同时它也不是为多线程设计的,程序员需要自己考虑同步的问题。一. 语法1. 常规类型、字符类型和数值类型的格式说明符语法如下:%[argument_index$][flags][width][.precision]conversion 2. 用来表示日期和时间类型的格式说明
阅读全文
摘要:Java 1.5版本,就是Java 2 Standard Edition 5,Version 1.5,简称Java 5。版本代号Tiger。一. 泛型(Generics)C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。泛型提供一种途径,让你告诉编译器容器中存放的是什么,这样它就可以做一些检查工作。不符合规则的情况下,编译是通不过的。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。 @Test publ...
阅读全文
摘要:排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关键字R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。排序算法分类常见的有插入(插入排序/希尔排序)、交换(冒泡排序/快速排序)、选择(选择排序)、合并(归并排序)等。一.插入排序插入排序(Insertion Sort),它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到
阅读全文
摘要:No57 只针对异常的情况才使用异常异常应该只用于异常的情况下,它们永远不应该用于正常的控制流。No58 对可恢复的情况使用受检异常,对编程错误使用运行时异常Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception)、运行时异常(run-time exception)和错误(error)。如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。用运行时异常来表明编程错误。例如:数组访问下标越界。错误往往被JVM保留用于表示资源不足、约束失败,或者其它使程序无法继续执行的条件。No60 优先使用标准的异常表60 常用的异常异常使用场合
阅读全文
摘要:No45 将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。几乎每个局部变量的声明都应该包含一个初始化表达式。如果你还没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止。for循环比while循环好,参考如下两段代码:有问题的代码,运行时不会得到想要的结果:Iterator i = c.iterator();while(i.hasNext()){ doSomething(i.next());}...Iterator i2 = c2.iterator();while(i.hasNext()) { ...
阅读全文
摘要:No38 检查参数的有效性对于公有的方法,要用Javadoc的@throws标签(tag)在文档中说明违反参数值时会抛出的异常。这样的异常通常为IllegalArgumentException、IndexOutOfBoundsException或NullPointerException。/*** ...* @throws ArithmeticException if m is less than or equal to 0*/public BigInteger mod(BigInteger m) { if(m.signum() =0 && offset = 0&&
阅读全文
摘要:No30 用enum代替int常量一:综述int枚举模式,示范:// The int enum pattern - severely deficient!public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_SMITH = 2;还有一种是这种模式的变体,使用String常量代替int常量,称为String枚举模式。缺点:int枚举是编译时常量,如果它发生了变化...
阅读全文