关于虚拟机:windows开机自动启动目标虚拟机关机自动关闭并检测是否可通信

1、设置主动开启敞开能够在虚拟机目录创立两个批处理文件(如图)它们的内容别离是start_vm.bat "F:\VMware Workstation\vmrun.exe" start "G:\Vmware VMs\Ubuntu18\Ubuntu18.04.vmx" nogui其中vmrun.exe是vmware装置目录下的一个程序;最初不加nogui的话,就会关上vmware的界面stop_vm.bat "F:\VMware Workstation\vmrun.exe" stop "G:\Vmware VMs\Ubuntu18\Ubuntu18.04.vmx" soft按win+r,输出gpedit.msc,按如图程序抉择start_vm.bat,stop_vm.bat在最开始双击登记进行抉择即可2、设置检测形式编写一个python脚本用来ping指标虚拟机的ip,代码如下import sysfrom ping3 import verbose_pingif __name__ == "__main__": verbose_ping(sys.argv[1], 0, 2) # 0示意有限ping上来,2示意每隔两秒ping一次这里不写死ip是因为虚拟机ip可能变,前面通过参数传入比拟灵便 而后把它用pyinstaller打包成exe程序pyinstaller.exe -F -n ping_vm ping.py新建快捷方式按win+r,输出shell:startup回车,在进去的目录外面右键,点击新建 > 快捷方式。对象地位就抉择第二步中生成的ping_vm.exe程序,之后始终下一步即可exe程序下载:链接:https://pan.baidu.com/s/117LrLcPOE67ef7P73hIPrQ?pwd=seny 提取码:seny批改快捷方式右键点击快捷方式,点击属性,在指标前面增加一个空格和虚拟机的ip,保留即可注:都实现后,当初电脑开机,就会在后盾主动启动指标虚拟机,并关上一个终端始终ping指标ip,等到虚拟机启动实现,并可通信时,终端日志就会失常输入ping的工夫,而不是error或者timeout。当初就不必一开机操作者操作那了,多两三分钟摸鱼工夫,只有等到ping窗口通知网络通了,就能够间接关上vscode近程我的项目目录了。 原本最开始检测工具也是通过增加登录脚本来实现的,然而怎么搞都有效,只会主动启动虚拟机,不会呈现检测ping窗口,无奈只能通过批改开机启动快捷方式来实现了

August 27, 2023 · 1 min · jiezi

关于虚拟机:CNStack-虚拟化服务实现虚拟机和容器资源的共池管理

背景容器无疑曾经成为新的云计算基础设施,企业公有云平台的建设重心,正在从虚拟化的计算、存储、网络的建设,转向构建以容器、微服务等为外围的云原生平台。不过值得注意的是,企业 IT 零碎在进行容器化革新的过程中,因为历史遗留零碎、技术债权、内核依赖等起因,基于虚拟机的利用在将来仍然会宽泛存在。企业的 IT 基础设施正在从繁多的虚拟化架构逐渐走向虚拟机+容器的混合架构,Gartner 预测到 2026 年将会有 75% 的私有化环境须要混合部署虚拟机和容器负载。 CNStack 虚拟化服务(cnstack-virtualization)基于以 CNCF KubeVirt 为代表的云原生虚拟化技术,用一套管制立体同时治理容器和虚拟机,实现容器与虚拟机的资源共池治理、灵便调配、对立调度。企业可将难以容器化的虚拟机利用无缝迁徙到 CNStack 平台上,逐渐实现 IT 零碎的云原生化。 CNStack 虚拟化云服务在 CNStack 2.0 中,虚拟化服务以独立云服务的状态进行部署,即能复用 CNStack 平台与多集群服务提供的多租资源管理、对立网关、集群治理、多集群资源散发等根底能力,又能不失灵活性地独立演进与公布。 CNStack 虚拟化服务在以后版本提供了如下能力,并会逐渐在后续版本上线更多能力(如虚拟机灾备、虚拟机热迁徙、虚拟机迁徙工具等): 残缺的虚拟机生命周期治理能力:反对开关机、重启、暂停、快照等操作。虚拟机自运维能力:在浏览器通过 VNC、串口带外治理协定运维虚拟机。快照与复原:通过快照保留虚拟机磁盘在某一时刻的状态,数据失落或异样时可疾速复原。监控与告警:提供虚拟机 CPU、内存、磁盘 I/O、网络吞吐等要害运行指标的监控与告警。治理虚拟机镜像上传镜像,并依照租户管制资源的可见范畴。基于快照制作虚拟机镜像。ARM 多架构、IPv6、虚拟机固定 IP、边缘虚拟机自治、虚拟机快照克隆等个性虚拟机利用治理:CNStack 利用治理服务提供了对虚拟机利用的纳管性能,反对对虚拟机内利用的一站式托管以及服务治理、能力凋谢、利用监控、利用告警和利用防护等能力。整体架构简介 cnstack-virt-console基于阿里云自研的 ALFA 微前端计划,cnstack-virt-console 以微前端利用的模式被 CNStack Console 前端页面插件化集成。即能够保障终端用户在交互体验上的统一,也可满足虚拟化服务前端利用自在演进、独立部署散发的灵活性。 cnstack-virt-api提供虚拟化云服务的管控 API,将 VirtualMachine、DataVolume、VMImage 等自定义资源的读写操作以 RESTful 接口的模式进行封装。与其余的管控 API 一样,由 CNStack IAM Gateway 组件对立提供用户认证、鉴权、API 审计等根底能力,向集群外提供服务。值得一提的是,cnstack-virt-api 基于 CNStack 多集群服务的 cluster-gateway 组件,实现了跨集群的资源散发。 KubeVirtCNCF KubeVirt 拓展了治理运行虚拟机的 CRD,使得虚拟机资源可被视为 Kubernetes 集群的“一等公民”。KubeVirt 基于容器来治理运行 QEMU 虚拟机,提供了不同于容器的虚拟机生命周期治理接口,通过与规范的 CNI 容器网络插件和 CSI 容器存储插件对接,使得虚拟机可复用 Kubernetes 集群内的网络与存储资源。在 KubeVirt 社区版本的根底上,咱们还为其拓展反对了 IPv6、GuestOS 监控、虚拟机固定IP、边缘虚拟机自治、虚拟机快照克隆等个性。 ...

March 20, 2023 · 2 min · jiezi

关于虚拟机:LC3-虚拟机学习总结

2023 年春节前看到不少公众号在刷虚拟机实现的文章,所以过年在家静下心来看了看,也本人试了试,感觉挺乏味的。此处写一篇总结,算是给本人一个交代。 零 先聊聊背景cpu 其实并不了解高级语言代码,它只能了解汇编指令。简略来说(此处懒得画图,用 markdown 代替了,下同): c 语言编译器 执行我写的 c 语言代码 -----------> cpu 可执行的汇编指令 <----- cpu然而 cpu 业界也不是铁板一块,最典型的比方 x86 架构和 arm 架构,它们的汇编命令并不相同。简略来说: c 语言 x86 编译器 执行我写的 c 语言代码 -----------------> x86 cpu 可执行的汇编指令文件 <-- x86 cpu c 语言 arm 编译器 执行 -----------------> arm cpu 可执行的汇编指令文件 <-- arm cpu其实还有很多其它品种的汇编指令,不一一列举。这样造成了软件中跨平台的困局,由此诞生了一类用于抹平它们区别的软件:虚拟机。简略来说: 虚拟机编译器 执行 执行高级语言代码 -----------> 虚拟机汇编指令 <----- x86 虚拟机 <---- x86 cpu 执行 执行 <----- arm 虚拟机 <---- arm cpu理论状况更加简单,还要波及到操作系统问题: ...

February 1, 2023 · 5 min · jiezi

关于虚拟机:openEuler资源利用率提升之道-05虚机混部介绍与功耗管理技术

随着云计算市场规模的快速增长,各云厂商基础设施投入也一直减少,但行业普遍存在资源利用率低的问题,在上述背景下,晋升资源利用率曾经成为了一个重要的技术课题。 将业务辨别优先级混合部署(下文简称混部)是典型无效的资源利用率晋升伎俩。业务可依据时延敏感性分为高优先级业务和低优先级业务。当高优先级业务和低优先级业务产生资源竞争时,需优先保障高优先级业务的资源供应。 业务混部的核心技术是资源隔离管制,次要波及内核态根底资源隔离技术及用户态 QoS 控制技术。Skylark 是一种虚拟机混部场景下的 QoS 感知的资源调度器,由 openEuler Skylark 组件承载,在 Skylark 视角下,优先级粒度为虚拟机级别,即给虚拟机新增高低优先级属性,以虚拟机为粒度进行资源的隔离和管制,在保障高优先级虚拟机 QoS 前提下晋升物理机资源利用率。内核层提供了一些根底资源烦扰隔离机制,比方 CPU 调度硬优先级机制以及 SMT(硬件超线程)烦扰隔离机制等。此外集群治理系统软件 OpenStack 也须要感知虚拟机优先级,设计实现一套混部资源模型。 虚拟机混部由 openEuler 社区 OpenStack SIG、Virt SIG 以及 Kernel SIG 联合开发。本文次要介绍 Skylark 组件的功耗治理技术。 为什么须要治理功耗随着各种混部计划的提出,服务器利用率有了显著的晋升。然而均匀利用率的进步随同着的是刹时利用率冲到 100%的概率大幅减少。服务器个别是以睿频频率运行,当 CPU 以满负荷运行一段时间后,功耗的继续减少会大幅超过 TDP 触发 CPU 降频。因为服务器是以整颗 CPU 供电,所以同一颗 CPU 上的所有 core 将会同时降频,将会影响该 CPU 上运行的所有虚拟机对应的客户业务 QoS。当利用率升高后,功耗也升高到肯定值时,频率将再次升高到睿频。因而,高的资源利用率会间接导致 CPU QoS 降落,在虚拟机混部后须要在进步资源利用率的同时保障 CPU QoS 或者说客户业务不受到影响。 本文具体介绍并分享了功耗相干的根底概念以及虚拟机混部技术中功耗治理的技术细节。 CPU 功耗起源CPU 的功耗次要是由晶体管工作产生,其功耗次要分为开关功耗、短路功耗和漏电功耗三类。下图为 CMOS 反向示意图。 其中,开关功耗次要是电容的充放电。例如当输出低电平时,输入端负载电容会进行一次充电。当输出变成高电平时,电容中贮存的电能会以热量的模式被开释。当 CPU 中几十亿个晶体管同时开释时,将会产生大量的热能。短路功耗则是 P 管和 N 管短路时产生的功耗。漏电功耗是 CMOS 管不能严格敞开时产生漏电所产生的功耗,与制程和温度无关。 ...

January 13, 2023 · 2 min · jiezi

关于虚拟机:浪潮信息工程师带你了解设备透传虚拟机的快速启动技术优化方案

编者按:将物理设施通过 vfio 透传给虚拟机是虚拟化罕用的技术,但当为虚拟机调配比拟大的内存时,虚拟机的启动工夫会显著变慢,可能由十几秒缩短至数分钟,重大影响用户应用体验。本文整顿自龙蜥大讲堂 51 期,浪潮信息操作系统研发工程师参加技术分享,介绍了设施透传虚拟机启动慢的起因及优化办法,以下为此次分享内容: 技术背景:大内存虚拟机设施透传启动提早虚拟机设施透传时存在问题,比方将网卡或者 GPU 这些 pci 设施通过宿主机的 vfio 透传到虚拟机,并且又为虚拟机调配了比拟大的内存时,虚拟机的启动工夫会显著变慢。特地是调配了几百 G,甚至上 TB 的内存时,就会有比拟显著的启动提早,可能由十几秒提早到数分钟。因为只有第一次启动时,也就是 qemu 过程启动时才会影响,所以一般来说用户能够承受这个启动提早,但如果用户有频繁创立销毁虚拟机的需要时就会有比拟差的应用体验。 把设施透传到虚拟机外部之后将会应用虚拟机外部的驱动程序对设施进行操作,这里有一个重要的问题是在虚拟机外部该如何进行 DMA 操作,因为 DMA 是不会通过 CPU 的,所以应用的是物理地址,但虚拟机外部看到的物理地址实际上只是宿主机上 qemu 过程申请的虚拟地址,间接用来做 DMA 必定是不行的。这里就须要借助 IOMMU 来实现,虚拟机内 DMA 拜访的 GPA,通过 iommu 映射到宿主机上的物理地址 HPA2,另外虚拟机内的驱动程序也能够通过 MMU/EPT,把 GVA 映射为 HPA1,最终须要 HPA1 和 HPA2 这两个物理地址是同一个能力让设施失常运行。(如下图) 为了实现 HPA1 等于 HPA2,须要 GPA 到 HPA 的映射是固定的并进行 iommu 表的建设,vfio 是通过 VFIO_IOMMU_MAP_DMA 命令实现。 前面应用到了 free page reporting 机制,这里介绍下 free page reporting 机制的原理,首先该机制提供了回调函数的注册,每隔 2 秒会遍历每个 zone 中的闲暇页并调用回调函数进行解决,但只解决 buddy 中高阶内存页,就是 pageblock_order 阶及以上的内存,在 X86 架构下就是解决 9 阶和 10 阶的内存页,也就是 2M 和 4M 的内存页,这样也是保障可能解决 2M 的通明大页。 ...

December 21, 2022 · 2 min · jiezi

关于虚拟机:浪潮信息工程师带你了解设备透传虚拟机的快速启动技术优化方案-龙蜥技术

编者按:将物理设施通过 vfio 透传给虚拟机是虚拟化罕用的技术,但当为虚拟机调配比拟大的内存时,虚拟机的启动工夫会显著变慢,可能由十几秒缩短至数分钟,重大影响用户应用体验。本文整顿自龙蜥大讲堂 51 期,浪潮信息操作系统研发工程师参加技术分享,介绍了设施透传虚拟机启动慢的起因及优化办法,以下为此次分享内容: 技术背景:大内存虚拟机设施透传启动提早虚拟机设施透传时存在问题,比方将网卡或者 GPU 这些 pci 设施通过宿主机的 vfio 透传到虚拟机,并且又为虚拟机调配了比拟大的内存时,虚拟机的启动工夫会显著变慢。特地是调配了几百 G,甚至上 TB 的内存时,就会有比拟显著的启动提早,可能由十几秒提早到数分钟。因为只有第一次启动时,也就是 qemu 过程启动时才会影响,所以一般来说用户能够承受这个启动提早,但如果用户有频繁创立销毁虚拟机的需要时就会有比拟差的应用体验。 把设施透传到虚拟机外部之后将会应用虚拟机外部的驱动程序对设施进行操作,这里有一个重要的问题是在虚拟机外部该如何进行 DMA 操作,因为 DMA 是不会通过 CPU 的,所以应用的是物理地址,但虚拟机外部看到的物理地址实际上只是宿主机上 qemu 过程申请的虚拟地址,间接用来做 DMA 必定是不行的。这里就须要借助 IOMMU 来实现,虚拟机内 DMA 拜访的 GPA,通过 iommu 映射到宿主机上的物理地址 HPA2,另外虚拟机内的驱动程序也能够通过 MMU/EPT,把 GVA 映射为 HPA1,最终须要 HPA1 和 HPA2 这两个物理地址是同一个能力让设施失常运行。(如下图) 为了实现 HPA1 等于 HPA2,须要 GPA 到 HPA 的映射是固定的并进行 iommu 表的建设,vfio 是通过 VFIO_IOMMU_MAP_DMA 命令实现。 前面应用到了 free page reporting 机制,这里介绍下 free page reporting 机制的原理,首先该机制提供了回调函数的注册,每隔 2 秒会遍历每个 zone 中的闲暇页并调用回调函数进行解决,但只解决 buddy 中高阶内存页,就是 pageblock_order 阶及以上的内存,在 X86 架构下就是解决 9 阶和 10 阶的内存页,也就是 2M 和 4M 的内存页,这样也是保障可能解决 2M 的通明大页。 ...

November 25, 2022 · 2 min · jiezi

关于虚拟机:密码学探秘EVM链和并行执行交易

概述 在web3.0世界中,交易的解决性能始终是公链面临的一大技术挑战,如何在不升高安全性和去中心化水平的前提下显著的晋升区块链交易的TPS无疑成为泛滥公链技术专家追赶的指标。以Solana、Aptos为代表的新一代公链的呈现更是吹响了通过并行执行交易来攻克公链可扩展性瓶颈的号角。 以太坊虚拟机因其最早在区块链中引入智能合约,不仅领有最多的DApp开发者,更有泛滥新生公链间接将EVM采纳作为其智能合约交易执行引擎,其在web3.0中的受欢迎水平可见一斑,然而受限于程序执行(Sequential Execution)EVM无疑在扩展性方面广受诟病。 是否也能够既做到对EVM的兼容,又能够通过并行执行交易来达到晋升性能的目标呢?明天咱们就来对这个话题做一些探讨。 EVM交易执行机制 家喻户晓,EVM中交易的执行实际上是状态的转换,交易执行前的状态 t和交易transaction作为EVM的输出,输入为交易执行后的状态t+1为输入: 要阐明的是,每个交易执行前的状态 t 和执行后的状态 t+1 都是‘世界状态’,也就是整个账本所有账户的实时状态(如balance、nonce、storageroot等),这种账户模型在肯定水平上不便了理论利用的开发,但因为每笔交易的执行都须要依赖一个确定的’世界状态‘,这也给可扩展性带来诸多限度,正是因为这一点,EVM-based链鲜有通过并行执行交易晋升TPS的案例。 并行执行的挑战 基于这种账户模型,想要通过并行执行反复利用节点的硬件资源进步网络吞吐量是很艰难的。 举个简略的例子:A转账给B的交易tx1和C转账给D的交易tx2在实践上是能够并行执行的,因为两个交易没有任何关联,但如果将tx2调整为B转账给C状况会是怎么样呢?如果最后B的余额是0,tx1中A转给B5个Token,tx2中B转给C3个Token,咱们会发现,tx1没有执行前tx2注定会失败,因为B此时的状态是余额有余。这种状况在链上被称为’状态抵触‘(State conflicts)。 当然,对于只做转账的交易,是能够通过动态剖析来确定交易彼此的依赖关系的,事实上,DApp开发者们常常通过简单的智能合约逻辑在EVM虚机中实现某些非凡的业务需要,在一个智能合约交易中,EVM会依据合约的Code逻辑执行用户千奇百怪的操作,这就不能通过简略的对交易内容分析来确定交易间的依赖关系了。 可尝试的改良 Solidity被称为图灵齐备的智能合约语言,通过对交易指令集的动态剖析来确定交易依赖关系的可行性根本是不存在的,但这并不意味着咱们只能按程序执行,咱们能够从近期一些优良的区块链我的项目中失去更多启发。 乐观执行是一种可尝试的计划 既然不能当时剖析交易的关联关系, 那咱们是否能够先乐观的将交易全副独立执行,而后再预先剖析呢? Aptos我的项目的PE(parallel execution) 计划便是这种思路的代表,依据我的项目方颁布的数据,在低关联交易汇合的场景(low inter-dependence),交易的执行效率最高能够是串行执行的16倍之多。 EVM中尽管没有相似Block-STM的机制,但咱们齐全能够通过对区块中交易的执行逻辑稍加优化就能够做到既和EVM放弃兼容,又能反对将显著无关的交易分成不同批次进行反对,即: 能够先依据交易发送方和接受方账户地址将交易依赖关系构建成可逐批执行的交易汇合,乐观的在不同的线程(或协程)中独立执行,等所有交易都被执行完当前,再将执行过程中应用的读集(所有用到的状态变量)和写集(所有由交易产生的须要记录到链上的后果)做比照剖析,查看交易序号(区块中的交易程序编号)靠后的交易的读集是否与交易序号靠前的所有交易写集有交加,如果没有,阐明执行后果是正确的, 否则意味着该交易须要依赖之前交易的最新状态, 须要依据后面交易的后果从新执行。 由用户指定交易的读写集 一般的转账交易能够简略的通过 from 和 to 确定交易彼此的依赖关系,而智能合约交易尽管在EVM执行它之前不能确定其对哪些账户有依赖,但发送交易的用户少数状况下是能够确定交易的读写集的,而Sui我的项目正是将交易的依赖和后果齐全交由用户来指定并最终签名确定,这将极大的简化了剖析交易关联性的逻辑。 然而EVM当初并没有这种机制,尽管 Vitalik 和 Holiman 提交的对于指定交易拜访lists的提案 EIP-2930 曾经在以太坊上通过并施行,但该提案并没有强制要求用户必须指定所有的access lists, 如果要在EVM中实现用户指定读写集,须要在以太坊提交新的EIP提案,除此之外,用户确定读写集还须要SDK的反对。 通过DAG构建交易的依赖关系 对于单纯的转账交易或是下面提到的由用户指定了读集的交易,是齐全能够当时确定交易的依赖关系的,有向无环图(Directed Acyclic Graph)能够无效的解析这种依赖关系。对于如何应用DAG分批并行执行交易的内容能够参见咱们之前的技术文章。 一些要思考的问题 EVM架构适宜并行执行吗?尽管并行执行能够做到无效利用硬件资源,晋升链解决交易的能力,但正如咱们在结尾提到的这绝不能以就义安全性和去中心化水平为代价,Ilya Sergey 就已经在 EVM 技术架构根底上对并行执行做过深刻的钻研,依据其钻研的论断,对于非垃圾回收类语言,对象在内存中的反复申明和应用过程必然会违反状态完整性,这给形式化验证智能合约带来微小的挑战。这或者是 EVM 设计者在最后的设计中没有思考到的问题。 公链适宜解决海量的交易吗?公链是公众基础设施,其用户能够是任何人或个人,不可否认的是它解决能力越强越好,然而这并不意味着任何交易都须要上链,尽管 gas 机制能够缩小垃圾数据上链的可能性,但随着节点解决交易能力的晋升, 矿工为了增加收入必然会打包尽可能多的交易,这将必然使gas价格越来越低,链上将不可避免的充斥着大量垃圾数据,这将使账本数据越来越收缩,到难以保护的水平。 适度依赖硬件资源将使网络去中心化水平升高通过晋升CPU外围数能够做到高交易解决性能,减少磁盘容量能够存储更多数据,这将一直晋升节点的运行保护老本,最终导致的后果必然是只有多数人或个人有能力领取这些老本,不利于去中心化。

October 31, 2022 · 1 min · jiezi

关于虚拟机:虚拟机ping不通的几种原因及解决办法

一:虚拟机宿主机互ping不通问题一:防火墙略去,倡议主机和宿主机都敞开防火墙,并敞开seLinux(Linux的平安零碎)问题二:网卡未失效体现输出命令 ifconfig,若输入的网卡信息不含inet [ip地址],则阐明网卡未失效 网卡失效后会变成 解决办法 这是因为网卡配置文件谬误导致的。CentOS7零碎网卡配置文件门路: /etc/sysconfig/network-scripts/ifcfg-[网卡名]网卡名为ifconfig命令输入信息最左列eg:/etc/sysconfig/network-scripts/ifcfg-ens32配置文件内容: 如果你还未修改过这个文件,那么你只须要退出与IP地址无关的IPADDR NETMASK GATEWAY DNS1,并最好将绿点配置批改,实现开机启动。 如果你有多个网卡,红点为各个网卡配置不同的项。如果UUID失落,可通过uuidgen命令从新生成。笔者因为通过cp复制ens32网卡失去ens34网卡时误加了同步选项-s,导致ens32的UUID失落,批改后网卡失效。 问题三:IP地址,网关,DNS设施具体如何设置网上教程很多。简略来说,就是 Windows虚构网卡VMnet8的IP地址 和 VMWare虚构网卡VMnet8的子网IP地址 和 网卡设置文件的IPADDR在同一个局域网下Windows虚构网卡VMnet8的网关和DNS地址 和 VMWare虚构网卡的网关和DNS地址统一以上所有都在同一个局域网下(IP地址的第三个数,这里是80)宿主机设置: 虚拟机设置办法为:编辑->虚构网络编辑器 二:虚拟机对宿主机ping不通,但能ping外网问题一:虚构网卡VMnet8虚拟机和宿主机之间的通信是通过虚构网卡VMware Network Adapter VMnet8实现的,它的性能可参见如下敞开虚构网卡试验: 控制面板->网络和Internet->网络和共享核心->更改适配器设置  VMnet8被禁用,则主机和虚拟机无奈通信,但能够与外网通信(因为虚拟机和主机专用一个网卡)如下: 若VMNet8未被禁用,也不能排除它的问题,可能是它的设置有问题,具体见上一条。 问题二:虚拟机开机期间切换网络(博主遇到的问题)如挂梯子,切换WIFI。这种操作使网关产生了变动,本质还是虚构网卡VMnet8的起因。 问题三:防火墙倡议关掉 三:虚拟机对宿主机ping通,不能ping外网问题:网关和DNS设置问题具体设置办法见第一条 应用虚拟机还是绝对于麻烦的,须要本人搭建环境,倡议去租一个服务器,我用的是3A的,他们提早低,带宽便宜,推!

August 19, 2022 · 1 min · jiezi

关于虚拟机:Mac通用版pd虚拟机Parallels-Desktop-18-无限试用启动器

Parallels Desktop 18能够在 Intel 或 Apple M 系列 Mac 计算机上下载并装置 Windows 操作系统。在 Mac 与 Windows 之间无缝复制和粘贴文本或拖放对象。在 Mac 虚拟机中跨多个操作系统开发和测试。毫不费力地运行 Windows 应用程序,不会减慢 Mac 的运行速度。 装置Mac pd 18启动器 Parallels Desktop 18 蕴含 20 多种弱小的必备性能(针对 macOS Ventura、Intel 和 Apple M 系列芯片进行了优化),领有晋升性能所需的所有。 易于装置 – 点击一下,即可下载、装置和配置 Windows 11。 面向最新的 Apple 硬件进行了优化 - 改良了与 Apple ProMotion 技术的兼容性,优化了 Mac 和 Windows 之间的同步。 游戏体验失去加强 - 主动应用 Xbox 或 DualShock 蓝牙控制器,尽享终极游戏体验。

August 12, 2022 · 1 min · jiezi

关于虚拟机:支持M1系统的pd虚拟机Parallels-Desktop-17-v1714中文永久试用版

Parallels Desktop 17能够显著升高磁盘,内存和CPU使用率,在搭载 Apple M1 芯片的 Mac 上的 Parallels Desktop 体验更加弱小、更为顺畅!最新Parallels Desktop 17效率大幅晋升,改良后的拖放性能使您可能从 Windows 应用程序中轻松地将文本和图像放入 macOS Monterey Quick Note。通过 Parallels Desktop 17 装置助手轻松地将 macOS Monterey 装置到虚拟机上。 下载:https://www.macz.com/mac/8157...

August 4, 2022 · 1 min · jiezi

关于虚拟机:VM虚拟机Mac版VMware-Fusion-Pro-12激活

置信之前应用过Win版零碎的敌人们对这款VMware Fusion Pro for Mac应该都不会生疏,这款软件以其弱小的性能和适配能力广受用户的好评,在Mac端也同样是一款最受用户欢送之一的虚拟机软件,VM虚拟机mac版能够让您可能轻松的在Apple的macOS和Mac的硬件上无缝运行Windows,Solaris,Linux和Netware操作系统。能够帮忙用户可能在 Mac 上并行运行 Windows 和数百个其余操作系统或Mac利用,让您的Mac和PC进行完满的联合! 装置VM虚拟机Mac版

August 3, 2022 · 1 min · jiezi

关于虚拟机:Parallels-Desktop-17虚拟机Intel-Mac版

Parallels Desktop 17是一款业余的Mac虚拟机,可在Windows 与Mac OS 应用程序之间随便拖放文件并间接从Mac dock 启动Windows 程序,可能在Mac上以最便捷、疾速、高效的形式运行Windows!

August 2, 2022 · 1 min · jiezi

关于虚拟机:出现network-boot-from-intel-e1000问题的解决办法

在写这个博客之前,我抵赖,本人也是这个问题的“受害者”。呈现这个问题的环境形容如下:(虚拟机版本v16,筹备预装的零碎版本win7)对于这个问题,网上的解决方案通常是1.敞开虚拟机中的运行环境2.找到电源设置,进入bios 3.调整下启动程序 例如我当初操作的这样(网上广泛的这个教程我曾经替大家踩坑了) 实际上,这样的操作重复几遍,你会发现,仍然回到原地,并没有变动。回顾装置零碎之前到装置的整个流程,我开始反思,排查,最终发现,原来呈现这个问题是因为下载的是盗版的镜像导致。将镜像文件替换为正版镜像(能够返回msdn下载),这个问题就解决了。https://msdn.itellyou.cn/真挚的心愿这个解决思路能够帮到遇到这个问题的其他同学

July 27, 2022 · 1 min · jiezi

关于虚拟机:超强VM虚拟机支持12系统最新中文版

VM虚拟机VMware Fusion Pro是一款超强的虚拟机。能够让您可能轻松的在Apple的macOS和Mac的硬件上无缝运行Windows,Solaris,Linux和Netware操作系统。能够帮忙用户可能在 Mac 上并行运行 Windows 和数百个其余操作系统或Mac利用,让您的Mac和PC进行完满的联合! 软件下载:https://www.macz.com/mac/800....

July 11, 2022 · 1 min · jiezi

关于虚拟机:虚拟机专用Win10系统win11系统支持M1

很多敌人在应用Mac电脑的过程中,常常也会用到Windows软件来帮助实现工作。然而,有的敌人先装置双系统有点麻烦,这时,你就须要一个虚拟机了!目前最好用的虚拟机是Parallels Desktop,win镜像版本要依据本人的爱好选对,在此提供别离兼容M1和Intel的win10、11镜像文件。 软件下载:https://www.macz.com/mac/8164...

July 7, 2022 · 1 min · jiezi

关于虚拟机:vagrant-up报错EncodingUndefinedConversionError

前言在五月初找到工作后,就始终在肝论文(后面因为找工作的起因加上本人不太器重,欠下了太多),直到六月初才问难完,所有尘埃落定,就等拿双证了。整个六月都在划水,一是后面找工作有点焦虑,二是前面始终肝论文,太累了,所以问难完之后就像泄了气的皮球一样,没有了能源。 6月23号过了这里,找房子、入职,直到明天才算安置了下来,所以明天想续上之前学的内容,隔了快两个月了,一执行 vagrant up 命令就报错了,报错如下: D:/LaravelEnvironment/Vagrant/embedded/gems/2.2.18/gems/childprocess-4.1.0/lib/childprocess/windows/process_builder.rb:44:in `encode!': "\\xE5" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to UTF-16LE (Encoding::UndefinedConversionError)不过幸好有前辈之前遇到过相似问题,还写下了 《vagrant up报错 process_builder.rb:44:in `encode: “xE5“ to UTF-8 in conversion from ASCII-8BIT to UTF-》 这篇博客,所以很快就解决了这个问题。这篇博客能够说是齐全“抄”前辈的那篇博客,尽管意义不大,然而本人会映象更粗浅。 解决办法1. 依据爆粗提醒,找到 process_builder.rb 文件。2. 关上该文件,找到第 44 行的内容,如下所示:![上传中...]()将其44行的内容正文,并 44 行的前面增加如下内容: newstr.encode!('UTF-16LE',invalid: :replace, undef: :replace,replace: '?')最终如下所示:![上传中...]()最初从新执行 vagrant up 明码,发现虚拟机启动胜利。

July 6, 2022 · 1 min · jiezi

关于虚拟机:Linux怎么共享宿主机VPN网络方法二网络共享方式

日期作者版本备注2022-05-29dingbinv1.0 在我之前的一篇博文中曾经具体介绍了Linux共享宿主机VPN网络的办法:[linux虚拟机怎么共享宿主机的VPN连贯] ,该办法原理是利用Linux虚拟机设置NAT桥接网络模式,同时将宿主机VPN网络的IP地址设置为虚拟机的网关GateWAY形式。这种形式个别在EasyConnect等VPN客户端软件上能很好地工作。有趣味的读者能够自行翻阅。 本文将叙述怎么另外一种切实可用的Linux虚拟机共享宿主机VPN网络办法,即采纳网络共享的形式。常用语ExpressVPN等VPN等。 依然思考到这样一种场景:宿主机是Windows 10,通过 ExpressVPN windows客户端能够迷信上网了。上面2个问题是咱们常常面临的: 此时宿主机下的vmware虚拟机怎么共享拜访VPN网络呢?实现了vmware虚拟机共享拜访VPN网络后,因为宿主机的IP网段和vmware虚拟机的IP网段不同,此时宿主机上ssh怎么拜访vmware上的虚拟机网络呢,从而通过宿主机的ssh共享VPN网络?上面咱们别离形容以上2个问题的解决方案。 1. 宿主机下的vmware虚拟机怎么共享拜访VPN网络- 网络共享形式windows宿主机通过expressVPN客户端连贯上VPN;在windows主机上设置该VPN网络共享到vmnet8(vmNet8是vmware 桥接网络网卡)。操作方法如下图:在expressVPN网络图标上右键:属性 - 共享 选项卡,勾选 “容许其余网络用户通过此计算机的Internet连贯来连贯”,同时 家庭网络连接中: 下拉框中抉择Vmware Network Adapter VMnet8;接着会弹出对话框如下,意思是共享的VMnet8网络的IP地址默认被设置为了192.168.137.1。 这个IP地址前期能够再先设置了共享后再去VMnet8网卡属性里批改。本文就采纳这个默认IP地址。至此,也就是达到的成果为:所有连贯192.168.137.1 网卡的流量都会主动共享vpn的网络。 设置vmware虚拟机软件网络形式:设置办法与我另一篇文章[linux虚拟机怎么共享宿主机的VPN连贯] 中设置vmware虚拟机网络相干篇幅中所述基本相同,惟一不同的是设置时网关设置为192.168.137.1,而不是vpn 网卡的IP地址。 至此就能够再Linux虚拟机中共享宿主机的VPN网络了。 2. 宿主机上xshell软件如何ssh近程登录到共享了宿主机VPN网络的Linux 虚拟机上?办法很简略,ssh 间接登录 linux虚拟机的IP地址,本例子中时192.168.137.110。此时不须要再通过vmware的端口映射了。

May 30, 2022 · 1 min · jiezi

关于虚拟机:关于ubootping通虚拟机Ubuntu操作

设置uboot地址开发板与Windows主机通过串口连贯在SecurCRT软件中监督串口,启动开发板,在倒计时还未完结前按下回车进入uboot命令行下。输出命令 print 查看以后地址 ipaddr输出命令 setenv ipaddr 192.168.1.1 批改uboot地址输出命令 saveenv 保留环境变量的批改(下次开机后ipaddr会变为批改后的值)这里将uboot地址设置为 192.168.1.1设置Windows地址这里将Windows地址设置为 192.168.1.2虚拟机网络设置留神:虚拟机网络设置只能设置为桥接模式(校园网中只会调配一个ip地址,所以应用校园网时会会导致连贯不了网络)虚拟机中---编辑----虚构网络编辑器--抉择桥接模式--点击利用--点击确定。留神桥接模式那里不要抉择主动,因为电脑个别都有两个网卡(有线网卡和无线网卡),如果选了主动,虚构机会主动桥接到无线网卡,而咱们是应用有线网卡连贯到开发板的。设置Ubuntu地址点击进入网络--设置--IPV4--手动--设置地址--利用--重启网络(敞开虚拟机重启也行)这里设置IP地址为 192.168.1.3后果uboot--ping通Ubuntu胜利

May 11, 2022 · 1 min · jiezi

关于虚拟机:关于虚拟机识别不到U盘

找到服务--VMvare USB Arbitration Service---右键--启动,即可

April 3, 2022 · 1 min · jiezi

关于虚拟机:关于虚拟机与主机的共享文件夹

创立共享文件夹首先在主机电脑中创立一个空文件夹(门路不要有中文)点击虚拟机中的设置选项--共享文件夹--总是启用--增加抉择主机创立的空文件夹门路(上面的名称(A)是在虚拟机中对应的文件夹名称)再点击下一步,实现即可。留神:虚拟机中的共享文件夹都是对立放在/mnt/hgfs门路下的,能够间接cd进入,不能将文件挪动到其余地位,挪动后的文件夹不再是共享文件夹了。

March 15, 2022 · 1 min · jiezi

关于虚拟机:MAC下VirtualBox6配置

装置下载安装包官网下载地址:https://www.virtualbox.org/wi... 装置双击关上装置,会提醒双击pkg装置 设置平安在设置 -> 安全性与隐衷 -> 通用下,会有一个对于 Oracle 的平安拦挡,须要点击容许。 下载镜像从阿里官网下载 https://developer.aliyun.com/... 启动全局配置NAT网络用于虚拟机拜访外网:抉择工具 -> 全局设定 -> 网络 -> 新增按钮,减少一个NAT网络。 双击查看ip 主机网络设置用于主机拜访虚拟机:治理 -> 主机网络管理器 -> 创立 右侧点击启用 DHCP服务器 新增虚拟机点击「新建」,输出名称,会主动设置对应的类型和版本,若不对能够在做相应调整。点击「持续」。 呈现如下界面,点击「持续」。 呈现如下洁面,点击「持续」。 呈现如下洁面,点击「持续」。 点击「持续」。 点击「创立」。 创立胜利,如下: 虚拟机设置镜像选中虚拟机,点击「设置」,如下: 抉择「零碎」,将光驱挪动到第一位: 抉择「存储」-> 没有盘片 -> 点击右侧按钮,如果第一次,能够点击「抉择虚拟盘」,第二次上面会呈现历史记录 成果: 网卡网卡1第一个网卡用来设置虚拟机拜访外网,抉择「NAT网络」连贯形式, 界面名称会主动抉择下面创立的NAT网络 网卡2第二个网卡用来设置主机拜访虚拟机,抉择网卡2,点击「启用网络连接」,抉择仅主机,最初点击OK保留。 启动虚拟机选中虚拟机点击启动,界面会很小。几个快捷键:⌘:切换鼠标到主机⌘ + c:屏幕适应窗口或最小 适应窗口成果: 设置虚拟机网络外网ping一下百度,不通。 输出命令查看网络:ip addr 设置第2个网络,就是第一个网卡,编辑配置文件: vi /etc/sysconfig/network-scripts/ifcfg-enp0s3网关和ip依据后面抉择的全局配置的NAT网络而定。后面抉择的是NatNetwork,网段是10.0.2.x,所以配置如下: 重启网络,在ping百度能够拜访。systemctl restart network 主机通信查看ip,enp0s8的网卡没有ip信息,删掉对应的配置,而后重启虚拟机就能够获取ip了 rm -rf /etc/sysconfig/network-scripts/ifcfg-enp0s8

February 10, 2022 · 1 min · jiezi

关于虚拟机:JAVA虚拟机方法区与字符串常量池

前言办法区(Method Area)是线程共享的一块内存区域,JVM加载的类型信息,常量,动态变量和即时编译器编译后的代码缓存等数据均寄存于办法区。 运行时常量池(Runtime Constant Pool)是办法区的一部分,在Class文件中有一部分内容为常量池表(Constant Pool Table),用于寄存编译期生成的各种字面量与符号援用,这部分内容在Class文件被加载到JVM后会被寄存在运行时常量池中。 字符串常量池中寄存字符串字面量,在JDK1.8中,字符串常量池存在于堆中。 本篇文章将对JDK1.8中的办法区,运行时常量池和字符串常量池的区域散布进行阐明,并着重对字符串常量池进行剖析以探索new一个字符串对象时到底会在堆上创立几个对象。 JDK版本:1.8参考资料:《深刻了解Java虚拟机第三版》 注释一. 办法区的区域散布办法区只是一个逻辑概念,在JDK1.8中办法区的具体实现为元空间,而元空间应用的是本地内存。在JDK1.8中,办法区,运行时常量池和字符串常量池的区域散布示意图如下所示。 即字符串常量池存在于堆中,并且如果要设置办法区大小,须要应用-XX:MaxMetaspaceSize=指令进行设置。 JDK1.8中应用元空间作为办法区的实现以代替永恒代(PermGen),有如下起因。 永恒代作为办法区的实现时,字符串常量池存在于运行时常量池中,即字符串常量池存在于办法区中,而办法区只有Full GC时才会被清理,因而容易呈现因为字符串常量池导致的内存溢出;类型信息等数据大小不容易确定,将其寄存到本地内存更为适合。二. 字符串常量池首先答复那个经典的问题:new一个字符串对象会创立几个对象。答案是一个或者两个。 字符串常量池中会存储字符串字面量,字符串字面量实质就是对象,当在代码中呈现如下代码。 String str = "sakura";如果字符串常量池中曾经存在sakura这个字符串字面量,那么str会指向字符串常量池中的sakura字符串字面量,反之,则会先将sakura这个字符串字面量增加到字符串常量池中,而后再将str指向字符串常量池中的sakura字符串字面量。 更甚一步,其实只有代码中呈现双引号括起来的字符串,那么就会去字符串常量池中寻找对应的字符串字面量,如果寻找不到,则创立字符串字面量并增加到字符串常量池中。 当初如果在代码中呈现如下代码。 String str = new String("sakura");首先呈现了双引号括起来的sakura字符串,所以就会去字符串常量池中寻找对应的字符串字面量,如果寻找不到,则创立sakura字符串字面量并增加到字符串常量池中,如果寻找到,则间接应用字符串常量池中的sakura字符串字面量。最初,会在堆上创立一个字符串对象,str会指向堆上创立进去的字符串对象。所以new一个字符串对象时,能够必定的是肯定会在堆上创立一个字符串对象,然而字符串常量池中是否会创立一个字符串字面量,要取决于字符串字面量之前是否曾经存在,曾经存在则不会再反复创立。所以new一个字符串对象会创立几个对象的答案是一个或者两个。 为了加深了解,思考如下的示例。 public class StringTest { public static void main(String[] args) { String str1 = new String("sakura") + new String("sakura"); //步骤1 String str2 = "sakurasakura"; //步骤2 System.out.println(str1 == str2); //步骤3 }}当执行完步骤1后,堆上的状况如下所示。 执行完步骤2后,堆上的状况如下所示。 所以最终步骤3的打印后果肯定是false。 3. String的intern()办法首先思考如下的示例。 public class StringTest { public static void main(String[] args) { String str1 = new String("sakura") + new String("sakura"); //步骤1 str1.intern(); //步骤2 String str2 = "sakurasakura"; //步骤3 System.out.println(str1 == str2); //步骤4 }}上述示例和第2大节中的示例差不多,只不过多了一步str1.intern()。String的intern()办法会依据以后字符串对象的值去字符串常量池中进行匹配,如果字符串常量池中存在字符串字面量的值与以后字符串对象的值相等,则返回这个字符串字面量的地址,如果字符串常量池中不存在字符串字面量的值与以后字符串对象的值相等,则在字符串常量池中注册一个援用并指向以后字符串对象,并最初返回以后字符串对象的地址。那么上述示例中,执行完步骤2后,堆上的状况如下所示。 ...

January 19, 2022 · 1 min · jiezi

关于虚拟机:使用VMware安装Win7虚拟机并安装VM-Tools总结

虚拟机的创立首先,在i tell you下载零碎镜像文件。 学长倡议:留神这里肯定要抉择 Service Pack 1,不然前面装置 VMware Tools会装置不了能够将上图红框中的文字码间接复制到迅雷浏览器,便能够间接下载。下载实现后,关上VMware,点击文件-新建虚拟机。呈现如下界面。next-并在下图红箭头所指的地位,抉择你刚刚下载的零碎镜像文件。Next,在百度搜寻Windows7操作系统的密钥,C+ctrl,ctrl+V下来就能够了。而后呈现下图界面,能够自行更改虚拟机的名称和地位。上述步骤,就是始终next直至实现。 装置VM Tools开启装置好的虚拟机。(第一次关上会有一个如下图的主动装置流程,再装置后重新启动即可。)如果和笔者呈现同样的问题,也不必慌,咱们只须要敞开虚拟机,进行设置就好。能够点击 设置-软盘,移除软盘,或者将软盘的连贯改成 应用物理驱动器-自动检测,重新启动虚拟机,即可。重启之后,点击 装置VMware Tools,等一段时间会弹出上面的提示框,点击 运行 setup64.exe,这里留神如果你的操作系统是64位,这里的 setup 就是64,如果是32位的操作系统,那么这里就只是 setup.exe 。在上图选项中,能够自行确定选则典型装置,还是残缺装置。点击装置。 留神:如果呈现下图问题,请点击始终装置此程序。 留神:如果呈现下图安装程序无奈装置问题,不要慌。 安装程序无奈装置解决方案。援用学长文档:这个问题是因为微软从2019年12月3日已将Windows驱动程序签名更改为应用SHA-2算法,不反对SHA-2代码签名的旧版Windows零碎将无奈通过驱动程序签名验证。也就是说你的win7或者Windows Server 2008 零碎中短少应用新算法的签名,原来的SHA-1算法过期了。详情见:https://support.microsoft.com...解决办法1.点击下列网址进入补丁下载界面https://www.catalog.update.mi...2.抉择相应的补丁进行装置作者装置的是 win7 x64 所以抉择最初一个下载好之后就能够将补丁传到虚拟机下面,双击运行就能够了。如果传输,能够参考这篇文章:如何往虚拟机内传文件的3种办法作者应用的是第一种办法。补丁装置好之后,再次以上装置 VMware Tools 的操作就能够了。留神:在传输补丁的过程中,如果呈现本机与虚拟机双双辨认胜利,然而不能够文件传输的状况,记得依照如下流程,在虚拟机中设置用户名和明码即可。如果还没设置明码的用户,则该地位会显示创立新密码。此时,去本机-网络-找到虚拟机-双击关上-输出用户名和明码-将下载的补丁文件传入虚拟机中-在虚拟机中依照流程装置即可。装置之后,重新启动虚拟机,按照上述流程再顺次装置一遍,即可。

September 7, 2021 · 1 min · jiezi

关于虚拟机:虚拟机专栏Rust智能合约的应用

【导读】 往期“智能合约执行引擎的前世今生”、“相熟的新敌人 - 链上JVM”中,咱们介绍了智能合约的起源,以及自研的能够执行Java智能合约的执行引擎HVM。尽管HVM相比于EVM,性能曾经有了很大的晋升,然而因为其字节码数量很大,在解释执行的场景下执行性能非常受限。另一方面,合约破绽(不思考业务逻辑破绽)引发的平安问题,每年都在产生,所造成的经济损失都非常重大,那么有没有一种计划能让使用者抛开集体因素,尽量写出平安的合约? 为了解决这两个迫切的问题,咱们引入了wasm虚拟机FVM,以及Rust合约编写框架。上面本文将具体介绍这两个局部在智能合约畛域的利用。 【安全性】 家喻户晓,solidity语法在更新时出于一些考量并没有做好兼容工作,导致不同版本的语法差别很大,开发人员在不同版本的语法之间来回切换,着实节约精力。另外,因为区块链区别于传统的互联网技术有着“不可篡改”的个性,一旦产品公布,无奈以补丁的模式修复现存在的问题,也无奈在原有的根底上进行版本迭代。这就须要合约开发者能一次就写出没有任何问题的合约,否则容易造成巨额的经济损失。然而事件一旦适度依赖于"人",往往会带来量子学的色调,最好是有另外一套机制来确保合约的正确性。 Rust作为高效、牢靠的通用语言毫无疑问是现有的最好解决方案。 Rust语言的可靠性依靠于丰盛的类型零碎和所有权模型,以及弱小的编译器,在编译期就能捕捉经典谬误。这迫使开发者在编写合约过程中,思考本人所写的每行代码是否精确,并通过编译器来确认,保障通过编译器查看的合约代码肯定是平安的,极大的进步了合约的安全性以及可靠性。 此外,咱们自研的合约框架提供了一个运行时的测试框架,让开发者能模仿合约运行,无需部署就能在链下找到合约中存在的问题。这无疑是给上链的合约减少了一重保险。 另外,咱们的合约框架利用rust的宏开展技术,将操作放在宏注解外面。这样能让开发者在应用过程中更多的关注本人合约的业务逻辑,从某种程度上保障了合约逻辑平安,毕竟只须要专一一个局部而没有其余因素的烦扰,能让开发者更加投入的去打磨逻辑的细节。 【执行效率】 EVM在实质上是脚本程序,是基于栈的虚拟机,须要由编译程序翻译成指令后执行,即解释执行,这导致EVM的执行效率非常低。与之绝对,wasm应用了编译执行的形式,采纳了虚拟机/字节码技术, 并定义了紧凑的二进制格局, 领有更高更快的智能合约执行速度。因而咱们引入wasm极大的进步了整个合约的运行效率。 WASM(WebAssembly) 依照字面意思就是web汇编,是为web浏览器定制的汇编语言。这里尽管说是定制,但随着灵性的倒退,它不仅仅只实用于web,其《外围标准》更是与平台无关。既然号称汇编,那它显然具备汇编语言的特点: 1)档次低,靠近于机器语言,进步运行效率; 2)适宜作为指标代码,由其余高级语言(C/C++/Rust/Go等)编译器生成,扩充适用性; 另外模块是wasm程序编译、传输和加载的单位。wasm定义了两种模块格局: 二进制格局:是wasm模块的次要编码格局,文件以 .wasm为后缀 。因为其格局设计的十分紧凑,能够放大二进制体积,领有更快的传输和执行效率。 文本格式:文件以.wat为后缀,此处不具体开展。 模块的划分使得wasm的组织构造更加清晰,解析更为不便,极大地晋升了解析的效率。 【FVM详解】 那么除了应用Rust来编写合约,以及将合约编译成wasm字节码,真正要将合约运行起来,仍然须要为wasm提供一个运行环境,也就是FVM做的事。 从语义上讲,一个wasm模块从二进制格局到最终被执行能够分为3个阶段:解码,验证,执行。解码阶段把二进制模块解码为内存格局;验证阶段对模块进行动态剖析,确保模块的构造满足标准要求,且函数的字节码没有不良行为;执行阶段又能够分为实例化和函数调用两个局部。 (1) FVM组成显然,FVM残缺的性能该当是蕴含下面提及到的解码、验证、实例化以及函数调用等局部。咱们依照整个流程实现了FVM, 然而在理论运行中,发现执行过程会耗费大量的性能在内存的读写及调配上。为了进一步提高FVM的执行性能,咱们新增了一层编译模块,将wasm的栈式内存转为基于寄存器式内存,对内存进行标记并加以反复利用,防止了频繁的分配内存,极大的晋升了整体执行效率。 (2)FVM与平台的账本交互在rust智能合约中,咱们对数据是否上链做了明确的辨别,只有标定特定宏注解的字段数据才会上链交互。在合约部署时,对于初始化的字段写入账本;在调用合约办法时,如果应用到合约的长久化字段,合约执行引擎会调用账本读取的办法从账本中获取其数据。对于存在有数据写入操作(即更新)的字段,待合约执行完结后,若账本还未存在此字段则将其写入账本,若此字段已存在, 则对相应的账本数据进行更新。图片 (3)整体流程 整个介绍下来,置信大家对Rust智能合约的应用有了个大略的印象。这里对整个流程做个梳理: step1: 用户通过Rust合约框架编写智能合约 (肯定要测试) step2: 编译合约为wasm文件 step3: 将wasm合约文件部署到FVM 实现以上步骤你就胜利的运行了一个合约❤。 【将来瞻望】目前的合约都只是针对绝对简略的业务,在咱们的布局中,FVM既能利用在现有的合约场景,又能利用在业务简单以及对合约执行速度有较高要求的场景。同时给了非区块链行业技术人员一种“零学习老本”的上链办法——应用他们相熟的编程语言来编写合约。扩充了区块链技术的利用场景以及影响范畴,以便探寻更多的区块链技术落地计划。目前FVM在性能上的体现曾经很好的达到了预期,然而咱们不会满足于眼前的现状停滞不前。在后续的布局中,咱们将持续探寻一些优化计划,比方: 1) 虚拟机缓存的优化; 2) 引入AOT(Ahead-of-Time), 即事后编译的形式,替换现有的字节码解释执行,将wasm模块间接编译成go代码,利用go的插件机制间接加载运行,失去极致的性能体验。 技术在一直的新陈代谢,优化工作将始终继续上来,“放弃先进”是咱们的指标。 【小结】 本文从「安全性」以及「效率的晋升」两个角度,引出了对rust智能合约反对的FVM,探讨了rust与wasm在智能合约上为什么会有如此体现,以及咱们应用FVM的意义。接下来咱们还会对反对区块链上SQL执行的KVSQL进行具体介绍,敬请期待! 作者简介李凯趣链科技根底平台部区块链虚拟机钻研小组参考文献[1] rust程序设计语言 [2]《WebAssembly原理与核心技术》

September 2, 2021 · 1 min · jiezi

关于虚拟机:后Kubernetes时代的虚拟机管理技术之kubevirt篇

kubevirt是Red Hat开源的以容器形式运行虚拟机的我的项目,是基于kubernetes运行,利用k8s CRD为减少资源类型VirtualMachineInstance(VMI),应用CRD的形式是因为kubevirt对虚拟机的治理不局限于pod治理接口。通过CRD机制,kubevirt能够自定义额定的操作,来调整惯例容器中不可用的行为。kubevirt能够应用容器的image registry去创立虚拟机并提供VM生命周期治理。Kubevirt的架构 kubevirt以CRD的模式将VM治理接口接入到kubernetes中,通过一个pod去应用libvirtd治理VM的形式,实现pod与VM的一一对应,做到如同容器个别去治理虚拟机,并且做到与容器一样的资源管理、调度布局、这一层整体与企业IAAS关系不大,也不便企业的接入,对立纳管。virt-api:kubevirt是以CRD模式去治理VM Pod,virt-api就是所有虚拟化操作的入口,这外面包含惯例的CDR更新验证、以及console、vm start、stop等操作。 virt-controller:virt-controller会依据vmi CRD,生成对应的virt-launcher Pod,并且保护CRD的状态。与kubernetes api-server通信监控VMI资源的创立删除等状态。virt-handler:virt-handler会以deamonset模式部署在每一个节点上,负责监控节点上的每个虚拟机实例状态变动,一旦检测到状态的变动,会进行响应并且确保相应的操作可能达到所需(现实)的状态。virt-handler还会放弃集群级别VMI Spec与相应libvirt域之间的同步;报告libvirt域状态和集群Spec的变动;调用以节点为核心的插件以满足VMI Spec定义的网络和存储要求。virt-launcher:每个virt-launcher pod对应着一个VMI,kubelet只负责virt-launcher pod运行状态,不会去关怀VMI创立状况。virt-handler会依据CRD参数配置去告诉virt-launcher去应用本地的libvirtd实例来启动VMI,随着Pod的生命周期完结,virt-lanuncher也会去告诉VMI去执行终止操作;其次在每个virt-launcher pod中还对应着一个libvirtd,virt-launcher通过libvirtd去治理VM的生命周期,这样做到去中心化,不再是以前的虚拟机那套做法,一个libvirtd去治理多个VM。virtctl:virtctl是kubevirt自带相似kubectl的命令行工具,它是越过virt-launcher pod这一层去间接治理VM虚拟机,能够管制VM的start、stop、restart。Kubevirt如何治理虚拟机?虚拟机镜像制作与治理 虚拟机镜像采纳容器镜像模式寄存在镜像仓库中。创立原理如上图所示,将Linux发行版本的镜像文件寄存到根底镜像的/disk目录内,镜像格局反对qcow2、raw、img。通过Dockerfile文件将虚拟机镜像制作成容器镜像,而后别离推送到不同的registry镜像仓库中。客户在创立虚拟机时,依据配置的优先级策略拉取registry中的虚拟机容器镜像,如果其中一台registry故障,会另一台衰弱的registry拉取镜像。虚拟机生命周期治理 KubeVirt虚拟机生命周期治理次要分为以下几种状态:虚拟机创立:创立VM对象,并同步创立DataVolume/PVC,从Harbor镜像仓库中拉取零碎模板镜像拷贝至指标调度主机,通过调度、IP调配后生成VMI以及治理VM的Launcher Pod从而启动供业务应用的VM。虚拟机运行:运行状态下的VM 能够进行控制台治理、快照备份/复原、热迁徙、磁盘热挂载/热删除等操作,此外还能够进行重启、下电操作,进步VM平安的同时解决业务存储空间需要和主机异样Hung等问题。虚构机关机:关机状态下的VM能够进行快照备份/复原、冷迁徙、CPU/MEM规格变更、重命名以及磁盘挂载等操作,同时可通过重新启动进入运行状态,也可删除进行资源回收。虚拟机删除:对虚机资源进行回收,但VM所属的磁盘数据仍将保留、具备复原条件。虚拟机创立流程虚拟机创立分为创立DataVolume和VMI两个流程:1.创立DataVolume后,CDI组件创立对应的PVC并且关联到适合的PV,而后通过长期Importer Pod拉取虚拟机容器镜像绑定到DataVolume生成的PV中,并且将镜像转换成disk.img文件存储在PV中供虚拟机应用。2.创立VMI后,期待disk.img转换胜利,而后在对应的Node上启动Launcher Pod,并将CDI流程生成的PV挂载到Pod内,当做虚拟机启动的系统盘。Launcher依据VMI的定义生成定义虚拟机的XML文件,而后调用libvirt过程调用Qemu命令创立并且启动虚拟机。VMI会对Launcher Pod状态进行同步,反馈VM运行的状态。Kubevirt如何实现容器与虚拟机交互TBD容器和虚拟机互通Virtual-Kubelet对应的Node会上报节点上Pod的Endpoint,假设Kubernetes集群和IaaS层平台部署在同一个二层网络下,则集群内容器Pod能够拜访VM-Pod,但容器Pod对于VM-Pod不可见;针对上一点能够通过Macvlan等网络插件,将容器-Pod,降维至二层网络上,实现容器-Pod和虚拟机互通,有肯定硬件要求。如何实现⼀套集群下虚拟机与容器的混合调度与资源隔离Virtual-Kubelet提供的是一个虚构节点用来向Kubernetes上报Node对象和Pod的状态和资源状况,虚拟机资源和集群内节点资源齐全隔离;在引入Virtual-Kubelet的状况下,须要对Virtual-Kubelet节点配置Taint和Tolerations,保障容器-Pod和VM-Pod调度拆散。服务发现Virtual-Kubelet,通过Provider实现的API将IaaS层VM信息形象成对应Pod对象的信息的形式来上报Endpoints,能够通过给CR增加no selector Service,待VM-Pod拉起后补充address至对应的ServiceKubevirt实用场景因为Kubervirt提供的成熟的虚拟化能力和性能,并且能够间接通过Kubernetes进行对立治理。所以Kubevirt适宜在有PaaS层治理平台和Kubernetes集群环境的状况下,通过kubevirt中的繁多管制立体简化了对虚拟机的治理,让用户无需关怀IaaS层,即可轻松在集群内构建、部署出一台虚拟机进行应用。如何搭建KubevirtKubevirt装置1.前置条件查看硬件是否反对虚拟化如果虚拟化不可用,则须要手动开启软件仿真2.装置Kubevirt组件间接操作以下命令进行装置3.查看实例是否失常运行4.启动相干个性批改kubevirt-config configmap内的数据5.装置virtctl装置kubevirt命令行工具6.装置CDICDI(containerized-data-importer) 是kubernetes的长久存储管理插件,帮忙kubevirt构建磁盘镜像,能够将不同起源的数据源(url、container image、upload....)来填充pvc的能力。获取最新版,进行装置装置结束后,会在cdi namespace下,启动cdi相干组件 至此,kubevirt装置结束创立虚拟机1.筹备一个虚拟机镜像 通过dockerfile构建出一个虚拟机镜像2.创立一台VM编辑好yaml文件,通过kubectl命令拉起一台vm

August 24, 2021 · 1 min · jiezi

关于虚拟机:VMware16安装win7-x64-虚拟机

@[toc] VMware装置win7操作系统下载iso镜像文件下载 iso镜像文件,i tell you 留神这里肯定要抉择 Service Pack 1,不然前面装置 VMware Tools会装置不了 这里间接将 ed2k://|file|cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso|3266004992|5A52F4CCEFA71797D58389B397038B2F|/复制到迅雷,qq旋风等这些下载器,会自动识别下载。 新建虚拟机镜像下载好之后,在VMware中点击新建虚拟机,一路依照提醒走就能够了。 这里的镜像文件就抉择本人下载的镜像文件。 密钥能够本人百度。 抉择虚拟机的装置地位,最好不要选在C盘,这里作者装置在E盘 装置VMware Tools装置VMware Tools关上装置好的虚拟机,关上的时候,装置VMware Tools可能是灰色的如果是灰色的话,能够点击 设置-软盘,移除软盘,或者将软盘的连贯改成 应用物理驱动器-自动检测,留神这里须要把虚构机关机之后再设置。 重启之后,点击 装置VMware Tools,等一段时间会弹出上面的提示框,点击 运行 setup64.exe,这里留神如果你的操作系统是64位,这里的 setup 就是64,如果是32位的操作系统,那么这里就只是 setup.exe 。 这里抉择 典型装置 和 残缺装置 均可 点击下一步,再点击装置 装置实现之后,重启虚拟机就能够了。 安装程序无奈主动装置VSock驱动程序。必须手动装置此驱动程序呈现安装程序无奈主动装置VSock驱动程序。必须手动装置此驱动程序 谬误可能会呈现一下谬误,最初装置失败 这个问题是因为微软从2019年12月3日已将Windows驱动程序签名更改为应用SHA-2算法,不反对SHA-2代码签名的旧版Windows零碎将无奈通过驱动程序签名验证。也就是说你的win7或者Windows Server 2008 零碎中短少应用新算法的签名,原来的SHA-1算法过期了。详情见:https://support.microsoft.com/en-us/topic/sha-2-code-signing-support-update-for-windows-server-2008-r2-windows-7-and-windows-server-2008-september-23-2019-84a8aad5-d8d9-2d5c-6d78-34f9aa5f8339 解决办法点击下列网址进入补丁下载界面 http://www.catalog.update.microsoft.com/search.aspx?q=kb4474419 抉择相应的补丁进行装置 作者装置的是 win7 x64 所以抉择最初一个 下载好之后就能够将补丁传到虚拟机下面,双击运行就能够了。 如果传输,能够参考这篇文章:如何往虚拟机内传文件的3种办法 作者应用的是第一种办法。 补丁装置好之后,再次以上装置 VMware Tools 的操作就能够了。

August 12, 2021 · 1 min · jiezi

关于虚拟机:virtlet是什么virtlet如何管理虚拟机

随着Docker和Kubernetes生态圈的倒退,云计算畛域对容器的趣味达到了狂热的水平。容器技术为应用程序提供了隔离的运行空间,每个容器内都蕴含一个独享的残缺用户环境空间,容器内的变动不会影响其余容器的运行环境。因为容器之间共享同一个零碎内核,当同一个库被多个容器应用时,内存的应用效率会失去晋升。基于物理主机操作系统内核的,那就意味着对于不同内核或者操作系统需要的利用是不可能部署在一起的。虚拟化技术则是提供了一个残缺的虚拟机,为用户提供了不依赖于宿主机内核的运行环境。对于从物理服务器过渡到虚构服务器是一个很天然的过程,从用户应用上并没有什么区别。目前Redhat开源的kubevirt和Mirantis开源的virtlet都提供了以容器形式运行虚拟机的计划。kubevirt 是 Redhat 开源的以容器形式运行虚拟机的我的项目,以 k8s add-on形式,利用 k8s CRD 为减少资源类型Virtual Machine Instance(VMI), 应用容器的image registry去创立虚拟机并提供VM生命周期治理。 用pod治理能力,要自主去实现,目前kubevirt实现了相似RS的性能。那Virtlet是什么呢?Virtlet 来自于 Mirantis,跟 kubevirt 的不同之处在于它应用 POD 来形容一个 VM(Virtual Machine,虚拟机)。Virtlet 是 Kubernetes 一个运行时服务,可能依据 QCOW2 映像运行 VM 工作负载。Virtlet是是K8S的一个插件,CRI接口兼容的插件,可能在 Kubernetes 集群上运行基于虚拟机的 Pods。Virtlet的架构CRIProxy作为代理,能够实现在一个节点上反对多种CRI。kubelet会去调用CRIProxy,由CRIProxy依据pod image前缀(默认virtlet.cloud)决定将申请发给virtlet process 还是dockershim server,从而去创立虚拟机或者容器。每个节点上会由daemonset负责启动virtlet pod,该virtlet pod包含三个容器:virtlet:接管 CRI 调用,治理VMlibvirt:接管 virtlet 的申请创立、进行或销毁VMVMs:所有 virtlet 治理的VM 都会在这个容器的命名空间里vm确实在vms container下,能够看到对应/proc/{id}/ns/下都是统一的,其实其余container ns只有mnt ns是不一样的。Virtlet如何治理虚拟机虚拟机生命周期治理流程virtlet应用原生的workload(deployment,statefulset)去治理vm pod,vm的生命周期与pod统一。vm随着pod的创立而创立,随着pod的销毁而销毁。整体流程:1.deploy、statefulset等workload创立出对应的pod;2.kubelet list-watch发现了调度到该节点的pod,依据cri调用criproxy;3.criproxy会依据pod image前缀判断是将申请发给virtlet还是docker,比方pod image为virtlet.cloud/library/cirrors, 依据前缀匹配到virtlet.cloud,则将申请转给virtlet;4.virtlet process会依据申请去调用libvirt api通过qemu-kvm去创立/输入虚拟机虚拟机存储virtlet反对原生存储领域:emptydirhostpathpvc, 须要mode类型是blockflexvolumessecret,configmap能够通过annotation字段去配置磁盘驱动以及零碎磁盘大小:metadata: name: my-vm annotations: kubernetes.io/target-runtime: virtlet.cloudVirtletRootVolumeSize: 4GiVirtletDiskDriver: virtio....VirtletRootVolumeSize定义了根卷的磁盘大小,VirtletDiskDriver定义了磁盘驱动,惯例磁盘驱动默认为virtio-scsi。其中virtlet也反对cloud-init进行初始化配置,定义ssh明码以及相干用户、网络等初始化:apiVersion: v1kind: Podmetadata: name: ubuntu-vm annotations: kubernetes.io/target-runtime: virtlet.cloud# override some fields in cloud-init meta-dataVirtletCloudInitMetaData: | instance-id: foobar# override some fields in cloud-init user-dataVirtletCloudInitUserData: | users: - name: cloudy gecos: Magic Cloud App Daemon User inactive: true system: truevirtlet治理的虚拟机与容器如何实现整体交互virtlet与惯例CRI一样,也是应用CNI治理虚拟机的网络。virtlet去调用cni之前,会创立出新的network namespace,通过tap设施连贯虚拟机,veth pair连贯主机网络与cni 网络模型。以后连通virtlet治理的虚拟机形式:依据virtlet pod IP地址,间接ssh模式kubectl attach命令, virtlet提供attach接口,可能以相似console模式拜访virtletctl 命令,提供ssh,vps模式虚拟机镜像virtlet反对qcow格局的镜像文件,但须要在pod image定义中指定virtlet.cloud前缀。virtlet会将对镜像进行名称转换, 将名称转换成虚拟机镜像下载地址。以后virtlet反对两种镜像名称转换的形式:动态配置:默认kube-system会创立名为virtlet-image-translations的configmaptranslations: ...

August 9, 2021 · 1 min · jiezi

关于虚拟机:Parallels-Desktop-16-联网失败和不能连接USB设备解决方法

Parallels Desktop 16 在最新的macOS Big Sur 11.0零碎上无奈联网,并且无奈连贯USB设施。之前解决联网的方法是在终端通过命令启动 parallels desktop 的办法解决联网的问题,然而绝对比拟麻烦,而且还是无奈解决Parallels Desktop 16 不能连贯USB设施的问题。 为大家提供一个更好的办法解决 Parallels Desktop 16 不能联网与连贯 USB 设施的问题。具体操作步骤如下: 1.鼠标右键点击访达图标,抉择返回文件夹或者快捷键shift+command+G2.输出以下门路: /Library/Preferences/Parallels关上「network.desktop.xml」找到第5行的<UseKextless>-1<UseKextless> (也可能是 <UseKextless>1<UseKextless> ),批改为 <UseKextless>0<UseKextless> 保留并退出,保留时会提醒输出明码,输出零碎明码确定即可;同理,关上「dispatcher.desktop.xml」,按 command + F 查找<Usb>0<Usb>,批改为<Usb>1<Usb>保留并退出,保留时会提醒输出明码,输出零碎明码确定即可;而后关上Parallels Desktop 16,可能会提醒Parallels须要零碎扩大 ,关上 零碎偏好设置 ,进入 安全性与隐衷 ,点击左下角的锁图标解锁,在点击下方【 来自开发者“Parallels International GmbH”的系统软件已被阻止载入。 】右侧的 容许 按钮,提醒须要重启,点击确定重启电脑,再关上Parallels Desktop 16进入Windows零碎即可失常上网和连贯USB设施了。

July 27, 2021 · 1 min · jiezi

关于虚拟机:都有哪些不错的虚拟机软件

虚拟机在计算机上模仿其余操作系统,每个操作系统都在独自的窗口中。应用 VM 软件,您能够在 macOS 上运行 Windows 实例,反之亦然,以及其余操作系统组合,包含 Chrome OS、Linux 和 Solaris。以下是 2021 年可用的一些虚拟机软件程序。 01 行业标准:VMware 工作站 VMware Workstation 在市场上已有近 20 年的历史,通常被认为是虚拟机应用程序的行业标准。其弱小的功能集涵盖了许多虚拟化需要。 它通过反对DirectX 10 和 OpenGL 3.3 实现高级 3D 解决方案,即便在应用图形密集型应用程序时也能打消 VM 内的图像和视频品质降落。该软件反对虚拟机凋谢规范,提供在 VMware 产品中创立和运行来自竞争供应商的 VM 的能力。 其高级网络性能可让您为 VM 设置和治理精心设计的虚构网络。当 VMware 与内部工具集成时,能够设计和施行其残缺的数据中心拓扑- 基本上模仿整个企业 DC。 您能够应用 VMware 快照来设置回滚点以进行测试。它的克隆零碎使部署相似虚拟机的多个实例变得轻而易举。对于多个虚拟机,您能够在齐全隔离的正本或局部依赖原始虚拟机的链接克隆之间进行抉择,以节俭硬盘空间。 该应用程序有两个版本:Workstation Player 和 Workstation Pro。 播放器能够收费应用。它容许您创立新的虚拟机并反对 200 多个客户操作系统。它还容许在主机和来宾之间共享文件,具备上述图形劣势,并反对4K 显示。 收费版本不足 VMware 的高级性能,例如一次运行多个 VM 以及拜访克隆、快照和简单网络等性能。 Workstation Player 被限度用于商业用途。心愿应用 Workstation 软件的企业必须购买一个或多个 Pro 许可证能力在试用期之后应用该应用程序。 VMware Station 与以下主机平台兼容: ...

July 26, 2021 · 2 min · jiezi

关于虚拟机:从零开始的k8s之旅二从虚拟机到容器

与虚拟机比拟,容器更加轻量级,因为虚拟机“虚构”了一个残缺的操作系统,而容器只是一个隔离的过程而已。当一台主机上运行三个虚拟机的时候,你就领有了三个齐全分隔的操作系统,共享同一台主机。多个容器则会齐全执行运行在宿主机上的同一个内核的零碎调用,这个内核也是惟一一个在宿主机操作系统执行x86指令的内核。如果以后有6个雷同的应用程序别离用虚拟机和Docker容器运行,你会发现无论是利用A和B无论在虚拟机和容器上都能够拜访同样的二进制和库。在虚拟机里是天经地义的,而Docker通过镜像分层,容器运行时,一个新的可写层在镜像层之上被创立,每一层仅被存一次,当基于雷同根底层的镜像被创立成两个容器时,它们就能读取雷同的文件;然而如果其中一个容器写入某些文件,另一个是无奈看见文件变更的,即便它们共享文件,也是彼此隔离的。尽管容器比虚拟机轻量的多,但也给运行于其中的利用带来了一些局限性,这些问题留待后续探讨。

May 13, 2021 · 1 min · jiezi

关于虚拟机:我所知道JVM虚拟机之字节码指令集与解析七控制转移指令

一、管制转移指令概述程序流程离不开条件管制,为了反对条件跳转,虚拟机提供了大量字节码指令,大体上能够分为 比拟指令、条件跳转指令、比拟条件跳转指令、多条件分支跳转指令、无条件跳转指令等。后面咱们也提到过有比拟指令,指的是比拟两个栈顶元素的大小,并将比拟后果入栈 比拟指令有: dcmpg,dcmpl、fcmpg、fcmpl、lcmp 与后面解说的指令相似,首字符d示意double类型,f示意float,l示意long 对于double和float类型的数字,因为NaN的存在,各有两个版本的比拟指令 以float为例有fcmpg和fcmpl两个指令,区别在于在数字比拟时若遇到NaN值处理结果不同 指令dcmpl和dcmpg也是相似的,依据其命名能够揣测其含意,在此不再赘述 指令lcmp针对long型整数,因为long型整数没有NaN值,故无需筹备两套指令 举例比拟================================ 指令fcmpg和fcmpl都从栈中弹出两个操作数,并将它们做比拟 设栈顶的元素为v2,核顶顺位第2位的元素为v1 若v1=v2则压入0若v1>v2则压入1若v1<v2则压入1两个指令的不同之处在于,如果遇到NaN值,fcmpg会压入1,而fcmpl会压入-1 二、管制转移指令的条件跳转指令解说条件跳转指令通常和比拟指令联合应用。 在条件跳转指令执行前,个别能够先用比拟指令进行栈顶元素的筹备,而后进行条件跳转 条件跳转指令有: ifeq、iflt、ifle、ifne、ifgt、ifge、ifnull、ifnonnull 这些指令都接管两个字节的操作数,用于计算跳转的地位(16位符号整数作为以后地位的offset) 它们的对立含意为:弹出栈顶元素测试它是否满足某一条件,如果满足条件,则跳转到给定地位 具体指令阐明如下图所示: 留神:与后面运算规定统一对于boolean、byte、char、short类型的条件分支比拟操作,都是应用int类型的比拟指令实现 对于long、 float、double类型的条件分支比拟操作,则会先执行相应类型的比拟运算指令,运算指令会返回一个整型值到操作数栈中,随后再执行int类型的条件分支比拟操作来实现整个分支跳转 因为比拟类型最终都会转为int类型,所以对于int类型的条件分支指令是最为丰盛和弱小的。 接下来咱们应用示例代码来领会领会条件跳转指令是怎么样的? public class IfSwitchGotoTest { //1.条件跳转指令 public void compare1(){ int a = 0; if(a == 0){ a = 10; }else{ a = 20; } }}接下来咱们编译代码应用插件查看具体的字节码是怎么样的? 接下来咱们剖析一下字节码指令,看看具体做了哪些事件? 接下来咱们再应用示例代码来领会领会条件跳转指令是怎么样的? public class IfSwitchGotoTest { //1.条件跳转指令 public boolean compareNull(String str){ if( str == null){ return tlue; }else{ return false; } }}接下来咱们编译代码应用插件查看具体的字节码是怎么样的? ...

April 29, 2021 · 2 min · jiezi

关于centos7:VMware虚拟机搭建集群环境

简介:在Java学习的路上有很多软件是须要装置到linux上的,然而咱们个别应用的windows不反对双系统,花钱买云服务又太贵。所以咱们通过VM进行搭建虚机进行学习。本文应用VMware 15+centOS7进行解说。如有问题能够在下方进行留言。或者间接分割我WX【zjdkingwx】如果感觉对你有帮忙心愿给个赞,让更多人看到,帮忙更多的人。VMware+centos7下载安装能够从官网下载,也可下载我的版本。提取:2rxecentOS 7能够从阿里云centos7下载,这样速度比拟快。 开始装置:双击点开利用文件。一路下一步即可。最初实现之后关上虚拟机,会提醒输出激活码,云盘中曾经将激活码和安装程序放在一起(为了避免生效激活码生效提供了多个。随便粘贴一行就能够)。输出激活码之后就会进入到这下边界面。1.文件--->新建虚拟机--->抉择自定义装置。2.抉择以后VMware版本点击下一步 3.抉择刚刚下载好的centos7文件,点击下一步。 4.给你的虚拟机起一个名字,并且指定他寄存的地位。【对于本人的代码和软件最好不要懂放一下西放一下。肯定要有条理】 5.抉择解决其数量,如果没有特殊要求间接默认即刻。6.设置虚拟内存,更具本人须要搭建的环境设定。默认1g就能够,我这个是因为筹备搭建k8s环境,k8s要求有至多2g内存。7.抉择NAT模式下一步8.应用举荐 9.应用举荐 10.默认的创立虚新虚构磁盘。下一步。 11.设置磁盘空间(默认的20G就够用),抉择将磁盘存储位单个文件。12.自定义磁盘文件名称,这个默认即可。下一步。 13.点击自定义硬件能够查看咱们之间的配置能够在次对不称心的进行批改。咱们这里就不批改了,间接点击实现。 14.静静的期待,而后会弹出下边的界面,抉择第一行Install CentOS 7回车【第二行是须要查看而后再装置,咱们下载的包必定没问题,不必查看】持续回车 15.而后抉择应用的语言,咱们这里应用简体中文。点击持续。 16.设置日期工夫。抉择上海工夫,这里边没有北京。 17.批改装置地位,点击带有叹号的装置地位进去该页面咱们什么也不必改,间接点击实现就好。 18.禁用KDUMP,节俭空间。 19.点击网络和主机名,配置网络和主机名称 20.点击Root明码,设置明码。最初重新启动,大布告成。撒花。 装置Xshell6下载安装为了不便操作linux,咱们应用Xshell6+xftp6 下载安装文件和破解包提取码:zjdk当初下来安装包间接装置即刻。纯绿色。 1.通过xshell链接咱们的虚拟机。首选咱们须要登录到虚拟机外部输出ip addr查看以后的ip2.进去到xshell,点击文件--->新建3.双击你创立的那个虚拟机就可登录胜利。撒花 xshell种小技巧:选中即复制,右键即粘贴。工具--->选项--->键盘和鼠标 集群配置咱们以一主二从为例。1.将咱们之前的虚拟机进行克隆。2.查看咱们本地网段和网关是否和咱们机器一样。如果你是依照我的装置步骤,那么在装置时候选中的是NAT模式,这个网段就不须要改。还记得咱们第一台机器的网段是192.168.70.128。咱们再看一下网关和网段也正好和他对应。、3.咱们将三台虚拟机全副都启动起来,而后别离进入其中。这个时候因为后边两台是克隆第一台的,为了避免抵触,咱们须要进行批改一下ip。vi /etc/sysconfig/network-scripts/ifcfg-ens33最初的文件ifcfg-ens33各不相同,咱们只须要输出到ifcfg-e安键盘tab键即刻。(都到集群为了linux应该很纯熟了) 将原来的dhcp改成none进而将ip固定化IPADDR=192.168.70.129GATEWAY=192.168.70.2BROADCAST=192.168.70.255DNS1=8.8.8.8 DNS2=114.114.114.114 4.重启网络systemctl restart network重启之后咱们能够ping一下百度和咱们第一天机器的ip看是否通了。如下图证实能够撒花了。另外一台也如此配置。那么咱们的集群就曾经通了。最初记住日拱一卒,功不唐捐。

April 11, 2021 · 1 min · jiezi

关于虚拟机:vmwarevagrant环境搭建全过程手把手教学

杂谈杂谈vagrant相干的技术和行业动态 vagrant和virtualbox是什么关系?vagrant为virtulbox提供了开箱即用的性能,是vagrant默认的虚拟机 VirtualBox提供程序与VirtualBox版本4.0.x,4.1.x,4.2.x,4.3.x,5.0.x,5.1.x,5.2.x,6.0.x和6.1.x兼容。不反对其余版本,提供程序将显示谬误音讯。请留神,不反对VirtualBox的beta版和预发行版,并且可能行为不当。vagrant能够和vmware搭配应用吗?能够的,vagrant首页就把vagrant和vmware放在一起了,有了新欢,忘了旧爱。 但不是所有的box都有对应的vmware(大部分都没有),HashiCorp组织提供的box往往有比拟多的版本VirtualBox、VMware Workstation 和Hyper-v HashiCorp为Vagrant开发了官网的 VMware Fusion 和VMware Workstation  提供商。该提供商容许Vagrant为基于VMware的计算机提供能源,并利用VMware软件提供的更高的稳定性和性能。在Vagrant网站上的VMware提供程序页面上理解无关VMware提供程序的更多信息 。 vagrant和其余虚拟化技术的区别常见的虚拟化技术: 虚拟机:代表有 VirtualBox、VMware Workstation 、 Parallels和Hyper-v容器:代表有 docker虚拟机插件: vagrant

March 24, 2021 · 1 min · jiezi

关于hyper-v:不满足在启用HyperV-或DeviceCredential-Guard的情况下运行VMware-player的最低要求

我在Windows10装置VMWare workstation 15 Player,版本信息如下: 在试图启动虚拟机时,遇到如下谬误音讯: 您的主机不满足在启用Hyper-V 或Device/Credential Guard的状况下运行VMware player的最低要求。 我的Windows10版本号为:version 1909,OS Build 18363.1316 对于我这个Windows10版本,如果想应用VMWare workstation player 15.5.5,VMWare官网给出的解决方案是:在windows宿主机里禁掉Hyper-V,同时禁掉Virtualization-based Security(简称VBS): Disable Hyper-V in the Windows host, then launch VMware Workstation and power on VMs. Note that Windows host VBS will be disabled automatically if Hyper-V is disabledIf using Windows 10 1909 or earlier, the system requirements are not met and therefore Virtualization Based Security has to be set as "Not Enabled". ...

March 19, 2021 · 1 min · jiezi

关于虚拟机:KVMqemukvmlibvirt以及-openstack的关系

KVMKVM 是最底层的 hypervisor,是内核一部分。它是用来模仿 CPU 的运行,它短少了对 network 和周边 I/O 的反对,所以没法间接应用。 QEMUQEMU 是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM),它是构建基于 KVM 下面的,它提供了残缺的网络和 I/O 反对。 QEMU 次要提供两种性能给用户应用。 一是作为用户态模拟器,利用动静代码翻译机制来执行不同于主机架构的代码。 二是作为虚拟机监管器,模仿全零碎,利用其余 VMM(Xen, KVM, etc)来应用硬件提供的虚拟化反对,创立靠近于主机性能的虚拟机。 用户能够通过不同 Linux 发行版所带有的软件包管理器来装置 QEMU。 QEMU 社区:https://www.qemu.org/ Openstack 不会间接管制 qemu-kvm,它会用一个叫 libvirt 的库去间接管制 qemu-kvm。libvirt 提供了跨 VM 平台的性能,它能够管制除了 QEMU 之外 的模拟器,包含 vmware, virtualbox, xen 等等。 所以为了 openstack 的跨 VM 性,所以 openstack 只会用 libvirt 而不间接用 qemu-kvm。libvirt 还提供了一些高级的性能,例如 pool/vol 治理。 龙芯基于loongnix零碎移植了openstack rock版本,拜访龙芯KVM我的项目。 文章来源于龙芯开源社区 作者:tyh

March 5, 2021 · 1 min · jiezi

关于虚拟机:无意苦争春一任群芳妒M1-Mac-book能否支撑全栈工程师的日常Python3虚拟机DockerRedis

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_187 就像大航海时代里忽然诞生的航空母舰一样,苹果把玩着手心里远超时代的M1芯片,微笑着对Intel说:“不好意思,尽管你也玩桌面芯片,然而,从明天开始,游戏就曾经完结了,X86?还是省省吧。”十五年前,iPhone横空出世,乔布斯通知世人什么才叫做真正的智能手机,十年前,A4处理器粉墨出场,iPhone霎时猛虎添翼,性能这两个字从此没有友商敢在苹果背后提及,iPad更是在业界呼风唤雨,简直把整个平板市场都支出囊中,在人们的脑海中,Pad就是iPad的代名词,安卓平板?不存在的。今时今日,Apple Silicon富丽登台,不用说M1堪称恐怖到爆炸的性能,也不用说十个小时以上的超长续航以及丝滑无通畅的FCPX极速剪辑体验,单是通过Rosetta 2 虚构运行X86利用,就曾经足以让人感到惊艳了。然而,这些福利只是苹果对于产品级用户的馈赠,作为一名开发者,而且是全栈(全干)开发,M1是否应答简约的开发环境?就像一位研发共事说的那样:“Hi,哥儿们,你不会花一万大洋买了个ipad+秒控键盘吧?这智商税有点贵啊”。 首先是Python3的开发环境,python官网曾经释出适配M1芯片的3.9版本,https://www.python.org/downlo... ,但其实目前生态和市场占有率最高的还是3.7,笔者是通过迁徙助理将老mac book pro里的开发环境(x86)间接迁徙过去的,也就是迁徙了原电脑的python3.7.4,令人意外的是,通过Rosetta 2,大部分的根底库都能够应用,除了首次运行稍显通畅以外: liuyue:~ liuyue$ python3 Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019, 14:54:52) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import pandas >>> import cv2 >>> import numpy >>> import matplotlib >>> import nltk >>> import ssl >>> from nltk.stem.lancaster import LancasterStemmer然而一些深度学习框架比方TensorFlow就不行了,解决方案还是得从官网下载适配M1的3.9版本,而后再下载反对M1芯片的Tensorflow2.4,下载链接:https://link.zhihu.com/?targe...\_and\_install.sh,换句话说,想用TensorFlow训练模型你就得降级python版本,可是很多TensorFlow我的项目都是和Web利用联合应用的,如果独自为了TensorFlow降级python,就须要将原来的我的项目离开部署,接口也得重构,尤其一些“祖传我的项目”就更不好弄了,这无疑进步了开发者的开发成本。 再来说说测试,自动化测试工具selenium是咱们常常应用的工具之一,应用场景十分宽泛,然而在M1零碎外面咱们通过Rosetta 2虚构的python3.7是否管制arm64版本的chrome呢?答案是能够的,因为chromedriver曾经对M1芯片进行了适配,下载驱动:http://npm.taobao.org/mirrors... 留神要抉择m1版本的驱动,随后解压,将chromedriver文件拷贝到系统目录中: sudo mv chromedriver /usr/local/bin随后启动浏览器: from selenium import webdriver import time #selenium 截图 driver = webdriver.Chrome() driver.get('https://v3u.cn') time.sleep(3)driver.close()问题并不大,所以如果单纯用M1 Mac用来写自动化测试脚本或者爬虫不会有太大压力,然而,如果波及科学计算的后果测试,可能就得折腾一下了。 ...

February 24, 2021 · 2 min · jiezi

关于虚拟机:虚拟机管理的快照和克隆

拍摄快照又称还原点,保留在创立快照时零碎的所有内容,不便日后还原到创立快照时的状态。 操作入口:虚拟机 / 快照 / 拍摄快照 克隆虚拟机依据一台曾经配置好的虚拟机复制一份截然不同的虚拟机,克隆时虚拟机需处于敞开状态。 操作入口:虚拟机 / 治理 / 克隆

February 21, 2021 · 1 min · jiezi

关于虚拟机:VirtualbBox导入旧版本虚拟机系统

动机因为VirtualBox自动更新了导致关上了VirtualBox后之前的虚拟机都没显示进去了,须要从新找回之前的虚拟机。 更新后的VirtualBox虚拟机是6.0版本。 找到旧版本虚拟机文件首先须要晓得旧版本虚拟机都放在电脑的哪些地方,这里我应用的是Everything,这是我一贯应用的windows搜寻软件,十分好用,能够去理解下。 在windows上搜寻*.vbox,找出旧版本虚拟机文件的地位 注册旧版本虚拟机 找到VirtualBox->管制->注册,会弹出文件抉择框,找到对应的vbox文件,点击确定就能够了,旧版本虚拟机就注册胜利了.

February 8, 2021 · 1 min · jiezi

关于虚拟机:vSphere-性能优化方法-故障排错方法及工具总结一

转自@twt社区 本材料次要包含:性能优化办法:vSphere 性能优化逻辑、针对 VM 的性能优化、针对 CPU 的性能优化、针对 RAM 的性能优化、针对 DISK 的性能优化、针对 Networking 的性能优化。故障排查办法、工具:vSphere 故障排查思维、针对 Virtual Machine 的故障排查、针对 Storage 的故障排查、针对 vCenter 和 ESXi 的故障排查、罕用的故障排查工具箱。 性能优化办法一、vSphere 性能优化逻辑 1 、虚拟化逻辑分层示意图 2 、X86 构造下虚拟化的问题 • X86 的 os 通常间接运行在物理硬件层面,因而它的执行权限必须为 ring 0. • X86 虚拟化架构则要求 os 运行在虚拟化层级下面 3 、CPU 软件虚拟化 • 二进制转换是最原始的 32bit x86 虚拟化的指令构造 • 利用二进制转换,就能够实现: o 让 VMM 独自运行在 ring 0,保障绝对独立与性能 o 让 Guest OS 运行在 ring 1. o 让 Applications 运行在 ring 3. ...

February 4, 2021 · 12 min · jiezi

关于虚拟机:关于京淘项目虚拟机IP修改说明

对于京淘我的项目虚拟机IP批改阐明 批改虚拟机MAC地址============== 当新建虚拟机时,批改mac网络地址. 0.Window 配置IP地址1).批改IP地址 2).设定IP租用工夫3).查看windowsIP地址4).查看LinuxIP5).查看通信是否畅通 查看IP地址========== 命令: ip addr如果没有IP展示则执行如下的命令 `service NetworkManager stop chkconfig NetworkManager off 永恒敞开 Manager网卡service network restart 重启network网卡` * 1* 2* 32.批改IP地址1).找到IP地址的目录 `cd /etc/sysconfig/network-scripts/` * 12).批改IP地址. `vim ifcfg-ens33` * 1批改实现之后 保留退出即可.3). 重启网卡 查看IP地址是否正确 3.通过工具近程链接

January 30, 2021 · 1 min · jiezi

关于虚拟机:VirtualBox笔记1Windows10系统安装VirtualBox

1 文档阐明本文档介绍如何在Windows10零碎装置VirtualBox虚拟机;2 软件筹备宿主机阐明: CPU:Intel酷睿i7,8核内存:16G操作系统:Windows 10专业版,64位VirtualBox安装包: VirtualBox官网:https://www.virtualbox.org/本文档及后续文档应用版本:6.1.16历史版本下载地址:VirtualBox历史版本3 装置VirtualBox运行VirtualBox安装包,遇到提醒界面间接抉择下一步(next)即可,装置关键步骤截图如下图所示: 4 VirtualBox罕用设置4.1 设置虚拟机默认装置地位应用VirtualBox装置虚拟机时默认装置到系统盘,能够批改该地位,运行VirtualBox-->治理-->全局设定,如下图:

January 18, 2021 · 1 min · jiezi

关于虚拟机:VirtualBox安装CentsOS

1 文档阐明本文档介绍如何应用VirtualBox装置CentOS虚拟机;软件筹备 VirtualBox VirtualBox官网版本:6.1CentsOS CentOS官网版本:7.9.2009P.S. CentsOS零碎镜像文件较大,国内能够从科大源、清华源等镜像站下载以晋升下载速度;2 装置CentOS虚拟机2.1 运行VirtualBox软件,新建虚拟机,填写虚拟机根本信息,如下图: 2.2 设置虚拟机内存大小,如下图: 2.3 设置虚拟机磁盘大小,如下图: 2.4 挂载CentOS镜像文件,启动虚拟机,如下图: 2.5 设置CentOS装置语言,如下图: 2.6 设置零碎时区、装置模式、装置源信息,如下图: 2.7 设置零碎装置地位及磁盘分区模式零碎装置地位应用2.3节创立的磁盘,如下图: 开发、测试环境磁盘倡议应用主动分区模式,如下图: 2.8 设置root账号密码及用户明码,如下图: 2.9 期待CentOS装置,VirtualBox呈现如下图提示信息示意装置实现: 3 验证零碎是否装置胜利运行VirtualBox,启动第2节装置的虚拟机,呈现如下图界面阐明虚拟机装置胜利: 输出用户名、明码验证是否能够登录到虚拟机,如下图:

January 11, 2021 · 1 min · jiezi

关于虚拟机:既然用Windows为何不用HyperV

发现当初很多人都有在本人电脑里装个虚拟机,有的是工作或学习的需要,有的是为了浏览一些具备安全隐患的网页或装置此类APP!明天分享个Windows自带的虚拟化性能Hyper-V,装置应用都比VMware之类的不便很多! 在 控制面板-程序和性能 界面点击 “启用或敞开windows性能”   选中Hyper-V,点击“确定”,期待实现后重启计算机   重启后在管理工具中可看到Hyper-V的管理器图标   Hyper-V的治理界面   忘了windows10中默认有没有powershell了,如果有的话powershell中执行上面命令装置更不便 Install-WindowsFeature Hyper-V -IncludeManagementTools虚拟机须要桥接到外网的话选中以后物理网卡和HyperV的虚构交换机,右键桥接就能够 再附上几个iso的下载链接https://www.centos.org/download/https://ubuntu.com/download/https://msdn.itellyou.cn/

December 25, 2020 · 1 min · jiezi

关于虚拟机:ESXI的CentOS7虚拟机磁盘扩容

1. vSphere中扩容由原来的300G减少至500G批改后重启虚拟机,或者关机批改再开机 2. 确认磁盘大小lsblk 3. 创立分区fdisk /dev/sda#顺次输出n→p→Enter→Enter→Enter→w 4. 创立物理卷partprobe /dev/sda #重载分区表pvcreate /dev/sda3 #创立物理卷5. 扩大卷组vgdisplay #查看卷组信息vgextend centos /dev/sda3 #将物理卷扩大到卷组,执行后可再次查看卷组信息进行确认lvdisplay #查看逻辑卷信息6. 扩大/var逻辑卷#将卷组中的200G闲暇空间扩大至逻辑卷/dev/centos/varlvextend -l +100%FREE /dev/centos/varxfs_growfs /dev/centos/var #刷新7.查看确认lsblkdf -Th/var已从20G扩容到220G

December 24, 2020 · 1 min · jiezi

关于虚拟机:解决ssh-connect-to-host-xxx-port-22-Network-is-unreachable

在虚拟机中启动spark或hdfs时都报错ssh: connect to host cda port 22: Network is unreachable 这里次要起因是: 机器名与IP地址的映射有问题 这个虚拟机是他人配置好的, 我间接关上来用hosts文件中的IP地址与我给这台虚拟机配置的不统一所以须要批改hosts文件 这里因为不是root用户, 所以须要应用命令sudo vi /etc/hosts这两个IP地址应该设置为统一 设置好后再启动就一切正常

November 20, 2020 · 1 min · jiezi

关于虚拟机:Java-虚拟机笔记

JVM 笔记

October 18, 2020 · 1 min · jiezi

关于虚拟机:云图说-快速创建一个kubernetes集群

摘要:3分钟疾速创立您的第一个kubernetes虚拟机集群。随着利用程序开发向基于容器的方向倒退,编排和治理资源的需要变得越来越重要。Kubernetes是一个开源的、功能强大的容器编排零碎,用于治理容器化利用和服务,它提供了利用部署、布局、更新、保护的一种机制,让部署容器化的利用更加简略并且高效(powerful)。 云容器引擎CCE是一种托管的Kubernetes产品/服务,可进一步简化基于容器的应用程序部署和治理,您能够在CCE中不便的创立Kubernetes集群、部署您的容器化利用,以及不便的治理和保护。 点击“理解更多”,对于CCE你想晓得的都在这里! 点击关注,第一工夫理解华为云陈腐技术~

July 29, 2020 · 1 min · jiezi