[一]JavaIO之FileDescriptor文件描述符
文件描述符
文件描述符 之于文件系统(操作系统中的一切都是文件描述符 可以使用文件描述符描述任何一个资源对象 就如同Class 之于java语言一样(java中一切都是类,都是一个Class的实例,任何一个类都用Class对象的实例来描述 |
文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄 该结构表示开放文件、开放套接字或者字节的另一个源或接收者。 文件描述符的主要实际用途是创建一个包含该结构的 FileInputStream 或 FileOutputStream。 应用程序不应创建自己的文件描述符。 |
FileDescriptor中的三个描述符
三个描述符,通过调用私有方法 standardStream进行创建初始化 创建一个FileDescriptor 并且,设置他的handle值 内部的set(fd)是一个本地方法 说白了,就是通过调用本地方法,获得操作系统对标准输入/输出/错误的三个文件描述符 |
注释中也说的很清楚,文件描述符一般不直接使用 通过使用System.in System.out System.err |
文件描述符在System类中的应用
在System 中 in out err 都是 final static的 |
标准的输入输出是共享,但是java是多线程的 因此它们必须受到特别的处理,在系统初始化完成之前,线程严禁使用这几个特殊对象; 又因为这些对象都是静态的,因此java的类加载机制会在System类加载的时候就会初始化,这就造成了一对矛盾; 为解决这对矛盾,System在加载是将它们初始化为null,等加在完成后,通过 initializeSystemClass |
initializeSystemClass 方法的关键部位 以及 本地的setIn0 setOut0 setErr0 |
initializeSystemClass 方法对于这块来说,主要就是 使用三个文件描述符 创建了 FileInputStream 以及 FileOutputStream 对于Out以及Err又根据encoding 转换为PrintStream 然后通过本地方法进行设置 |
所以说,那三个专门的文件描述符一般不直接使用 取而代之的则是使用文件描述符 初始化设置过的流对象 |
应用程序不创建文件描述符, 都是由系统调用, 也就是本地方法来操作的 应用程序只是获得, 然后使用, 所谓使用,最终也还是需要借助于操作系统 是应用程序 操作文件 时 与操作系统进行交互时,必须的数据项 |
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring-Cloud | openfeign使用细节
写在前面的话 各位,下午好! 我比较喜欢用 fegin 来实现微服务之间的调用,但是feign使用的那些细节,是get到了吗?本节我将使用Spring Boot 2.0.5.RELEASE + Spring Cloud SR1 + openfeign并结合实际的使用,教你使用feign的姿势。 项目架构 我们先对测试架构一番,看图 简单来说,就是服务模块化分为:model层、API层、service层,其他服务就可以依赖API层。 另外,我们看一下,Spring官网提供的一段关于Feign Inheritance Support代码: 下面我们就动手写例子。 测试实例 1、先看一下完成后的目录截图 我们看 api、 model、 service、 feign-use之间的依赖关系。api依赖modelservice依赖api,实现api接口feign-use依赖api,client继承api,并注入spring bean 2、使用公益eureka,这样我们就省略构建服务注册中心了 eureka: client: service-url: defaultZone: http://eure...
- 下一篇
【Java】设计模式
设计模式实际上就是针对某一类问题的最优解决方案,代表了最佳的实践,是开发人员经过相当一段时间的试验总结得到的。 目的是为了重用代码,让代码更容易理解,也更具可靠性,就像一个个模具。总共有23种设计模式,分为三大类:创建型:关注于对象的实例化结构型:如何组合对象与类行为型:对象之间的交互通信 六大原则:1.开闭原则:对扩展开放,对修改关闭。2.里氏代换原则3.依赖倒转原则4.接口隔离原则5.迪米特法则6.合成复用原则 常见的设计模式 【1.单例模式】 意图:保证一个类只有一个实例,并提供一个访问它的全局访问点主要解决:一个全局使用的类频繁地创建与销毁何时使用:控制实例数目,节省系统资源关键代码:构造函数是私有的优点:内存只有一个实例,减少内存的开销;避免对资源的多重占用缺点:没有接口,不能继承 实现:创建一个类,类有私有的构造函数和本身一个静态实例,该类提供一个静态方法,供外界获取静态实例。【懒汉式】声明对象,在调用getinstance()方法才创建对象【饿汉式】声明并创建对象 【2.工厂模式】 意图:定义一个创建对象的接口,让子类自己决定实例化哪个工厂类,使创建过程延迟到子类进行主要...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19