032 Java再次总结

1.大纲redis

  多线程怎么用的,线程池,事务,传播机制与隔离级别,反射,泛型,数据库引擎的区别,数据库merge,窗口函数,fastJson,JVM调优,GC钩子,Linux的awk,shell,HashMap在1.7与1.8的结构区别,quartz串行调度怎么控制,集群参数,kafka怎么不第二次消费,单点登陆原理,AOP,IOC,内存刷新,ZK,BlockingQueue,网关,mybatis,storm怎么动态实时,RPC,ES,RDD,boot,redis,row_id,操做系统,数据结构,算法,网络。算法

 

一:多线程shell

1.优缺点数据库

  优势:服务器

  (1)多线程技术使程序的响应速度更快网络

  (2)当前没有进行处理的任务能够将处理器时间让给其它任务数据结构

  (3)占用大量处理时间的任务能够按期将处理器时间让给其它任务mybatis

  (4)能够随时中止任务多线程

  (5)能够分别设置各个任务的优先级以及优化性能jvm

  缺点:

  (1)等候使用共享资源时形成程序的运行速度变慢

  (2)对线程进行管理要求额外的cpu开销

  (3)可能出现线程死锁状况。即较长时间的等待或资源竞争以及死锁等症状。

 

2. start()方法和run()方法简介和区别?

  start()方法:

  1)用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。

  2)经过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并无运行,一旦获得CPU时间片,就开始执行run()方法。

  run()方法:

  1)run()方法只是类的一个普通方法而已,若是直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径仍是只有一条。

  总结:

  1)调用start方法方可启动线程,

  2)而run方法只是thread的一个普通方法调用,仍是在主线程里执行。

  3)把须要并行处理的代码放在run()方法中,start()方法启动线程将自动调用run()方法,这是由jvm的内存机制规定的。

  4)而且run()方法必须是public访问权限,返回值类型为void.。

 

3.Runnable接口和Callable接口的相同点和不一样点?

  

 

4.

 

 

 

 

3.三次握手

  

  第一次

  第一次握手:创建链接时, 客户端发送 syn包(syn=j)到 服务器,并进入 SYN_SENT状态,等待服务器确认;SYN:同步序列编号( Synchronize Sequence Numbers)。

  第二次

  第二次握手服务器收到 syn包,必须确认客户的SYN( ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入 SYN_RECV状态;

  第三次

  第三次握手: 客户端收到 服务器的SYN+ACK包,向 服务器发送确认包ACK( ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP链接成功)状态,完成三次握手。
完成三次握手, 客户端与服务器开始传送 数据

  首先很是明确的是两次握手是最基本的。第一次握手,客户端发了个链接请求消息到服务端,服务端收到信息后知道本身与客户端是能够链接成功的,但此时客户端并不知道服务端是否已经接收到了它的请求,因此服务端接收到消息后的应答,客户端获得服务端的反馈后,才肯定本身与服务端是能够链接上的,这就是第二次握手。

  客户端只有肯定了本身能与服务端链接上才能开始发数据。因此两次握手确定是最基本的。

  看到这里,你或许会问,那么为何须要第三次握手呢?咱们来看一下,假设一下若是没有第三次握手,而是两次握手后咱们就认为链接成功了,那么会发生什么?第三次握手是为了防止已经失效的链接请求报文段忽然又传到服务端,于是产生错误。

  譬如发起请求遇到相似这样的状况:客户端发出去的第一个链接请求因为某些缘由在网络节点中滞留了致使延迟,直到链接释放的某个时间点才到达服务端,这是一个早已失效的报文,可是此时服务端仍然认为这是客户端的创建链接请求第一次握手,因而服务端回应了客户端,第二次握手。

  若是只有两次握手,那么到这里,链接就创建了,可是此时客户端并无任何数据要发送,而服务端还在傻傻的等候佳音,形成很大的资源浪费。因此须要第三次握手,只有客户端再次回应一下,就能够避免这种状况。
 
2.quartz怎么实现串行的任务调度
相关文章
相关标签/搜索