代码改变世界

随笔档案-2012年10月

java的语法糖-泛型 类型擦除

2012-10-28 00:40 by 会被淹死的鱼, 433 阅读, 收藏,
摘要: 简单的java代码, 例子来自参考[1] 1 import java.util.Map; 2 import java.util.HashMap; 3 4 class Hello { 5 public static void main(String[] args) { 6 Map<String, String> map = new HashMap<String, String>(); 7 map.put("hello", "你好"); 8 map.put("how are you?", "吃了没?&qu 阅读全文

Java的标签--弱化的goto

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

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

2012-10-15 17:59 by 会被淹死的鱼, 16049 阅读, 收藏,
摘要: 大概的问题是这样的:有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 会被淹死的鱼, 676 阅读, 收藏,
摘要: 有时候, 我们需要捕获异常, 你想要传递异常到下一个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 会被淹死的鱼, 1997 阅读, 收藏,
摘要: Ordering是Guava最常用的Comparator类, 可以用来操作, 扩展和使用comparators.自定义比较器, 进行排序判断, 进行排序, 获取最大最小值, 获取最大最小的前几个值等方法.几个常用的static方法, 提供了三种常用的比较器方法描述natural()使用Comparable类型的自然顺序, 例如, 整数从小到大, 字符串是按字典顺序.usingToString()使用toString()返回的字符串按字典顺序进行排序arbitrary()返回一个所有对象的任意顺序, 即compare(a, b) == 0 就是 a == b (identity equality 阅读全文