05 2013 档案
摘要:1. 获取源代码 $ svn co http://svn.apache.org/repos/asf/hive/trunk hive $ cd hive2. 修改源代码可通过log类打印调试信息,也可以直接使用System.err.println。3. 编译 $ ant package完成编译后,会生成build目录,里面包含所有编译完的class,同时包含了一个dist目录,里面拷贝了bin,conf等目录。
阅读全文
摘要:以下内容来自于mysql经验分享。一、分页sql的写法假设,一个公司产品有2000条记录,要分页取其中10个产品,假设访问公司索引需要50个IO,2条记录需要1个表数据IO在mysql中采用limit分页原理:一次性根据过滤条件取出所有字段进行排序返回 select * from t where thread_id = 771025 and deleted = 0 order by gmt_create asc limit 0, 10;数据访问开销=索引IO+索引全部记录结果对应的表数据IO该种写法越翻到后面执行效率越差,时间越长,尤其表数据量很大的时候或者可以更优化的,利用表的P...
阅读全文
摘要:1. redis不是一个通用的数据解决方案,它只是擅长于处理某些特定的问题集合,而这些问题是我们经常关心的一类问题。2. redis是一个全内存的kv存储工具,它会定期将数据持久化到硬盘。然而它不仅仅是一个kv存储,它拥有五种数据结构,只是其中的一种是kv结构。3. 类似的,我们可以认为关系数据库是只拥有一种数据结构的存储工具,这种数据结构就是表,关系数据库用表这一种结构满足了各种的数据需求,即one-size-fits-all,而redis是用五种典型的数据结构处理特定类型的问题,这种设计使得redis简单而快速。4. redis用key标识一条数据,而用value存储key对应的数据,通常
阅读全文
摘要:常用插件:minibufexpl.vimtaglist.vimwinfileexplorer.vimwinmanager.vimwintagexplorer.vim12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810
阅读全文
摘要:GivenaBST(BinarysearchTree)howwillyoufindmedianinthat?Constraints:*Noextramemory.*Functionshouldbereentrant(Nostatic,globalvariablesallowed.)*Medianforevennoofnodeswillbetheaverageof2middleelementsandforoddnooftermswillbemiddleelementonly.*Algorithmshouldbeefficientintermsofcomplexity.中文不需要赘述了,就是二叉搜
阅读全文
摘要:PythonaddsanextensionsyntaxtoPerl’sextensionsyntax.IfthefirstcharacterafterthequestionmarkisaP,youknowthatit’sanextensionthat’sspecifictoPython.Currentlytherearetwosuchextensions:(?P<name>...)definesanamedgroup,and(?P=name)isabackreferencetoanamedgroup.>>>p=re.compile(r'(?P<wor
阅读全文
摘要:将一个整数拆分成不重复的整数之和。example:6=1+5=1+2+3=2+4采用递归方法实现。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#include<iostream>#include<vector>usingnamespacestd;/**6=1+5=1+2+3=2+4**/voidsplit(i
阅读全文
摘要:在看hive源码的时候,因为对log4j不了解而苦于不知道该如何打印log来进行调试。虽然最后我选择了直接使用System.err.println来打印log,但是log4j是一个很好的log框架,在很多多线程系统中都有用到,所以值得花点时间好好学习下。简介:log4j是apache的一个开源项目,是一个流行的javalog框架,如今已经有了c,c++,python,shell等各语言的相关版本,如使用于shell的log4shell.打印log是最简单和最直接的程序调试方法。即便如此,打印log有时却是唯一可以用的程序调试方法,尤其是对于大型的多线程或分布式系统。它们很难通过gdb等工具就进
阅读全文
摘要:方法一、不用栈void reverseChar(char* str, int len){ char* q = str+len-1; char* p = str; if (!len) return; while( pst;stackword;char*p=str;st.push('\0');while(*p!='\0'){while(*p=='')st.push(*p++);if(*p=='\0')break;while(*p!='\0'&&*p!='')word.push(*p++)
阅读全文
摘要:算法内容来源于网络,本人增加对算法的证明。百度面试题:现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。 答案1: 创建一个hash_map,key为数组中的数,value为此数出现的次数。遍历一遍数组,用hash_map统计每个数出现的次数,并用两个值存储目前出现次数最多的数和对应出现的次数。 这样可以做到O(n)的时间复杂度和O(n)的空间复杂度,满足题目的要求。 但是没有利用“一个数出现的次数超过了一半”这个特点。也许算法还有提高的空间。 答案2: 使用两个变量A和B,其中A存储某个数组中的数,B用来计数。开始时将B初始化为0。 ...
阅读全文
摘要:阿里面试题:一个含有n个互不相同的整数的数组,任意一个数a[i]的现有位置i和它排序后的位置j的距离不超过k(即i-j的绝对值小于等于k),2=<k<n;n远远大于k;根据数组特点设计一算法对数组进行排序。分析:从左往右排序,i位置上最终放的数一定在区间[i,i+k]上。可以每次只对[i,i+k]区间的数进行排序,确定i位置上的数据,然后区间向右移动一个位置。重复以上操作直到确定所有位置上的数据。那么对于区间[i,i+k]上的数据该采用什么方法来排序呢。如果选择插入排序,每次移动位置后需要o(k)来确定i上的元素;实际上在移动位置后,补充一个新的数据到原有区间时,完全可以采用二分查
阅读全文
摘要:题目:频繁的内存操作new,delete是比较耗时的操作,为了减少这些操作,一般都会设计自己的内存分配器。一个程序需要频繁使用大小在512Byte到200KByte不定长的内存,请您设计一个高效的内存分配器?考虑设计的重要关注点和大致思路,空间使用率等。一、结构:1) 首先假设内存分配器的最小内存分配单元为mem_unit,需要确定最小分配单元的大小。如果设置太小,将使得内存单元过于琐碎,过大则造成空间浪费。基于这个考虑,设置多个大小类别的mem_unit。申请内存单元时,将分配能够满足该大小的最小内存单元。2) 由于同一类别的mem_unit是随机申请的,空间不连续,所以采用单向链表结构管理
阅读全文
摘要:题目:搜索功能一般都有根据你的输入快速显示对应关键字的功能,比如你输入”刘”, 搜索框的下拉列表会显示“刘德华”,”刘若英”,”刘欢”等,你继续输入‘德’,将查询关键字变成”刘德”,显示的候选字列表会显示”刘德华”,”刘德华专辑”,”刘德华演唱会”等。如果让你用算法和数据结构实现这个功能(用户每次多输入一个字母都可以得到最佳的查询结果,每次返回最多不超过10条),你会如何设计。能否用程序实现。一、算法设计1) 采用trie树来实现前缀匹配,如果匹配成功,返回所有前缀相同的字符串,否则返回空;2) 如果匹配上的字符串超过10条,用堆排找出搜索热度前10的字符串(这部分没有写代码);二、代码与运行
阅读全文
摘要:这是腾讯的一道面试题,因为平时这方面接触比较少,所以想法比较浅。虽然最终没有通过面试,但仍然记录如下,希望以后回头看的时候能够想出更好的答案。或许可以问下博客园的开发,下文中的脏子竟然被禁止使用了,只能用xx代替之。题目:网络发表评论模块设计时会有一个难题,用户的输入的聊天字符串要进行过滤,如果其中含有脏话,比如中文的“他妈的”,英文的“Fuck”,。就必须将这些脏话进行过滤,替换。聊天模块有一个脏话库,脏话库中含有多个要求过滤的词汇。请你设计一个算法对发表评论输入字符串的脏话过滤,同时请描述你的算法的大致的时间复杂度。举例:中文“他妈的,我要找到那个联盟。”要过滤掉“------,我要……”
阅读全文
摘要:将一个整数拆分成不重复的整数之和。example:6=1+5=1+2+3=2+4采用递归方法实现。 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 /** 6 6 = 1 + 5 = 1 + 2 + 3 7 = 2 + 4 8 **/ 9 10 void split( int n, int s, vector<int> ret) 11 { 12 // 递归结束条件 13 if ( n <= 2*s) 14 { 15...
阅读全文
浙公网安备 33010602011771号