
编程
文章平均质量分 61
编程小泓哥
主要方向:AIOPS、web渗透、中间件开发。如果我写的文章对你有帮助,帮忙点赞收藏下文章,顺便在我的博客首页加下我的微信群,我们一起学习进步
展开
-
idea debug jdk源码行数不对以及No executable code found at line
debug发现源码行数不对,或者出现No executable code found at line,一般就是idea的jdk版本与要debug源码的jdk版本不一致导致。或者是本地maven指向的jdk版本与idea配置的jdk版本不一致。现象jdk源码ObjectInputStream设置debug断点,出现No executable code found at line原因本次引发的原因是本地远程debug服务器(linux)程序,本地是windows jdk1.8版本,远程是linux j原创 2021-11-10 16:56:23 · 3404 阅读 · 0 评论 -
java类加载器通俗理解
启动类加载器将那一段加载逻辑定义为启动类加载器启动类加载器不像其他类加载器有实体,它是没有实体的,JVM将C++处理类加载的一套逻辑定义为启动类加载器原创 2021-02-21 00:14:53 · 273 阅读 · 0 评论 -
jvm底层-类加载与oop-klass模型
jvm底层-类加载与oop-klass模型1.1 oop-klass模型1.1.1 InstanceKlass1.1.2 ArrayKlass1.2 类加载的过程1.2.1 加载1.2.2 验证1.2.3 准备1.2.4 解析以下是针对jdk1.81.1 oop-klass模型oop 对象klass 类的元信息看下klass模型类的继承结构从继承关系上也能看出来,类的元信息是存储在原空间(MetespaceObj)。1.1.1 InstanceKlassInstanceKlass:普通的J原创 2021-01-28 23:08:36 · 572 阅读 · 0 评论 -
JVM class文件格式
java从编码到执行x.java 通过javac命令生成x.classx.class通过java命令执行。通过classloader load到内存。代码经常需要引用java类库,所以也需要通过classloader load到内存装载完成后,会调用字节码解释器,或者JIT来进行解释或者编译编译完成之后通过执行引擎开始执行执行引擎对面的就是操作系统和硬件class文件结构数据类型u1 u2 u4 u8和_info(表类型)_info的来源是hotspot源码中的写法u指无符号, u1为一原创 2021-01-19 20:04:33 · 129 阅读 · 0 评论 -
lua语言快速入门
2. Lua 语言比较特别的几个地方2.1 Lua 的下标从 1 开始t={100};print(type(t[0]))print(type(t[1]))--nil--number下标0打印出来是空值2.2 使用 … 来拼接字符串和大部分语言使用 + 不同,Lua 中使用两个点号来拼接字符串:print('hello' .. ', world')2.3 只有 table 这一种数据结构Lua 中只有一种数据结构,那就是 table,它里面可以包括数组和哈希表:local col原创 2021-01-06 09:54:43 · 3208 阅读 · 0 评论 -
ZGC 垃圾回收器简介
算法叫做:Colored Pointer 颜色指针GC信息记录在指针上,不是记录在头部(如Serial收集器记录在markword)这样只和指针打交道而不管指针所引用的对象本身,这样可以不用关心对象改变和引用。记录指针好处:immediate memory use,内存立即就可以重用。zgc和G1一样,region们会被及时的清理和压缩和转移,可以让内存的复用更加的及时。ZGC 目前支持linux 64位,拿出42位指针来代表对象的地址在哪里, 寻址空间4T,一个地址存放8bit,即4TB地址空间原创 2021-01-03 00:33:07 · 723 阅读 · 0 评论 -
java数组内存结构
译自:programcreekJava中的数组存储两种东西之一:要么是原始值(int, char, ...),或是引用(即指针)。当一个对象通过"new"创建时,将会在堆内存分配空间,并且返回一个引用。这对于数组也是一样的,因为数组是对象。1.一维数组int arr[] = new int[3];int[] arr 只是长度为3的整型数组的引用。假设你创建一个长度为10的...翻译 2018-05-17 11:30:21 · 1045 阅读 · 0 评论 -
JVM运行时数据区
译自:programcreek以下是阅读JVM规范时的笔记。下图是显示JVM在运行时的数据区。每个线程的数据区从图中可以看出,每个Thread(线程)都有program counter register(程序计数器),JVM Stack(JVM栈),和Native Method Stack(本地方法栈)。这三个区域都是基于每一个线程的,这些数据区在其所属的线程创建时初始化。...翻译 2018-05-17 11:28:42 · 993 阅读 · 1 评论 -
java反射教程
译自:programcreek什么是反射,为什么它是有用的,以及如何使用它?1.什么是反射?“反射通常是JVM中运行的程序需要检测和修改运行时程序的行为的一种能力。”这个概念通常与内省(Introspection)混淆。以下是这两个术语在维基百科中的定义:内省是指计算机程序在运行时检查对象类型的一种能力,通常也可以称作运行时类型检查。 反射是指计算机程序在运行时可以访问、检测和...翻译 2018-05-17 11:18:38 · 609 阅读 · 0 评论 -
管程 — Java同步的基本思想
译自:programcreek如果你在大学里学习过操作系统课程,你可能会记得,管程(monitor)是操作系统中的一个重要概念。它也可用于Java同步中。这篇文章使用了一个比喻来解释“管程”的基本思想。1.什么是管程管程可以被认为是一个建筑物,其中包含一个特殊的房间(下图的special room)。该特殊的房间在同一时间只能由一个客户(线程)占用,通常包含一些数据和代码。如果...原创 2018-05-17 11:17:28 · 5065 阅读 · 33 评论 -
Java集合的接口和类层次结构图以及代码示例
1. Collection vs Collections首先,“Collection”和“Collections”是两个不同的概念。正如你从下面结构图看到的,“Collection”是集合层次结构中的根接口,而“Collections”是一个类,它提供了一系列静态方法来操作集合。2. Collection层次结构下图展示了Collection的类层次结构。3.Map层次结构...原创 2018-05-17 10:44:12 · 2505 阅读 · 45 评论