虚拟机

从零开始入门 K8s | Kata Containers 创始人带你入门安全容器技术

安稳与你 提交于 2020-04-06 01:51:19
作者 | 王旭 蚂蚁金服资深技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 28 讲, 点击直达课程页面 。 关注“阿里巴巴云原生”公众号,回复关键词**“入门”**,即可下载从零入门 K8s 系列文章 PPT。 一、缘起:安全容器的命名 Phil Karlton 有一句名言:“计算机科学界只有两个真正的难题——缓存失效和命名。” 对我们容器圈而言,我相信「命名」绝对配得上这句话。这毫无疑问是一件让老开发者沉默、让新人落泪的事情。仅就系统软件而言,我们当今比较通行地称为**「Linux 容器技术」**这个概念,它曾经用过的名字还有 Jail, Zone, Virtual Server, Sandbox 等。同样,在早期虚拟化的技术栈里也把一类虚拟机叫做容器,毕竟这个词本身就指代那些用来包容、封装和隔离的器物。它实在太过常见了,以至于以严谨著称的 Wikipedia,它的词条叫做「OS-Level Virtualization」(系统级虚拟化) ,从而回避了「什么是容器」这个问题。 在 2013 年,Docker 问世之后,容器这个概念伴随着不可变基础设施、云原生这一系列概念在随后的几年间以摧枯拉朽之势颠覆了基于“软件包+配置”这种细粒度组合的应用部署,用简单的声明式策略和不可变的容器就清爽地定义了软件栈。应用怎么部署,在这儿似乎有点离题了

java JVM内存相关

半世苍凉 提交于 2020-04-06 00:26:24
大家平时知道的java的内存分为栈和堆,一般new出来的对象都是在堆上的。这里用的是一般,也就是说在有些情况下可能不是分配在堆上。在一定的情况下对象也是可以分配到栈上的。首先看一下java JVM运行时的数据区: 图中的 方法区 和 堆 是所有线程共享的, 虚拟栈 , 本地方法栈 和 程序计数器 是线程私有的。也就是说虚拟栈,本地方法和程序计数器是线程隔离的。程序计数器是唯一不会出现oom的部分。 程序计数器 可以看成当前线程执行的字节码的行号暗示器。 虚拟机栈 和线程的生命周期是一样的,当线程执行的时候会创建一个栈帧,用于存放当前线程的方法出口,局部变量表,操作数栈,动态连接等信息。 本地方法栈 用于调用native方法使用。 堆 是所有线程共享的部分,用于存储创建的对象。 方法区 和堆一样都是所有线程共享的,方法区主要用于存放虚拟机加载的类的信息,常量,静态常量等信息。 除了运行时数据区外还有一部分内存是不受虚拟机管理的部分,这一部分就是直接内存,直接内存是直接在物理的memory分配,我们经常使用的 ByteBuffer. allocateDirect 就是直接在物理内存上分配的。但是在虚拟机里面会有这部分内存的引用,以便对这一部分内存进行管理。 本文内容参考《深入理解JAVA虚拟机》 来源: oschina 链接: https://my.oschina.net/u

JVM 系列 : 3. 类加载机制

断了今生、忘了曾经 提交于 2020-04-05 21:53:30
上一篇文章介绍了class文件结构,在class文件中存储的各类数据。在这篇文章主要介绍 JVM(Java Virtual Machine) 是如何将class文件加载到内存中的,简言之”类加载机制“ 类加载机制概述 虚拟机将class文件中数据加载到内存,并对其进行验证、解析和初始化,最终形成虚拟机可以使用的Java类型的过程,称之为“类加载机制”,在这里主要将加载过程分为“加载”、“验证”、“准备”、“解析”、“初始化”五个阶段。 类加载的过程 1. 加载 将Class文件加载到方法区中。 2. 验证 文件格式验证 验证字节流是否符合Class文件格式的规范,及能否被当前虚拟机处理。主要验证如下: □ 是否以魔数开头(0xCAFEBABE) □ 主版本号、次版本号是否在当前虚拟机处理范围内 □ 常量池中是否有不被支持的常量类型 。。。。。 元数据验证 对字节码数据进行语义分析,主要验证如下: □ 此类是否有父类 □ 此类是否继承了不允许被继承的类 □ 如果不是抽象类,是否实现了父类的或接口要求实现的所有方法 。。。。。 字节码验证 验证类的方法体是否合法、符合逻辑。 符号引用验证 对常量池中各类符号引用进行匹配性分析。 此过程发生在解析阶段中进行。 3. 准备 为类变量设置零值 4. 解析 将常量池中符号引用替换为直接引用。主要包括以下: □ 类或接口解析 □ 字段解析 □

vue源码观看记录

蹲街弑〆低调 提交于 2020-04-05 21:52:39
vue 源码 运行顺序 initMixin 挂载 vue.prototype._init 原型方法 再该方法内初始化了 vue 的相关方法如: vm._self = vm /* 初始化生命周期 */ initLifecycle ( vm ) /* 初始化事件 */ initEvents ( vm ) /* 初始化 render*/ initRender ( vm ) /* 调用 beforeCreate 钩子函数并且触发 beforeCreate 钩子事件 */ callHook ( vm , 'beforeCreate' ) initInjections ( vm ) // resolve injections before data/props /* 初始化 props 、 methods 、 data 、 computed 与 watch*/ initState ( vm ) initProvide ( vm ) // resolve provide after data/props /* 调用 created 钩子函数并且触发 created 钩子事件 */ callHook ( vm , 'created' ) vm 即当前 this 作用域指针 Props normalizeProps 数组的方式传 props 仅支持 string props: [‘ a ’, ‘ b

虚拟机安装mysql遇到的坑

我的未来我决定 提交于 2020-04-05 18:37:40
  相信很多同学也跟我一样在家里,windows安装个虚拟机,再安装linux。然后在linux下模拟出一套运行环境。这次我装的是mysql 8.0。中间遇到很多坑,记录一下。(用的linux为redhat7.0) 1,在windows远程连接不上linux里的mysql,可能为3306端口没有打开。可以telnet下。如果没有打开则firewall-cmd --add-port=3306/tcp打开端口。 2,mysql密码加密插件不对。需要用mysql_native_password。 3,可能是没有开启远程访问。其中用户的host需要改为%。 来源: https://www.cnblogs.com/diexian/p/12638269.html

《30天自制操作系统》Day01

穿精又带淫゛_ 提交于 2020-04-05 17:54:05
我宣布,从今天开始,本懒狗正式踏入自制操作系统的大坑之中,内容将使用较现代的新工具和新思路来编写,会不定期更新(谁让我懒呢...) 当然,这个系列不会涉及太多理论,主要以我自己的实践过程为主,看理论请看书。 可以在 GitHub 跟进我的学习实践进度... 1. 工具准备 作者使用的工具,并不是我熟悉的,也不一定是最好的解决方案。 对于 16进制编辑器 ,你可以选用 WinHex ,我将采用开源免费的 wxMEdit : 文本编辑器 我首选 Visual Studio Code ,你可以选择自己喜欢的文本编辑器。 虚拟机 的话,你可以使用 Virtual Box 或者 VMware 。我将使用VMware Workstation 14,因为它更加强大。 汇编 的话,还是老老实实采用作者的 nask.exe 吧,我们并不需要自己写一个汇编器。 我们还需要一个 Bash环境 ,你可以选择 Git 的Bash,我这里使用 Cmder 。 2. 以16进制方式编辑image映像文件 2.1. Bash环境,dd命令,生成全0的image文件 软盘规定大小必须为 1440 KB ,也就是 1474560 字节(1440 * 1024 Bytes , 1 KB = 1024 Bytes )。 我们要制作的img文件中,由于只显示 hello,world ,所以很多空间中的值都是 0 。

第29 章 : 安全容器技术

大兔子大兔子 提交于 2020-04-05 16:53:04
安全容器技术 本文将主要分享以下五方面的内容: 缘起:安全容器的命名 间接层:安全容器的精髓 Kata Containers:云原生化的虚拟化 gVisor:进程级虚拟化 安全容器:不止于安全 缘起:安全容器的命名 Phil Karlton 有一句名言:“计算机科学界只有两个真正的难题——缓存失效和命名。” 对我们容器圈而言,我相信“命名”绝对配得上这句话。这毫无疑问是一件让老开发者沉默、让新人落泪的事情。仅就系统软件而言,我们当今比较通行地称为“Linux 容器技术”这个概念,它曾经用过的名字还有 Jail、Zone、Virtual Server、Sandbox 等。同样,在早期虚拟化的技术栈里也把一类虚拟机叫做容器,毕竟这个词本身就指代那些用来包容、封装和隔离的器物。它实在太过常见了,以至于以严谨著称的 Wikipedia,它的词条叫做“OS-Level Virtualization”(系统级虚拟化),从而回避了“什么是容器”这个问题。 在 2013 年,Docker 问世之后,容器这个概念伴随着不可变基础设施、云原生这一系列概念在随后的几年间以摧古拉朽之势颠覆了基于“软件包 + 配置”这种细粒度组合的应用部署,用简单的声明式策略和不可变的容器就清爽地定义了软件栈。应用怎么部署,在这儿似乎有点离题了,我在这里想要强调的是: “云原生语境下的容器,实质是“应用容器”—

Java运行时数据区

我们两清 提交于 2020-04-04 22:52:11
Java中对象创建,内存分配,垃圾回收的权力交给了虚拟机,这其中有利也有弊,程序员也减轻了负担,但是如果不熟悉Java的内存区域划分,一旦出现内存溢出和泄漏,将会很难定位问题的根源,这就有必要了解Java的运行时数据区划分。 方法区(Method Area) 是由各个线程共享的内存区域,用来存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。 堆(Heap) Java虚拟机所管理的一块最大的内存区域,由所有的线程共享的一块内存区域;堆内存在虚拟机启动时创建,用来存放对象实例,数组;Java堆是垃圾收集器管理的内存,在G1垃圾收集器之前,堆内存普遍采用分代设计思想,新生代,老年代,永久代...,现代垃圾收集器已经不主张采用分代设计理论概念;Java堆既可以被实现成固定大小的,也可以是可扩展的,不过当前主流的Java虚拟机都是按照可扩展来实现的(通过参数-Xmx和-Xms设定)。如果在Java堆中没有内存完成实例分配,并且堆也无法再扩展时,Java虚拟机将会抛出OutOfMemoryError异常。 虚拟机栈(VM Stack) 虚拟机栈为线程私有,每个方法执行时,虚拟机都会创建栈帧存储局部变量表(包含Java的基本数据类型,以及对象的引用,非对象本身)、操作数栈、动态连接方法出口等信息,方法从被调用到执行结束,对应着一个栈帧在虚拟机中从入栈到出栈的过程

ESXI 重置虚拟机时卡死

旧时模样 提交于 2020-04-04 22:38:09
ESXI 重置虚拟机时卡死,导致vmcenter非常卡,同时其他的vm虚拟机的控制等功能也不能正常访问 解决办法: ssh 登录esxi主机, 运行命令: esxcli vms vm list 可以查看所有主机的信息: 找到问题主机的workid 运行下列命令:其中的数字代表workid esxcli vms vm kill -w 19881063 -t soft 来源: 51CTO 作者: mfl0801 链接: https://blog.51cto.com/mfl0801/2484915

VMWare: eth0: error fetching interface information : device not found

♀尐吖头ヾ 提交于 2020-04-04 22:37:44
重装了系统,不过原来的虚拟机系统文件都还在,就只重装了虚拟机,虚拟机版本是VM8.0.4,安装好虚拟机然后我就打开我原来安装好的CentOS.vmx文件,版本是centos6.5 但是发现我本机ping不通centos了,没装系统之前是可以的,已经设置过了,而且centos的文件都还在,所以很好奇, 输入命令ifconfig -a 发现设置的ip地址没有生效 ,而且是 eth1 不是原来的eth0 输入命令ifconfig eth0 报了错误: eth0: error fetching interface information : device not found 但在etc/sysconfig/network-scripts/ ifcfg-eth0 是在的,不知道为什么没加载到 vi ifcfg-eth0 发现设置仍是在的,但是就是没生效 网上百度了一下,有的是说: 第一种解决方案: mv ifcfg-eth0 ifcfg-eth1 vi ifcfg-eth1 把eth0改为ifcfg-eth1 我试了试,可能我操作的不对,没有 ifup eth1 反正 没有成功,我甚至把networking里的ifcfg-eth0改了名字,但是没解决问题 其实我比较好奇为什么会突然网卡变了,专业名词应该叫网卡吧,百度了好久发现有个人说法有点道理 第二种方案: 在 vim /etc/udev