不定期总结程序员常见误区
发布日期:2021-06-30 18:34:38 浏览次数:2 分类:技术文章

本文共 2454 字,大约阅读时间需要 8 分钟。

凌云时刻

引言

日常工作中,偶尔能看到一些对技术的错误理解。有些是是受媒体错误引导,导致大多数人都出现了误判;也有行业内非常知名的案例,比如网传比尔盖茨说过“640KB内存对大多数人都够用了”,后来自己出来辟谣了;而有的误解就非常要命,比如把 base64 当作加密算法来用。

这篇文章总结常见误区,也希望能够不定期更新。

误区一:发明一个高性能加密算法

密码学是一个非常严谨的学科,目前知名的加密算法通常都是由密码学专家精心设计,并且经过多年的论证确保其安全性。尽管如此,过去很多被认为安全的加密算法在多年之后,陆续被发现安全漏洞。

日常工作中,见过各种程序员自己“发明”的加密算法,比如 hexdump、msgpack编码、base64 编码,并且认为需要写代码才能解密出来,有较高的保密性。带着这种思想做一些隐私保护相关的产品需求时候就很危险了。

如果需要用到对称加密算法,应该首选 AES,尤其是 AEAD 类算法,比如 AES-128-GCM。并且,密钥需要通过 KMS、KeyCenter 等安全机制妥善保管。des、blowfish 等应该被放弃了,更不用说 base64 这类与安全毫无关系的编码了。

另外,密码学安全主要取决于精心设计的算法和密钥保护。选取了行业中公认的安全算法和做好密钥保护之后基本就可以了。对密钥二次编码、加密后二次加密等二次加工类操作大多时候没有必要。

当然,最简单的方法是找个安全工程师参与进来 Review 安全机制。

误区二:看见压缩两个字就想到大的 CPU 消耗

对压缩算法有误解的话,在高性能服务中会尽量避免采用数据压缩,避免解压缩的开销影响性能。

其实,在很多高性能服务中有常态化采用各种领域特定的压缩算法。

例如广为人知的 Protobuf 编码用来代替 JSON 的话,可以大幅压缩数据传输和存储开销。尤其是移动网络下,采用 Protobuf 可以极大的压缩数据传输开销。而且,反序列化的速度也可以做到更快。

另外,搜索引擎这种对性能要求极为苛刻的场景也在大量采用压缩算法,比如 PForDelta等。有兴趣的话可以专门研究一下。

图片来源于网络

误区三:xx 能够用将来 xx 年,足够了

Gates himself has strenuously denied making the comment. In a newspaper column that he wrote in the mid-1990s, Gates responded to a student's question about the quote: "I've said some stupid things and some wrong things, but not that. No one involved in computers would ever say that a certain amount of memory is enough for all time." Later in the column, he added, "I keep bumping into that silly quotation attributed to me that says 640K of memory is enough. There's never a citation; the quotation just floats like a rumor, repeated again and again."

https://www.computerworld.com/article/2534312/the--640k--quote-won-t-go-away----but-did-gates-really-say-it-.html

尽管比尔盖茨否认了说过“640KB 内存对大多数人都够用了”,但是这个故事还是广为流传。

日常工作中,也经常看到类似的观点。比如:

“64 bit 的 ID 足够用了”

“100 个 单元足够了”

“……”

业务的变化总是会超出预期。64bit 的 ID 持续自增的的话大多时候是够了,但是经不住代码Bug、迁移过程中的 ID 跳跃、单元化架构中分区分段等浪费,一旦可用 ID数量撞墙将是灾难,非常难解决,需要尽早考虑。100个单元对大部分业务看上去也够了,但是万一将来大量的大型企业采用专有化部署,1000个大企业就有1000个单元。架构上不能只看眼前的业务特征来设计。

误区四:5G 的 1 ms 低延迟可以无所不能

5G的低延迟被各种媒体渲染得似乎无所不能了,如果软件工程师只看媒体宣传,不做技术分析的话,很容易被误导。

实际在交流中,发现经常会有人把 5G 的 1ms 低延迟理解成设备到云的延迟在 1 ms,接着就畅想各种技术在 5G 中大幅度提升。实际上 5G中要求是空口延迟小于 1ms,也即设备到基站的空中接口延迟。从基站到核心网再到数据中心,这个延迟取决于物理距离和中继损耗,比如中美延迟差不多要150ms 以上,如果没有颠覆性技术打破光速,那么5G、6G甚至100G来了也做不到1ms低延迟。

5G中很多场景都提到了 5G + AI + 边缘计算,其实就是空口延迟的很好利用。通过边缘计算压缩设备与服务器之间的物理距离。AI很多时候模型数据是只读,不需要复杂的数据存储过程上的事务操作,因此可以将算法模型推送到边缘节点,充分利用 5G 的低延迟,在设备上流畅的体验 AI 功能。

最后

很多误区源于对相应技术背后原理缺乏深入了解,这样就意味着我们确实在很多时候难免会有错误的理解,毕竟不可能对每项技术都能深入了解。只有不断学习,保持对技术敬畏,才能减少错误判断。

作者|金喜

END

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

投稿及合作请联系邮箱:lingyunshike@163.com

转载地址:https://lingyun.blog.csdn.net/article/details/117341726 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:特斯拉已在中国建立数据中心
下一篇:库克:苹果收取 30% 佣金很合理!

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 11时04分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章