Mark

30道 有趣的 的 JVM 面试题

百般思念 提交于 2020-11-03 09:06:00
[toc] 前段时间在忙大数据,也对市场技术有了一个新的理解,学到老,学到老嘛。今天来和大家分享一下JVM常见的面试题,今天来和大家分享一下。大多都是大厂的实战面试题,来和小刘看一下吧! 1、JVN内存结构 方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有的内存区域。 Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 方法区(Method Area),方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 JVM栈(JVM Stacks),与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame

计算机组成原理

為{幸葍}努か 提交于 2020-11-03 02:22:06
计算机组成原理 计算机的五大组成部分,分别为:控制器、存储器、运算器、输入设备和输出设备。其中控制器+运算器是计算机的中央处理器(CPU),相当于人类的大脑。 一、控制器(一) 计算机的指挥系统。大脑指挥全身的器官运行,但是大脑不会随意的指挥身体行动,大脑只有在接受指令后才会控制身体行动。 二、运算器(二) 运算器是计算机的运算系统。大脑除了指挥,无时无刻还在运算。即实现算术运算和逻辑运行。 1、算术运算:1+1=2 2、逻辑运行:吃饭太闲,喝水? 三、控制器+运算器(计算机的忠言处理器CPU) 吃饭流程例子。 1、当你吃饭的时候,大脑会接受吃饭的指令,之后把指令翻译成你身体需要进行的动作(控制器) 2、如果吃的是西餐,则使用勺子;如果吃的是中餐,则使用筷子(运算器)。 四、存储器 计算机的存储系统。需要注意的是:无论内存还是外存,计算机存储的数据格式都是01,01的形式,0和1由电压的电平控制(了解知识点)。计算机的存储的一个二进制单位称为1bit,8bit=1Bytes称为一个字节,1024Bytes=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB,1024TB=1PB。 下面展示了目前市面上常用的存储器,从图中可以看出存储器的速度、容量和价格是相互矛盾的。 ##4.1 内存(主存) 内存是计算机内临时存储数据的硬件设备,由于内存读取数据速度较快内存

Linux:cut命令详解

大兔子大兔子 提交于 2020-11-02 14:36:19
cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令。 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。 当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。     为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。     按Ctrl+C(中断键可以终止该命令的执行,并且返回Shell提示符状态。 语法 cut(选项)(参数) 选项 -b:仅显示行中指定直接范围的内容; -c:仅显示行中指定范围的字符; -d:指定字段的分隔符,默认的字段分隔符为“TAB”; -f:显示指定字段的内容; -n:与“-b”选项连用,不分割多字节字符; --complement:补足被选择的字节、字符或字段; --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; --help:显示指令的帮助信息; --version:显示指令的版本信息。 参数 文件:指定要进行内容过滤的文件。 实例 1.例如有一个学生报表信息,包含No、Name

图论复习总结

六眼飞鱼酱① 提交于 2020-10-31 03:06:43
0.格式 适用范围 算法思想 代码实现:空间申请,初始化,算法步骤,输入输出,时间复杂度 1.dijkstra算法 适用范围:图论相关,单源最短路求法,无负权边, 算法思想:bfs,贪心。不断的使用可达集合中未被使用的最短的端点信息更新到达每一个顶点最短距离信息。 代码实现: plan A:使用邻接矩阵储存边信息(不可达初始化为无穷),使用数组维护最短路信息(初始化为无穷),使用数组维护到达每个端点的路径(数组保存元素表示上一个顶点,初始化为-1),使用数组维护未被访问集合(初始化为0表示未被访问)。 输入:V,E,源点。 初始化,让源点直接相连顶点的最短距离更新为最短直接相连距离。设置源点被访问。 每一步遍历找到最短未被访问端点,记它为已访问,用它更新其他顶点的最短路信息。 输出:到每个端点的最短路。 时间复杂度:O(n^2) 代码: #include <bits/stdc++.h> using namespace std; const int maxn= 1010 ; #define typec int const typec INF = 0x3f3f3f3f ; bool vis[maxn]; int pre[maxn]; int cost[maxn][maxn]; int lowcost[maxn]; void dijkstra(typec cost[][maxn]

Java GC

柔情痞子 提交于 2020-10-30 08:02:38
1. Java堆内存结构 Java将堆内存分为3大部分:新生代、老年代和永久代,其中新生代又进一步划分为Eden、S0、S1(Survivor)三个区。结构如下图所示: 1. Java堆内存结构 Java将堆内存分为3大部分:新生代、老年代和永久代,其中新生代又进一步划分为Eden、S0、S1(Survivor)三个区。结构如下图所示: 程序中new出来的对象会在新生代里的Eden区里面分配空间,如果存活时间足够长将会进入Survivor区,进而如果存活时间再长,还会被提升分配到老年代里面。持久代里面存放的是Class类元数据、方法描述等。 1.S0和S1是两个大小相等的区域,分配内存空间只会在其中某一个进行,另外一个空间是用来辅助进行新生代进行垃圾回收的,因为新生代的垃圾回收策略基于复制算法,其思想是将Eden区及两个Survivor中的某个区,如S0区里面需要存活的对象复制到另外一个空的Survivor区,如S1区,然后就可以回收Eden和S0区域里面的死亡对象。下一次回收就对调S0和S1两个区的角色,S1用来存放存活对象而S0用来辅助回收垃圾,如此循环利用。 2.有些文章并不将永久代纳入Java堆内存。其实永久代就是我们所说的方法区,而方法区经常被称为Non-Heap(非堆)。仅仅在HotSpot虚拟机的实现中才将GC分代收集扩展至方法区,或者说使用永久代来实现方法区

JVM 内存了解

点点圈 提交于 2020-10-29 08:39:40
说说JVM的内存布局? Java虚拟机主要包含几个区域: 堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S1 3个部分,他们默认的比例是8:1:1的大小。 栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧的结构又包含局部变量表、操作数栈、动态连接、方法返回地址。 局部变量表用于存储方法参数和局部变量。当第一个方法被调用的时候,他的参数会被传递至从0开始的连续的局部变量表中。 操作数栈用于一些字节码指令从局部变量表中传递至操作数栈,也用来准备方法调用的参数以及接收方法返回结果。 动态连接用于将符号引用表示的方法转换为实际方法的直接引用。 元数据:在Java1.7之前,包含方法区的概念,常量池就存在于方法区(永久代)中,而方法区本身是一个逻辑上的概念,在1.7之后则是把常量池移到了堆内,1.8之后移出了永久代的概念(方法区的概念仍然保留),实现方式则是现在的元数据。它包含类的元信息和运行时常量池。 Class文件就是类和接口的定义信息。 运行时常量池就是类和接口的常量池运行时的表现形式。 本地方法栈:主要用于执行本地native方法的区域 程序计数器:也是线程私有的区域

java.io.IOException: mark/reset not supported 异常

五迷三道 提交于 2020-10-29 00:30:41
在 Azure 上传文件的时候遇到了一个下面的异常: java.io.IOException: mark/reset not supported at java.base/java.io.InputStream.reset(InputStream.java:655) at com.azure.storage.common.Utility.lambda$convertStreamToByteBuffer$4(Utility.java:236) at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:46) at reactor.core.publisher.Mono.subscribe(Mono.java:4213) 问题解决 当给定的流不支持 mark 和 reset 就会报这个错误。 我们用的代码是: blobClient .upload ( inputStream , inputStream .available ()); InputStream 是不支持 mark 和 reset 的。 BufferedInputStream继承于FilterInputStream,提供缓冲输入流功能。 缓冲输入流相对于普通输入流的优势是,它提供了一个缓冲数组,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败

听周华健专辑《少年》有感(一)-献给曾经的自己

半世苍凉 提交于 2020-10-28 17:04:05
从某个人生阶段开始,热衷追逐新鲜事物的心情趋缓,我们终于懂得为何向往“一成不变”:不变的声音,不变的朋友、事物,总是让人收获心安。相隔 13 年,在全新专辑《少年》里,曾经感动许多人,热情温暖如阳、爽朗高昂如少年的周华健,带着他的木吉他,音乐的经典模样,和与歌迷共度过的美好时光,再次坐到我们身边。 深耕乐坛 30 年,已是深入人心的资深歌手,做音乐对周华健来说依然是人生最快乐的一件事,直到“再也没有东西想做”之前,这位“永恒少年”仍会继续任性,让音乐由心而发,“KEEP ROLLING, KEEP WAKIN”。 相对于当下音乐技术进步、出歌快,周华健的专辑仍然是“手工打造”的“慢功夫”,三年磨一剑。作品以他标志性的民谣风为核心,是他对自己谱写过的经典声音的一次回归,也是一次倒退时光,寻找昨日初心的旅行。新歌仍然带着融化内心的情感力量,是对这份真挚不需多言的见证。 专辑同步发行的摄影集,由知名电影剧照师吴易致 Mark Wu 掌镜,记录下这位华语乐坛实力唱作人的岁月讴歌。周华健的儿子周厚安也一同参与了拍摄,两位“少年”跨越时间藩篱,展现纯粹、深厚的父子之情。 举起一杯茶,只敬少年 唱起一首歌,只唱少年 眼前的这张可爱的笑脸 是世界尽头的怀念 人生路,一场旅途 我想在寻找的旅途中唤醒昨天的故事 人生路,一场迷途 我却在旅途中陷入迷途,一往无前。 在世界毁灭之前 我多么羡慕你转身离去

SpaceX龙飞船顺利返航,溅落太平洋!后续太空任务已安排上

只愿长相守 提交于 2020-10-27 18:33:22
作者| 硅谷洞察 来源|硅谷洞察 美国商业航天公司SpaceX生产的“龙”飞船于北京时间8月3日2时48分按照预期成功降落在墨西哥湾,随后搜救船于3点18分将龙飞船从海中捞起,凌晨4点,罗伯特·贝肯(Robert Behnken)和道格拉斯·赫尔利(Douglas Hurley)两名宇航员成功出舱。 在经历了64天之后,他们成功的从国际空间站返回了地球。 搜救船在返回海滩的途中还出现了一段小插曲。 在搜救船捞起龙飞船的海域有非常多的私人船只,这其实并不符合安全准则。大量的私人船只围观让这搜救船的返程路上有一些拥堵,不过船员们最终还是开辟了一条宽阔的路线快速将宇航员带回陆地。 ▲ 在搜救过程中,周围有许多私人船只围观;图片来自NASA直播截图 当地时间5月30日,两名宇航员搭载龙飞船在美国国家航天局肯尼迪航天中心成功发射进入太空。此次发射的成功不仅标志着美国时隔十年再次拥有了本土发射载人航天器的能力,更让SpaceX成为了世界上第一家能够实现载人航天的私人商业公司。 最新报道显示,在过去近两个月的时间里,NASA的两名宇航员鲍勃·贝肯(Bob Behnken)和道格·赫利(Doug Hurley)还在轨道上完成了四次太空行走,帮助在国际空间站外安装新电池。 SpaceX的创始人马斯克在发射成功后的新闻发布会中曾说到: 虽然发射是最令人难以忘怀的瞬间,但只有将宇航员们安全的带回地球

本田与通用汽车签署协议,共同开发车辆

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-27 12:34:56
底特律 –通用汽车和本田汽车表示,他们已签署协议,探讨在北美共享汽车基础和推进系统 , 更多信息尽在振工链 。 两家公司表示,有关联合设计车辆的计划讨论将立即开始,其中包括由电力和内燃机驱动的车辆。工程工作将于明年年初开始。 本田和通用汽车在周四的一份声明中表示,他们还将在购买,研究和关联服务方面进行合作。 两家公司之间的谅解备忘录没有约束力。但是,此举是汽车业务整合日益增加的又一迹象,因为公司面临巨额资本支出来开发当前产品以及新型电动和自动驾驶汽车。 Crosstown的竞争对手福特汽车今年早些时候与德国大众汽车达成了类似的交易,而意大利裔美国汽车制造商菲亚特·克莱斯勒(Fiat Chrysler)正在与法国汽车集团标致(PSA Peugeot)合并。 在与通用汽车和本田的交易中,两家公司表示将合作开发 “各公司各自品牌下出售的一系列汽车”。 该公告基于两家公司在电动和氢燃料电池汽车以及自动驾驶汽车方面共同开展的工作。两家公司于 4月宣布,他们将基于通用汽车的全球电动汽车平台,共同为本田开发两款电动汽车。 通用汽车总裁马克 ·鲁斯(Mark Reuss)周四在一份声明中表示:“该联盟将通过释放更多资源来帮助两家公司加快对未来移动创新的投资。” 他说,两家公司将在开发车辆方面获得“巨大的协同效应”。 本田执行副总裁仓石诚二在声明中说: “我们可以在北美实现显着的成本效益