IO笔记

1. File代表与平台无关的文件和目录,新建、删除、重命名文件和目录。

2. 输入流:InputStream,Reader;输出流:OutputStream,Writer

3. 字节流,字符流;节点流,处理流。装饰器模式。

4. 处理流封装节点流,屏蔽底层设备节点流的差异,提供更加方便的输入输出方法。

    节点流:构造器参数是物理IO节点

    处理流:构造器参数是已存在的节点流

5. 输出文本内容,使用PrintStream包装输出节点流。只关闭处理流即可,系统会自动关闭被包装的节点流。

    读取文本内容,使用BufferedReader包装输入节点流。例:BufferedReader(new InputStreamReader(System.in))

6. 输入/输出的内容是文本,考虑使用字符流;输入/输出内容是二进制内容,考虑使用字节流。

7. 两个转换流:InputStreamReader,OutputStreamWriter。字节流转成字符流

8. System.setErr(),重定向标准错误输出。

    System.setIn(),重定向标准输入。

    System.setOut(),重定向标准输出。

9. RandomAccessFile,文件内容访问类,可以任意访问文件内容。

10. 对象序列号机制允许把内存中的java对象转换成平台无关的二进制流,可以在网络或磁盘上传输。

11. 目标类实现Serializable接口,方可序列化。

12. 序列化的步骤:

      1. 创建一个ObjectOutputStream

      2. 调用ObjectOutputStream对象的writeObject()方法

13. 反序列化的步骤:

     1. 创建一个ObjectInputStream

     2. 调用ObjectInputStream的readObject()方法

14. 反序列化无须通过构造器初始化对象。

15. 如果一个可序列化类有多个父类,则该类的所有父类要么是可序列化的,要么有无参数的构造器。

16. 含有引用类型的类,引用类型是可序列化的,类才可以序列化。

17. 同一个对象,只被序列化一次,后续序列化,只使用序列化编号。如果多次序列同一个java对象,只有第一次序列化才会把对象转换成字节流并输出。

18. 通过在属性前面加上transient关键字,可以指定java序列化时无须理会该属性。transient只能用来修饰属性,不能修饰其他。

19. 自定义序列化的几个方法,写在被序列化的类中。系统在序列化某个对象之前,会先调用writeRelpace和writeObject方法。反序列化时,调用readObject和readResolve

      1. writeReplace();

      2.  writeObject();

      3. readObjectNoData();

      4. readObject();

      5. readResolve();

20. 早期的单例类和枚举类在反序列化后,会生成新的对象,为保证和序列化前的对象一致,需要提供readResolve方法。

21. 序列化版本兼容问题,使用序列化ID。新类修改方法和静态属性,不影响反序列化,不用修改序列化serialVersionUID。如果修改非静态属性,同名,不同类型,反序列化         失败,需跟新serivalVersionUID。新类比序列化对象流中的属性 多,或者少 都可以正常反序列化,无须更新serivalVersionUID。

22. java 新io采用内存映射文件的方式来处理输入输出,新IO把文件或文件的一段映射到内存中,比传统的输入输出快很多。

23. Channel和Buffer是新IO中两个核心类。新IO系统中,所有数据都要经过Channel,传统的面向流处理,新IO面向块处理。Buffer可以理解成一个容器,发送到Channel中数        据和从Channel中读取的数据都要先放到Buffer中。还有字符串映射到Charset类,以及非阻塞式输入输出的Selector类。

24. Buffer是抽象类,其子类有XXXBuffer。其中ByteBuffer和CharBuffer最常用。Buffer中常用的三个重要概念:

      容量:capacity

      界限:limit

      位置:position

     三者关系:0 <= position <= limit <= capacity

25. Buffer中包含两个重要方法:flip和clear,flip为从Buffer中取出数据做好准备,clear则向Buffer中装入数据做好准备。clear不清空buffer中的数据。

26. Buffer还包含put和get方法,用于向Buffer中放入数据和取出数据。

27. Channel可以直接将文件的部分或全部映射成Buffer,Channel只能和Buffer交互。Channel通过传统节点流InputStream,OutputStream的getChannel获得。

28. Channel中最常用的三类方法是:map,read和write;map用于将Channel对应的部分或全部数据映射到ByteBuffer;read和write用于从Buffer中读数据或写数据。

29. 把明文的字符序列转换成计算机理解的字节序列(二进制文件),称为编码;把字节序列转化成普通人能看懂的明文字符串,称为解码。

30. Charset.availableCharsets()可以取代所支持的字符集。

       Charset csCn = Charset.forName("GBK");

       csCn.new Encoder().encode() / new Decoder().decode();

       Charset自身也含有decode和encode方法,进行编码和解码。

31. String的getBytes方法,就是使用特定字符集将字符串转成字节序列。

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值