自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

转载 经典面试智力题

转自:http://blog.sina.com.cn/s/blog_59c470ef0100au3r.html智力题15个海盗抢得100枚金币后,讨论如何进行公正分配。他们商定的分配原则是: (1)抽签确定各人的分配顺序号码(1,2,3,4,5);(2)由抽到1号签的海盗提出分配方案,然后5人进行表决,如果方案得到超过半数的人同意,就按照他的方案进行分配,否则就将1号扔进大海喂鲨鱼(3)如

2011-10-27 02:19:04 1521

转载 设计包含min函数的栈

本文转自:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排

2011-06-15 11:54:00 968

转载 perl中特殊符号

<br />@ 数组 <br />$x{} x名字前面是美元符号($),后面是花括号({}),则其为 hash 元素<br />% 要引用整个 hash,使用百分号(“ )作为前缀。前面几页中使用的 hash 的名字为%family_name。<br />$! 系统产生的一些可读的信息,也可能是出错的信息<br />$_ 子函数参数变量自己本身<br />@_ 子程序的私有变量<br />&x 调用子函数x<br /><> 数据输入.如果没有指定文件名,则其从标准输入流中自动打开和关闭一系列文件进行读入<b

2011-05-30 00:48:00 1959

原创 Linux 软硬链接对比

<br />linux系统下提供ln指令来进行文件链接。文件链接主要分为硬链接和软链接。<br />硬链接<br />由于linux下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个一个硬链接,文件的链接数就加1。<br />备注:inode :它是UNIX内部用于描述文件特性的数据结构。我们通常称inode为文件索引结点INDEX NODE(信息结点)。inode含有关于文件的大部分的重要信息,包括文件数据块在磁盘上

2011-05-29 11:39:00 5181

转载 深入理解JVM

<br />转自:http://www.iteye.com/topic/752755<br />1   Java技术与Java虚拟机<br />说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:<br /><br />图1   Java四个方面的关系<br />运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编

2011-05-19 10:43:00 1137

转载 垃圾回收调优及JVM参数详解

一、常用JVM配置参数1.1基本参数-client,-server   这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能  和内存   管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。   在windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Li

2011-05-18 15:23:00 3669

转载 JVM Heap的设置

<br />转自:http://www.51testing.com/?183198/viewspace-185438.html<br />1、Sun JDK、BEA JRockit、HP Java SDK<br />    建议:堆的最小值等于最大值<br /> <br /> 2、IBM Java SDK<br />    建议:堆的最小值不要等于最大值<br /> <br /> 3、-Xms<br />    控制Java堆的初始大小。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高吞吐

2011-05-18 15:20:00 2118

原创 Java垃圾回收机制

综合了若干人的blog~1. 垃圾回收的意义  在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空

2011-05-18 15:02:00 155915 43

转载 Linux 操作系统启动流程

转自:http://bbs.chinaunix.net/viewthread.php?tid=2046548&page=1&authorid=11195425Linux系统启动的基本过程和步骤:最近在某个版块看到有人讨论GRUB的问题,这里是我个人的一些理解。我想大部分还是正确的,但肯定也有理解错误的地方,在这里抛砖引玉了!Linux系统启动过程大致按照如下步骤进行(这是一个简述):第一阶段:BIOS启动引导阶段;                        在该过程中实现硬件的初始化以及查找启动介质; 

2011-05-17 16:27:00 6631

转载 linux 僵死进程及处理

<br />转自:http://blog.csdn.net/hwz119/archive/2007/05/16/1612223.aspx<br />僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程 <br />  怎样产生僵尸进程的: <br />  一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸

2011-05-13 15:15:00 1008

转载 UNIX 进程揭秘

<br />转自:http://www.ibm.com/developerworks/cn/aix/library/au-unixprocess.html#listing6<br />分配给系统管理员的许多工作之一是确保用户的程序正确运行。因为系统上存在其他并发运行的程序,所以此任务变得更加复杂。由于种种原因,这些程序可能会失败、挂起或行为异常。在构建更可靠的系统时,了解 UNIX® 环境如何创建、管理和销毁这些作业是至关重要的步骤。<br />开发人员还必须积极了解内核如何管理进程,因为与系统的其他部分和

2011-05-13 14:33:00 672

转载 C/C++中字符指针数组及指向指针的指针的含义

<br />转自:http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/564467.html<br />就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。<br /><br />  先看下面的代码,注意看代码中的注解:<br />#include <iostream>  <br />#include <string>  <br />using namespace std;  <br />

2011-05-13 10:48:00 735

转载 shell批量修改文件名

<br />转自:http://zhguiqiang.blog.163.com/blog/static/9993752201021151628822/<br />shell批量修改文件名<br /> <br />最简单:rename file file1 file??<br />自己写的:<br />#!/bin/bash<br />#NeoX<br />folder=/root/folder<br />cd $folder<br />num=0<br />for filename in `ls $fold

2011-05-11 14:14:00 5244

转载 perl的map函数

<br />转自:http://hi.baidu.com/tkocn/blog/item/3b3e61df47e75b1049540394.html对perl的map函数用的总是不好,今天看了perlChina的一篇文章,有所体会,在此收藏:<br />翻 译:zjl_perl<br />出 处:中国Perl协会 FPC<br />原 名:Perl:grep,map and sort<br />作 者:Richard Anderson<br />原 文:http://xrl.us/gcqq<br />发

2011-05-08 23:53:00 3047

转载 cc、gcc、g++、CC的区别概括

转自:http://angela.candy.blog.163.com/blog/static/3003691820107259538779/和http://www.yuanma.org/data/2007/0406/article_2498.htmgcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。 cc是U

2011-05-05 01:06:00 3091

转载 Hive 入门

<br />转自:http://www.blogjava.net/hengheng123456789/archive/2011/01/05/342354.html<br />Hive 是什么<br />在接触一个新的事物首先要回到的问题是:这是什么?<br />这里引用 Hive wiki 上的介绍:<br />Hive is a data warehouse infrastructure built on top of Hadoop. It provides tools to enable easy da

2011-05-04 19:03:00 1881

原创 编程之美 2.2阶乘中最低位0的个数&二进制表示中最低位1的位置

<br />/***************************问题描述**************************1. 给定一个整数N,那么N的阶乘N!末尾有多少个0?2. 求N!的二进制表示中最低位1的位置*************************************************************//************************问题1思路****************************N!=K*powe

2011-05-03 00:48:00 2156 1

原创 编程之美 2.1 求一个数的二进制表示中1的个数

<br />/**************问题描述************求二进制数中1的个数**********************************/#include<iostream>using namespace std;/****************解法一:直接除2*******************对num除以2,余数为1则result加1,时间复杂度为O(logv)v为num的二进制位数**************************

2011-04-30 02:02:00 1311

转载 编程之美3.9 重建二叉树

<br />问题描述:给定一个前序遍历和一个中序遍历,重建一棵二叉树。如:<br />前序:a b d c e f<br />中序:d b a e c f<br />a是根节点。<br />思路:根据前序,可以很快找出根节点a,然后根据中序,可以找出根节点a的左右子树,然后递归求a的左子树前序b d跟中序d b,a的右子树前序c e f跟中序e c f即可<br />#include<iostream>using namespace std;//定义树的长度#define TREELEN 6

2011-04-28 00:59:00 1655

转载 编程之美3.8 求二叉树中节点的最大距离

<br />转自:http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html问题定义<br />如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。<br />书上的解法<br />书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。<br />计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到

2011-04-27 21:22:00 1252

转载 More Effective C++:指针与引用的区别

<br />转自:http://dev.yesky.com/495/2567995.shtml<br />指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?<br /><br />  首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明

2011-04-22 00:37:00 600

原创 编程之美2.17 数组循环移位

<br />问题描述<br />把一个含有N个元素的数组循环右移K位,如K=4的时候abcd1234->1234abcd。一般考虑K>0的情况,即右移;同时K<N,当然K>=N的话可以通过K%=N得到一样的结果<br /> <br />解法思路详见代码注释<br />/****************************问题描述*****************************把一个含有N个元素的数组循环右移K位,如K=4的时候abcd1234->1234abcd一般考虑K>0的情况,即

2011-04-22 00:22:00 1344

原创 编程之美2.5 寻找最大的K个数

/********************问题描述************************有若干个无序的数(假设数目为N),如何选择其中最大的K个数*****************************************************/#include#include#includeusing namespace std;/***********************解法一:全部排序**************将输入的N的数排序,然后选出

2011-04-21 21:41:00 2464 2

原创 编程之美2.14扩展问题1 求子数组和的最大值(首尾可以相连)

<br />整体思路:<br />问题的解可以分为两种情况:<br />1)解没有跨过A[n-1]到A[0],即普通的求子数组和的最大值<br />2)解跨过A[n-1]到A[0]<br />对第二种情况,只要找到从A[0]开始和最大的一段(A[0],...,A[j])(0<=j<n)以及A[n-1]结尾的和最大的一段(A[i],...,A[n-1])(0<=i<n),那么第2种情况中,和的最大值M_2为:<br />M_2=A[i]+...A[n-1]+A[0]+...+A[j]<br />如果i<=j,

2011-04-21 11:15:00 2666 4

原创 编程之美2.14扩展问题2 求数组的子数组之和的最大值并给出子数组的起始终止位置

<br />求子数组之和的最大值采用之前的博客编程之美2.14 求数组的子数组之和的最大值中的动态规划方法,时间复杂度为O(N),在求nAll的过程中,记录子数组和最大值的那个数组的起始位置start跟终止位置end,下面的源码也分成了两种情况处理,一种情况是数组元素全为负的时候返回最大的负数,数组中除了0就是负数的情况则返回最后一次出现的那个0所在的位置(对应于程序的define RETURN_MAXMINUS块);另外一种情况是数组元素全为负数的时候返回0并置start跟end为-1,数组中除了0就是负

2011-04-21 00:21:00 2762

原创 编程之美2.14 求数组的子数组之和的最大值

<br />问题描述:<br />一个有N个整数元素的一维数组(A[0],A[1],...A(n-1),它包含很多子数组,求子数组之和的最大值,当数组元素全部为负的时候,有两种处理办法,第一种是返回0,第二种是返回数组中最大的负数。<br />解法1:<br />使用暴力法,假设最大的一段数组为A[i],...,A[j],则对i:=0~n-1 j:=i~n-1,遍历一遍,求出最大的Sum(i,j)即可<br />解法2:<br />使用分治法,数组(A[0],A[1],...A(n-1)分为长度相等的两段数

2011-04-20 20:05:00 2658 2

转载 c/c++中内存区域划分大总结

<br />转自:http://c.chinaitlab.com/cc/basic/200906/787241.html<br />一、 在c中分为这几个存储区<br />    1.栈 - 由编译器自动分配释放<br />    2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收<br />    3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放<br /> 

2011-04-18 22:18:00 592

转载 C++中的虚函数

虚函数的定义:  虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式:  virtual 函数返回值类型 虚函数名(形参表) { 函数体 }定义虚函数的限制:          (1)非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将

2011-04-17 00:09:00 909

原创 类指针与NULL

<br />给定如下代码,给出输出结果<br />class Person{public: void hi(){ cout<<"Hi"<<endl; }};class Intern{public: Intern(int a){ i=a; } void hi(){ cout<<"Hi "<<i<<endl; }private: int i;};int main(){ Person *p=new Person;

2011-04-16 01:05:00 1050

原创 考察继承、虚函数、sizeof、构造函数析构函数的一道面试题

<br />给定如下代码,求输出结果<br />class A{public: A(){ cout<<"A::A()"<<endl; } ~A(){ cout<<"A::~A()"<<endl; }};class B:public A{public: B():c(0){ cout<<"B::B()"<<endl; fun(); } virtual ~B(){ cout<<"B::~B()"<<endl; } void te

2011-04-16 00:18:00 2608 1

转载 解决分配问题的匈牙利算法

<br />匈牙利方法是为解决所谓“分配问题”,“指派问题”等数学问题的方法。这类问题的一般性叙述为:  <br />  有n个问题要分配给n个人去完成。第i个人完成第j项任务的成本为Cij。问:如何分配任务,能使总成本最小? 应用举例<br />  引入变量Xij,Xij的取值表示:  <br />  Xij=1,指派第个人去完成第j项任务;  <br />  Xij=0,不指派第个人去完成第j项任务。  <br />  假如五个人完成五项任务,“成本矩阵”为:  <br />  12     7    

2011-04-03 14:59:00 8875

转载 awk使用手册

<br />什么是awk? <br /><br />你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernighan。正是这三个人创造了awk---一个优秀的样式扫描与处理工具。 <br /><

2011-04-03 13:07:00 550

转载 TCP三次握手&四次挥手

<br /> 转自:http://www.programfan.com/blog/article.asp?id=44384<br />在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。<br />(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。<br />(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包

2011-03-28 00:13:00 524

转载 工厂方法模式与抽象工厂模式的区别

工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工

2011-03-27 19:54:00 726

原创 外排序思路总结

<br />外排序的过程基本上分为:<br />1)文件分成若干尽可能长的初始顺串<br />2)逐步归并顺串,最后形成一个已排序的文件<br /> <br />对第一步,可以使用置换选择排序算法生成若干个顺串<br />对第二步,可以使用二路外排序或者多路归并(选择树--赢者树&败者树--关于赢者树&败者树请看博客的前一篇文章)

2011-03-27 14:48:00 1096

转载 赢者树与败者树

<br />转自:http://hi.baidu.com/flower_mlh/blog/item/ca338ecbf07666067e3e6f9a.html<br />胜者树与败者树是完全二叉树。就像是参加比赛一样,每个选手有不同的实力,两个选手PK,实力决定胜负,晋级下一轮,经过几轮之后,就能得到冠军。胜者树和败者树也是, <br /> <br />每个叶子节点相当于一个选手,每个中间节点相当于一场比赛,每一层相当于一轮比赛。不同的是,胜者树的中间节点记录的是胜者的标号,但是败者树的中间节点记录的是败者

2011-03-27 14:37:00 5005 2

转载 BloomFilter——大规模数据处理利器

<br />转自:http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html<br />Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。<br /> <br />一. 实例 <br />  为了说明Bloom Filter存在的重要意义,举一个实例:<br />  假设要你写一个网络蜘蛛(web crawler)。由于网络

2011-03-27 11:07:00 659

转载 若干智力题

<br />转自:http://www.cnblogs.com/heaad/archive/2010/12/25/1916843.html<br />网上找了几道智力题做了做,记录一个参考答案附在后面。<br /> <br />1. 有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间? <br /> <br /> <br />2. 有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们

2011-03-27 02:00:00 894

原创 中序表达式转后序表达式

<br />例如:中序表达式(23+34*45/(5+6+7))转换成后序表达式23 34 45 * 5 6 + 7 + / +<br />后序表达式用处:<br />当转换成后序表达式后更方便计算表达式的值,如将后序表达式的元素依次进栈直到遇到运算符,这时候从栈中弹出两个元素,再结合运算符计算出这两个数运算的结果(如34*45=1530),将其结果压栈(此时栈元素为23 1530),然后继续将后序非符号元素压栈,直到遇到运算符。重复之前的操作。。。<br />InfixExp(中序表达式)转换Postfi

2011-03-27 00:35:00 18800

原创 使用函数指针与模板

<br />Operate.h<br />template<class T>class Operate{public: static T Add(T a,T b){ return(a+b); } static T Mul(T a,T b){ return(a-b); } static T Judge(T a,T b){ if(a>=0) return a; else if(b==0) return a; else return

2011-03-26 16:36:00 1116

空空如也

空空如也

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

TA关注的人

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