Mapreduce 排序

Submitted by Lizhe on Sat, 04/22/2017 - 12:17

 

一般情况下, Mapreduce会根据数据的key来进行一个排序,所以这里我们连reduce都省了,只需要对文件中的数据进行一个简单的map

这里例子很简单,我们使用两个文件内容分别是

再说闭包

Submitted by Lizhe on Wed, 04/19/2017 - 16:23

 

已经记不清是哪个本书的哪个作者说过, 如果你不能把一个问题给6岁的孩子讲明白,那么你自己其实也还是没有明白

闭包这个概念其实已经被提及很多年了,java8是否支持闭包当初在csdn上也争论了许久(结果它弄了一个Lambda)

即便是现在出去找工作也经常会被问到, 什么是闭包 ( 相信我,我做面试官的时候从来没问过这个问题 )

今天觉得有必要重新整理一下关于闭包的知识

1 作用域

2 作用域

3 作用域

重要的事情说三遍

这里我们还是先以javascript为例

对变量作用域的控制 是javascript语言 实现闭包的必要手段

所谓的闭包, 在javascript中就是在函数B中(作用域B), 能够访问到函数A(作用域A)的变量

强调一下javascript只有全局变量(不带var),和局部变量(带var)

假设我们有函数A和函数B

function A(){

var test = 1;

...

}

function B(){

...

}

java nio 异步通道

Submitted by Lizhe on Wed, 04/19/2017 - 08:55

 

传统的java代码当需要异步处理io时往往需要手写的多线程支持,nio包新增了3个异步通道

AsynchronousFileChannel 用于文件

AsynchronousSocketChannel 用于套接字,支持超时

AsynchronousServerSocketChannel 用于套接字接受服务端

当你希望由主线程发起io操作,并等待结果时,需要使用Future(对,就是current包下那个接口)来接收结果

相对应的它也提供一个回调的模式来处理结果

下面我尝试用AsynchronousFileChannel来读取一个文本文件的全部内容, 网上大部分的例子都是直接一次性将文件内容读入缓存

这里我们分几次读,因为实际生产环境中你很难碰到一个可以一次性读取的小文件还需要异步处理的

通常这种操作都是面向大文件

文件内容是 1234567890测试中文

package com.nio;

java nio 读写文件

Submitted by Lizhe on Wed, 04/19/2017 - 08:46

package com.nio;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class TestPath3 {

java nio 处理目录和目录树

Submitted by Lizhe on Wed, 04/19/2017 - 06:59

例子很简单,不过这里也有一个坑,就是path对应的系统文件也可能是不存在的,而且它的很多方法返回的都是Path类型

代码

        Path workspace = Paths.get("C:/DEV/workspace_study");
        Path p = workspace.resolve("Sample/src/com/nio/TestPath.java");
        System.out.println(p);

会给出

        C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java


写成Path p = workspace.resolve("Sample/src/com/nio/TestPath.java2");

同样会给出C:\DEV\workspace_study\Sample\src\com\nio\TestPath.java2,不过注意这个java2文件不是真实存在的

另外 p.getFileName() 则会返回一个Path对象,而不是String

java8 stream 并发

Submitted by Lizhe on Fri, 04/14/2017 - 07:02

 

先随便写个代码打印1o个随机数,顺便加上parallel

package com.stream;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;