![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 91
Markland_l
这个作者很懒,什么都没留下…
展开
-
网络编程20
ByteBuf和ByteBufAllocator分析原生jdk的buffer缺点,一是定长,二是需要切换读写模式netty在jdk中Buffer的基础上提出了ByteBuf,本质上也是byte数组的缓冲区怎么实现ByteBuf更好?1.门面模式2.完全重写两种模式都用了ByteBuf抽象类的继承关系顶层是ByteBuf抽象类2.AbstractByteBuf抽象类公共方法都放在这里3.AbstractReferenceCountedByteBuf抽象原创 2021-03-11 02:03:40 · 194 阅读 · 0 评论 -
网络编程19
服务器端启动1.创建eventloopgroup(1)其中设定了线程的数量,缺省时设置为cpu*2,(2)同时创建一个executor,但是其中有一个threadFactory,从而可以为每一个eventloop来创建线程,但是不是此时创建的线程,而是后面创建的(3)创建NioEventLoop,这其中有一个run方法,会进行selector调用,处理各种各样的事件集,netty有个小的特殊处理,eventloop不光处理io事件,还会处理系统内部任务,根据ioRatio比例来决定处理io事件原创 2021-03-10 17:45:17 · 108 阅读 · 0 评论 -
网络编程18
AbstractUnsaferegister方法:把channel和selector挂钩,如果pipeline的通道已经是active状态的,会调用beginRead方法,beginRead方法又会调用doBeginRead方法,把真正关心的事件进行注册服务器启动流程1.首先创造了一个eventloopgroup,支持指定线程数,如果不传,默认会从配置中读取,如果配置没有,就是CPU逻辑核心数乘2,io操作的线程数一般都是这么设置的,会进入到MultithreadEventExecutorGr原创 2021-03-10 01:26:05 · 168 阅读 · 0 评论 -
网络编程17
Channel系列源码分析NioServerSocketChannelNioSocketChannelchannel----channel相关顶级接口提供了很多跟网络通讯相关的操作,以及状态判定read方法,读取到缓冲区,读取数据成功后,就会触发channel所属的pipeline进行handler的处理,触发channelRead,在各种handler中流转flush方法,将我们要写到对端的数据,刷新到目标channel中,并发送给对方config方法,获取当前channel的配置信原创 2021-03-09 16:27:25 · 104 阅读 · 0 评论 -
网络编程16
netty的基本组件EventLoopGroupServerBootstrapNioServerSocketChannelChannelFuture各种ChannelHandlerChannelPipelineChannelHandlerContextbyteBufChannelPipeline本质是职责链模式的变形类似于servlet,servlet专门用来拼凑页面来相应的,中间会有各种filter,完全不影响servlet功能的实现把channel的管道抽象成Ch原创 2021-03-09 01:30:00 · 117 阅读 · 0 评论 -
网络编程15
JDK中nio实现ServerSocketChannel的继承关系channel接口InterruptibleChannel接口是可以中断的NetworkChannel接口与网络通信有关AbstractInterruptibleChannel抽象类对InterruptibleChannel接口的实现SelectableChannel抽象类AbstractSelectableChannel抽象类ServerSocketChannel抽象类So原创 2021-03-08 16:43:56 · 96 阅读 · 0 评论 -
网络编程14
jdk下的bioSocksSocketImpl这两类操作系统都还存在一个 SocksSocketImpl 类,它其实主要是实现了防火墙安全会话转换协议,包括 SOCKS V4 和 V5(SOCKS:防火墙安全会话转换协议 (Socks: Protocol for sessions traversal across firewall securely) SOCKS 协议提供一个框架,为在 TCP 和 UDP 域中的客户机/服务器应用程序能更方便安全地使用网络防火墙所提供的服务,并提供一个通用框架来使这些原创 2021-03-05 02:20:10 · 194 阅读 · 1 评论 -
网络编程13
sendfile上次说错了,上次说的是3次拷贝,4次上下文切换理论只有2次上下文切换,到底有几次拷贝?需要看硬件的支持程度,如果不支持,从文件读取缓冲区到套接字发送缓冲区中间需要cpu干预一次,就是3次拷贝,如果支持,网卡设备支持直接从文件读取缓冲区读取数据,则只有两次slice和sendfile最大的区别slice只需要两次拷贝,但是不需要硬件支持,网卡直接从文件读取缓冲区获取数据java生态圈kafaka持久化对磁盘随机写入效率低,顺序写入效率高,可以达到300m/原创 2021-03-03 02:52:21 · 85 阅读 · 0 评论 -
网络编程12
网络协议和Netty常见面试题汇总说一下TCP的三次握手过程为什么TCP握手需要三次?解释一下TCP的四次挥手为什么TCP的四次挥手要有TIME_WAIT状态?概述下什么是DDOS攻击和SYN洪水攻击DDOS攻击利用一个合理的服务请求去占用非常多的服务资源,导致正常请求无法成功,也叫拒绝服务攻击。常见的有计算机带宽攻击、连通性攻击1.带宽攻击是以极大的通讯量去冲击网络,使网络资源消耗殆尽,导致合法的请求无法响应2.连通性攻击是以大量的连接请求去冲击服务器,有syn洪水原创 2021-03-01 03:05:55 · 158 阅读 · 0 评论 -
网络编程11
实现自己的通信框架通信协议通信协议从广义上区分,可以分为公有协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或者组织内部使用,按需定制,也因为如此,升级起来会非常方便,灵活性好。绝大多数的私有协议传输层都基于TCP/IP,所以利用Netty的NIO TCP协议栈可以非常方便地进行私有协议的定制和开发。私有协议私有协议本质上是厂商内部发展和采用的标准,除非授权,其他厂商一般无权使用该协议。私有协议也称非标准协议,就是未经国际或国家标准化组织采纳或批准,由某个企业自己制订,协议实现细节原创 2021-02-28 18:18:14 · 226 阅读 · 0 评论 -
网络编程10
短轮询<%@ page language = "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equ原创 2021-02-26 02:49:22 · 199 阅读 · 0 评论 -
网络编程7
引导Bootstrap和ChannelOptionBootstrap只能接受一个eventloopgroup,ServerBootstrap可以接受两个eventloopgroup联想reactor模式,第一个group负责和serverChannel绑定,专门负责接受网络连接,第二个专门已接受的子channel进行网络读写这两个合二为一也是可以的同时NioEventLoopGroup是可以指定线程的个数的所以之前介绍的三种反应器模式reactor都是可以实现的,根据要求自己配置就可以了原创 2021-02-18 03:26:32 · 224 阅读 · 0 评论 -
网络编程6
Netty组件再了解–Channel、EventLoop(Group) 和ChannelFutureChannel—理解成原生编程中的Socket;抽象出来的通讯接口包含进行socket通讯时相关的各种方法除了对网络通道的相关抽象外,netty还提供了它认为需要的高级特性,在Channel接口里面还有一个内部接口UnsafeChannelFuture—异步通知。EventLoop—控制、多线程处理、并发;理解成一个线程创建出来的channel,会和某个EventLoop进行一对一的原创 2021-02-16 02:05:35 · 103 阅读 · 0 评论 -
网络编程5
NIO编程客户端NIO客户端—NioClientpackage cn.enjoyedu.nio.nio;import java.util.Scanner;import static cn.enjoyedu.nio.Const.DEFAULT_PORT;import static cn.enjoyedu.nio.Const.DEFAULT_SERVER_IP;/** * @author Mark老师 * 类说明:nio通信客户端 */public class NioCli原创 2021-02-13 02:15:38 · 157 阅读 · 3 评论 -
网络编程4
高并发RPC解决方案基于TCP的RPC实现Dubbo:阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次调和调用时间的监控中心。Container: 服务运行容器。#mermaid-svg-aCPL7KmctG5k原创 2021-02-10 22:19:09 · 117 阅读 · 0 评论 -
网络编程3
网络通信基本常识编程中的Socket是什么?Socket是应用层与TCP/IP协议族通信的间软件抽象层,它是一组接口,其实就是一个门面模式。TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)。socket是一种门面模式,屏蔽了与机器的交流过程,方便业务程序员开发代码A的socket ---- B的socket两个socket建立关系,从而A和B就可以通信了短连接一次通讯完了马上就关闭连接服务器要服务原创 2021-02-10 03:23:55 · 2270 阅读 · 3 评论 -
网络编程2
TCP的四次挥手定义:断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。过程第一次挥手:客户端发送关闭请求第二次挥手:服务端响应客户端关闭请求第三次挥手:服务端发送关闭请求第四次挥手:客户端发送关闭确认请四次挥手全过程客户端 服务器端 主动close(服务端和客户端都可以主动close) ↓ ↓ 第一次挥手 客户端发送关闭请原创 2021-02-09 16:08:56 · 143 阅读 · 0 评论 -
网络编程1
网络协议和常用网络工具计算机网络在计算机之间传递数据概念:功能完善的网络软件及协议实现资源共享和信息传递的系统主要网络有哪些局域网城域网广域网最初的网络–ARPANET两种最开放的网络平台ISO 提出osi模型IEEE 提出tcp/ip模式Internet互联网从93年开始席卷世界计算机网络体系结构TCP/IP模型1.应用层,对应于osi模型又能继续划分为3层应用层,为应用程序提供服务表示层,数据格式转化、数据加密会话层,建立、管理和维原创 2021-02-08 23:14:51 · 284 阅读 · 0 评论