新知识点

貌似好书:深入浅出程序设计  找来看看


数据连接池什么概念

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

总结下就是节省数据库资源,允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个


stringbuilder相对于String 、Stringbuffer区别

String,字符串。当进行字符串拼接时其实是生成一个新的字符串再讲引用赋值给他,所以一般来说效率不是很高,而且浪费内存(虽然有GC),当需要频繁的进行字符串的改变时建议用StringBuffer,而且它是线程安全的。Stringbuilter可以理解为StringBuffer的一个轻量级实现,方法基本相同,但是它是线程不安全的,在单线程的情况下建议用StringBuilder,这时用它效率高。

 

怎么提高多线程并发性处理性能

  • 死锁
  • 过多串行化
  • 过多锁竞争
  • 切换上下文
  • 内存同步

 

java 线程中 sleep 和 wait 的区别


垃圾回收机制深入了解下

回收没有引用指向的对象的内存空间。

回收有两个特点:1.自动性  2.不可预期性

1.  自动性。Java技术提供了一个系统级的线程,即垃圾收集器线程,来跟踪每一块分配出去的内存空间,当Java 虚拟机处于空闲循环时,垃圾收集器线程会自动检查每一块分配出去的内存空间,然后自动回收每一块可以回收的无用的内存块。
2. 不可预期性。一个对象成为了垃圾,但是你不能断言,该对象在这行以后就立刻被清除,甚至有可能当程序结束后,该对象仍然占用内存。像Windows这样的软件常常会出现内存不足的情况,JAVA程序很少出现就是因为可以自动回收内存。然而,因为JAVA也不能保证及时地清除无用的对象,所以JAVA程序也会出现内存不足的情况,只是这种情况很少出现。垃圾收集线程在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法或者Runtime.getRuntime.gc来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

字符串分割,顺带看看正则表达式

将“name = XiaoLi;age = 4;sex = male” 分割并存入hashmap中

 1 public class StringTest {
 2 
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         String s = "name = xiaoli ; age = 4 ; sex = male";
 8         String[] array = s.split(";");
 9         HashMap<String ,String > map = new HashMap<String ,String >();
10         for(int i=0;i<array.length;i++){
11             System.out.println(array[i]);
12             String[] content = array[i].split("="); 
13             map.put(content[0], content[1]);
14         }
15         
16         Set<Entry<String, String>> set = map.entrySet();
17         
18         for(Iterator<Map.Entry<String , String >> it = set.iterator() ; it.hasNext();){
19             Map.Entry<String , String > entry  = it.next();
20             System.out.print( "key :" + entry.getKey() + "    ");
21             System.out.println("value:" + entry.getValue());    
22         }
23     }
24 
25 }

有熟悉了一遍Map的知识点。需要去处map中的键值对可以用map.entrySet()方法获得一个存储entry<>的Set集合

hashMap 是 hashtable 的一个轻量级实现,hashtable 是线程安全的

vector:一个可变长度的数组,感觉他和arrayList的关系与 hashtable 和 hashMap的关系很像。Vector是至此同步的,但是访问的时候比arraylist 要慢


java内存泄露问题

这里讲的很清楚 http://www.cnblogs.com/qq78292959/archive/2011/07/25/2116123.html

 

posted @ 2013-05-08 15:47  拙急鸟  阅读(277)  评论(0编辑  收藏  举报