刷题学到的冷知识
1.ArraysList的扩容
Arraylist默认数组大小是10,扩容后的大小是扩容前的1.5倍,最大值小于Integer 的最大值减8,如果新创建的集合有带初始值,默认就是传入的大小,也就不会扩容
2.数据库三大模式
3.索引的特点
大大加快数据的检索速度,这也是创建索引的最主要的原因,也是题目已给出的;加速表和表之间的连接;在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间;通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;
4.字段就是属性,行是元组,关系模式即是二维表,表格表示实体类型和实体之间的联系。
5.数据库中有可能会存在不一致的数据。造成数据不一致的原因主要有:
数据冗余 如果数据库中存在冗余数据,比如两张表中都存储了用户的地址,在用户的地址发生改变时,如果只更新了一张表中的数据,那么这两张表中就有了不一致的数据。并发控制不当 比如某个订票系统中,两个用户在同一时间订同一张票,如果并发控制不当,可能会导致一张票被两个用户预订的情况。当然这也与元数据的设计有关。故障和错误 如果软硬件发生故障造成数据丢失等情况,也可能引起数据不一致的情况。因此我们需要提供数据库维护和数据恢复的一些措施。
6.抽象类和接口中的方法权限修饰词
关于抽象类 JDK 1.8以前,抽象类的方法默认访问权限为protected JDK 1.8时,抽象类的方法默认访问权限变为default
关于接口 JDK 1.8以前,接口中的方法必须是public的 JDK 1.8时,接口中的方法可以是public的,也可以是default的 JDK 1.9时,接口中的方法可以是private的
7.E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法
8.数据库管理系统最主要的功能是定义数据库。
9.Java关键字
10.看一个数的二进制下,有几个1(负数的补码同时成立)
public class Solution {
public int NumberOf1(int n
) {
int count
=0;
for(count
= 0;n
!=0;count
++){
n
=n
&(n
-1);
}
return count
;
}
}
如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。
举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.也就是说,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。