欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

 分类:算法

在 Java 实现正确的双重检查锁(Double-Checked Locking)

在 Java 实现正确的双重检查锁(Double-Checked Locking)
双重检查锁定模式(也被称为"双重检查加锁优化","锁暗示"(Lock hint)) 是一种软件设计模式用来减少并发系统中竞争和同步的开销。双重检查锁定模式首先验证锁定条件(第一次检查),只有通过锁定条件验证才真正的进行加锁逻辑并再次验证条件(第二次检查)。该模式在某些语言在某些硬件平台的实现可能是不安全的。有

w397090770   4年前 (2020-06-19) 740℃ 0评论4喜欢

二叉树的前中后遍历

二叉树的前中后遍历
二叉树的前序遍历给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入: [code lang="bash"] 1 \ 2 / 3 [/code]输出: [1,2,3]示例 2:输入: [code lang="bash"] 1 /2[/code]输出: [1,2]递归首先我们需要了解什么是二叉树的前序遍历:按照访问根节点——左子树——右子树的方式遍历这棵树,而在

w397090770   6年前 (2018-05-02) 37℃ 0评论0喜欢

水塘抽样(Reservoir Sampling)问题

水塘抽样(Reservoir Sampling)问题
  在高德纳的计算机程序设计艺术中,有如下问题:可否在一未知大小的集合中,随机取出一元素?。或者是Google面试题: I have a linked list of numbers of length N. N is very large and I don’t know in advance the exact value of N. How can I most efficiently write a function that will return k completely random numbers from the list(中文简化的意思就是:在不知道文件总行

w397090770   9年前 (2015-11-09) 10141℃ 0评论16喜欢

Mahout项目已经实现的算法

Mahout项目已经实现的算法
  Mahout项目发展到了今天已经实现了许多的算法。下面列出Mahout项目主要的算法名称,供大家参考。一、协同过滤 Collaborative Filtering  1、基于用户的协同过滤 User-Based Collaborative Filtering  2、基于项目的协同过滤统 Item-Based Collaborative Filtering  3、交替最小二乘张量分解 Matrix Factorization with Alternating Least Squares  4、基

w397090770   10年前 (2014-09-23) 9472℃ 0评论17喜欢

Hadoop服务层授权控制

Hadoop服务层授权控制
  Hadoop在服务层进行了授权(Service Level Authorization)控制,这是一种机制可以保证客户和Hadoop特定的服务进行链接,比如说我们可以控制哪个用户/哪些组可以提交Mapreduce任务。所有的这些配置可以在$HADOOP_CONF_DIR/hadoop-policy.xml中进行配置。它是最基础的访问控制,优先于文件权限和mapred队列权限验证。可以看看下图[caption id="attach

w397090770   10年前 (2014-03-20) 8990℃ 0评论8喜欢

双重检查锁定及单例模式

双重检查锁定及单例模式
本文转载至 http://www.ibm.com/developerworks/cn/java/j-dcl.html  单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能

w397090770   11年前 (2013-10-18) 4605℃ 4评论6喜欢

几种常见的垃圾回收算法之引用计数算法

几种常见的垃圾回收算法之引用计数算法
  在C++中,对象所占的内存在程序结束运行之前一直被占用,需要我们明确释放;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。  垃圾收集意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它

w397090770   11年前 (2013-10-14) 7440℃ 2评论9喜欢

如何快速判断给定整数是4的N次幂

如何快速判断给定整数是4的N次幂
  在《如何快速判断正整数是2的N次幂》文章中我们谈到如何快速的判断给定的正整数是否为2的N次幂,今天来谈谈如何快速地判断一个给定的正整数是否为4的N次幂。将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0; 因此问题可以转化为判断1后面是否跟了

w397090770   11年前 (2013-09-30) 5017℃ 0评论5喜欢

比较安全的两整数平均值算法实现

比较安全的两整数平均值算法实现
  求两个整数的平均值这个问题相信大家都想过,大家肯定会很快的写出以下的算法:[code lang="JAVA"]public static int mean(int a, int b){ return (a + b) / 2;}或者public static int mean(int a, int b){ return (a + b) >> 1;}或者public static int mean(int a, int b){ return (a + b) >>> 1;}[/code]  不错,上面的函数是能够求出a和b的平

w397090770   11年前 (2013-09-18) 5499℃ 5评论3喜欢

如何快速判断正整数是2的N次幂

如何快速判断正整数是2的N次幂
  这个问题可能很多面试的人都遇到过,很多人可能想利用循环来判断,代码可能如下所示:[code lang="JAVA"] public static boolean isPowOfTwo(int n) { int temp = 0; for (int i = 1; ; i++) { temp = (int) Math.pow(2, i); if (temp >= n) break; } if (temp == n) return true; else return false; }[/code]

w397090770   11年前 (2013-09-17) 11493℃ 6评论14喜欢