Java DNS cache 时效设置备忘

我们知道java的InetAddress会通过自身的cache缓存dns解析结果。
缓存的策略主要有两种,一种是缓存正确解析后的IP地址,还有一种是缓存解析失败后的状态。

这两种策略的时效配置都在 %JRE%\lib\security\java.security 这个文件里。
TTL=Time to Live

networkaddress.cache.ttl

缓存正常解析后的ip,如果在缓存时效内再次lookup时直接返回缓存结果。
缓存时间:

1,在启用 java security manager时,是永久缓存。(PS: jboss, tomcat等app server默认不启用 java security manager,资料见 这里)
2,不启用的话,默认是缓存30秒。
3,缓存时间 设为0的话,表示不缓存,设置-1表示永久缓存,正数表示缓存时间(秒)。

Read more…

2010/07/29 | Posted in Development Skills

剖析一个java对象初始化顺序问题

今天我在Dzone阅读了一篇关于java对象实例初始化顺序的有趣文章。说它有趣,是因为作者使用了一种并不太推荐的编码风格,只有用这种编码风格才能触发这个极为少见的 Java object initialization order 问题。

其实java对象初始化顺序算是一个比较基础的java知识点。但是网上的文章多半描述不清,使用上一不小心就容易出问题。
所以在本文中,我想结合JLS和自己的理解,举例剖析问题的所在。

OK,我们先来看个模仿Dzone作者原意的简单例子:

Read more…

2010/07/21 | Posted in JVM

Docbook转pdf技巧-选择正确的TOC页种类

Docbook转pdf时,可以自由选择想要生成的TOC页种类。一般是通过修改fop(docbook转pdf工具)的配置参数来完成。

官方默认的TOC页配置参数如下:

<xsl:param name="generate.toc">
/appendix toc,title
article/appendix  nop
/article  toc,title
book      toc,title,figure,table,example,equation
/chapter  toc,title
part      toc,title
/preface  toc,title
reference toc,title
/sect1    toc
/sect2    toc
/sect3    toc
/sect4    toc
/sect5    toc
/section  toc
set       toc,title
</xsl:param>

book标签后面用逗号隔开的字串,就是用来控制生成的索引页种类的。
接下来,你可以根据自己的需求,修改下这个字串。
按照多数技术文档的惯例,它们会在这里去掉figure,table,example,equation这些索引页,只保留Table of Content和Title。
修改后的配置如下:

<xsl:param name="generate.toc">
/appendix toc,title
article/appendix  nop
/article  toc,title
book      toc,title
/chapter  toc,title
part      toc,title
/preface  toc,title
reference toc,title
/sect1    toc
/sect2    toc
/sect3    toc
/sect4    toc
/sect5    toc
/section  toc
set       toc,title
</xsl:param>

最后,将上面的配置添加到 FOP 的渲染xsl里即可。

2010/07/20 | Posted in Others

一段Docbook批量生成PDF和HTML的Makefile脚本

这段脚本的作用是,自动将当前目录下Docbook格式的 *.xml 批量转换成同名的 pdf 和 html。
使用脚本前,你需要确保本机已安装Docbook转换工具,包括xsltproc (windows版)和apache fop,以及docbook xsl namespace

然后,修改 PATH Variable 处3个变量路径。分别对应HTML的xsl,PDF格式的xsl以及FOP配置文件路径。
最后,在当前目录中执行 make html && make pdf 即可,html和pdf也可单独执行。

# Docbook Makefile Writed by Ken Wu
 
# Path Variable
XSLFILE_HTML=docbook_html.xsl
XSLFILE_PDF=docbook_pdf.xsl
FOP_CONF_FILE=D:/fop-0.95-bin/fop-0.95/conf/fop.xconf
 
# Properties for make
XML_FILE=$(wildcard *.xml)
HTML_FILE=$(XML_FILE:.xml=.html)
FO_FILE=$(XML_FILE:.xml=.fo)
PDF_FILE=$(XML_FILE:.xml=.pdf)
 
.PHONY: html pdf clean
 
html : $(HTML_FILE)
 
%.html : %.xml
	xsltproc -o $(@F) $(XSLFILE_HTML) $&lt;
 
pdf : $(FO_FILE)
 
%.fo : %.xml
	xsltproc -o $(@F) $(XSLFILE_PDF) $&lt;
	fop -c $(FOP_CONF_FILE) $(@F) -pdf $(PDF_FILE)
 
clean:
	rm -f *.html *.fo *.pdf

“&lt ;” 这个符号请转成 “<“

2010/07/15 | Posted in Linux & Gentoo, Others

一个java程序员的C++学习之路

最近想写点有用的东西,发现自己最拿手的java用起来真是笨手笨脚的。
碰到好多实现起来巨繁琐的问题,比如操作底层库,和OS framework交互,做个用户体验好点的本地图形程序等等,这些都是java的软肋。

而看看人家C++,这类问题哪个不是轻松搞定。
对我来说,也比较惭愧,自己大学里学的C++现在都忘得差不多。除了hello world和console out/input之外,其他一概丢回给老师了。

其实,我一直对底层颇感兴趣,工作中也只能接触一下JVM,但VM毕竟是VM,始终与底层失之交臂。
就好比隔了座山,山那边的事物,山里人多半是一知半解。
所以下半年我打算恶补一下C++。顺便在博客里记录本人的一些学习心得,望各位C++大虾多多指点。

目前我正在阅读钱能著的《C++程序设计教程》,这本书号称是大学C++教学指定用书。我看了几章,说实话,这书真的是漏洞百出。
最好玩的是,作者还时不时发几句牢骚,比如“C++好难啊,reinterpret_cast这么难的关键字,亏他设计的出”,看到这里真让我哭笑不得。
你不介绍reinterpret_cast关键字的设计初衷或原理也就罢了,还向读者诉苦,这种“幽默”看多了,心里会承受不了。

不过话说回来,整书对于初学者来说,还是非常通俗易懂的。
读完这本书后,接下来我计划挺进 《C++ primer》,幸好此前有阅读过《The C programming language》,所以读懂它比较有信心。

下文是我整理的一些C++图书列表,按顺序阅读,可涵盖入门到精通。

Read more…

2010/07/06 | Posted in Cpp

利用foobar声谱鉴别有损音源

Foobar是一款非常简洁且注重音质的音乐播放器。其自身提供了很多非常专业的分析面板,用于满足不同用户的需求。
今天,我向大家分享一个用foobar声谱面板来初步鉴别音源是否经过有损压缩的小技巧。

怎样调出Foobar声谱面板?

通过点击 View(视图) > Visualizations(可视化) > Spectrogram(声谱)

声谱面板的横坐标代表时间,纵坐标代表频率,颜色的深浅表示声音的分贝大小。

Read more…

2010/06/22 | Posted in Others

Java Reference概念整理,初级

Share with you.

Strong Reference, 强引用,即java标准的引用方式,表示GC从 Root Set 开始向下扫描,可以找到对应的 Strong Reference。

Referent,被包装为 Weak, Soft, Phantom Reference的对象引用称之为 referent。后面的内容会多次提到这个名词。

Weak Reference, 弱引用。当一个referent,在运行时没有同时被强,软引用,只被Weak Reference自身引用,且Weak Reference从 Root Set 可达,则该referent会被GC回收。

WR的作用,一般是为referent提供一个被回收的凭据,结合ReferenceQueue可以让程序在第一时间得到referent被回收的事件,从而做一些额外的clean操作。(如果对ReferenceQueue作用和回调感兴趣,可以先看最下面的 ReferenceQueue 简介)

Read more…

2010/05/20 | Posted in JVM