虚拟机

类加载机制学习

给你一囗甜甜゛ 提交于 2020-03-06 10:15:50
简单讲下JVM中的类加载过程 JVM中的类加载和卸载的时机? 如何理解JVM中不同类加载器的概念和作用? 简单讲下JVM中的双亲委派模型? 什么情况下会破坏双亲委派模型?为什么?可否举个例子? Tomcat中的类加载机制有了解吗?为什么这么设计? 实际开发中有遇到哪些类加载器相关的问题?你又是如何解决的? JVM之上的弱类型语言例如Groovy是如何实现?简单讲下动态类加载机制? 类的加载和卸载 JVM是虚拟机的一种,它的指令集语言是字节码,字节码构成的文件是class文件。平常我们写的Java文件,需要编译为class文件才能交给JVM运行。可以这么说:C语言代码——>二进制文件——>计算机硬件,就相当于Java代码——>字节码文件——>JVM。JVM将指定的class文件读取到内存里,并运行该class文件里的Java程序的过程,就称之为类的加载;反之,将某个class文件的运行时数据从JVM中移除的过程,就称之为类的卸载。 class文件的运行时数据就是C++对象,也称为kclass对象,这些运行时数据在JDK7之前是放在永久代(PermGen),JDK8之后则放在元空间(Metaspace)。 类的生命周期 Java类从被虚拟机加载开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析

VirtualBox虚拟机--导入导出系统&主机启用硬件虚拟化

安稳与你 提交于 2020-03-06 10:08:58
问题概述:在往新电脑中导入其他电脑中导出的虚拟机后,启动该虚拟机系统时报错说主机不支持硬件虚拟化。 将电脑1中VirtualBox的一个虚拟机系统win7导出成.ova格式的文件, 在电脑2中安装VirtualBox软件后,导入该.ova文件,即可启用该win7虚拟机。 但启动该虚拟机系统时遇到“ 主机不支持硬件虚拟化 ”的提示,解决如下: 1. 导入导出虚拟机示意图: 2. 先检查电脑2的CPU是否支持硬件虚拟化 一般CPU上写着TM字样的表示支持, 可下载使用securable软件检测 , 下载后直接打开,软件会自动检测电脑,,瞬间返回检测结果: 3 2/64 说明你电脑的位数; D.E.P. 是一项安全性功能,可协助避免病毒与其他安全性威胁所造成的损害; Virtualization 即是最关键的,说明你的电脑是否支持虚拟化! 如果看到,两个NO,说明你的电脑不支持硬件虚拟化; 如果看到,两个Yes,那么你的电脑CPU完美支持虚拟化,可以放心安装相关虚拟机; 如果Virtualization是Locked on——CPU支持虚拟化,但虚拟化的开启由BIOS控制,现在已开启;Locked off——CPU支持虚拟化,但虚拟化的开启由BIOS控制,现在未开启; 参考: 如何查看自己的电脑CPU是否支持硬件虚拟化 3. 检测说明CPU支持硬件虚拟化,但需要去BIOS中开启,步骤如下

【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

帅比萌擦擦* 提交于 2020-03-06 07:59:31
超能课堂(186) CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 我们都知道之所以计算机能够进行计算,主要靠的是大规模集成电路中由晶体管组成的逻辑电路。这些逻辑电路使得计算机能够进行运算及判断。但对于一个简单逻辑电路来讲,它只能进行一个完整运算中的部分操作,所以人们通过组合这些简单逻辑电路,这样就可以让计算机进行复杂的运算了。当CPU设计人员将这些组合逻辑电路制作成通用运算单元后,我们将一定格式的指令及数据输入,即可得到运算结果。而当需要的运算种类越来越多、运算越来越复杂后,CPU设计人员就将这些指令进行划分重构,组成一整套进行运算的集合,这就是 指令集 。 图片来自 Unsplash 不过以上面向CPU指令集设计师及CPU微架构设计师的,CPU指令设计者将不同一些计算机操作设计成指令,然后微架构设计师通过这些指令的格式等进行微架构设计。而对于软件开发者,更多接触到的是软件层面的汇编语言,通过汇编语言指令就可以让程序员控制计算机了。计算机软硬件架构是有层次的,随着高级语言的开发,GUI的出现,更多的人可以方便的使用计算机。虽然编程语言越来越“高级”,软件越来越华丽,但是其依然需要通过CPU中的海量晶体管进行运算,调用指令集。 从英特尔开发出8086处理器开始,x86指令集就开始形成了,此后英特尔推出了80286

Liunx虚拟机启动tomcat报错

时间秒杀一切 提交于 2020-03-06 03:56:08
单刀直入 报错场景:Docker启动tomcat8报错 前期运行代码: docker pull tomcat : 8 docker run - it - p 8080 : 8080 镜像ID 直接运行如下报错… 问题解决方案 进入容器:docker exec -it 容器ID /bin/bash 查看ls,结果如下 root @7cd0be785b1b : / usr / local / tomcat# ls BUILDING . txt CONTRIBUTING . md LICENSE NOTICE README . md RELEASE - NOTES RUNNING . txt bin conf include lib logs native - jni - lib temp webapps webapps . dist work 通过查看webapps下面没有文件… 进入webapps.dist可以查看到我们原来tomcat中webapps中的文件移除到webapps.dist下面了 解决方案:把原来的webapps删除掉,将webapps.diet重新命名为webapps 从优方案:解决每次下载tomcat都需要删除问题优化 docker commit 镜像ID mytomcat8 docker images 来源: CSDN 作者: only老K 链接: https:

Vue源码分析之模板解析

感情迁移 提交于 2020-03-06 01:24:43
模板解析 基本流程 1、将el的所有子节点取出,添加到一个新建的文档fragment对象中 function MVVM (options) { this.$options = options var data = this._data = this.$options.data var me = this // 创建一个编译对象 this.$compile = new Compile(options.el || document.body, this) } function Compile (el, vm) { this.$vm = vm this.$el = this.isElement(el) ? el : document.querySelector(el) if (this.$el) { this.$fragment = this.node2fragment(this.$el) //取出el元素中所有的子节点保存到一个fragment对象中 this.init() this.$el.appendChild(this.$fragment) } } Compile.prototype = { node2fragment: function (el) { var fragment = document.createDocumentFragment(), child = this

linux的三种网络模式

[亡魂溺海] 提交于 2020-03-06 00:21:45
linux的三种网络模式 (一)Nat 模式nat模式属于dhcp还是static?都可以,但大部分为static。首先先编辑虚拟机设置,改成NAT模式。配置成dhcp模式 查看网卡:# ip addr(可简写成ip a里面有lo:回环地址;用来自己给自己通信。eth0:该IP地址可以是dhcp自动分配到的IP地址,也可以是自己配置的static静态IP地址。) 在虚拟机上编辑网卡配置文件:# vi /etc/sysconfig/network-script/ifcfg-eth0此处修改一处内容:ONBOOT=no 改成 ONBOOT=yes(yes表示网卡随系统一同启动) 最后按Esc,在输入:wq保存。 配置完成后,需要重启网络服务:# /etc/init.d/network.restart 重新查看IP:# ip a (也可以使用ifconfig,若没有,可自己装:# yum install -y net-tools。如果IP没错,下一步就测试一下网络连通性)配置成static模式 首先先打开虚拟网络编辑器,取消“使用DHCP服务将IP地址分配给虚拟机”。 再点击查看nat设置; 在虚拟机上编辑网卡配置文件:# vi /etc/sysconfig/network-script/ifcfg-eth0此处修改两处内容:1.ONBOOT=no 改成ONBOOT=yes2

JVM学习:如何使用visualGC调优Eclipse启动过程。

旧街凉风 提交于 2020-03-06 00:19:29
转载自品略网: http://www.pinlue.com/article/2020/03/0422/199981849836.html 最近在学习JVM,了解了一些关于JVM的内存分配和垃圾回收的知识,其中有有一个实战是优化Eclipse的启动,从类加载时间、JIT编译时间、垃圾收集时间三个方面做了优化,简单、综合性强,可以加深对JVM的理解,所以这里对其进行验证。 硬件和操作系统环境: Java版本(HotSpot虚拟机): Eclipse相关信息: 原始的启动配置: 最大永久代空间是256M,初始堆40M,最大512M 启动后的GC信息,使用jvisualvm工具查看: 使用eclipse插件来对eclipse启动计时。 优化类加载速度: 使用jstat -class ID查看类加载,原始情况如下: 考虑到不需要再加载的时候进行字节码验证,因此通过参数-Xverify:none禁止掉字节码验证过程。优化后的类加载时间变为,大概降低为原来的一半时间: 优化编译时间: 编译时间是指虚拟机的JIT(just in time compiler)编译器编译热点代码的耗时,虚拟机解释执行字节码速度慢,通过虚拟机内置的运行时编译器,将热点代码即时编译为本地代码,以提高运行速度。 -Xint参数禁止编译器运作,强制虚拟机对字节码采用纯解释方式执行。 当虚拟机运行在-client模式的时候

Linux下的kvm虚拟化部署

点点圈 提交于 2020-03-06 00:16:56
目录 实验环境 1. kvm安装 2.虚拟化相关信息 3.手动安装虚拟机 4.虚拟机管理命令 5.虚拟机快照 6.虚拟机快照脚本 实验环境 Redhat企业8真实主机:kvm对主机的硬件需求较高,尽量在linux真机中做实验 在这台主机上 搭建yum源 ,可以安装软件; 在主机上 搭建DHCP服务器 ,给新建的虚拟机分配IP; 在主机上 配置vsftpd服务 ,用来共享镜像资源 为kvm配置网络桥接接口 ①:分别编写ifcfg-br0,ifcfg-ens160文件 ②:重启网络,查看设备连接,查看IP,网络配置成功 1. kvm安装 1.1 安装条件 inter cpu 支持vmx功能 amd cpu 支持svm功能 1.2 安装 组件 解释 Virtualization Client 虚拟化客户端 Virtualization Tools 虚拟化工具 Virtualization Hypervisor 虚拟化核心套件 安装以上3个组件 2.虚拟化相关信息 服务名称:libvirtd 虚拟化核心: qemu/kvm 虚拟化存储目录(虚拟机硬盘):/var/lib/libvirt/images/xxxx.qcow2 虚拟化硬件信息:/etc/libvirt/qemu/xxxx.xml 3.手动安装虚拟机 3.1 、本地资源安装虚拟机 ①:打开虚拟机管理器: virt-manager

java复习

删除回忆录丶 提交于 2020-03-06 00:13:23
JDK和JRE的区别是什么? Java运行时环境(JRE)。它包括Java虚拟机、Java核心类库和支持文件。它不包含开发工具(JDK)–编译器、调试器和其他工具。 Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 ”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。 Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。 java中也不可以覆盖private的方法,因为private修饰的变量和方法只能在当前类中使用

搭建Hadoop之部署前准备(一)

落花浮王杯 提交于 2020-03-05 23:02:34
文章目录 1.Hadoop部署的基本知识 1. 单节点模式 2. 伪分布式集群模式 3. 多节点集群模式 2.hadoop前准备 软件包以及提取码 软件说明 虚拟机内操作系统安装 CentOS7安装 配置供参考┗|`O′|┛ 架构分布 1.Hadoop部署的基本知识 Hadoop的部署模式分为三种,分别是单节点模式、伪分布式集群模式、多节点集群模式。 1. 单节点模式 无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MapReduce程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。 2. 伪分布式集群模式 Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。 3. 多节点集群模式 Hadoop守护进程运行在一个集群上,是一个真正意义上的分布式大数据集群。 2.hadoop前准备 准备安装环境,包括虚拟机、CentOS系统、JDK、Hadoop。 安装3虚拟机用于模拟真实物理集群。 在每台虚拟机中安装JDK,JDK是Hadoop平台运行的基础环境。 部署Hadoop平台,并对其四个重要文件进行配置实现集群化。 启动并运行Hadoop集群 注意jdk版本是否兼容 软件包以及提取码 链接:https://pan.baidu.com/s