(1) Override (重写) a. 方法名,参数,返回值完全相同。 b. 子类方法不能缩小父类方法的访问权限。 c. 子类方法不能抛出比父类方法跟多的异常(单子方法可以不抛出异常)。 d. 存在于父类和子类之间 e. 方法被定义为final不能被重写。
(2)Overload(重载) a. 参数类型、个数、顺序至少一个不相同。 b. 不能重载只有返回值不同的方法名。 c. 存在父类和子类、同类中。 Overload 可以改变返回值的类型
4. TCP和UDP区别是什么? (1). TCP是面向连接的,而UDP是无连接的,区别大致如下: a. UDP传送的数据单位协议是UDP,TCP传送数据单位的协议是TCP。 b. UDP发送数据之前是不需要建立连接,因此减少了开销和发送之前的时延。 c. TCP提供的是面向连接的服务,不提供广播和多播服务。 (2) 对方的运输层在收到UDP报文后,不需要给出任何确认。 TCP则需要确认。 (3) UDP没有拥塞控制的,它不保证可靠交付;TCP要提供可靠的,面向连接的运输服务。 (4) UDP用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要少。
5. 简述XML在日常开发中的应用?使用XML有哪些优缺点?解析XML文档有哪几种方式?
(1) 用来作为一些配置文件,struts.ibatis,spring 等等。 (2) 作为数据的载体,比较在webservice,Ajax运用中都会用来传递一下数据。 a. 要求web客户机在两个或多个不同的数据库之间传递信息的应用。 b. 要求web客户机把同一数据以不同的表现方式提供给不同的用户应用。 优点: a. XMl允许各种不同的专业开发和字节的特定领域有关的标记语言,这就使得该领域的人员交流变得可行。 b. XmL具有良好的保值性(数据丢失主要原因是没有人写出如何读取历史数据的节制和文档格式)。 c. 应用间交换数据。
解析的方法:
a.多数解析器提供了至少两种API,通常是一个对象模型API和一个事件API(也称为流API) DOM / JDOM b. 第二种是事件API,比如SAX,JAXP。
18 Java内存泄露 (1) 内存泄露是指在程序运行过程中会不断的分配内存空间,那些不再使用的内存空间应该即时回收它们,从而保证可以保证系统可以再次使用这些内存。 如果存在无用的内存没有被收回来,那就是内存泄露。 说明: 对于数组的操作,堆和栈的操作需要慎重的考虑是否存在内存泄露(出栈时没有清理最后一个元素即没有对最后一个元素置空) (2) 垃圾回收机制: a. 跟踪并监控每个java对象,当某个对象处于不可达的状态时,就回收该对象所占用的内存。 b. 清理内存分配、回收过程中产生的内存碎片。 避免内存泄露的小技巧 a. 尽量使用直接量,对于Byte、Short、Integer、Long、Float、Double、Bolean、Character程序不应该使用new 方式创建对象,而采用直接量创建它们。
b. 使用StringBuilder和StringBuffer进行字符串连接 Sting和StringBuilder以及StringBuffer等都可以代表字符串,其中String字符串代表的是不可变的字符串,后两者表示可变的字符串。 如果使用多个String对象进行字符串连接运算,在运行时可能产生大量临时字符串,这些字符串会保存在内存中从而导致程序性能下降。 c. 尽量少使用静态变量 类的静态变量的生命周期和类同步的。在类不被卸载的情况下,类对应类对象会常驻内存,知道程序运行结束。 如下代码就会存在内存泄露问题: class Person { static Object obj = new Object(); }
d.避免在经常调用的方法、循环中创建Java对象。
e. 缓存经常使用的对象 如果有些对象需要经常被用到,可以考虑把这些对象用缓存池保存起来,下次用的时候直接从池中拿。典型的就是数据连接池。 如果系统中还有一些常用的基础信息,可以考虑用缓存,实现缓存的方式有如下两种: (1) 使用HashMap进行缓存。 (2) 直接使用某些开源的缓存项目。 说明:缓存设计本身就是一直以牺牲系统空间来换取运行时间的技术。 f. 考虑使用SoftReference 当程序需要创建长度很大的数组时,可以考虑使用SoftReferene来包装数组元素,而不是直接让将数组元素来引用对象。 此时SoftReference是个很好的选择:当内存足够时,它的功能等同于普通引用;当内存不足时,它会牺牲自己,释放软引用所引用的对象。 注意:由于软引用引用对象的不确定性(软引用所获取的对象可能为null),所以程序取出SoftReference所引用的Java之后,应该显式判断该对象是否为null; 当该对象为null时,应该重建该对象。