ARTS挑战打卡第五周

 带着问题/目的去练习,事半功倍

Algorithm-一周至少一道算法题

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

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

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

01-Algorthm

https://leetcode.com/problems/binary-search-tree-iterator/

思路:树的遍历,还是用树的遍历框架,遍历结点和左右子树。

https://leetcode.com/problems/kth-largest-element-in-an-array/

思路:快速选择算法,参考快排算法

02-Review

——————

文章链接:https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html

很赞的一篇文章,相当于指明了一幅寻宝图的起点,介绍如何开始学习分布式系统,记录几点摘要:

  • 入门分布式系统至少要三个月,之后需要很长时间去加深这部分的能力

  • 不鼓励通过看某些概念或算法的实现代码来学习分布式系统,因为代码都是大同小异,结构都很类似,通过代码会让自己进入了一个熟悉的领域,带着原来的思路去学习,应该把分布式系统当作一个全新的领域来学习。

  • 先读完这本《Introduction to Distributed Systems》[https://cse.buffalo.edu/~demirbas/CSE586/book.pdf],里面介绍了分布式系统领域的概念和相关主题

  • 使用TLA+(一种正式的规范语言。它用于设计,建模,记录和验证程序,尤其是并发系统和分布式系统。)来练习算法

  • 学习分布式系统中的impossibility results,即证明某项事情的不可能的,分布式系统中两个最重要的impossibility results,网络协同攻击和FLP。

  • 读原始的论文来学习

文章又推荐了一次马丁大神的《数据密集型系统设计》,这本书我读过一遍,简直是大开眼界,值得再次拜读。还有其他的学习链接都在文章里面有,这里不一一列举了。

03-Tip

——————

进程和线程的区别

从学术上理解,进程就是`包含上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文`,

线程就是CPU执行那一部分的一个个小段。

进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。

另一种简单的理解:

1. 进程:程序的一次执行

2. 线程:CPU的基本调度单位

04-Share

—————

blog-使用拦截器统一处理异常(见推送第二篇文章)

参考链接:

线程和进程的区别是什么?

https://www.zhihu.com/question/25532384

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

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

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

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