3.18
1 什么是糊涂窗口综合症
比如服务端向客户端发送数据时,若客户端的窗口很小,服务端也会生成数据与客户端同大的报文来进行传输,这样就产生了小报文情况,在发送同数据量的情况下,这些报文就相对要多很多,逝必会影响到网络带度,这也就是糊涂窗口综合症,这种情况的解决办法如下:
一种是客户端推迟确认,服务端采用Nagle算法,客户端TCP数据缓冲区是MSS值或MTU值(以低者为准)的一半以上(相等最好)时,服务端再向客户端发送报文数据与客户端窗口同大的报文(有个缺点就是若推迟时间比发送报文超时时间还长的话会造成服务端重传报文,会一定程序降低传输速度)
一种是客户端立即发送一个窗口为0的确认报文,推迟至客户端TCP数据缓冲区是MSS值的一半以上(相等最好)时,服务端再向客户端发送报文数据与客户端窗口同大的报文(这也有个缺点,就是服务端为了获得客户端的窗口信息会向客户端发送询问窗口报文,这也会一定程序降低传输速度)
2 以太网传输速度
快速以太网的传输速度是100Mb/s
3 abstract class 和 interface的区别
1)继承性:子类只能继承一个abstract class,但是可以实现多个interface
2)方法:abstract class的方法部分是abstract的,而interface所有方法都是abstract的
3)变量:interface只能定义 static final类型变量
4)构造函数:interface没有构造函数,但是abstract类有构造函数。
5)内置对象:interface没有内置this和super对象。Abstract类则有。
6)修饰符:interface所有封装等级都是public,故定义成员时不可加public之外的其他封装修饰符;但是abstract类的成员可以是任何封装等级,也就是它的成员可以加任何封装修饰符。
4 编码实现冒泡排序
凡是java编程,就要用面向对象的思想,不能直接在main()函数里实现。
public class MaoPaoSort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {3,5,7};
maopaoSort(arr);
}
//这里定义static类型的方法比较重要,否则main()方法不能直接访问
public static void maopaoSort(int[] arrys){
int temp = 0;
for(int j = 0; j < arrys.length; j++){
//对于每个数组元素,从0到还未排序的最大下标,总是把最大的数字放在后面
for(int k = 0; k < arrys.length - j - 1; k++){
if(arrys[k] > arrys[k+1]){//判断当前数字与后面数字的大小
temp = arrys[k+1];
arrys[k+1] = arrys[k];
arrys[k] = temp;//用temp变量进行换值
}
}
}
maopaoPrint(arrys);
}
//这里的static方法跟上一样,static方法不能直接访问非static方法
public static void maopaoPrint(int[] before){
for(int i = 0; i < before.length; i++){//遍历
System.out.print(before[i]+" ");//打印,以空格隔开
}
}
}
3.23
1 三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据
http://qidaoxp.iteye.com/blog/756564
2 Set,List,Map区别
List:有序存放,允许重复,可以存放不同类型的对象;
Set:无序存放,不允许重复,可以存放不同类型对象;
Map:俗称键值对,如手机里的电话本。