丁光宇:善用“兵法”,才能突破Linux项目开发难点!
嘉宾介绍:丁光宇老师(论坛账号丁光宇)在海信任职资深网络工程师,主持开发了多款智能网关、交换机、ONU、智能物联等网络通讯设备,在网络通讯以及嵌入式系统开发调试方面积累了大量实战经验。拥有博通、MTK、Realtek等平台的多年开发经验。对linux内核网络协议栈以及各种网络通讯协议有着深刻的理解。
以下为发烧友学院对丁老师的采访内容:
学院小助手:可以分享一下您的学习、工作经历吗,您是怎样进入网络通讯行业的呢?
丁老师:好的。那我就简单介绍下我学习电子的个人经历吧~ 在我还没上大学之前,我看到那些电子的小玩意就会产生深深的好奇,觉得几个简单的电子元器件就能实现这么多的功能,对此感到非常神奇,但以我当时的知识储备除了赞叹外对其原理一无所知。后来我上了大学,选了一个电子信息工程专业,在上大学的时候我了解到有单片机这么一个东西,本着大学四年怎么也要学点实用技能的想法,于是从网上买了块51的开发板,从此差不多一整个学期整日待在宿舍和实验室里拿着那块开发板做各种实验,经常中午调代码忘了吃午饭,午饭跟晚饭合到一块吃。晚上在实验室呆到12点也是常有的事。
我之所以这么痴迷是因为这一块51开发板让我顿悟了,让我明白之前那些神奇并且摸不着头脑的电子设备的原理是如此简单。后面我又接触了各种各样的单片机,也参加了不少电子设计大赛并拿到过许多奖项。其中有一次的比赛题目是设计一个基于430单片机的红外线通讯设备。为了让传输的速度能够达到最大化,我不断的对单片机的红外线信号的处理流程做优化,使其从几kb慢慢优化到几百kb的速度,在完成这个功能的过程中我感觉就像是在不断的改装一台老爷车,最后让他快到能够参加F1方程式赛车一样激情澎湃,同时这也让我对数据通讯的快速转发产生了兴趣。
在大学的其他时间里,我又了解了许多Linux相关的知识,也自学了操作系统,编译原理,计算机体系结构,计算机网络等计算机专业方面的基础课程,这让我对计算机有了系统性的认识,为我日后从事的工作打下了牢固的基础。
毕业前我还去一家做手机的企业实习过,我负责底层驱动开发,但仅仅为手机适配一些芯片编写一些功能固定的驱动程序并不能满足我对工作的期望。于是我来到了一家做家电的老牌企业,他们刚刚成立一个部门希望进军网络通讯设备这个行业,要知道通讯设备这个行业国内有华为,中兴,烽火这些老牌劲旅,国外有诺基亚,爱立信这些old money(老资本家)。我们就是在这样的环境下通过通过一点一点的积累做了不少成功的产品。因为前期人手严重不足,所以我要负责的功能非常多,但这也使我成长的非常快,并且我在大学做的那些项目和自学的那些计算方面的专业课使得我项目上上手也很容易。
由于通讯设备的数据吞吐量是一个非常重要的指标,所以很多时候我都是在想方设法的优化数据转发的流程使其能够更快的转发数据。这仿佛又让我回到了大学时优化单片机的红外通讯程序一样一行一行的斟酌代码逻辑为的就是提高一点点的性能,在不断压榨设备有限的硬件资源的同时,我对网络通讯设备以及一些网络通讯协议也有了更深的理解。
和大学时一样即便是在工作后我也会不断去市里的图书馆翻看一些我敢兴趣的技术类的书籍,每当看到有感兴趣的技术类的书,我就像是发现一部武林秘籍一样全情投入的沉浸其中。
最后,希望我能够在科技方面能有更多的建树吧。
学院小助手:您对那些想学好嵌入式以及网络通讯技术的同学,有什么建议?
丁老师:我在学习一些技术知识的时候一直本着这么一个理念,就是:只有理解了技术的底层逻辑才能融会贯通的掌握这门技术,你有多么了解这个技术的底层逻辑你就能多么灵活的运用这项技术。
比如说在调试一个运行在Linux系统上的网络应用程序时,你只对linux系统有非常粗浅的了解,那么你只能将目光钉在这个应用程序本身来进行调试,如果你对linux内核有一些了解,那么你就可能就会联想整个系统的运行对这个程序会有什么影响,如果你还对计算网络和操作系统的原理有很深刻的理解,那么你就会将目光拓展到整个网络和系统中进行调试。
说了这么多就是希望同学们在学习嵌入式以及网络通讯技术的时候,一定要理论结合着实践来进行学习,如果发现在技术的学习上有很多原理都摸不着头脑的时候就要回过头来思考一下有没有什么系统性的知识是自己非常不熟悉的,并且要对这部分知识进行系统性的学习。
对于嵌入式的学习我的建议是以linux系统为学习样本,找本能够让你动手跟着做的嵌入式学习书籍,再结合着操作系统,计算机体系结构的底层原理,不断的在虚拟机或开发板上进行试验,解释不了的现象及时查资料,逐渐形成一套自己的闭环学习方法。
对于网络通讯方面的技术学习难点是很难找到一个简单的试验环境以及在市面上几乎没有能够让你动手跟着做的学习资料,所以我的建议是用《深入理解Linux内核协议栈》这套课程里面的试验环境,一边看一边跟着《深入理解Linux内核协议栈》这套课程自己动手做这方面的试验,再结合着课程里面讲的计算机网络的底层逻辑,以最少的时间,透彻的理解网络通讯方面的技术。
学院小助手:您认为在从业的路上最重要的是什么?您对职场菜鸟有什么话说?
丁老师:首先最重要的是无论面临着多大的工作压力也不要放弃提高自己。要乐于多接一些自己从没有做过的任务,因为这样是提高自己的最快途径。在职场上要尽早想明白自己要什么,这样就不会被环境所迷惑。
学院小助手:对新入行的朋友提供些建议,并推荐几本对掌握Linux有帮助的好书吧
丁老师:对于C语言,我只推荐一本《C语言的抽象艺术》这本书带你深入了解C语言的设计思想。
对于计算机网络的话,我推荐两本:
《深入Linux网络技术内幕》
《TCP/IP详解(卷一)》
上面两本一个注重计算机网络旳实践,一个注重计算机网络的理论知识。
对于程序设计方面,我再推荐另外三本书:
《设计原本》
《人月神话》
《黑客与画家》
上面三本书,基本上都是非常著名的、关于软件设计开发方面上的一些思考的书籍。
学院小助手:现在很多网友都很想了解有关技术项目方面的知识(特别是大学生),作为一个资深人士,能不能给我们分享一下从项目开始到结束的整体流程,项目运行过程中应该关注的关键点?
丁老师:总的来讲项目从开始到结束的流程可以简单概括为如下三个阶段:
1.立项阶段:确定项目要进行开发,并且大部分的需求已经确定,技术部门开始进行评估,就像古代军队出去打仗一样,侦查好目标,点好人马准备出征。
2.开发阶段:技术人员努力实现在立项阶段定下来的需求,这段时间会频繁地更新软件或硬件版本,同时还要召集测试组及时对这些版本进行测试,这个阶段测试人员就像是侦查连不断的对产品进行侦查,一旦发现有情况马上通知作战部队消灭敌人,项目经理就相当于一个参谋的角色,协调人力解决问题。
3.交付阶段:对产品进行完整性测试后没有问题便将产品交付客户,但难免还有一些潜在问题没有被发现,此时就需要有一些人和驻守部队一样长期维护这些产品保证客户能够正常使用。
虽然很多不同的产品在开发时有着差不多开发流程,但即便是相同的产品在不同的公司,不同的客户,不同的竞争对手,不同的外界约束条件下其开发流程的细节上也会有不同的变化。仅仅是时间这一项就会使开发流程产生很多变化,能够根据外界的这些约束条件制定最符合实际情况的开发流程是我们在项目的开发中需要特别注意的。正所谓:兵者,诡道也。
随着5G、高速光纤网络和工业物联的快速发展,在嵌入式网络通讯方面,网络通讯设备的需求量以及研发难度剧增,目前嵌入式市场上急需大量精通网络底层方面的人才。单纯的嵌入式开发已不能满足市场的要求,系统性的学习网络协议栈是在职场竞争中获得优势的关键。
对于嵌入式开发的从业者而言,很多人都停留在为适配一些硬件调试驱动这样重复而单调的工作上面,导致技术能力得不到提升,薪资水平没有较大的改善。
为此,丁老师专门为广大嵌入式从业者和网络技术开发者,开设一门针对性学习嵌入式通讯开发视频教程 《从入门到精通linux内核网络协议栈》,旨在帮助大家能在学习Linux内核网络协议栈的道路上,少走弯路,用最少的时间掌握计算机网络系统、嵌入式Linux网络协议栈开发,与单一嵌入式从业者拉开技术差距,实现个人技能增长、升职加薪。
本期课程共包括 14个视频章节,课程时长约30小时。从嵌入式开发环境的搭建开始讲解,网络设备驱动到内核网络协议栈再到Linux网络功能应用,通过对计算机网络原理以及Linux内核代码实现的解析,结合着大量内核协议栈开发的实战项目,对嵌入式Linux内核开发以及Linux内核网络栈的实现进行全面分析讲解。
目前,课程正在华秋众筹中,现在参与可享受最低价,想报名学习的童鞋,可以扫码下方课程二维码了解。
有任何疑问或问题咨询,可联系学院助教老师
助教喵喵
助教小优
- 标签:连锁酒店加盟条件
- 编辑:郭晓刚
- 相关文章
-
厦门第二轮集中供地前发生了什么?新房成交面积同比上涨165.7%
黄婉银 魏文艺 孙志成 今年22城首批集中供地尚未结束,厦门就已率先开启了今年第二次集中供地的…
-
有了数字人民币,支付宝还能用吗 ?相关人士回应;15连板大妖股遭停牌核查!沾酒就火,交易所紧急出手!
赵庆 1丨机构:猪价将持续探底,消费旺季将出现季节性反弹 对于猪价后期走势,浙商证券首席经济学家…
- 公告的没有,悄悄地套现29亿巨款!4300亿医药巨头股东违背承诺,14万股民很生气
- 75岁“燕郊首富”被立案调查!身家40亿,却因21万蝇头小利栽了跟头
- BOSS直聘上市暴涨95%,北大毕业创始人身家200亿!总市值已超前程无忧+猎聘,“风投女王”又押对了?
- 中国科学院:上海光机所计算光刻技术研究取得进展
- 现实版“驴得水”?15年没来上班,仍被“发工资”超46万元…单位领导竟称无奈:“上班或办理辞职,他都不配合”