摘要: 纵然工作再忙也应该要留下自己思考的时间,这次我总结了一下对于内存模型的理解,起因是在公司听了一场关于多线程编程的分享会。首先解释一下,内存模型和对象模型是不同的。对象模型说的是一个对象是如何被设计的,其在内存中是如何布局的。而内存模型说的是,在多核多线程环境下,各种不同的CPU是如何以一种统一的方式 阅读全文
posted @ 2017-01-08 23:19 adinosaur 阅读(9098) 评论(0) 推荐(3) 编辑
摘要: 之前一段时间翻阅过一些内存分配的资料,这次终于能将其整理记录下来了。 c标准库里有两个耳熟能详的函数,用于对堆空间的内存进行分配和释放,它们分别是: 需要说明的是,不管是malloc还是free,这些函数都是c标准库提供给我们的,而不是操作系统的API。对于堆上的内存管理,操作系统(Linux)提供 阅读全文
posted @ 2016-11-04 09:45 adinosaur 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 字符串匹配算法的分析 ============== 问题描述 字符串匹配问题可以归纳为如下的问题: 在长度为n的文本T[1...n]中,查找一个长度为m的模式P[1...m]。并且假设T,P中的元素都来自一个有限字母集合Ʃ。如果存在位移s,其中0≤s≤n m,使得T[s+1..s+m] = P[1. 阅读全文
posted @ 2016-10-27 10:29 adinosaur 阅读(10894) 评论(0) 推荐(0) 编辑
摘要: tcp为我们做了什么事情? 总得来说,tcp做了这几件事: udp为我们做了什么事情? 首先应该清楚的是,一个udp数据包仅仅是在IP数据包之上加了一个udp协议头。这个协议头十分精简,仅有的四个字段是:目的端口号、源端口号、数据包长度、校验和。通过sendto这个syscall发送一个udp数据包 阅读全文
posted @ 2016-10-21 14:24 adinosaur 阅读(4339) 评论(0) 推荐(0) 编辑
摘要: 这几天突然对协程感兴趣,于是自己实现了一个,代码放在github上:https://github.com/adinosaur/Coro 协程是一种用户空间的非抢占式线程,主要用来解决等待大量的IO操作的问题。 协程vs线程 对比使用多线程来解决IO阻塞任务,使用协程的好处是不用加锁,访问共享的数据不 阅读全文
posted @ 2016-09-20 15:56 adinosaur 阅读(12114) 评论(2) 推荐(1) 编辑
摘要: 对于c++11来说移动语义是一个重要的概念,一直以来我对这个概念都似懂非懂。最近翻翻资料感觉突然开窍,因此记下。其实搞懂之后就会发现这个概念很简单,并无什么高深的地方。 先说说右值引用。右值一般指的是表示式中的临时变量,在c++中临时变量在表达式结束后就被销毁了,之后程序就无法再引用这个变量了。但是 阅读全文
posted @ 2016-08-26 01:58 adinosaur 阅读(4089) 评论(0) 推荐(0) 编辑
摘要: 最近在看过一些定时器相关的资料,也读了一些代码,比如云风的skynet的定时器实现,小有启发,因此将所得整理记录下来。 通常,一个定时器模块会提供以下三个接口: reg_tick注册一个tick,unreg_tick取消一个tick,update_timer更新计时器的时间,触发其中过期的tick。 阅读全文
posted @ 2016-08-14 14:08 adinosaur 阅读(5255) 评论(0) 推荐(0) 编辑