Java 对象的创建过程
链滴 Java 对象的创建过程 作者:vcjmhg 原文链接:https://ld246.com/article/1619614850780 来源网站:链滴 许可协议:署名-相同方式共享 4.0 国际 (CC BY-SA 4.0) 概述 在之前的一篇文章《关于java继承的哪些事》简单讲了Java创建对象的过程,但具体细节当时并没有 细讲。因而本篇文章以HotSpot虚拟机为例, 下Java虚拟机是如何创建一个对象的? 简单来说Java对象的创建过程总共分为5步: Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后,接下 具体来说,指针碰撞分配内存空间的过程如下: 在Java堆规整的情况下,所有被使用过的内存放到一边,所有未被使用过的内存放置到另一边,中间 置一个指针作为分界点的指示器,当需要分配内存空间时,只需要将空闲指针向空闲内存方向移动对 内存大小的位置即可。 原文链接:Java 对象的创建过程 该算法能够使用的前提必须是空间是规整的,因为如果空间是碎片化的,很明显该算法就会失效。 另一种算法是空闲列表,其分配内存的过程如下:0 码力 | 4 页 | 389.87 KB | 1 年前3Object Pascal 参考手册(Ver 0.1)
Greeting,它同样是个控制台程序。uses Unit1; 子句告诉编译器,Greeting 包含(引用)一个叫做 Unit1 的单元。最后,程序调用 PrintMessage 过程,并把字符串 ”Hello world!” 传递给它。请注意,PrintMessage 过程是从哪里来的?它是在 Unit1 单元定义的。下面是 Unit1 单元 的源代码,你能把它保存在一个叫 Unit1.pas 的文件中: unit Unit1; string); begin Writeln(msg); end; end. Unit1 单元定义一个叫做 PrintMessage 的过程,它接收一个字符串作为参数,并把它送到标准输 出设备(在 Pascal 中,没有返回值的例程叫过程,有返回值的例程叫函数)。请注意,PrintMessage 在 Unit1 中声明了两次,第一次是在关键字 interface 的下面,这使得它对于引用 的下面,这使得它对于引用 Unit1 单元的其它 模块(比如 Greeting)是可用的;第二次声明是在关键字 implementation 的下面,它实际定义 PrintMessage 过程。 现在你可以在控制台输入如下命令编译 Greeting。 对于 Delphi:DCC32 Greeting 对于 Kylix:dcc Greeting 没必要在命令行参数中包含 Unit1。当编译器处理 Greeting0 码力 | 168 页 | 868.25 KB | 1 年前3Nim 2.0.2 中文手册
static type "静态类型", 地址的类型被称为 dynamic type "动态类型"。如果静态类型与动态类 型不相同,它就是动态类型的⽗类或⼦类。 identi�er "标识符"是变量、类型、过程等的名称声明符号,⼀个声明所适⽤的程序区域被称为该声明的 scope "作⽤域", 作⽤域 可以嵌套,⼀个标识符的含义由标识符所声明的最⼩包围作⽤域决定,除⾮重载的解析规则另有建议。 ⼀个表达式特 == 0x80'u8 == 128,但是, 0b10000000'i8 == 0x80'i8 == -128 ⽽不是 -1。 ⾃定义数值字⾯值 如果后缀未预定义,那么后缀会被认为是对 proc 过程、 template 模板、 macro 宏或其他可调⽤标识符的调⽤, 包含字⾯值的字 符串被传递给该标识符。可调⽤标识符需要⽤特定的 ' 前缀声明。 更确切地说,⾃定义的数值字⾯值 123'custom 。 字⾯值 内置运算符 先前声明的常量和编译期变量 先前声明的宏和模板 先前声明的过程,除了可能修改编译期变量外,没有任何副作⽤ 常量表达式可以包含代码块,代码块可以是在编译期内⽀持的所有 Nim 特性(详⻅下⾯章节)。 在其代码块中,可以声明变量,随 后读取和更新,或者声明变量并将其传递过程修改。 其代码块中的代码,仍须遵守上⾯列出的关于引⽤该代码块外的值和运算的 限制。 访问和0 码力 | 127 页 | 7.05 MB | 1 年前3OpenShift Container Platform 4.10 安装
才能更改机器。安装程序使用 Ignition 配置文件设 置每台机器的确切状态,安装后则由 Machine Config Operator 完成对机器的更多更改,例如应用新证书 或密钥等。 1.1.1. 安装过程 安装 OpenShift Container Platform 集群时,您可以从 OpenShift Cluster Manager 站点的适当 Infrastructure Provider 页面下载安装程序。此网站管理以下内容: 务必备份需要再次使用的所有配置文件。 重要 重要 安装之后,您无法修改在安装过程中设置的参数,但可以修改一些集群属性。 第 第 1 章 章 OPENSHIFT CONTAINER PLATFORM 安装概述 安装概述 7 采用安装程序置 采用安装程序置备 备的基 的基础 础架 架构 构的安装 的安装过 过程 程 默认安装类型为使用安装程序置备的基础架构。默认情况下,安装程序充当安装向导,提示您输入它无法 ,提示您输入它无法 自行确定的值,并为其余参数提供合理的默认值。您还可以自定义安装过程来支持高级基础架构场景。安 装程序将为集群置备底层基础架构。 您可以安装标准集群或自定义集群。对于标准集群,您要提供安装集群所需的最低限度详细信息。对于自 定义集群,您可以指定有关平台的更多详细信息,如 control plane 使用的机器数量、集群部署的虚拟机的 类型,或 Kubernetes 服务网络的 CIDR0 码力 | 3142 页 | 33.42 MB | 1 年前3OpenShift Container Platform 4.8 安装
才能更改机器。安装程序使用 Ignition 配置文件设 置每台机器的确切状态,安装后则由 Machine Config Operator 完成对机器的更多更改,例如应用新证书 或密钥等。 1.1.1. 安装过程 安装 OpenShift Container Platform 集群时,您可以从 OpenShift Cluster Manager 站点的适当 Infrastructure Provider 页面下载安装程序。此网站管理以下内容: 务必备份需要再次使用的所有配置文件。 重要 重要 安装之后,您无法修改在安装过程中设置的参数,但可以修改一些集群属性。 第 第 1 章 章 OPENSHIFT CONTAINER PLATFORM 安装概述 安装概述 7 采用安装程序置 采用安装程序置备 备的基 的基础 础架 架构 构的安装 的安装过 过程 程 默认安装类型为使用安装程序置备的基础架构。默认情况下,安装程序充当安装向导,提示您输入它无法 ,提示您输入它无法 自行确定的值,并为其余参数提供合理的默认值。您还可以自定义安装过程来支持高级基础架构场景。安 装程序将为集群置备底层基础架构。 您可以安装标准集群或自定义集群。对于标准集群,您要提供安装集群所需的最低限度详细信息。对于自 定义集群,您可以指定有关平台的更多详细信息,如 control plane 使用的机器数量、集群部署的虚拟机的 类型,或 Kubernetes 服务网络的 CIDR0 码力 | 2586 页 | 27.37 MB | 1 年前3OpenShift Container Platform 4.7 安装
CONTAINER PLATFORM 安装概述 安装概述 1.1. OPENSHIFT CONTAINER PLATFORM 安装概述 1.1.1. 安装过程 采用安装程序置备的基础架构的安装过程 采用用户置备的基础架构的安装过程 安装过程详细信息 安装范围 1.2. OPENSHIFT 集群支持的平台 第 第 2 章 章 选择 选择集群安装方法并 集群安装方法并为 为用 用户 户准 准备 5.1.4. 可选的 AWS 配置参数 4.5.5.2. 支持的 AWS 机器类型 4.5.5.3. AWS 的自定义 install-config.yaml 文件示例 4.5.5.4. 在安装过程中配置集群范围代理 4.5.6. 部署集群 4.5.7. 通过下载二进制文件安装 OpenShift CLI 4.5.7.1. 在 Linux 上安装 OpenShift CLI 4.5.7.2 6.1.4. 可选的 AWS 配置参数 4.6.6.2. 支持的 AWS 机器类型 4.6.6.3. AWS 的自定义 install-config.yaml 文件示例 4.6.6.4. 在安装过程中配置集群范围代理 4.6.7. Cluster Network Operator 配置 4.6.7.1. Cluster Network Operator 配置对象 defaultNetwork0 码力 | 2276 页 | 23.68 MB | 1 年前32022年美团技术年货 合辑
基于硬件感知思想重新设计了 Backbone 和 Neck。 RepVGG[4] Style 结构是一种在训练时具有多分支拓扑,而在实际部署时可以等效融 合为单个 3x3 卷积的一种可重参数化的结构(融合过程如下图 3 所示)。通过融合成 的 3x3 卷积结构,可以有效利用计算密集型硬件计算能力(比如 GPU),同时也可 获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel 精度,让检测网络更快更强。以 nano 尺寸模型为例,对比 YOLOv5-nano 采用的 网络结构,本方法在速度上提升了 21%,同时精度提升 3.6% AP。 图 3 Rep 算子的融合过程 [4] EfficientRep Backbone:在 Backbone 设计方面,我们基于以上 Rep 算子 设 计 了 一 个 高 效 的 Backbone。 相 比 于 YOLOv5 采 进一步提高检测精度。YOLOv5 的标签分配策略是基于 Shape 匹配,并通过跨网格 匹配策略增加正样本数量,从而使得网络快速收敛,但是该方法属于静态分配方法, 并不会随着网络训练的过程而调整。 近年来,也出现不少基于动态标签分配的方法,此类方法会根据训练过程中的网络输 出来分配正样本,从而可以产生更多高质量的正样本,继而又促进网络的正向优化。 例如,OTA[7] 通过将样本匹配建模成最佳传输问题,求得全局信息下的最佳样本匹0 码力 | 1356 页 | 45.90 MB | 1 年前3OpenShift Container Platform 4.6 在裸机上安装
install-config.yaml 文件示例 1.1.8.3. 在安装过程中配置集群范围代理 1.1.9. 配置三节点集群 1.1.10. 创建 Kubernetes 清单和 Ignition 配置文件 1.1.11. 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 1.1.11.1. 使用 ISO 镜像创建 Red Hat Enterprise RHCOS 安装参考 1.1.12. 创建集群 1.1.13. 使用 CLI 登录到集群 1.1.14. 批准机器的证书签名请求 1.1.15. 初始 Operator 配置 1.1.15.1. 安装过程中删除的镜像 registry 1.1.15.2. 镜像 registry 存储配置 1.1.15.2.1. 为裸机和其他手动安装配置 registry 存储 1.1.15.2.2. 在非生产集群中配置镜像 CNI 集群网络供应商 1.2.12. 创建 Ignition 配置文件 1.2.13. 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 1.2.13.1. 使用 ISO 镜像创建 Red Hat Enterprise Linux CoreOS (RHCOS) 机器 1.2.13.2. 通过 PXE 或 iPXE 启动来创建 Red0 码力 | 160 页 | 1.70 MB | 1 年前3OpenShift Container Platform 4.14 更新集群
property of their respective owners. 摘要 摘要 本文档提供了有关更新和升级 OpenShift Container Platform 集群的信息。更新集群的过程较简单, 可以在不需要使集群离线的情况下进行。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . registry 检索目标发行镜像,并开始将更改应 用到集群。 注意 注意 之前通过 Operator Lifecycle Manager (OLM) 安装的 Operator 会遵循不同的更新过程。 如需更多信息,请参阅更新安装的 Operator。 目标发行镜像包含组成特定 OCP 版本的所有集群组件的清单文件。当将集群更新至新版本时,CVO 会在 称为 Runlevels 的独立阶段应 CVO 监控每个应用的资源的状态,以及所有集群 Operator 报告的状态。只有活跃 Runlevel 中的所有清 单和集群 Operator 都达到稳定条件时,CVO 才会继续更新。在 CVO 通过此过程更新整个 control plane 后,Machine Config Operator (MCO) 会更新集群中每个节点的操作系统和配置。 1.1.1. 有关更新可用性的常见问题 OpenShift0 码力 | 149 页 | 1.94 MB | 1 年前32019-2021 美团技术年货 前端篇
这里也要提前说明一下,因为鸿蒙系统目前还处于 Beta 版本,所以这套适配方案还 没有在实际业务中上线,属于技术层面比较前期的探索。接下来本文会通过原理和部 分实现细节的介绍,分享我们在移植和开发过程中的一些经验。希望能对大家有所启 发或者帮助。 背景知识和基础概念介绍 在适配开始之前,我们要明确好先做哪些事情。先来回顾一下 Flutter 的三层结构: 在 Flutter 的架构设计中,最上层为框架层,使用 Gzip) 和 图片等静态资源,缺少 JS 拆包、文件 Hash、资源上传 CDN 等优 化工作,极大影响了页面的加载性能。 ● 由于 Flutter Web 自身实现了一套页面滚动机制,页面滚动过程中,会频繁计 算位置信息,引起滚动区域内容被重新创建,最终导致页面滚动性能较差。 2.2 MTFlutter 现状 虽然 MTFlutter 做了诸多 Flutter Native 层面的定制与优化,但在 Flutter Web 自身实现了一套页面滚动机制,在页面滚动过程 中,会频繁的创建 Canvas,最终导致滚动性能问题,甚至引起页面 Crash。 通过下图对浏览器网络监控情况的展示,可以清晰的反映出以上问题: 浏览器网络监控 页面滚动过程中,内存的占用情况 前端 < 25 为了解决上述的性能问题,我们探索了 Flutter SDK 编译过程,总结出从 Flutter 业 务代码到 Web 产物的整体流程,详细流程如下图所示:0 码力 | 738 页 | 50.29 MB | 1 年前3
共 943 条
- 1
- 2
- 3
- 4
- 5
- 6
- 95