- 浏览: 27103 次
- 性别:
- 来自: 北京
文章列表
又这么久... 太懒了... 放个很久以前写的HBase基本API的示例程序代码吧,涉及crud操作和几个简单的filter
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hb ...
基于前两篇的基础,在ubuntu下搭建hadoop环境及运行wordcount示例的过程比较顺利,现做一下简单记录。
环境:ubuntu10.04 hadoop0.20.2 jdk1.6.0_29
步骤如下:
1.安装JDK并配置环境变量
一些文章里说用sudo apt-get install sun-java6-jdk之类的命令,我对ubuntu比较小白,半天也没折腾出来,然后就直接去oralce的官网下了linux版本的jdk。
配置环境变量:
sudo gedit /etc/profile
在最后边追加:
#set java enviro ...
先说两点都知道的:
1.CountDownLatch减计数,CyclicBarrier加计数。
2.CountDownLatch是一次性的,CyclicBarrier可以重用。
然后我们用被大家说烂了的跑步的例子继续说事儿:
1. 有五个人,一个裁判。这五个人同时跑,裁判开始计时,五个人都到终点了,裁判喊停,然后统计这五个人从开始跑到最后一个撞线用了多长时间。
import java.util.concurrent.CountDownLatch;
public class Race {
public static void main(String[] args) {
...
转自:http://www.blogjava.net/zh-weir/archive/2011/02/23/345007.html
Java内存管理机制
在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。Java语言对内存管理做了自己的优化,这就是垃圾回收机制。Java的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由GC(garbage collection)负责自动回收不再使用的内存。
上 ...
标题起的又一次把自己恶心到了。。
算法实现完全来源于编程之美,最简单的DP思想的实践。
maxSubSum2方法中稍作修改,记录了下该子序列的下标。
/**
* 子数组之和的最大值:要求子数组的元素是连续的
*
* @author aaron-han
*
*/
public class MaxSubSum {
public static void main(String[] args) {
int[] arr = { 3, 5, -3, -2, 5, 8, 3, -2, 1 }; // 19
int maxSum = maxSubSum2( ...
不考虑带环的情况...
这里面其实包含了两个问题:判断链表相交和找两个相交链表的第一个公共点。
思路:首先需要理解的是若两个链表相交,则一定是呈Y型。所以我们分别遍历两个链表,找到最后一个节点,若它们相同,则一定相交。然后我们从后往前考虑,假设两个链表有n个公共节点,两个链表的长分别为l和m(设l>m),那么我们先让较长的链表遍历l-m个。两个链表剩余部分长度是相等的(m),则同步遍历比较,若相同,则输出。
import com.linkedlist.LinkedListReverse.Node;
/**
* 打印相交链表的公共节点
*
* @author aar ...
貌似各种笔试面试里这个挺爱考的,不清楚过程多画画图就明白了。
先写的单的,哪天把双链表逆置写一下。
public class LinkedListReverse {
/**
* 单链表逆置
*
* @author aaron-han
*
*/
public static void main(String[] args) {
Node a = new Node("NodeA");
Node b = new Node("NodeB");
Node c = new Node("Nod ...
博客标题起的真别扭。。
先说两点:
1.用cygwin伪分布式环境运行的。
2.hadoop开发者第一期里有个DFSOperator的示例,那个更简单,怎么打jar包,怎么运行之类的问题可以先参见一个那篇文章。
运行WordCount示例遇到了两个问题:
a. ***/work/tmp does not exist的问题
解决办法:配置conf/mapred-site.xml文件中mapred.child.tmp属性的值,如下:
<property>
<name>mapred.child.tmp</name>
...
先说明两点:
1.搭建的基本过程参见Hadoopor论坛的Hadoop开发者杂志第一期,很靠谱。
2.本文以下内容全部经过个人验证。
搭建环境过程中出现的问题:
a.安装cygwin时源URL的选择
参照Hadoop开发者论坛,如下:
但实际上该源并不能使用。
推荐:在URL里输入:http://mirrors.163.com/cygwin/,点击Add按钮,然后选中 http://mirrors.163.com/cygwin 进行安装。
b.JAVA_HOME问题
在hadoop-env.sh 中设定JDK 的安装目录,例如:
export JAVA_H ...
仅适用于规模N较小的情况。
大致思路:遍历一遍,不断更新max和secondMax。
需要注意两点:1.元素个数小于两个(这个有点打酱油。。) 2.所有元素值相同
代码如下:
import java.util.Arrays;
/**
* 寻找第二大的数:规模N较小的情况
*
* @author aaron-han
*
*/
public class FindSecondMax {
public static void main(String[] args) {
int[] arr = com.utils.Utils.randomIntArray ...
算法基础之寻找最大最小值
- 博客分类:
- Algorithm
分治思想求解N个数中的最大值max和最小值min:分别求出前后N/2个数中的max和min,然后取较大的max和较小的min。
比较次数:f(N) = 2*f(N/2) + 2 = ... = 1.5N - 2。
import java.util.Arrays;
/**
* 寻找最大最小值 【分治】
*
* @author aaron-han
*
*/
public class FindMaxMin {
public static void main(String[] args) {
int[] arr = com.utils.Utils.ra ...
算法一直是一块短板,今后会陆续写一些常用算法的实现,希望和大家一起探讨学习。
快速排序是排序算法中最经典的一个,原理就不再赘述了,直接上代码。欢迎大家拍砖指导。
import java.util.Arrays;
/**
* 快速排序
*
* @author aaron-han
*
*/
public class QuickSort {
public static void main(String[] args) {
int[] arr = com.utils.Utils.randomIntArray();
quickSort(arr ...