1. char 和 varchar 的区别是什么?
- char 的长度是固定的,而varchar2的长度是可以变化的, 比如,存储字符串“abc",对于char (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的varchar2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。
- char的效率比varchar2的效率稍高。
- 目前varchar是varchar2的同义词。工业标准的varchar类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用varchar2而不是varchar。
- 何时该用char,何时该用varchar2?
char与varchar2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
varchar2虽然比char节省空间,但是如果一个varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar2会更好一些。
2. Array 和 ArrayList 有何区别?
- Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
- Array大小是固定的,ArrayList的大小是动态变化的。
- ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
- 对于基本类型数据,ArrayList 使用自动装箱来减少编码工作量;而当处理固定大小的基本数据类型的时候,这种方式相对比较慢,这时候应该使用Array。
3. ArrayList 和 Vector 的区别是什么?
ArrayList与Vector的区别主要包括两个方面:.
(1)同步性:
- Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。
- 如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。
(2)数据增长:
- ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。
- ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。
- 总结:即Vector增长原来的一倍,ArrayList增加原来的0.5倍。
4. ArrayList 和 LinkedList 的区别是什么?
LinkedList :底层是双向链表,删除和修改快 O(n)
ArrayList:查询快 O(1)
5. CSS中margin、padding的作用、以及单参、双参、四参数在方向上的顺序
- margin:5px 上下左右 5px
- margin:5px 6px; 上下 5px 左右6px
- margin:5px 6px 10px; 上5px 左右6px 下10px
- margin:5px 6px 10px 20px; 上 5px 右6px 下10px 左20px
6. java.sql.Date和java.util.Date的联系和区别
- java.util.Date 是 java.sql.Date 的父类(注意拼写)
- 前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用它,后者之后在读写数据库的时候用,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date 转换是:
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
反过来是一样的 - 继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date,具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());
- sql.date,一般是在数据库的时间字段,util.date一般是日常日期字段,java.sql.Date主要是用于sql中的,而java.util.Date用语一般的环境下都可以。
7. http 响应码 401和 403 代表的是什么?
401:未授权
403:禁止
404:文件找不到
503:服务器内部错误
200:成功
302:重定向
8. PreparedStatement比Statement有什么优势?
PreparedStatement extends Statement
采用占位符,防止sql注入
性能高
9. 从表 login 中选出 name 字段包含 admin 的前 10 条结果所有信息的 sql 语句
select * from login where name like ‘%admin%’ limit 0,10