“刚看了你发过来的代码,写得很工整,基础很扎实。”
克莱尔没有寒暄,直接把笔记本屏幕转向赵晓峰,语气出奇地专业,“你的ETL管道逻辑没问题,但是工程实现太烂。
“第45行,vector扩容的时候你没有预分配内存reserve,这在处理PB级数据时会触发无数次内存重分配。每一次重分配,都要把旧数据拷贝到新地址,你知道这意味着什么吧。
“还有,第120行,析构函数没写虚函数,一旦发生多态调用,派生类的内存根本释放不掉。”
赵晓峰愣住了。
他原本以为对方会夸一夸他代码的整洁和效率,没想到对方一张口就是底层C++的痛点。
“我。。。。。。我是为了省代码量。。。。。。”
赵晓峰结结巴巴地辩解,脸涨得通红。
“咱们不是在搞编程竞赛。
“在工业界,省代码量就是给后人挖坑。冗余才能容错,规范才能保命。”
克莱尔扔给他一块巧克力,“重写。把CacheMiss率压到5%以下。不然这套系统撑不过今晚的数据洪峰。”
赵晓峰手忙脚乱地接住那块巧克力。
那是黑巧,苦涩的味道钻进鼻腔。
从小到大,从计算机竞赛国家队到姚班,他还很少被人这么批评过,斗志立刻涌了上来。
“我现在就改。”
他放下包,拿出自己的ThinkPad,坐到了旁边的空位上,手指开始在键盘上噼里啪啦地敲打起来。
林允宁靠在椅背上,看着两人进入状态,喝了一口可乐。
这才是他要的效果。
清北出身的赵晓峰是一把快刀,但在学术界泡出来的粗胚,还需要克莱尔这块磨刀石来磨掉上面的毛刺。
“正好你们俩都在这儿,除了数据清洗这堆烂摊子,我有一个新想法。”
林允宁开口道,声音打破了沉默,在单调的嗡嗡响声中显得很突兀,“我们现在需要加密的数据越来越多,而且面临的一个大问题是,公司最近的跨境资金流动已经被BIS盯上了。
“现有的SWIFT系统太慢,而且每一分钱都在别人的眼皮子底下。”
“Boss,你想做地下钱庄?这不合法吧。”
克莱尔挑眉,手指没停。
“不,我要做一个更高级的系统,不需要钱庄,不需要SWIFT的系统。”
林允宁站起身,走到白板前,拿起马克笔。
“如果我们要把资产或者敏感数据在不同节点??比如国内和美国??之间转移,我们需要一个去中心化的账本。一个不需要物理服务器,不需要相信任何人,只需要相信数学的账本。”
他在白板上画了一连串的方框,用箭头连接起来。
“每个方框,包含上一块的哈希值Hash、时间戳Timestamp和数据Data。
Block_Hash=SHA256Prev_Hash+Timestamp+Merkle_Root+Nonce
"MerkleTree梅克尔树保证了数据的完整性。只要改动任何一个字节,根哈希值就会雪崩式变化。
“但这还不够。为了防止有人重写历史,我们需要引入一个代价’。’
他在公式末尾圈出了那个Nonce。
"ProofofWork工作量证明。
“要想生成一个新的区块,必须找到一个特定的随机数Nonce,使得整个哈希值的前位都是0。这需要巨大的算力穷举。
“修改历史的成本,将高于收益。这就是热力学第二定律在信息学上的投影??熵增不可逆。’
赵晓峰停下了敲代码的手,推了推眼镜,盯着那个图: