摘要:
Java内存模型(JMM)的设计是建立在物理机的内存模型之上的,因此了解物理机内存模型的原理也十分重要。简单来说,物理机的内存模型经历了3个阶段: 早期的CPU计算速率与内存操作速率相当,CPU直接从内存中读取数据,运行程序计算,得出结果再写入内存; 后来CPU飞速发展,内存的速率已经远不及CPU的 阅读全文
摘要:
众所周知,Java语言的一个重要特性就是自动内存管理与垃圾回收机制。垃圾收集也被称作GC(Garbage Collection),在讲到GC的时候,我根据《深入理解Java虚拟机》中提到的内容,打算从三个方面讲述: 哪些内存需要回收? 什么时候进行回收? 怎样回收? 首先从理论上讲述这三个问题,然后 阅读全文
摘要:
HotSpot是一种JVM的实现,它也是目前适用范围最广的Java虚拟机,拥有准确式内存管理和热点代码探测技术等优势。所谓准确式内存管理(Exact Memory Management),就是指虚拟机能够准确判断内存中存放的数据类型,需要了解的话可以进一步去学习。本次主要记录HotSpot中堆内存里 阅读全文
摘要:
在学习JVM的时候,其中最重要也是最基础的一部分就是了解JVM对内存的划分设计。我们知道Java通过GC来自动管理内存,这样的好处是我们不需要时刻关心内存的回收,但是这不代表我们就一劳永逸,我们仍然需要学习JVM的内存管理,了解JVM的内存区域划分,知道内存溢出的问题所在,能够排错。 在Java程序 阅读全文
摘要:
现有一个用spring boot的后台项目,项目开发rest端口与前端交互,使用Jython调用本地python代码。项目基于IDEA开发,部署在windows系统中。 第一个坑:跨域请求 前端使用ajax请求后台接口,后台返回json数据。后台独立测试(curl、restlet)没问题,前端出现报 阅读全文
摘要:
在Mac平台上编译OpenJDK的步骤,遇到的问题以及解决办法 阅读全文
摘要:
上一个笔记中分析了HashMap的大概结构以及基本用法。这一次笔记就再深入了解一下底层的实现细节。我们首先从hash函数以及扩容过程讲起,然后再了解一下链表数据结构以及红黑树的实现。 hash函数 hash音译为哈希,学名称为散列,功能是将任意长度的输入通过散列函数变换为固定长度的输出。HashMa 阅读全文
摘要:
文件流的基本类有四种: FileInputStream/FileOutputStream FileReader/FileWriter 一、File对象 文件流是一种节点流,它沟通程序与文件之间的数据传输。在Java中,文件被抽象为File。 我们通过File的构造器创建File对象,最常用的是通过文 阅读全文
摘要:
所谓input/output,本质上就是将数据从buffer中移动的过程。buffer指用户空间中用于程序使用的内存。 从buffer中取出数据的过程称为output,也称为写操作; 将数据装进buffer的过程称为input,也称为读操作。 Java将计算机中输入输出的操作抽象为流,也就是IO流。 阅读全文
摘要:
最近在看Java中的IO相关知识,发现对字节和字符的理解还不够。写篇总结记录一下。 一、字节 所谓字节(Byte),是计算机数据存储的一种计量单位。一个二进制位称为比特(bit),8个比特组成一个字节,也就是说一个字节可以用于区分256个整数(0~255)。由此我们可以知道,字节本是面向计算机数据存 阅读全文