开源代码啃不动,不如先定个小目标

刚工作的张大胖问Bill : “大神, 阅读源码到底有嘛用? ”

Bill笑了: “老祖宗早就给我们总结好了,‘熟读唐诗三百首, 不会作诗也会吟’, 你想想,你刚学Java那会儿,不就是比葫芦画瓢,‘抄袭’着别人的源码成长起来的吗? ”

“啊,那也算源码吗? 都是小例子啊?”

“当然算了” Bill 说  “还有, 你刚开始工作的时候, 不都是先看看别人是怎么写的, 然后自己才能摸索着干活吗? ”

“ 是啊, 不过我们的项目代码之烂, 我看了第一遍, 永远不想看第二遍。 每次改bug我都痛苦不堪。”

“你们的项目代码惨不忍睹,你想提升自己的功力,阅读优秀的开源代码是不二法门, 这些代码中会展示优秀的设计和实践,还有很多编程的惯用法,你仔细阅读,认真思考,再想办法应用到工作的项目中, 对自己和项目都是极有好处的。

“听大神这么说,我已经迫不及待地要去读了。”

“别着急, 网上有很多怎么阅读开源代码的文章, 从哪里寻找源码, 用什么工具辅助阅读, 甚至怎么做笔记都讲了很多。 磨刀不误砍柴工, 你先看看这些文章,做个准备再开始吧。”

一周后。

张大胖垂头丧气地来找Bill 了: “大神, 这开源的代码简直是没法看!”

“为什么啊? 我不是让你看介绍代码的文章, 后来还专门推荐相关图书了吗?”

“ 是啊,人家说得头头是道,可是等到我自己把Spring代码下载下来, 开始阅读的时候就晕菜了!”。

“我应该给你说过一定要把它运行起来,不但要看静态的代码,还有观察动态的行为! 两者结合起来才能透彻的理解

张大胖说:“我运行了起来了啊, 但是这源代码实在是太多了,千头万绪, 我好不容易找到入口点, 很快就调到细节的坑里, 这函数一层调用一层, 都不知道调用了多少层, 花费了我一个下午, 我发现只看了一个微不足道的小功能, 这性价比实在是太低了,我是坚持不下去了。 ”

Bill 表示了深切的同情, 确实如此,很多知名的开源软件都发展了10年以上,期间有无数的牛人添砖加瓦,这才盖起一个个宏伟的高楼。  比如Hibernate, Spring 都有几十万,上百万行代码, 像Linux这样的巨无霸都是千万级别的了,你看得过来吗?

Bill意识到自己犯了一个错误,不应该让刚刚工作的,经验还不足的张大胖同学去啃这些大块头,相反应该让他先去读一些小而美的源码,逐渐适应,等到有经验了再去努力驾驭那些巨无霸。

不要想着一口吃个胖子, 既然看不了复杂的,先去看点简单的如何?  

Bill打定了主意:“大胖, 最新版的Spring 你不要再看了, 我给你推荐几个简单的源码JUnit 3.8.1,  Spring0.9 。”

“啊,这也太老古董了吧, 我要是和别人聊起来,人家还不笑死我?”

“我给你说啊, 其实一个开源软件它的核心思想是非常简单的, 比如Spring 就是AOP, IOC,比如JUnit就是让人轻松地写单元测试然后自动运行。 后期新版本的代码虽然复杂, 但都是基于这些核心概念的扩展。  这些代码虽然比较古老, 但麻雀虽小,五脏俱全, 特别是阅读难度极大降低, 从百万行级降到几万行,甚至几千行, 你能关注核心概念的实现,不会被枝枝蔓蔓迷住双眼。

“是吗, 代码量降了这么多, 这给了我一点信心啊, 但是这么古老的代码,质量怎么样?”

“这你放心, 源码虽然古老,但毕竟是大牛出品,质量依然是顶级的,绝对可以学到很多东西。”

“那我看完早期版本,再去看新版本不还是看不明白?” 张大胖还是对大块头儿恋恋不舍。

“由于核心思想是一脉相承的,你看完早期版本, 再去看比较新的版本,会有一种似曾相识的亲切感(当然前提是软件设计没有发生颠覆性变化),非常有利于后续阅读。”

“既然早期的代码简单,我看完以后是不是可以仿照着造个轮子?”

“没错,那样收获肯定更大。其实还有一点我特别想强调的是,你会拥有一次完整的开源代码的阅读体验,会觉得大牛写的代码也就这样啊,从而有信心继续阅读, 这样正反馈就建立起来了。

张大胖说:“好的,大神,你这么一说我又有信心了,先定个小目标,把JUnit3.8.1给搞定了!”

ps : JUnit3.x版本是使用设计模式的典范, 抛去UI部分,只有两千多行代码,你绝对值得拥有。 点击文末的阅读原文可以下载。

你看到的只是冰山一角, 更多精彩文章,请移步《码农翻身2016文章精华》或者《码农翻身2017上半年文章精华

有心得想和大家分享? 欢迎投稿 ! 我的联系方式:微信:liuxinlehan  QQ: 3340792577


码农翻身

用故事讲述技术

0.jpeg

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值