Skip to content

Commit 39598bd

Browse files
committed
Update Java基础知识.md
1 parent 9961fd8 commit 39598bd

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

docs/java/Java基础知识.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
<!-- TOC -->
44

55
- [1. 面向对象和面向过程的区别](#1-面向对象和面向过程的区别)
6-
- [面向过程](#面向过程)
7-
- [面向对象](#面向对象)
86
- [2. Java 语言有哪些特点?](#2-java-语言有哪些特点)
97
- [3. 关于 JVM JDK 和 JRE 最详细通俗的解答](#3-关于-jvm-jdk-和-jre-最详细通俗的解答)
108
- [JVM](#jvm)
@@ -49,8 +47,9 @@
4947
- [异常处理总结](#异常处理总结)
5048
- [33 Java序列化中如果有些字段不想进行序列化,怎么办?](#33-java序列化中如果有些字段不想进行序列化怎么办)
5149
- [34 获取用键盘输入常用的两种方法](#34-获取用键盘输入常用的两种方法)
52-
- [35 Java 中 IO 流分为几种?BIO,NIO,AIO 有什么区别?](#35-java-中-io-流分为几种bionioaio-有什么区别)
53-
- [java 中 IO 流分为几种?](#java-中-io-流分为几种)
50+
- [35 Java 中 IO 流](#35-java-中-io-流)
51+
- [Java 中 IO 流分为几种?](#java-中-io-流分为几种)
52+
- [既然有了字节流,为什么还要有字符流?](#既然有了字节流为什么还要有字符流)
5453
- [BIO,NIO,AIO 有什么区别?](#bionioaio-有什么区别)
5554
- [36. 常见关键字总结:static,final,this,super](#36-常见关键字总结staticfinalthissuper)
5655
- [37. Collections 工具类和 Arrays 工具类常见方法总结](#37-collections-工具类和-arrays-工具类常见方法总结)
@@ -478,9 +477,9 @@ BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
478477
String s = input.readLine();
479478
```
480479

481-
## 35 JavaIO 流分为几种?BIO,NIO,AIO 有什么区别?
480+
## 35 JavaIO
482481

483-
### javaIO 流分为几种?
482+
### JavaIO 流分为几种?
484483

485484
- 按照流的流向分,可以分为输入流和输出流;
486485
- 按照操作单元划分,可以划分为字节流和字符流;
@@ -500,6 +499,12 @@ Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很
500499

501500
![IO-操作对象分类](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/IO-操作对象分类.png)
502501

502+
### 既然有了字节流,为什么还要有字符流?
503+
504+
问题本质想问:**不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么 I/O 流操作要分为字节流操作和字符流操作呢?**
505+
506+
回答:字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以, I/O 流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话使用字符流比较好。
507+
503508
### BIO,NIO,AIO 有什么区别?
504509

505510
- **BIO (Blocking I/O):** 同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。在活动连接数不是特别高(小于单机1000)的情况下,这种模型是比较不错的,可以让每一个连接专注于自己的 I/O 并且编程模型简单,也不用过多考虑系统的过载、限流等问题。线程池本身就是一个天然的漏斗,可以缓冲一些系统处理不了的连接或请求。但是,当面对十万甚至百万级连接的时候,传统的 BIO 模型是无能为力的。因此,我们需要一种更高效的 I/O 处理模型来应对更高的并发量。
@@ -529,3 +534,4 @@ Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很
529534
**Java工程师必备学习资源:** 一些Java工程师常用学习资源公众号后台回复关键字 **“1”** 即可免费无套路获取。
530535

531536
![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
537+

0 commit comments

Comments
 (0)