2018年5月22日

C++里面的 RVO(Return value optimization)

摘要: 在给 uSTL 里面的 vector 尝试加入 C++11 特性的时候,发现 move constructor 在 test case 里并没有调用,后来发现是因为 RVO 的原因。 RVO介绍:https://en.wikipedia.org/wiki/Copy_elision Return_va 阅读全文

posted @ 2018-05-22 11:35 daghlny 阅读(667) 评论(0) 推荐(0) 编辑

2018年4月22日

vim 的寄存器

摘要: vim 的寄存器一个用法: 输出如下文本: I have 1 apple. I have 2 apple. I have 3 apple. I have 4 apple. I have 5 apple. ... I have 1000 apple. 做法是用 录制宏 来录制一次操作,然后累加寄存器的 阅读全文

posted @ 2018-04-22 21:43 daghlny 阅读(164) 评论(0) 推荐(0) 编辑

2018年4月20日

操作系统内存管理的一些杂记

摘要: 1. 在 /proc/pid/maps 文件存储了对应进程内的内存分布,其 layout 示例如下: 其中,每一行都在 kernel 中对应一个 结构,定义如下( "源码" ): 上面 maps 输出的格式说明: | maps中的列数 | maps 输出的值 | 对应 vm\_area\_struc 阅读全文

posted @ 2018-04-20 17:36 daghlny 阅读(181) 评论(0) 推荐(0) 编辑

2018年4月17日

STL 中 list 实现的一些问题

摘要: 我的小型STL库:https://github.com/Daghlny/uSTL list 的底层实现是一个 双向循环链表。会有一个 节点作为标志,这个节点的 next 指向的是 begin() 返回的节点,这个节点本身是 end() 的返回。 1. const_iterator 最好实现成一个独特 阅读全文

posted @ 2018-04-17 19:31 daghlny 阅读(502) 评论(0) 推荐(0) 编辑

2018年4月12日

STL 中一处方法的参数类型匹配错误

摘要: 在写 vector 和 list 时都碰到了这个问题,最简单的两个 insert 操作,函数签名分别是: 但是,直接这样简单地在函数内部实现逻辑的话,会出现一种潜在问题,比如对于 vector,来说,如下调用会产生问题: 会报错误,一种错误是 invalid type argument of una 阅读全文

posted @ 2018-04-12 21:18 daghlny 阅读(387) 评论(0) 推荐(0) 编辑

2018年3月29日

Linux 如何绑定指定线程在某个固定CPU上

摘要: gcc version:5.4.0 Linux version: 4.4.0 之所以先说明版本,因为不同版本上很有可能有不同的问题。 绑定的方法主要是靠 setaffinity / getaffinity 一组方法来做的,其中有 其中的 CPU_SET 可以直接看 manual,但是我把它的一些使用 阅读全文

posted @ 2018-03-29 20:14 daghlny 阅读(2645) 评论(0) 推荐(0) 编辑

2018年3月19日

SGISTL 里面用到 union 来管理内存链表

摘要: 《STL源码剖析》里面关于 STL allocator 的二级配置器,也就是使用空闲空间链表来存储各个size(均为 8Bytes 倍数)的 chunk。 其中有用到一个 union 来表示每个 chunk: 侯捷对此结构的解释为: 由于union之故,从其第一字段观之,obj可被视为一个指针,指向 阅读全文

posted @ 2018-03-19 21:06 daghlny 阅读(365) 评论(0) 推荐(0) 编辑

2018年1月24日

3种I/O多路复用的方法

摘要: 一共有3中常见的I/O多路复用技术,I/O多路复用我的理解就是可以同时监听多个 fd 上是否可读或者可写,多与 socket 系列系统调用配合使用。这三种常见的技术分别是 ,`poll epoll`,其实也可以理解成这是3个系统调用,只是每一种都有很多配套的函数使用。 select select 函 阅读全文

posted @ 2018-01-24 21:03 daghlny 阅读(732) 评论(0) 推荐(0) 编辑

2017年12月28日

pthread 采用的几种同步方法,包括 mutex, rwlock, condition variable, spinlock, barrier

摘要: 这是几种同步方法,这些同步方法主要是用来保证数据一致性的。 内容主要是对 APUE 里面讲到的东西重新组织一下。 (施工中。。。) 阅读全文

posted @ 2017-12-28 21:54 daghlny 阅读(124) 评论(0) 推荐(0) 编辑

2017年12月23日

因为类型转换导致的一个小问题

摘要: 这个代码,在 nums 是空数组时会出现 SF,因为 nums.size() 返回的是 size_type,这个类型是无符号的,因此 nums.size() - 1 会变得很大,导致后面的下标运算符越界。 阅读全文

posted @ 2017-12-23 20:06 daghlny 阅读(81) 评论(0) 推荐(0) 编辑

导航