14.1 Go数据结构

每一个程序都在学习十八般武艺,学习语言、数据库、HTTP等技能。

而程序中的九阳神功就是数据结构与算,掌握了数据结构与算法,你的内功修炼就会有质的飞跃。

无论从事业务开发,测评代码性能还是资源消耗,还是架构设计,优化设计模式,还是玩转区块链,都必须搞定数据结构与算法。

只要掌握数据结构与算法,就能立于计算机的不败之地

Rob Pike的编程原则

与程序员们共勉:

  1. 你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。
  2. 估量。在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度。
  3. 花哨的算法在 n 很小时通常很慢,而 n 通常很小。花哨算法的常数复杂度很大。除非你确定 n 总是很大,否则不要用花哨算法(即使 n 很大,也优先考虑原则 2 )。比如,解决常见问题时,最简单的树——二叉树(binary tree),总是比那些复杂的树(AVL树,伸展树(splay tree)和红黑树、B-树(B-tree),多叉树(trie))来的高校。
  4. 花哨的算法比简单算法更容易出 bug 、更难实现。尽量使用简单的算法配合简单的数据结构。只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:array 、linked list 、hash table、binary tree 。这四大法宝可不是各自为战的,灵活结合才能游刃有余。比如,一个用hash table组织的symbol table,其中是一个个由字符型array构成的linked list。
  5. 以数据为中心。如果已经选择了正确的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。

1.1. 数据结构/算法

网站如何支撑高并发,海量吞吐情况下服务器怎么还能坚若磐石?服务器集群技术,数据库优化、缓存技术又是怎么被大神设计出来的?

最新文章

  1. 浅析.NET泛型
  2. org.dom4j.documentexception异常
  3. CSS3弹性伸缩布局(一)——box布局
  4. Java 应用发布后,需要关注的7个性能指标
  5. 记一次ios使用OAuth 2.0写的接口获取token的小错
  6. 【转】无废话WCF系列教程
  7. Sqlite 错误码
  8. DCI架构
  9. python实现的文本编辑器 - Skycrab - 博客频道 - CSDN.NET
  10. grails一对一关联关系
  11. Java并发工具类 - CountDownLatch
  12. Servlet的三个域对象
  13. Selenium之Selenium IDE
  14. 正则表达式处理BT的html嵌套问题
  15. 公众号第三方平台开发 教程六 代公众号使用JS SDK说明
  16. JavaScript大杂烩4 - 理解JavaScript对象的继承机制
  17. 我的图片爬虫demo
  18. Android App Crash, send email to author
  19. test20181017 B君的第一题
  20. rabbitmq的延迟消息队列实现

热门文章

  1. (转)对 Linux 专家非常有用的 20 个命令
  2. java中ThreadLocal的使用
  3. Spring5参考指南:基于Schema的AOP
  4. 【集群实战】NFS网络文件共享服务2-mount挂载(参数,优化)
  5. 13.Python中的命名空间是什么
  6. matlab画图(一)
  7. AngularJS学习1-基础知识
  8. VS中的生成和重新生成的区别
  9. 一个简单的wed服务器SHTTPD(6)———— SHTTPD错误处理的实现
  10. Dubbo(六):zookeeper注册中心的应用