《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#)…...
编写Dockerfile制作自己的镜像并推送到私有仓库
说明:我将用到的私有仓库是Harbor,安装教程参考我的这一篇文章: 安装搭建私有仓库Harbor_Word_Smith_的博客-CSDN博客 一、案例1 1、要求 编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私…...
华为OD-分积木/分苹果
题目描述 哥哥弟弟分一堆积木,每块积木重量不同。弟弟要求平分两组,每组数量可以不同但总重量必须相等。 然而弟弟只会二进制并且加法不进位。例如三块积木 3,5,6 分成两组 [3] 和 [5,6] 弟弟认为 5(二进制1001)加上6(…...
Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些?
Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些? MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCH…...
【懒加载】js实现懒加载、vue实现图片懒加载指令
懒加载 延迟加载,对于一个很长的页面,优先加载可视区域的内容,其他部分等进入可视区域时再加载 懒加载作用 是一种网页性能优化的方式,它能极大的提升用户体验。比如一个页面中有很多图片,但是首屏只出现几张&#…...
微信小程序教学系列(7)
第七章:小程序安全和权限管理 第一节:小程序安全性保障 在开发小程序时,我们要时刻牢记小程序的安全性。毕竟,我们可不希望我们的小程序被黑客入侵或者用户的隐私被泄露。所以,让我们一起来了解一下如何保障小程序的…...
Android 9.0 kenel和frameworks中修改ram运行内存的功能实现
1.前言 在9.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,在产品后续订单中,在某些机型中需要升级下系统内核配置,项目时间比较仓促,所以 来不及对硬件重新定制,就需要软件方面在ram运行内存的容量大小方面作假,修改ram真实的大小容量,所以就需要在ken…...
PHP实践:获取网络上图片的长宽以及图片类型
🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...
使用 DPO 微调 Llama 2
简介 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback,RLHF) 事实上已成为 GPT-4 或 Claude 等 LLM 训练的最后一步,它可以确保语言模型的输出符合人类在闲聊或安全性等方面的期望。然而,它也给 NLP 引入了一些 RL 相关…...
数据库——事务,事务隔离级别
文章目录 什么是事务?事务的特性(ACID)并发事务带来的问题事务隔离级别实际情况演示脏读(读未提交)避免脏读(读已提交)不可重复读可重复读防止幻读(可串行化) 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出…...
对《VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库》的改进
《VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库》使用的Activex DLL公共对象是需要先注册的。https://blog.csdn.net/weixin_45707491/article/details/132437502?spm1001.2014.3001.5501 Activex DLL事前注册,一次多用说起来也不是啥大问题&#x…...
seo做的最好的十个网站/泰安seo网络公司
flex 结合sandy引擎创作 (1) http://blog.csdn.net/hero82748274/archive/2009/01/22/3850800.aspx 之前利用flex创建一个立方体,但是还没有贴图,以及互动。在这里我们添加一些额外的操作,包括鼠标 和键盘的操作。以及…...
个人网站备案名字重要吗/互联网网络推广公司
团队项目第三周总结 经过了三周的努力我们的项目已经基本完成啦,团队付出的努力也得到了回报。这一周主要的工作相对前一周来讲比较轻松,但比较繁琐。在技术方面,我们这一周主要是完善了小的技术功能,主要是在做非功能性需求。在界…...
游戏租号网站开发/最火的推广软件
接到一个任务:用 Elasticsearch 实现搜索银行支行名称的功能。大概就是用户输入一截支行名称或拼音首字母,返回相应的支行名称。比如,用户输入"工行"或者"gh",我需要返回"工行XXX分行"类似这样的结…...
olam wordpress/北京关键词优化报价
1、链接的onclick事件被先执行,href的事件后执行 2、就今天遇到的问题说一下,通过a标签的onclick事件实现点击后定位到指定的div,或者是执行其他函数(比如弹出artdialog等),页面如果有滚动条,那…...
搭建个网站/怎么做好网站营销推广
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/40124247 【简介】 个人在oracle路上的成长记录&#x…...
东莞企业网站建设营销/新媒体运营
1月6日,物理学院量子传感与量子信息实验室蔡建明教授团队以“Dynamic framework for criticality-enhanced quantum sensing”为题在《物理评论快报》(Physical Review Letters)发表研究论文[2],提出一种量子临界动力学增强的量子…...