实习学习
文章平均质量分 69
兽哥哥啊
这个作者很懒,什么都没留下…
展开
-
Netty学习 (七、源码剖析Netty启动过程源码)
1、看源码技巧第一次尝试看框架源码,大概就是先写一个demo,然后根据demo 的流程去看核心代码的实习,这个项目就是根据netty包下的echo 样例写的2、源码启动类如下/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use thi原创 2021-05-12 20:21:30 · 190 阅读 · 0 评论 -
腾讯开源框架Tars学习 (2、组件的含义)
1、Tars 框架的定义Tars是【基于名字服务】【使用Tars协议】的高性能【RPC】开发框架,同时配套一体化的【服务治理平台】,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。Tars也是一个兼顾易用性、高性能、服务治理的框架,目的是让开发更简单,聚焦业务逻辑,让运营更高效,一切尽在掌握。解决了如上图的问题,框架整体思维 就是把开发 运营,测试 整合到一起,简单易用2、设计思路Tars的设计思路是采用微服务的思想对服务进行治理,同时对整个系统的各个模块进行抽象分层,将各个层原创 2021-05-06 22:06:27 · 346 阅读 · 0 评论 -
Netty学习(六、Channel与Pipeline组件源码分析)
11原创 2021-05-05 21:33:58 · 230 阅读 · 2 评论 -
腾讯开源框架Tars学习 (1、搭建平台,输出hello world)
1、使用docker 搭建平台环境##拉取最新的镜像docker pull tarscloud/framework:latest#拉取节点镜像docker pull tarscloud/tars-node:latest#拉取数据库镜像docker pull mysql:5.6##创建虚拟网络docker network create -d bridge --subnet=172.25.0.0/16 --gateway=172.25.0.1 tars## 数据库docker run -原创 2021-05-05 21:03:18 · 665 阅读 · 2 评论 -
Netty学习(五、Netty解决粘包拆包)
1.什么是TCP粘包与拆包首先TCP是一个"流"协议,犹如河中水一样连成一片,没有严格的分界线。当我们在发送数据的时候就会出现多发送与少发送问题,也就是TCP粘包与拆包。得不到我们想要的效果。所谓粘包:当你把A,B两个数据从甲发送到乙,本想A与B单独发送,但是你却把AB一起发送了,此时AB粘在一起,就是粘包了所谓拆包: 如果发送数据的时候,你把A、B拆成了几份发,就是拆包了。当然数据不是你主动拆的,是TCP流自动拆的2.TCP粘包与拆包产生原因1.进行了MSS大小的TCP分段2.以太网帧的ply原创 2021-05-04 22:03:50 · 293 阅读 · 0 评论 -
Netty学习(四、Netty的核心模块核心组件)
1、Channel接口基础的IO操作,如绑定、连接、读写等都依赖于底层网络传输所提供的原语,在Java的网络编程中,基础核心类是Socket,而Netty的Channel提供了一组API,极大地简化了直接与Socket进行操作的复杂性,并且Channel是很多类的父类,如EmbeddedChannel、LocalServerChannel、NioDatagramChannel、NioSctpChannel、NioSocketChannel等。2、EventLoop接口EventLoop定义了处理在连接原创 2021-05-04 21:54:06 · 217 阅读 · 1 评论 -
Netty学习(三、Netty线程图与流程)
线程图如下Netty抽象出两组线程池BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写BossGroup和 WorkerGroup类型都是NioEventLoopGroupNioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是NioEventLoopNioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector ,用于监听绑定在其上的socket的网络通原创 2021-05-04 21:42:34 · 180 阅读 · 1 评论 -
Netty 学习 (二、服务器与客户端的通信)
1.首先创建NettyServer的主类创建一个EventLoopGroup BossGroup用于处理连接,一个工作组 管理任务package com.ccw.qhj.netty;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel原创 2021-05-04 21:08:31 · 143 阅读 · 0 评论 -
Netty学习(一 、Netty基本概念)
1.Netty简介Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke’s Choice Award,见https://www.java.net/dukeschoice/2011)2.为什么Netty受欢迎1.并发高Netty 使用的是主从reactor线程模型,主从reactor模型有一个处理连接的主线程,然后有一个分发任务的子线程,原创 2021-05-04 20:59:56 · 187 阅读 · 0 评论 -
网络编程 Unix五种 IO模型
1. 服务端怎么处理一条请求?图解如下:步骤如下:获取请求数据,客户端与服务器建立连接发出请求,服务器接受请求(1-3);构建响应,当服务器接收完请求,并在用户空间处理客户端的请求,直到构建响应完成(4);返回数据,服务器将已构建好的响应再通过内核空间的网络 I/O 发还给客户端(5-7)。设置高性能 高并发服务端 大概就以下俩点吧:服务器如何管理连接,获取输入数据;服务器如何处理请求。“I/O 模型”的基本概念阻塞调用与非阻塞调用阻塞调用是指调用结果返回之前,当前线程会被原创 2021-04-17 19:48:39 · 110 阅读 · 0 评论 -
NIO三大核心组件
三大组件的介绍1、Buffer(缓冲区)用于存储数据,底层是一个数组拥有三个核心属性:capacity、limit、positioncapacity:数组的长度,意为缓冲区的总大小limit:可读/可写的的长度position:即将写入或者写出的下一个数据的位置之间的大小关系为 position <= limit <= capacity2、Channel(通道)一个io操作的通信桥梁,起到连接作用,io操作并不直接对buffer进行数据的交换,必须通过Channel进行读/写原创 2021-04-17 19:37:03 · 613 阅读 · 0 评论 -
Reactor线程模型
Reactor 模式针对传统阻塞 I/O 服务模型的 2 个缺点,比较常见的有如下解决方案:基于 I/O 复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需阻塞等待所有连接。当某条连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理;基于线程池复用线程资源:不必再为每个连接创建线程,将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。I/O 复用结合线程池,这就是 Reactor 模式基本设计思想,如下图:R原创 2021-04-17 19:16:16 · 831 阅读 · 1 评论 -
网络编程中的I/O复用模型
1. 服务端怎么处理一条请求?图解如下:步骤如下:获取请求数据,客户端与服务器建立连接发出请求,服务器接受请求(1-3);构建响应,当服务器接收完请求,并在用户空间处理客户端的请求,直到构建响应完成(4);返回数据,服务器将已构建好的响应再通过内核空间的网络 I/O 发还给客户端(5-7)。设置高性能 高并发服务端 大概就以下俩点吧:服务器如何管理连接,获取输入数据;服务器如何处理请求。“I/O 模型”的基本概念阻塞调用与非阻塞调用阻塞调用是指调用结果返回之前,当前线程会被原创 2021-04-17 17:33:33 · 593 阅读 · 0 评论 -
NIO实现客户端与服务器通讯
一、NIO是什么?NIO(JDK1.4):是一种同步非阻塞IO,主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(多路复用器)。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(多路复用器)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道二、服务器客户端通信实现1.服务方代码如下(示例):package原创 2021-04-11 21:22:18 · 276 阅读 · 0 评论 -
Bio实现客户端通信
一、BIO是什么?BIO:Blocking I/O,同步阻塞I/O模式,数据的读取和写入必须阻塞在一个线程内等待其完成。 模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速。二、服务器客户端通信实现1.服务方代码如下(示例):package com.ccw.api;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket原创 2021-04-10 19:22:27 · 261 阅读 · 0 评论