摘要: 以字节的方式读取: InputStream inputStream = new FileInputStream(file); int temp = -1; StringBuilder sb = new StringBuilder();... 阅读全文
posted @ 2014-12-01 15:10 huliangbin 阅读(1021) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/opennaive/article/details/75141461. MapReduce是干啥的因为没找到谷歌的示意图,所以我想借用一张Hadoop项目的结构图来说明下MapReduce所处的位置,如下图。Hadoop实际上就是谷歌三宝的开源实现,H... 阅读全文
posted @ 2014-10-20 19:04 huliangbin 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.html1.性能Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好... 阅读全文
posted @ 2014-10-20 15:15 huliangbin 阅读(218) 评论(0) 推荐(0) 编辑
摘要: tomcat与apache的区别:(转自:http://blog.csdn.net/longzs/article/details/10959945)1.apache支持静态页,tomcat支持动态的,比如servlet等,一般使用apache+tomcat的话,apache只是作为一个转发,对jsp... 阅读全文
posted @ 2014-10-08 22:49 huliangbin 阅读(2847) 评论(0) 推荐(1) 编辑
摘要: 有时查看日志,常常会发现由框架底层打印的错误日志。要修改这个错误的时候,如果不是对框架特别熟悉,就需要按照可能产生这个错误日志的流程一步一步找,一时半会不一定能找到。比如本人最近对smartfoxserver搭建的服务器做压测的时候,发现最大等待线程数超过20就会打印错误日志,然后就一直在smart... 阅读全文
posted @ 2014-08-12 00:30 huliangbin 阅读(5214) 评论(0) 推荐(0) 编辑
摘要: 今天遇到一个bug,简单的说就是把自定义对象作为key 存到HashMap中之后,经过一系列操作(没有remove操作)之后 用该对象到map中取,返回null。然后查看了HashMap的源代码,get方法的核心代码如下: 1 final Entry getEntry(Object key)... 阅读全文
posted @ 2014-05-18 23:12 huliangbin 阅读(1518) 评论(0) 推荐(0) 编辑
摘要: 基数排序 就是先比较数组中元素的个位数,排序得到新的数组,然后比较新的数组中的十位数,排序得到新数组,然后再对最新得到的数组比较百位数.......依次循环比如{82 ,31 ,29 ,71, 72, 42, 64, 5,110} 比较个位数 排序 得到新数列{110,31,71,82,72,42,64,5,29} 然后对新数列比较十位数{110,29,31,42,64,71,72,82} 然后比较百位数,没有百位数的算作0,所以得到{29,31,42,64,71,72,82,110}代码如下://基数排序 arrays是需要排序的数组 List list = new Arra... 阅读全文
posted @ 2014-03-13 23:36 huliangbin 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 堆排序就是用大根堆或者小根堆的节点都比左孩子 右孩子大(小)的特性 来构建有序序列。名词解释:大根堆:所有节点(n)都比他的左孩子(2n+1)与右孩子(2n+2)大的完全二叉树。小根堆:所有节点(n)都比他的左孩子(2n+1)与右孩子(2n+2)小的完全二叉树。完全二叉树:深度为n的完全二叉树,在1到n-1层数上 节点的个数符合2^(n-1)。最后一程的节点,倒数第二层的节点,如果有有右孩子,则必有左孩子,如果下一个节点有孩子,则前一个节点必然有孩子。堆排序首先建立一个大根堆(小根堆),然后根节点(root)的数与最后一个数(last)互换,现在本来在last的位置的数 跑到了根节点,本来在根 阅读全文
posted @ 2014-03-13 21:56 huliangbin 阅读(1319) 评论(0) 推荐(0) 编辑
摘要: 直接选择排序的逻辑非常简单,数组{A1.......An} 先在{A1........An}去获取最小的 与A1交换位置 然后在{A2..........An}中取出最小的 与A2交换位置.....一直到An代码如下 //选择排序 for(int num = 0; num<arrays.length-1; num++){ int index = num; for(int num1 = num;num1<arrays.length;num1++){ if(arrays[num1] < arra... 阅读全文
posted @ 2014-03-13 19:43 huliangbin 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 期望时间复杂度o(nlogn) 最坏情况时间复杂度o(n^2);无序数组{A1.........An} 先取一个基数K=A1,设置从后往前遍历的索引j(初始值为arrays.length-1),从前往后遍历的索引i(初始值为0)。从后往前遍历时(j--),找到第一个小于K的数,交换两个数的位置,记录index,然后从前往后遍历,找到第一个大于K的数,于索引index的数(K)交换位置,刷新index。然后从上次后往前停留的索引出开始往前找小于K的数........ 总的来说就是 重复从后往前找更小的交换位置 从前往后找更大的交换位置 直到i=j跳出循环以上是一趟排序过程 结果就是K左边的数都. 阅读全文
posted @ 2014-03-13 19:05 huliangbin 阅读(326) 评论(0) 推荐(0) 编辑