上一页 1 2 3 4 5 6 ··· 22 下一页
摘要: 给定N个数,从中找出若干个数,使得这些数的和等于sum。 TwoSum MultiSum 0-1背包问题。 参考资料: 寻找和为定值的多个数 k Sum 阅读全文
posted @ 2017-11-11 22:13 Sawyer Ford 阅读(661) 评论(0) 推荐(0) 编辑
摘要: 直接上代码: pivot元素的选择,值得研究。 阅读全文
posted @ 2017-11-11 17:09 Sawyer Ford 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 先上代码: 这个算法中基本的操作是合并两个已排序的表。 基本的合并算法是: 取两个输入数组A和B,一个输出数组C,以及三个计数器Aptr、Bptr、Cptr,它们初始置于对应数组的开始端。A[Aptr]和B[Bptr]中的较小者被拷贝到C中的下一个位置,相关的计数器向前推进一步。当两个输入表有一个用 阅读全文
posted @ 2017-11-09 09:59 Sawyer Ford 阅读(183) 评论(0) 推荐(0) 编辑
摘要: HTML 教程 CSS 教程 阅读全文
posted @ 2017-11-08 14:14 Sawyer Ford 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 在堆排序算法中,我们使用的是最大堆。 阅读全文
posted @ 2017-11-07 15:08 Sawyer Ford 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 介绍B树之前,先介绍树的几个概念。 Degree The number of subtrees of a node. Height of node The height of a node is the number of edges on the longest path between that 阅读全文
posted @ 2017-11-06 10:18 Sawyer Ford 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 了解位操作符之前,先看下ASCII码表。 参考资料 感受异或的神奇 阅读全文
posted @ 2017-11-02 21:01 Sawyer Ford 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 激活事件添加流程 事件发生后,需要把对应的event加入到激活事件队列中。 整个流程如下: 对于定时器事件,在timeout_process过程中,会将事件从最小堆中删除。 激活事件处理流程 在even_base_loop中,底层dispatch返回后的核心问题就是处理激活事件。 简单分析下even 阅读全文
posted @ 2017-10-23 10:10 Sawyer Ford 阅读(701) 评论(0) 推荐(0) 编辑
摘要: libevent通过socketpair实现对信号事件的监听。 还记得event_base吗? evsig_info结构如下: evsig_init 在event_base初始化阶段会完成socketpair的创建。 可以看到,sig.ev_signal关联了sig.ev_signal_pair[1 阅读全文
posted @ 2017-10-20 11:36 Sawyer Ford 阅读(1972) 评论(0) 推荐(0) 编辑
摘要: libevent是如何实现事件监听的呢? 在Linux,libevent的底层实现是epoll,因此实现事件监听的方式就是,把需要监听的fd加入epoll中。 I/O事件 定时器事件 定时器事件没有fd,那么如何监听呢? 这里先看下epoll_wait这个函数 libevent采用的方法是:每次运行 阅读全文
posted @ 2017-10-20 09:19 Sawyer Ford 阅读(501) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 22 下一页