OutputStreamWriter , 所有输出流的基类 , OutputStream为字节输出流 , Writer为字符输出流 。Java中IO和NIO的区别?
- NIO被称为New IO , 在JDK1.4中引入 , NIO和IO有相同的目的和作用 , 但实现方式不同 。NIO主要用到的是块 , 而IO是字节Byte , 所以NIO的效率要比IO高很多 。Java提供了2套NIO , 一套针对文件 , 另一套针对网络编程 。
常用io类有哪些?
- 字节FileInputSteam、FileOutputStreamBufferInputStream、BufferedOutputSream
- 字符FileReader、FileWriterBufferReader、BufferedWriter
- 对象序列化ObjectInputStream、ObjectOutputSream
什么是Java NIO
- NIO 主要有三大核心部分: Channel(通道) , Bu?er(缓冲区), Selector 。
- 传统 IO 基于字节流和字符流进行操作 , 而 NIO 基于 Channel 和 Bu?er(缓冲区)进行操作 , 数据总是从通道读取到缓冲区中 , 或者从缓冲区写入到通道中 。Selector(选择区)用于监听多个通道的事件(比 如:连接打开 , 数据到达) 。因此 , 单个线程可以监听多个数据通道 。
- NIO 和传统 IO 之间第一个最大的区别是 , IO 是面向流的 , NIO 是 面向缓冲区的 。
什么是NIO的Channel
- Channel , 一般翻译为通道 。Channel 和 IO 中的 Stream(流)是差不多一个等级的 。只不过 Stream 是单向的 , 譬如: InputStream, OutputStream , 而 Channel 是双向的 , 既可以用来进行读操作 , 又可以用来进行写操作 。
- NIO 中的 Channel 的主要实现类FileChannel(文件操作)DatagramChannel(UDP操作)SocketChannel(TCP客户端)ServerSocketChannel(TCP服务端)
什么是NIO的Bu?er
- Bu?er , 故名思意 , 缓冲区 , 实际上是一个容器 , 是一个连续数组 。Channel 提供从文件、网络读取数据的渠道 , 但是读取或写入的数据 都必须经由 Bu?er 。
- 从一个客户端向服务端发送数据 , 然后服务端接收数据的过程 。客户端发送数据时 , 必须先将数据存入 Bu?er 中 , 然后将 Bu?er 中的内容写入通道 。服务端这边接收数据必须通过 Channel 将数据读入到 Bu?er 中 , 然后再从 Bu?er 中取出数据来处理 。
- 在 NIO 中 , Bu?er 是一个顶层父类 , 它是一个抽象类 , 常用的 Bu?er 的子类有ByteBu?erShortBu?erIntBu?erLongBu?erFloatBu?erDoubleBu?erCharBu?er
什么是NIO的Selector
- Selector 类是 NIO 的核心类 , Selector 能够检测多个注册的通道上是否有事件发生 , 如果有事件发生 , 便获取事件然后针对每个事件进行 相应的响应处理 。这样一来 , 只是用一个单线程就可以管理多个通道 , 也就是管理多个连接 。这样使得只有在连接真正有读写事件发生时 , 才会调用函数来进行读写 , 就大大地减少了系统开销 , 并且不必为每个连接都创建一个线程 , 不用去维护多个线程 , 并且避免了多线程之间 的上下文切换导致的开销 。
Java反射面试题Java反射创建对象效率高 , 还是new创建对象的效率高
- 通过new创建对象的效率比较高 。通过反射时 , 先找查找类资源 , 使用类加载器创建 , 过程比较繁琐 , 所以效率较低
Java反射的作用
- 反射机制是在运行时 , 对于任意一个类 , 都能够知道这个类的所有属性和方法;对于任意个对象 , 都能够调用它的任意一个方法 。在java 中 , 只要给定类的名字 , 就可以通过反射机制来获得类的所有信息 。
哪里会用到反射机制例如:加载MySQL的驱动类 , 如Hibernate、MyBatis等框架中会使用 。
//加载MySQL的驱动类Class.forName('com.mysql.jdbc.Driver.class');复制代码反射机制的优缺点
- 优点能够运行时动态获取类的实例 , 提高灵活性与动态编译结合
- 缺点使用反射性能较低 , 需要解析字节码 , 将内存中的对象进行解析相对不安全 , 破坏了封装性(因为通过反射可以获得私有方法和属性)
- 解决方案通过setAccessible(true) , 关闭JDK的安全检查来提升反射速度第一次反射后 , 会有缓存 , 下次反射会快很多Re??ectASM工具类 , 通过字节码生成的方式加快反射速度
推荐阅读
-
三国两晋南北朝|关羽被杀,如果刘备听从诸葛亮劝阻,不讨伐孙权,结果会如何?
-
宠物犬突然翻脸,咬伤青岛67岁大姨!主人已搬走,“它不是第一次咬人了…”
-
猎鹰出击|为何还十分低调,俄对此赞叹不已,中国如今已崛起
-
抖音直播间怎么上小风车,抖音直播下面小风车怎么弄-
-
一降到底,18.69万下探到13.6万,来自大众,昂科威慌不慌?
-
对于我爸对我说“你现在还是个学生,要两耳不问窗外事,一心只读圣贤书”,我该咋反驳他
-
冬天,遇到别错过吃的菜,贵也值得,孩子多吃对眼睛好,要常吃
-
第六感|韩综《第六感》突破低预算窘境,丁哲珉大方分享打造话题节目的经验
-
热剧畅看|公开贩卖叙利亚石油,1000名士兵变成盗窃,美国彻底撕掉伪装
-
国产铁布衫|秋季护肤品护肤小常识:秋季唇部干裂严重怎么办?小技巧勤于尝试
-
『心脏病』脑梗塞大多数是“拖”出来?若头部反复出现3个特征,尽快去医院
-
钱江晚报|浙江13岁女孩肚子一天天隆起,妈妈反复追问:怀孕了?!结果惊出冷汗
-
一些:德甲、德乙球员参与“对抗疫情,宅家挑战”在线活动
-
北京城市副中心|正在公示!通州这个地块将添一所新小学!规划36个班
-
「军迷圈」张召忠预言再次成真,刚服役就沦为摆设?6万吨的巨舰名存实亡
-
-
摩羯座|做事有计划性的摩羯座人,不喜欢依赖别人,讨厌感情中的不可控因素
-
「卡佩拉」火箭旧将卡佩拉真的惨,不仅没比赛打,NBA官宣后薪资还少一半?
-
小哥历史说:查明身份后惊动政府领导,3万块不翼而飞?97岁拾荒老人前去报案
-
勒布朗·詹姆斯:2013年詹姆斯离全票MVP仅差1票!你知道那一票给了谁吗?