ArrayList & HashSetArrayList 是有序集合,元素可以重复HashSet 是无序集合,元素不重复(如果有重复,后一个加入的元素覆盖之前的)ArrayList & LinkedListArrayList 插入,删除数据慢,查找数据快,简记:增删慢,查找块LinkedList 插入,删除数据块,查找数据慢,简记:增删快,查找慢HashMap & HashTableHashMap 是非线程安全的类,并且可以存放null值,是最最最常用的Map类型HashTable 安全,不可存放null, 简直一无是处HashSet & LinkedHashSet & TreeSetHashSet 数据无序LinkedSet 有序,按照数据存入的顺序TreeSet 自然(字典)排序,从小到大的顺序
什么是动态代理?动态代理是相对于静态代理而言的,是指在程序运行期间,动态的创建出一个虚拟的代理对象。相较于静态代理,动态代理,只需要接口和目标类,不再需要一个真实的代理类了。基本语法import java.lang.reflect.Proxy; Proxy.newProxyInstance(){ loader, //类加载器(目标类的类加载器) interfaces, //接口数组(目标类和虚拟代理类的共同接口的字节码对象) h // 句柄接口(虚拟代理处理问题的具体实现) }具体实现,假设已经有了一个目标类Target,一个目标类的接口TargetInterface,一个方法show,一个带参方法say(int x)TargetInterface targetPorxy = Porxy.newProxyInstace(){ Target.class.getClassloader(), new class[]{TargetInterface.class}, new InvocationHandler(){ public Object invoke(Ob
静态代理,需要一个接口,和两个实现类(分别是代理类和目标类)。为什么需要接口?接口是规范,约定了实现类必须要完成的方法接口public interface IDemo(){ public void show(); }目标类public class Target implements IDemo(){ public void show(){ } }代理类public class proxy implements IDemo(){ public void show(){ // 代理调用目标类的方法 new Target().show(); } }
假设有如下一个类package com.wlmqtc public class Demo(){ }java 获取一个类的字节码对象,共有三种方法,概览:Demo.class new Demo().getClass() Class.forName("com.wlmqtc.Demo")类名.classClass clzz = Demo.class;对象.getClass()Demo demo = new Demo();Class clzz = demo.getClass();Class.forName(类的全包名)String className = "com.wlmqtc.Demo";Class clzz = Class.forName(className);
根据回忆,写一些常用命令,基本满足日常使用。回忆通常靠不住,如有错误,赶紧Diss我vim编辑器有三种模式,分别是:普通、编辑、命令三种模式的切换编辑-->普通,ESC普通-->编辑,插入键任选其一,如 i普通-->命令,:各种插入i 插入 在光标前a 追加 在光标后o 另起一行插入的方式太多,所以单独写,一般一个 i 就够了。yy 复制一行dd 删除一行p 粘贴gg 跳转到首行G 跳转到尾行:set nu 显示行号:set nonu 隐藏行号/keyword 搜索keyword再按一下n表示搜索下一个keywordu 撤销上一个操作ctrl-r 恢复上一个撤销:w 保存 :q退出vim编辑器 !强制示例::wq! 强制性的保存并退出编辑器还有一个常用的控制光标移动方向的四个键,hjkl按键移动方向h左j下k上l右有了以上技能,基本可以控制vim了,更多神秘高级技能的解锁,好像也很少用,现用现查也行
Minghui
却道天凉好个秋!
CC BY-NC-SA 4.0