- 博客(18)
- 问答 (2)
- 收藏
- 关注
原创 求数组中最长递增子序列(编程之美2.16)
#ifndef _LGONGEST_INCREMENTAL_SEQUENCE_H_ #define _LGONGEST_INCREMENTAL_SEQUENCE_H_#include #include using namespace std;//编程之美2.16//最长递增子序列,使用动态规划的时间复杂度为O(n^2).//但是通过剪枝可以大大减少比较的次数。//主要思想是:
2013-10-05 15:44:43
943
原创 根据前序跟中序遍历的结果建立二叉树——迭代和递归的方法
比如对于前序:1,2,4,8,9,5,10,11,3,6,12,13,7后序:8,4,9,2,10,5,11,1,12,6,13,3,7建成的树应该是1-13的满二叉,后序遍历为:8,9,4,10,,11,5,2,12,13,6,7,3,1主要思想就是把前序放在上面,后序放在下面,依次从后序找到这个前序的位置,建立左右子树。具体思想还得画图,我就不说啦,还是贴代码吧:#ifnd
2013-10-02 16:04:48
846
原创 两个有序数组元素之和的最小K个值
这是在http://blog.csdn.net/insistgogo/article/details/12187329里面看到的一道题,自己拿来做一做。只做加法的部分吧。我想到的一个思路就是对于1,3,5,7,92,4,6,8,10这两个序列,肯定是1+2是最小的,然后1+4这个方法虽然时间复杂度低,但是需要的额外空间也不少,而且编起来也很麻烦。对于求前k个最小值,
2013-09-30 14:59:25
1716
原创 华为机试题之表达式求值
今天做了华为机试,最后一道题做错了,回来又重新写了一下。表达式求值往年好像有的,但是这次的题加了括号,所以写起来麻烦了一些。还有就是在处理+-号的时候做错了,可能是当时脑袋太蒙了,没有看出来,160的题只得了61分(不过话说这个1是咋来的?)。下面附上代码吧:#ifndef _RESULT_OF_EXPRESS_H_ #define _RESULT_OF_EXPRESS_H_
2013-09-17 19:53:10
1316
原创 字符串加减法(整数,小数)
最近在做华为的机试题的时候发现有字符串的小数减法,在百度知道上又看到有人问字符串减法的问题,于是也想练练手。#ifndef _STRING_OPS_H_ #define _STRING_OPS_H_//[left, right)void string_swap(char* input, size_t left, size_t right){ for (; left < --righ
2013-09-12 13:32:11
3804
2
原创 levelDB学习笔记——Version
Version部分是levelDB中对LSM-Tree的“Merge”实现的精要。它主要包括以下的几个类:VersionEdit类主要是对Version的一些修改,比如add_files,new_files,还有log_number等。VersionEdit一般只有一个。Version类Version类保存着有效的files。所以它的作用主要是进行files的Itera
2013-08-30 10:50:40
2353
原创 levelDB学习笔记 —— table
levelDB并不跟beansDB,nessDB一样将key和value分开,而是将key和value一起存放。存放的文件就是.sst文件,而一个文件的结构就是一个table。table筛选器的阅读顺序应该是1.block_builder.cc 结合block.cc文件最开始的注释,我们可以得到一个block的结构:许多个entry,最后是一个数组来记录一些
2013-08-22 21:17:13
1392
原创 LevelDB 学习笔记 —— utils
LevelDB是谷歌两个大牛写的KV数据库,相信有很多人已经听过它的名字了。具体背景不做介绍。今天看的是它的util文件夹,由于以前看过了,所以对其中的代码并不是很陌生,但还是卡在了cache.cc上。其余的util文件其实没什么多大的难度,arena.cc创建了一个简单的内存分配器,comparator.cc由于还没有接触LevelDB的内部逻辑,可以不用看。histogram.cc是柱
2013-08-19 15:03:16
1497
原创 nessDB2.0 学习笔记
nessDB2.0是1.0的改进版,整个sst的结构有了很大的变化,所以阅读源代码的时候虽然整体的思想没有改变,但是也不能一直想着1.0的结构,其实附带上spec文件夹下的small-splittable-tree.txt文件阅读,会给整体阅读带来极大的方便。 首先2.0还是那些util文件:buufer.c,bloom.c,skiplist.c 基本没变化degug.c 是生
2013-08-18 22:47:45
1178
原创 nessDB1.0学习笔记
接下来看nessDB。nessDB是使用LSM-Tree写的一个小巧简易的数据库。它的代码不多,但是确是学习LSM-Tree和数据库启动恢复的好例子。LSM-Tree使用BeansDB的BitCask使用的Log-Structred结构(其实应该说是BitCask仿照LSM-Tree,因为后者更早),更多的关于LSM-Tree的资料可以参考:http://duanple.blo
2013-08-17 11:31:13
1465
原创 BeansDB源码剖析——bitcask.c
/** Beansdb - A high available distributed key-value storage system:** http://beansdb.googlecode.com** Copyright 2010 Douban Inc. All rights reserved.** Use and distribution lic
2013-08-14 19:55:05
2632
原创 BeansDB源码剖析——record.c
//DataRecord与item的不同是,item只保存键值,而record保存键值和value值,但是内存里只存PADDING的大小typedef struct data_record { char *value; union { bool free_value; // free value or not,改为need_free比较好 uint32_t crc;
2013-08-14 19:53:07
1618
原创 BeansDB源码剖析——htree.c
typedef struct t_item Item;struct t_item { //int bucket = item->pos & 0xff; //表示是第几个文件 //uint32_t pos = item->pos & 0xffffff00; //表示在文件中的位置 uint32_t pos; //大于0该数据有效,小于0表明无效。 //ver不会等于0,
2013-08-14 19:45:16
1970
原创 BeansDB学习笔记
BeansDB是豆瓣的刘洪清大哥写的一个分布式存储系统。关于它的详细介绍可以参看http://www.douban.com/note/122507891/ 同时InfoQ中还有刘洪清大哥的演讲视频及资料:http://www.infoq.com/cn/presentations/lhq-beansdb-design-implementationBeansDB是一个简化了的D
2013-08-14 19:39:31
2588
原创 GDBM学习笔记
符合X/Open技术规范的UNIX版本自备了一个数据库dbm。它使用hash表来保存非结构化数据,不支持SQL。它只是一个存储检索数据的例程。数据以key/data对的形式存储在文件中。规范中允许把关键字/数据对的长度限制为1023个字节,但通常实现时不限制。关键字的取值被用作存储数据的索引。dbm被X/Open组织标准化为ndbm。GNU的dbm实现为gdbm(GNU dbm的缩写),它本身
2013-08-08 16:11:20
5061
1
原创 Problem 1802 —— 火车调度
最近在ecnu的ACM上看到一道题:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1802是数据结构中关于火车调度的算法(已经忘了这道题了。。)。刚开始没有在网上查资料,自己在那瞎琢磨,想着通过检验字符的相互顺序来判断一个情况是否能出现,但总是感觉不对头,应该还有简单的方法。后来在网上查了资料,发现是用两个栈来模拟火车的进出。为了使讲述方便,新增一
2013-07-31 21:30:54
1321
空空如也
一个Shell的简单问题:将ls的内容作为参数传入
2015-01-28
Linux下,PHP加载ssh2.so时,报core dump
2015-01-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人