《JVM修仙之路》初入JVM世界
《JVM修仙之路》初入JVM世界
博主目前正在学习JVM的相关知识,想以一种不同的方式记录下,娱乐一下
清晨,你睁开双眼,看到刺眼的阳光,你第一反应就是完了完了,又要迟到了。刚准备起床穿衣的你突然意识到不对,这好像不是我家呀。。。。。这是哪呀
你的名字是小王,是21世纪的一个普通程序员,过着996的生活。只是今天一睁眼,你发现你好像是穿越了。正在你迷迷瞪瞪的时候,一个和你年龄相近的小姐姐快速走进来,迅速拉起你的手,嘴里在嘟囔着,快走,再晚就赶不上J1大佬的表演了。
你心里更懵逼了,嘛是J1,还没等你问出这个问题,你们就已经到了表演现场。
台上表演的人时而吐出火焰,时而生成玄冰,台下传来阵阵的欢呼。这时的你更加笃定了穿越的想法。你转头问向小美,台上这些人是怎么做到的。小美苦笑一声,随后应道我也不清楚,这也是我第一次见到这些大佬现场表演。这时一位白发苍苍的老人开口道,这是因为他们的JVM中的内力足够深厚。

听到JVM这三字母的时候,你一下子懵逼了,心里想,嘛玩意,穿个越还离不开这东西,回忆着穿越前学这玩意学的恶心,面试完全还回去了。你转头看向老人,只见老人虽已两鬓斑白,但仍站得笔直,眼神中透漏着一股坚毅,一袭白衫,给人一种世外高人的感觉。你接着问,那我们普通人可以像他们这样吗?老人点点头道,可以是可以,不过要受常人所不能承受之苦。老人接着说,普通人因为内力太少,只可支撑一个本地方法栈,(java语言实现的方法有局限,对于一些底层的功能需要借助与C或C++实现的方法来实现,这些方法就称为本地方法,而为其方法运行时提供内存空间的部件就称为本地方法栈)只能支撑我们的日常生活。而台上这些J2的人已经将内力提升到更高层次的境界,从而可以生成火焰和玄冰。其主要原因就是他们JVM中拥有了虚拟机栈和程序计数器。
为了证实心中的想法,你再次问向老人,这俩是什么?你疑惑的看向老人。老人缓缓答道,虚拟机栈就是存储供这些技能消耗的内力的容器,并且会为每一个正在释放的技能单独分配一部分内力,其他技能就算内力释放完了,就不能侵占该技能的内力,这样将不同技能需要的内力分割出来可以避免走火入魔(内力就是内存,一个技能就是一个线程,正在释放的技能就是正在运行的方法,走火入魔就是线程不安全),并且技能释放完毕之后,该技能占用的内力可以在一段时间内返回。
你听完之后,进一步证实心中的想法,这里的技能机制和JVM是相似的。技能对应一个线程,内力就对应给该线程分配的内存。

你接着问,那这个程序计数器是干啥的,老者长吁一口气,想着,你这小子没完了,问个没完了。老者无奈的摇了摇头,然后说,这个我也不清楚,你有兴趣的话可以去极地剋哪里看看,可能有人可以解答你的疑问。看出了老者的不耐烦,你也只好扭过头去看台上大佬的表演。
在看了一会表演之后,你就和小美一起回去了,一整晚你都在琢磨,怎么让自己内力增加,进而拥有虚拟机栈和程序计数器,另外极地剋在哪里。
第二天一早,天才蒙蒙亮,你家的门被一脚踹开,这巨大的声响直接把你吓醒,等你朦朦胧胧中缓过神后,才看出这是小美。小美开口道,我知道极地剋在哪了。听到这你可就不困了,随便穿上衣服就让小美带着你去极地剋了。
一路上的风景变化很大,河流逐渐增多,并且越靠近极地剋,水中的鱼越多,越欢快。在经过了两天半的赶路之后,你们终于到了极地剋的大门前。
门是虚掩的,你和小美悄悄溜了进去,正进入,就看见一个人在熟练释放着技能,不同的是他们可以在释放一个技能的途中,可以停止释放另一个技能,而后又可以接着释放上一个技能。你看着其中一个人首先释放了一块寒冰之后,随后又吐出了一团火焰,两种强大的技能一结合,突然亮起白光,然后变成了水蒸气。

你心里想,属实大聪明。就在这时练功的这位大佬,发现了你俩,大吼一声,来者何人。
你赶忙解释出你来的目的,交流之后,这位大佬就给你解答了程序计数器的作用,其实程序计数器的作用就是记录技能的释放到哪一步了,并且每一个技能都会有一个单独的程序计数器,可以记录释放技能时下一步要干啥,并且可以使得在不同的技能之间切换时可以准确的接上下一步要干啥。另外,为了释放技能的准确性,我们会将一个技能又划分为不同的方法,每一个方法占用虚拟机栈的一部分空间,依次进行执行。
这时,你明白了,这就是为啥它可以释放出水蒸气的原因了。
这时,作为好奇宝宝的你,想问一下怎么才能提升自己的内力,大佬微微一笑,看向山下的河流

==============================================================================
内容中可能存在错误,希望大佬们指正,如果有好玩的想法的话,欢迎大家一起交流交流

相关文章:
《JVM修仙之路》初入JVM世界
《JVM修仙之路》初入JVM世界 博主目前正在学习JVM的相关知识,想以一种不同的方式记录下,娱乐一下 清晨,你睁开双眼,看到刺眼的阳光,你第一反应就是完了完了,又要迟到了。刚准备起床穿衣的你突然意识到不对&…...
苍穹外卖 day1 搭建成功环境
引入 idea找不到打包生成的文件目录怎么办,首先点击这个小齿轮 show ecluded files然后就能找到隐藏的文件 这个jar包内含tomcat,可以直接丢在linux上用 开发环境:开发人员在开发阶段使用的环境,一般外部用户无法访问 测试环…...
智能主体按照功能划分
(1) 构件接口主体 构件接口主体提供构件与用户之间的接口。当一个用户通过代理主体向 元组空间提出申请,并找到相匹配的构件主体时,此构件主体会将其所在构件主体 组中的构件接口主体通过申请用户的代理主体传送到用户的界面。 (2) 构件主体 通过构…...
python中的matplotlib画折线图(数据分析与可视化)
先导包(必须安装了numpy 、pandas 和matplotlib才能导包): import numpy as np import pandas as pd import matplotlib.pyplot as plt核心代码: import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.se…...
大数据数据仓库
一.在线教育 1.数据采集 1.数仓概念 数据仓库是为企业制定决策,提供数据支持的。数据采集和存储、对数据进行计算和分析 2.项目架构 2.数据分类 业务数据 用户行为数据 爬虫数据 2.离线数仓 3.实时数仓...
Java“牵手“速卖通商品详情页面数据获取方法,速卖通API实现批量商品数据抓取示例
速卖通商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取速卖通商品详情数据,您可以通过开放平台的接口或者直接访问速卖通商城的网页来获取商品详情信息。以下是两种常用方法的介绍:…...
【Git】代码误推送还原(真实项目环境,非纸上谈兵)
背景 RT, 我今天眼睛花了,不小心把工作分支【合并】到了一个不相干的功能分支上,并且代码已经推送到远程仓库了。于是,只能尝试还原到上一次提交中。 【合并】分支有一个点我们是不可避免的,文字很难描述,…...
CPU 飙升?这3大场景助你精准定位
1 常用的 Load 分析方法 CPU高、Load高 通过 top 命令查找占用CPU最高的进程PID; 通过top -Hp PID查找占用CPU最高的线程TID; 对于java程序,使用jstack打印线程堆栈信息; 通过printf %x tid打印出最消耗CPU线程的十六进制; …...
6、Spring_Junit与JdbcTemplate整合
Spring 整合 1.Spring 整合 Junit 1.1新建项目结构 1.2导入依赖 导入 junit 与 Spring 依赖 <!-- 添加 spring 依赖--> <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version…...
Redis是如何保证高可用的?
Redis这种基于内存的关系型数据库我们在选用的时候就是考虑到它的快。而且可以很方便的实现诸如分布式锁、消息队列等功能。 笔者在前一段秋招面试的时候就被提问,“Redis是怎么保证高可用的?” 后续的子问题包含,集群模式是怎么实现的&…...
精益求精:通付盾安卓应用加固升级,为移动安全保驾护航!
在如今竞争激烈的移动应用领域,保障应用资源的安全性成为刻不容缓的任务。最近,通付盾针对资源加密方案进行了全面升级,大幅增强了其兼容性,实现了更全面的资源文件类型保护。这次升级为移动应用的安全性和稳定性迈出了坚实的一步…...
javaweb01-html、css基础
话不多说,先来一张泳装板鸭镇楼 接上一开篇, 首战以web的三大基石开头(html、css、js),js内容比较多,下一序章讲解,这一章节主要以html和css为主。 目录 一、初始web前端 二、HTML标签结构 三、…...
牛客复盘] 2023河南萌新联赛第(七)场:信息工程大学 B\I 20230823
牛客复盘] 2023河南萌新联赛第(七)场:信息工程大学 B\I 20230823 总结B 七夕1. 题目描述2. 思路分析3. 代码实现 I 细胞分裂1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 场外OB做了B和I题,只能说这场有点离谱。B 并查…...
使用PyMuPDF添加PDF水印
使用Python添加PDF水印的博客文章。 C:\pythoncode\new\pdfwatermark.py 使用Python在PDF中添加水印 在日常工作中,我们经常需要对PDF文件进行处理。其中一项常见的需求是向PDF文件添加水印,以保护文件的版权或标识文件的来源。本文将介绍如何使用Py…...
window如何实时刷新日志文件
1 安装windows git 下载地址:Git - Downloading Package (git-scm.com) 2 打开git bash 输入tail.exe -f 日志文件路径...
动态代理的两个使用方式(手动实现+SpringAOP实现)-Demo
一、手动实现 1、具体代码 package com.xch.proxy;/*** 具体业务接口** author XuChenghe* date 2023/8/18 15:09*/ public interface Star {/*** 唱歌方法** param name* return*/String sing(String name);/*** 跳舞方法*/void dance();} package com.xch.proxy;/*** 具体…...
面试话术(MQ+mybatis+nginx+redis+ssm+mysql+linux)
面试话术 RabbitMq1、介绍一下rabbitmq2、如何保证消息确定消息发送成功,并且被消费成功,有什么保障措施3、如何保证消息不被重复消费4、RabbitMQ 宕机了怎么处理 授权话术1、你给我说一下授权认证(登陆注册)的逻辑2、说一下jwt3、…...
JSON的理解
文章目录 1、什么是JSON2、为什么要用JSON3、JSON的格式规定3.1 对象(0bject):对应着JS中的对象3.2 数组(Array):对应着JS中的数组形式3.3 简单形式:对应着JS中的基础数据类型 4、JSON和Js的转换5、JSON对象…...
面试热题(二叉树的最大路径)
路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给定一个二叉树的根节点 root…...
C#设计模式之--六大原则 开闭原则
设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#)…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
Ray框架:分布式AI训练与调参实践
Ray框架:分布式AI训练与调参实践 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 Ray框架:分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...
OpenHarmony标准系统-HDF框架之I2C驱动开发
文章目录 引言I2C基础知识概念和特性协议,四种信号组合 I2C调试手段硬件软件 HDF框架下的I2C设备驱动案例描述驱动Dispatch驱动读写 总结 引言 I2C基础知识 概念和特性 集成电路总线,由串网12C(1C、12C、Inter-Integrated Circuit BUS)行数据线SDA和串…...
c++算法学习3——深度优先搜索
一、深度优先搜索的核心概念 DFS算法是一种通过递归或栈实现的"一条路走到底"的搜索策略,其核心思想是: 深度优先:从起点出发,选择一个方向探索到底,直到无路可走 回溯机制:遇到死路时返回最近…...
CMake系统学习笔记
CMake系统学习笔记 基础操作 最基本的案例 // code #include <iostream>int main() {std::cout << "hello world " << std::endl;return 0; }// CMakeLists.txt cmake_minimum_required(VERSION 3.0)# 定义当前工程名称 project(demo)add_execu…...
jieba实现和用RNN实现中文分词的区别
Jieba 分词和基于 RNN 的分词在技术路线、实现机制、性能特点上有显著差异,以下是核心对比: 1. 技术路线对比 维度Jieba 分词RNN 神经网络分词范式传统 NLP(规则 统计)深度学习(端到端学习)核心依赖词典…...
