#杂
最近由于某大厂员工的事件,抑郁症又回到人们的视线中。
以我个人以前的体验来说,情绪低落(轻度抑郁)的时候,与之相伴的总是失眠,失眠完了还要继续面对繁重的工作,恶性循环了。
让我真正从这里走出来的是,我意识到抑郁-失眠-抑郁是一个恶性循环,所以只要打破其中一个缓解就能发生改善。于是,后来再出现类似情绪,就首先保证自己的睡眠,什么都不做,早早睡觉。如果睡不着,就使用褪黑素来助眠。为了减少赖药性,给自己定一个时间阈值,比如凌晨一点还睡不着,就上褪黑素助眠。很快,这种情绪就得到了很大的缓解。
就这段经历和体会,我想说的是:
1、情绪低落时,优先保证睡眠,睡好了精神好了,再想别的事情。读书却并不见得是这种时候最好的选择,因为“读书”会带来很多外来的观点,这种时候更多的不是输入,而是休息。
2、推广开来,如果你不知道该做什么的时候(aka “迷茫”),就去锻炼身体和好好休息,这两件事情总不会有错。
3、永远不要在情绪发生异常波动(低落、愤怒)的时候,做出重大的决定。
最近由于某大厂员工的事件,抑郁症又回到人们的视线中。
以我个人以前的体验来说,情绪低落(轻度抑郁)的时候,与之相伴的总是失眠,失眠完了还要继续面对繁重的工作,恶性循环了。
让我真正从这里走出来的是,我意识到抑郁-失眠-抑郁是一个恶性循环,所以只要打破其中一个缓解就能发生改善。于是,后来再出现类似情绪,就首先保证自己的睡眠,什么都不做,早早睡觉。如果睡不着,就使用褪黑素来助眠。为了减少赖药性,给自己定一个时间阈值,比如凌晨一点还睡不着,就上褪黑素助眠。很快,这种情绪就得到了很大的缓解。
就这段经历和体会,我想说的是:
1、情绪低落时,优先保证睡眠,睡好了精神好了,再想别的事情。读书却并不见得是这种时候最好的选择,因为“读书”会带来很多外来的观点,这种时候更多的不是输入,而是休息。
2、推广开来,如果你不知道该做什么的时候(aka “迷茫”),就去锻炼身体和好好休息,这两件事情总不会有错。
3、永远不要在情绪发生异常波动(低落、愤怒)的时候,做出重大的决定。
#博客
这是一系列讲解sqlite btree实现文章的开篇(aka “第零篇”),讲述了我探索btree生产级实现的过程,以及概述了sqlite btree模块的架构。
如文中所言:“本系列文章就sqlite 3.36版本的btree实现展开描述,希望对那些和我一样对“生产级btree类存储引擎实现”有好奇心的人有一点帮助。”
文章最后有彩蛋。
https://www.codedump.info/post/20211217-sqlite-btree-0/
这是一系列讲解sqlite btree实现文章的开篇(aka “第零篇”),讲述了我探索btree生产级实现的过程,以及概述了sqlite btree模块的架构。
如文中所言:“本系列文章就sqlite 3.36版本的btree实现展开描述,希望对那些和我一样对“生产级btree类存储引擎实现”有好奇心的人有一点帮助。”
文章最后有彩蛋。
https://www.codedump.info/post/20211217-sqlite-btree-0/
#博客
sqlite3.36版本 btree实现(一)- 管理页面缓存
这一篇分析sqlite里页面缓存的实现。
https://www.codedump.info/post/20211217-sqlite-btree-1-pagecache/
sqlite3.36版本 btree实现(一)- 管理页面缓存
这一篇分析sqlite里页面缓存的实现。
https://www.codedump.info/post/20211217-sqlite-btree-1-pagecache/
#博客
sqlite3.36版本 btree实现(二)- 并发控制框架
https://codedump.info/post/20211218-sqlite-btree-2-concurrency-control/
sqlite3.36版本 btree实现(二)- 并发控制框架
https://codedump.info/post/20211218-sqlite-btree-2-concurrency-control/
#杂
最近几天连续更新了好几篇sqlite btree系列的文章,实际上这几篇文章严格算起来并不算是这几天才写的,因为这个项目我已经连续看了几个月了,见:
https://www.codedump.info/post/20211217-sqlite-btree-0/
中的描述,现在只是把之前整理的笔记逐步输出到博客上。这个系列文章,应该还有好几篇,看看2022年1月份以内能否全部输出完毕。
另外,我也在基于sqlite的btree模块,抽出来一个独立的C语言的btree KV库,等到全部做好就会把private仓库公开出来,这应该就是我想做的“btree版本的leveldb”:小巧、精简、生产可用。
最近几天连续更新了好几篇sqlite btree系列的文章,实际上这几篇文章严格算起来并不算是这几天才写的,因为这个项目我已经连续看了几个月了,见:
https://www.codedump.info/post/20211217-sqlite-btree-0/
中的描述,现在只是把之前整理的笔记逐步输出到博客上。这个系列文章,应该还有好几篇,看看2022年1月份以内能否全部输出完毕。
另外,我也在基于sqlite的btree模块,抽出来一个独立的C语言的btree KV库,等到全部做好就会把private仓库公开出来,这应该就是我想做的“btree版本的leveldb”:小巧、精简、生产可用。
#杂
“快乐废物的定义是什么呢?欣然接受自己是个普通人,不因为其他人的卷而焦虑,能够在平淡生活里找到所有闪闪发光的瞬间,快乐做自己。
在承认自己是快乐废物的瞬间,一切压力都有了出口。”
简直就是我35岁以后的写照啊,当认识到自己不过就是个普通人之后,整个人都轻松了。
https://mp.weixin.qq.com/s/DeQ6rbbrNFjrYhAQCtr9ag
“快乐废物的定义是什么呢?欣然接受自己是个普通人,不因为其他人的卷而焦虑,能够在平淡生活里找到所有闪闪发光的瞬间,快乐做自己。
在承认自己是快乐废物的瞬间,一切压力都有了出口。”
简直就是我35岁以后的写照啊,当认识到自己不过就是个普通人之后,整个人都轻松了。
https://mp.weixin.qq.com/s/DeQ6rbbrNFjrYhAQCtr9ag
Weixin Official Accounts Platform
承认自己是个快乐废物真的很爽|万有同频Vol.13
悲观和浪漫并不冲突,我时常消极又觉得生活真美好。
#推荐
porter.io是基于Github关注项目推荐相关文章发送邮件通知的应用:
“We analyse your Github footprint, filter Hacker News items according to your taste, and deliver them to your mailbox.”
https://porter.io/
porter.io是基于Github关注项目推荐相关文章发送邮件通知的应用:
“We analyse your Github footprint, filter Hacker News items according to your taste, and deliver them to your mailbox.”
https://porter.io/
#Rust
Rust里写一个双向链表,确实不是件容易的事情。
这篇文档就展现了Rust实现链表的探索思考,我挺喜欢这种就着一个问题点,深挖细节逐层分析的文档的:
https://rust-unofficial.github.io/too-many-lists/
Rust里写一个双向链表,确实不是件容易的事情。
这篇文档就展现了Rust实现链表的探索思考,我挺喜欢这种就着一个问题点,深挖细节逐层分析的文档的:
https://rust-unofficial.github.io/too-many-lists/
#冷知识
新浪微博已经将github域名屏蔽好一段时间了,比如github地址:
https://github.com/datafuselabs/databend
在微博上是发不出来的,只能去掉“https://”才能发出,但是这样的地址不会带上链接点击自动跳转,需要手动复制很麻烦。
昨天看到网友发现了办法,可以用“全限定域名”的方式发出,即将“github.com”变成“github.com.”,上面的github项目地址改成:
https://github.com./datafuselabs/databend
就能在新浪微博上发出还能自带跳转。
(有意思的是,在电报上发出上面这个修改后的域名,tg只能识别出“github.com./”部分的链接,后面的字符串就不认为是URL的一部分了,可见电报不能正确识别出全限定域名,即在这条消息里点开上面的域名只能跳转到github.com)
关于“全限定域名”,英文名为“FQDN:(Fully Qualified Domain Name)”,见维基上的解释:
https://en.wikipedia.org/wiki/Fully_qualified_domain_name
关于域名、DNS,我也只是知道简单的基础知识,看来有时间需要补补课了:)
新浪微博已经将github域名屏蔽好一段时间了,比如github地址:
https://github.com/datafuselabs/databend
在微博上是发不出来的,只能去掉“https://”才能发出,但是这样的地址不会带上链接点击自动跳转,需要手动复制很麻烦。
昨天看到网友发现了办法,可以用“全限定域名”的方式发出,即将“github.com”变成“github.com.”,上面的github项目地址改成:
https://github.com./datafuselabs/databend
就能在新浪微博上发出还能自带跳转。
(有意思的是,在电报上发出上面这个修改后的域名,tg只能识别出“github.com./”部分的链接,后面的字符串就不认为是URL的一部分了,可见电报不能正确识别出全限定域名,即在这条消息里点开上面的域名只能跳转到github.com)
关于“全限定域名”,英文名为“FQDN:(Fully Qualified Domain Name)”,见维基上的解释:
https://en.wikipedia.org/wiki/Fully_qualified_domain_name
关于域名、DNS,我也只是知道简单的基础知识,看来有时间需要补补课了:)
GitHub
GitHub - databendlabs/databend: 𝗔𝗜-𝗡𝗮𝘁𝗶𝘃𝗲 𝗗𝗮𝘁𝗮 𝗪𝗮𝗿𝗲𝗵𝗼𝘂𝘀𝗲. Open-source Snowflake alternative. Proven at petabyte scale with enterprise…
𝗔𝗜-𝗡𝗮𝘁𝗶𝘃𝗲 𝗗𝗮𝘁𝗮 𝗪𝗮𝗿𝗲𝗵𝗼𝘂𝘀𝗲. Open-source Snowflake alternative. Proven at petabyte scale with enterprise performance. Built for multimodal analytics. https://databend.com - databendlabs/databend
#博客
本节介绍sqlite中最原始的journal页面数据备份机制
https://codedump.info/post/20211222-sqlite-btree-3-journal/
需要以上一节并发控制机制为基础:
https://codedump.info/post/20211218-sqlite-btree-2-concurrency-control/
本节介绍sqlite中最原始的journal页面数据备份机制
https://codedump.info/post/20211222-sqlite-btree-3-journal/
需要以上一节并发控制机制为基础:
https://codedump.info/post/20211218-sqlite-btree-2-concurrency-control/
#电影
周末去看了一部很有意思的电影《爱情神话》,又看到一篇不错的影评(内容有剧透)。
“几乎每个行业的腰部人,都会卡在某个地方,上不去又不愿意下来,开始是知道自己有才华,但就是上不去,到最后,是连自己也怀疑自己是不是真的有才华,是不是不行。但曾经受到过的那些赞扬,一直坚持到的今天,那些过往,又都历历在目,你又怎么甘心承认自己不行?”
https://mp.weixin.qq.com/s/qRV35ZN9QAj-aJwCAtvJYQ
周末去看了一部很有意思的电影《爱情神话》,又看到一篇不错的影评(内容有剧透)。
“几乎每个行业的腰部人,都会卡在某个地方,上不去又不愿意下来,开始是知道自己有才华,但就是上不去,到最后,是连自己也怀疑自己是不是真的有才华,是不是不行。但曾经受到过的那些赞扬,一直坚持到的今天,那些过往,又都历历在目,你又怎么甘心承认自己不行?”
https://mp.weixin.qq.com/s/qRV35ZN9QAj-aJwCAtvJYQ
Weixin Official Accounts Platform
《爱情神话》,如何走出困顿的人生?
我敬你弯着腰,上山往高处走。
#推荐
“焦虑的反义词是具体。焦虑是一个非常虚幻的情绪。你需要突破那个迷雾,你说具体的路径怎么走,你脚踩到那个具体的路径上,一步一步往前走的时候,就没有这个焦虑。”
语出自:《圆桌派.第五季》第六期周轶君。
“焦虑的反义词是具体。焦虑是一个非常虚幻的情绪。你需要突破那个迷雾,你说具体的路径怎么走,你脚踩到那个具体的路径上,一步一步往前走的时候,就没有这个焦虑。”
语出自:《圆桌派.第五季》第六期周轶君。
#杂
豆瓣网友:“年份是人类编造的虚拟单位,不会影响事件的延续性。 但它真的可以给我们一种「另一年应该会不一样」的错觉。这是一个很好的发明。”
这句话甚合我意,因为每一天对我来说,都是一样的,并没有哪天有什么更特殊的意义。当然,反过来说,可能正因为这样想,所以我的生活里缺少了很多“仪式感”。
豆瓣网友:“年份是人类编造的虚拟单位,不会影响事件的延续性。 但它真的可以给我们一种「另一年应该会不一样」的错觉。这是一个很好的发明。”
这句话甚合我意,因为每一天对我来说,都是一样的,并没有哪天有什么更特殊的意义。当然,反过来说,可能正因为这样想,所以我的生活里缺少了很多“仪式感”。
#博客
假期第一天没有闲着,总结了一下etcd 3.5的联合共识算法(joint consensus)的实现:
https://codedump.info/post/20220101-etcd3.5-joint-consensus/
假期第一天没有闲着,总结了一下etcd 3.5的联合共识算法(joint consensus)的实现:
https://codedump.info/post/20220101-etcd3.5-joint-consensus/
codedump的网络日志
etcd 3.5版本的joint consensus实现解析 - codedump的网络日志
#杂
《风起洛阳》就是换了皮的《长安十二时辰》,一位豆瓣网友的总结,故事大体都是这样的模式:”总是厉害的素人,巧合的故事,帮忙但起协助的底层工具人或组织,再加一个不得志的王子。“
初看《长安十二时辰》的时候还觉得惊艳,看到《风起洛阳》已经疲劳了。对一个创作者来说,总是重复自己待在舒适圈有点不思进取了。
《风起洛阳》就是换了皮的《长安十二时辰》,一位豆瓣网友的总结,故事大体都是这样的模式:”总是厉害的素人,巧合的故事,帮忙但起协助的底层工具人或组织,再加一个不得志的王子。“
初看《长安十二时辰》的时候还觉得惊艳,看到《风起洛阳》已经疲劳了。对一个创作者来说,总是重复自己待在舒适圈有点不思进取了。
#Raft
我们新开的Rust版本raft实现的坑,基于开源的async-raft做了很多优化、修改。
raft的Rust版本实现,之前已经有tikv的仿etcd实现了,对比起来:etcd版本是个完全同步的流程,使用者和raft层通过Ready结构体进行交互,使用者拿到Ready数据之后,再自己做网络、存储等操作;async-raft集成了tokio,是一个全异步的实现,需要用户使用时提供的网络、存储trait实现。
@drdrxp 为我们修改的版本,大体写了几个待优化的技术点,见:
https://www.douban.com/people/2135060/status/3711825327/?_i=1262986DTua3Gc
https://github.com/datafuselabs/openraft
我们新开的Rust版本raft实现的坑,基于开源的async-raft做了很多优化、修改。
raft的Rust版本实现,之前已经有tikv的仿etcd实现了,对比起来:etcd版本是个完全同步的流程,使用者和raft层通过Ready结构体进行交互,使用者拿到Ready数据之后,再自己做网络、存储等操作;async-raft集成了tokio,是一个全异步的实现,需要用户使用时提供的网络、存储trait实现。
@drdrxp 为我们修改的版本,大体写了几个待优化的技术点,见:
https://www.douban.com/people/2135060/status/3711825327/?_i=1262986DTua3Gc
https://github.com/datafuselabs/openraft
GitHub
GitHub - databendlabs/openraft: rust raft with improvements
rust raft with improvements. Contribute to databendlabs/openraft development by creating an account on GitHub.
#Rust
无意间打开《Rust for Rustaceans》作者Jon Gjengset的油管频道:
https://www.youtube.com/c/JonGjengset/playlists
也太强了吧:
《Implementing TCP in Rust》:https://www.youtube.com/watch?v=bzja9fQWzdA&list=PLqbS7AVVErFivDY3iKAQk3_VAm8SXwt1X
《Porting Java's ConcurrentHashMap to Rust》:https://www.youtube.com/watch?v=yQFWmGaFBjk&list=PLqbS7AVVErFj824-6QgnK_Za1187rNfnl
...
马上找来《Rust for Rustaceans》后面好好研读一下。
无意间打开《Rust for Rustaceans》作者Jon Gjengset的油管频道:
https://www.youtube.com/c/JonGjengset/playlists
也太强了吧:
《Implementing TCP in Rust》:https://www.youtube.com/watch?v=bzja9fQWzdA&list=PLqbS7AVVErFivDY3iKAQk3_VAm8SXwt1X
《Porting Java's ConcurrentHashMap to Rust》:https://www.youtube.com/watch?v=yQFWmGaFBjk&list=PLqbS7AVVErFj824-6QgnK_Za1187rNfnl
...
马上找来《Rust for Rustaceans》后面好好研读一下。
YouTube
Implementing TCP in Rust (part 1)
In this stream, we started implementing the ubiquitous TCP protocol that underlies much of the traffic on the internet! In particular, we followed RFC 793 — https://tools.ietf.org/html/rfc793 — which describes the original protocol, with the goal of being…