自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

唛哩唛哩轰

有志者,事竞成,破釜沉舟,百二秦关终属楚。 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。

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

转载 从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接

长久以来,我们被教导字符串的连接最好用StringBuffer、StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence、StringBuffer、StringBuilder、String,他们之间到底有什么联系呢?1、从类的定义看CharSequence、StringBuffer、StringBuilder、String的关系

2015-04-02 14:56:25 467

转载 xor算法在storm可靠性中的应用

1、先看一下数学中的异或    异或xor是一个数学运算符。它应用于逻辑运算。异或符号为“^”。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),既然相同的对象XOR操作,结果是0,那么有这样一个公式,A xor B…xor B xor

2014-07-29 12:52:18 847

转载 k-d tree代码解析

http://www.cnblogs.com/eyeszjwang/articles/2432465.html  上一篇较详细地介绍了k-d树算法。本文来讲解具体的实现代码。  首先是一些数据结构的定义。我们先来定义单个数据,代码如下:复制代码//单个数据向量结构定义struct _Examplar{public: _Examplar():dom_dims(0){}

2012-10-26 21:06:14 1196

转载 k-d tree算法

k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。应用背景  SIFT算法中做特征点匹配的时候就会利用到k-d树。而特征点匹配实际上就是一个通过距离函数在高维矢量之间进行相似性检索的问题。针对如何快速而准确地找到查询点的近邻,现在提出了很多高维空间索引结构和近似查询的算法,k-d树就是其中一种。

2012-10-26 20:59:22 951

转载 从尾到头输出链表--总结

题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{      int       m_nKey;      ListNode* m_pNext;}; 这道题难度应该不大,看能想出几种做法,另外就是要注意这个题目的变体,原文中有讲到。我能想到的思路有三种,和原文差不多。方法一、先把链表反向,然后再从头到尾

2012-10-11 20:43:57 495

转载 栈的push、pop序列

题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,

2012-10-11 20:03:43 627

转载 一个fork的面试题

前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?#include #include #include int main(void){ int i; for(i=0; i<2; i++){ f

2012-10-09 19:27:51 329

转载 用户态和内核态

就像世界上的人并不平等一样,并不是所有的程序都是平等的。世界上有的人占有资源多,有的人占有资源少,有的人来了,别人得让出资源,有的人则专门为别人让出资源。程序也是这样,有的程序可以访问计算机的任何资源,有的程序则只能访问非常受限的少量资源。而操作系统作为计算机的管理者,自然不能和被管理者享受一样的待遇,它应该享有更多的方便或特权。为了区分不用程序的不同权利,人们发胆了内核和用户态的概念。那

2012-10-09 19:22:40 1106

转载 动态链接和静态链接

理解静态链接和动态链接 前些日子在论坛上看到这样两个问题:1、什么叫静态链接和动态链接?(static linking,dynamic linking) 2、如何理解先期和迟后联编?(early binding,later binding) 3、连接时所需的库lib和dll。 实际上,这两个问题性质是一样的,不管是静态链接/动态链接也好,还是先期联编/迟后联编也好,都是

2012-10-09 19:16:06 509

转载 从B树、B+树、B*树谈到R 树

作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.csdn.net/v_JULY_v 。 1.前言:动态查找树主要有:二叉查找树(Binary Search T

2012-10-08 19:16:13 2246

转载 内存碎片

内存碎片的产生        内存分配有静态分配和动态分配两种       静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。        因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎片的内存”描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使用

2012-10-07 19:26:38 387

转载 fwrite和fread函数的用法小结

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。#include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *s

2012-09-28 19:00:53 3553

转载 软件测试方法大汇总

软件测试方法种类繁多,记忆起来混乱, 如果把软件测试方法进行分类, 就会清晰很多。 我参考一些书籍和网上的资料, 把常用的软件测试方法列出来, 让大家对软件测试行业有个总体的看法。 从测试设计方法分类 测试名称测试内容Black box黑盒测试把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识。从软件的行为

2012-09-21 20:13:35 459

转载 全局变量、局部变量、静态全局变量、静态局部变量的区别

C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。从作用域看:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序与你新

2012-09-21 20:08:43 354

转载 蓄水池抽样问题

为分析用户行为,系统常需存储用户的一些query,但因query非常多,故系统不能全存,设系统每天只存m个query,现设计一个算法,对用户请求的query进行随机选择m个,请给一个方案,使得每个query被抽中的概率相等,并分析之,注意:不到最后一刻,并不知用户的总请求量。 蓄水池抽样问题随机抽样问题表示如下:要求从N个元素中随机的抽取k个元素,其中N无法确定。这种应用的场景

2012-09-21 18:47:06 500

转载 malloc/free与new/delete的区别

相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不

2012-09-21 15:43:18 431

转载 判断栈的增长方向

dreamhead老大曾经讨论过这个问题,寻找一种可移植的方式来判断栈的增长方向,见《栈的增长方向》。 今天在读Ruby hacking guide第5章,介绍alloca函数的部分,提到ruby实现的C语言版本的alloca.c,读了下代码,发现这里倒是实现了一个很漂亮的函数用于 实现判断栈的增长方向,利用了局部static变量,与dreamhead老大的想法其实是一致的。cpp 代码

2012-09-20 21:05:00 369

转载 栈增长方向与大端/小端问题

栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆”和“栈”共用全部的自由空间,只不过各自的起始地址和增长方向不同,它们之间并没有一个固定的界限,如果在运行时,“堆”和 “栈”增长到发生了相互覆盖时,称为“栈堆冲突”,系统肯定垮台。

2012-09-20 10:59:47 635

转载 找出数组中两个只出现一次的数字

转自:http://blog.csdn.net/ewanyou/archive/2011/05/25/6445209.aspxhttp://www.cnblogs.com/aLittleBitCool/archive/2011/04/14/2015720.html问题描述:一个数组中除了两个数字之外,其余数字均出现了两次(或偶数次)。请写出程序查找出这两个只出现一次的数字,要求时间复杂度为

2012-09-19 19:39:06 788

转载 根据二叉树的先序、中序遍历结果重建二叉树

先序遍历为:1 2 4 5 3 6,中序遍历为:4 2 5 1 6 3思路:先序遍历的第一个元素为根节点,在中序遍历中找到这个根节点,从而可以将中序遍历分为左右两个部分,左边部分为左子树的中序遍历,右边部分为右子树的中序遍历,进而也可以将先序遍历除第一个元素以外的剩余部分分为两个部分,第一个部分为左子树的先序遍历,第二个部分为右子树的先序遍历。由上述分析结果,可以递归调用构建函数,根据

2012-09-16 15:24:32 7411 2

原创 重建二叉树

摘自刘汝佳的《算法竞赛入门经典》PreOrder(T) =  T 的根结点 + PreOrder(T 的左子树) + PreOrder(T 的右子树);InOrder(T) =  InOrder(T 的左子树) + T 的根结点 + InOrder(T 的右子树);PostOrder(T) =  PostOrder(T 的左子树) +  PostOrder(T 的右子树) + T 的根

2012-09-16 14:58:24 566

转载 百度最新面试题集锦

1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(

2012-09-15 21:22:08 966

转载 数组中最大和的子数组

题目:输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,最大和的连续子数组为3, 10, -4, 7, 2,其最大和为18。背景:本题最初为2005年浙江大学计算机系考研题的最后一道程序设计题,在2006年里包括google在内的

2012-09-15 20:27:24 768 2

转载 事务四大特征:原子性,一致性,隔离性和持久性(ACID)

事务四大特征:原子性,一致性,隔离性和持久性。1. 原子性(Atomicity)    一个原子事务要么完整执行,要么干脆不执行。这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。2. 一致性(Consistency)

2012-09-14 09:25:03 21446

原创 数据库三大范式详解

1 第一范式(1NF)    在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。     所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为

2012-09-14 09:16:21 976

原创 静态局部变量

在局部变量前加上“static”关键字,就成了静态局部变量。静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。静态局部变量的初始化与全局变量类似.如果不为其显式初始化,则C++自动为其初始化为0。  静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局

2012-09-13 21:08:29 331

转载 找出字符串中对称的子字符串的最大长度(最长回文)

转发:http://blog.csdn.net/beiyeqingteng/article/details/7097146背景:所谓对称子字符串,就是这个子字符串要么是以其中一个词对称:比如 “aba”, “abcba”;要么就完全对称:比如"abba", "abccba"。问题:给你一个字符串,找出该字符串中对称的子字符串的最大长度。思路:首先,我们用字符数组

2012-09-03 20:50:33 1077

转载 从Trie树(字典树)谈到后缀树

转自:http://blog.csdn.net/v_july_v/article/details/6897097  从Trie树(字典树)谈到后缀树出处:http://blog.csdn.net/v_JULY_v 。 引言    常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来

2012-09-03 16:19:50 1782

转载 交换序列a,b中的元素,使|sum(a)-sum(b)

有两个序列a,b,大小都为n,序列元素的值任意整数,无序.要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。例如:   int[] a = {100,99,98,1,2, 3};int[] b = {1, 2, 3, 4,5,40};    求解思路:    当前数组a和数组b的和之差为    A = sum(a) - sum(

2012-09-03 15:58:53 1178

转载 编辑距离

问题:给定两个字符串 A和B,由A转成B所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将A(kitten)转成B(sitting):sitten (k→s)替换sittin (e→i)替换sitting (→g)插入思路:如果我们用 i 表示当前字符串 A 的下标,j 表示当前字符串 B 的下标。 如果我们用d

2012-09-03 15:53:52 385

转载 二叉树遍历算法集合(前中后序遍历的递归和非递归算法,层序遍历算法)

头文件:#ifndef BinaryTree_H#define BinaryTree_H#include #include class BinaryTree{private: typedef int Item; typedef struct TreeNode { Item Node; TreeNode* p

2012-09-02 16:46:27 550

转载 二叉查询树三种遍历的非递归写法

这里写出三种儿叉查询树遍历的非递归写法,非常有意思。preorder:先打印root,再left,最后right。[java] view plaincopypublic static void BSTPreorderTraverse(Node node) {      if (node == null) {          return;      }

2012-09-02 16:30:50 751

原创 有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠

10只老鼠按顺序排好,每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠是哪几只,然后排成二进制,再转成十进制就是第几桶酒。比如:第70桶酒,70转换成二进制就是0001000110,那么就给第四、八、九只老鼠喝。如果最后死掉第三、七、八只老鼠,那么就是0010001100,转换成十进制就是140,即140桶酒有毒。

2012-09-02 09:18:37 16319 1

转载 寻找捣乱分子对

问题描述:多人排成一个队列,我们认为从低到高是正确的序列,但是总有部分人不遵守秩序。如果说,前面的人比后面的人高(两人身高一样认为是合适的),那么我们就认为这两个人是一对“捣乱分子”,比如说,现在存在一个序列:176, 178, 180, 170, 171      这些捣乱分子对为, , , , , ,那么,现在给出一个整型序列,请找出这些捣乱分子对的个数(仅给出捣乱分子对的数目即可,不

2012-09-01 21:23:09 877

转载 把一个字符串转成double类型的数

问题:一个int数组, 比如 array[],里面数据无任何限制,要求求出所有这样的数array[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。分析:最原始的方法是检查每一个数 array[i] ,看是否左边的数都小于等于它,右边的数都大于等于它。这样做的话,要找出所有这样的数,时间复杂度为O(N^2)。其实可以有更简单的方法,我们

2012-09-01 21:04:13 1002

转载 求整数随机数构成的数组中找到长度大于=3的最长的等差数列

转自:http://blog.csdn.net/cwqbuptcwqbupt/article/details/7546674点击打开链接求整数随机数构成的数组中找到长度大于=3的最长的等差数列输出等差数列由小到大: 如果没有符合条件的就输出[0,0]格式:输入[1,3,0,5,-1,6]输出[-1,1,3,5]要求时间复杂度,空间复杂度尽量小网上有动态规划的

2012-09-01 11:09:50 1391

转载 全排列的非递归算法

转自:http://blog.csdn.net/niuox/article/details/7660980这个讲解的非常通俗易通,所以记录下来备用。先大体介绍一下算法思路:比如说有1234四个数字,我们要将这四个数字实现全排列。抛弃初中老师教我们的4×3×2×1的思路,我们来换一种思路。“1234”当然是第一个排列,要得到第二个排列,我们选取刚好比它大的,我们用大脑当然想的到是

2012-08-31 19:14:47 833

转载 把数组排成最小的数

转自:http://blog.csdn.net/cxllyg/article/details/7659525问题描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32,  321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。      思路:先将整数数组转为字符串数组,然后字符串数组进行排序,最后依次输

2012-08-31 09:51:18 406

转载 将整数分解成为连续的自然数之和

转自:http://www.blker.com/?p=745问题:将正整数拆分为连续自然数之和 公式:连续的自然数之和让我们想到了等差数列求和公式:注:其中Sum为要分解的正整数,n为连续自然数的个数,aFirst为连续自然数的第一位数 将以上公式改写成另外一种格式注:求解得到连续自然数个数n:  如果一个数可以分解为几个连续自然数之

2012-08-30 20:48:57 722

转载 找出数组中两个只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:这是一道很新颖的关于位运算的面试题。首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我

2012-08-30 19:51:18 537

空空如也

空空如也

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

TA关注的人

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