hashmap、hashset、treemap、hashtable的区别
HashMap是基于哈希表的Map接口的非同步实现。允许使用null值和null键。不保证映射的顺序,并且每次遍历读取其顺序都可能会不一样。不允许出现重复的键(key)。是线程安全的。是“链表散列”(数组和链表的结合体)的数据结构。在jdk8中,当hashmap的链表长度超过8时,则使用红黑树算法将链表转为红黑树。
hashset是基于hashmap实现的。hashset就是个集合,它的元素不是键值对而是一个值。它将值作为hashmap的key存入,每个key的value是object。
TreeMap是一个有序的key-value集合,它是通过红黑树实现的。它支持一系列的导航算法。它可以被克隆。默认按key的字母顺序进行排序,也可以重新定义Comparator的compare方法。它是非线程安全的。
JDBC怎么执行事务回滚.
Connection对象有一个rollback方法可以回滚,但是在使用前应将JDBC的自动提交关闭,使用setAutoCommit(false)禁止自动提交。手动提交执行sql的函数时commit()。这里的rollback()如果不带参数那么当触发回滚时将使执行commit()前的所有执行sql语句回滚,如果不想所有语句回滚我们可以设置安全点,用Savepoint对象的setSavepoint(安全点名字,这个随便写),然后rollback(Savepoint对象)。
hashtable是map类。它的key和value都不允许为空(null)。和hashmap一样它也是线程安全的。
hashcode()和equals()方法重写时的约定
1.当equals()返回结果为true时,这两个对象的hashcode必须向的。
2.equals()重写后也要遵守对称、反射、传递等特性。
数据库范式总结
数据库目前有5种范式(巴斯-科德范式是对第三范式的改进,不算在里面):
第一范式:数据库表的每一列都是不可分割的原子数据项(不能是集合或数组)。
第二范式:在满足第一范式的基础上,实现每一条记录都能够被唯一的区分开来(即至少有一个属性作为候选键或主键实现唯一性作为记录的标识)。
第三范式:在满足第二范式的基础上,如果A表中某个属性可以通过关联B表得到时,A表不能创建这个属性,避免数据冗余。
第四范式:在满足第三范式的基础上,一个表中不能包含一个实体的两个或多个互相独立的多值因子。
第五范式:在满足第四范式的基础上,表必须可以分解为较小的表(满足拆表),除非那些表在逻辑上拥有与原始表相同的主键。
如何实现一个表单数据同时提交给多个servlet(或者页面)。
在html的form标签中是无法做到这个功能的,我们可以提交按钮绑定一个js函数,通过js上传给多个servlet或页面。
<form onsubmit="return submitIt(this)">
</form>
<script>
function submitIt(form) {
$.post('a.php', $(form).serialize(), function(response){alert('a.php return ' + response);});
$.post('b.php', $(form).serialize(), function(response){alert('b.php return ' + response);});
return false;
}
</script>
在JSP中javascript能使用jsp语法和el表达式吗
可以的,不过如果你在js中使用了<%%>的jsp语法,那么jsp代码段会比js代码先执行,因为jsp语法是服务器的,js是客户端的,先执行服务器的才会执行客户端的,因此不建议在js中使用<%%>。
el表达式得到的到底是字符串还是undefined。
根据你读取的对象类型来决定的。
在JSP中,el表达式写在字符串中能不能被识别
可以被识别,这个是真的强。
从SQL数据库获得的Date类型为什么要用java.util包的而不是java.sql包的.
“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被截取
也就是说,如果你是 2017-09-17 15:15:25 这样的时间点存取数据,那么存在数据库中的值就是:2017-09-17 00:00:00。
java.util则不会。java.util.Date把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 输出。
B树和B-树的关系
别被骗了,其实B树和B-树指的都是平衡树(但是不一定是二叉树,是多叉树)。
二叉树、满二叉树、完全二叉树的概念
二叉树(也称为二分树),什么是二叉树?
二叉树就是由一个根节点和两颗互不相交的分别称作左子树和右子树所组成的树(二叉树结构允许里面的数据为空).其左子树和右子树也是二叉树。
满二叉树满足两个条件:
1.所有分支结点都存在左子树、右子树。
2.所有叶子节点都在同一层上。
完全二叉树就是树中的节点以从上至下、从左至右的顺序依次进行编号,编号节点i与满二叉树的编号节点i相同,则为完全二叉树(这意味着要想知道这棵树是不是完全二叉树,得要先获得节点数大于这棵树的满二叉树,对两棵树节点进行比较)。