计算机基础科学知识
计算机基础科学知识
对于像数据结构、算法、计算机网络、操作系统、计算机组成原理这些计算机科学基础知识,不管是后端还是其他领域都是必须的技能,也是所有软件开发的基础。扎实的计算机科学基础才能让你在学习、使用某种技术开发软件、调试软件、排查问题时能够心里有底、有据可循。
-
数据结构:数据结构是组成程序的基础。经典的数据结构包括:字符串、数组、链表、哈希表、树(二叉树、平衡树、红黑树、B树)、堆栈、队列、图。
-
算法: 经典的排序和查找算法在平时的开发工作中经常会用到,如:冒泡排序、插入排序、选择排序、归并排序、快速排序、希尔排序、堆排序以及二分查找等。此外,在函数/方法的算法实现中要注意递归和迭代各自的优缺点。而衡量算法性能无外乎空间复杂度和时间复杂度。
-
业务相关算法:除了上面的基本算法之外,业务中还会经常涉及到一些更为复杂的算法,如:压缩算法、LRU缓存算法、缓存一致性、编译原理中的状态机等。此外,目前越来越火的机器学习中有很多算法也是在很多业务场景中有很大用途的,如:用于文本分词的结巴分词和中科院ICTCLAS;用于关键词提取的TF-IDF和TextRank;用于计算文本相似度的主题模型、Word2Vec、余弦相似度以及欧几里得距离;用于文本分类的朴素贝叶斯;用于推荐的聚类、协同过滤、用户画像、隐语义模型等。
-
计算机网络: TCP/IP协议是网络最根本的协议,其七层/四层协议栈的设计都是非常精华的东西,连接的建立、断开以及连接的各种状态的转换都是排查、解决网络问题的根本依据。从TCP/IP往上,HTTP协议是现在绝大多数后端应用对外提供的协议,发展到现在已经将要步入HTTP2.0时代,带来了持久连接、连接复用等令人振奋的新特性。此外,基于HTTP的HTTPS协议由于其安全性在逐渐的成为后端服务对外开放的主流协议。业务层面,基于HTTP协议的RESTful规范正成为对外接口的主流规范,而OAuth2.0协议也在成为开放平台对外的主流协议。除了HTTP之外,SMTP是另一个基于TCP/IP的应用协议,主要用在发送邮件上。
-
设计模式: 在软件开发中,前人的经验形成了很多经典设计模式供我们使用,能够使得软件的实现可服用、可扩展、可维护。经典的工厂模式、简单工厂模式、单例模式、观察者模式、代理模式、建筑者模式、门面模式、适配器模式、装饰器模式在日常的很多开发场景下都具有很重要的意义。