1.为什么要学数据结构和算法
IT开发工作中,大部分人是从业务开发为出发点的,而业务开发首要的是需求、功能的实现。在项目的里程碑、发版deadline等目标的驱动下,开发同学们往往挣扎于业务苦海,少有时间去思考性能优化和底层调用,往往一套框架和工具拿来即用,CURD不要太舒服。这样的结果就是一方面,第三方API和框架工具的使用大大提升了开发人员的开发效率,但是另一方面,许多开发人员对底层原理和数据结构知之甚少,一旦工具调用出问题则一脸懵B,所谓的开发工程师,无非是API调用工程师。
工作多年,我经历了多次线上生产的性能问题,这些经历生产上一些性能问题往往都是开发同学在对代码细节上考虑不周引起的,而这些操作往往都是对底层逻辑不熟悉导致的,掌握好这些基础写出更加优秀的程序,排查问题时也知道所以然,这是我考虑到学习算法的原因之一。同时,随着CS语言的进化和服务架构的变迁,总有一些不变的思想和精华历久弥新,比如设计模式和算法,这些功力的习得虽然耗时(手写一个算法的不见得比一个curd程序来的容易),但是一旦技能Get到手便可以融会贯通更多的技术栈。万丈高楼平地起,要想建摩天大厦,便需要过硬的基础知识,从现在开始重拾算法和数据结构。
2.为什么要用Go实现
从语法特性上来说,Go语言语法简单上手也快,集成了类C风格和Python的易用性,对新人来说是友好的一门语言,从语言的进化历史来看,Go语言可能也将是后台和区块链领域的主流语言,并且这个趋势越来越显著。评判一门语言的好坏和是否流行要看几个标准:1、开发社区力量,2、杀手级应用,3、学习曲线、4、语言生态等等,对比下go来看这些点,
- 1.java和C的社区是十分强大,go语言在中美两国的社区也是比较活跃的。
- 2.go目前已经出现了Docker、以太坊之类的现象级应用了,现在go在服务端中间件已经区块链底层系统构件上成为了标准
- 3.Go 语言有 Google 这个世界一流的技术公司在后面,并且解决了并发编程和写底层应用开发效率的痛点
因此,Go语言目前作为高并发与分布式系统领域炙手可热的语言,值得我们去学习,因此在算法的实现上抱着熟练一门编程语言的目的,选择了Golang的实现方式,当然也完全可以采用别的语言实现一遍。
3.目录
《算法篇01:数组和链表》
《算法篇02:栈与队列》
参考
有疑问加站长微信联系(非本文作者)