1.Collection接口中有两个常用的子接口:List(列表),Set(集)。
List:可存放重复元素,元素存取是有序的。
ArrayList:底层为数组结构。查询速度快。增删稍慢。线程不同步。
LinkedList:底层为链表结构。增删速度快,查询稍慢。线程不同步
Vector:底层为数组结构。线程同步。被ArrayList替代了。因为效率低。
Set:不可以存放重复元素,元素存取是无序的
HashSet:数据结构是哈希表。线程不同步。hashCode和equals
TreeSet:可以对Set集合中的元素进行排序,数据结构为二叉树
实现Comparable接口,覆盖compareTo(Object obj)方法
实现Comparator接口,覆盖compare(Object o1,Object o2)方法
Map:存储键值对,键不可以重复,值可以重复。
取出map集合元素的两种方式方法keySet()和entrySet()
Hashtable: 数据结构为哈希表,不可以存入null键null值,线程同步。
HashMap:数据结构为哈希表,允许使用 null 值和 null 键,线程不同步。
TreeMap:数据结构为二叉树。线程不同步。
HashMap与HashTable的区别:1)HashTable继承自Dictionary,HashMap继承自AbstractMap;2)hashMap非线程安全的,允许空值为键值,hashTable线程安全的不允许null为键或者值3)hashTable的方法是同步的,而HashMap的方法是不同步的4)二者实现的算法大都一样的,所以性能不会有很大差异
List和Set的区别:都是继承自Collection类,2)list确保维护元素特定的顺序而set不保证维护元素的次序3)set的每个元素必须唯一
2.堆区栈区静态区:
堆区:1)存储的全部是对象,每个对象都包含一个与之对应的class的信息。2)jvm只有一个堆区被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。
栈区:1)每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用,对象都存放在堆区。2)每个栈中的数据都是私有的,其他栈不能访问。3)栈分为3个部分:基础类型变量区、执行环境上下文、操作指令区
静态区:方法区又叫静态区,跟堆一样被所有线程共享。方法区包含所有的class和static变量
3. 序列化与反序列化:
把对象转换为字节序列的过程称为对象的序列化
把字节序列恢复为对象的过程称为对象的反序列化
对象序列化步骤:
1)创建一个对象输出流,可以包装一个其他类型的目标输出流,如文件输出流;2)通过对象输出流的writeObject()方法写对象;3
对象反序列化步骤:
1)创建一个对象输入流,可以包装一个其他类型的源输入流如文件输入流;2)通过对象输入流的readObject()方法读取对象。
作用:把对象的字节序列永久地保存在硬盘上,通常放在一个文件中;2)在网络上传送对象的字节序列
应用举例:web服务器中Session对象,序列化之后存入硬盘中,而不是占据内存空间,比如10万用户并发访问,内存吃不消,把session先序列化到硬盘中,需要用的时候再把保存在硬盘中的对象还原到内存中。
4. sleep和wait方法的区别:
1)sleep方法是属于Thread类的方法,而wait方法是Object类的方法。
2)sleep方法不会释放锁,wait方法会释放锁
3)wait方法只能执行在同步代码块内,sleep可以在任意地放执行
4)sleep方法会抛出异常,而wait方法不会抛出异常
5. serverlet运行机制:
1)客户端发送请求道服务器端
2)服务器将请求信息发送至Servlet
3)Servlet生成响应内容并将其传给Server。响应内容动态生成,却绝于客户端的请求。
4)服务器将响应返回给客户端。
生命周期:
1)初始化阶段,调用init()方法
2)响应客户请求阶段 调用service()方法
3)终止阶段 调用destroy()方法
工作原理:客户端发送请求,Servelet调用service()方法对请求响应,service方法()对请求的方式进行匹配,选择调用doGet,doPost方法然后调用逻辑层的方法,对客户端进行响应。
6.设计模式:转载常用设计模式详解:http://shenzhenchufa.blog.51cto.com/730213/161581
7. 数据库表和view区别
1)视图是编译好的sql语句,表不是
2)视图没有实际的物理记录,表有
3)表示内容,视图是窗口
4)表只用物理空间而视图不占用物理空间,视图是逻辑概念
5)表示内模式,视图是外模式
6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据
7)表示属于全局的,是实表,视图是属于局部的,是虚表。
8)视图的删除和建立只影响视图本身,不影响对应的基本表。
8. 存储过程
存储过程是一个记录集,像一个方法一样实现一些功能(对单表或者多表的操作)
java调用存储过程:加载驱动,获得连接,创建存储过程对象,如果有参数就对参数赋值,然后执行存储过程
9. statement 和prepareStatement区别
1)PrepareStatement多用于批处理效率很高,Statement多用于顺序执行
2)statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句,Preparestatement是预编译sql语句对象,语句中参数用?代替,在对?处动态设置参数
10. 左连接和右连接
左连接:包含所有左边表中有的记录,即使右边表中没有
右连接:包含右边表中所有记录,即使左边没有的
11. 游标
将受影响的数据暂时放在一个内存区域的虚表中,这个虚表就是游标
作用:1)根据游标的内容对数据进行回滚操作
类型:1)隐示游标:增删改操作会自动创建游标,暂时保存操作结果,也就是能够回滚的操作会引发游标的创建
2)显示游标:由开发人员通过程序显示控制,用于从表中取出多行数据,并将多行数据一行一行的单独处理
还有些数据结构计算机网络常见的问题并未整理。。。