当前搜索:

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

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

深入谈谈String.intern()在JVM的实现

前言 String 类的intern方法可能大家比较少用也比较陌生,虽然实际项目中并不太建议使用intern方法,可以在 Java 层来实现类似的池,但我们还是要知道它的原理机制不是。 关于intern方法 通过该方法可以返回一个字符串标准对象,JVM 有一个专门的字符串常量池来维护这...
阅读(257) 评论(0)

JVM的ServerSocket是怎么实现的(下)

概况 JDK 为我们提供了 ServerSocket 类作为服务端套接字的实现,通过它可以让主机监听某个端口而接收其他端的请求,处理完后还可以对请求端做出响应。它的内部真正实现是通过 SocketImpl 类来实现的,它提供了工厂模式,所以如果自己想要其他的实现也可以通过工厂模式来改变的。 ...
阅读(211) 评论(0)

JVM的ServerSocket是怎么实现的(上)

概况 JDK 为我们提供了 ServerSocket 类作为服务端套接字的实现,通过它可以让主机监听某个端口而接收其他端的请求,处理完后还可以对请求端做出响应。它的内部真正实现是通过 SocketImpl 类来实现的,它提供了工厂模式,所以如果自己想要其他的实现也可以通过工厂模式来改变的。 ...
阅读(320) 评论(0)

本地方法怎么映射Java层的数据类型

前言 Java 语言上定义了不同的数据类型,比如有基础类型int、double等等,还有所有类的父类Object等,这些都是 Java 层面的类型,而使用本地方法的处理过程需要有它们对应的类型。 大概的流程 Java 层编写的本地方法,被编译器编译为字节码,字节码将按照规范将不同类型的参...
阅读(303) 评论(0)

System.arraycopy为什么快

前言 在 Java 编程中经常会遇到数组拷贝操作,一般会有如下四种方式对数组进行拷贝。 * for遍历,遍历源数组并将每个元素赋给目标数组。 * clone方法,原数组调用clone方法克隆新对象赋给目标数组,更深入的克隆可以看之前的文章《从JDK角度看对象克隆》。 * System.ar...
阅读(934) 评论(0)

从JDK源码看Java域名解析

前言 在互联网中通信需要借助 IP 地址来定位到主机,而 IP 地址由很多数字组成,对于人类来说记住某些组合数字很困难,于是,为了方便大家记住某地址而引入主机名和域名。 早期的网络中的机器数量很少,能很方便地通过 hosts 文件来完成主机名称和 IP 地址的映射,这种方式需要用户自己维护网络...
阅读(685) 评论(0)

从JDK角度看对象克隆

对象克隆 对象克隆其实是很常见的操作,它完成的功能是将现有对象内容(属性)拷贝到新的对象中,得到的是一个新的对象,而并不只是一个对象引用。 其实对于属性不多的对象我们可以直接通过编写代码逐一属性复制,比如我们可以直接 new 一个新对象,然后通过 set 方法将属性值一个个设置进去。但这种做法...
阅读(649) 评论(0)

细看Java序列化机制

概况 在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类信息、属性及...
阅读(503) 评论(0)

从JDK角度认识枚举enum

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

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

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

从JDK源码看Reader

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

从JDK源码看OutputStream

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

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

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

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

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

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

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

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

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

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

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

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

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

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

前言我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。关于FileSystem类JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各...
阅读(841) 评论(1)
    作者
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 115万+
    积分: 1万+
    排名: 964
    博客专栏
    最新评论