第 19 期:生活是为你工作,而不是与你为敌
最后更新于
最后更新于
@Author : Lewis Tian (taseikyo@gmail.com)
@Link : github.com/taseikyo
@Range : 2021-03-07 - 2021-03-13
本文总字数 3452 个,阅读时长约:6 分 46 秒,统计数据来自:算筹字数统计。
*Photo by Ishant Mishra on Unsplash
甘地说:"贫穷才是最糟糕的暴力。毁灭人类的七种事是:没有原则的政治,没有牺牲的崇拜,没有人性的科学,没有道德的商业,没有是非的知识,没有良知的快乐,没有劳动的富裕。"
注:从这周开始,头图改为 21:9 的尺寸(1080, 463)
自定义 C/C++ 日志输出函数
分布式系统中的缓存
VS Code 摸🐟打字练习插件
matplotlib 设置画布大小和子图个数
VS Code 编辑区文本溢出自动换行
一键解锁 Medium 会员文章
生活是为你工作,而不是与你为敌
在 C++ 中输出使用 cout
,要调试信息的需要写一堆类似 key:value
对的形式,如下所示:
能不能换一种简单的方法?就像下面一样?
于是这就是本篇文章(自定义日志函数实现)的由来。
实现主要用到了宏的技巧,在宏定义中,如果使用井号(#),可以将参数变为字符串,也即:
对于文件位置信息,C++ 中也有对应的宏,分别是 __FILE__
、__FUNCTION__
、__LINE__
要想用颜色区分 error 和 warning 也不难,之前在 Shell 脚本中使用过:
最重要的问题是如何实现自动识别多变量,最傻瓜的是实现每一种输出函数,但是没必要且很蠢。
其实 C/C++ 中也有多参数的函数,如 printf 函数,其函数原型就是:int __cdecl printf(const char * _Format,...);
,所以只要我们能够动态计算出参数个数,就可以通过映射的方式,绑定到对应参数数目的输出函数上面。
然后只要我们在用 C++ 宏里面的 ## 进行连接,就可以将 logs ## Num 变成对应的函数。
完整代码见:logger.h
分布式系统是一种软件体系结构,应用程序分布在多个服务器上。优点是使我们能够构建高可扩展性和高可靠性(high scalability & high reliability)。缺点是管理数据的一致性变得更加复杂。使缓存无效也是一个复杂的任务。
分布式系统的缓存方法有两种:集中式缓存(Centralized Cache) & 本地化缓存(Localized Cache)
1、集中式缓存(Centralized Cache)
集中式缓存主要是使用缓存服务器(Memcached 或 Redis)。缓存数据存储在缓存服务器上,每个服务器都将从缓存服务器读数据,或者把数据更新到缓存服务器。
优点是缓存存储的高可扩展性,当我们想要扩展缓存时,我们只需要扩展缓存服务器,对应用服务器没有影响。而且确保了数据的一致性,因为只有一个地方需要更新。
缺点是缓存数据经常在网络中传输,从而影响带宽。如果缓存服务器不可用,所有分发将受到影响。这种方法降低了分布式系统的高可靠性。
2、本地化缓存(Localized Cache)
这种方法将缓存数据存储在每个发行版服务器中,这使得访问和存储数据的速度非常快。这种方法提供了很高的可靠性,当一个分发版本消亡时,其他分发版本不会受到影响。
问题是发生修改时需要分别更新每个实例,并需要在每个服务器上加载数据。另一个缺点是它增加了分布之间数据不一致的风险。
最后一个缺点是,每个服务器的必备资源可能比集中式方法大。
(就这还得开会员看?)
原项目是:Kaiyiwing/qwerty-learner,在线版本是:https://qwerty-learner.vercel.app
这个 VS Code 版是另一个大佬开发的,方便摸鱼,启动该插件的快捷键是 Shitf + Alt + Q,不过我刚试了下没有声音,网页版会读出单词。
1、只有一个子图时
2、有多个子图时
add_subplot
subplots
关于多子图绘图见 #18#tip3
算是一个提醒,明明实验室电脑上的 VS Code 文本溢出会自动换行,而寝室电脑却不行,一直以来我都很奇怪,但是没有搜(...)。
直到今天(2021/03/12),我忍不了了!搜了一下,果然是设置没开。。。
Ctrl + , 打开设置,搜索 wrap
,将 Editor: Word Wrap
设为 on
即可,然后文本就会自动换行了。
以前是用 manojVivek/medium-unlimited 这个浏览器插件解锁的,最近好像由于网站升级导致这个插件不可用了,启用插件会导致那个需要解锁的网页一直死循环刷新,但是解锁不了。
后面又发现了一个方法,很有意思,网站是:https://sugoidesune.github.io/readium
它页面上有一个 Readium
的按钮,将其拖到书签栏(隐藏了的话,按快捷键 Ctrl + Shift + B),然后找一个会员文章,点击那个书签,然后奇迹发生了,文章解锁了!
Wisdom often takes years to connect the dots
智慧常常需要几年的时间才能将点点滴滴串连起来
Life is working for you all the time. It’s how you perceive what is happening to you that determines whether life is working for you.
生活一直在为你工作。你如何看待发生在你身上的事情决定了生活是否适合你
Life was trying to work for me by showing me my defects. The problem is when you ignore the signs that help you learn an important lesson.
生活试图通过向我展示我的缺点来为我工作。问题是你忽视了那些帮助你学到重要一课的迹象
Life works in your favor when you’ve had time to reflect on what didn’t work out. Wisdom takes years to join the dots.
当你有时间反思什么没有成功的时候,生活就会对你有利。智慧需要几年的时间才能加入这些点
Death is trying to tell you to stop worrying about what everybody thinks. Death is telling you to hurry up. Death is telling you to focus less on money and more on the people you love. Death is telling you your time will come randomly too. Death is trying to tell you to start a family or get married, if that’s something you’ve wanted to do. Death is trying to get you to do that one thing you’ve been putting off your entire life.
死亡试图告诉你不要再担心别人的想法。死神在告诉你要快点。死亡告诉你少花点钱,多花点心思在你爱的人身上。死亡告诉你,你的时间也会随机到来。死亡是在告诉你,如果你一直想要组建一个家庭或者结婚,那么这就是你想要做的。死亡是试图让你去做那件你一辈子都在拖延的事情
心情不好,所以这两周都是些鸡汤文。