背景
想将校园网上的文章、通知和附件缓存到本地,通过数据库的全文检索查找其中内容,并决定使用 PostgreSQL 来实现。略检索了一下有关资料,主要有 pg_jieba
和 zhparser
两个中文分词库。这里我们就是用 zhparser
。
前期爬取了网上的一些文章,并存储到 PostgreSQL 中。但是当时用以提取发布日期的方法不太好,提取成功率很低。幸好观察存储的 URL,似乎其中包含了发布日期。格式大概是:
1 | '/2020/0909/random_numbers/page.htm' |
便想到在 PostgreSQL 中调用 Python 实现日期提取。
数据库备份是实际运维中必须进行的操作,然而有时因为没空或者懒,便忽视了这项工作,有时甚至造成损失。
今天早上对本博客的 nodejs
和 npm
进行升级时,apt
提示部分包可以使用 apt autoremove
命令删除。为了减少系统体积,便执行了。因为注意到执行前系统内存占用在 600M
左右,执行后内存占用在 240M
左右,便感觉到不对劲。于是首先便想到了同一台服务器上的数据库,执行:
1 | root@Aliyun:~# systemctl status postgres |
想着出事了,博客上运行的 PostgreSQL 不翼而飞。由于用户量不大,开始不慌不忙地进行恢复工作。
银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的算法。
在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。(维基百科)
察看银行家算法的历史,它于 1965 年由 Dijkstra 和学生所设计,打算应用到 THE 系统 中的。作为那个时代的产物,这个算法或许当时在避免死锁上取得了很好的效果,而技术发展日新月异,需求的变化和性能的差异使得它今天的价值主要体现在教学和思想的传播了吧。
晚上在写一段多线程程序时,在C++标准库中发现了这样的写法,让我很惊讶:
1 | this_thread::sleep_for(2s); |
Ctrl + Click
点进去看,函数的声明是这样的:
1 | _NODISCARD constexpr chrono::seconds operator"" s(unsigned long long _Val) noexcept /* strengthened */ { |
像是重载了双引号的写法,翻了翻 cppreference ,原来叫用户定义字面量(字面值)。
和使用 http 类似,测试代码可以这样写:
1 | use actix_web::client::Client; |