`
文章列表
public class BasicGenerator<T> implements Generator<T>{ private Class<T> type; public BasicGenerator(Class<T> type) { super(); this.type = type; } @Override public T next() { try { return type.newInstance(); } catch (Exception e) { e.print ...
public class New { /** * 这就是类型推断 */ public static <K, V> Map<K, V> map() { return new HashMap<K, V>(); } public static <T> List<T> list() { return new ArrayList<T>(); } public static <T> LinkedList<T> lList() { return new ...
泛型方法:无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代整个类泛型化,那么就应该只使用泛型方法。 public class LinkedStack<T> { private/* static */class Node<U> { U item; Node<U> next; Node() { item = null; next = null; } Node(U item, Node<U> next) { this.item = item; ...

Java 泛型

    博客分类:
  • J2SE
1,泛型类 public class Holder<T> { private T a ; public Holder(T a){ this.a = a; } public T getA() { return a; } public static void main(String[] args) { Holder<String> h1 = new Holder<String>("12345678"); System.out.println(h1.getA()); } } 当你创建H ...

Java volatile的用法

    博客分类:
  • J2SE
Java 理论与实践: 正确使用 Volatile 变量 volatile 变量使用指南 http://www.ibm.com/developerworks/cn/java/j-jtp06197.html 另附 双重检查加锁 单例模式 public class Singleton { /** * volatile关键词确保:当uniqueInstance变量被初始化成Singleton实例时,多个线程正确地处理uniqueInstance变量 */ private volatile static Singleton uniqueInstance; pri ...
之前做需求需要用java执行压缩(“tar -czvf ***”)并下载文件,于是用java代码直接执行tar命令,最后压缩文件里面是空的,这个问题挂了好几天 今天换个办法解决了 把脚本卸载服务器上 然后执行这个脚本 /** * 运行shell * * @param shStr * 需要执行的shell命令 * @return 回显 * @throws IOException */ public static List<String> runShell(String shStr) throws Except ...
1,使用 同步队列 解决任务协调 2,使用 常规Lock,Condition解析任务协调 3,使用synchronized加锁机制 import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; public class ProducerAndConsum ...

Java 垃圾回收算法

    博客分类:
  • JVM
1、引用计数(reference counting)     原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。     缺点:无法处理循环引用的问题。如: 对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是引用计数算法却无法回收他们。 2、复制(copying)     原理:把内存空间划分为2个相等的区域,每次只使用一个区域。垃圾回收时,遍历当前使用区域,把正在使用的对象复制到另外一个区域。     优点:不会出现碎片问题。     缺点:1、暂停整个应用。2、需要2倍的内存空间。 ...

键盘框架

不错的键盘JS框架
悬摆指针 (dangling references ):程序猿可能释放一个对象占用的内存空间,即使这个对象还在被其他对象引用。如果一个对象引用另一个被不小心释放的对象,这个释放对象的内存空间可能被重新分配新的对象占用。 内存泄露 (menory leaks ):泄露经常是对象占用的内存空间不再被任何其他对象引用,但是这个对象没有被回收。例如,如果你打算回收一个列表的空间,但是不小心只释放了列表的第一个元素,这个列表的其他元素将一直持有内存空间,因为这个列表引用已经不存在了,其他元素占用的空间得不到释放,造成了泄露。久而久之,类似的泄露累计,将会填满内存空间,导致没有足够的内存分配给其他的新对象 ...

java 共享资源

防止任务在共享资源上产生冲突除了加锁的第二种方式是 根除对变量的共享。线程本地存储是一种自动化机制,可以为使用相同变量的每个不同线程都创建不懂的存储。 public class ThreadLocalVariableHolder { private static ThreadLocal<Integer> value = new ThreadLocal<Integer>() { private Random rand = new Random(47); protected synchronized Integer initialValue() { ...
合作开发后,要清除SVN文件然后上传服务器
exp_1=href\=["']?([a-z0-9/\\.\:?&;\=\\-_'+% \\(\\)]{1,})["']? exp_2=src\=["']?([a-z0-9/\\.\:?&;\=\\-_'+% \\(\\)]{1,})["']?

tomcat配置log4j

打印日志查看具体异常
search.setOnClickListener(new OnClickListener() { @Override public void onClick(View source) { // 定义两个List来封装系统的联系人信息、指定联系人的电话号码、Email等详情 final ArrayList<String> names = new ArrayList<String>(); final ArrayList<ArrayList<String>> details = new ArrayL ...
Global site tag (gtag.js) - Google Analytics