自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 Redis源码分析-内存数据结构intset

这次研究了一下intset,研究的过程中,一度看不下过去,但是还是咬牙tingg

2014-10-21 20:55:24 1433

原创 Redis源码-事件库

网上看了很多事件库的解读,自己也研究了好几遍,还是记录下来,虽然水平有限,但是进步总会是有的网络事件库wu

2014-10-16 22:15:01 1426

原创 Redis源码-数据结构之Adlist双端链表

Redis数据结构之双端链表adlist

2014-10-07 21:09:00 1209

原创 Redis源码-数据结构之sds字符串

国庆节除了陪伴吕友,花了差不多两天时间ch

2014-10-07 12:15:01 1274

原创 浅尝awk

前几天写了sed,这次来继续学习一下它的好兄弟,awk,用了两者,感觉

2014-05-10 18:31:41 1000

转载 编译cppunit出现dlopen未找到

现在用cppunit,运行./configure,make报错,提示如下[plain] view plaincopyg++ -g -O2 -o .libs/DllPlugInTester DllPlugInTester.o CommandLineParser.o -ldl ../../src/cppunit/.libs/libcppunit.so

2014-05-05 15:16:10 1481

原创 浅尝sed

文前小记:去年十月份找到工作之后,一直没时间打理自己的博客,jint

2014-05-01 20:17:05 1051

转载 linux下查看磁盘分区,文件系统,磁盘文件系统的命令

http://www.linuxsir.org/bbs/thread214738.html一、df 命令; df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置; 举例: Shell代码 [root@localhost beinan]# df -lh  Filesy

2013-12-03 12:18:37 2445

转载 linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

转载自:http://www.jb51.net/LINUXjishu/43356.htmlLinux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法:   tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选

2013-12-02 14:00:34 1073

原创 10月15号 360一面

今天去360参见一面,作为小本一枚,迅雷,多玩,360都是霸笔才得到的面试机会,说实在的感觉360一面聊了40分钟,整个过程比较轻松面试官比我大个十岁左右,三十来岁,带着婚戒的,大概是以下这些问题:1.介绍一个自己的项目,我就说了一个自己的web server项目2.c中的static有什么作用,基本问题3.malloc是怎么实现的,好高深,sbrk函数发挥了一下4.线程可以有

2013-10-16 09:46:56 6275 2

原创 翻转n个硬币的问题

今天去面试,面试官问了我这样一个问题,当时答的很近了,但是还差一点,最后还是被pass了原题是这样:一堆硬币有n个,都是朝下的,翻转n次,第一次翻转能被1整除的,第2次翻转能被2整除的,第三次翻转能被3整除的,这样直到第n次翻转能被n整除的,问最后朝上的是多少个?思路很简单,就怕你想不到:第i次翻转硬币的时候,如果所有小于i的数中,能被i整除的个数是奇数个,最后它就是朝上的,就是这么简单

2013-10-14 19:44:42 3281

原创 剑指offer---3

1.反转单链表,输入链表的头节点,输出该链表,并输出反转后的头节点这个题目不用再说了,写过N边了SLnode reverse(SLnode head){ SLnode reverse_head = NULL; SLnode pnode = head->next; SLnode prev = NULL; SLnode pnext = NULL;

2013-10-07 11:07:53 1007

原创 setitimer函数

setitimer函数有两个功能,一个是指定某个时间之后执行某个信号处理函数,一个是指定间隔某个时间之后执行某个信号处理函数函数原型:int setitimer(int which, const struct itimerval *new_value,struct itimerval *old_value);which是定时器的类型,有3种ITIMER_REAL:以系统

2013-10-01 23:20:59 1551

原创 《剑指offer》系列---2

1.求斐波那契数列的第N项这个题目很简单,讲递归的书上都是用这个来讲的,但是面试的时候,如果你写个递归,那估计会让人失望的,因为递归的效率真是一个问题,你可以测试一下,输入50,基本上得到结果的时间,够你去喝杯茶了#include using namespace std;//使用递归效率太低了,甚至可能造成栈溢出/*int fabonacci1(int n){ if(n <

2013-10-01 10:15:58 910

原创 《剑指offer》系列---1

最近一直在看剑指offer,这上面的题目都是比较考察编程能力的,打算做个记录,把写过的代码保存下来:1.实现一个string类面试官的考察点应该在以下几点:1.模板类的书写2.对于赋值函数考察的几点:(1)是否返回引用,因为只有返回引用,才能连续的进行赋值 (2)参数是否是常量 (3)是否是自身赋值(4)是否释放原来的内存 一个完善的 string类如下:#includ

2013-09-29 10:36:17 1298

转载 C++的四种cast操作符的区别

Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;double d

2013-09-20 15:24:49 732

原创 阿里巴巴一道笔试题

其实这是谷歌的一道面试题::给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数惭愧,阿里的笔试题做错了,说实话,以前没见过,见过了就把搞懂阿里题目:给定rand_7()表示能生成1-7的随机数,使用四则运算和循环等控制语句,可以输出的有()A.rand_3()   B.rand_21()    C.rand_23()   D.rand_47()这个题目怎么做呢?我看

2013-09-17 19:29:53 1318 1

原创 stack的应用

STL除了给我们提供了一些容器(container)以外,还给我们提供了几个容器适配器(container adapters),stack便是其中之一看过STL源码的人都知道,stack其实是内部封装了 deque给我们使用,所有的操作,在内部都是基于deque的实现, 在 中,class stack的定义:unamespace std{     template >

2013-09-15 12:59:27 1498

原创 static成员函数成员变量

再一次吐槽一下,c++这门语言实在是太复杂了,语法规则这么多,关于static,还是有很多需要注意的地方,总结一下吧:首先,我们知道在c中,static的作用可以用来改变变量的生存期和作用域,函数的作用域,那么在面向对象导向的c++中,又有什么作用呢?我们考虑这样一个问题,一个学生类Student,这个类中有一个public变量s_num表示整个班级的学生的数量,那么这个变量应该设置成什么

2013-09-14 10:28:30 1174

原创 搜狐2012年校园招聘会笔试题解析

一、不定项选择题1、以下程序的打印结果是()[cpp] view plaincopy#include  using namespace std;    void swap_int(int a , int b)  {      int temp = a;      a = b;      b = temp;  }

2013-09-13 21:51:07 1179

原创 一些笔试题笔记1

总结一些常见的笔试题:最小公约数和最大公倍数:这个其实很简单,记住概念就可以了,我们利用辗转相除法计算:最大公约数:(摘自百度百科)一般地,如果求a和b的最大公约数(a>b),那么当时,得,这里表示b整除a,而表示b不能整除,当时,设余数为,根据整除的性质,有;当时,得,当时,设余数为,于是最小公倍数=两数的乘积/最大公约(因)数#include void

2013-09-13 12:44:29 1060

转载 应用 Valgrind 发现 Linux 程序的内存问题

Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构

2013-09-11 15:57:08 821

原创 c++中一个类所占用的空间

看到阿里的一道笔试题:#pragma pack(2)class A{ int i; union U { char buff[13]; int i; }u; void foo() { } typedef char* (*f)(void*); enum{red, green, blue} color;}a;答案应该是多少呢:24因为对于u,占用的内存是16

2013-09-10 21:57:16 1378 6

原创 二叉查找树的实现

二叉查找树是这样定义的:二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树二叉查找树是一种高效的搜寻树,类似于如下:以下是我参考网上的资源实现的:

2013-09-10 16:47:24 1713

原创 二叉树的前序、中序、后序的实现(递归和非递归)

二叉树的前序遍历,中序遍历,后序遍历,层序遍历一直是笔试面试中常考的内容,这次自己都把实现了写了一两个小时,算是总结过了,以后用的时候拿出来,如果写的不好的,希望大家指出来#include #include #include #include #include using namespace std;typedef struct BiTree_Node{ char da

2013-09-09 19:58:09 1230

原创 二分法查找的实现

二分法查找的前提是数据是有序的,时间复杂度是O(log2n)没有什么难点,写的太多了,直接上代码:#include int BSearch(int a[], int x, int low, int high){ if(low < high) return -1; int mid = (low+high)/2; if(x==a[mid]

2013-09-09 13:45:47 773

原创 git的简单使用

以前一直没有提交过代码,这次提交一下代码,整理一下git的简单使用1.首先我们要在github上面创建一个帐号,之后创建一个仓库create a new repo,选择默认选项就可以了2.配置git(1) 首先在本地创建ssh key:  # ssh-keygen -t rsa -C "[email protected]" 后面的your_email@yo

2013-09-08 14:04:30 1343 1

转载 深入探讨c++中的引用

原文链接:http://www.programfan.com/article/2715.html#    摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。  关键词:引用,const,多态,指针  引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当

2013-09-08 09:58:35 661

原创 函数指针和指针函数

两对基友,四个概念函数指针vs指针函数:函数指针:指向函数的指针,例如:void (*f) (int , int );指针函数:函数的返回值是指针,例如:void *f(int , int);本是同根生,缘何要分开:缘自于( )和 *,两者的优先级不同,前者的优先级大于后者指针函数比较简单,我们主要看函数指针一、函数指针的初始化和赋值函数:int func(in

2013-09-07 11:07:28 1074

原创 归并排序的实现

归并排序的时间复杂度和快排还有堆排序是一样的,归并排序利用了分治的思想,它的核心就是将两个有序的数组合并,那么我们怎么得到这两个有序的数组呢,就是将这两个数组再分为小的数组,由小的数组合并而成,是不是有种递归的赶脚?对了,归并就是,递归+合并算法的框架像这样的:void merge_sort(int a[], int l, int r, int temp[]){ if(l < r

2013-09-06 10:25:35 988

原创 const和指针的那些事

写过一篇关于c++中const的总结,这里详细总结一下const和指针之间的关系首先我们看一段代码,就是字符数组的初始化问题#include using namespace std;int main(){ const char *s = "const object"; //in C, we can use char *s char s1[] = "const

2013-09-05 21:29:21 1065

原创 选择排序的实现

选择排序很简单,基本思想如下:从待排序的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第一个记录交换位置;然后从不包括第一个位置上的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第二个记录交换位置;如此重复,直到序列中只剩下一个记录为止。代码实现如下:#include #define ARRAYSIZE 4void swap(int *m, int *n

2013-09-05 13:02:19 708

原创 堆排序的实现

堆排序是利用了一种数据结构叫做二叉堆,二叉堆是这样定义的:二叉堆是一种特殊的堆,二叉堆是完全二元树或者是近似完全二元树,有最小堆和最大堆特点:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。利用堆排序数据的存储方式如下:以下是我的代码实现:/*************

2013-09-04 21:21:06 906

原创 笔试分析之腾讯2013暑期实习

4月份的笔试,考得不好,经过暑期的磨砺,回头再看那些题目,有些就豁然开朗了1.32位机上根据下面的代码,问哪些说法是正确的?signedchar a = 0xe0;unsignedint b = a;unsignedchar c = a;A.a>0 && c>0为真 B.a == c为真 C.b 的十六进制表示是:0xffffffe0D.上面都不对我总结

2013-09-04 16:02:59 1081

原创 我读Mongoose源码----程序框架

Mongoose是一种WEB服务器,因为最近在学习网络编程,所以打算研究研究它的源码,认真看了大部分,觉得学到的东西的确不少,拿出来分享一下,也和大家交流交流至于什么是WEB服务器,以及Mongoose作为一种轻量级的WEB服务器,它有哪些优点,这里给个链接:http://www.cnblogs.com/skynet/archive/2010/07/24/1784322.html刚

2013-08-22 21:19:28 3302 4

原创 effecitve c++之const

看过effective c++的人都知道,这本书穷尽c++语言之细节,我个人觉得虽然这本书写的虽然很好,但是过分追求语言上的细节,是否让人觉得c++这门语言本身就有很多弊病呢?记得有一次面试官问我:const在c++中有哪些作用呢?这篇我来总结一下1.定义常量定义常量有三种方法:宏、const、enum,其中宏应该尽量避免,宏定义的常量没有类型信息,编译器不会进行严格的类型检查,而en

2013-06-16 16:45:32 727

原创 线程初识+六个函数

今天得知了参加的最后一场暑期实习生的招聘结果,我又被刷了,沮丧了几天之后,有人告诉我那家公司不招c/c++方向的,还有半个月就放暑假了,是继续看书学习,还是去实践,很迷茫,真的感觉时间不够用。这篇用来记录线程,几个星期之前,我看过这篇,当时理解记忆了,可是今天回过头来再看,感觉还是记不清楚,可能是没有系统的总结吧。这篇就总结一下:#include int pthread_equal(

2013-06-13 16:25:58 854

原创 fork()和vfork()函数

fork是一个很重要的函数,能否彻底理解父子进程的关系,取决于你对fork的理解的程度。#includepid_t fork(void)从书上我总结了三点:fork调用一次返回两次,子进程返回0,父进程返回子进程ID父子进程共享正文段,拥有父进程数据段,堆和栈的副本对于第二点的父进程的数据段,堆,栈,fork采用一种写时复制技术,需要的时候才复制一

2013-06-10 13:39:58 714

转载 Linux下c程序地址空间布局

我们在学习C程序开发时经常会遇到一些概念:代码段、数据段、BSS段(Block Started by Symbol) 、堆(heap)和栈(stack)。先看一张教材上的示意图(来源,《UNIX环境高级编程》一书),显示了进程地址空间中典型的存储区域分配情况。           从图中可以看出:从低地址到高地址分别为:代码段、(初始化)数据段、(未初始化)数据段(BSS)

2013-06-09 14:31:43 723

原创 Unix 环境变量

Linux下处理环境变量常见的几个操作:env:显示当前所有的环境变量set:显示当前bash下用户自定义的变量和环境变量export:把自定义的变量转换成环境变量环境表:Unix下的每一个程序都会有一张环境表,其实我们可以想象,main函数使如下这种形式:int main(int argc , char*argv[], char *envp[])

2013-06-09 14:21:47 965

git community book

作为一个程序员,不会使用git是一件很糟糕的事情,这是我从git社区下载下来的一本学习的书籍,分享给大家

2013-09-08

空空如也

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

TA关注的人

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