这两天遇到代码中出现的两次多线程问题 这两天在做两个非常小的项目,就是对现有的代码改改异常处理方式或者显示内容神马的。在修改的过程中,发现了两个线程安全的问题。把这个记下来,算作是对大家工作的提示吧。 1. 使用static HashMap的问题代码非常简单,类似是这样子的: @Controllerpublic class MyController { private static HashMap<S...
打印一个数的加法组合 下面的代码用于打印加法的组合。在打印时使用递归。思路来自于打印一个集合的所有子集;不过对于集合的所有子集,没有重复的情况。在打印加法组合的时候,因为有重复的情况的。这里处理重复是通过判断是否递减序列来实现的。即只保留有序序列即可实现。 递归结束后需要恢复现场 /** * 打印加法组合 * 例如5可以输出: * 5 4 1 3 2 3 1 1 ...
Java hashMap的 Hash函数 在教科书提到的Hash函数就是求模了。Java的hash函数是怎样的呢?先看代码: /** * Applies a supplemental hash function to a given hashCode, which * defends against poor quality hash functions. This is critical ...
Java Arrays合并排序算法的实现 下面再来看看Arrays里面的合并排序算法实现。先把完整的源代码贴过来看看 public static void sort(Object[] a, int fromIndex, int toIndex) { rangeCheck(a.length, fromIndex, toIndex); Object[] aux = copyOfRange(a, fromIn...
Java Arrays 快速排序算法的实现 我们知道Java在排序上分别使用了快速排序和合并排序。下面我们就研究一下这两种排序。本节先分析快速排序,我们以Int数组的排序为例。 Java的排序算法是这样子的:方法声明如下:sort1(int x[], int off, int len) 对于数组个数小于7的情况下,使用插入排序:if(len < 7) { for (int i=off; ...
Java Arrays和Collections类的排序算法 在Java的Arrays和Collections类里,分别提供了对数组和List的排序算法。不过今天在看Arrays排序算法时,发现对float/long/int/char等进行排序时,使用的算法是快速排序;而对于Object数组排序则是使用的是合并排序(改进后的)。想了一下,原因很容易理解。快速排序是不稳定的算法,这意味着对于相同的元素经过排序后会出现位置调换的情况。而对于基本类型的数组,这...
Mysql的with rollup功能(5.1以上版本) RollUp是上卷功能,类似于数据挖掘中的上卷操作。ROLLUp的功能和Order by功能是互斥的。mysql> SELECT year,SUM(profit) FROM sales GROUP BY year;+------+-------------+| year | SUM(profit) |+------+-------------+...
关于编码的若干最佳实践 昨天XX面试时,一道这样的问题难住了我,就是:在这么多年的编码中,说说自己的最佳实践。当时懵掉了,虽然看过很多敏捷开发、代码清洁之道、代码大全这些关于最佳实践的书,但却一条也说不出来。趁现在有时间,想想这个问题,总结一下自己的代码最佳实践。 一致的代码格式。形成自己的工具类。开发时,为了减少代码量,多使用第三方的类库,如Apache Commons等,里面提供了简化操作的类。...
Http协议报文在TCP协议上的传输 Http 1.1协议文档上规定:HTTP协议的实现应支持持久性连接。与每个请求对应一个TCP连接相比,使用持久性连接能大大减轻网络负载。在一个TCP连接上,客户端能够发送多个请求,从而降低TCP连接带来的消耗。HTTP的请求和响应可以使用管道式的方式在TCP连接上进行。Http协议允许在没有接收到上一个请求的响应时继续发送请求,只是服务器端要以客户端发送请求的顺序进行回应。持...
解决zookeeper linux下无法启动的问题 在linux下安装zookeeper时,出现了如下的错误: [hadoop@hadoop-master bin]$ ./zkServer.sh startJMX disabled by user requestUsing config: /opt/zookeeper-3.3.3/bin/../conf/zoo.cfgStarting zookeeper ... STA...
eclipse下编译hadoop源代码 hadoop是一个分布式存储和分布式计算的框架。在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译、打包。下面将详细描述如何从svn上导入并对hadoop进行eclipse下编译。 因项目使用的hadoop版本是0.20.2,所以我们基于hadoop-0.20.2来进行二次开发。 (1)首先从svn上签出...
Hadoop MapReduce程序编写备忘 最近在编写Hadoop 的MapReduce程序的时侯,学到了不少东西,记下来备忘:1. Mapper和Reducer的上下文执行环境信息: 在编写Mapper类时,一般使用如下的类继承声明: public class DistinctProcessor extends MapReduceBase implements Mapper<Text,Text,Text,Tex...
[编程实现单链表逆转][java代码] 代码如下,核心的代码在于: public static Node reverse(Node head) { if(head==null) { return null; } Node p = head; Node q = head.next; p.next=null; //这个必须的~~~,否则链表就成有环的了。 while(q!=null) ...
自定义的RPC的Java实现 在看hadoop的源代码的时候,看到hadoop实现了一个自定义的RPC,于是有了自己写代码实现RPC的想法。RPC的全名Remote Process Call,即远程过程调用。使用RPC,可以像使用本地的程序一样使用远程服务器上的程序。下面是一个简单的RPC 调用实例,从中可以看到RPC如何使用以及好处: public class MainClient { public stat...
StringBuffer vs StringBuilder、HashTable vs HashMap、Vector vs ArrayList 在Java的面试题中很有可能问到的问题是StringBuffer和StringBuilder、HashTable和HashMap、Vector和ArrayList的区别。的确,每对类提供的操作基本上一样的。但他们确实有区别。 StringBuffervs StringBuilder StringBuffer 是在JDK1.0中提供的,而StringBuilder...
[求最长公共子串(Longest Common Subsequence, LCS)][解题方法] 问题如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。 注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。 请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。 例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子...
[字符串原地压缩][代码实现] 题目字符串原地压缩。题目描述:“eeeeeaaaff"压缩为 "e5a3f2",请编程实现。 思想 首先想到最简单的方法是创建一个数组,一次遍历就可以将原字符串压缩。时间复杂度O(N),空间复杂度O(N)。但这种方法不符合题意,题目要求原地压缩。那么空间复杂度应该是O(1)。 如果使用原地压缩,最麻烦的就是移动数据。如果不用移动数据,就能达到时间复杂度O(N)...
[字符串原地压缩][代码实现] 题目字符串原地压缩。题目描述:“eeeeeaaaff"压缩为 "e5a3f2",请编程实现。 思想 首先想到最简单的方法是创建一个数组,一次遍历就可以将原字符串压缩。时间复杂度O(N),空间复杂度O(N)。但这种方法不符合题意,题目要求原地压缩。那么空间复杂度应该是O(1)。 如果使用原地压缩,最麻烦的就是移动数据。如果不用移动数据,就能达到时间复杂度O(N)...
[输入一个字符串,输出该字符串中对称的子字符串的最大长度][解题方法] 题目 输入一个字符串,输出该字符串中对称的子字符串的最大长度。 比如输入字符串"google",由于该字符串里最长的对称子字符串是"goog",因此输出4。 思想 首先想到的是采用穷举的方法来分析该问题. 即从最大的对称串开始判断,如果不是,减小一,再找存在不存在对应长度的字符串,依次直到找到对称串长度,返回。 上述方法...
hive的count(*) 和 count(expr) 今天在使用hive 进行数据统计时,发现了一个问题使用类似如下的两个sql统计出的结果不一致: select count(*) from tbl_simpledata where column = '-1';select count(column) from tbl_simpledata where column = '-1'; 查询hive的参考文档发现如下的信息:...