自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习笔记

水文若干,记录学习

  • 博客(15)
  • 收藏
  • 关注

原创 二分查找c++代码

二分查找,很经典的,但是容易忽略边界问题,常常产生bug。这里记下,以供后期检查。据说抽样中 90%的程序员跪在了这个题中。#include using namespace std;int binarySearch(int A[], int n, int v){ int low = 0; int high = n - 1; while (low <= hig

2013-04-03 22:53:38 1200

原创 linux下查看某一进程的启动时间和运行时间

linux下的ps命令,可以方便查找出某一进程的启动时间和运行时间比如查看vim进程启动时间,运行时间$ps -C vim -opid,lstart,etime,args PID STARTED ELAPSED COMMAND 5399 Tue Apr 2 20:19:54 2013 02:24 vimlstart参数表示启动时

2013-04-02 20:18:45 7711

原创 C++构造函数初始化列表

一直不怎么在意构造函数的初始化列表,从觉得放在列表里和放在构造函数体里面一样,实际上 二者还是有差别的。构造函数初始化列表以一个冒号开始,接着用逗号隔开各个成员,每个成员后面跟着一个放在小括号内的初始化式。例如下面的初始化列表class Base { public: Base(int a, double b) :i_val(a), d_val(b)//(1)这个就是

2013-03-29 21:47:39 852

原创 linux sort 设定tab分隔符

linux下的sort命令可以对文本的某些字段进行排序,而字段之间的分隔符默认是空格,如果想换成别的,则需要加参数-t。但是对于tab分隔符,还是得稍微注意一下。比如下面的命令:$sort -t '\t' -k3,3n a.txt >a.sortsort: multi-character tab `\t'  (出错)这个不能按照tab分隔符进行字段排序,换成如下两种方式就可以了

2013-03-01 13:06:35 21286 1

原创 redis 源代码之数据结构(5)--ziplist实现

上一篇分析了zipmap的源代码,zipmap在redis中比较鸡肋,实际上,在2.6版本中,并没有使用zipmap数据结构,zipmap可以用ziplist来进行替代。ziplist用字符串实现了双链表,非常节约内存,既可以存储字符串,也可以存储整型。对ziplist两端进行pop和push操作可以在O(1)时间内完成。但是,每次对ziplist的操作,可能会需要对list进行realloc,所

2013-01-13 14:30:13 1018

原创 redis 源代码之数据结构(4)--zipmap实现

redis对于内存的使用精确到了bit了,redis引入了zipmap数据结构,可以在hash表的元素比较少的时候,使用zipmap来节约内存。下面就分析一下zipmap的源代码(zipmap.c)作者在源文件开头讲述了zipmap的数据格式,假定有这么个映射关系“foo”=>"bar", "hello"=>"world",则内存布局为"foo""bar""hello""world"

2013-01-03 23:24:28 1194

原创 redis 源代码之数据结构(3)--hash表实现

hash表应用范围很广,实现一个hash表有两个重要因素。1,hash函数的选择,很多研究人员都给出了性能卓越的函数;2解决冲突,最常见的是链表的方法,还有开放定址法等方法。redis的hash表(在dict.c dict.h中)用的hash函数是Thomas Wang's 32 bit Mix Function 和MurmurHash2,整个hash实现相当精致而且它最大的特色在于可以实现自动扩

2013-01-02 18:41:37 1444

原创 C++四个cast的用法

C++的强制转换方式比C语言更加丰富,常见的有四个:1,const_cast2,static_cast3,dynamic_cast4,reinterpret_cast这四个的使用方式都一样:T t = XXX_cast(expressions)。1,const_cast这个操作符可以去掉变量const属性或者volatile属性的转换符,这样就可以更改const变量了。比如

2012-12-26 19:59:09 4327

原创 C++ copy constructor 构建

最近在看《深度探索C++对象模型》一书,里面讲到了C++ 拷贝构造函数的构建,这里做一下笔记,供以后查阅。我们知道有三种情况类的对象调用拷贝构造函数1,用一个对象对另外一个对象初始化。2,当该对象作为参数以值传入的方式传给某个函数时候。3,当函数返回一个对象(副本)的时候。 拷贝构造函数有以下两个定义方式:X::X(const X& x);X::X(const X& x,

2012-12-23 14:00:13 4768

原创 C++定义不能被继承的类

C++的定义的类要求不能被继承,貌似最简单的想法是将构造函数定义为私有的,但事实上这样并不对,这会引发一个问题,用户如何实例化该类?因为友元关系是不能够被继承的,所以可以考虑友元+私有化构造函数来实现。现在假设有一个class,叫Base,它不希望被继承,而且再假设有一个辅助类uninherit,Base是辅助类uninherit的友元,而且辅助类uninherit的构造函数是私有的,于是假定

2012-12-22 12:51:26 3909 4

原创 C++默认构造函数

最近在看《深度探索C++对象模型》,看的头大。对于c++默认构造函数,一直有两个错误的认识。1,没有定义默认构造函数的类都会被编译器生成一个默认构造函数。2,编译器生成的默认构造函数会初始化所有数据成员。而lippman在书中告诉我们 以上两个理解是错误的。先看第2条,举个例子。#include using namespace std;class Base {

2012-12-22 00:48:23 656

原创 redis 源代码之数据结构(2)--sds实现

1,sds(simple dynamic string)作为redis作者自己实现的字符串类型,是redis的基本数据类型。typedef char *sds;struct sdshdr { int len; int free; char buf[];};可以看到  sds本质上是一个char指针,内部存储结构为一个header+char*. len表示

2012-12-20 13:49:38 791

原创 qq音乐专辑封面 api

因为好奇,打算从qq音乐http://y.qq.com/#type=index  抓取它的专辑封面http://y.qq.com/#type=album&index= ,不得不佩服qq产品做的都很精细,专辑封面都是非常的全,而且清晰度还不错。    本来准备分析qq音乐专辑页面,这样只要解析一下html文件,就可以找出专辑了(以前抓取人人好友相册的时候就是这么干的)。不过保存网页分析之后,

2012-12-16 23:48:27 7952

原创 redis 源代码之数据结构(1)--链表的实现

Redis(Remote Dictionary Server)是一种内存Key/Value数据库。所有的Key/Value都是存放在内存中,如果内存不足,会将一些value swap到硬盘,但是Key始终都在内存中。Redis类似于Memcached。但是redis比memcached有更丰富的数据结构,还可以支持备份,数据持久化(snapshot和aof)。具体的二者区别可以参考http:/

2012-11-18 23:42:43 1186 1

原创 /etc/passwd 与 /etc/shadow

/etc/passwd 文件记录着用户账户信息。$vim /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/sy

2012-10-15 09:07:31 1381

空空如也

空空如也

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

TA关注的人

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