`
jbm3072
  • 浏览: 209094 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
这两天在做两个非常小的项目,就是对现有的代码改改异常处理方式或者显示内容神马的。在修改的过程中,发现了两个线程安全的问题。把这个记下来,算作是对大家工作的提示吧。  1. 使用static HashMap的问题 代码非常简单 ...
下面的代码用于打印加法的组合。在打印时使用递归。思路来自于打印一个集合的所有子集;不过对于集合的所有子集,没有重复的情况。在打印加法组合的时候,因为有重复的情况的。这里处理重复是通过判断是否递减序列来实现的。即只保留有序序列即可实现。   递归结束后需要恢复现场   /**  * 打印加法组合  * 例如5可以输出:  *  5  4 1  3 2  3 1 1  2 2 1  2 1 1 1  1 1 1 1 1   * 下面的代码使用了递归!  * 在去重上,采用的是判断数组的顺序是不是按照降序排列的,如果是的话,则是符合条件的。否则不符合条件 ...
在教科书提到的Hash函数就是求模了。Java的hash函数是怎样的呢?先看代码: /** * Applies a supplemental hash function to a given hashCode, which * defends against poor quality hash functions. This is critical * because HashMap uses power-of-two length hash tables, that * otherwise encounter collisions f ...
下面再来看看Arrays里面的合并排序算法实现。先把完整的源代码贴过来看看     public static void sort(Object[] a, int fromIndex, int toIndex) { rangeCheck(a.length, fromIndex, toIndex); Object[] aux = copyOfRange(a, fromIndex, toIndex); mergeSort(aux, a, fromIndex, toIndex, -fromIndex); }   private static ...
我们知道Java在排序上分别使用了快速排序和合并排序。下面我们就研究一下这两种排序。 本节先分析快速排序,我们以Int数组的排序为例。   Java的排序算法是这样子的: 方法声明如下: sort1(int x[], int off, int len) 对于数组个数小于7的情况下,使用插入排序: if (len < 7) {     for (int i=off; i<len+off; i++) for (int j=i; j>off && x[j-1]>x[j]; j--) //    
在Java的Arrays和Collections类里,分别提供了对数组和List的排序算法。不过今天在看Arrays排序算法时,发现对float/long/int/char等进行排序时,使用的算法是快速排序;而对于Object数组排序则是使用的是合并排序(改进后的)。 想了一下,原因很容易理解。快速排序是不稳定的算法,这意味着对于相同的元素经过排序后会出现位置调换的情况。而对于基本类型的数组,这个却无关紧要;而对于Object数组这个则很重要,因为大部分时间我们都需要一个稳定的算法,而合并排序恰好满足这一特性。所以对原始类型数组采用了快速排序,对于Object数组采用了合并排序。   而在 ...
RollUp是上卷功能,类似于数据挖掘中的上卷操作。 ROLLUp的功能和Order by功能是互斥的。 mysql> SELECT year, SUM(profit) FROM sales GROUP BY year; +------+-------------+ | year | SUM(profit) | +------+-------------+ | 2000 |        4525 | | 2001 |        3010 | +------+-------------+       mysql> SELECT ye ...
  昨天XX面试时,一道这样的问题难住了我,就是:在这么多年的编码中,说说自己的最佳实践。当时懵掉了,虽然看过很多敏捷开发、代码清洁之道、代码大全这些关于最佳实践的书,但却一条也说不出来。趁现在有时间,想 ...
Http 1.1协议文档上规定:HTTP协议的实现应支持持久性连接。与每个请求对应一个TCP连接相比,使用持久性连接能大大减轻网络负载。在一个TCP连接上,客户端能够发送多个请求,从而降低TCP连接带来的消耗。 HTTP的请求和响应可以使用管道式的方式在TCP连接上进行。Http协议允许在没有接收到上一个请求的响应时继续发送请求,只是服务器端要以客户端发送请求的顺序进行回应。
在linux下安装zookeeper时,出现了如下的错误:     [hadoop@hadoop-master bin]$ ./zkServer.sh start JMX disabled by user request Using config: /opt/zookeeper-3.3.3/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [hadoop@hadoop-master bin]$ 2011-07-05 10:33:57,587 - INFO [ma ...
  hadoop是一个分布式存储和分布式计算的框架。在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译、打包。 下面将详细描述如何从svn上导入并对hadoop进行eclipse下编译。   因项目使用的hadoop版本是0.20.2,所以我们基于hadoop-0.20.2来进行二次开发。   (1)首先从svn上签出源代码,svn地址:   http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.2/     (2)在下载的过程中,准 ...
最近在编写Hadoop 的MapReduce程序的时侯,学到了不少东西,记下来备忘: 1.  Mapper和Reducer的上下文执行环境信息:    在编写Mapper类时,一般使用如下的类继承声明:   public class DistinctProcessor extends MapReduceBase implements Mapper<T ...
代码如下,核心的代码在于: public static Node reverse(Node head) { if(head==null) { return null; } Node p = head; Node q = head.next; p.next=null; //这个必须的~~~,否则链表就成有环的了。 while(q!=null) { Node temp = q.next; q.next = p; p = q; q = temp; } return p; } ...
在看hadoop的源代码的时候,看到hadoop实现了一个自定义的RPC,于是有了自己写代码实现RPC的想法。 RPC的全名Remote Process Call,即远程过程调用。使用RPC,可以像使用本地的程序一样使用远程服务器上的程序。下面是一个简单的RPC 调用实例,从中可以看到RPC如何使用以及好处:   public class MainClient { public static void main(String[] args) { Echo echo = RPC.getProxy(Echo.class, "127.0.0.1", 20382); ...
在Java的面试题中很有可能问到的问题是StringBuffer和StringBuilder、HashTable和HashMap、Vector和ArrayList的区别。的确,每对类提供的操作基本上一样的。但他们确实有区别。   StringBuffer vs StringBuilder   StringBuffer 是在JDK1.0中提供的,而StringBuilder的出现是在JDK1.5版本上。在JDK 1.0的时代,那时候为了解决StringBuffer在多线程的混乱问题,StringBuffer大多数的方法都加上了synchronized方法。用天朝的话来说“ ...
Global site tag (gtag.js) - Google Analytics