代码改变世界

Java的标签--弱化的goto

2012-10-25 20:00 by 会被淹死的鱼, 477 阅读, 0 推荐, 收藏, 编辑
摘要:看到一道这样的java的选择题, 代码如下 1 public static void main(String[] args) { 2 int k = 10; 3 for (int i = 0; i < 10; i++) { 4 start: 5 System.out.print("s"); 6 if (i > 5) break; 7 else System.out.print("g"); 8 while(k > 0) { 9 ... 阅读全文

Guava学习笔记(6)-- ImmutableCollections简介

2012-10-17 14:35 by 会被淹死的鱼, 1377 阅读, 0 推荐, 收藏, 编辑
摘要:Immutable是不可变的,不可变的对象本身是有很多优点的,包括可以在未受信任的类库中安全的使用这些对象线程安全的:可以被多线程使用,而且不存在竞争问题不需要支持可变性, 可以尽量节省空间和实践开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)可以被使用为一个常量,并且期望在未来也是保持不变的不可变对象的复制是一种很好的防卫性编程技巧,Guava提供了与所有标准集合对应的不可变集合,也包括了Guava自身扩展的一些集合。JDK提供了Collections.unmodifiableXXX系列方法, 但是有自身的一些问题使用不是很广泛,而且繁琐;在进制防卫性复制的时 阅读全文

[Java多线程]ABC三个线程顺序输出的问题

2012-10-15 17:59 by 会被淹死的鱼, 15995 阅读, 0 推荐, 收藏, 编辑
摘要:大概的问题是这样的:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C要求, 同时启动三个线程, 按顺序输出ABC, 循环10次这是一个多线程协同的问题, 本身多线程是没有执行顺序的, 顺序不一定, Java在concurrent里面提供了多线程同步的支持使用ReentrantLock来解决, 还有个state整数用来判断轮到谁执行了 1 import java.util.concurrent.locks.Lock; 2 import java.util.concurrent.locks.ReentrantLock; 3 4 public class ABC { 5 ... 阅读全文

Guava学习笔记(5)--Throwables简化异常处理

2012-10-14 22:21 by 会被淹死的鱼, 670 阅读, 0 推荐, 收藏, 编辑
摘要:有时候, 我们需要捕获异常, 你想要传递异常到下一个try/catch块中. RuntimeException或Error是不强制捕获的.Guava提供了一些工具类, 可以简单地捕获和重新抛出多个异常.1 try {2 someMethodThatCouldThrowAnything();3 } catch (IKnowWhatToDoWithThisException e) {4 handle(e);5 } catch (Throwable t) {6 Throwables.propagateIfInstanceOf(t, IOExceptio... 阅读全文

Guava学习笔记(4)--Ordering简介[翻译+学习笔记]

2012-10-14 21:35 by 会被淹死的鱼, 1988 阅读, 0 推荐, 收藏, 编辑
摘要:Ordering是Guava最常用的Comparator类, 可以用来操作, 扩展和使用comparators.自定义比较器, 进行排序判断, 进行排序, 获取最大最小值, 获取最大最小的前几个值等方法.几个常用的static方法, 提供了三种常用的比较器方法描述natural()使用Comparable类型的自然顺序, 例如, 整数从小到大, 字符串是按字典顺序.usingToString()使用toString()返回的字符串按字典顺序进行排序arbitrary()返回一个所有对象的任意顺序, 即compare(a, b) == 0 就是 a == b (identity equality 阅读全文

Guava学习笔记(3)--覆写Object的常用方法[翻译+学习笔记]

2012-06-30 17:43 by 会被淹死的鱼, 1133 阅读, 0 推荐, 收藏, 编辑
摘要:Java的Object是所有类的父类, 也有几个常用的需要覆写的方法, 比如equals, hashCode和toString.每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, 比如apache commons lang.Guava也提供了类似的方式, 在JDK7也提供了和Guava类似的方法.equalsequals是一个经常需要覆写的方法, 可以查看Object的equals方法注释, 对equals有几个性质的要求: 自反性reflexive, 对称性symmetric, 传递性transitive, 一致性consistent. 还有一个要求: 对于所有 阅读全文

Guava学习笔记(2)--使用Preconditions作参数的预判断[翻译+学习笔记]

2012-06-27 18:57 by 会被淹死的鱼, 3044 阅读, 0 推荐, 收藏, 编辑
摘要:Guava中提供了一个作参数检查的工具类--Preconditions, 静态导入这个类, 可以大大地简化代码中对于参数的预判断和处理.import static com.google.common.base.Preconditions.*;在以前, 我们需要判断一个参数不为空的话, 需要像下面这样写 public void testMethod(Object obj) { if (obj == null) { throw new NullPointerException(); } // ... other operations }每次都要添加if语句来做判断, 重复的工作会做好多次... 阅读全文

Guava学习笔记(1)--安全地使用null(Using and avoiding null)

2012-06-20 20:26 by 会被淹死的鱼, 3114 阅读, 0 推荐, 收藏, 编辑
摘要:Guava是一个基于java1.6的类库集合, 包含了几个google的核心库, collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等库, 这些工具都使用在google的生产环境.使用Guava很简单, 只需要包含他的库文件既可.官方网址: http://code.google.com/p/guava-libraries/null是一个特殊的值, 却经常是有着实在含义的, null可以表达失败, 可以表示成功, 可以表示任何我们定义 阅读全文

JUnit使用abstract类来进行测试

2012-04-11 14:27 by 会被淹死的鱼, 1884 阅读, 0 推荐, 收藏, 编辑
摘要:JUnit是一个非常强大的工具, 可以帮助我们进行单元测试.由于JUnit本身设计的非常好, 所以可以进行任意的扩展, 有很多使用技巧, 这次, 笔者和大家讨论一下使用抽象类来进行JUnit测试. 很简单, 但是很实用.测试环境: eclipse indigo, JUnit 4编写一个抽象类, 这个例子来自[参考1].package junit.abstracttest;import static org.junit.Assert.*;import java.util.List;import org.junit.Before;import org.junit.Test;public abstr 阅读全文

不使用条件判断和比较运算符来比较大小

2012-03-08 15:23 by 会被淹死的鱼, 3375 阅读, 0 推荐, 收藏, 编辑
摘要:平时我们都是使用了比较运算符和条件判断, 来进行数字大小的比较, 但是有一些比较巧妙的方法, 也可以比较大小.查了一些资料, 之后, 发现了三种思路, 设两个数为a和ba - b的结果, 进行移位, 取符号位, 0说明结果是正数, a > b, 1说明结果是负数, a < b(a+b)/2 + |(a-b)/2| 或者 (a+b)/2 - |(a-b)/2| , 前者可以取得较大的值, 后者取得较小的值, 很容易数学上证明分配一个长度为a的数组array[a], 判断array[b]是否越界, 越界在java中会抛出异常下面是用java实现的上述三种方法第一种的代码实现 /** * 阅读全文
上一页 1 2 3 4 5 6 7 ··· 11 下一页