1.反射
    1.反射的简介
        java的反射机制 在运行状态中 对于任意一个类 都能知道任意一个类的所有属性和方法
        对于任意一个对象 都能够调用它的任意一个属性和方法
        这种动态获取信息 以及 动态调用的方式 称为java的反射

"正" 先知道类 然后创建类对象 再去调用属性或者方法
        "反" 先知道对象 然后找到类
        Class类 是所有反射操作的源头
        获取Class类的实例化对象 java中提供了三种获取该类对象的方式

1.Object类中的getClass()方法
            2.Class c = 类名.class
            3.Class类中的静态方法 forName(传入类名称字符串)
        注意:
            1.反射中所有的泛型 都是 ? 号
            2.反射中方法的返回值 都是Object类型
    2.反射的应用
        T newInstance() 创建此 Class 对象所表示的类的一个新实例。 
        相当于 调用类的无参构造 完成对象的创建
        Person p = new Person();
    3.反射的四个类 Class Constructor Field Method
        Class 代表 类的对象
        Constructor 代表 构造器 对象
        Field 代表 属性 对象
        Method 代表 方法 对象

反射的使用步骤:
            1.导包 java.lang.reflect
            2.获取你想要操作的Class字节码对象
            3.调用方法 
            4.操作信息
        Constructor 构造器对象
            1.无参构造
                使用Class 类中的
                newInstance()方法 创建该类对象
            2.有参构造
                使用Class类中的 获取Constructor构造器对象的方法
                先获取构造器
                Constructor<T> getConstructor(Class<?>... parameterTypes) 
                    返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。 
                然后再使用Constructor类中的
                 T newInstance(Object... initargs) 
                使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。 
        Field 属性对象
            1.被public修饰的属性
                 Field getField(String name) 
                    返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
                Field类中的
                    void set(Object obj, Object value) 
                        将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
                    Object get(Object obj) 
                        返回指定对象上此 Field 表示的字段的值。 
            2.所有的属性
                 Field getDeclaredField(String name) 
                    返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
                    
                 Field 继承的方法
                    void setAccessible(boolean flag) 
                    将此对象的 accessible 标志设置为指示的布尔值。
        Method 方法对象
            1.被public修饰的方法
                Method getMethod(String name, Class<?>... parameterTypes) 
                    返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。 
                Method类中的方法
                    Object invoke(Object obj, Object... args) 
                    对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。 
            2.所有的方法
                 Method getDeclaredMethod(String name, Class<?>... parameterTypes) 
                返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。 
    4.通过反射越过泛型限定
2.NIO
    1.NIO的简介
        java.nio 全称 java non-blocking IO 是jdk1.4之后出现的 New IO
        为所有的原始类型(boolean除外)提供了缓存支持
        使用它 可以提供非阻塞式的高伸缩性网络
    NIO由三个核心部分组成
        Channel 管道/通道
        Buffer 缓冲区
        Selector 选择器
    普通IO        NIO
    面向流        面向缓冲区
    阻塞IO        非阻塞
    没有选择器    选择器Selector

阻塞和非阻塞:
            阻塞:
                Scanner sc = new Scanner(System.in)
                int i = sc.nextInt();
                阻塞是强调运行结果
                在返回之前 当前线程会被挂起 一直处于等待状态

不能执行其他任务
                函数只有在得到结果之后 才会返回

阻塞式IO 指的是
                "一旦输入/输出工作没有完成 则程序阻塞 直到输入/输出完成为止"
                不见黄河不死心
            非阻塞:
                非阻塞和阻塞的概念是相对应的
                非阻塞IO其实并非完全非阻塞
                通常情况下 都是通过设置超时来读取数据的
                未超时之前 程序阻塞
                超时之后 程序结束

2.Channel,Buffer 和 Selector
        基本上 所有的IO 在NIO中都是从一个Channel开始
        Channel有点像流
        数据可以从Channel读到Buffer中
        也可以从Buffer写到Channel中

Channel:
            通道 类似于流
            通道 是双向的
            流 是单向的
            通道中的数据 先要存入Buffer中 或者 从Buffer中写出
            通道与buffer进行数据交互

Java NIO中一些主要的Channel实现:
                1.FileChannel : 从文件中读写数据
                2.DatagramChannel : 能通过udp读写网络中的数据
                3.SocketChannel : 能通过tcp读写网络中的数据
                  ServerSocketChannel :监听TCP连接
                    对每一个新进来的连接都会创建一个SocketChannel
        Buffer:
            缓冲区 本质上是一块可以存储数据的内存
                把这块区域封装成了一个Buffer对象
            Java NIO中涉及到的Buffer实现:
                1.ByteBuffer
                2.CharBuffer
                3.DoubleBuffer
                4.FloatBuffer
                5.IntBuffer
                6.LongBuffer
                7.ShortBuffer
        Selector:
            实现监听的效果
            通过一个线程管理多个Channel
            从而管理多个网络连接的目的
            它是Java NIO核心组件中的一个
            用于检查一个或者多个NIO Channel的状态是否处于可读 可写
            我们可以将Channle注册到Selector中 以实现Selector对其管理的目的
    3.Buffer的使用
        Java NIO 的Buffer 用于 和 NIO通道进行交互
        数据从通道读入缓冲区
        从缓冲区写出到通道中

常用方法:
            1.allocate(大小) 分配一块指定大小的缓冲区
            2.put() 向缓冲区写数据
            3.get() 从缓冲区读数据
            4.flip() 切换读写模式
                作用:
                *  1.将position设置为0
                *  2.把limit设置为原position的值 存了多少数据
            5.clear() 清空

6.capacity() 获取缓冲区大小
            7.position() 获取数据存储位置
            8.limit() 长度
        使用步骤:
            1.创建Buffer缓冲区
            2.写入数据到Buffer
            3.调用flip()方法 切换读写模式
            4.从Buffer中读取数据
            5.调用clear()方法 清空缓冲区
    4.FileChannel的使用
        java NIO 中的FileChannel 是一个连接文件的通道
        可以通过通道 读写文件
        在使用FileChannel之前 必须先打开它

1.可以通过
            FileInputStream/FileOutputStream 来获取 FileChannel
                getChannel()方法
        2.调用 FileChannel中的静态open()方法 打开通道
            static FileChannel open(Path path,OpenOption...options);
            Paths 工厂类中 的方法
            static Path get(URI uri) 将给定的URI转换为Path对象。

5.案例
       写入文本文件
       读取文本文件
       复制图片

反射 Nio channel Buffer相关推荐

  1. java之NIO(Channel,Buffer,Selector)

    java之NIO 1 什么是NIO Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API.NIO支持面向缓冲区的.基于通道的IO操作 ...

  2. NIO核心之Channel,Buffer和Selector简介

    在NIO的API中,Channel就是实现非阻塞的组件,而事件分发(Dispatcher)使用的是Selector组件,在传统的I/O流(Stream)是有方向的,而NIO支持双向读写,这样就需要将流 ...

  3. java buffer nio_Java NIO之Buffer(缓冲区)入门

    ​Java NIO中的缓存区(Buffer)用于和通道(Channel)进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中的. ​缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内 ...

  4. 03. Java NIO Channel 通道

    2019独角兽企业重金招聘Python工程师标准>>> Java NIO Channel通道和流非常相似,主要有以下几点区别: 通道可以度也可以写,流一般来说是单向的(只能读或者写) ...

  5. 二、Java NIO Channel

    一.Java NIO 网络编程 二.Java NIO Channel 三.Java NIO Buffer 四.Java NIO Selector 五.Java NIO 扩展组件 一.Channel 概 ...

  6. 【Netty】NIO 缓冲区 ( Buffer ) ( 缓冲区读写类型 | 只读缓冲区 | 映射字节缓冲区 )

    文章目录 I . 缓冲区 ( Buffer ) 存取类型 II . 只读缓冲区 ( ReadOnlyBuffer ) III . 映射字节缓冲区 ( MappedByteBuffer ) I . 缓冲 ...

  7. NIO:channel、buffer、状态变量、socket、charset

    在开始之前 关于本教程 新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的.NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的.面向块的 I/O.通过定义包含数据的 ...

  8. Java NIO:Buffer、Channel 和 Selector

    Buffer 一个 Buffer 本质上是内存中的一块,我们可以将数据写入这块内存,之后从这块内存获取数据. java.nio 定义了以下几个 Buffer 的实现,这个图读者应该也在不少地方见过了吧 ...

  9. buffer java作用_Java NIO之Buffer的使用

    目录 Buffer简介 Buffer的核心属性 Buffer的创建与使用(ByteBuffer为例) 总结 参考资料 Buffer简介 缓冲区(Buffer):本质上是一个数组,用于临时保存.写入以及 ...

最新文章

  1. python 操作txt 写入列表
  2. java如何把查到的对象集合放入 展示对象list中_Java面试整理-基础篇8.集合1
  3. 三十六、【减小apk包的体积】
  4. iOS开发——获取本设备IP
  5. 2018-2019-2 20165222《网络对抗技术》Exp9 Web安全基础
  6. 一道『easy』等级的力扣题,我写了两个小时的笔记...
  7. 惯导IMU,INS,AGV的区别
  8. C#——NotifyICON的使用
  9. how to use 1checker_vim command
  10. keil软件是干嘛的?keil软件怎么用?
  11. 云计算的特点,主要有哪些?
  12. timenote时光笔记+android,Time Note时光笔记软件怎么样?Time Note时光笔记有哪些功能特色?...
  13. Vscode 修改左侧 资源管理器的面板大小
  14. 高等数学(第七版)同济大学 总习题十一 个人解答
  15. 使用与破解ExcelVBA密码
  16. VRTK插件详解四:部分自带案例分析
  17. 浙江大学SEL实验室
  18. SVN的学习(SVN的简单说明、SVN的安装与配置、SVN与GIT的区别)
  19. ETL开发流程小记(1)
  20. VScode 浅灰色主题

热门文章

  1. 谷歌浏览器修复_谷歌发布 Chrome 紧急补丁 修复可执行任意代码的高危漏洞
  2. C# winform中对gridcontrol查询的一些操作
  3. 毫米波雷达系统性能参数分析
  4. 我喜欢听歌,可是我却不会唱歌,就是唱
  5. 制作Windows To Go Mac,windows电脑通用
  6. ROS:服务数据(srv)的定义与使用
  7. 听说B站视频的完成率也是一项挺重要的指标,下面来提高它
  8. 【商业分析 04 搜索引擎指标CG,DCG,NDCG】
  9. 比较实用的几种端口入侵
  10. 活动目录数据库文件介绍