关闭
当前搜索:

从JDK角度认识枚举enum

前言 对于比较稳定的值集合,Java 提供了枚举来定义,通过它可以很方便管理集合。那么 Java 的枚举是通过怎样的机制实现的?本文将从 JDK 角度来看看枚举的原理。 定义枚举 使用很简单,比如定义一个表示“环保”、“交通”、“手机”三个值的集合,那么就可以直接定义如下,然后可直接 Labels.ENVIRONMENT 使用, public enum Labels { E...
阅读(461) 评论(0)

[置顶] 我的2017年文章汇总——JDK源码篇

2018已经开始,可能还有360天结束。 Eventually a single thing can only get so big. You need to do something else. 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推...
阅读(777) 评论(0)

从JDK源码看字节流和字符流

在各种 IO 中都会涉及到流的概念,比如网络 IO、磁盘IO、内存IO或其他设备IO,于是抽象出流概念,可以分为两大类:输出流和输入流。有了这些抽象就能很方便表达网络从某端传输到另外一端,或对磁盘进行读写操作。而 Java 还分出字节流和字符流,对字节和字符提供了方便的操作。从JDK源码看InputStream从JDK源码看OutputStream从JDK源码看Writer从JDK源码看Reader...
阅读(1076) 评论(0)

从JDK源码看Reader

概况Reader 是一个用于读字符流的抽象类,它将一些相通的读相关操作抽象到此类,方便各种读操作类的实现。一般来说子类只需要实现它的 read 和 close 两个方法,但如果有需要还可以重写 Reader 提供的公共方法。JDK 在 Reader 的基础上实现了很多有用的 xxxReader ,包括 BufferedReader、CharArrayReader、FilterReader、Inpu...
阅读(1497) 评论(0)

从JDK源码看OutputStream

概况前面已经了解了输入流《从JDK源码看InputStream》,接着看对应的输出流,JDK 给我们提供了很多实用的输出流 xxxOutputStream,而 OutputStream 是所有字节输出流的抽象。包括 ByteArrayOutputStream 、FilterOutputStream 、BufferedOutputStream 、DataOutputStream 和 PushbackO...
阅读(1484) 评论(0)

JDK不同操作系统的FileSystem(Windows&Unix-like)

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(1333) 评论(0)

JDK不同操作系统的FileSystem(unix-like)下篇

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(1466) 评论(0)

JDK不同操作系统的FileSystem(unix-like)中篇

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(1388) 评论(0)

JDK不同操作系统的FileSystem(unix-like)上篇

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(1617) 评论(1)

JDK不同操作系统的FileSystem(Windows)下篇

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(521) 评论(0)

JDK不同操作系统的FileSystem(Windows)中篇

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(513) 评论(0)

JDK不同操作系统的FileSystem(Windows)上篇

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 u...
阅读(661) 评论(1)

从JDK源码看InputStream

概况JDK 给我们提供了很多实用的输入流 xxxInputStream,而 InputStream 是所有字节输入流的抽象。包括 ByteArrayInputStream 、FilterInputStream 、BufferedInputStream 、DataInputStream 和 PushbackInputStream 等等。继承结构--java.lang.Object --java.i...
阅读(1004) 评论(0)

从JDK源码看Writer

概况Writer 是一个用于写字符流的抽象类,它将一些相通的写相关操作抽象到此类,方便各种写操作类的实现。一般来说子类只需要实现它的 write、flush 、close 等三个方法,但如果有需要还可以重写 Writer 提供的公共方法。JDK 在 Writer 的基础上实现了很多有用的 xxxWriter ,包括 BufferedWriter、CharArrayWriter、FilterWrite...
阅读(467) 评论(0)

从JDK源码看关闭钩子

关闭钩子Java提供了Shutdown Hook机制,它让我们在程序正常退出或者发生异常时能有机会做一些清场工作。使用的方法也很简单,Java.Runtime.addShutdownHook(Thread hook)即可。关闭钩子其实可以看成是一个已经初始化了的但还没启动的线程,当JVM关闭时会并发地执行注册的所有关闭钩子。钩子执行时机向JVM注册关闭钩子后的什么时候会被调用,什么时候不会被调用呢?...
阅读(724) 评论(0)

从JDK源码看System.exit

前言在编写的Java程序中有时会遇到用 System.exit 来关闭JVM,其中调用 exit 方法时会包含一个状态参数n,即System.exit(n)。这其实是一个约定值,如果为0则表示正常关闭,而非0则表示非正常关闭。这里我们从JDK源码看下不同状态都是怎么处理的。System与Runtime先看System类的exit方法如下,可以看到它是间接调用了Runtime对象的exit方法。pub...
阅读(772) 评论(0)

从JDK源码角度看Float

关于IEEE 754在看Float前需要先了解IEEE 754标准,该标准定义了浮点数的格式还有一些特殊值,它规定了计算机中二进制与十进制浮点数转换的格式及方法。规定了四种表示浮点数值的方法,单精确度(32位)、双精确度(64位)、延伸单精确度(43位以上)与延伸双精确度(79位以上)。多数编程语言支持单精确度和双精确度,这里讨论的Float就是Java的单精确度的实现。浮点数的表示浮点数由三部分组...
阅读(750) 评论(0)

从JDK源码角度看Long

概况Java的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其他类型之间的转换方法。除此之外还有一些位相关的操作。继承结构--java.lang.Object --java.lang.Number --java.lang.Long主要属性public s...
阅读(3477) 评论(3)

从JDK源码角度看Integer

概况Java的Integer类主要的作用就是对基本类型int进行封装,提供了一些处理int类型的方法,比如int到String类型的转换方法或String类型到int类型的转换方法,当然也包含与其他类型之间的转换方法。除此之外还有一些位相关的操作。继承结构--java.lang.Object --java.lang.Number --java.lang.Integer主要属性第一部分pu...
阅读(10184) 评论(7)

从JDK源码角度看Short

概况Java的Short类主要的作用就是对基本类型short进行封装,提供了一些处理short类型的方法,比如short到String类型的转换方法或String类型到short类型的转换方法,当然也包含与其他类型之间的转换方法。继承结构--java.lang.Object --java.lang.Number --java.lang.Short主要属性public static fin...
阅读(1688) 评论(0)
24条 共2页1 2 下一页 尾页
    作者
    https://github.com/sea-boat

    公众号:(内容包括分布式、机器学习、深度学习、NLP、Java深度、Java并发核心、JDK源码、Tomcat内核等等)



    微信:

    打赏作者

    如果您觉得作者写的文章有帮助到您,您可以打赏作者一瓶汽水(*^__^*)

    个人资料
    • 访问:1008936次
    • 积分:13508
    • 等级:
    • 排名:第1118名
    • 原创:319篇
    • 转载:5篇
    • 译文:1篇
    • 评论:340条
    博客专栏
    最新评论