一周总结,来一次100天挑战

之前买了极客时间上的一个课程《左耳听风》,发现作者发起了一个挑战挺有趣的,ARTS,坚持100天。

Algorithm-一周至少一道算法题

Review-阅读并点评至少一篇英文技术文章

Tip-学习至少一个技术技巧,总结和归纳在日常工作中所遇到的知识点

Share-分享一篇有观点和思考的技术文章

看到这个挑战后自己也想实践一次,作为今年的100天挑战,再次出发。

第一周:200511-200517

Algorithm

leetcode-230:https://leetcode.com/problems/kth-smallest-element-in-a-bst/

leetcode-94:https://leetcode.com/problems/binary-tree-inorder-traversal/

leetcode-144:https://leetcode.com/problems/binary-tree-preorder-traversal/

leetcode-145:https://leetcode.com/problems/binary-tree-postorder-traversal/

leetcode-897:https://leetcode.com/problems/increasing-order-search-tree/

leetcode-997:https://leetcode.com/problems/find-the-town-judge/

Review

1、Implementing a Key-Value Store – Part 1: What are key-value stores, and why implement one

点评:

作者介绍了kv存储及为什么要实现,kv是一种简易的数据库,用于存储数据。比如现在的redis,是一种可支持快速读/存的数据库。可以有多种数据结构实现KV存储系统,比如哈希表和平衡树。

要实现kv存储系统的原因是为了提升后端程序员的技术栈,而且阅读书籍和wiki太无聊且缺少实践。

作者为了回顾以下后端相关知识点:

  • C++

  • 面向对象编程

  • 数据结构和算法

  • 内存管理

  • 多线程、多进程和并发

  • 网络编程(server/client)

  • 磁盘管理的I/O问题以及文件系统使用

文章的结构很清晰,先介绍了存储系统,以及作为后端通过实践去实现一个,而且重点并不是造轮子,只是在参考已有KV存储系统的实现,取其精华,去其糟粕,实现一个更好的KV存储系统,同时也提升自己技能树。

这样的学习习惯可以借鉴,带着目的去学习和练习,目标清晰,也不会被其他东西打断。自己的学习也可以参考列一下自己要学习的知识点,不能总是东拼西凑的,知识点需要能串起来。

2、如何阅读论文(https://www.cc.gatech.edu/~akmassey/posts/2012-02-15-advice-on-reading-academic-papers.html)

总结记录:

  • 首先读简要和结论:

    找到作者想表达的内容和研究的课题

  • 快速过一遍论文,得出:

    目的、结构和研究方向

  • 不用每一个字都读了,如果遇到不懂的,可以暂时先跳过,继续往下读,后面的内容可能会解释前面的内容

Tip

参数校验,定义通用参数,把方法写在类里边,在请求到来时或者在拦截器调用类的校验方法。

模型是人们对一类事物的概括与抽象,可以帮助我们更好地理解事物的本质,更方便地解决问题。比如,数学公式是我们对物理与数学规律的抽象,地图和沙盘是我们对地理空间的抽象,软件架构图是软件工程师对软件系统的抽象。

通过抽象,我们更容易把握事物的内在规律,而不是被纷繁复杂的事物表象所迷惑,更进一步深刻地认识这个世界。通过抽象,伽利略发现力是改变物体运动的原因,而不是使物体运动的原因,为全人类打开了现代科学的大门。

关于认为做“最新东西”写的乱点没问题,反正最后会重构的问题;这个理论对么?当然对,但是有一个前提,就是做的东西简单, 更确切的讲, 好测, 能很容易验证基本逻辑或者系统的normal path; 对于不好测,且出一个bug就影响重大, 可能会导致黄掉整个项目,那么程序复杂度就不能过于给系统添麻烦,程序复杂度和业务复杂度不成基本线性关系,说明这个程序员写程序没有scalability,做点简单东西还行,做复杂东西就原地爆炸;程序员产出的code能不能在复杂度这个维度上scale,是我想指出的东西。(阿莱克西斯-知乎)

Share(在第二篇文章中给出)

blog-【总结】从0到1的项目经历

挑战看起来不容易,做起来好难,坚持下去更难,把挑战暴露出来,希望能接受大家的监督,完成这个挑战。

这是第一次挑战的记录,排版有点乱,还在学习怎么做好排版,之后会继续改良。如果有错误的地方,欢迎指正。

原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

如果本文对你有帮助,请点个赞吧,谢谢^_^

参考链接:

左耳听风ARTS

https://time.geekbang.org/column/article/85839

编程到底难在哪里?

https://www.zhihu.com/question/22508677/answer/276595266

Advice on Reading Academic Papers

https://www.cc.gatech.edu/~akmassey/posts/2012-02-15-advice-on-reading-academic-papers.html

Implementing a Key-Value Store

http://codecapsule.com/2012/11/07/implementing-a-key-value-store-part-1-what-are-key-value-stores-and-why-implement-one/

更多精彩内容,请关注个人公众号。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章