作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.说说TCP三次握手 1.0 在此之前,什么是TCP? ​ TCP(传输控制协议) ​ 1.面向连接的,可靠的,基于字节流的传输层通信协议 ​ 2.将应用层的数据流分割成报文段并发送给目标节点的TCP层 ​ 3.数据包都有序号,对方收到则发送ACK确认,未收到则重传 ​ 4.使用校验和来检验数据在传输过程中是否有误 **注: ACK--确认序号标志,即接收端实体对已成功收到的包的确认,(确认后+1) ​ SYN--同步序号,用于建立连接过程 ​…
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[1] 1.1 HTTP简介 ​ HTTP协议,即超文本传输协议,属于应用层的协议,他是基于请求和响应模式的无状态的 应用层协议. 1.2主要特点 1.2.1 支持 客户/服务器模式(C/S) 1.2.2 简单快速 1.2.3 灵活 1.2.4 无连接 : ​ 限制每次连接只处理一个请求,服务器收到客户的请求,并受到应答之后,就断开连接,以节省传输时间,从http1.1起,默认使用长连接,即服务器需要等待一定时间后才断开连接,以…
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.UDP简介 1.1UDP报文结构: ​ Source Port:源端口 Destination Port:目标端口 Length:数据包长度 Checksum:奇偶校验值 data octets:用户数据 1.2 UDP特点 ​ 1.面向非连接 ​ 传输数据之前,源端和终端无建立连接,当他想传送时,就简单地去抓取来自应用程序的数据,并尽可能快的把他扔到网络上,在发送段,UDP传送数据的速度,仅仅是受应用程序生成数据的速度的影响,计算机的能力…
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.1 说一说TCP的四次挥手 ​ "挥手",即终止TCP连接,断开一个TCP连接池. ​ 需要客户端和服务端总共发出四个包,以确认连接断开,流程如图: ​ ​ (假设客户端主动关闭,也可以是被动的) ​ 第一次:seq=u,u(是前面ESTAB状态下,数据最后一次发送的时候,已经传送过来的数据最后一个字节的序号,再加上1),TCP规定,即使第一次不携带数据,也要消耗掉一个序号(回执是u+1) ​ 第二次:服务器发出确认报文(ACK=…
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[2] 1.1Get请求和Post请求的区别 从三个层面来回答: 1.1.1 从HTTP报文层面: ​ Get请求将请求信息放在URL后面,请求信息和URL之间用问号(?)隔开,多个请求信息之间用&隔开,形式是键值对的形式,且有长度限制. ​ Post请求是放在报文体中,想获得请求信息必须请求报文,因此,安全性较Get要高一些,但是可以通过抓包工具获取信息,所以不是绝对安全,具体还要靠https,没有长度限制 1.1.2 从数据…
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.TCP的滑动窗口 1.1 RTT和RTO的区别 ​ RTT:发送一个数据包到收到对应的ACK,所花费的时间 ​ RTO:重传时间间隔,TCP在发送一个数据包之后,会启动一个重传定时器,RTO就是这个定时器的重传时间,再通俗的讲就是,一开始先算一个定时器时间,如果你回复了ACK,那重传定时器就自动失效,也就是说不用重传了,但是如果没有回复给我ACK,RTO定时器的时间又到了,就重传,由于RTO是本次数据包所发送的超时时间,那么RTO就需要一个…
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.如何设计一个关系型数据库 如上图,首先划分成两大部分: ​ 1.存储部分:类似一个文件系统,把数据存储到一个持久化设备中,如机械硬盘,固态等 ​ 2.程序实例部分:对存储进行逻辑上的管理, ​ 2.1 存储管理:数据的逻辑关系转换成物理存储关系 ​ 2.2 缓存机制:优化执行效率 ​ 2.3 SQL解析:将sql语句进行解析 ​ 2.4 日志管理: 记录操作 ​ 2.5 权限划分: 多用户管理 ​ 2.6 容灾机制: 灾难恢复模块(突感挂了…
macOs升级到10.13.1Beta || JAVA升级到最新版之后PhpStorm菜单栏会消失,估计不止出现在PhpStorm,一系列jetbrains的产品可能都会有这个问题,包括eclipise. 解决的办法是: " I also did lost, here's what I did to temporarily fix the problem: Open/Create a new file ~/idea.properties with the following line: appl…
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Load…
package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1214 { public static void main(String[] args){ final List<String> tickets = new ArrayList<String>(); for(int i = 0; i < 1000; i++){ tickets.add("高铁票-&…