java
1 String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。String类提供的数值不可改变的字符串。StringBuffer类提供的字符串进行修改。当知道字符数据要改变的时候你就可以使用StringBuffer,可以使用StringBuffers来动态构造字符数据。
2 说出Servlet的生命周期,并说出Servlet和CGI的区别。
(1)Servlet被服务器实例化后,容器运行其init方法
(2)请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,
(3)当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过
(1)多线程方式运行其service方法,一个实例可以服务于多个请求 而CGI对每个请求都产生新的进程,
(2)servlet其实例一般不会销毁,CGI服务完成后就销毁,所以效率上低于servlet。
3 HashMap和HashTable区别
(1)HashMap允许一个null键,多个null值; HashTable的键和值均不允许为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断
(2)都实现Map接口,HashTable是Dictionary的子类。
(3)HashTable是同步的;HashMap通过Collections的同步方法得到同步。Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
4 线程状态(http://lavasoft.blog.51cto.com/62575/27069)
1、新建状态(New):新创建了一个线程对象。
2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。
3、运行状态(Running):就绪状态的线程获取
相关文档:
一、JAVA。要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其 ......
一、Array , Arrays
Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。
1、
效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。
2、Java中有一个Arrays类,专门用来操作array。
a ......
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。
内部类可以声明public、protected、private等访问限制,
可以声明为abstract的供其他内部类或外部类继承与扩展,
或者声明为static、final的,也可以实现特定的接口。
static的内部类行为上象一个独立的类,
非static在行为上类似类的属性或方法且禁止声明s ......
单例模式,顾名思义,只能有一个实例。
一.从多线程安全说起,如下图代码,此问题可以用synchronized关键字来解决。该方法缺点:每一个线程在获取实例对象之前都要在synchronized上同步的对象上进行等待,因此效率不高。
二.Double Check方法,见下图代码。Double Check的初衷是只有当instance为NULL时执行的线程才需要在 ......
正则表达式是字符串处理的终极武器,本文以一个具体题目简介java对正则表达式的支持。
题目:将一个字符串中的形如href=“XXXX”和src=“XXXX”的部分取出,打印。
处理正则表达式主要用到java.util.regex.Matcher和java.util.regex.Pattern两个类。
\\测试用的字符串
String source= "...href=\" ......