ARTS 挑战打卡第八周(200629-200705)
Algorthm
https://leetcode.com/problems/insert-into-a-binary-search-tree
思路:记住二叉搜索树的特性,左子树比根节点小,右子树比根节点大,根据这个判断不断往下走,直到找到空节点,就可以把节点添加进去。
Review
https://muratbuffalo.blogspot.com/2018/04/book-review-how-to-write-lot-practical.html
一篇书评,讲如何写文章的练习,一直在练习写作,所以对这个话题也挺感兴趣。
作者总结了几个建议:
关于找时间写作,把写作放到自己的日程上,只有这个方法
自律,该干嘛干嘛,该写作就写作,而不要去浏览邮件/上网
开始写,就会有灵感了,不要等到灵感来了才行动
列出写作计划
先写,后面在修改,不要同时进行(草稿)
这周写的博客也深有体会,其实最重要的就是找到一个主题,先去写,先动手,就会有新的想法产生,全部写完之后,再找时间去慢慢修改,如果有画图的地方,也是写完之后再修改。
Tip
乐观锁与悲观锁
悲观锁
总是假设最坏的情况,指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。在悲观锁的情况下,读数据时加锁,其他事务无法修改这些数据,修改数据时也加锁,其他事务无法读取这些数据。
Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
乐观锁
乐观锁,总是假设最好的情况,每次操作数据都认为别人不会修改,所以不会加锁。在更新的时候会判断一下在此期间有没有其他行为去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用场景。
在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。
Share
blog-Raft探索历程-part2
原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
如果本文对你有帮助,请点个赞吧,谢谢
版权声明: 本文为 InfoQ 作者【老胡爱分享】的原创文章。
原文链接:【http://xie.infoq.cn/article/912c87afd0ea70210346d6270】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论