软件的核心就是数据结构与算法

如果你问一个大神,学习软件编程有哪些重要知识点需要掌握的,他的答案一定会包括数据结构与算法。

对于一直疲于完成增删改查的广大码农来说,只要能把分配的任务顺利完成,不出 bug 就行了,至于性能、优雅性,那是大神们才考虑的事。其实,在日常工作中,我们也习惯于利用各种框架快速实现功能,网上看几遍关于框架的快速上手应用的博文,就马上能把各种高大上的新技术应用到项目中去。

是的,新技术的使用门槛并不高,就连大数据、深度学习,甚至区块链技术,对一个有点经验的程序员来说,快速上手也不是难事。可要是使用这些新技术框架过程中,遇到一些莫名奇妙的问题,连 Google 也给不出答案时,程序员们就有点尴尬了。因为我们大多不会深究这些框架技术的底层逻辑,也不关心数据是如何组织存储和计算处理的。

今天公司的同事给我们简单介绍了 Kafka 框架的基础知识,我发现这个框架里就到处充斥着数据结构与算法。消息从生产者到 broker 节点,再到消费者,中间过程需要对消息进行传输,就涉及到数据按约定的格式进行组织,什么样的数据结构才有利于实现安全、可靠、高效的传输呢?用什么算法才能更高效校验消息是否被人篡改?借助的 Zookeeper 又是怎样协调集群里的 broker 节点实现负载均衡?消息的持久化又是怎样分区分块,又可以让消费者快速的查询取出的呢?可以说在这一个框架里,包含了太多计算机的基础知识了。

今天在同事讲述消息的数据结构的时候,我突然想起这种结构有点像 java 字节码文件的数据结构,有魔数,属性表,接着是参数名的长度,然后是参数,参数值的长度,参数值。再回想一下 TCP 协议里数据包的数据结构以及公司里的自定义传输协议,还有流行的 protobuf 之类的协议,它们采用的数据结构都大同小异,然后有自己特定的约定格式。以前我对这些知识都是看过了就算了,也没有认真思考为什么要这样设计,如果要我来设计,我又会怎么做呢?现在我意识到了,这些基础的东西是不会过时的,无论技术怎么层出不穷,还是脱离不了核心的基础知识。

不光是技术,生活中很多事情也是这样,如果只是浅尝辄止,或许能一时应急,但始终会觉得不知所以然。比如现在的房价涨得这么厉害,身边买房的人都赚了,自己是不是也借够首付上车呢?大学选专业是选现在超赚钱的金融、计算机类的吗?如果光看表面,或许你周围的清洁工人、种田的大叔们都能轻松给你一个答案,但问题的本质是什么,你有没有详细研究过呢?

软件的核心就是数据结构与算法,那么人生的核心又是什么呢?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,098评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,577评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,126评论 2 59
  • 1、感谢这段时间的疲惫,昨晚终于踏实睡了好觉,充足的睡眠对身体是多么重要,谢谢! 2、感谢出门就上公交车还有座位,...
    哈哈飞80阅读 189评论 0 0
  • ——“赤条条来去无牵挂,哪里讨,烟蓑雨笠卷单行,一任俺,芒鞋破钵随缘化!” 公元2018年,重型猎鹰火箭搭...
    阿马1314阅读 189评论 0 0