BIO 阻塞IO流 数据存储

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 为了弄清楚 I/O 流 的执行原理,首先需要了解数据在磁盘中的存储方式。目前进行数据存储的磁盘分为两种:机械磁盘、固态硬盘。

1.数据在磁盘中的存储方式:

为了弄清楚 I/O 流 的执行原理,首先需要了解数据在磁盘中的存储方式。目前进行数据存储的磁盘分为两种:机械磁盘、固态硬盘。

1.1 机械磁盘:

其实机械硬盘的构造也不是太复杂;它读写数据主要就是靠一块磁盘盘片跟磁头。盘片一直在被电机驱动着旋转,数据在磁头上由电磁流来改变极性方式被电磁流写到磁盘上

简单说呢,就是磁盘一直旋转,然后磁头上面有电磁流,电磁流再去改变磁盘上面的磁极正负,然后数据就被留在磁盘上面了。需要读取的时候,再由磁头去磁盘上面读取相应位置的正负极

1.2 固态磁盘:

相比较于机械硬盘里面的各种机械结构,固态硬盘就没有太多的机械机构;它主要是靠FLASH芯片来作为储存数据的介质;由主控芯片来承担数据的中转,还有调配数据储存在闪存芯片上面

FLASH芯片储存数据的方式也不是太难理解,就是FLASH芯片里面分出了很多储存单元,这些储存单元里面有电子的位置;当一颗电子的位置里面没有存放电子,它就是0;如果存放了电子,它就是1

而主控芯片就是控制存放这些电子的‘大脑’,它把数据从CPU和内存那里接收过来,接收过来之后根据这些数据合理的把数据存放在相应的存储单元里面;需要读取数据时,它就从这些存储单元里面根据电子的存放情况来读出数据。

2.数据在内存中的存储方式:

数据在内存中的存储形式是以二进制 0,1 进行存储的,而具体的存储形式还是需要根据数据的类型以及编程语言的规范来决定。

这里主要针对 Java 的数据类型进行讲解。

2.1 基本数据类型:

在二进制里,最高位为符号位,用 0 和 1 来表示正负,最高位为 1 代表负数,最高位为 0 代表正数。

  • byteJava中最小的数据类型,在内存中占1个字节(8 bit),取值范围 -128~127,默认值 0
  • short短整型,2个字节(16 bit),取值范围 -32768~32717,默认值 0
  • int整型,用于存储整数,在内存中占4个字节,取值范围 -2147483648~2147483647,默认值 0
  • long长整型,在内存中占8个字节-2^63~2^63-1,默认值 0L

  • float浮点型,在内存中占4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0
  • double双精度浮点型,用于存储带有小数点的数字,在内存中占8个字节,默认值0

  • char字符型,用于存储单个字符,内存中占2个字节,取值范围0~65535,默认值为空
  • boolean布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值 false

2.2 引用数据类型:

Java语言本身不支持 C++ 中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。引用类型分3种:类,接口,数组;

  • 类(Class):所有的类,无论是Java自身已经存在的,还是用户后来创建的;Objec类:它是所有类的父类,每个类都实现这个类的方法;用Object 可以定义所有的类;
  • String:String类代表字符串,Java
  • 接口(interface):系统自带或者用户创建的
  • 数组(array):系统自带或者用户创建的
相关文章
|
8月前
|
存储 网络协议 Java
Java中IO流类的体系中BIO与NIO
Java中IO流类的体系中BIO与NIO
64 0
|
8月前
|
监控 网络协议 Java
Java 中 IO 之 BIO、NIO 和 AIO
IO 是 Input 和 Output 二词的缩写,意为输入和输出,直接来说,实现一般的 I/O 是没有什么难度的,但涉及到多线程时,要解决 I/O 的问题就不是一个简单的事情了,会涉及到同步和异步的问题,阻塞和非阻塞的问题。了解了(非)同步和(非)阻塞之后,我们再来看 I/O,根据是否同步和是否阻塞以及按它们出现的时间顺序,主要划分为 3 种 I/O 技术,分别是 BIO、NIO 和 AIO。当然,并不是只有这几种,还有其他的 I/O 类型。
64 3
|
4月前
|
存储 Java Windows
JAVA BIO IO 模型概述
【1月更文挑战第1天】JAVA BIO IO 模型概述
|
6月前
阻塞IO、非阻塞IO和IO复用有啥区别?
阻塞IO、非阻塞IO和IO复用有啥区别?
47 1
|
7月前
|
Java Unix Linux
深入探讨I/O模型:Java中的阻塞和非阻塞和其他高级IO应用
I/O(Input/Output)模型是计算机科学中的一个关键概念,它涉及到如何进行输入和输出操作,而这在计算机应用中是不可或缺的一部分。在不同的应用场景下,选择正确的I/O模型是至关重要的,因为它会影响到应用程序的性能和响应性。本文将深入探讨四种主要I/O模型:阻塞,非阻塞,多路复用,signal driven I/O,异步IO,以及它们的应用。
深入探讨I/O模型:Java中的阻塞和非阻塞和其他高级IO应用
|
8月前
|
缓存 网络协议 Java
Java IO体系与NIO和BIO体系面试题
Java IO体系与NIO和BIO体系面试题
54 0
|
8月前
|
算法 Linux C语言
Linux驱动IO篇——阻塞/非阻塞IO
Linux驱动IO篇——阻塞/非阻塞IO
|
9月前
|
存储 Java Linux
BIO、NIO、IO多路复用模型详细介绍&Java NIO 网络编程
上文介绍了网络编程的基础知识,并基于 Java 编写了 BIO 的网络编程。我们知道 BIO 模型是存在巨大问题的,比如 C10K 问题,其本质就是因其阻塞原因,导致如果想要承受更多的请求就必须有足够多的线程,但是足够多的线程会带来内存占用问题、CPU上下文切换带来的性能问题,从而造成服务端崩溃的现象。怎么解决这一问题呢?优化呗,所以后面就有了NIO、AIO、IO多路复用。本文将对这几个模型详细说明并基于 Java 编写 NIO。
202 0
|
9月前
|
网络协议 Java API
JAVA IO模式 —— BIO、NIO、AIO
JAVA IO模式 —— BIO、NIO、AIO
137 0