java⽹络编程⾯试题(⼀)
java经典上机编程题1、tcp和udp的区别汽车销售系统数据库课程设计
TCP:是⾯向连接的流传输控制协议,具有⾼可靠性,确保传输数据的正确性,有验证重发机制,因此不会出现丢失或乱序。
UDP:是⽆连接的数据报服务,不对数据报进⾏检查与修改,⽆须等待对⽅的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构⽐TCP的段结构简单,因此⽹络开销也⼩。
2、tcp连接建⽴的时候3次握⼿,断开连接的4次握⼿的具体过程
1.建⽴连接采⽤的3次握⼿协议,具体是指:
· 第⼀次握⼿是客户端connect连接到server
· 第⼆次server accept client的请求之后,向client端发送⼀个消息,相当于说我都准备好了,你连接上我了
· 第三次 就是client向server发送的,就是对第⼆次握⼿消息的确认。之后client和server就开始通讯了。
gamma分布的性质证明2.断开连接的4次握⼿,具体如下:
· 断开连接的⼀端发送close请求是第⼀次握⼿
· 另外⼀端接收到断开连接的请求之后需要对close进⾏确认,发送⼀个消息,这是第⼆次握⼿
· 发送了确认消息之后还要向对端发送close消息,要关闭对对端的连接,这是第3次握⼿
· ⽽在最初发送断开连接的⼀端接收到消息之后,进⼊到⼀个很重要的状态time_wait状态,这个状态也是⾯试官经常问道的问题,最后⼀次握⼿是最初发送断开连接的⼀端接收到消息之后。对消息的确认。
3、什么是同步?什么是异步?
同步:
如果有多个任务或者事件要发⽣,这些任务或者事件必须逐个地进⾏,⼀个事件或者任务的执⾏会导致整个流程的暂时等待,这些事件没有办法并发地执⾏;
异步:
如果有多个任务或者事件发⽣,这些事件可以并发地执⾏,⼀个事件或者任务的执⾏不会导致整个流程的暂时等待。
这就是同步和异步。
举个简单的例⼦,假如有⼀个任务包括两个⼦任务A和B,对于同步来说,当A在执⾏的过程中,B只有等待,直⾄A执⾏完毕,B才能执⾏;⽽对于异步就是A和B可以并发地执⾏,B不必等待A执⾏完毕之后再执⾏,这样就不会由于A的执⾏导致整个任务的暂时等待。
如果还不理解,可以先看下⾯这2段代码:c语言如何调用多线程
// 超级复杂
}
void fun2() {
}
void function(){
fun1();
fun2()
.....
.....
}
这段代码就是典型的同步,在⽅法function中,fun1在执⾏的过程中会导致后续的fun2⽆法执⾏,fun2必须等待fun1执⾏完毕才可以执⾏。
接着看下⾯这段代码:
}
void fun2() {jquery标签
}
void function(){
new Thread(){
public void run() {
fun1();
}
}.start();
new Thread(){
public void run() {
fun2();
}
}.start();
.....
.
....
}
这段代码是⼀种典型的异步,fun1的执⾏不会影响到fun2的执⾏,并且fun1和fun2的执⾏不会导致其后续的执⾏过程处于暂时的等待。
事实上,同步和异步是⼀个⾮常⼴的概念,它们的重点在于多个任务和事件发⽣时,⼀个事件的发⽣或执⾏是否会导致整个流程的暂时等待。我觉得可以将同步和异步与Java中的synchronized关键字联系起来进⾏类⽐。当多个线程同时访问⼀个变量时,每个线程访问该变量就是⼀个事件,对于同步来说,就是这些线程必须逐个地来访问该变量,⼀个线程在访问该变量的过程中,其他线程必须等待;⽽对于异步来说,就是多个线程不必逐个地访问该变量,可以同时进⾏访问。
同步和异步可以表现在很多⽅⾯,但是记住其关键在于多个任务和事件发⽣时,⼀个事件的发⽣或执⾏是否会导致整个流程的暂时等待。⼀般来说,可以通过多线程的⽅式来实现异步,但是千万记住不要将多线程和异步画上等号,异步只是宏观上的⼀个模式,采⽤多线程来实现异步只是⼀种⼿段,并且通过多进程的⽅式也可以实现异步。同步和异步着重点在于多个任务的执⾏过程中,⼀个任务的执⾏是否会导致整个流程的暂时等待。
wordpress知识付费主题
本⽂章为连载内容,⼤家可以持续关注⼩编,我将尽其所能的为⼤家提供技术性实践资料、⽂章、视频。
感谢⼤家的⽀持!
本⽂为原创作品,转载请注明出处!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论