JMongoBrowser
MongoDB GUI图形化管理工具 JMongoBrowser
重构-改善既有代码的设计.chm
重构-改善既有代码的设计
作者:Martin Fowler,Kent Beck,John Brant ,William Opdyke ,Don Roberts
翻译:侯捷、熊节
--------------------------------------------------------------------------------
Martin Fowler和本书另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。本书解释重构的原理(principles)和最佳实践方式(best practices),并指出何时何地你应该开始挖掘你的代码以求改善。本书的核心是壹份完整的重构名录(catalog of refactoring),其中每壹项都介绍壹种经过实证的代码变换手法(code transformation)的动机和技术。某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口。
软件工程领域的超级经典巨著,与另壹巨著《设计模式》并称"软工双雄",全美销量超过100000册,亚马逊书店伍星书。
在本书中,作者Martin Fowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。
当对象技术成为老生常谈之后——尤其在Java编程语言之中,新的问题也在软件开发社区中浮现了出来。缺乏经验的开发人员完成了大量粗劣设计,获得的程序不但缺乏效率,也难以维护和扩展。渐渐地,软件系统专家发现,与这些沿袭下来的、质量不佳的程序共处,是多么艰难。对象专家运用许多技术来改善既有程序的结构完美性与性能,已有数年之久。
Java实现Web报表打印功能.pdf
Java实现Web报表打印功能.pdf
java io读取文件到String
public static String loadAFileToStringDE1(File f) throws IOException {
long beginTime = System.currentTimeMillis();
InputStream is = null;
String ret = null;
try {
is = new BufferedInputStream( new FileInputStream(f) );
long contentLength = f.length();
ByteArrayOutputStream outstream = new ByteArrayOutputStream( contentLength > 0 ? (int) contentLength : 1024);
byte[] buffer = new byte[4096];
int len;
while ((len = is.read(buffer)) > 0) {
outstream.write(buffer, 0, len);
}
outstream.close();
ret = outstream.toString();
//byte[] ba = outstream.toByteArray();
//ret = new String(ba);
} finally {
if(is!=null) {try{is.close();} catch(Exception e){} }
}
long endTime = System.currentTimeMillis();
System.out.println("方法1用时"+ (endTime-beginTime) + "ms");
return ret;
}
public static String loadAFileToStringDE2(File f) throws IOException {
long beginTime = System.currentTimeMillis();
InputStream is = null;
String ret = null;
try {
is = new FileInputStream(f) ;
long contentLength = f.length();
byte[] ba = new byte[(int)contentLength];
is.read(ba);
ret = new String(ba);
} finally {
if(is!=null) {try{is.close();} catch(Exception e){} }
}
long endTime = System.currentTimeMillis();
System.out.println("方法2用时"+ (endTime-beginTime) + "ms");
return ret;
}
public static String loadAFileToStringDE3(File f) throws IOException {
long beginTime = System.currentTimeMillis();
BufferedReader br = null;
String ret = null;
try {
br = new BufferedReader(new FileReader(f));
String line = null;
StringBuffer sb = new StringBuffer((int)f.length());
while( (line = br.readLine() ) != null ) {
sb.append(line).append(LINE_BREAK);
}
ret = sb.toString();
} finally {
if(br!=null) {try{br.close();} catch(Exception e){} }
}
long endTime = System.currentTimeMillis();
System.out.println("方法3用时"+ (endTime-beginTime) + "ms");
return ret;
}
3个方法去读取一个大于50M的文件,当不设置jvm参数时都OutofMemery,当设置-Xmx128M时。只有方法3 可以通过,设置到-Xmx256M时也只有方法3可以通过,干脆设置512M,都可以了,运行时间如果正常的话一般都在4~5S
google-gson-stream-1.7.1.jar
google-gson-stream-1.7.1.jar
joda-time-2.1.jar
joda-time-2.1.jar
hibernate-jpamodelgen-1.2.0.Final.jar
hibernate-jpamodelgen-1.2.0.Final.jar
mongo-java-driver-2.8.0.jar
mongo-java-driver-2.8.0.jar
aopalliance-1.0.jar
aopalliance-1.0.jar
commons-javaflow-20060411.jar
commons-javaflow-20060411.jar
commons-fileupload-1.2.2.jar
commons-fileupload-1.2.2.jar
hibernate-entitymanager-4.1.6.Final.jar
hibernate-entitymanager-4.1.6.Final.jar
bcmail-jdk14-1.38.jar
bcmail-jdk14-1.38.jar
commons-codec-1.4.jar
commons-codec-1.4.jar
iTextAsian.jar
iTextAsian.jar
ehcache-spring-annotations-1.1.2.jar
ehcache-spring-annotations-1.1.2.jar