一、简介 Java各个版本能够保持非常良好的向后兼容性,Class文件结构的稳定性功不可没,不同版本的Java虚拟机规范也只是在原有基础上新增内容、扩充功能。 二、Class类文件结构 这里只列举class文件各项标识得作用,详细信息可以参考官网第 4 章。类 File Format (oracle.com) 2.1 Class文件内容 文件内容如下 ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[metho.... Java虚拟机--字节码文件结构 JVM
一、简介 Java虚拟机(JVM,Java Virtual Machine)是一种虚拟计算机,它提供了一个运行环境,使得编译后的Java程序可以在几乎所有的计算机平台上执行,而无需针对每个平台进行单独的编译。以下是JVM的一些关键概念和特点: 平台独立性 : JVM的核心价值在于它实现了“一次编写,到处运行”的理念。Java源代码被编译成字节码(Bytecode),这是一种中间语言,由JVM解释并在本地平台上执行。这意味着相同的字节码可以在不同的操作系统和硬件架构上运行,只要存在对应的JVM实现。 字节码与JVM : Java编译器将Java源代码编译成字节码,字节码是一种低级别的指令集,由JVM解释或即时编译(JIT)成机器码执行。字节码的使用保证了程序的安全性和可移植性。 内存管理 : JVM管理着应用程序的内存分配和垃圾回收。它分为几个主要的内存区域,包括: 堆(Heap) :用于存储对象实例和数组。 方法区(Method Area) :存储类信息、常量、静态变量、即时编译器编译后的代码缓存。 栈(Stack) :线程私有的,用于存储局部变量、操作数栈、动态链接和方法出口.... Java虚拟机--简介 JVM
vi /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "https://docker.m.daocloud.io", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://noohub.ru" ] } systemctl daemon-reload systemctl restart docker docker hub无法访问处理方法 docker
一、简介 K8S简介参考官网即可 Kubernetes 文档 | Kubernetes (p2hp.com) 二、环境搭建 准备两台2核4GB虚拟机 2.1 KuboardSpray 使用Kuboard安装K8S,官方文档见使用 KuboardSpray 安装kubernetes_v1.23.1 | Kuboard 版本说明,选择安装k8s-1.19版本,因为1.20版本弃用了docker 2.2 检查环境 2.2.1 检查操作系统版本兼容 # 在 master 节点和 worker 节点都要执行 cat /etc/redhat-release 2.2.2 检查hostname # 此处 hostname 的输出将会是该机器在 Kubernetes 集群中的节点名字 # 不能使用 localhost 作为节点的名字 hostname 设置一下两台服务器的hostname 一台设置为slave3 一台设置为slave4 # 分别在两台服务器执行 hostnamectl set-hostname k8sMaster echo "127.0.0.1 $(hostname)" >&.... Kubernetes的安装和基础操作 DevOps
一、定义 1.1 简介 Jenkins 流水线(Pipeline)是一种用于实现持续集成(CI)和持续交付(CD)的工具,它允许用户以代码的形式定义整个软件构建、测试和部署的过程。流水线使用一种特定的脚本语言(Groovy)来编写,这种脚本直接在 Jenkins 服务器上运行,允许高度的定制化和灵活性。 Jenkins 流水线有两种类型: 声明式流水线(Declarative Pipeline) : 这是最常用的流水线类型,它以 YAML 样式的语法来编写,使得流水线的结构和配置更加清晰易读。在声明式流水线中,你主要描述你想要什么结果,而 Jenkins 负责如何达到那个结果。声明式流水线的语法较为简洁,易于理解。 脚本式流水线(Scripted Pipeline) : 这种类型的流水线使用 Groovy 语言编写,提供了更高的灵活性和控制力,因为你可以访问完整的 Groovy 语言功能。脚本式流水线适用于需要更复杂逻辑的情况,但同时也可能更难维护和理解。 流水线可以存储在源代码仓库中(如 Git、SVN 等),这样就实现了流水线的版本控制,这也是持续交付实践中的一个重要组成部分。这种.... jenkins流水线操作 jenkins
一、文件权限修改 修改宿主机docker.sock文件的所属用户和用户组 chown root:root /var/run/docker.sock 修改组主机docker.sock文件的操作权限 chmod o+rw /var/run/docker.sock 二、容器挂载的数据卷修改 这里以jenkins容器为实例,之前使用docker compose创建了jenkins容器,现在编辑它对应的docker-compose.yml文件 services: jenkins: image: 'jenkins/jenkins:latest' container_name: jenkins ports: - '8080:8080' - '50000:50000' volumes: - './data/:/var/jenkins_home/' - '/var/run/docker.sock:/var/run/docker.sock' - '/usr/bin/docker:/usr/bin/docker' - '/etc/docker/daemon.json:/etc/docker/daemon...... docker容器内部使用docker docker