TestCNBlogs

2019年2月6日

mmap 共享内存深入总结

摘要: 概述 mmap()系统调用在调用进程的虚拟地址空间中创建一个新的内存映射。munmap()系统调用执行逆操作,即从进程的地址空间删除一个映射。 映射可以分为两种:基于文件的映射和匿名映射。文件映射将一个文件区域中的内容映射到进程的虚拟地址空间中。匿名映射(通过使用MAP_ANONYMOUS)标记或映 阅读全文

posted @ 2019-02-06 00:17 TestCNBlogss 阅读(783) 评论(0) 推荐(0) 编辑

STL 空间配置器、vector、list、deque、map

摘要: STL的六大组件:容器、算法、迭代器、空间配置器、容器适配器、仿函数。 空间配置器 空间配置器产生的缘由:由于程序需求,很多小块内存在程序中动态申请、释放。于是就容易出现内存外部碎片问题,同时由于一直调用malloc系统调用,产生性能问题。 (注:内碎片:因为内存对齐/访问效率而差生如用户需要3字节 阅读全文

posted @ 2019-02-06 00:16 TestCNBlogss 阅读(282) 评论(0) 推荐(0) 编辑

多线程和多进程的区别

摘要: Linux内核实际上是不区分进程和线程的,它们都是用的task_struct结构体,Linux上的线程是LWP,即轻量级进程。创建进程的fork()函数和创建线程的clone()函数内核底层都调用了do_fork()函数。对于线程来说,使用了CLONE_VM(共享内存空间)、CLONE_FS(共享文 阅读全文

posted @ 2019-02-06 00:14 TestCNBlogss 阅读(376) 评论(0) 推荐(0) 编辑

select、poll、epoll的区别

摘要: select、poll、epoll三组系统调用都能同时监听多个文件描述符,它们将等待由timeout参数指定的超时时间,直到一个或多个文件描述符上有事件时返回,返回值是就绪的文件描述符的数量。返回0表示没有事件发生。 下面从事件集、最大支持文件描述符数、工作模式和具体实现等四个方面进一步比较它们的异 阅读全文

posted @ 2019-02-06 00:12 TestCNBlogss 阅读(151) 评论(0) 推荐(0) 编辑

C++ 对象模型复习

摘要: 一:对象模型 C++面向对象的实现,相对于C耗费成本是由virutal引起的。包括 virtual function机制,用来支持执行期绑定。 virutal base class 虚基类机制,以实现共享虚基类的subobject 此外还有多重继承下,发生在其第二或后继派生类之间的转换。 C++对象 阅读全文

posted @ 2019-02-06 00:10 TestCNBlogss 阅读(97) 评论(0) 推荐(0) 编辑

辗转相除法(GCD)求左旋转字符串

摘要: 今天在牛客网上做了一道题,题意就是求左旋转字符串。我使用辗转相除法解之,一次性AC通过。实话说,每次写算法一次性通过,甚至一点编译错误都没有,我觉得这就是对我最好的嘉奖。 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定 阅读全文

posted @ 2019-02-06 00:09 TestCNBlogss 阅读(269) 评论(0) 推荐(0) 编辑

使用引用计数和 COW 实现 String 类

摘要: 这算是我开始复习的内容吧,关于 String 类半年前写过,最近拿出来溜溜,免得面试被问到而自己又忘记了。 之前的文章地址: "C++ 引用计数思想 利用引用计数器自定义 String 类" 。 首先上一个 String 类最简明的写法,没有用到引用计数和 COW,不过写法实在是很简单,不容易出错。 阅读全文

posted @ 2019-02-06 00:06 TestCNBlogss 阅读(418) 评论(0) 推荐(0) 编辑

导航