简介

Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。

Netty是一个NIO客户端服务器框架,可以快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和简化了TCP和UDP套接字服务器等网络编程。

“快速简便”并不意味着最终的应用程序将遭受可维护性或性能问题的困扰。Netty经过精心设计,结合了许多协议(例如FTP,SMTP,HTTP以及各种基于二进制和文本的旧式协议)的实施经验。结果,Netty成功地找到了一种无需妥协即可轻松实现开发,性能,稳定性和灵活性的方法。

特征

设计

  • 适用于各种传输类型的统一API-阻塞和非阻塞套接字
  • 基于灵活且可扩展的事件模型,可将关注点明确分离
  • 高度可定制的线程模型-单线程,一个或多个线程池,例如SEDA
  • 真正的无连接数据报套接字支持(从3.1开始)

使用方便

  • 记录良好的Javadoc,用户指南和示例
  • 没有其他依赖关系,JDK 5(Netty 3.x)或6(Netty 4.x)就足够了
    • 注意:某些组件(例如HTTP / 2)可能有更多要求。请参阅 需求页面 以获取更多信息。

性能

  • 更高的吞吐量,更低的延迟
  • 减少资源消耗
  • 减少不必要的内存复制

安全

  • 完整的SSL / TLS和StartTLS支持

简单案例构建

1.安装gradle

1.官网下载

2.解压压缩包

3.配置环境变量

2.新建gradle项目

设置

3.引入相关依赖

1.查找依赖:https://mvnrepository.com/

2.引入依赖

// https://mvnrepository.com/artifact/io.netty/netty-all
compile group: 'io.netty', name: 'netty-all', version: '4.1.32.Final'

案例代码

https://github.com/mikeygithub/netty/tree/master/src/main/java/com/mikey/demo

聊天室案例

https://github.com/mikeygithub/netty/tree/master/src/main/java/com/mikey/chat

架构实现

模块分析

HTTP Tunnel

对Socket的实现

压缩与解压缩

对RPC的支援

WebSocket实现与原理分析

WebSocket连接建立方式与生命周期分解

WebSocket服务端与客户端开发

RPC框架分析

Google Protobuf使用方式分析

Netty Learning Notes的更多相关文章

  1. rt-thread learning notes

    rt-thread learning notes 2018-01-15 > 001 具有相同优先级的线程,每个线程的时间片大小都可以在初始化或创建该线程时指定 rt_thread_t rt_th ...

  2. Mybatis Learning Notes 1

    Mybatis Learning Notes 主要的参考是博客园竹山一叶的Blog,这里记录的是自己补充的内容 实体类属性名和数据库不一致的处理 如果是实体类的结果和真正的数据库的column的名称不 ...

  3. Rust learning notes

    Rust learning notes Rust Version 1.42.0 $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs ...

  4. D3 learning notes

    D3 https://d3js.org/ 数据驱动文档显示, 利用 SVG HTML CSS技术. D3.js is a JavaScript library for manipulating doc ...

  5. Coursera, Machine Learning, notes

      Basic theory (i) Supervised learning (parametric/non-parametric algorithms, support vector machine ...

  6. 【Learning Notes】线性链条件随机场(CRF)原理及实现

    1. 概述条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminative ...

  7. Apache Thrift Learning Notes

    简介 Apache Thrift软件框架(用于可扩展的跨语言服务开发)将软件堆栈与代码生成引擎结合在一起,以构建可在C ++,Java,Python,PHP,Ruby,Erlang,Perl,Hask ...

  8. gRPC Learning Notes

    简介 更多内容参考:https://www.grpc.io/docs/guides/ gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计.目前提供 C.Java 和 G ...

  9. SQL Learning Notes

    Sams Teach Yourself SQL in 10 Minutes

随机推荐

  1. python3练习100题——010

    第10天了,今天的题目跟009类似,都比较水,有时间的话再做一道- 链接:http://www.runoob.com/python/python-exercise-example10.html 题目: ...

  2. jdk之java.lang.Integer源码理解

    基本数据类型的包装类java.lang.Integer是我们频繁使用的一个系统类,那么通过一个示例反应出的几个问题来深入理解一下此类的源码. 需求:实现Integer类型的两个数值交换. packag ...

  3. 域名网址在QQ微信被拦截怎么解决 如何样才能让被微信屏蔽的网址正常访问

    微信域名防封技术及微信域名被封解决方案. 微信又封杀我的域名了,微信域名被封怎么办? 做微信项目的兄弟们总跟我唠嗑抱怨,这个无可厚非, 微信如果不做屏蔽措施,微信里面传播传播的信息良莠不齐不治理, 肯 ...

  4. 6.springboot----------JSR303校验

    JSR303校验(Java Specification Requests的缩写,意思是Java 规范提案) 有一个注解叫:@Validated  //数据校验 这是默认的↓ 这是你可以改的↓

  5. 按需引入element-ui时修改.babelrc报错

    刚开始学习element-ui时用的都是完整引入,图省事,这次准备按需引入,以减小项目体积, 乙烯类npm 之后,到了修改 .babelrc 文件这一步(PS:vue-cli 2.0版本会有这个文件, ...

  6. codeforces C. Primes and Multiplication(快速幂 唯一分解定理)

    题目链接:http://codeforces.com/contest/1228/problem/C 题解:给定一个函数f,g,题目有描述其中的表达式含义和两者之间的关系. 然后计算: 首先把给定的x用 ...

  7. codeforces 1189C Candies! / 前缀和

    http://codeforces.com/problemset/problem/1189/C 求一下前缀和,给定区间的数字和除以10就是答案 AC代码: #include<iostream&g ...

  8. 题解 P5587 【打字练习】

    P5587 打字练习 想发一篇较为简洁易懂的题解,代码看起来长,实际上还是很好理解的,而且很多对称着写就行了 一道字符串签到题,比赛的时候小蒟蒻调了一个小时都没调出来一直RE,坑点还是不少的(主要是我 ...

  9. 题解 P5594 【【XR-4】模拟赛】

    P5594 [[XR-4]模拟赛] 洛谷10月月赛 II & X Round 4 Div.2前两道签到题还是很简单的,基本上是半小时内一遍过两题 看看题解,这题STL做法有用set输出size ...

  10. echarts相关问题记录

    1.图标距离容器边界 //echats options options : { //... grid : { top : 40, //距离容器上边界40像素 bottom: 30 //距离容器下边界3 ...