分类 默认分类 下的文章

RXJava 1.* 中的 flatmap 操作符例子

例子:

Integer[] values = {1, 2, 3, 4, 5}; 
List<Integer> list = Arrays.asList(values); 

Observable.from(list).flatMap(new Func1<Integer, Observable<Integer>>(){
    @Override
    public Observable<Integer> call(Integer t) {
        Integer[] nums = {t, t + t, t * t};
        return Observable.from(nums);
    }
    
}).subscribe((i) -> {System.out.println("what I get is: " + i);});

与map 操作符的主要区别是: map 只是输入一个event,返回另外一个event,flatmap 输入一个event,先返回一个Observable,然后这些返回的Observables 在merge到一个Observable 里面去

函数式编程与命令式编程的区别 Functional, Imperative Programming

关于 函数式 和 命令式 还是下面这三篇讲的比较好:
http://www.cnblogs.com/lisperl/archive/2011/11/21/2257360.html
http://www.cnblogs.com/lisperl/archive/2011/11/22/2258995.html
http://www.cnblogs.com/lisperl/archive/2011/11/23/2259363.html

个人理解:

现在的大部分语言都是对汇编的封装, 汇编是基于内存,CPU这种物理结构来解决问题的,所以它在运算时,有自己的内部状态,通过一步步的算法修改内部状态,最终得出结果。函数式是基于数学函数的,它对于给定的输入参数,经过函数运算得出输出,它通过函数对函数的调用,最终得到结果。函数式是声明式的一种。

命令式:

int a = 0;
b = a * a + 3;
System.out.println(b);

函数式:

add: (a, b)->{return a + b;};
power: (a)->{return a * a};
println(add(power(a), 3));

windows 远程执行命令 安装软件

最近要对几百台windows批量安装软件, 其中少部分是古老的 windows Server 2003, 另外一部分这是 windows server 2008.
最初的想法是使用 chef 或者 puppet 管理来安装, 由于时间比较紧张, 最后采用 PsPools 的远程执行命令来完成, 远程命令使用 windows batch, 这样就不用安装任何脚本软件, 并且同时适合 Windows Server 2003 & 2008.

windows 远程执行

使用 PsTools 工具集中的 PsExec.exe 非常方便

window batch 命令

cd %USERPROFILE% ##进入用户主目录
echo Start installation git now > installGit.log ##写入日志
IF EXIST "C:cygwinbingit.exe" echo exist ##判断文件是否存在
if not exist x: echo not exist ##判断x盘是不是存在
net use x: \abc.tianxiaohui.comc$ password /USER:corpadmin ##添加网络驱动盘x
takeown /f C:cygwin /r /d y ##把 cygwin 文件夹的ower 改成当前用户
icacls "C:cygwinusr" /t /grant Everyone:F ##每个用户都可以对这个文件夹有控制权限
rmdir C:cygwinusrman /S /Q ##删除文件夹
xcopy x:sharesetup-x86.exe /Y ##copy 文件