java网络编程
jy02268879
这个作者很懒,什么都没留下…
展开
-
okhttp3源码分析之拦截链
okhttp3版本3.14.9一、简介1.请求流程图发出请求前,会经过interceptorChain,拦截链2.常见的拦截链有RetryAndFollowUpInterceptor重试与重定向拦截器用来实现重试和重定向功能,内部通过while(true)死循环来进行重试获取Response(有重试上限,超过会抛出异常)。followUpRequest主要用来根据响应码来判断属于哪种行为触发的重试和重定向(比如未授权,超时,重定向等),然后构建响应的Request进行下.原创 2020-12-14 20:12:53 · 1012 阅读 · 0 评论 -
okhttp3源码分析之请求流程
okhttp3版本3.14.9请求流程maven <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.14.9</version> </dependency>原创 2020-12-02 19:48:41 · 2429 阅读 · 0 评论 -
TCP协议如何保证可靠传输(校验何确认应答+序列号、超时重传、3握4挥、流量控制、滑动窗口、拥塞控制、慢开始、拥塞避免、快重传、快恢复)
TCP能够实现可靠传输是因为这几种机制1.面向连接,连接管理 ----------- 前提。(三次握手四次挥手)2.确认应答机制 ---------- 确定对方是否收到自己发送数据3.超时重传机制 ---------- 发送方等待超时没有,进行数据重传4.序号和确认序号 --------- 实现了应答机制,以及进行接收方的包序管理,实现数据有序交付校验和字段5.校验和字段 --------- 校验数据一致性,如果不一致则丢弃,对方法发送请求6.避免丢包机制--------滑动窗口机转载 2020-08-01 15:50:24 · 2459 阅读 · 0 评论 -
TCP ISN、三次握手、四次挥手
一、TCP数据包结构图其中比较重要的字段有序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,ack序号。表示期待收到对方下一个报文段的第一个数据字节的序号(seq)只有ACK=1时,确认序号字段才有效,ack=Seq+1。确认ACK:占1位,仅当ACK=1时,确认号ack字段才有效。A.原创 2020-08-01 15:49:41 · 2323 阅读 · 0 评论 -
URI、URL、URN的关机及区别
一、定义URI :Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串URL :Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchorURN :Universal Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源二、关系URL和URN原创 2020-06-10 15:35:11 · 185 阅读 · 0 评论 -
HTTP简介(报文格式、cookie、keep-alive、HTTP请求的一个完整过程)
一、HTTP简介HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。HTTP协议目前最新版的版本是1.1,HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接原创 2020-06-09 21:51:52 · 2353 阅读 · 0 评论 -
【九】高性能IO模型----Reactor与proactor
参考Reactor与Proactor高性能网络编程6--reactor反应堆与定时器管理两种高效的服务器设计模型:Reactor和Proactor模型一、简介 Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程/进程阻塞在多路复用器上;一旦有I/O事件到来或是准备就绪(文件描述符或socket可读、写),多路复用器返回并将事先注册的相应I/O事件分发到对应的处理器中。 ...原创 2020-06-09 19:24:17 · 517 阅读 · 0 评论 -
【八】同步、异步、阻塞、非阻塞、用户空间、内核空间、5种io模型
一、先知概念参考:https://www.jianshu.com/p/486b0965c296但是我想说一下,链接中的这篇文章,有个概念是错的,它里面贴了一张图,把I/O多路复用归类到异步阻塞中。我认为不存在异步阻塞这种概念。1.1 用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核原创 2020-06-09 17:24:00 · 486 阅读 · 0 评论 -
【七】Java NIO代码例子(网络和文件)
一、网络IO TCP服务端代码package com.sid.io.niov2;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocketChannel原创 2020-06-09 14:46:19 · 283 阅读 · 0 评论 -
【六】Java IO 代码例子(网络和文件)
一、网络IO TCP服务端启动引导public class ServerBoot { private static final int PORT = 8000; public static void main(String[] args) { Server server = new Server(PORT); /**start里面新建了一个线程用于接受客户端请求, * 接收到客户端请求后又为每个请求创建work线程去处理逻辑*/原创 2020-06-09 14:27:44 · 320 阅读 · 0 评论 -
【五】Java io与nio的pipe
转自《第九节 netty前传-NIO pipe》pipe管道作为线程之间通信的一种方式首先作为对比我们先了解下再BIO模式下的pipe的使用 Pipe为运行在同一个JVM中的两个线程提供了通信的能力,注意是同一个jvm上,如果在不同的jvm就是不同的进程了,pipe就无能为力了。Java IO中管道的创建Java IO中的PipedOutputStream和PipedInputStream创建管道。PipedInputStream流应该和PipedOutputStream流相关联。一个线程通转载 2020-06-09 11:52:57 · 241 阅读 · 0 评论 -
【四】Java IO与NIO的区别
一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。二、NIO和IO的主要区别下表总结了Java IO和NIO之间的主要区别:IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 选择器 1、面向流与面向缓冲Java IO和NIO...原创 2020-06-09 11:38:00 · 191 阅读 · 0 评论 -
【三】Java NIO(channel、buffer、selector)
一、概述Java NIO 由以下几个核心部分组成:Channels Buffers Selectors其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。二、Channel我理解的:每个连接就是一个channel所有的 IO 在NIO 中都从一个Channel 开始。Java NIO的通道类似流,但又有些不同:1.既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。2.通道可以异步地读写。3.通道中的数据总是要先读到一个原创 2020-06-08 21:41:35 · 210 阅读 · 0 评论 -
【二】Java 序列化与反序列化
参考:Java 序列化的高级认识一、概念把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;2) 在网络上传送对象的字节序列。二、JDK类库中的序列化APIjava.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中原创 2020-06-02 21:41:25 · 281 阅读 · 0 评论 -
【一】Java IO流分类及各类简介(如何将控制台输出定向到一个文件、怎么关闭多层包装的流)
一、按数据流的方向分类1.输入流通常类的名字中有Input或者reader2.输出流通常类的名字中有output或者writer二、按处理数据单位分类1.字节流传输过程中,传输数据的最基本单位是字节的流。字节流的类通常以stream结尾。字节流在操作时本身不会用到缓冲区(内存),是对文件本身直接操作的。关于这个特性举个例子:用OutputStream往一个文件里面写东西,out.write(b)后不用flush()也不用out.close()就能立即在文件中看到写入的原创 2020-06-02 19:22:50 · 242 阅读 · 0 评论