摘要: 前言 通过上一篇的 JVM 垃圾回收知识,我们了解了 JVM 具体的 垃圾回收算法 和几种 垃圾回收器。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。 在线上我们经常会遇见如下几个问题: 内存泄露; 某个进程突然 CPU 飙升; 线程死锁; 响应变 阅读全文
posted @ 2018-09-24 18:51 零壹技术栈 阅读(3299) 评论(1) 推荐(0) 编辑
摘要: 前言 在之前的几篇博客中,我们大致介绍了,常见的 垃圾回收算法 及 JVM 中常见的分类回收算法。这些都是从算法和规范上分析 Java 中的垃圾回收,属于方法论。在 JVM 中,垃圾回收的具体实现是由 垃圾回收器(Garbage Collector)负责。 正文 概述 在了解 垃圾回收器 之前,首先 阅读全文
posted @ 2018-09-24 18:44 零壹技术栈 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 前言 本文将由浅及深,介绍Java类加载的过程和原理,进一步对类加载器的进行源码分析,完成一个自定义的类加载器。 正文 (一). 类加载器是什么 类加载器简言之,就是用于把.class文件中的字节码信息转化为具体的java.lang.Class对象的过程的工具。 具体过程: Class对象的创建过程 阅读全文
posted @ 2018-09-24 12:45 零壹技术栈 阅读(851) 评论(0) 推荐(0) 编辑
摘要: 前言 前面介绍了Java内存运行时区域,其中 程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要 阅读全文
posted @ 2018-09-24 12:40 零壹技术栈 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 前言 对于 JVM 运行时区域有了一定了解以后,本文将更进一步介绍虚拟机内存中的数据的细节信息。以JVM虚拟机(Hotspot)的内存区域Java堆为例,探讨Java堆是如何创建对象、如何布局对象以及如何访问对象的。 正文 (一). 对象的创建 说到对象的创建,首先让我们看看 Java 中提供的几种 阅读全文
posted @ 2018-09-24 12:36 零壹技术栈 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 前言 JVM内存区域包括 PC计数器、Java虚拟机栈、本地方法栈、堆、方法区、运行时常量池和 直接内存。 本文主要介绍各个内存区域的作用和特性,同时分别阐述各个区域发生内存溢出的可能性和异常类型。 正文 (一). JVM内存区域 Java虚拟机执行Java程序的过程中,会把所管理的内存划分为若干不 阅读全文
posted @ 2018-09-24 12:35 零壹技术栈 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 前言 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上一次编译,多次运行,具有跨平 阅读全文
posted @ 2018-09-24 12:30 零壹技术栈 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 前言 Selector 是 Java NIO 中的一个组件,用于检查一个或多个通道 Channel 的状态是否处于可读、可写状态。如此可以实现单线程管理多个通道,也就是可以管理多个网络连接。 为什么使用Selector? 用单线程处理多个 Channel 的好处是我需要更少的线程来处理 Channe 阅读全文
posted @ 2018-09-24 12:12 零壹技术栈 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 前言 上文讲到Java NIO一些基本概念。在标准的IO中,都是基于字节流/字符流进行数据操作的,而在NIO中则是是基于Channel和Buffer进行操作,其中的Channel的虽然模拟了流的概念,实则大不相同。 本文将详细阐述NIO中的通道Channel的概念和具体的用法。 Channel和St 阅读全文
posted @ 2018-09-24 12:09 零壹技术栈 阅读(1747) 评论(0) 推荐(0) 编辑
摘要: 前言 在Java NIO中,缓冲区用来临时存储数据,可以理解为是I/O操作中数据暂存的中转站。缓冲区直接为通道(Channel)服务,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方 阅读全文
posted @ 2018-09-24 12:05 零壹技术栈 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 前言 Java NIO全称java non-blocking IO,是指jdk1.4及以上版本里提供的新api(New IO),为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。 Java NIO提供了与标准IO不同的IO工作方式,Channel 阅读全文
posted @ 2018-09-24 12:03 零壹技术栈 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 前言 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 最经典的就是电器的例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极之外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的 阅读全文
posted @ 2018-09-24 12:00 零壹技术栈 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 前言 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用这个原型对象提供的复制办法创建出更多同类型的对象。 原型模式的结构 原型模式要求对象实现一个可以克隆自身的接口(类型)。这样一来,通过原型实例创建新的对象,就不需要关心这个实例本身的类型,只需要实现克隆自身的方法 阅读全文
posted @ 2018-09-24 11:59 零壹技术栈 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 前言 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 (一). 产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是 阅读全文
posted @ 2018-09-24 11:57 零壹技术栈 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 前言 单例模式 (Singleton) 是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。 正文 (一). 优缺点 Java中单例模式 (Singleton) 是一种广泛使用的设计模式。单例模式的主要作用是保证在Java 阅读全文
posted @ 2018-09-24 11:55 零壹技术栈 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 前言 最近在对设计模式进行了一系列总结,本文将给大家关于设计模式的一个整体的介绍。 正文 1. 定义 设计模式是某类特定问题的代码设计解决方案,是一套代码设计的经验总结。 2. 作用 提高代码复用率,降低开发成本和周期 提高代码可维护性、可拓展性 使代码更加优雅,可读性更强 让代码更容易被他人理解 阅读全文
posted @ 2018-09-24 11:54 零壹技术栈 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 前言 Java执行GC判断对象是否存活有两种方式其中一种是引用计数。 引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachab 阅读全文
posted @ 2018-09-24 11:52 零壹技术栈 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 前言 我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 正文 阶段一、单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如To 阅读全文
posted @ 2018-09-24 11:50 零壹技术栈 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 简介 HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。 注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属 阅读全文
posted @ 2018-09-24 10:13 零壹技术栈 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 前言 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP的特性 TCP提供一种面向连接的, 可靠的字节流服务; 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP; TCP使用校验和, 确认 阅读全文
posted @ 2018-09-24 10:03 零壹技术栈 阅读(604) 评论(0) 推荐(0) 编辑