A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哒哒哒~~ 初级黑马   /  2018-4-23 14:38  /  483 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-4-26 14:00 编辑

                                           课程总结


IO流体系机构# 按照流的用途分:
文件输入输出流
        |_ 字节流
                |_ FileInputStream
                |_ FileOutputStream
        |_ 字符流
                |_ FileReader
                |_ FileWriter
缓冲输入输出流
        |_ 字节流
                |_ BufferedInputStream
                |_ BufferedOutputStream
        |_ 字符流
                |_ BufferedReader
                |_ BufferedWriter
对象输入输出流
        |_ 字节流
                |_ ObjectInputStream
                |_ ObjectOutputStream
打印输出流
        |_ 字节流
                |_ PrintStream
        |_ 字符流
                |_ PrintWriter
转换流
        |_ 字符流
                |_ InputStreamReader
                |_ OutputStreamWriter

多线程
进程:
  • Process, 一个应用程序在内存中的执行区域
  • 线程: Thread, 是一个进程中的一个执行路径.
  • 单线程就是同步
  • 多线程就是异步


创建线程的方式继承Thread类
构造方法
  • Thread Thread(): 创建Thead对象
  • Thread Thread(Runnable r): 通过Runnable对象创建Thread对象
  • Thread Thread(Runnable r, String threadName): 通过Runnable对象创建Thread对象并指定线程


静态方法
  • static Thread currentThread(): 返回对当前正在执行的线程对象的引用
  • static void sleep(long millis): 让所在线程睡眠指定的毫秒


成员方法
  • void run(): 用于让子类重写, 表示该线程要执行的任务. [不能直接调用]
  • void start(): 启动线程, 即让线程开始执行run()方法中的代码
  • String getName(): 获取线程的名称
  • void setName(String name): 设置线程名称


实现Runnable接口多线程的线程问题
  • 同步方法解决


    • public (static) synchronized void method() {}
    • 锁对象


      • 静态同步方法, 锁对象是: 方法所在类的Class对象
      • 非静态同步方法, 锁对象是: this




网络通信
  • 三要素:


    • 协议
    • IP地址
    • 端口号


  • UDP和TCP区别


    • UDP 无连接 传输大小有限制 数据发送快
    • TCP 有连接  传输无限制 需要建立连接 数据发送相对慢一些



InetAddress
  • 静态方法


    • static InetAddress getLocalHost(): 获取本机的InetAddress对象
    • static InetAddress getByName(String host): 根据主机名IP的字符串获取主机的InetAddress对象
    • static InetAddress getLoopbackAddress(): 获取回环地址的InetAddress对象. 即127.0.0.1或localhost
    • static InetAddress getByAddress(byte[] addr): 根据IP获取InetAddress对象


      • 如: InetAddress.getByAddress(new byte[]{(byte)192, (byte)168, (byte)1, (byte)1});



  • 成员方法


    • String getHostAddress(): 返回主机的IP地址
    • String getHostName(): 返回主机名



反射
获取字节码对象的3种方法
  • 对象.getClass()
  • 类名.class
  • Class.forName(String clasName)


方法
  • getXxx(): 只能得到public的属性或方法
  • getDeclaredXxx(): 可以得到所有权限的属性或方法. 但如果访问权限不足, 则无法操作
  • setAccessible(true): 获取成员变量, 构造方法, 成员方法的访问权限


反射获取成员方法并调用的步骤
  • 获取该类Class字节码对象(3种方式)
  • 通过Class对象调用newInstance()方法创建该类的对象
  • 通过Class对象调用获取成员方法的方法获取方法对象
  • 使用Method对象的Object invoke(Object obj, Object... args)方法调用方法, 传入该类的对象和参数, 返回方法的返回值
  • 私有方法, 也是setAccessible(true)获取访问权限


JavaBean(别的组织提供的工具类)[需要导入工作空间]
规范:
  • 类必须是public修饰的
  • 通过private的成员变量保存数据
  • 通过public的get/set方法操作数据
  • 至少提供一个无参构造方法
  • 实现Serializable接口(用于使用IO流传输对象到文件或网络)


常用静态方法
  • static void setProperty(Object bean, String name, Object value): 给对象的成员属性赋值. 传入对象, 成员属性名, 属性值
  • static String getProperty(Object bean, String name): 获取对象成员属性值. 传入对象, 成员属性名, 返回属性值的字符串形式
  • static void populate(Object bean, Map properties): 批量给对象的成员属性赋值, 传入对象, Map的key是属性名, value是属性值

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马