java clone机制
java clone 克隆的对象同原对象一样,具体可以用如下的形式描述:x.clone() != x <克隆出来的对象同源对象是不同的对象x.clone().getClass == x.getClass() <对象具有相同的类x.clone().equals(x) <对象equals相等浅拷贝 vs. 深拷贝浅拷贝与深拷贝的主要区别是是否对对象内部的引用类型进行clone操作,即深拷贝最终产生的对象与源对象时完全独立的。在考虑clone时,primitive和不可变对象类型是可以同等考虑的,都不会影响原型。如何实现clone:1.声明实现Cloneable接口2.调用super.clone拿到一个对象,如果父类的clone实现没有
《ASPECTJ学习笔记》
《ASPECTJ学习笔记》1.AOP的几个概念:☆JoinPoint(连接点)-应用程序中某个特定的点,该点可以执行某个通知事件。 AspectJ支持的连接点: 方法 构造函数 字段 静态初始化块 方面通知执行 对象初始化之前、期间 ☆Pointcut(切点)-用于声明一组连接点,在这组连接点发生的时候调用到一定的通知 AspectJ支持的切入点: call:方法调用切入点 execution:方法执行切入点 target、this get、set args initialization、staticinitialization、preinstialization within、withincode cflow、cflowbelow &&、||、! ☆Advice(通知)-在符合特
《mockito 使用笔记》
《mockito 使用笔记》1.mock对象的创建Iterator iter = mock(Iterator.class);2.mock对象的使用when(iter.next()).thenReturn("Hello").thenReturn("World");3.mock对象方法调用校验verify(iter,time(2)).next();4.多次调用同一个方法返回不同的值when(iter.next()).thenReturn("hello").thenReturn("world");5.对返回void或exception的特殊处理//DemoMock demoMock = mock(DemoMock.class);doNothing().when(demoMock).rowDelete(any(String.class));doThrow((Exception) ret).when(demoMock).r
java annotation
http://wenku.baidu.com/view/ac644b28915f804d2b16c1a3.html[@more@]
学习mockito
mockitohttp://wenku.baidu.com/view/8def451a227916888486d73f.html[@more@]
AspectJ 程序设计
AspectJ 程序设计指南.pdf http://www.open-open.com/doc/view/d532fa05939a428298c972fc5a403757 quick5 for aspectj http://wenku.baidu.com/view/9dea46f34693daef5ef73d45.html?from=related&hasrec=1[@more@]
ByteBuffer vs. DirectByteBuffer
-XX:MaxDirectMemorySizeThis options specifies the maximum total size of java.io.nio(New I/O package) direct buffer allocations.Format:-XX:MaxDirectMemorySize=size[g|G|m|M|k|K]Example:java -XX:MaxDirectMemorySize=2g myAppJava 2 SE 6 doc :Given a direct byte buffer, the Java virtual machine will make a best effort to perform native I/O operations directly upon it. That is, it will attempt to avoid copying the buffer’s content to (or from) an intermediate buffer before (or after) each invocation o
UML类图关系
1. 依赖(Dependency)实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。2. 关联(Association)实体之间的一个结构化关系表明对象是相互连接的。箭头是可
触发 Java heap dump
触发 Java heap dump 有以下方法出发heap dump 使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap -dump:format=b,file=/home/longhao/heamdump.out /usr/local/webserver/java/bin/jmap -dump:format=b,file=/usr/local/webserver/jetty/logs/heapdump/heamdump.out 16421 使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。 在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出O
常量池、perm(持久代)、方法区、栈
常量池、perm(持久代)、方法区、栈 常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如: #类和接口的全限定名 #字段的名称的描述符 #方法和名称的描述符 虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。 对于String常量,它的
java设计模式11-23
11、享元模式(flyweight Pattern): 通过共享来支持大量的细粒度对象的使用效率。 12、代理模式(proxy Pattern): 为对象提供一个代理或占位来控制对该对象的访问。 13、责任链模式(chain of responsibility Pattern): 可以让每个对象有一次机会决定自己是否处理请求,以便于请求的发送者与其接受者之间的耦合。 14、命令模式(Command Pattern): 把请求封装在对象中。 15、解释器模式(interpreter Pattern): 可以按照自己定义的组合规则集合来组合可执行对象。 16、迭代子模式(Iterator Pattern): 为
java设计模式1-10
http://www.open-open.com/doc/view/7c9ee401cad64a46b3977a1d85dd69d5 1、工厂方法模式(Factory Method Pattern): 用于创建对象的接口,同时控制对哪个类进行实例化。 2、建造模式(builder Pattern): 把构造对象实例的代码逻辑移到实例化的类的外部。 3、抽象工厂模式(Abstract Factory Pattern): 意图在于创建一系列相互关联或相互依赖的对象。 4、原始模型模式(prototype Pattern): 不通过实例化类来创建一个新的未初始化的实例,而是通过复制一个现有对象来生成新的对象。 5、单例模式(Singleton Pattern): 主要目的是使
java 文件压缩
java中提供了与压缩解压缩相关的类java.util.zip,包含如下数据流: public class DeflaterOuputStream extends FilterOutpuStream public class InflaterInputStream extends FilterInputStream public class GZIPOutputStream extends FilterOutputStream public class GZIPInputStream extends FilterInputStream public class ZipOutputStream extends FilterOutputStream public class ZipInputStream extends FilterInputStream 使用GZIP和ZIP处理压缩的实例如下: GZIPInputStream,可以使用read(),skip(),available() 方法从
jetty问题
jetty问题:HTTP/1.1 400 Bad RequestConnection: closeServer: Jetty(7.0.0.v20091005) [@more@]
windows查看端口占用情况
windows查看端口占用情况netstat -aon |findstr "8080"tasklist |findstr $pidtaskkill /PID $pid[@more@]
Java jvm 诊断调优
JavaDump http://www.cnblogs.com/diyunpeng/archive/2011/08/25/2153851.htmljconsole手册http://pengjiaheng.iteye.com/blog/518513java内存模型与线程http://wenku.baidu.com/view/c9c71211cc7931b765ce15bb.html[@more@]
PermGen CodeCache问题
Perm Gen(持久代)中Code Cache(代码缓冲区)是HotSpotJava虚拟机用于编译和保存本地代码的内存.当代码缓冲区用尽时会报如下相应的错误:"CompilerThread0" java.lang.OutOfMemoryError: requested 2854248 bytes for Chunk::new. Out of swap space? 可以通过设置ReservedCodeCacheSize和CodeCacheMinimumFreeSpace参数来规避。CodeCacheMinimumFreeSpace设置当code cache剩余空间小于该值时java停止编译解释,进而停止对code cache的进一步使用,虽然会影响系统性能但不至于使系统崩溃。另外一种可以确定系统code cache合理值得
常用的几个eclipse快捷键
Ctrl+Q : 跳转到最后编辑的位置。这个也是个好东东。Ctrl+1 :错误修复建议,会给出当前问题的一些解决方法。Ctrl+Shift+P :定位到对于的匹配符。比如().{}等的匹配。Ctrl+Shift+X(Y):把当前选中的文本全部变味大(小)写Ctrl+M : 最大化编辑窗口。Ctrl+F6 :可以弹出菜单,上面列出可以切换的编辑窗口。类似Ctrl+E。不过是直接定位编辑窗口F4 :打开类型层次结构Alt+Shift+↑ :选择封装元素。在某单词的任何位置上使用,即可选中这个单词。Ctrl+J :正向增量查找。Alt+Shift+J :增加注释。根据位置不同(类、方法)会自动产生不同的
webservice test
REST Functional Testinghttp://www.soapui.org/REST-Testing/rest-functional-testing.htmlsoapui forumhttp://www.eviware.com/forum/viewforum.php?f=2使用soapui测试rest服务http://www.ibm.com/developerworks/cn/opensource/os-cn-soapui/ CXF WebService 开发指南、技术文档http://wenku.baidu.com/view/f7f8211e59eef8c75fbfb398.html[@more@]
LevelDB的介绍
LevelDBhttp://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html [@more@]