2016年7月3日

TOP K 问题

摘要: 问题:从N个数中找出最大的K个数。 首先,要解决的第一件事情,就是这N个数能否全部存入内存。 在linux系统中,栈的最大可分配空间是8M,可以用ulimit -s 命令查看。堆可分配的最大内存空间32位系统和64位系统不同。 32位系统中,一个进程可寻址的空间只有4G,即2的32次方,据网上说,可 阅读全文

posted @ 2016-07-03 18:11 冷月无声1988 阅读(156) 评论(0) 推荐(0) 编辑

2016年5月22日

随机数

摘要: 给定了一个能够生成1~n的随机函数,求一个生成1~m的随机函数。为了方便,假设n<m,m<n*n。 有一种比较通用,但不一定高效的方法是: 1、 z = n *( rand_n() - 1 )+rand_n();此时z的取值范值范围是[1,n*n],而且是等概率的取值。 2、 剩下的就是将[1,n* 阅读全文

posted @ 2016-05-22 11:40 冷月无声1988 阅读(131) 评论(0) 推荐(0) 编辑

2016年4月14日

libev中timer时间事件监控器

摘要: 1、数据结构 #define ev_at(w) ((WT)(w))->at#define ev_active(w) ((W)(w))->active typedef ev_watcher_time *WT; struct ev_loop{ ev_tstamp mn_now ANHE * timers 阅读全文

posted @ 2016-04-14 20:39 冷月无声1988 阅读(2171) 评论(0) 推荐(0) 编辑

2016年4月10日

libev实现分析

摘要: libev是一个事件驱动库,底层是基于select、epoll、kqueue等I/O复用接口。所谓事件驱动库,就是用户定义一个事件以及改事件发生时调用的函数,该库会监听该事件,并在事件发生时调用相应的函数。 libev提供了很多事件监听器(watcher),最主要的有IO、时间以及信号监听器。当某一个文件的读事件或者写事件发生时,周期时间到了时,进程接收到某个信号时,就会调用用户定义的回调函数。 下面以IO事件为例,讲述libev的工作原理 阅读全文

posted @ 2016-04-10 19:08 冷月无声1988 阅读(5323) 评论(0) 推荐(0) 编辑

2016年4月9日

STL容器小结

摘要: 1、空间分配器 std::alloc用于容器中内存空间的分配和释放,以及分配内存的管理。construct()、destroy()等全局函数用于为对象的构造和析构。 2、迭代器和trains 迭代器将容器和算法联系起来,行为类似指针。各个容器都自己实现自己的迭代器,最重要的是对operator*和o 阅读全文

posted @ 2016-04-09 11:29 冷月无声1988 阅读(175) 评论(0) 推荐(0) 编辑

Linux终端快捷操作汇总

摘要: 定位单词 在长段的命令中,使用 Ctrl + ← 和 Ctrl + → 可快速将光标定位到命令中单词的首字母或末尾,实现在各单词之间的快速跳动定位。 你可以试着在终端中输入 apt-get install build-essential 命令后,按 Ctrl + 左键 或 Ctrl + 右键 来试试 阅读全文

posted @ 2016-04-09 09:52 冷月无声1988 阅读(305) 评论(0) 推荐(0) 编辑

2016年3月26日

树:BST、AVL、红黑树、B树、B+树

摘要: 我们这个专题介绍的动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。这四种树都具备下面几个优势: (1) 都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有限的改变树的形态。而这 阅读全文

posted @ 2016-03-26 20:29 冷月无声1988 阅读(2630) 评论(0) 推荐(0) 编辑

2016年3月20日

MySQL存储引擎

摘要: 一、存储引擎 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 1 MyISAM:这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、 阅读全文

posted @ 2016-03-20 21:10 冷月无声1988 阅读(112) 评论(0) 推荐(0) 编辑

C++小结

摘要: 一、构造函数和析构函数 对象的构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编译器将无法自动执行析构过程。 一个有趣的现象是,成员对象初始化的次序完全不受它们在初始化表中次序的影响, 只由成员对象在类 阅读全文

posted @ 2016-03-20 21:04 冷月无声1988 阅读(140) 评论(0) 推荐(0) 编辑

2016年3月19日

进程

摘要: 一、进程的存储器安排 这是《UNIX环境高级编程》中介绍的典型存储器安排,但现实也不一定非要如此。对于c/c++来说,数据的存储方式还是认为3种:堆、栈、全局数据区(包括全局数据、静态数据、常量)。 二、僵尸进程和孤儿进程 进程在终止前向父进程发送SIGCLD信号,父进程调用wait等待子进程的退出 阅读全文

posted @ 2016-03-19 16:42 冷月无声1988 阅读(220) 评论(0) 推荐(0) 编辑

导航