第39章 源代码(2/2)
“说认真的,从明天开始一块学,学不会,扣你工资。”舒朗威胁道。
他要是真去找陶小靖去投诉刘琦一下,扣工资都是轻的,刘琦绝对不敢不答应。
刘琦傻愣愣的发了一呆,他心里涌起的是激动,是感恩。他也渴望提高,但是他自律性不够,总是控制不住自己那颗躁动的心。当舒朗把这个提高的机会强加给他的时候,他倒是非常感动、开心。
“朗哥,我敬你,我吹了。”
刘琦举起剩下的那大半瓶啤酒,对着嘴,仰着头,一口气咕咚完。啤酒沫溢出嘴角,流进脖子里;两滴泪滑落耳根,终与酒沫汇融。
渴望提高的人,都是知识的奴隶。自律与不自律的区别在于,是谁给你戴上枷锁。
而那个帮你戴上枷锁的人,也许就是你生命中的贵人。
这顿饭,他俩一直吃到了九点。
舒朗不能喝酒,要不然,他俩能一直干到深夜或者是天明。
……
回到豪华病房,舒朗决定研究一会api,记不记得住先不说,至少先记一下!
舒朗有个习惯,以前学java的时候就有,但凡是学api,他都要看一下源码,看看人家api的内部逻辑是怎么实现的。“只会不懂”这种境界太低了,尤其是将来面试的时候,很容易被问住。
现在学brave的api,他也要看一下源码,不看心里不踏实。源码里面就全是基础语法,完全没有阅读障碍。
api的源码是需要单独下载的。
打开eclipse,点开引用资源包,先找了几个核心api,双击下载源码。
等待下载的功夫,他的注意力又来到了debug调试窗上。
那个绿色的数字依旧是0,灰色数字是多少他都不在乎了,反正也没什么用,只有那个红点,是个货真价实的神器。
忍不住点了一下红点,立刻得到提示:
sourcepower资源包发现bug,
灾难级1个,
是否自动修复?
……
咦?
视线左移,发现当前选中的文件,正是刚刚下载好的某个api源码文件:ve。
卧槽!
这意思是……bdk的源码有bug?
上天了!
上天了!
上天了!
重要的事情说三遍。
bdk的源码也是人写的。只要是人写的代码,就不可能没有bug,这很正常。但是让舒朗感到诧异的是,这竟然还是个灾难级的bug!
赶紧开始研究sourcepower的源码实现逻辑。
从名称就能猜的出来,这是一个源能量驱动api。再看看英文注释,实在有点看不懂,干脆还是查中文api说明吧。
sourcepower:混合能量驱动api,专门用于多能量源驱动编程时的能量切换,分为主动切换、被动切换、同步切换和异步切换四种模式。具体模式的使用,取决于对应的应用场景,由调用者自主选择使用……
看完了说明,开始正式研究代码实现逻辑。四种切换模式各有一个程序方法负责本身的逻辑实现,除此之外,还有一个兼容方法,负责在这几种模式之间进行强制转换的时候,进行兼容性处理。
舒朗一直研究到深夜。
四种模式的实现源码无懈可击,舒朗不仅看懂了,还从中学会了好几招高大上的代码写法。
但当他看到兼容方法的时候,突然眉头一紧。虽然代码逻辑表面上看起来是对的,但是直觉告诉他,这里很可能会有风险。
他把四种模式的强制转换情况,依次代入代码逻辑,发现由异步切换强制转到同步切换的时候,有一个特殊的计数逻辑好像有问题。
标准的计数都是从0开始的,这个逻辑也不例外,但是因为这是一个循环计数逻辑,当累计计数超过16的时候,需要从头开始加载计数。
异步切换和同步切换之间,有一个特殊的强制转换占位标记,如果仍然从0开始计数,累计到15的时候就会重新加载,比预计的循环逻辑提前一个计数位进入下一个循环。
以此类推,每一次循环提前退一位,15次以后将无位可退,必然会导致整个切换程序崩溃!
这就是源码中的bug!
当然了,这是一种极端情况,谁闲的没事会进行15次以上的能量源切换呢?还必须得是异步变同步!
这bug被触发的几率,估计连万分之一都不到。
不过舒朗突然想到了一点,刘昊然那个极速靴的代码里,也是多能量源驱动,那里提示的bug不会是由这个源码的bug引起的吧?
太恐怖了!
真要是这样,那岂不是说刘昊然写的代码里根本绝对完全彻底就没bug?
83中文网最新地址www.83zws.com