分类 默认分类 下的文章

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:\cygwin\bin\git.exe" echo exist ##判断文件是否存在
if not exist x:\ echo not exist ##判断x盘是不是存在
net use x: \abc.tianxiaohui.com\c$ password /USER:corp\admin ##添加网络驱动盘x
takeown /f C:\cygwin /r /d y ##把 cygwin 文件夹的ower 改成当前用户
icacls "C:\cygwin\usr" /t /grant Everyone:F ##每个用户都可以对这个文件夹有控制权限
rmdir C:\cygwin\usr\man /S /Q ##删除文件夹
xcopy x:\share\setup-x86.exe /Y ##copy 文件

Unicode 字符集 和 UTF 编码

  1. Unicode 是字符集, 类似ASCII 码有127字符, Unicode 已经包含17个planes, 每个plane包含65536个代码点(code point)
  2. UTF 是Unicode字符集的编码, 就是Unicode 字符集在磁盘的表示, 参考这篇很不错的文章 十分钟搞清字符集和字符编码
  3. Windows 和 Java 默认使用 UTF-16, Web 默认使用 UTF-8
  4. UTF-8 兼容ASCII
  5. 非英文域名 即 IDNs 要使用 Punycode 去转. 尽管你的URL的域名部分是 新华网.中国 或 %E6%96%B0%E5%8D%8E%E7%BD%91.%E4%B8%AD%E5%9B%BD (encodeURI("新华网.中国")的结果) 在去到DNS 解析的时候, 都是翻译为 Punycode 去做DNS 查询的
  6. Unicode 要区分 字符, codepoint, UTF 编码后的值 如 : 田 的codepoint 是30000 (0x7530), UTF-8 编码后是: E794B0 (使用 encodeURI("田") 得到)