codedump的电报频道
4.43K subscribers
151 photos
4 videos
2 files
623 links
发布个人博客(主页 codedump.info)、想法、推荐等。RSS订阅地址:https://rsshub.app/telegram/channel/codedump_notes,过往汇总搜索可以到:https://app.shokichan.com/c/tg/codedump_notes。
Download Telegram
Channel created
工作上的原因,最近要实现一个LRU的内存管理器,于是研究了一下Memcached的实现做个笔记备忘,意外的发现其使用的LRU算法做了更新换代,从原先经典的LRU实现变成了所谓的分段LRU算法(Segmented LRU),感觉跟之前看过的Lua的三色GC算法有点类似:https://www.codedump.info/post/20210701-memcached/ #博客 #存储 #LRU
一个“好”的晋升制度,总能在候选人在晋升失败的时候反思自己的问题,而不是在想这个公司是不是适合我、岗位是不是适合我等等。

“都是我的错”,“都是我不好”,“我太菜了”,“明年继续努力”...

某种程度上,这些何尝又不是一种职场上的PUA? #职场 #说的都是错的
Channel photo updated
Channel name was changed to «codedump的电报频道»
因为使用Markdown格式编写文档,时常需要引用外部文章。如果简单的在浏览器中拷贝文章URL,还需要自己修改成MD格式的引用格式。推荐一个叫“TabCopy”的chrome插件,安装之后在页面右键可以选择生成不同的URL引用格式:MD、HTML等等,看似很简单的功能,但是能节省很多零碎的时间。见:https://chrome.google.com/webstore/detail/tabcopy/micdllihgoppmejpecmkilggmaagfdmb/ #推荐 #生产力工具
旧金山大学制作的系列算法可视化交互动图,包括常见的堆、栈、队列等。学习算法数据结构的时候,如果能图示化的展现其变化过程,理解起来就会更顺畅,在学习B+Tree算法的时候,我就用过这里的演示来理解流程。 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html #推荐 #算法 #数据结构
#博客 #分布式 #Raft #etcd

之前对etcd raft的wal、快照部分理解的不够深入,导致一些问题理解的不到位,于是单独整理了一篇这部分的分析:

https://www.codedump.info/post/20210628-etcd-wal/

看完之后应该能回答这个问题:follower节点是在收到leader节点的日志广播之后,还是在日志达成一致之后,才将日志落盘到WAL的?为什么以及恢复流程是怎样的?

写完这篇博客之后,发现我已经写了5篇raft、etcd的文章了,其中第一篇是纯的raft原理篇,其余4篇都是结合etcd来分析其raft实现的。


我应该不用再写etcd的raft实现分析文章了吧 🙂 #flag
#推荐

DeepL是由德国一家AI创业公司的推出的翻译服务,主打使用人工智能、深度学习技术来进行翻译服务,支持 简体中文、英语、德语、法语、日语、西班牙语、意大利语、荷兰语及波兰语之间的翻译。

我自己尝试了一下这个翻译工具,将我博客的一篇中文博文翻译成英文,几乎不加修改就能比较顺畅了:

《如何阅读一份源代码?(2020年版)》 https://www.codedump.info/post/20200605-how-to-read-code-v2020/

《How to Read Code(En Version)》 https://www.codedump.info/post/20210215-how-to-read-code-en/

感觉对于技术类文章的翻译来说,这个工具的表现已经很好了。

Mac、Win桌面版可以免费下载,也有网页版本,但是免费版本有每次翻译的字数限制,文章长了需要自己多倒腾几次:https://www.deepl.com/translator
#博客

因为博客里都是很硬的技术文章,于是想慢慢写一些非技术的文章,这是第一篇《选择的维度》:

https://www.codedump.info/post/20210803-choice-dimension/

简单介绍了做选择时的一些方法论,简而言之:做选择时要精简出最重要的几个维度以及划分维度的权重。
Channel photo updated
#职场

跳槽时的薪水,由什么因素决定?

你自身的能力(水平、资源、学历等),肯定是决定因素之一,这已经是共识,不再多说。除此以外,跳槽的薪水,还取决于你当前工作的薪水,因为跳槽薪水还有一部分因素是“给你多少钱能让你离开现在的工作”。

水平能决定你是否满足这份工作的要求下限,而现有薪水能决定你在满足要求下限之后,拿到这份工作薪水范围的哪个点。

以一个例子来说明,假设一份工作的薪水范围是1W~2W。同样满足这个工作要求的两个人,一个人现有薪水8K,另一个人10K,假设至少都要涨薪5成才够跳槽吸引力,那么8K的人只需要给12K,而10K的人则需要15K了。讽刺的是,大部分情况下这两人的水平差距也许并没有8K和10K的差距,而仅仅由于上一份工作的薪水就能决定多少钱能挖的动ta了。

因此,跳槽时的薪水溢价,有相当一部分来源于“多少钱能让你离开现在的公司”。

当然,一份工作的吸引力,除了待遇还有别的维度,可以回看前面的文章《选择的维度》,在这里只谈论待遇这个维度。
#博客

上个月写过一篇memcached的文章,最近项目实现了cache库之后,发现很多细节当时理解的并不够细致,于是重新又写了一篇memcached的文章:

https://www.codedump.info/post/20210812-memcached/

这次将slab、分段LRU、读写操作中的锁、安全回收item、hash表的扩容操作等都讲到了,希望以后也不需要再写memcached的文章了。

总体感觉是实现一个多线程安全且高效的cache库还是有不少细节要考虑的,细节是魔鬼。
#文章推荐

JuiceFS创始人的一篇文章,很同意里面的一句话:“互联网的人口增长的红利结束了,但是数据增长的红利还很足,而且应该能持续很久,甚至不知道会不会有结束的那天。”。前者表现在内卷越来越严重了,后者原因是场景(AI、智能)、上网设备(车联网、物联网)越多越多了。

https://mp.weixin.qq.com/s/AQk7dd2g0MDzYMdwmjzL5g
#项目推荐

之前已经清楚了b-tree大体的算法思想,最近想找一个简洁的b-tree实现看看生产级都是怎么做的,发现一个不错的项目:https://github.com/madushadhanushka/simple-sqlite

看介绍,作者把sqlite2.5里b-tree相关的部分代码抽取出来了,我编译运行了一下用例都能正常跑,代码量不过几千行,就从这里入手开始吧。

按照sqlite官网上记载的发布历史,sqlite 2.5是2002年6月的版本了:

https://www.sqlite.org/changes.html

附带博客里整理过的B、B+Tree算法原理:

https://www.codedump.info/post/20200609-btree-1/

https://www.codedump.info/post/20200615-btree-2/