归档
善良比聪明更重要
12
26
Linux-fork-risk Linux-fork-risk
fork是一个拥有 50 年历史的陈年系统调用,它是一个传奇!时至今日,它依旧灿烂。一个程序员可以永远不用 read/write,也可以不懂 mmap,但必须懂 fork。这是一种格调!fork没有参数,它是如此简单,是 UNIX 哲学的布
2019-12-26
12
Linux-fork-Pre Linux-fork-Pre
fork的思想在 UNIX 出现几年前就出现了,时间大概是 1963 年,这比 UNIX 在 PDP-7 上的第一个版本早了6年。1963 年,计算机科学家 Melvin Conway写下一篇论文,正式提出了fork思想,该论文链接:A M
2019-12-12
11
28
Linux-数据类型-json Linux-数据类型-json
前几天,我才知道有一种简化的数据交换格式,叫做 yaml。我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。它说,从结构上看,所有的数据最终都可以分解成三种类型: 第一种类型是标量scalar,也就是一个单独的字符串strin
2019-11-28
14
右值引用 右值引用
概述右值引用的概念有些读者可能会感到陌生,其实它和 C++98/03 中的左值引用有些类似,例如,C++98/03 中的左值引用是这样的: int i = 0; int& j = i; 这里的 int& 是对左值进行绑定但是
2019-11-14
10
31
C++工程实践 C++工程实践
什么是值语义值语义指的是对象的拷贝与原对象无关,就像拷贝 int 一样。C++ 的内置类型 bool、int、double、char 都是值语义,标准库里的 complex<>、pair<>、vector<&g
2019-10-31
17
C++ 静态库与动态库 C++ 静态库与动态库
这篇文章的目的如何使用静态库、动态库,知道静态库与动态库的区别。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。库是写好的现有的,成熟的,可以复用的代码。本质上来说库是一种
2019-10-17
03
C++对象模型:对象内存布局详解 C++对象模型:对象内存布局详解
前言这篇文章希望对 C++对象的内存布局、虚表指针、虚基类指针等有深入介绍。 何为 C++对象模型引用深度探索 C++对象模型这本书中的话:有两个概念可以解释 C++对象模型:1、语言中直接支持面向对象程序设计的部分。2、对于各种支持的底层
2019-10-03
09
19
C/C++整型变量赋值操作是原子性的吗? C/C++整型变量赋值操作是原子性的吗?
那么为什么整型变量的操作不是原子性的呢?常见的整型变量操作有如下几种情况:给整型变量赋值一个确定的值,如 int a = 1; 这条指令操作一般是原子的,因为对应着一条计算机指令,cpu 将立即数 1 搬运到变量 a 的内存地址中即可,汇编
2019-09-19
05
so出现undefined symbol------ldd, nm, c++filt so出现undefined symbol------ldd, nm, c++filt
最近发版本,灰度发布的时候,发现进程没起来,回包自然是异常的。立即进行版本回退,发现 OK。 哪里出问题了呢?直接 ldd -r libtest.so 一下,就知道了,原来是缺符号。看看简化后的示例代码: #include <iost
2019-09-05
08
22
Lambda 表达式捕获列表 Lambda 表达式捕获列表
捕获值列表,是 Lambda 表达式的函数体中直接使用这些值含义,捕获值列表能捕获的值是所有在此作用域可以访问的值,包括这个作用域里面的临时变量,类的可访问成员,全局变量。捕获值的方式分两种,一种是按值捕获,一种是按引用捕获。顾名思义,按值
2019-08-22
08
内存分配malloc 内存分配malloc
下面的代码片段输出是什么? char *ptr; if((ptr = (char *)malloc(0)) == NULL) puts("Got a null pointer"); else puts("Got a vali
2019-08-08
07
25
C++成员修饰const和mutable C++成员修饰const和mutable
const:常量,不变的 mutable:易变的从意思上理解,可见 const 和 mutable 是一对反义词,它们都是 C++的关键字。const 成员函数不能修改调用它的对象。类的成员函数可以被声明为 const,这将使得函数的隐式参
2019-07-25
1 / 3