java程序员修炼之道02--NIO

第二章:新I/O
1.他完全取代了java.io.File与文件系统的交互
2.塔提供了新的异步处理类,让你无需手动配置线程池和其他底层并发控制,便可在后台线程中执行文件和网络I/O操作

NIO2将位置(Path)的概念和物理文件系统的处理(文件复制)分得很清楚,物理文件系统的处理通常由Files辅助类实现
2.2.1创建一个Path
3.塔引入新的NetWork-Channel构造方法,简化了Socket与通道编码的工作
Path listing=Paths.get("/usr/bin/zip");
以下效果一样:Path listing=FileSystems.getDefault().getPath("/usr/bin/zip");
提示:创建Path时可以使用相对路径。必要可以用Path.toAbsolutePath()转换成绝对路径
2.2.3移除冗余项Path.normalize()去除文件虚拟路径得到实际文件所在路径
    toRealPath()综合roAbsolutePath()和normalize()的功能
2.2.4转换Path:Path.resole("");和Path.relativize(Path);
2.2.5NIO2中的Path和Java已有的File类
java.io.File.toPath()和Path.toFile()
2.3处理目录和目录树
目录处理:java.nio.file.DirectorySystem<T>
    1.循环遍历,目录及子目录
    2.用glob表达式进行目录子项匹配和基于MIME的内容检测
    3.walkFileTree()实现递归移动、复制和删除
    4.FileVisitor--SimpleFileVisitor--FindJavaVisitor类过滤文件
注:为了确保递归操作的安全性,walkFileTree()不会自动跟随符号连接(如快捷方式),因此如果有序求需要自行再处理
2.4NIO2的文件系统I/O
Files进行文件I/O操作
WatchService监视文件的变化
FileAttribute文件属性处理
创建文件:Path f=Files.createFile(Path);
SeekableByteChannel实现异步I/O
java.util.current.Future接口,类似于jquery的AJax回调函数
2.6.1 NetworkChannel
2.6.2 MulticastChannel 组播(p2p)
第二部分:关键技术,66页
第三章:依赖注入,各个DI厂商自定义不同的依赖注入组件,造成框架耦合,官方:Inject
第四章:现代并发,88页
    1.推荐书书籍:Doug Lea《Java并发编程(1999第二版)》、Brian Goetz《java并发编程实战(2006)》
java线程模型:
    共享,默认可见的可变状态
    抢占式线程调度
翻译:    所有线程可以很容易地共享同一进程中的对象
    能够引用这些对象的任何线程都可以修改这些对象
    线程调度程序差不多任何时候都能在核心上调入或调出线程
    必须能调出运行时的方法,否则无限循环的方法会一直占有CPU
    为了保护脆弱的数据,对象可以被锁住
多线程设计理念:并发安全性、活跃度、性能、重用性
常见对策:尽可能限制子系统之间的通信。隐藏数据对安全性非常有帮组
    尽可能保证子系统内部结构的确定性。
    采用客户端应用必须遵守的策略方针
    在文档中记录所有求的方法
系统开销之源:锁与监测、环境的切换次数、线程的个数、调度、内存的局限性、算法设计《算法导论》《算法设计手册》
java.util.current.*;
java.util.current.Lock;(Atomic)
java.util.current.HashCurrentMap;
java.util.current.CopyOnWriteArrayList;
java.util.Queue;--BlockQueue
Callable,Future,FutureTask
ScheduledThreadPoolExecutor
分支合并框架ForkJoinTask
第五章,127页,类文件与字节码
1.类是JVM平台能加载的最小程序代码单元
1.类加载:从文件系统中读取出字节数组,产生对应的Class对象
2.链接:类加载后进行验证,准备(静态变量),解析(相关类)
3.反射:JDK7中的java.lang.invoke
MethodHandle、methodType
4.javap JVM反编译java
javap -p 输出包括private修饰的字段和方法
javap -v 输出常量池的内容
5.invokedynamic
第六章,154页,理解性能调优
1.性能术语:等待时间、吞吐量、利用率、效率、容量、扩展性、退化
2.优化之前
jamp查看JVM情况
VisualVM--JVM GUI 内存查看器
第七章,190页,备选JVM语言


你可能感兴趣的:(java程序员修炼之道02--NIO)