自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 codereview工具

https://code.google.com/p/rietveld/http://baidutech.blog.51cto.com/4114344/744432

2013-06-09 17:51:05 1826

原创 libcurl的使用

参考资源:http://www.cppblog.com/qiujian5628/archive/2008/06/28/54873.htmlhttp://blog.csdn.net/jgood/article/details/4787670

2012-06-11 19:14:09 794

原创 shell 编程

1、for循环for i in {1..18}; do echo $i; done

2012-05-23 16:41:49 811

原创 emacs中文输入的解决

解决的还不是很完善,secureCRT下解决了,但是putty不行,传输都设置成utf-8在~/.emacs中输入: (set-language-environment 'Chinese-GB)(set-keyboard-coding-system 'euc-cn)(set-clipboard-coding-system 'euc-cn)(set-terminal-co

2012-04-25 09:38:35 1294

转载 SecureCRT的配置

http://www.kuqin.com/linux/20091118/73768.htmlbackupspace和delete键的修改:http://www.linuxso.com/linuxrumen/17868.htmlhome|end|pageup|pagedown键的修改,测试不好用http://onlyzq.blog.51cto.com/1228/517497

2012-04-22 11:22:07 862

原创 chromium不完全总结

1、Document被设置url2、Document的open函数3、Webkit中的消息事件处理机制:4、关于Document的加载关于FrameLoader、DocumentLoader以及DocLoader的关系[1],在新的Chrome版本中,DocLoader已经被remove掉了,因此哪个图也就应该更新了,我猜想现在的资源下载应该都是通过Docu

2012-04-10 17:54:33 5368

原创 gtest使用简单总结

因为阅读chromium的需要,想简单学习一下gtest的使用,因为通过chromium的unit_test是了解webkit chromium port的一个途径。其实gtest的相关文章比较多,本文后面的参考文献列出了一些代表性的文章,是学习使用gtest的有价值的资料。首先看一下逻辑概念:  一个test_program可以包含多个test_case,而一个test_case又可以包

2012-03-28 16:11:49 8305

原创 GYP(Generate Your Project)一个很有价值的构建系统

因为阅读chromium的需要,也熟悉了一下chromium使用的GYP构建系统,其实这个系统和我原来所在的一个公司的构建系统非常相似,因此学习起来也比较容易。首先看一下gyp的安装,如果你使用ubuntu系统那么安装可以通过下面的命令完成:sudo apt-get install gyp下面我们就通过一个例子来看看gyp的使用,假设我们编写三个文件hello_world.cc,

2012-03-23 17:00:11 17058

转载 浅谈WebKit之Port篇

http://i.bbbug.com/blog/read.php?559WebKit作为一个浏览器引擎,其相对于Gecko而言一个较大的特点就是便于移植,嵌入到其他程序中,目前大家已了解使用WebKit引擎的应用包括Safari、iPhone、Chrome、Android、Nokia S60 Browser及KDE QT4.4等,同时还有其他方面的移植如Gtk、wxWidget、3D等

2012-03-08 14:57:17 3315

原创 WebKit页面加载

1、Document被设置url2、Document的open函数3、Webkit中的消息事件处理机制:4、关于Document的加载[1]关于FrameLoader、DocumentLoader以及DocLoader的关系:1)FrameLoad在init函数中创建了PolicyDocumentLoader2)DocumentLoader在DocumentLoader::

2012-03-08 13:40:25 1591

原创 WebKit HTML解析的新理解与未解问题

1、脚本解析的过程中要暂停HTML的parse过程,因为脚本的执行可能会使用write方法写入HTML,但是当脚本执行时,会启动与scan过程,查看下面有那些需要预取的css和js文件,提前下载。2、当解析CSS的过程虽然不会改变Dom,但还是要暂停script的执行,因为script可能会请求,element的style信息,如果此时css还没有解析完成,就会取得错误的样式信息,但webki

2012-03-02 19:24:13 1542

原创 硬币翻转问题

题目:有4枚硬币,初始状态未知。你的眼睛被蒙住,看不到硬币的状态,但可以随便翻任何几个硬币。你每翻一次以后,如果4枚硬币的状态是全正面朝上或者全背面朝上,旁边的人会告诉你翻成功了。现在问你,最少翻几次可以保证成功?每次翻哪几枚?(百度2008年面试题) 解答:这个题目的关键是分析翻转前后硬币组合中相同不相同的数目的关系,不必考虑硬币的顺序,因为考虑顺序的话,代价比较大。方法一:尝试

2012-03-02 15:02:48 5803

转载 分词算法介绍

===============================================================================如有需要可以转载,但转载请注明出处,并保留这一块信息,谢谢合作! 部分内容参考互联网,如有异议,请跟我联系! 作者:刀剑笑(Blog:http://blog.csdn.net/jyz3051) Email:jyz3051

2012-03-02 14:29:02 7274

原创 求子数组和最接近0

题目:给定一个子数组,求子数组和最接近0分析:方法1:这个问题和求子数组最大值优点相似,但解法不同,如果按照求子数组最大值的方法来求解,我们可以求出以j为截止的最大值和最小值,如果最大值和最小值都>0,那么最小值即为所求,如果都0而最小值方法2:我们先计算所有sum[0-j] 0sum[i-j]= sum[0-j] - sum[0-i];因为已经对sum[0-j]进行了

2012-03-02 12:30:14 2180

原创 关于memcpy、memove的故事

关于memcpy和memmove的故事很多,但相关的主要有一下几个方面:1、memcpy和memmove的差别:memcpy当地址出现重叠时,操作的效果是未定义的,而memmove则处理了这种情况,也就是说如果src地址小,我们就从后向前拷贝,如果src地址大,怎从前向后拷贝。[1]2、通常实现时每次拷贝一个byte,加速的办法是copy4个byte,不足的部分再按照byte拷贝[2]

2012-02-29 12:18:21 1413

原创 求一个字符串的最长重复字串问题

给定一个字符串,求出这个字符串的最长重复字串,例如abcdbcd,最长重复字串是bcd。分析:方法1:  一种方法是先解决http://blog.csdn.net/bertzhang/article/details/7303010的问题,在对字符串进行循环处理。具体过程如下:1)首先解决两个字符串的最长公共邻接子串问题;2)将字符串,abcdbcd分成如下两个字符串的集合:

2012-02-28 17:37:32 2805

原创 LCS问题变型,要求子序列必须连续

问题和LCS相似,但是要求最长的字串必须连续。同样可以采取动态规划方法,分别使用两个数组来保存中间计算结果:1)一个保存当到达位置i,j时,最大的字串长度;2)另一保存以i,j为截止的位置的连续字串的长度;每次如果a[i] == b[j]时,比较max_length[i-1][j-1]和length_endinghere[i][j]来进行决策,具体见程序如果a[i] != b[

2012-02-28 17:22:53 1570

原创 关于Hash的总结

hash函数  hash函数常用的是mod 素数,或者使用乘法策略,取某些位,这些策略直接影响到hash table的resize,如果是mod素数的话,只能按素数来递增,如果是取乘法方法,只能以2^p来递增。  参考文献[1][2]等给出了很多,常用的字符串hash函数,但更有价值的还包括下面这两个:  murmur hash[3][4],其中[3]无法直接访问,不过本文的例子中有具

2012-02-27 14:22:23 1603

原创 itoa函数的编写

itoa函数的编写主要考虑一下几个方面的因素:1)数字的正负号2)如果是0时,影响value/radix的判断,所以要用do while循环来计算3)如何反转转换后的数据,首尾两指针交换数据4)扩展性方面使用radix5)使用character数组来,实现转换,有利于扩展到16进制的情况具体代码如下:std::string Itoa(int value, int rad

2012-02-25 15:02:26 1137

原创 HashTable的实现测试

1)冲突解决方式,通过链表解决2)slot数组中是否保存数据的问题,这个是一个容易让人困惑的问题,解决方案是slot不是HashNode的数组,而是一组指向HashNode的指针,因此slot数组中肯定不会保存数据3)slot大小的选择,在HashTable的构造函数中设定大小,但hash函数使用了乘法策略,因此需要找到一个2^p>用户给的size的p,以2^p作为size,但存在这样的情

2012-02-24 22:30:11 825

原创 KMP算法与string::find以及strstr的比较

首先,简单描述一下KMP算法,要理解好KMP算法,最好参考算法导论[1],尤其是先理解好自动机匹配的方法,再看KMP就很容易理解了。它利用的是一个关键的回退原理,也就是如果匹配失败时,那么我知道只要从模式的某个位置继续匹配就可以了,这个回退的位置事先通过模式计算出来,也就是说如果某个位置匹配不成功,就回退到事先算好的位置,继续匹配。这个事先算好的位置就是从0到该位置应该是匹配不成功处的一个后缀。这

2012-02-24 19:33:06 8634 2

原创 Dijkstra算法

具体算法,算法导论中已经有非常清楚的介绍了,实现时使用最小堆是我在Haffman编码[2]中实现过的,直接拿来使用。使用最小堆的一个方法中需要调整从起始点到某个节点的路径长度,开始考虑的一个策略是使用一个外部数组表示节点到Heap中index的映射,当Heap节点交换时,也要更新数组,保持映射的一致性。后来看了写其他人的实现,还有另一种方法,就是不更新节点的weight,而是将新的节点we

2012-02-23 18:59:35 773

原创 ini文件解析器

自动机是文本匹配文本解析的利器,这里仿造参考文献[1],实现一个ini配置文件解析器,状态机在处理文本解析的工作过程是这样的,不断读取输入的字符,根据当前的状态对字符进行处理,处理的过程主要包括状态的转换等动作,知道处理完毕全部的输入字符。一般ini文件格式如下:;this is comment[section1]aa = 1bb = 2[section2]cc = 3

2012-02-22 14:05:23 2521

原创 分层遍历二叉树

题目:对于一个给定的二叉树,分层遍历二叉树,分为上下左右,不同方向进行遍历。解析:原来实现时考虑使用队列来做,但这个算法不方便使用递归来做,如果使用递归会造成诸多问题。因此可以使用循环来处理,编程之美中不使用队列而是用数组模拟队列,对于从下上输出很有帮助,具体描述如下:1)对于从右向左输出,开始考虑使用栈来颠倒,实际发现其实只要处理左右子树的顺序改变一下就可以了;2)对于从下向上遍历,

2012-02-21 20:21:21 969

原创 重建二叉树

题目:给定二叉树的先序和中序遍历,构建这个二叉树。例如:先序遍历结果是:abdcef,中序遍历的结果是:dbaecf,如何构建二叉树分析:先序遍历的结果中的每一个节点,将中序遍历的结果分为左右子树两部分,递归构建二叉树,就可以完成树得构建。程序如下:#include #include class TreeNode { public: TreeNode() : left_(NU

2012-02-21 18:52:05 3113 1

原创 队列中取最大值操作问题

问题:设计一个队列能够在O(1)时间内取得队列的最大值。分析:这个问题和设计一个在O(1)时间内取最大值的堆栈看似比较相似,但实现难度要比最大值的堆栈困难一些,开始想模仿最大值堆栈的思想来设计取最大值的堆栈都失败了。实际上这个问题可以拆分成两个问题: 1)设计一个在O(1)时间内取最大值的堆栈; 2)如何使用堆栈来实现一个队列;如果这两个问题解决了,O(1)时间取最大值的队列也

2012-02-21 14:47:24 5698 4

原创 最短摘要生成

题目:抽象点说,就是在一个字符串中,找一些目标字符串,找到包含所有目标字符串的最小字符串。题目虽然叫做最短摘要生成,但和实际的搜索snippet的计算还是有比较大的差距的。解法:文献[1]给出了一种比较好的解法,策略还是使用双指针,双指针对于很多算法设计很有价值,算法的思想是采用两个指针,开始两个指针都指向缓冲区的头部,尾指针向后扫描,直到头指针和尾指针中间包含了全部的关键字,那么头指针向后移

2012-02-21 12:26:13 4068

原创 从无头单链表中删除节点

题目:在一个给定的单向链表中,如何遍历一次删除特定的节点解法:这是一个典型的逆向思维问题,正常的删除需要把当前节点的前面节点和后面节点链接起来,再删除当前节点,完成任务。当前节点的后续节点比较容易得到,但困难的是无法得到当前节点的前面节点,逆向思维的结果是不删除当前节点,而是将后面节点的数据拷贝到当前节点,转而删除当前节点的后面节点,从而完成删除操作。代码如下:#include

2012-02-20 19:42:00 2464

原创 字符串移位包含的问题

两种思考方法:1、和正常的字符串比较没有什么区别,只是比较到数组的末尾时,需要从头开始在比较,也就是说如果超出数组的长度时,取一下模可以得到正确的坐标,继续比较就可以了。2、将数组复制一边,再在复制后的数据上查找目标字符串。代码如下:#include #include bool RotateFind(const std::string& src, const std::stri

2012-02-20 18:55:02 798

原创 数组分割问题

文献[1][2][3]都是相同的解法,其中[4]的评论中有完整的解法,但不是很好理解,直到写这个文章时,还是不太理解。文献[5]dlyme的回帖给了一个很好的思路,他的原文如下:假设S=(a[1]+a[2]+...+a[n]+a[n+1]+...+a[2n])/2,那么这是个和0-1背包类似的动态规划问题,区别之处就是取的个数受到限制,必须得取足n个元素。用dp(i,j,c)来表示

2012-02-20 17:06:33 632

原创 双调旅行商问题(TSP)bitonic tours

参考文献:http://www.cs.huji.ac.il/course/2004/algo/Solutions/bitonic.pdfhttp://www.cppblog.com/doer-xee/archive/2009/11/30/102296.html

2012-02-20 10:27:13 1935

原创 计算字符串的相似度(编辑距离)

题目:对于一个字符串a可以通过增加一个字符、删除一个字符、修改一个字符,将字符串a变成字符串b,例如a= abcddefgb = abcefg可以通过a字符串删除两个dd得到b字符串,也可以通过b字符串增加dd编程a字符串,从上面的分析可以知道,增加和删除的代价必须是相同的,这样a字符串变成b字符串的代价和b字符串变成a字符串的代价才会是相同的,否这可能产生代价不对称的情况。其实我

2012-02-17 14:47:00 3668

原创 一个数拆分成连续自然数的和(只考加法的面试题)

题目:给定一个自然数,如何将它拆分成几个连续的自然数的和的形式,例如:9 = 4 + 5,12 = 3 + 4 + 5等,有哪些数不能分解成这样的形式,例如4,8等分析:通过上面的几个例子可以发现一下规律:1)所有的奇数n都可以分解成(n/2) + (n/2 +1)2)偶数有点麻烦,先对部分例子进行计算,比如6 = 1 + 2 + 3,10 = 1 + 2 + 3 + 4, 12 =

2012-02-17 10:55:08 7025

原创 程序设计的非常规总结

一般思想1、将问题简化,从比较简单的情况开始分析,比如1个元素情况,2个元素情况,3个元素情况,不断增加,寻找规律,这样有利于发现规律,从而解决问题,并且也有利于处理边界情况。比如编程之美1.11、又如送货站选址问题、1的个数问题等都可一通过逐渐的分析加以解决2、从比较简单的例子,模拟程序运行过程,比如二分查找,可以使用4个元素的例子,模拟查找过程,总结判断条件等。3、拿到一个问题,首

2012-02-16 17:11:39 986 2

原创 排列问题

按照字典序生成所有的排列,可以这样考虑,首先对输入的数组进行一个排序,不断的构建比当前在字典序上大1个的序列,直到构建到最大的序列,无法再次构建为止。具体的算法描述如下(来自参考文献[1]):Generation in lexicographic orderThere are many ways to systematically generate all permutatio

2012-02-16 14:39:48 1133

原创 0/1背包问题

参考文献[2]给出了非常清楚的解法描述,阅读参考文献[2]就可以很好的理解背包问题的构建过程了,参考文献[1]给出了很多0/1背包相关的问题,而且在参考文献[1]中还给出了一种空间节约的求解方法,通过画求解的矩阵图,可以很好的理解为什么参考文献[1]的节省空间的思想。即为什么第2次循环要从v降低到1,因为没一行使用了同一个数组,计算数组后面的值时会用到前面的值,如果从前向后修改数组,当用到数组前面

2012-02-15 19:21:42 941

原创 面试题目资源列表

http://blog.csdn.net/lzc52151/article/details/6221852   http://zhedahht.blog.163.com/blog/#m=0http://blog.csdn.net/v_JULY_v/article/category/767340 http://www.cnblogs.com/miloyip/archive/2010/02

2012-02-15 17:51:48 811

原创 区间重合判断(区间覆盖问题)

题目:给定一些无序区间,判断某个给定的特定区间是否在这些无序的区间内。这个题目比较简单,首先将给定的区间排序,在对重合的区间进行排序,使得区间变成递增且不重叠的若干个区间,对于给定的区间在已经处理好的区间内进行二分查找,完成区间覆盖的判断。程序如下:#include #include #include class Interval { public: Interval(in

2012-02-15 15:34:55 6860

原创 寻找最近点对

题目:平面中有若干个点,寻找距离最近的两个点。分析:方法1:两两点比较,寻找最近的两个点对,复杂度O(N^2),优点代码简单不容易出错方法2:观察两两比较的方法,发现有很多无用的比较,对于每一个点只要计算到它最近的点的距离就可以了,枚举所有的点,最后得出距离最近的一对点,但对于一个给定的点,如何找到距离它最近的点呢?可以使用一些启发式规则,减少比较的次数,例如:对于(x,y)取x轴投影

2012-02-15 12:50:41 6634

原创 数组循环移位

abcd1234 -> 右移2位 -> 34abcd12解法:abcd1234 -> abcd12 | 34 -> 21dcba |  43 ->34abcd12程序如下:#include templatevoid ArrayReverse(T array[], int start, int end) { T tmp; while (start < end) {

2012-02-14 19:47:45 735

空空如也

空空如也

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

TA关注的人

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