- Hashmap & Hashtable
- StringBuffer & StringBuilder:主要用于大量字符串拼接,避免产生过多的中间对象;前者非线程安全,后者线程安全;
- String s = new String("test") -> 创建两个对象:一个在字符串pool中(常量池),一个在heap中
- == 和 equals()
- 两个对象使用==,比较的是对象引用;
- 如果要比较内容相等,一般使用equals(但不包括primitive类型);
- equals默认是判断两个对象是否==,所以默认比较两个对象的引用;但是JAVA有些类重写了equals方法,实现判断内容是否也相等,如String, Date, Double,Integer,所以自定义类要实现equals,需要重写equals方法,同时有必要重写hashcode方法(既然要两个对象equals,那严格意义上hashcode也是一致的,否则在如HashMap,HashTable类似的集合存储以对象为key会有问题,因为是否重复是以对象key的hashcode值来判断重复);
- 所以说,两个对象equals,则hashcode相等;但是hashcode相同的两个对象(如"Aa"和"BB",原因与计算hashcode算法有关),不一定equals。
- 注意:如果定义String str1="Test"; String str2 = "Test", str1 == str2 返回是true。
- Map中以hash查找之所以高效(而不是通过遍历所有元素):首先将Map分区,然后将hashcode按某种规则分区存储,查找时只要先找到对应的区,最后在那个区进行遍历。
- TCP三次握手(主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接)
-
- 第一次握手:主机A发送syn number至主机B(syn=1,则B知道A要求建立连接);
- 第二次握手:主机B收到确认信息后,向A发送ack number;
- 第三次握手:主机A接收到ack number并检查正确性,再次发送ack number至B(带syn number),B确认正确后,则连接建立成功,主机A开始向B传送数据。
- 为什么不是2次或4次:因为三次结束之后,就已经可以保证A可以给B发信息,A可以收到B的信息; B可以给A发信息,B可以收到A的信息(类似A与B打电话的场景)
posted @
2018-08-29 00:01
岩文01
阅读(
95)
评论()
编辑
收藏
举报