ARTS挑战打卡第八周

Algorithm-一周至少一道算法题
Review-阅读并点评至少一篇英文技术文章
Tip-学习至少一个技术技巧,总结和归纳在日常工作中所遇到的知识点
Share-分享一篇有观点和思考的技术文章
ARTS挑战打卡第八周
文章图片

01-Algorthm
【ARTS挑战打卡第八周】———————
https://leetcode.com/problems/insert-into-a-binary-search-tree
思路:记住二叉搜索树的特性,左子树比根节点小,右子树比根节点大,根据这个判断不断往下走,直到找到空节点,就可以把节点添加进去。
02-Review
——————
https://muratbuffalo.blogspot.com/2018/04/book-review-how-to-write-lot-practical.html
一篇书评,讲如何写文章的练习,一直在练习写作,所以对这个话题也挺感兴趣。
作者总结了几个建议:

  • 关于找时间写作,把写作放到自己的日程上,只有这个方法
  • 自律,该干嘛干嘛,该写作就写作,而不要去浏览邮件/上网
  • 开始写,就会有灵感了,不要等到灵感来了才行动
  • 列出写作计划
  • 先写,后面在修改,不要同时进行(草稿)
这周写的博客也深有体会,其实最重要的就是找到一个主题,先去写,先动手,就会有新的想法产生,全部写完之后,再找时间去慢慢修改,如果有画图的地方,也是写完之后再修改。


03-Tip
——————
乐观锁与悲观锁
悲观锁
总是假设最坏的情况,指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。在悲观锁的情况下,读数据时加锁,其他事务无法修改这些数据,修改数据时也加锁,其他事务无法读取这些数据。
Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
乐观锁
乐观锁,总是假设最好的情况,每次操作数据都认为别人不会修改,所以不会加锁。在更新的时候会判断一下在此期间有没有其他行为去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用场景。
在Java中`java.util.concurrent.atomic`包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。
04-Share
—————
blog-Raft探索历程-part2

原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
如果本文对你有帮助,请点个赞吧,谢谢
更多精彩内容,请关注个人公众号。
ARTS挑战打卡第八周
文章图片

    推荐阅读