Netty环境搭建 (源码死磕2)
【正文】netty源码 死磕2: 环境搭建
本小节目录
1. Netty为什么火得屌炸天?
1.1. Netty是什么?
1.2. Netty火到什么程度呢?
1.3. Netty为什么这么火?
2. Netty是面试的必杀器吗?
3. 获取源码的注意事项
4. Netty工程
5. 运行 example
1. Netty为什么火得屌炸天?
1.1. Netty是什么?
Netty是JBOSS提供的一个Java开源框架NIO框架,用以快速开发高并发、高可用、高可靠性的网络服务器程序,和也能开发高可用、高可靠客户端程序。
1.2. Netty火到什么程度呢?
Netty已经得到成百上千的分布式中间件、开源项目、商业项目的应用。比如火爆的kafka、RocketMQ等消息中间件。如火热火热的ElasticSearch开源搜索引擎,都使用了Netty。如大数据处理Hadoop的RPC框架Avro以及主流的分布式通信框架Dubbo,都使用了Netty。
应该来说,使用Netty的火爆项目,已经有点数不过来了..........
1.3. Netty为什么这么火?
Netty提供异步的、事件驱动的网络应用程序框架和工具,相比JDK原生NIO,Netty提供了相对十分简单易用的API,非常适合网络编程。Netty是完全基于NIO实现的,所以Netty是异步的。
作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。
Netty的优点可以总结如下
1、API使用简单,开发门槛低;
2、功能强大,预置了多种编解码功能,支持多种主流协议;
3、定制能力强,可以通过ChannelHandler对通信框架进行灵活地扩展;
4、性能高,通过与其他业界主流的NIO框架对比,Netty的综合性能最优;
5、成熟、稳定,Netty修复了已经发现的所有JDK NIO BUG,业务开发人员不需要再为NIO的BUG而烦恼;
6、社区活跃,版本迭代周期短,发现的BUG可以被及时修复,同时,更多的新功能会加入;
2. Netty是面试的必杀器吗?
Netty 是互联网中间件领域使用最广泛最核心的网络通信框架。几乎所有互联网中间件或者大数据领域均离不开 Netty,掌握 Netty 是作为一名初中级工程师迈向高级工程师最重要的技能之一。
目前来说,主要的互联网公司,比如阿里、腾讯、美团、新浪、淘宝等,在高级工程师的面试过程中,也经常会问一些高性能通讯框架的方面的问题,还会问一些“你有没有读过什么著名框架的源代码?”等类似的问题。
如果掌握了Netty 相关的技术问题,更进一步说,如果你能全面地阅读和掌握 Netty源码,相信面试大公司时,底气十足,成功在握。
闲话少说,进入正题。
代码研究之前,第一步就是要准备环境。
3. 获取源码的注意事项
本系列博客中,以就拿github上的4.0分支进行。源码的获取有两种方式,一种是直接下载,一种是git clone。如果通过直接下载zip文件的方式获取4.0分支的代码的话,在编译的时候,有可能报错。
建议通过git的方式获取,命令如下:
git clone -b netty-4.0.33.Final --single-branch git@github.com:netty/netty.git
在git命令之前,如果是在windows环境,建议执行一条git换行符配置指令,命令如下:
git config --global core.autocrlf true
为什么呢?
git上提交代码的人用的系统不一样。有的人用windows,有的人用linux,两个系统对换行符的使用不一样,windows下是/r/n,但是linux下换行是/n。使用git config指令配置之后,git会自动屏蔽换行符的差异。如果没有上面的指令,编译代码是,可能会有line endings的错误。
4. Netty工程
下载源码后,就可以打开netty工程。
使用IDEA工具,打开后,如下:
5. 运行 example
netty源码中,有很多example例子程序,在example目录下。
打开 example 目录, 运行下面的例子了。可以打开,并且运行最简单的例子 example 下的 EchoServer 例子。
运行例子之前,如果遇到 Maven 依赖下不全的问题, 可以刷新Maven依赖后,再运行。
疯狂创客圈:
疯狂创客圈:如果说Java是一个武林,这里的聚集一群武痴, 交流编程体验心得
QQ群链接:疯狂创客圈QQ群
无编程不创客,无案例不学习。 一定记得去跑一跑案例哦
Netty环境搭建 (源码死磕2)的更多相关文章
- Pipeline模式(netty源码死磕6)
精进篇:netty源码死磕6 巧夺天工--Pipeline模式揭秘 1. 巧夺天工--Pipeline模式揭秘 1.1. Pipeline模式简介 管道的发名者叫,Malcolm Douglas M ...
- ChannelHandler揭秘(Netty源码死磕5)
精进篇:netty源码死磕5 揭开 ChannelHandler 的神秘面纱 目录 1. 前言 2. Handler在经典Reactor中的角色 3. Handler在Netty中的坐标位置 4. ...
- JAVA NIO 简介 (netty源码死磕1.1)
[基础篇]netty 源码死磕1.1: JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...
- Java NIO Buffer(netty源码死磕1.2)
[基础篇]netty源码死磕1.2: NIO Buffer 1. Java NIO Buffer Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.Buffer缓冲区本质上是一块可 ...
- EventLoop(netty源码死磕4)
精进篇:netty源码 死磕4-EventLoop的鬼斧神工 目录 1. EventLoop的鬼斧神工 2. 初识 EventLoop 3. Reactor模式回顾 3.1. Reactor模式的组 ...
- Netty源码死磕一(netty线程模型及EventLoop机制)
引言 好久没有写博客了,近期准备把Netty源码啃一遍.在这之前本想直接看源码,但是看到后面发现其实效率不高, 有些概念还是有必要回头再细啃的,特别是其线程模型以及EventLoop的概念. 当然在开 ...
- hadoop源码eclipse环境搭建-源码获取阶段
就目前了解,结合eclipse阅读和编译hadoop源码用两种方式:svn和git. 根据官方指南http://wiki.apache.org/hadoop/EclipseEnvironment 推荐 ...
- qgroundcontrol开发环境搭建源码编译
qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...
- 【Java】用IDEA搭建源码阅读环境
用IDEA搭建源码阅读环境 参考自CodeSheep的Mac源码环境搭建, https://www.bilibili.com/video/BV1V7411U78L 但是实际上在Windows搭建的差别 ...
随机推荐
- HIVE 不支持group by 别名
hive不支持group by 别名,如果需要group by 别名的情况,可以使用 别名的 值作为group by 的值
- 2017.6.30 IDEA插件--gsonfomat的安装与使用
参考来自:http://www.cnblogs.com/1024zy/p/6370305.html 1.安装 2.使用 (1)新建一个空类 (2)在空类里按快捷键:alt+s,打开gsonformat ...
- Solidworks如何在自定义的基准面上创建3D草图
1 选择某个基准面 右击"基准面上的3D草图" 2 当基准面出现黄色框即为正确.
- centos 6.x Python2.7x安装
centos 6.x Python2.7x安装 yum install -y gcc gcc-develwget https://www.python.org/ftp/python/2.7.14/Py ...
- Nmon命令行:Linux系统性能的监测利器
如果你眼下正在寻找一款非常易于使用的Linux性能监测工具,那么我强烈推荐安装和使用Nmon命令行实用工具. Nmon监测工具 Nmon是一款面向系统管理员的调优和基准测量工具,可以用来显示关于下列方 ...
- mysql kill process解决死锁
mysql使用myisam的时候锁表比较多,尤其有慢查询的时候,造成死锁.这时需要手动kill掉locked的process.使他释放. (以前我都是重起服务)..惭愧啊.. 演示:(id 7是我用p ...
- springMVC+json构建restful风格的服务
首先.要知道什么是rest服务,什么是rest服务呢? REST(英文:Representational State Transfer,简称REST)描写叙述了一个架构样式的网络系统.比方 web 应 ...
- PLSQL Developer设置技巧
1.右键菜单 在PL/SQL Developer(下面简称PLD)中的每一个文本编辑窗口,如SQL Window,Command Window和Porgram Window,右键点击某个对象名称,会弹 ...
- 设计模式之十一:抽象工厂模式(Abstract Factory)
抽象工厂模式: 提供了一个创建一系列相关的或相互依赖的对象的接口而不须要详细指定它们的类型. Provide an interface for creating families of related ...
- 谈一谈Http Request 与Http Response
1.什么是HTTPRequest与HTTP Response? 我们平时打开浏览器,输入网址,点击Enter按键,然后我们想要的网页就呈现在我们的眼前,可是这个过程是怎么实现的呢? 简单来说是这样的: ...