四四中文网 > 字节跳动 > 第26章 人无完人

第26章 人无完人

推荐阅读:风起龙城英雄联盟:我的时代问道章创业吧学霸大人末日大佬速成指南神棍日记快穿苏妲己星际壕婚:怂妻猖狂位面之时空之匙诸天供应商

一秒记住【四四中文网 www.44zw.net】,精彩小说无弹窗免费阅读!

    人无完人啊!

    ……

    按下加速按钮之后,极速靴里的brave程序会由守护状态转变成监听状态,时刻监控着穿戴者的奔跑速度,一旦达到预定指标,立刻开启加速。

    通过哪些指标来监控速度呢?

    这就要靠brave程序接收的硬件传输过来的数据来计算了。

    脚底、脚面、侧帮、脚跟,每一个部位的组件都在无时不刻的传送着数据,包括:受力位置(内部还是外部)、受力方向(角度)、受力大小等。

    一般以连续两次脚跟落地(外部受力)时的时间间隔作为判断速度的依据,同时还要根据脚跟受力的角度,以及其他部位的受力情况,被判定为“奔跑受力”的才会有效。

    一旦达到设定的预期速度,便自动触发开启加速;在触发之前,如果收到取消指令,则会再次进入守护状态。

    触发开启加速的形式,不是持续性触发,而是间歇性触发。在脚掌离地(内部受力)的瞬间,会在脚跟处触发一次瞬间的动力喷射,以增强本次奔跑发力的力度,达到加速奔跑的目的。

    至于动力喷射力度的大小,可以根据穿戴者个人的身体承受能力提前设定好,球员们也少不了要提前做很多适应性练习。

    关于加速开启的时限,从技术上来讲,只要能量充足,就可以一直加速,每次脚掌离地都可以喷射一次,完全可以做到没有时限。

    但实际上,足协对此有明确的管控,加速开启的时间不得超过3秒。否则球场上所有球员都在飞,这球就没法踢了,更没法看。

    所以,3秒之后,加速效果便会自动失效,程序会再次进入守护状态,同时会根据监管的要求,设定一个冷却时间或者是扣减可用次数。

    当然,也有特殊情况,比方说球员两秒就达到了加速的目的,想要提前停下来怎么办?

    很简单!

    只要你能控制自己的身体降速或者停止,让程序接收到的数据不被判定为奔跑时的脚掌离地就行了。也就是说,你必须要有能在加速状态下仍然可以控球急停的能力。

    这不仅是对球员身体素质和控球技术的考验,更是对球员在球场上能否把握加速时机的考验。能够提前预判开启加速的时机,充分利用这3秒的加速效果,减少提前急停带来的身体消耗或损害,是一项非常重要的能力。

    因为收不住脚,导致受伤甚至残废的,不在少数。

    ……

    接下来说一说动力喷射。

    动力喷射,是指程序在接收到加速指令后,调用能量块的驱动接口,把能量汇集到脚跟处,完成一次爆发式喷射,从而产生动力效果。

    这里的操作相对比较简单,都是现成的api,只要按照穿戴者设定的喷射力度计算好所需能量,直接调用即可。

    总体来说,极速靴算是一个非常简单的机械能量设备了,因为它跟本就不涉及机械驱动和能量供给,只有一系列的数据接收计算和非持续性的能量爆发。

    严格来说,这种将能量爆发出设备外部的做法,其实是武器编程的核心,但这极速靴驱动的能量非常小,而且爆发时间极端,根本就用不到武器编程理论。

    ……

    舒朗越听越觉得带劲儿,刘昊然给他做的功能分解实在太细了,仿佛把一件极速靴的分解组件呈现在了他的眼前。

    “要不,还得先讲讲机械驱动和能量驱动吧!api先不急。”舒朗恳求。

    确实,核心203个,总计三千多,想急也没用,反正一时半会也学不完、记不住,不如先听听后面这两门课程来的过瘾。

    舒朗听的过瘾,刘昊然讲的也来了劲。

    接下来给他讲机械驱动。

    机械驱动的核心:动、转、停。

    这是一切物理运动的基础,再复杂的物理运动也无外乎这三项的组合。

    动,顾名思义,就是移动或者行动。在brave程序里,所有可以“动”的设备,都会被指定一个基础方向,这个“动”一般指的是,按照这个基础方向向前移动。

    停,很简单,就是停止移动。

    转,这个厉害了,这可不是简单的转向,而是前后左右上上下下全方位无死角立体转向。

    简单的机械驱动,是一个指令接一个指令的执行,比方说:前进-停止-转向-再前进……

    很容易就能写出一个这样的驱动程序。

    但实际上,大部分情况都是在移动中进行转向或者突然停止,有的是被动遇到阻力,有的是主动受力迎击,有的是腾挪闪躲,有的是寻找时机……

    每个组件不仅要考虑自身的情况,同时还要考虑到其它组件传过来的触发数据,计算量既庞大又复杂。

    这里面除了基础的数学运算以外,还会涉及到多方面学科的知识,比如:解析几何、线性代数、微积分、牛顿力学、流体力学等等等等。

    最复杂的还是异常情况的处理。

    比如说,设备的部分表面被腐蚀损坏,导致局部传感器失效,驱动程序必须能够根据硬件的反应识别出来,及时做出补救调整,至少要保证设备在整体上仍然处于可用状态,不会因为缺失了部分数据而导致计算偏移。

    真正体现技术和产品实力的地方,不在于正常情况完成的多么好,而在于对各种异常情况都能兼容的能力。

    硬件是死的,能量块是死的,api也是死的,但人是活的!能写出兼容性极强的灵活代码,那才是好工程师。

    ……

    哪怕是一个很小的机械能量设备,也需要一个团队来完成。这个团队中,除了代码工程师,一般还有有一个这样的角色:产品经理。

    负责任的产品经理,一般都会把各种计算的指标和规则都整理好,交给代码工程师来开发。这样可以极大的减轻工程师的负担,可以不用再做复杂的计算,只关注api调用即可。

    但是,如果只能在产品经理的指导下才能完成代码,就算你学过了高级编程,那你永远也只能算是个初级水平。

    再说了,真正负责的产品经理能有几个?

    人无完人!

    尤其是产品经理。

    滥竽充数的实在太多了,如果代码工程师不能对自己的代码进行业务上的把关,迟早会接产品经理一锅。

    一般来说,进阶到高级编程以后,就算不用自己做计算,也至少要具备能够做计算的能力,起码要能跟产品经理形成互补,填补他的计算漏洞。

    如果有机会能够进阶到资深编程,那就又不一样了。资深编程的团队里根本就没有产品经理,或者说人人都是产品经理。

    在一个资深编程的团队里,虽然不一定会让你做计算方面的工作,但你必须要具备可以做各方面计算的实力,大家只是分工不同而已。说不定随时会有一个模块需要你顶上。

    ……

    刘昊然情不自禁的聊了许多,看看舒朗的状态似懂非懂,决定先缓缓。

    舒朗呢,他其实听懂了,他懂了一个事实:太tm难了!就刚才那一串学科就把他给吓懵了。

    解析几何、线性代数、微积分、牛顿力学、流体力学…

    舒朗绞尽脑汁,试图从记忆里翻出点相关的东西,无奈,连书皮长什么样都想不起来。一想到要回去学高数,就忍不住打了一个机灵。

    他不是不想学,而是条件反射的结果。

    当初因为第一堂课没入门,导致后来所有的数学课都爬桌子睡大觉,然后高数就很荣幸的成为了舒朗大学生涯所挂的第一科。

    以舒朗目前的情况来看,意识觉醒,逻辑出众,真要回去再学一遍应该不成问题,可哪有那么多的时间?

    空悲切啊!

    再想想那三千多条api,舒朗心里顿时一阵心酸,凉了半截。

    ……

    刘昊然见舒朗状态不太对,也没接着讲,把自己以前做的一个极速靴的驱动代码发给了舒朗,让他先看看,学习一下,找找心得。

    api不会用,但看总会吧?

    再不行去查api手册,虽然效率慢了点,但总归对学习来说是有很大好处的。

    六点,刘昊然离开。

    舒朗无精打采,想想那几个学科就头疼,哪有心情看代码。

    但是他知道,如果不把那些知识都学会,将来就不可能迈入资深编程的行列,可那是想学就学的吗?没有几年的钻研,能有什么收获?

    悻悻之下,舒朗还是点开了极速靴的驱动代码,加载到eclipse里,随便点开一个代码文件,首先映入眼帘的便是工整的注释。

    一看作者:

    呵呵,这英文名起的不错,这是要做掌控者啊!

    舒朗瞟了几眼代码,果然有很多api的调用都看不懂,连查带猜的看了一段,总算弄明白了那段代码是在干什么。涉及到逻辑的都无所谓,最擅长的就是干这个,但一旦涉及到计算公式,就会直接傻眼懵逼。

    “没意思啊~”

    舒朗叹息一声,不想看了,学习的欲望暴跌。

    但是他突然想起了debug窗上的那个红点,忍不住想看看刘昊然写的代码有没有bug。