摘要: 讨论Socket必讨论长连接和短连接 一、长连接和短连接的概念 1、长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新建一个Socket,处理完一个请求就直接关闭掉Socket。所以,其实区分长短连接就是:整个客户和服务 阅读全文
posted @ 2018-01-07 22:46 Andy奥 阅读(28084) 评论(0) 推荐(0) 编辑
摘要: 1 什么是长连接和短连接 三次握手和四次挥手 TCP区别于UDP最重要的特点是TCP必须建立在可靠的连接之上,连接的建立和释放就是握手和挥手的过程。 三次握手为连接的建立过程,握手失败则连接建立失败。 四次挥手为连接的完整释放过程,也会发生某个消息丢失或者超时的情况,有一方主动发送FIN消息即表示连 阅读全文
posted @ 2018-01-07 22:45 Andy奥 阅读(3058) 评论(0) 推荐(0) 编辑
摘要: TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数 阅读全文
posted @ 2018-01-07 22:36 Andy奥 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 三次握手 TCP连接是通过三次握手来连接的。 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为m,等待服务器确认,这时客户端的状态为SYN_SENT。 第二次握手 当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这 阅读全文
posted @ 2018-01-07 22:31 Andy奥 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 一、分布式数据一致性 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。 (1)什么是数据一致性 在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致 阅读全文
posted @ 2018-01-07 15:07 Andy奥 阅读(49433) 评论(5) 推荐(2) 编辑
摘要: 本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。 阅读全文
posted @ 2018-01-07 14:39 Andy奥 阅读(793) 评论(0) 推荐(1) 编辑
摘要: Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类 阅读全文
posted @ 2018-01-07 14:12 Andy奥 阅读(600) 评论(0) 推荐(2) 编辑
摘要: 本文是基于周志明的《深入理解Java虚拟机》 垃圾收集算法 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。 由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的 阅读全文
posted @ 2018-01-07 13:51 Andy奥 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 一、jvm堆内存的分代划分 在基于分代的内存回收策略中,堆空间通常都被划分为3个代,年轻代,年老代(或者tenured代),永久代。在年轻代中又被划分了三个小的区域,分别为:Eden(伊甸)区,S0区(survivor 0),S1区(survivor 1),如下图所示: 其中,新的对象总被分配到年经 阅读全文
posted @ 2018-01-07 13:41 Andy奥 阅读(452) 评论(0) 推荐(0) 编辑