自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鱼思故渊的专栏

不积跬步,无以至千里;不积小流,无以成江海

原创 我为什么那么喜欢呆在实验室,因为我知道我错过就再也没有机会

原以为属于自己的求职季会非常残酷、异常辛苦,想一想去年毕业的师兄师姐,为了一个满意的工作整天跑场去笔试面试。原以为在这场没有硝烟的战争中会被虐的很惨,原来都是虚惊一场,之前一切的假想都是存在,简历还没来得及好好准备就那样稀里糊涂的签了。 找工作之前,或者说在研究生阶段,每次遇到细致的面经,都忍不住...

2015-11-10 21:28:05 15211 30

转载 STL源码剖析--vector

vector容器概述       vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的...

2015-09-14 09:59:06 1796 0

原创 二叉树中和为某一值的路径

题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数22和如下二元树       10          / \        5  12          / \          4    ...

2015-09-09 17:57:34 1077 0

原创 求一个数组中的逆序对

数组中的逆序对是指左边元素大于右边元素,这样的一对数就构成了一个逆序对。求一个数组中的逆序对。这里使用分治方法,具体的思路可以参考剑指offer中的一个问题,这里使用了归并的思想,假如我们将一个数组分成两个数组,而且这两个数组是有序的,在从尾部到头部合并的时候,就可以判定有多少对逆序的元素对 #i...

2015-09-09 17:30:35 1250 0

原创 32位系统和64位系统的区别

这里只说在32位系统和64位系统下编译器对内建类型的大小 32位系统: char: 1个字节 char*(也就是指针变量)4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int :2个字节 int: 4个字节 unsigned i...

2015-09-09 17:12:19 1404 1

转载 生产者消费者模型(Linux系统下的两种实现方法)

生产者消费者问题是同步问题中的一种常见情况,借用一下维基百科的话 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所...

2015-09-07 14:32:19 7632 1

转载 大端模式和小端模式

在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字...

2015-09-05 10:01:13 772 0

转载 浅谈C++多态

C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。   多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(pol...

2015-09-05 09:44:21 772 0

原创 二分查找的实现

在一个有序的数组中,查找一个数,可以使用二分查找,但是这个算法也是有很多地方需要注意的。正确的写法如下所示。 //首先要把握下面几个要点:    //high=n-1 => while(low high=middle-1;    //high=n   => while(low ...

2015-08-28 15:29:20 1459 0

转载 typeid详解

在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C+...

2015-08-25 15:11:12 1764 0

原创 使用递归反转一个栈

反转递归栈的内容 使用递归,一定要明白递归结束的条件,假如栈中只有一个元素或者没有元素,那么这个栈就不用递归。那么我们将栈顶元素取出来,将余下的元素进行反转,那么将取出的元素放到栈的底部即可。 对于将一个元素放到底部,又是一个递归的调用,如果栈为空,那么直接将元素存放到栈的底部即可,如果栈中有...

2015-08-21 11:26:50 2776 1

原创 十进制小数和二进制小数之间的转换

一、二进制数转换成十进制数     由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 二、十进制数转换为二进制数     十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数...

2015-08-20 14:50:05 4820 0

原创 Linux进程的睡眠和唤醒(一个定时信号唤醒睡眠中的进程)

突然想到Nginx中时间更新这块处理,Nginx中为了减少调用系统调用gettimeofday这个函数(因为一旦调用了系统调用,就会使得进程从用户态切换到内核态,就会发生上下文切换,这个代价很大且不值得)而设置了系统时间更新的次数,内部时间更新有两种方式,一种就是在配置文件中设置更新的评论,另一种...

2015-08-20 11:35:56 11613 0

转载 Linux中fork()函数实例讲解

一、fork入门知识      一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。     一个进程调用fork()函数后,系统先给新的进程...

2015-08-17 15:56:54 1215 0

原创 大型分布式网站的技术需求

HBase是Apache Hadoop项目下的一个子项目,它以GoogleBigTabale为原型,设计实现了高可靠性、高可扩展性、实现读写的列存储数据库,他的本质实际上是一张稀疏的大表,用来存储粗粒度的结构化数据,并且能够通过简单地增加节点来实现系统的线性扩展。          HBase运行...

2015-08-15 16:26:17 1145 0

原创 Zookeeper监控的作用

当服务越来越多,规模越来越大时,对应的机器数量也越来越大,单靠人工来管理和维护服务及地址的配置地址信息,已经很困难了,并且,依赖单一的硬件负载均衡设备或者使用LVS.nginx等软件方案进行路由和负载均衡调度,单点故障的问题也开始凸显,一旦服务路由或者负载均衡服务器宕机,依赖他的所有服务均将失效、...

2015-08-15 15:50:55 1849 1

原创 二叉树的非递归遍历(前序、中序、后序)

先序遍历 void PreOrder_Nonrecursive1(BiTree T) //先序遍历的非递归 { if(!T) return ; stack s; BiTree curr = T; while(cu...

2015-07-17 08:01:17 1081 0

原创 UDP连接调用connect()函数

UDP是一个无连接的协议,它没有像TCP中EOF之类的东西。 8.11 UDP的connect函数 除非套接字已连接,否则异步错误是不会反悔到UDP套接字的。我们确实可以给UDP套接字调用connect,然而这样做的结果却与TCP连接不同的是没有三路握手过程。内核只是检查是否存在立即可知的错误...

2015-07-15 10:59:38 4312 0

原创 从TCP协议的原理来谈谈rst复位攻击

在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。 1、TCP是什么? ...

2015-07-15 09:01:41 1671 2

原创 函数模板的特化

函数模板的特化 该定义中一个或多个模板形参的实际类型或实际值是指定的。特化形式如下: 关键字template后面接一对空的尖括号(); 再接模板名和一对尖括号,及括号中指定这个特化定义的模板形参; 函数形参表 函数体 template int compare(const char *...

2015-07-15 08:21:27 986 0

原创 new/malloc的区别

1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_bytes);  说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针...

2015-07-15 08:17:59 1336 1

原创 缺页中断处理过程

缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。 当进程执行过程中发生缺页中断时,需要进行页面换入,步骤如下: 首先硬件会陷入内核,在堆栈中保存程序计数器。大多数机器将当前指令的各种状态信息保存在CPU中特殊的寄存器中。 启动一个汇编代码例程保存通用寄存器及其它易失...

2015-07-09 17:56:36 10627 0

原创 C++--何时需要定义赋值/复制构造函数

继承和动态内存分配 假设基类使用了动态内存分配,而且定义了析构函数、复制构造函数和赋值函数,但是在派生类中没有使用动态内存分配,那么在派生类中不需要显示定义析构函数、复制构造函数和赋值函数。 当基类和派生类采用动态内存分配时,派生类的析构函数、复制构造函数、赋值运算符都必须使用相应的基类方法来处理...

2015-06-17 22:40:16 2027 0

原创 一个string类的简单实现

string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作 class String { public: String() { data = new char; data[0]='\0'; lengt...

2015-05-18 10:42:05 2000 4

原创 Linux网络编程中EAGAIN错误和EINTR错误

在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。     从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以O_NONBLO...

2015-05-12 15:01:38 8813 5

原创 离散事件模拟--银行排队时间模拟

在数据结构中有个讲述如何模拟银行排队,最终算出每个人平均的逗留时间。 这是需要数据结构的知识。将银行的每个窗口看成是一个队列,那么对于每次来一个人,都需要从最短的队列进行排队。(其实更优秀的做法是从最短的等待时间队列来排队)。 这里的做法是这样的,首选在一个队列中插入一个人,整个事件是事件驱动的,...

2015-04-30 15:15:50 3386 1

原创 判断树为另一树的子结构

输入两棵二叉树 A 和 B,判断树 B 是不是 A 的子结构。 例如,下图中的两棵树 A 和 B, 由于 A 中有一部分子树的结构和 B 是一样的,因此 B 就是 A 的子结构。 思路:首先采用一种方式来遍历A树,发现A树的某个节点和B树的根节点的值相等,从这个节点开始遍历是否为A树的一部分。...

2015-04-29 14:47:47 927 0

原创 二叉树两个结点的最低共同父结点

入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。 分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至 少有两个变种。 第一变种是二叉树是一种特殊的二叉树:查找二叉树。也就是树是排序过的,位于 左子树上的结点都比父结点小, 而位于右子树的结点都比父结点大。 我们只需...

2015-04-29 11:40:30 1871 0

原创 输出 1 到最大的 N 位数

题目:输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数。比如输入 3,则输出 1、2、3 一直到最大的 3 位数即 999。 思路:这是一个大数问题,必须使用一个字符串来表示数字,因为担心数字太大 void Add(string& cur) { int carry =1; ...

2015-04-29 10:54:26 878 0

原创 和为 n 连续正数序列

题目:输入一个正数 n,输出所有和为 n 连续正数序列。 例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、4-6 和 7-8。 思路:我们再找连续的序列,那么我们从最小的一直往前加,如果和结果相等,那么这是一个符合条件的序列,然后再连续的往...

2015-04-29 09:41:46 845 0

原创 二叉查找树的镜像

题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于 右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / \ 6 10 /\ /\ 5 7 9 11 输出: 8 / \ 10 6 /\ /\ 11 9 7 5 ...

2015-04-29 08:53:14 898 0

原创 约瑟夫环问题

题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数字(第一个 为当前数字本身,第二个为当前数字的下一个数字) 。 当一个数字删除后,从被删除数字的下一个继续删除 第 m 个数字。求出在这个圆圈中剩下的最后一个数字 思路:这就是约瑟夫环问题,...

2015-04-29 08:44:47 1093 1

原创 判断一个序列是否是一个二叉查找树的后序遍历结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回 true,否则返 回 false 。 例如输入 5、7、6、9、11 、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回 true。...

2015-04-28 23:08:21 889 0

原创 二叉查找树转换成排序的双向链表

题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何 新的结点,只调整指针的指向。 比如将二元查找树 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 思路:对于树的很多题目,都可以使...

2015-04-28 21:57:51 812 0

原创 STL源码剖析--各个容器迭代器的分类

五类迭代器如下: 1、输入迭代器:只读,一次传递     为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流istream中读取。一个输入迭代器仅能对它所选择的每个元素进行一次解析,它们只能向前移动。一个专门的构造函数定义了超越...

2015-04-23 17:35:03 1034 0

原创 Bitwise AND of Numbers Range--LeetCode

Given a range [m, n] where 0 For example, given the range [5, 7], you should return 4. 思路:第一个思路肯定是从第一个数开始按位与,但是这样的复杂度太高,开始有新的改进,如果这个范围内有2的幂,那么从这个开始按...

2015-04-21 08:32:34 3524 0

原创 Linux进程地址空间 && 进程内存布局

一 进程空间分布概述     对于一个进程,其空间分布如下图所示:                                       程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码。 初始化过的数据(Data):在程序运行初已经对变量进...

2015-04-20 20:24:02 23795 6

原创 Linux进程间通信--内存映射

一  内存映射概述                    从原理上讲,Linux系统利用已有的存储管理机制可以很自然的实现进程间的共享存储。对于一段物理存储空间,只需通过进程的虚存管理机构就可以映射到各自的3G用户地址空间中。通过这种映射,在不同进程看来“私有”的数据事实上是同一段内存单元...

2015-04-20 20:22:19 2936 0

原创 Linux进程间通信--shmget()共享内存(一)

大多数共享内存的具体实现,都是把由不同进程之间共享的内存映射为同一段物理内存。 多个进程都把该物理内存区域映射到自己的虚拟地址空间,这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。 共享内存允许两个不相关的进程访问同一段物理内存, 由于数据不需要在不同的进程间复制...

2015-04-20 20:19:45 4579 0

原创 Linux进程间通信--shmget()共享内存(二)

共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。这...

2015-04-20 20:18:04 1978 0

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