前言

Netty 是一个可以快速开发网络应用程序的 NIO 框架,它大大简化了 TCP 或者 UDP 服务器的网络编程。Netty 的简易和快速开发并不意味着由它开发的程序将失去可维护性或者存在性能问题,它的设计参考了许多协议的实现,比如 FTP,SMTP,HTTP 和各种二进制和基于文本的传统协议,因此 Netty 成功的实现了兼顾快速开发,性能,稳定性,灵活性为一体,不需要为了考虑一方面原因而妥协其他方面。Netty 的应用还是比较广泛的,比如阿里巴巴开源的 Dubbo 和 Sofa-Bolt 框架底层网络通讯都是基于 Netty 来实现的。

通过本文所说到的关于netty的学习问题和面试问题来说说如何学习高性能netty框架及一些重要知识点!

Netty基础相关问题

讲讲Netty的特点?

BIO、NIO和AIO的区别?

NIO的组成是什么?

如何使用 Java NIO 搭建简单的客户端与服务端实现网络通讯?

如何使用 Netty 搭建简单的客户端与服务端实现网络通讯?

讲讲Netty 底层操作与 Java NIO 操作对应关系?

Channel 与 Socket是什么关系,Channel 与 EventLoop是什么关系,Channel 与 ChannelPipeline是什么关系?

EventLoop与EventLoopGroup 是什么关系?

说说Netty 中几个重要的对象是什么,它们之间的关系是什么?

Netty 的线程模型是什么?

粘包与半包和分隔符相关问题

什么是粘包与半包问题?

粘包与半包为何会出现?

如何避免粘包与半包问题?

如何使用包定长 FixedLengthFrameDecoder 解决粘包与半包问题?原理是什么?

如何使用包分隔符 DelimiterBasedFrameDecoder 解决粘包与半包问题?原理是什么?

Dubbo 在使用 Netty 作为网络通讯时候是如何避免粘包与半包问题?

Netty框架本身存在粘包半包问题?

什么时候需要考虑粘包与半包问题?

WebSocket 协议开发相关问题

讲讲如何实现 WebSocket 长连接?

讲讲WebSocket 帧结构的理解?

浏览器、服务器对 WebSocket 的支持情况

如何使用 WebSocket 接收和发送广本信息?

如何使用 WebSocket 接收和发送二进制信息?

Netty源码分析相关问题

服务端如何进行初始化?

何时接受客户端请求?

何时注册接受 Socket 并注册到对应的 EventLoop 管理的 Selector ?

客户端如何进行初始化?

何时创建的 DefaultChannelPipeline ?

讲讲Netty的零拷贝?

如何正确系统的学习Netty框架

要理解框架的底层的原理,要掌握的就是最常用的原理。框架就是辅助我们开发的已经完成的一部分代码,帮助我们实现了一部分的功能,我们主要掌握的其实就是框架的内部原理,也就是框架给我们规定的一些内部的规定,有了这些规定就可以高效的开发我们的代码,按照规定办事效率会有很大的提高。其实很多的时候我们并没有注意这些东西,一个功能可以用很多的方法来实现,但是我们按照框架给我们规定的规则去实现的话应该是我们比较正确的一种选择。因此分享一份系统学习Netty框架的知识思维导图给有需要的朋友,希望能对你们有所帮助!

 

阿里的Netty知识点你又了解多少的更多相关文章

  1. Netty——知识点总结

    引言 Netty blablabla…… Netty 知识点

  2. 一些内存模型、并发、netty知识点的记录

    happens-before:描述内存可见性as-if-serial:无论怎么重排序,程序的运行结果不会改变 ReentrantLock依赖了队列同步器AQS,其实现方式是volatile变量的读写操 ...

  3. netty 知识点

    Netty:异步.事件驱动的NIO(非阻塞Non-blocking IO)框架 netty 教程:http://wiki.jikexueyuan.com/project/netty-4-user-gu ...

  4. 阿里 Java面试 知识点

    摘自: http://blog.csdn.net/wtyvhreal/article/details/45291835 =================================== 基础知识 ...

  5. Netty--索引

    Netty 入门示例 Netty原理架构解析 Netty 基本原理 Netty面试题 阿里的Netty知识点你又了解多少

  6. 全网首发,腾讯T3-3整理Netty学习方案(体系图+项目+学习文档)

    前言: 想要学好一门技术,最起码要对他有一定的了解,起码听说过相应的底层原理的东西吧,最起码你要有一点能和别人交流的内容吧,下面是我精简的一点内容,希望对于大家了解netty能有一点帮助 Netty是 ...

  7. sofa-rpc 服务端源码流程走读

    sofa-rpc是阿里开源的一款高性能的rpc框架,这篇文章主要是对sofa-rpc provider启动服务流程的一个代码走读,下面是我简单绘制的一个基本的关系流程图 下面我们根据sofa-rpc代 ...

  8. java后台技术

    本文旨在梳理服务端开发技术栈,希望帮助后端开发同学更全面了解Java服务端主要涉及的知识点 1. 语言相关 1.1 Java 核心知识点 Java的类加载机制 JVM相关:JVM内存模型和结构,GC原 ...

  9. Java开发技术

    1.基础技术 数据结构与算法   逻辑结构:数据对象中的数据元素之间的逻辑关系 1.集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系. 2.线性结构:线性结构中的数据元素之间是一对一的关 ...

随机推荐

  1. SpringBoot整合Bubbo

    一.创建springboot_dubbo_provider项目 1 创建service层接口 public interface IDoSomeService { public String sayHi ...

  2. learning java 文件锁

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...

  3. Redis-5.0.5集群配置

    版本:redis-5.0.5 参考:http://redis.io/topics/cluster-tutorial. 集群部署交互式命令行工具:https://github.com/eyjian/re ...

  4. FOREIGN KEY 外键约束; UNIQUE和PRIMARY KEY 主键约束、CREATE INDEX建立索引的使用

    1)foreign key 是个约束,意思是说如果你给A字段设置了外键约束,以后你要往A字段插入数据,这个数据一定是要在foreign key 后面跟的那个字段中存在的值.这个的意义就是约束了数据的完 ...

  5. shell脚本编程基础之函数

    函数 作用:代码重用 定义函数: 方法1: function FUNCTION_NAME { #函数名和定义变量名一样,只能包含数字字母下划线,并且不能以数字开头 command } 方法2: FUN ...

  6. [HAOI2018]染色(NTT)

    前置芝士 可重集排列 NTT 前置定义 \[\begin{aligned}\\ f_i=C_m^i\cdot \frac{n!}{(S!)^i(n-iS)!}\cdot (m-i)^{n-iS}\\ ...

  7. [C++] 类的成员变量和成员方法

    类具有成员变量和成员方法 成员变量用来描述某个对象的具体特征,是静态的,也称为成员属性,这些属性一般设置为私有,仅供类的内部使用. 成员方法用来描述某个对象的具体行为,是动态的,也成为成员函数,这些属 ...

  8. 【大数据应用技术】作业十|分布式文件系统HDFS 练习

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 1.目录操作 在HDFS中为hadoop用户创建一个用户目 ...

  9. var let const区别

      var let const 可否同一作用域下声明同名变量 可以 不可以 不可以 声明的变量是否会挂载到window上 会 不会 不会 声明变量是否存在变量提升 存在 不存在(变量必须声明之后才能使 ...

  10. 忘记zip密码咋办?python在手密码我有

    整理资料时发现几个 zip 文件的密码忘记了,于是尝试用python暴力破解 首先是读取和解压zip文件,使用 zipfile 库 import zipfile z = zipfile.ZipFile ...