自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创

堆堆的核心概述堆与进程堆针对一个JVM进程来说是唯一的。也就是一个进程只有一个JVM实例,一个JVM实例中就有一个运行时数据区,一个运行时数据区只有一个堆和一个方法区。但是进程包含多个线程,他们是共享同一堆空间的。一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空间,并且堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上

2021-03-31 19:54:58 102

原创 直接内存

直接内存(Direct Memory)直接内存概述不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区/** * IO

2021-03-30 09:58:29 69

原创 本地方法栈

本地方法栈Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小(在内存溢出方面和虚拟机栈相同)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryEr

2021-03-30 09:43:06 76

原创 网络层

网络层IP协议网络层的主要功能:通过TCP或者UDP协议绘制网络地图,数据包选取合适的路径进行传输(网络层基本单位 : 数据包 Package)(1)编址(目标端的IP地址),数据传输的过程当中就必须表明要发送目标端的IP地址;(2)路由选择:选择一条最快的路径进行数据包的传输;(3)拥塞控制:防止数据包传输的过程当中出现拥塞现象,造成数据包的丢失和延迟。IP协议的功能:(1)寻址和路由;(根据对方的IP地址,寻找最佳路径传输信息);(2)传递服务:① 不可靠(IP协议只是尽自己最大努力去传

2021-03-29 20:04:19 312

原创 本地方法接口

本地方法接口本地方法简单地讲,一个Native Method是一个Java调用非Java代码的接囗一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern 告知C++编译器去调用一个C的函数。“A native method is a Java method whose implementation is provided by non-java code.”(本

2021-03-29 18:14:24 105

原创 虚拟机栈

虚拟机栈虚拟机栈的概述虚拟机栈的出现背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的【如果设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的CPU架构进行优化,但是跨平台性大大降低】。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的栈与堆有不少Java开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap)和Java栈(stack)?

2021-03-28 17:49:29 74

原创 计算机网络概述

计算机网络概述基本术语结点(node):网络中的结点可以是计算机,集线器,交换机或者路由器。链路(link ) : 从一个结点到另一个结点的一段物理线路。中间没有任何其他交点。主机(host) :连接在因特网上的计算机。广域网 WAN(Wide Area Network) :任务是通过长距离运送主机发送的数据。城域网 MAN(Metropolitan Area Network):用来将多个局域网进行互连。局域网 LAN(Local Area Network) : 学校或企业大多拥有多个互连的

2021-03-28 16:48:39 65

原创 程序计数器

程序计数器(PC寄存器)PC Register介绍官方文档网址:https://docs.oracle.com/javase/specs/jvms/se8/html/index.htmlJVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。一个线程对应一个 JVM Stack。JVM Stack 中包含一组 Stack Frame。当 JVM 调用一

2021-03-25 19:34:22 232

原创 Linux基本命令

走近Linux系统开机登录开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!一般来说,用户的登录方式有三种:命令行登录ssh登录图形界面登录最高权限账户为 root,可以操作一切!关机在linux领域内大多

2021-03-25 16:44:17 68 1

原创 运行时数据区概述及线程

运行时数据区概述及线程前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区类比一下也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,厨师开始使用运行时数据区,根据字节码指令依次执行,将它翻译为机器指令,让CPU解释运行,

2021-03-19 12:22:06 84

原创 类加载子系统

类加载子系统内存结构概述LV:局部变量表,本地变量表OS:操作数栈DL:动态链接RA:方法返回地址注意:方法区只有HotSpot虚拟机有,J9,JRockit都没有如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎类加载器与类的加载过程类加载子系统的作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution E

2021-03-17 15:59:53 93

原创 JVM与Java体系结构

Java和JVM简介你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOM(内存溢出)!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了。每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优JVM参数,如何解决GC、OOM等问题,一脸懵逼。Java vs C++Java生态圈Java是目前应用最为广泛的软件平台之一。随着Java以及Java社区的不断壮

2021-03-17 09:29:34 175

原创 注解

注解(Annotation)概述从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是Annotation(注解)。Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。Annotation 可以像修饰符一样被使用, 可用于修饰包,类

2021-03-07 08:55:08 84

原创 IO流

IO流File类的使用概述java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。File对象可以作为参数传递给流的构造器常用的构造器public File(String pathname):以p

2021-03-07 08:52:49 143 1

原创 存储引擎

存储引擎完整的建表语句CREATE TABLE `t_x` ( `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;注意:在MySQL当中,凡是标识符是可以使用飘号括起来的。最好别用,不通用。建表的时候可以指定存储引擎,也可以指定字符集。mysql默认使用的存储引擎是InnoDB方式。默认采用的字符集是UTF8。什么是存储引擎呢?存储引擎这个名字只有在mysql中存在。(Oracle中有对应的机制,但是不叫做存储引

2021-03-06 12:18:47 89

原创 mysql的约束

约束类型NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略

2021-03-06 12:06:50 52

原创 集合详解—Map集合

Map集合

2021-03-04 22:33:32 2689 2

原创 集合详解—Set集合

Set集合

2021-03-04 22:31:54 989

原创 集合详解—Collection接口

Collection接口

2021-03-04 22:28:52 340

原创 集合详解—List接口

List接口

2021-03-04 22:27:55 110

原创 Java值传递和引用传递

值传递和引用传递java中只有值传递a()方法中的基本类型变量x,传入到b()方法中,并在b()方法中修改了,则a()方法中的x保持不变a()方法中的引用类型变量x,传入到b()方法中,并在b()方法中修改了,则a()方法中的x与b保持一致/** * 值传递和引用传递 */class Person { int age;}public class Test { public static void change(int num,Person per){ n

2021-03-04 22:01:42 66

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除