添加了Blogger中源代码显示的CSS


CODE {
display : block;
white-space : pre;
background:#EEEEEE none repeat scroll 0 0;
border:1px solid #CCCCCC;
color:#000000;
font-family:'lucida console',fixed,monospace,terminal,couriernew,courier;
font-size:11px;
line-height:1em;
margin:2px 2px 6px;
overflow-x:auto;
overflow-y:hidden;
padding:2px;
}
CODE:first-line { line-height : 0; }


第二种

pre.source-code {
font-family : Andale Mono, Lucida Console, Monaco, fixed, monospace;
color : #000;
background-color : #eee;
font-size : 12px;
border : 1px dashed #999999;
line-height : 14px;
padding : 5px;
overflow : auto;
width : 100%;
text-indent : 0px;
}

... Read more!

最常用的Java工具

StringUtils

StringUtils.isEmpty(null) && StringUtils.isEmpty(""); // true
StringUtils.isBlank(" \n\t"); // true
StringUtils.substringAfterLast("foo.bar.baz", "."); // "baz"
StringUtils.substringBeforeLast("foo.bar.baz", "."); // "foo.bar"
StringUtils.split("foo.bar.baz", '.'); // { "foo", "bar", "baz" }
StringUtils.split("foo, bar,baz", ", "); // { "foo", "bar", "baz" }
StringUtils.leftPad("1", 3, '0'); // "001"

IOUtils and FileUtils

File file1;
File file2;
InputStream inputStream;
OutputStream outputStream;

// copy one file into another
FileUtils.copyFile(file1, file2);
IOUtils.copy(inputStream, outputStream);

// read a file into a String
String s1 = FileUtils.readFileToString(file1);
String s2 = IOUtils.toString(inputStream);

// read a file into a list of Strings, one item per line
List l1 = FileUtils.readLines(file1);
List l2 = IOUtils.readLines(inputStream);

// put this in your finally() clause after manipulating streams
IOUtils.closeQuietly(inputStream);

// return the list of xml and text files in the specified folder and any subfolders
Collection c1 = FileUtils.listFiles(file1, { "xml", "txt" }, true);

// copy one folder and its contents into another
FileUtils.copyDirectoryToDirectory(file1, file2);

// delete one folder and its contents
FileUtils.deleteDirectory(file1);


java.util.concurrent
使用 CopyOnWriteArrayList 和 ConcurrentHashMap,集合类型 List 和 Map 的高性能的、线程安全的实现。可参阅这里
在 Doug Lea 的 Concurrent Programming in Java 一书的第 2 章第 2.4.4 节(中,对 copy-on-write 模式作了最好的描述。实质上,这个模式声明了,为了维护对象的一致性快照,要依靠不可变性(immutability)来消除在协调读取不同的但是相关的属性时需要的同步。对于集合,这意味着如果有大量的读(即 get()) 和迭代,不必同步操作以照顾偶尔的写(即 add())调用。对于新的 CopyOnWriteArrayList 和 CopyOnWriteArraySet 类,所有可变的(mutable)操作都首先取得后台数组的副本,对副本进行更改,然后替换副本。这种做法保证了在遍历自身更改的集合时,永远不会抛出 ConcurrentModificationException。遍历集合会用原来的集合完成,而在以后的操作中使用更新后的集合。

这些新的集合,CopyOnWriteArrayList 和 CopyOnWriteArraySet,最适合于读操作通常大大超过写操作的情况。一个最常提到的例子是使用监听器列表。已经说过,Swing 组件还没有改为使用新的集合。相反,它们继续使用 javax.swing.event.EventListenerList 来维护它们的监听器列表。

集合的使用与它们的非 copy-on-write 替代物完全一样。只是创建集合并在其中加入或者删除元素。即使对象加入到了集合中,原来的 Iterator 也可以进行,继续遍历原来集合中的项。

// a map that may be modified (by the same or different thread) while being iterated
Map repository = new ConcurrentHashMap();

// same with lists. This one is only available with Java 6
List list = new CopyOnWriteArrayList();

此外关于apache common类库的使用,推荐这里
... Read more!

修改了Blog的body字体

一直不满意Blog中文字体的显示,曾经修改过很多种字体,但是一直没有找到满意的,今天换成了下面这个,感觉不错。


font-family: Pmingliu,verdana,arial,sans-serif;
font-size:14px;

... Read more!

如何让你的设计增添更多的亲切感

如何让你的设计增添更多的亲切感,这句话涵盖的范围是非常的大,从开始进入软件开发这一行开始,这句话就不断的出现在我的耳边。如何才是正确的合理的设计,如果用一句话概括,用户用了好的便利的才是真正的好。这一句话中完全把开发者和设计者抛到一边去了。是的,好的设计好的系统最终是让人用的,而不是一个摆设,唯有站在客户的角度来,或者说实际使用者的角度来分析设计系统才能够达到真正的成功。
话题扯的比较大,其实只是想说一个小问题,前段时间在和客户开需求分析会的时,在谈到一些字段的输入限制的时候,我方的主要设计者不断的抛出“几个字节”这样的话,然后不断的重复“全角是两个字节,半角是一个字节”。参加这个会议的是客户的总务部经理,以及两个股东。他们在听到这些专门术语的时候,都是一脸的茫然。回去的途中我忍不住说出了我的看法,我认为对于最终用户来讲从字节上进行限制是没有任何意义,直接从字的个数上进行限制就可以了,实际数据库设计的时候都按照最大字节数来进行设计。很可惜,最终没有说服Boss,更多的是由于语言上的原因吧。
... Read more!

通过jQuery的addClass来使得table的row高亮显示的困惑

问题起因:目前的项目中要实现下面的功能,在对话框中提供检索功能,检索结果使用table显示,然后使用鼠标单击行进行选中处理。为了使得画面更加易用,在鼠标移动经过某一行时,让改行进行高亮。使用jQuery进行下面的处理

//these two line adds the color to each different row
$("#mytable tr:even").addClass("eventr");;
$("#mytable tr:odd").addClass("oddtr");;
//handle the mouseover , mouseout and click event
$("#mytable tr").mouseover(function() {$(this).addClass("trover");}).mouseout(function() {$(this).removeClass("trover");}).click(function() {$(this).toggleClass("trclick");});

但是无论如何尝试,总达不到理想效果。目前问题还在困惑中。
... Read more!

在通过showModalDialog弹出的窗口中submit

问题:在通过showModalDialog弹出的子窗口中执行submit提交时,会弹出一个新窗口,并且无法正常获取目前的session
环境:SUN的JSF RI 1.2 TOMCAT6

经由:做JSF开发是第一次,这次从共通,基盘开始都是从0着手。以前用struts用惯了,没有感觉页面会有什么困难。但是在做子窗口进行查询的时候就遇到这个棘手的问题。google了一下。得出结论如下:
<head></head>标签里面加入如下标签
<base target="_self" />
... Read more!