自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Leetcod_Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with

2014-08-04 23:53:07 549

原创 Leetcode_Remove Duplicates from Sorted Array II

Follow up for "Remove Duplicates":What if duplicates are allowed at most twice?For example,Given sorted array A = [1,1,1,2,2,3],Your function should return length = 5, and A is now [1,1,2,

2014-08-04 23:50:49 535

原创 Leetcode_Add Binary

leetcode_Add Binary

2014-08-04 23:44:22 676

原创 Leetcode_Wildcard Matching

字符串模式匹配实现

2014-08-04 23:43:29 807

原创 leetcode_Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes' values.For example:Given binary tree {1,#,2,3}, 1 \ 2 / 3return [1,2,3].

2014-08-04 23:40:40 470

原创 Leetcode_Validate Binary Search Tree

Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node contains only nodes with keys less than the node's key.Th

2014-08-04 23:37:59 518

原创 Leetcode_Merge Sorted Array

Given two sorted integer arrays A and B, merge B into A as one sorted array.Note:You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements fro

2014-08-04 23:36:00 478

原创 Leetcode_Palindrome_Partitioning_DFS 算法

Given a string s, partition s such that every substring of the partition is a palindrome.Return all possible palindrome partitioning of s.For example, given s = "aab",Return [ ["aa","

2014-08-04 23:18:14 496

原创 Leetcode_Permutations II

Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2] have the following unique permutations:[1,1,2], [1,2,1], and [2,1,1].

2014-08-04 19:18:50 576

原创 leetcodr_AddTwoNumbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link

2014-08-03 20:54:17 536

原创 leetcode_ReverseLinkedListII

Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.Note:Given m, n satisfy t

2014-08-03 20:50:39 531

原创 leetcode-Partition List

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of

2014-08-03 20:45:13 656

原创 根据前序和中序列 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数(其中每个元素a的

2014-05-09 01:12:27 917

原创 Nginx系列三 内存池的设计

Nginx的高性能的是用很多细节来保证,epoll下的多路io异步通知,阶段细分化的异步事件驱动,那么在内存管理这一块也是用了很大心血,上一篇我们讲到了slab分配器,我们可以可以看到那是对共享内存的管理的优化。Nginx在进程内也实现了自己的内存池,目的在于减少内存碎片,减少向操作系统的申请次数,减低模块开发难度。Nginx实现的内存池实际上非常简单。

2014-05-07 16:04:17 1036

原创 Nginx系列二 slab分配器

nginx的slab分配器主要和共享内存(nginx自己实现的共享内存 采用mmap或者shm实现)一起使用,Nginx在解析完配置文件,把即将使用的共享内存全部以list链表的形式,对共享内存进行管理和划分。在nginx_cycle.c中static ngx_int_tngx_init_zone_pool(ngx_cycle_t *cycle, ngx_shm_zone_t *zn){

2014-05-05 21:19:21 1187

原创 Nginx 进程间通信

Linux下的IPC很多,nginx的进程都是有亲缘关系的进程,对于他们的通信我们选择TCP socket进行通信。 TCP socket 用来做进程通信的好处有, 1.socket是文件描述符,操作简单。 2.双向流动。3.另外还有一个重要好处:可记录可重现,我们可以用tcpdump抓取信息,方便调试。当然对于进程间大量数据的共享 自然而然的我们采用共享内存。

2014-05-05 14:22:47 1456

原创 Linux进程调度策略

从Linux2.5开始Linux实现了0(1)调度算法, 算法的思想要点在于设定动态的nice值确定优先级, 在优先级数组调度(数组最大长度是固定常数) 简而言之,不管系统中有多少进程需要调度都可以在o(1)的时间复杂度内完成调度,是不是很吊啊?但是实践证明(我没证明,文献说的) o(1)对i/o交互型的调度体验上表现很差 轮转周期很不灵活,主要原因在于调度出发点采用粒度很大时间片进行轮换,诚然整体负载会比较好,但是对于i/o交互型的,我们理想的调度策略是采用处理器使用比而不是时间片来分配,

2014-05-01 20:58:43 926

原创 浅谈mmap()

原型:#include void * mmap(void *addr, size_t len, int port, int flag, int fildes)参数fd为即将映射到进程空间的文件描述字,一般由open()返回,同时,fd可以指定为-1,此时须指定flags参数中的MAP_ANON,表明进行的是匿名映射(不涉及具体的文件名,避免了文件的创建及打开)实际上目前的glibc 对mal

2014-04-29 17:30:26 820

原创 经典题目——字符串全排序

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。输出:对应每组数据,按字典序输出所有排列。样例输入:abcBCA

2014-04-16 15:06:14 965

原创 C++内存管理--简单的引用计数的实现

共享指针的内存对象,往往用

2014-04-16 11:22:44 630

原创 二叉搜索树和双向链表

二叉搜索树转变为双向链表(在原来节点进行变化,仅仅改变left和right的指向)

2014-04-16 10:27:09 630

原创 2014微软实习生招聘第二题

Time Limit: 10000msCase Time Limit: 1000msMemory Limit: 256MBDescriptionConsider a string set that each of them consists of {0, 1} only. All strings in the set have the same nu

2014-04-12 23:39:44 595

原创 连连看自动解算程序

今天花了我四个小时写了一个练练自动解算程序, 广度+剪枝  双向交替效率还行 100*100的矩阵,给出6个不同的随机id的话   10秒内跑完  直接上代码#include #include #include #include #include using namespace std;const int ROW=9; //矩阵行数,测试的时候请

2014-04-02 23:45:05 1084

原创 leveldb研究系列八——Ssttable文件的compaction和LRUcache

第二篇的时候我们讲到Ssttbale是通过inmutable memtable不断导出至磁盘一开始是ssttable 0,而后向下归并,一层又一层形成了ssttable,所以形象地称之为leveldb. Ssttable文件里面的数据都是key有序的,Ssttbale 文件相互指间没有区间重叠,但是这里有一个特殊,就是Sstable 0,Ssttable0 的区间可能和其他Ssttable的区间有

2014-03-20 16:40:55 1045

原创 leveldb研究系列七——FilterPolicy

FilterPolicy是用于key过滤的,可以快速的排除不存在的key。FilterPolicy有3个接口:virtual const char* Name() const = 0; // 返回filter的名字CreateFilter接口,它根据指定的参数创建过滤器,并将结果append到dst中,注意:不能修改dst的原始内容,只做append。参数@keys[0,n-1]包

2014-03-19 23:14:41 1286

原创 leveldb研究系列六——Block的组件构建和读取

上一节我们已经详细表述了Ssttbale的组成,从逻辑结构和物理结构出发做了了解。  那么我们在这里怎么创建一个Ssttable呢,时序肯定是这样的:对于一个 我们先构建他的逻辑结构, 先是构建Block数据部分,然后再是填写meta Block和索引部分 ,等到这些逻辑部分填充完毕我们在将他们写入磁盘Block(根据type启用压缩)关键的便是Block数据的填充,即record的写入。

2014-03-19 18:04:59 1269

原创 leveldb研究系列五——Ssttable组件

Sstable 是leveldb数据库的数据库文件,是leveldb也包括Bigtable的核心组件。解析Ssttbale可以从它的物理结构和逻辑结构两个部分出发,首先我们先谈谈物理结构。 Ssttable被划分为固定大小的物理块对于每个Block, 物理上包含三部分,Block data 数据块,1byte的type字段用来指明数据是否压缩,压缩算法采用google自行设计的sn

2014-03-18 13:48:34 1471

原创 leveldb研究系列四——memtable组件

在系列二我们给出leveldb读写时序,在写时候,write先写磁盘log,然后在内存插入到memtable,然后就返回。    作为leveldb的核心组件memtable是我们本篇所要给大家讲述的。首先 class memtable是对skiplist进行了封装,核心数据结构就是skiplist.我们先讲skiplistskiplist是一种随机化的数据结构,目前开源软件 Redis

2014-03-17 15:16:05 1477 1

原创 leveldb研究系列三——log文件系统

从这一章节我开始讲具体组件和源代码,  阅读源代码的工具很多,leveldb的源代码不算大加上测试代码不过一万五千多行,一个比较好的源代码阅读工具是source insight。  不过要把文件名后缀.cc改成.cpp 建好一个项目 开始我们的征程。 首先我们讲log文件,write的第一站,也是系统容灾的常见方法。log文件结构很简单,write依次将按照log的format格式化写入

2014-03-15 16:08:15 1413

原创 leveldb研究系列二——各个组件和读写时序介绍

在学习leveldb的过程中,我走了很多弯路,比如在对整体了解不足的情况下就开始阅读源代码,这其实是不可取的,所以我希望大家在学习leveldb的时候要对整体有个大致的了解,这样就可以加快整个学习过程,leveldb涉及很多数据结构的知识( skiplist,  bloom filter, 多路归并排序,还有一个LRUcache,hash,等等) 还有一点点令人棘手底层的问题,多线程,并发控制,原

2014-03-15 11:55:34 2863

原创 leveldb研究系列一 .leveldb的简单介绍和简单使用

前些日子闲来无聊,花了一段时间研究了一下leveldb,在网上下了源代码结合网上的技术文档和博客,做了细致的学习,这几天打算想整理成系列博客,以便大家参考和指正,这样是我本人第一次写技术博客,不足之处还望指正。        本系列博文,将对 leveldb做全局介绍,从安装使用,适用场景, 关键算法, 代码实现,关键数据结构,等等做一个全面深入的探讨和学习。 我一直相信学习是个迭代的

2014-03-13 16:21:31 4086 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除