最近互联网上经常说内卷。特别是识得的一些清华大学的小同学们经常在我耳边卷啊卷。作为一个跟不上时代的过气年轻人,我无法理解内卷是什么意思,于是有上网检索。
Linux top 命令里的内存相关字段(VIRT, RES, SHR, CODE, DATA)
Linux 系统中,著名的 top
命令可列出各个进程对系统资源的利用情况。其中有 VIRT
, RES
, SHR
, CODE
, DATA
等几个字段,用来描述进程对内存的使用情况。(后二者默认不展示,需要按下 F 键,将相关字段调出来)。
但它们究竟表示什么含义呢?
PS 技巧:分频磨皮法
对照片进行后期时,磨皮——修复面部细微瑕疵——是很常见的需求。最简单的磨皮方法,可能是利用涂抹工具、仿制图章工具、修补工具等在原图上直接进行处理。但这些方法都有一个不可避免的缺陷:无法保留诸如皮肤纹理、毛孔等细节。
本文介绍分频磨皮法的操作技巧及其背后的原理。
最佳搭档:利用 SSH 反向隧道和本地转发工具加速内网服务器的外网访问
公司内网服务器(称作 hostA
)访问外网速度特别慢,以至于使用 Linuxbrew 安装工具特别费事。经测试,下载同样的内容,处于办公网络的本机(称作 hostB
)下载很快。遂起了代理加速的心思。
以下是解法。
在 C++ 中利用反射,动态获取 Protobuf 结构中的字段
最近在实际业务中,我遇到了这样一类问题。
首先,我们定义了一个通用类,比如 message Feature
。然后,在一个大的特征分组中,我们定义了若干个特征。比如
1 | message FooGroup { |
但在实际使用中,我们需要根据配置文件,有筛选地选出其中的某几个来使用——比如选择使用 foo
和 baz
。为此,我们会传递 "foo"
和 "baz"
给函数 get_feature
,并期待它能返回 const Feature&
,分别装着 foo
和 baz
的常量引用。
查阅 Protobuf 的文档之后发现,使用描述器(Descriptor)、字段描述器(FieldDescriptor)和反射(Reflection)来实现该功能。