2021年2月24日

javaNIO:选择器--实践 Selector

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

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

javaNIO:选择器--理论 Selector

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

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

javaNIO:Socket通道

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

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

javaNIO:通道和文件通道 Channel

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

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

javaNIO:缓冲区 Buffer

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

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

javaNIO:I/O模型解读

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

posted @ 2021-02-24 17:35 signheart 阅读(140) 评论(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 阅读(116) 评论(0) 推荐(0)

javaIO:java IO 总结 持续更新

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

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

javaIO:管道流、对象流

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

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

javaIO:字符流进阶BufferedWriter、BufferedReader

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

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

javaIO:字符流

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

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

javaIO:字符编码

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

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

javaIO:字节流

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

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

javaIO:RandomAccessFile

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

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

javaIO:IO和File

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

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

java io 详细代码实现 纪录

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

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

ClassLoader 理解

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

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

JVM两种运行模式Server与Client

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

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

java虚拟机12:类加载器

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

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

java Class File 文件结构

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

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

java虚拟机11:运行期优化

摘要: 编译对象与触发条件 之前讲过,Sun使用的虚拟机之所以被叫做"HotSpot",就是因为运行过程中会检测热点代码,那么运行过程中,会被即时编译器编译的"热点代码"有两类,即: 被多次调用的方法被多次执行的循环体 前者很好理解,一个方法被调用得多了,方法体内代码执行的次数自然就多,他成为"热点代码"也 阅读全文

posted @ 2021-02-24 14:42 signheart 阅读(107) 评论(0) 推荐(0)

java虚拟机11:Java类加载机制

摘要: 前言 我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后才能运行和使用。而虚拟机如何加载这些.class文件?.class文件的信息进入到虚拟机后会发生什么变化?这些都是本文要讲的内容,文章将会讲解加载类加载的每个阶段Java虚拟机 阅读全文

posted @ 2021-02-24 14:42 signheart 阅读(235) 评论(0) 推荐(0)

java虚拟机 10:内存分配原则

摘要: 前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Serial Old, 阅读全文

posted @ 2021-02-24 14:41 signheart 阅读(114) 评论(0) 推荐(0)

java虚拟机9:Java的内存模型

摘要: 什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此, 阅读全文

posted @ 2021-02-24 14:40 signheart 阅读(94) 评论(0) 推荐(0)

java虚拟机8:内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

摘要: 内存溢出和内存泄露的区别 1、内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了。 2、内存泄露 内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可达但无用。内存泄露一般都是因为内存中有一块很大的对象,但是无法释放。 从定义上可以 阅读全文

posted @ 2021-02-24 14:39 signheart 阅读(188) 评论(0) 推荐(0)

java虚拟机7:垃圾收集器 基于回收算法理论的实现

摘要: 垃圾收集器 垃圾收集器就是上面讲的理论知识的具体实现了。不同虚拟机所提供的垃圾收集器可能会有很大差别,我们使用的是HotSpot,HotSpot这个虚拟机所包含的所有收集器如图: 上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,那说明它们可以搭配使用。虚拟机所处的区域说明它是属于新 阅读全文

posted @ 2021-02-24 14:38 signheart 阅读(96) 评论(0) 推荐(0)

java虚拟机5:垃圾回收算法

摘要: 引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):这是最基础的算法,标记-清除算法就如同它的名字样, 阅读全文

posted @ 2021-02-24 14:37 signheart 阅读(166) 评论(0) 推荐(0)

java虚拟机4:jvm GC机制回收 判断对象生死 及 方法区永久代回收条件

摘要: heap堆中存放着几乎所有的对象实例,垃圾收集器在堆堆进行回收前,首先要确定这些对象哪些还“活着”,哪些已经“死去”。方法有如下两种: (1)引用计数法 算法思想:为对象添加一个引用计数器,每当有一个地方引用该对象时,则该引用计数器值加1,;当引用失效时,则该引用计数器值减1;最后,计数器为0的对象 阅读全文

posted @ 2021-02-24 14:35 signheart 阅读(180) 评论(0) 推荐(0)

java虚拟机3:jvm OutOfMemoryError

摘要: 在JVM中内存一共有3种:Heap(堆内存),Non-Heap(非堆内存) 和Native(本地内存)。 堆内存是运行时分配所有类实例和数组的一块内存区域。非堆内存包含方法区和JVM内部处理或优化所需的内存,存放有类结构(如运行时常量池、字段及方法结构,以及方法和构造函数代码)。本地内存是由操作系统 阅读全文

posted @ 2021-02-24 14:35 signheart 阅读(117) 评论(0) 推荐(0)

java虚拟机6:hotspot 的算法实现

摘要: 1.枚举根节点 2.安全点 3.安全区域 阅读全文

posted @ 2021-02-24 14:35 signheart 阅读(129) 评论(0) 推荐(0)

java虚拟机2:hotspot 对象探究

摘要: 对象的创建 Java是一门面向对象的编程语言,Java程序运行过程中每时每刻都有对象被创建出来。在语言层面上,创建对象通常(例外:克隆、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(本文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 虚拟机遇到 阅读全文

posted @ 2021-02-24 14:35 signheart 阅读(156) 评论(1) 推荐(0)

java虚拟机1:JVM内存结构

摘要: 几个计算机的概念为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念。1、计算机存储单位从小到大依次为位Bit、字节Byte、千字节KB、兆M、千兆GB、TB,相邻单位之间都是1024倍,1024为2的10次方,即1Byte = 8bit,1K = 1024Byte,1 阅读全文

posted @ 2021-02-24 14:35 signheart 阅读(123) 评论(0) 推荐(0)

JVM调优总结 -Xms -Xmx -Xmn -Xss

摘要: 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0 阅读全文

posted @ 2021-02-24 14:34 signheart 阅读(344) 评论(0) 推荐(0)

linux 变量规则

摘要: 1、变量与变量内容之间用等号连接,并且连接的两边不能有空格; 2、如果变量内容里面包括空格之类的特殊字符,用单引号或者双引号将变量内容结合起来,其中双引号会保持特殊字符的原始属性,单引号将特殊字符处理为一般字符 如:version="Red Hat $(uname -r)" echo version 阅读全文

posted @ 2021-02-24 14:31 signheart 阅读(294) 评论(0) 推荐(0)

新版eclipse多行注释去掉多余的星号

摘要: formatter new 一个新的配置 勾掉上面的 保存即可 阅读全文

posted @ 2021-02-24 14:24 signheart 阅读(144) 评论(0) 推荐(0)

mysql 级联删除级联更新 update delete inner

摘要: 正常update update tb_platform_role set ROLE_NAME = '1' where ROLE_NAME = '1' inner sql写法 sqlserver写法: update tb_platform_role set ROLE_NAME='' from tb_p 阅读全文

posted @ 2021-02-24 14:20 signheart 阅读(160) 评论(0) 推荐(0)

导航