jAVA EE NZ2001 java EE学习总结 第七周(包含思维导图) 主要内容I/O框架、网络编程、反射

第七周

Day31、Day32

I/O框架

  • 流的概念

    • 内存与存储设备之间传输数据的通道
  • 流的分类

    • 按方向【重点】

      • 输入流

        • 将存储设备中的内容读入到内存中
      • 输出流

        • 将,<内存>中的内容写入到<存储设备>中
    • 按单位

      • 字节流

        • 以字节为单位,可以读写所有数据
      • 字符流

        • 以字符为单位,只能读写文本数据
    • 按功能

      • 节点流

        • 具有实际传输数据的读写功能
      • 过滤流

        • 在节点流的基础之上增强功能
  • 字节流

    • 字节流的父类(抽象类)

      • InputStream 字节输入流

        • public int read(){}
        • public int read(byte [] b ){}
        • public int read(byte[] b ,int off,int len){}
      • OutputStream: 字节输出流

        • public void write(int n ){}
        • public void write(byte[] b){}
        • public void write(byte[] b ,int off ,int len){}
    • 字节节点流

      • FileOutputStream :

        • public void write(byte[] b);//一次写多个字节,将数组中所有字节,写入输出流
      • FileInputStream:

        • public int read)(byte[] b)//从流中读取多个字节,将读到内容存入b 数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
    • 字节过滤流

      • 缓冲流: BufferedOutputStream/BufferedInputStream

        • 提高IO效率,减少访问磁盘的次数
        • 数据存储在缓冲区中,flush 是将缓存区的内容写入文件中,也可以直接close
      • 对象流:ObjectOutputStream/ObjectInputStream

        • 增强了缓冲区功能

        • 增强了读写8种基本数据类型和字符串功能

        • 增强了读写对象的功能

          • readObject() 从流中读取一个对象
          • writeObject(Object obj) 向流中写入一个对象
        • 使用流传输对象的过程称为序列化、反序列化

    • 对象序列化

      • 序列化细节

        • 必须实现Serializable接口
        • 必须保证其所有属性均可序列化
        • transicent 修饰为临时属性,不参与序列化
        • 读取到文件尾部的标志: java.io.EOFException
  • (字符编码)编码方式

    • ISO-8859-1收录除了ASCII外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号
    • UTF-8 针对Unicode 的可变长长度字符编码
    • GB2312 简体中文
    • GBK 简体中文、补充
    • BIG5 台湾,繁体中文
    • 注意:当编码方式不一致时,会出现乱码
  • 字符流

    • 字符流的父类(抽象类):

      • Reader:字符输入流

        • public int read(){}
        • public int read(char[] c){}
        • public int read(char [] b, int off ,int len){}
      • Write:字符输出流

        • public void write(int n ){}
        • public void write(String str[]){}
        • public void write(char [] c){}
      • 字符节点流

        • FileWriter

          • public void write(String str ) // 一次写入多个字符,将b 数组中所有字符,写入输出流
        • FileReader

          • public int read(char [] c ) // 从流中读取多个字符,将读到内容存入c 数组,返回实际读到的字符数,如果达到文件的尾部,则返回-1
    • 字符过滤流

      • 缓冲流:BufferedWrite、BufferedReader

        • 支持输入换行符
        • 可一次写一行,读一行
      • printWriter

        • 封装了print() 、println () 方法,支持写入后换行
    • 字符节点流

      • 桥转换流:InputStreamReader/OutputStreamWriter

        • 可将字节转换为字符流
        • 可设置字符的编码方式
      • 使用步骤

        • 创建节点流
        • 创建过滤流,设置字符编码集
        • 封装过滤流
        • 读写数据
        • 关闭流
  • File类

    • 概念:代表物理盘符中的一个文件或者文件夹

    • 方法

      • createNewFile() // 创建一个新文件
      • Mkdir ()//创建一个新目录
      • Delete()//删除文件或新目录
      • Exists()//判断File对象所对象所代表的是否存在
      • getAbsolutePath()// 获取文件的绝对路径
      • getName() //取得名字
      • getParent() //获取文件/目录所在的目录
      • isDirectory() // 是否是目录
      • isFile() // 是否是文件
      • length() //获得文件的长度
      • ListFiles()// 列出目录中的所有内容
      • renameTo()//修改文件名为

Day33-34

网络编程

  • 什么是网络

    • 由点和线构成,表示诸多对象间的相互联系
  • 计算机网络

    • 为实现资源共享和信息传递,。通过通信线路连接起来的若干主机(Host)
    • 互联网:点与点相连
    • 万维网:端与端相连
    • 物联网:物与物相连
    • 网路编程:让计算机与计算机之间建立连接、进行通信
  • 网络模型

    • 第一层:物理层设备之间的数据通信提供传输信号和物理介质。(双绞线、光纤纤维)
    • 第二层:链路层在物理层上,通过规程或协议(差错控制)来控制传输数据的正确性。(MAC)
    • 第三层:网络层负责定义了能够标识所有网络节点的逻辑地址(IP地址)
    • 第四层:传输层负责是否选择差错恢复协议、数据流重组、错误顺序重排。(TCP、UDP)
    • 第五层:会话层负责应用建立和维持会话,使通信在失效时继承恢复通信。(断点续传)
    • 第六层:表示层负责定义转换数据格式及加密,允许选择以二进制或ASCII格式传输
    • 第七层:应用层负责文件访问和管理、可靠运输服务、远程操作服务。(HTPP、FTP、SMTP)
  • 通信协议

    • TCP/IP 模型

      • 一组用于实现网络互连的通信协议,将协议分成四个层次

      • 分四层

        • 应用层

          • 对应OSI参考模型的应用层、表示层、会话层

            • 第四层:应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等
        • 传输层

          • 对应OSI参考模型的传输层

            • 第三层:传输层负责传送文本数据,主要协议是TCP、UDP协议
        • 网络层

          • 对应OSI参考模型的网络层

            • 第二层:网络层负责分配地址和传送二进制数据,主要协议是IP协议
        • 网络接口层

          • 对应OSI参考模型的数据链路层和物理层

            • 第一层:接口层负责建立电路连接。是整个网络的物理基础,典型的协议包括以太网、ADSL等等
      • TCP协议: 传输控制协议

        • 是一种面向连接的、可靠性的、基于字节流的传输层通信协议。数据大小无限制。建立连接的过程需要三次握手,断开连接的过程需要四次握手
      • UDP协议:用户数据报协议

        • 是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,每个包的大小64KB
    • IP

      • IP协议: Internet Protocol Address 互联网协议地址/网际协议地址

        • 分配给互联网设备的数字标签(唯一标识)
      • IP地址分为两种

        • IPV4 :4字节32位整数,并分成4段8位的二进制数,每8位之间用圆点隔开,每8位整数可以转换为一个0^255的十进制整数 格式:D.D.D.D 例如 255.255.255.255
        • IPV6 :16字节128位整数,并分成8段十六进制数,每16位之间用圆点隔开。每16位整数可以转换为一个0^65535 的十进制数 格式: X. X.X .X.X.X.X.X 例如FFFF.FFFF.FFFF.FFFF.FFFF.FFFF.FFFF.FFFF
      • IPV4 的应用分类

        • A类:政府机构,1.0.0.1^126.255.255.254
        • B 类:中型企业,128.0.0.1^191.255.255.254
        • C 类:个人用户,192.0.0.1^223.255.255.254
        • D 类:用于组播,224.0.0.1^239.255.255.254
        • E 类:用于实验,244.0.0.1^255.255.255.254
        • 回环地址:127.0.0.1, 指本机,一般用于测试使用
        • 查看IP命令:IPconfig
        • 测试IP命令:ping D.D.D.D
    • Port

      • 端口号:在通信实体上进行网络通讯的程序的唯一标识

      • 端口分类

        • 公认端口: 0^1023
        • 注册端口:1024^49151
        • 动态或私有端口:49152^65535
      • 常用端口

        • MySQL:3306
        • Oracle:1521
        • Tomcat:8080
        • SMTP:25
        • web 服务器:80
        • FTP服务器:21
    • InetAddress类

      • 概念:表示互联网协议(IP)地址对象,封装了该IP相关的所有信息,并提供获取信息的常用方法

      • 方法:

        • public static InetAddress getLocalHost() 获取本地主机地址对象
        • public static InetAddress getByName(String host) 根据主机名称获得地址对象
        • public static InetAddress [] getALLName(String host ) 获得所有相关地址对象
        • public String getHostAddress() 获取IP地址字符串
        • public String getHostName() 获取IP地址主机名
  • 网络编程

    • 基于TCP的网络编程

      • Socket 编程:

        • Socket(套接字)是网络中的一个通信节点
        • 分为客户端Socket 与服务器ServerSocket
        • 通信要求:IP地址+端口号
    • 开发步骤

      • 建立通信连接(会话)

        • 创建ServerSocket,指定端口号
        • 调用accept 等待客户端接入
      • 客户端请求服务器

        • 创建Socket,指定服务器IP+ 端口号
        • 使用输出流,发送请求数据给服务器
        • 使用输入流,接收响应数据到客户端(等待)
      • 服务器响应客户端

        • 使用输入流,接收请求数据到服务器(等待)
        • 使用输出流,发送响应数据给客户端
    • 课堂案例

      • 使用S coket编程实现服务器端注册

        • 注册信息保存在properies 文件中
        • 封装格式
        • Id= {id :“1001”,name :}
        • 注册成功后返回字符串“注册成功”
      • 使用Scoket编程实现服务器端登录

        • 获取properties 文件中的用户信息,进行用户名与密码的校验
        • 校验成功后返回字符串“登录成功”

总结

  • 计算机网络:为实现资源共享和信息传递,通过该通信线路连接起来的若干主机
  • TCP协议:是一种面向连接的,可靠的,基于字节流的传输层通信协议。数据大小无限制
  • IP:分配给互联网设备的数字标签(唯一标识)
  • Port:在通信实体上进行网络通讯的程序的唯一标识
  • Scoket 编程:建立连接、接收请求、发送响应

Day35

反射

  • 什么是类对象

    • 类的对象:基于某个类new 出来的对象,也称为实例对象
    • 类对象:类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法)
  • 获取类对象

    • 通过类的对象。获取类对象

      • Student s = new Student(); Class c = s.getClass()
    • 通过类名获取类对象

      • Class c = 类名.class;
    • 通过静态方法获取类对象

      • Class c = Class.forName(“包名.类名”);
  • 常见操作

    • 常用方法

      • public Sring getName()
      • public Package getPackage()
      • public ClassgetSuperclass()
      • public Class[] getInterfaces()
      • public Field[] getFields()
      • public Method[] getMethods()
      • public Constructor[] getConstructors()
      • public T newInstance()
  • 设计模式介绍

    • 工厂设计模式

      • 开发中有一个非常重要的原则“开闭原则”。对拓展开放、对修改关闭
      • 工厂模式主要负责对象创建的问题
      • 可通过反射进行工厂模式的设计,完成动态的对象创建
  • 单例设计模式

    • 单例模式

      • 单例:只允许创建一个该类的对象

      • 方式1:饿汉式(类加载时创建,天生线程安全)

        class Singletion {

        private static final Singleton instance = new Singleton();
        private Singletonb() {}
        public static Singleton getInstance(){}
        return instance;

        }

      • 方式2“懒汉式(使用时创建,线程不安全,加同步)

        class Singleton {
        private static Singleton intance = null ;

        private Sington(){}
        public static synchronized Singleton getInstance(){
        if(instance == null){
        instance = new Singleton();

        }
        return instance;

        }
        }

      • 方式3:懒汉式(使用时创建,线程安全)

        class Singleton{
        private Singleton(){}

        private static class Holer{
        static Singleton s = new Singleton();
        }
        public static Singleton instance(){

        retuen Holder.s;
        }

        }

  • 总结

    • 类对象

      • Class对象,封装了一个类的所有信息;程序运行中,可通过class 对象获取类的信息
    • 获取类对象的三种方式

      • Class c = 对象。getClass()
      • Class c = 类名.class;
      • class c = Class.forName(“包名.类名”);
    • 工厂模式

      • 主要用于创建对象,通过反射进行工厂模式的设计,完成动态的对象创建
    • 单例模式

      • Singleton ,只允许创建一个该类的对象
        微信公众号:爱编码的程序员

你可能感兴趣的:(框架学习,java学习,知识总结)