通过这几天对跳表的学习,我从最开始还是想以原来的学习方式用数学规则把跳表推出来转变成了去啃源码,因为刚接触跳表的时候,我就意识到了内存,并发,CAS/锁,到CPU这些新的概念,当时刚一接触到这些东西,脑子差点炸了。因为这些我全部都没有系统的学习过的知识,造成了认知障碍,甚至一度开始怀疑自己选择学计算机编程真的能解决自己的生存问题么。由于自己也问过一些编程行业从事了10多年的同学,我开始意识到了我前面的学习方式需要改变,哪怕我底层学的再好,逻辑推理能力再强,我依然改变不了我以后的工作需要写业务代码的现实,我甚至开始厌学并且内心很慌乱。但是我还是在强迫自己接受现实,不继续学下去也同样不会有更好的出路,我今天就开始按自己的想法去啃跳表的源码。尽管这几天厌学内心很慌乱,但是我依然也还是在思考并发,CAS/锁的问题。我也理解了并发,CAS/锁的机制,再因为自己也想转换学习方式不再用原来学二叉树家族的从0-1纯数学规则实现的方式学习,而选择啃源码并改造的方式学习时,我在啃源码的时候就彻底理解了CAS的工作机制,并且闭环了并发。我看到的源码是关于并发下的删除逻辑的那段代码,我认真的分析了源码的设计,最终彻底理解了CAS/锁,还有并发是怎么回事。源码的删除逻辑就只是在删除节点目标位置后添加了一个墓碑节点用于标记,当其他线程访问到这个墓碑时就失败重试,而抢到修改的线程则对目标节点进行指针操作,把目标节点从链表中摘除掉,从而保证数据的一致性。至此我的自信又找回来了,这玩意比我去推红黑树的难度都不知道低了多少,不就只是在我写树家族对指针操作前加了一个限制而已么,又啥好慌的。自己看源码又不是看不懂,自己按源码的思路去改造出来一个更适用的工程化的API不就行了,这不就是我的项目经验么?有什么好慌的。尽管跳表的从0-1实现确实比红黑树的更复杂,但是我又不是看不懂源码,该用的直接抄就是了,觉得繁琐的直接自己设计就行了。以我的学习能力压根没有必要慌,再怎么样去个小公司当码农也是降维打击,自己又不是想要大富大贵,就只是混个温饱,能长期深入学习下去的工作而已,我是不信行业会没有我的一席之地。