专访李林锋:我与Netty那些不得不说的事

Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的。擅长Netty的开发者朋友对此再熟悉不过了。近日,CSDN采访了Netty领域的权威人士李林锋,请他解析Netty的主要特性以及适合哪些开发场景,分享学习Netty的经验之道。

“无论工作再忙,都需要抽些时间来学习和思考,看看业界的技术动态,想想自己未来的发展方向,选择性的找1-2个重点目标,围绕这些目标做针对性的学习。” 林锋如是说。


李林锋

CSDN:你是从什么时候开始接触Netty的?是什么地方吸引了你?

李林锋:大约在2011年左右,当时我们自己研发的NIO功能模块已经上线运行3年多,在这个领域的积累还是比较深厚的,大家都认识到了非阻塞I/O在电信软件领域的价值。当有新的产品立项时,首选的基础通信技术就是采用NIO,选择Netty而非自研产品的原因如下:

1. 自研的NIO通信模块与网关类产品功能有一定的耦合,重新梳理依赖关系,做成通用的通信框架,工作量还是比较大的;

2. 我大概花了一个月的时间阅读了Netty和Mina的主要代码,从架构、功能、API DOC、User Guide等多个角度对它们进行了深入分析,发现它们的代码质量还是非常高,核心代码量又不是很大,自己维护起来不太困难,正好功能又能完全满足我们新产品的需求,可以直接使用,提升开发效率;

3. Netty的社区非常活跃,Bug修复速度很快,使用Netty的开源产品也非常多,经历过很多项目的商用检验,这对电信类软件技术选型至关重要;

4. 在华为,我们可能会对开源产品做安全最小集、可靠性和可服务性改造,因此通常会修改开源产品的源码,Netty使用Apache License,允许这种修改,商用也没有限制。

基于上述几个原因,最终我们选择Netty作为华为电信软件的首选基础通信框架。

CSDN:Netty主要有哪些特性?主要适用于年哪些开发场景?

李林锋:Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证。

主要特性如下:

  1. API使用简单,开发门槛低;
  2. 功能强大,预置了多种编解码功能,支持多种主流协议;
  3. 定制能力强,可以通过ChannelHandler对通信框架进行灵活地扩展;
  4. 性能高,通过与其他业界主流的NIO框架对比,Netty的综合性能最优;
  5. 成熟、稳定,Netty修复了已经发现的所有JDK NIO Bug,业务开发人员不需要再为NIO的Bug而烦恼;
  6. 社区活跃,版本迭代周期短,发现的Bug可以被及时修复,同时,更多的新功能会加入;
  7. 经历了大规模的商业应用考验,质量得到验证。

Netty在互联网、大数据、网络游戏、企业应用、电信软件等众多行业已经得到了成功商用,它的主要使用场景如下:

  • 构建高性能、低时延的各种Java中间件,例如MQ、分布式服务框架、ESB消息总线等,Netty主要作为基础通信框架提供高性能、低时延的通信服务;
  • 公有或者私有协议栈的基础通信框架,例如可以基于Netty构建异步、高性能的WebSocket协议栈;
  • 各领域应用,例如大数据、游戏等,Netty作为高性能的通信框架用于内部各模块的数据分发、传输和汇总等,实现模块之间高性能通信。

CSDN:与其他一些Java领域开发框架相比,它的优势在哪?在处理并发事件上,Netty有哪些独特的功能?

李林锋:最大的优势有三个:

  1. 通信是软件最基础的功能之一,Netty是最流行的Java NIO通信框架,因此它的使用范围非常广;
  2. API简单,学习资料多,用户上手快,开发效率非常高;
  3. 社区活跃,用户群行业分布广,生态链比较好。

Netty的并发处理能力主要体现在两个方面:

  1. 利用Java语言自身的多线程机制实现消息的并行处理;
  2. 利用Java NIO类库的Selector实现多路复用,一个NIO线程可以同时并发处理成百上千个通信链路,实现海量客户端的并发接入和处理。

CSDN:是什么原因促使你写下《Netty权威指南》这本书的?这本书的思路是怎样的?对读者而言如何学习这本书,有哪些建议呢?

李林锋:最大的原因还是Netty爱好者的鼓励吧,2013年底的时候分享了一些Netty的学习案例材料,文章分享多了,很多Netty和NIO编程爱好者就建议我能够出一本Netty方面的书籍,帮助大家更好的、系统性的学习Netty。Netty的基础入门比较简单,但是要掌握技术细节、理解它的工作原理又有一定难度。因此,抱着分享和帮助初学者的想法,我就写了《Netty权威指南》。

《Netty权威指南》的写作思路是帮助初学者入门,同时兼顾想深入了解Netty源码和架构原理的中高端开发者。因此本书前半部分是基础入门章节,后面是源码和架构分析,适合不同层次的读者阅读。

对读者而言,我的建议是理论学习+ 实践相结合,能够把本书的例程亲自开发并调试一下,如果能够结合自己的工作场景举一反三,学以致用,那是最好不过了。

CSDN:你现在主要使用哪种语言进行开发?你平时最常用的开发工具有哪些?

李林锋:目前主要使用Java,偶尔也使用GO和其它一些脚本语言进行开发。因为以Java开发为主,所以通常选择Eclipse等IDE工具。

CSDN:你是通过哪些方式来提升个人技能的?

李林锋:对自己学而不厌,对他人诲人不倦。分两个维度来看待个人技能提升。

学的角度:1) 在实际工作中接受更多挑战,在解决问题过程中提升技能。我平时比较喜欢阅读代码,偶尔也自己写代码,离代码远了之后,技术判断力会下降;2) 与行业高端专家的交流,例如与华为美研所、谷歌的专家进行周期性的交流,这有利于我洞察硅谷最新的技术动态和行业发展趋势;3) 积极参与行业大会,例如国外的AWS,国内的QCon等,从别人的经验和分享中汲取营养,为我所用。

教的角度:现在也经常给业务培训,或者给读者答疑,在帮助别人的同时,可以让你的视野更开阔,了解到更多的行业应用和使用案例。经验在不断解决问题的过程中不断积累,脱离实战,个人能力很容易达到瓶颈而停滞不前,学习如逆水行舟,不进则退。

CSDN: 从一名技术开发者到华为软件平台架构部架构师,再到《Netty权威指南》作者。回头看这一路的努力和经历,有哪些让你最为难忘的人或事?

李林锋:我工作了8年,算上大三时就在东软实习,已经9年多了。回头看之前走过的路,可以用“回首向来萧瑟处;归去,也无风雨也无晴”来形容我现在的心情,现在很多东西已经看的很淡了。

最难忘的人:2008年在金融危机爆发前我从东软来到了华为,刚入职2天就被派到北京中国移动现场出差,我的思想导师就是我们的PM,现场开发压力是非常大的,项目组老员工很少,尽管我只工作了1年,仍被领导给予厚望。由于在东软的时候做的是ERP系统,到华为之后做的是电信软件,两者的差异非常大,当时我的压力还是非常大,有种茫然无措的感觉。

入职1个月之后,金融危机全面爆发,那个时候有传闻说公司要严格执行5%淘汰比例,新员工可能是淘汰重灾区,我们这些新员工心理压力都非常大。我的导师看出端倪之后,在生活方面经常带我出去参与集体活动,缓解我的压力,有时自掏腰包,带我出去活动。在工作上,给我分享了很多与项目相关的技术文档和参考代码,也经常会主动找我探讨技术方案,给予我指导,帮我指引方向。在导师的帮助下,我逐渐适应了华为的环境,自身的积极性也被充分调动了起来。不仅承担了最核心模块的开发,而且还被任命为实时交易模块的开发小组组长,最后提前1个半月就转正了,是同批新员工中转正最早的。

现在回想起那段经历,仍然心有余悸。远离华为研发基地,一帮新员工需要从无到有全新开发一个新项目,没有足够的资源支撑,只有不断的需求变更和不断压缩的系统上线时间。项目能够成功交付,我自己能够坚持下来,多亏我的导师,感谢我的导师董鹏越。

一个好的导师对新员工的健康成长非常重要,也希望所有的导师能够真正关心和指导自己的徒弟,让他们尽快适应并融入新环境。

CSDN:给开发者分享些经验吧。

李林锋:无论工作再忙,都需要抽些时间来学习和思考,看看业界的技术动态,想想自己未来的发展方向,选择性的找1-2个重点目标,围绕这些目标做针对性的学习。

学而不精是大忌,不要贪多,在刚入职的2-3年,需要把基础知识夯实,在此之上,选择自己真正感兴趣的领域发力,学透学精,争取成为行业专家,更好的发挥自己的价值。

作者简介:李林锋,2007年毕业于东北大学,2008年进入华为公司从事高性能通信软件的设计和开发工作,有7年NIO设计和开发经验,精通Netty、Mina等NIO框架和平台中间件,现任华为软件平台架构部架构师,《Netty权威指南》作者。目前从事华为下一代中间件和PaaS平台的架构设计工作。


转载自:http://www.csdn.net/article/2015-07-08/2825161-Netty

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值