2021年2月24日

javaNIO:选择器--实践 Selector

摘要: 选择器服务器端代码 选择器--理论这篇笔记很多和选择器相关的知识点,下面进入实战,看一下如何写和使用选择器实现服务端Socket数据接收的程序,这也是NIO中最核心、最精华的部分。 选择器的优点和注意点: 1.在传统io soket进行网络通信的时候,使用的阻塞通道,我们能知道什么时候写什么时候读, 阅读全文

posted @ 2021-02-24 17:45 signheart 阅读(180) 评论(0) 推荐(0) 编辑

javaNIO:选择器--理论 Selector

摘要: 选择器 最后,我们探索一下选择器,选择器Selector是nio最重要的一个特性。由于选择器内容比较多,所以本篇先偏理论地讲一下,后一篇讲代码,文章也没有什么概括、总结的,写到哪儿算哪儿了,只求能将选择器写明白,并且将一些相对重要的内容加粗标红。 选择器提供选择执行已经就绪的任务的能力,这使得多元I 阅读全文

posted @ 2021-02-24 17:44 signheart 阅读(145) 评论(0) 推荐(0) 编辑

javaNIO:Socket通道

摘要: Socket通道 上文讲述了通道、文件通道,这篇文章来讲述一下Socket通道,Socket通道与文件通道有着不一样的特征,分三点说: 1、NIO的Socket通道类可以运行于非阻塞模式并且是可选择的,这两个性能可以激活大程序(如网络服务器和中间件组件)巨大的可伸缩性和灵活性,因此,再也没有为每个S 阅读全文

posted @ 2021-02-24 17:43 signheart 阅读(386) 评论(0) 推荐(2) 编辑

javaNIO:通道和文件通道 Channel

摘要: 通道是什么 通道式(Channel)是java.nio的第二个主要创新。通道既不是一个扩展也不是一项增强,而是全新的、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件描述符(window下叫文件句柄)或套接字(网络传输用到, 阅读全文

posted @ 2021-02-24 17:42 signheart 阅读(155) 评论(0) 推荐(0) 编辑

javaNIO:缓冲区 Buffer

摘要: 什么是缓冲区 一个缓冲区对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区像前篇文章讨论的那样被写满和释放,对于每个非布尔原始数据类型都有一个缓冲区类,尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节,非字节缓冲区可以再后台执 阅读全文

posted @ 2021-02-24 17:41 signheart 阅读(255) 评论(0) 推荐(0) 编辑

javaNIO:I/O模型解读

摘要: I/O模型 在开始NIO的学习之前,先对I/O的模型有一个理解,这对NIO的学习是绝对有好处的。我画一张图,简单表示一下数据从外部磁盘向运行中进程的内存区域移动的过程: 这张图片明显忽略了很多细节,只涉及了基本操作,下面分析一下这张图。 用户空间和内核空间 一个计算机通常有一定大小的内存空间,如一台 阅读全文

posted @ 2021-02-24 17:35 signheart 阅读(138) 评论(0) 推荐(0) 编辑

javaNIO:NIO概述

摘要: Java NIO(new io 或者 no blocking no) 由以下几个核心部分组成: Channels (通道)Buffers (缓冲区)Selectors (选择器) 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了 阅读全文

posted @ 2021-02-24 17:32 signheart 阅读(105) 评论(0) 推荐(0) 编辑

javaIO:java IO 总结 持续更新

摘要: 字节流、字符流继承关系 前几篇文章讲解了字节流、字符流的使用,不过Java提供给用户的流类远不止此,限于篇幅原因,没办法一一讲解,而且也没有必要一一讲解,就像我在写博客的时候多次提到的,有问题的时候学会查JDK API即可。OK,虽然不一一讲解每种流,我自己简单画了几张UML图,说明一下字节输入流、 阅读全文

posted @ 2021-02-24 17:26 signheart 阅读(66) 评论(0) 推荐(0) 编辑

javaIO:管道流、对象流

摘要: 前言 前面的文章主要讲了文件字符输入流FileWriter、文件字符输出流FileReader、文件字节输出流FileOutputStream、文件字节输入流FileInputStream,这些都是常见的流类。当然除了这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流。 管道流 阅读全文

posted @ 2021-02-24 17:22 signheart 阅读(140) 评论(0) 推荐(0) 编辑

javaIO:字符流进阶BufferedWriter、BufferedReader

摘要: 字符流和字节流的区别 拿一下上一篇文章的例子: 第8行"out.close()"注释掉可以看一下效果,"writer.txt"一定是空的,控制台上输出的是"文件中无数据",说明一下原因。 字符流和字节流非常相似,但也有区别,从网上找了一张图: 、 从图上看,字符流和字节流最大的区别在于,字节流在操作 阅读全文

posted @ 2021-02-24 17:21 signheart 阅读(153) 评论(0) 推荐(0) 编辑

javaIO:字符流

摘要: 字符流 字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为上一篇文章写了,一个Unicode字符占用2个字节,而字节流一次只能操作一个字节。既然Java的口号就是"一次编写、处处运行",那么 阅读全文

posted @ 2021-02-24 17:20 signheart 阅读(57) 评论(0) 推荐(0) 编辑

javaIO:字符编码

摘要: 前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流,那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概念,因此这边文章就专门详细写一下字符编码,具体的网上有很多,但本文目的是尽量讲清楚各种编码方式的作用,个人认为,不求、也 阅读全文

posted @ 2021-02-24 17:19 signheart 阅读(176) 评论(0) 推荐(0) 编辑

javaIO:字节流

摘要: 流类 Java的流式输入/输出是建立在四个抽象类的基础上的:InputStream、OutputStream、Reader、Writer。它们用来创建具体的流式子类。尽管程序通过具体子类执行输入/输出操作,但顶层类定义了所有流类的基本通用功能。 InputStream和OutputStream为字节 阅读全文

posted @ 2021-02-24 17:18 signheart 阅读(85) 评论(0) 推荐(0) 编辑

javaIO:RandomAccessFile

摘要: RandomAccessFile RandomAccessFile类可以说是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法。RandomAccessFile类支持"随机访问"方式,可以跳转到文件的任意位置处读写数据。要访问一个文件的时候,不想把文件从头读到尾,而是希望像访问一个数 阅读全文

posted @ 2021-02-24 17:17 signheart 阅读(85) 评论(0) 推荐(0) 编辑

javaIO:IO和File

摘要: IO 大多数的应用程序都要与外部设备进行数据交换,最常见的外部设备包含磁盘和网络。IO就是指应用程序对这些设备的数据输入与输出,Java语言定义了许多类专门负责各种方式的输入、输出,这些类都被放在java.io包中。 File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与 阅读全文

posted @ 2021-02-24 17:16 signheart 阅读(68) 评论(0) 推荐(0) 编辑

java io 详细代码实现 纪录

摘要: 什么是IO流? byte序列的读写,Java中的IO流是实现输入/输出的基础.1)InputStream : 抽象类读取数据的过程 包含读取方法read(); in 模仿了读取小说的过程 简单说 : in是读取文件的 OutputStream:抽象了写出数据的过程 包含写出方法write(); ou 阅读全文

posted @ 2021-02-24 17:15 signheart 阅读(92) 评论(0) 推荐(0) 编辑

ClassLoader 理解

摘要: ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组 []by 阅读全文

posted @ 2021-02-24 14:45 signheart 阅读(156) 评论(0) 推荐(0) 编辑

JVM两种运行模式Server与Client

摘要: JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Cli 阅读全文

posted @ 2021-02-24 14:44 signheart 阅读(963) 评论(0) 推荐(0) 编辑

java虚拟机12:类加载器

摘要: 类与类加载器 虚拟机设计团队把类加载阶段张的"通过一个类的全限定名来获取此类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为"类加载器"。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限定于类加载 阅读全文

posted @ 2021-02-24 14:43 signheart 阅读(70) 评论(0) 推荐(0) 编辑

java Class File 文件结构

摘要: 学习Java的朋友应该都知道Java从刚开始的时候就打着平台无关性的旗号,说“一次编写,到处运行”,其实说到无关性,Java平台还有另外一个无关性那就是语言无关性,要实现语言无关性,那么Java体系中的class的文件结构或者说是字节码就显得相当重要了,其实Java从刚开始的时候就有两套规范,一个是 阅读全文

posted @ 2021-02-24 14:43 signheart 阅读(264) 评论(0) 推荐(0) 编辑

导航