得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

Cpp17 variant

std::variant

std::variant 是 C++17 中一个新加入标准函式库的 template 容器,使用时需要 #include

它的概念基本上是和 union 一样,是一个可以用来储存多种型别资料的容器;和 union 不同的是,std::variant 是 type-safe 的,再加上有许多函数可以搭配使用,所以在使用上应该算是相对安全

由于它是标准函式库的 template class,在使用时不需要另外去宣告一个新的类型

std::variant 在储存数据的时候,内部会有一个索引值来记录目前存储的是哪一个类型的数据

Read More...


软硬快捷方式

ln 命令用于给文件创建链接,链接的方式分为以下 2 种:

  1. 软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录
  2. 硬链接:文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息

Read More...


extern "c" 是什么

今天在看编译报错的时候发现一个神奇的 extern “C”

1
2
3
4
5
6
7
8
#ifdef __cplusplus
extern "C"
{
#endif
...
#ifdef __cplusplus
}
#endif

这是什么?我涉及的明明是 c++ 的工程,而且这个 extern 好像也不是单纯声明用的

Read More...


CRTP 简介

CRTP(Curiously Recurring Template Pattern)是 c++ 使用范型实现静态多态的方法,这种方法和虚拟函数比起来优点就是可以节省内存,不需要额外的空间存储 virtual table,并且提高运行速度,运行时不需要动态查找对应的函数

Read More...


shell 认错进制

1
seed=$((${RANDOM}${RANDOM} % 99999 +1))

本来是想用系统变量拼凑出一个随机数的,但是没想到居然在多次使用过程中跑出一个错误 07881: value too great for base (error token is "07881")

虽然问题本身比较少,但是好在不难找到问题缘由,因为 07881 这个字符串是 0 开头,所以 shell 在计算数字的时候把它看作八进制数字处理了,所以八进制数字中出现 8 自然是不被允许的

Read More...


探 ssh_config

SSH Client 的参数值来源主要有 3 个,分别是命令行选项~/.ssh/config/etc/ssh/ssh_config

最近用上了 vscode 的 ssh remote 插件,不得不用上 ssh_config 文件,所以初步了解一下 ~/.ssh/config、/etc/ssh/ssh_config

Read More...


事出有因必作妖,大概是 macOS 更新的时候自动更新了 ssh 版本,直接破天荒的来到了 9.0,于是我电脑连接几个公司服务器的私钥都报了认证失败

虽然 OpenSSH 团队在 8.8 版本便已经宣布了将默认禁用 ssh-rsa 的签名方案,但是在真遇到问题之前谁又会以为然呢

Read More...


the only present love demands is love