java
文章平均质量分 70
塘外人
我是程序猿
展开
-
velocity的使用
关于velocity的使用,感觉最 困惑的是它的文件加载系统,他与java io的默认加载方式不同,而且对配置文件和模板文件使用不同的加载方式。感觉这个非常不友好!!!下面是两种不同方法:一,配置文件和模板文件放在jvm启动目录下,最简单的使用方法:java code: private static void testVMFileInRoot() throws Except原创 2011-06-14 21:32:00 · 1053 阅读 · 0 评论 -
Java中WeakReference、WeakHashMap、SoftReference、ReferenceQueue的作用和使用场景
详见以下测试代码及其注释:package test;import static junit.framework.Assert.assertFalse;import static junit.framework.Assert.assertNotNull;import static junit.framework.Assert.assertNull;import static jun原创 2011-08-30 01:02:58 · 4987 阅读 · 1 评论 -
Ubuntu11.10下解决 jmap等jdk工具attach pid错误
1.错误案例nathan@ubuntu:~/Downloads$ jmap -heap 3991Attaching to process ID 3991, please wait...Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process原创 2012-02-27 21:40:36 · 9739 阅读 · 3 评论 -
java thread dump相关文章
文章:1.Thread Dump分析:http://blog.csdn.net/wanyanxgf/article/details/69449872.jstack和线程dump分析:http://jameswxx.iteye.com/blog/10411733.thread dump :http://blog.sina.com.cn/s/blog_53b6edca0100g原创 2012-03-08 17:18:48 · 1590 阅读 · 0 评论 -
java问题诊断方法及工具
线上系统出现问题时,需要记载系统当前运行状况,总结一下,大概需要关注以下几个方面:1.负载:——top命令 在linux上,执行top 等命令,关注load, Memory, CPU 等系统概况,以及关注CPU和memory 占用较多的进程。 使用top -H, 并按 shift+p 对CPU进行排序,找到当前占用CPU最多的线程。(top -u bpm -H),-H 按线程显示,否则原创 2012-03-08 17:40:06 · 1754 阅读 · 0 评论 -
【读书笔记】TiJava——注解
内置注解•内置注解–@Override–@Deprecated–@SuppressWarnings•元注解–@Target–@Retention–@Documented–@Inherited编写注解处理器•内置注解很少,打多时候,程序员自定义注解,并编写处理器处理它们•使用的反射方法:–Class.getDeclaredM原创 2011-10-27 23:57:37 · 520 阅读 · 0 评论 -
【读书笔记】TiJava——持有对象
内容拾遗•Arrays.asList()返回的列表底层表示的是数组,因此不能调尺寸。•Arrays.asList()有时需要显示类型参数说明。•必须使用Arrays.toString()打印数组内容。•HashSet、HashMap可最快的获取元素。•TreeSet、TreeMap按比较结果升序保存对象。•LinkedHashSet、LinkedHashMap按添加顺序原创 2011-08-04 00:29:39 · 545 阅读 · 0 评论 -
【读书笔记】TiJava——内部类
内部类•可以在任意作用域内定义内部类•在类作用域里定义–引用范围由其访问属性决定•方法内部类-引用范围只在方法内部•任意作用域类-引用范围只在该作用域内部类内部类•内部类对象包含隐式成员指向外部类对象•用OuterClass.this引用外部类对象•在外部类非静态方法外创建内部类对象,不能直接new Outer.Inner().必须先创建外部原创 2011-07-29 01:00:42 · 559 阅读 · 0 评论 -
【读书笔记】TiJava——并发
函数型语言•Erlang:大量使用并发的时候使用协作式和抢占式•协作多线程、协作式系统–每个任务自动放弃控制–同时执行的线程数无限制–适合处理大量的仿真元素线程与设计•线程使你能够创建更加松耦合的设计•线程的使用–实现Runable–使用Thread•Thread.yield——不能依赖–将cpu从一个线程让给另一个线程原创 2011-11-20 21:31:32 · 798 阅读 · 0 评论 -
【读书笔记】TiJava——泛型
类型参数推断•使用泛型类时,必须在创建对象时指定类型参数。•使用泛型方法时,不需要指定类型参数。•方法的泛型返回值(被认为是一个Object类型)作为参数传给另一个方法时,不会执行类型推断,不能编译,除非使用显示类型说明。擦除•ArrayList.class== ArrayList.class==ArrayList.class•在泛型代码内部,无法获得任何有原创 2011-08-20 23:44:01 · 5127 阅读 · 0 评论 -
【读书笔记】AgilePPP——咖啡的启示
按行为划分系统•程序的中心是行为•不基于行为的系统划分,基本上是严重错误的。•正是系统的行为为我们提供了第一个关于应该如何划分系统的线索水蒸气类•没有任何成员变量、状态•只是一个调用转换器•水蒸气类没有存在的必要虚拟抽象•抽象是非常微妙的•对抽象类,多问问:谁使用它们?•一个仅仅含有抽象方法并且不具有任何使用者的类,完全是一个无用的类原创 2012-01-09 00:11:41 · 950 阅读 · 0 评论 -
【读书笔记】TiJava——枚举类型
枚举类型特性•继承自java.lang.Enum•values()返回枚举数组•自动提供equals和hashCode方法•自动实现Comparable和Serializable接口•可以用==比较两个枚举值•默认name()等同toString()•valueOf将字符串名称转换为枚举类型值添加方法•枚举定义必须在方法定义之前•枚举定义原创 2011-10-26 00:31:25 · 745 阅读 · 0 评论 -
【读书笔记】TiJava——IO系统
File•可表示文件也可表示目录•相关类:FilenameFilter•相关功能:–list–listFilesio的装饰器模式•一般先用缓冲装饰,再用其他装饰•当使用DataOutputStream时,写字符串并且让DataInputStream能够恢复它的唯一可靠做法是用UTF-8编码,即使有writeUTF和readUTF方法Inp原创 2011-09-05 00:20:35 · 1077 阅读 · 0 评论 -
【读书笔记】深入理解Java虚拟机——垃圾收集
Ubuntu11.10下编译 OpenJDK7http://blog.csdn.net/yhmhappy2006/article/details/7281710基本垃圾收集算法 标记-清除(Mark-Sweep)效率问题内存碎片适用于老年代复制(Copying)解决碎片问题可用内存缩小(一半)存活率高时,复制效率低用于新生代标记-整理(Mark-原创 2012-03-13 23:41:57 · 1695 阅读 · 0 评论 -
【读书笔记】TiJava——内部类使用范例:温室控制器
控制器抽象层,包括抽象事件的定义及控制器的定义:public abstract class Event { private long eventTime; protected final long delayTime; public Event(long delayTime) { this.delayTime = delayTime; } public void star原创 2011-11-17 23:48:02 · 496 阅读 · 0 评论 -
【读书笔记】企业应用架构模式——并发、事务与锁
一、并发问题的产生多线程/进程同时操作(读/写)同一数据二、并发问题的种类丢失更新(lost update)第一类更新丢失(回滚丢失): 当2个事务更新相同的数据源,如果第一个事务被提交,而另外一个事务却被撤销,那么会连同第一个事务所做的跟新也被撤销。也就是说第一个事务做的跟新丢失了。第二类更新丢失(覆盖丢失): 第二类更新丢失实在实际应用中经常遇到的并原创 2012-08-23 00:13:53 · 2490 阅读 · 0 评论 -
Ubuntu11.10下编译 OpenJDK7
1.首先去 这里 http://download.java.net/openjdk/jdk7/ 下载OpenJDK7的源码zip包 2. 安装编译工具包 如没安装aptitude,则先安装aptitude(sudo apt-get install aptitude) sudo aptitude build-dep openjdk-63.注意:Ubuntu系统的语言必须切原创 2012-02-22 00:14:28 · 3455 阅读 · 0 评论 -
java 内部工作线程介绍
Java程序运行的过程中,不但包括开发者启动的主线程和子线程。还包括很多内部线程。了解这些线程,对了解Java工作原理,及复杂环境下debug会有帮助。 首先需要查看Java程序的内部线程,我使用以下两种方法查看Java下的线程: 1.Jconsole——JDK自带的JMX查看管理工具(GUI)。 2.Linux下使用kill -3 pr转载 2012-02-15 23:55:03 · 4122 阅读 · 0 评论 -
峰谷电电费计算程序
package nathan.epower;public class PowerCalc { private double top; private double down; private double topCost; private double downCos原创 2011-08-09 01:26:30 · 4925 阅读 · 1 评论 -
从导出qq消息中提取qq好友
package nathan.qq.groupfriend;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Hash原创 2011-08-10 01:34:18 · 1382 阅读 · 0 评论 -
优先级队列的使用
自定义对象,并实现Comparable接口。使用代码如下:package tijava.container;import java.util.Collections;import java.util.PriorityQueue;import java.util.Que原创 2011-08-23 01:26:50 · 736 阅读 · 0 评论 -
深入探讨 Java 类加载器
ClassLoader 中与加载类相关的方法方法说明getParent()返回该类加载器的父类加载器loadClass(String name)加载名称为 name 的类,返回原创 2011-08-02 22:29:52 · 762 阅读 · 0 评论 -
Build Number Maven Plugin的使用方法
Build Number Maven Plugin的使用方法1. Build Number Maven Plugin用于获取svn的版本及分支目录,可以将它们用于应用中2.先在maven的setting.xml中添加仓库,用于下载该插件: codeh原创 2011-08-23 23:07:36 · 7231 阅读 · 0 评论 -
Maven内置变量说明
Maven内置变量说明:${basedir} 项目根目录${project.build.directory} 构建目录,缺省为target${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes转载 2011-09-22 14:01:10 · 17549 阅读 · 1 评论 -
关于Java中使用容器的几个注意点
关于Java中使用容器的几个注意点在看老代码时,看到一处使用HashSet的场景,检查了放入HashSet的类型参数,发现这个类型并没有重写equals和hashCode方法,这个后果的严重程度可想而知。就此暂时总结了以下几点,并配合测试代码,共勉!总结点如下:1原创 2011-08-27 01:28:11 · 1816 阅读 · 0 评论 -
Left side (xx) of 'y' operation has null value. Operation not possible
Left side (xx) of 'y' operation has null value. Operation not possibleI have been seeing a lot of messages like this in my dotCMS转载 2011-10-12 15:14:35 · 5240 阅读 · 0 评论 -
持续集成相关资料
论文:Martin Fowler: Continuous Integration http://www.martinfowler.com/articles/continuousIntegration.html (中译版:http://www.cnblogs.com/itech原创 2011-10-08 14:16:12 · 810 阅读 · 0 评论 -
一个简单的示例揭秘LSP原则真谛
对LSP的理解,之前只停留在表面,并未深入理解。表面理解是指认为LSP就是仅仅依靠面向对象多态的特性,在使用基类对象的地方都能使用子类对象简单的替换。这还不是严格的遵循LSP。真正的要遵循LSP原则,是必须子类和基类行为上的绝对一致。基于契约的设计可以很好的保证了对LSP的遵循。下面简单的java代码,揭示了LSP真谛:package com.oop.lsp;public cl原创 2011-12-01 00:03:09 · 2983 阅读 · 0 评论 -
使用命令模式实现简单的支持撤销的计算器
1.支持的操作符有 "+", "-", "*", "/"2.撤销符号为"3.例如输入"1", "+", "2", "4.例如输入"100", "/", "2", "要求:1)使用TDD 2)使用命令模式5.简单类图设计6.单元测试package com.pattern.command;import junit.framewor原创 2011-12-16 01:24:16 · 1780 阅读 · 2 评论 -
Bridge模式
一、 桥梁(Bridge)模式桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。注:《Java与模式》一书认为Bridge模式不是一个使用频率很高的模式,我不太赞同,我认为Bridge模式中蕴涵了很多设转载 2012-02-02 00:50:01 · 9102 阅读 · 0 评论 -
Class.froName 的过程
Class.froName 的过程测试代码package test;import org.junit.Test;public class ClassForNameTest { @Test public void testMap() throws ClassNotFoundException { Class.forName("ClassForNameTest.java");原创 2012-02-10 00:29:16 · 1106 阅读 · 0 评论 -
Java编译、反编译、查看字节码
编译:javac -g Foo.java看字节码:javap -c -s -l -verbose Foo反编译成Java:1)下载jad.exe(http://www.varaneckas.com/jad)+eclipse插件jadclipse(http://sourceforge.net/projects/jadclipse/)原创 2012-02-13 23:27:20 · 2290 阅读 · 1 评论 -
【读书笔记】HeadFirst设计模式——单件不简单:详述实现Singleton模式需要考虑的方方面面
(参考:深入浅出单实例Singleton设计模式)什么是单件?单件就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。——GOF单件模式简单吗?简单,的确简单,因为只有一个类。单件不简单!其实单件并不见得简单,而且还有点小复杂。其复杂度正是为了保证单件所要达到“仅有一个实例”的宏伟目标而引起的。当然在一般情况下,单件是简单的。但是在考虑了懒加载、并发、原创 2012-03-20 00:59:12 · 1337 阅读 · 0 评论