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堆是否规整。而Java堆是否规整取决于垃圾收集器所采用的垃圾回收算 是否具有空间压缩整理的能力。 具体来说,指针碰撞分配内存空间的过程如下: 在Java堆规整的情况下,所有被使用过的内存放到一边,所有未被使用过的内存放置到另一边,中间0 码力 | 4 页 | 389.87 KB | 1 年前3Java 应用与开发 - 面向对象编程进阶
大纲 多态性 方法重载 关键字 static 关键字 final Java 应用与开发 面向对象编程进阶 PART2 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 多态性 方法重载 关键字 static 关键字 final 学习目标 1. 理解多态和虚方法调用的概念,掌握其用法 2. 掌握方法重载的方法 3. 掌握 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); Student类型对象 Person类型变量p 大纲 多态性 方法重载 关键字 static 关键字 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以0 码力 | 49 页 | 659.74 KB | 1 年前3Java 应用与开发 - 面向对象编程进阶 PART1
大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this Java 应用与开发 面向对象编程进阶 PART1 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 23, 2018 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this 学习目标 1. 掌握 Java 包、继承、访问控制、方法重写的概念、机制和 使用方法 继承 访问控制 方法重写 关键字 super 关键字 this 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this 什么是继承? 继承(Inheritance)是面向对象编程的核心机制之一,其本质是 在已有类型基础之上进行扩充或改造,得到新的数据类型,以满 足新的需要。 根据需要定义 Java 类描述“人”和“学生”信息: CODE ± Class Person 一个类的方法中使用到另一个类的对象(uses-a)1。 聚合关系 一个类的对象包含(通过属性引用)了另一个类的 对象(has-a)2。 泛化关系 一般化关系(is-a),表示类之间的继承关系、类和 接口之间的实现关系以及接口之间的继承关系。 1车能够装载货物,车的装载功能(load() 方法)对货物(goods)有依赖。 2车有发动机、车轮等,Car 对象是由 Engine 等对象构成的。 大纲 包0 码力 | 39 页 | 614.13 KB | 1 年前31.2 基于 Golang 构建高可扩展的云原生 PaaS 平台
基于 Golang 构建⾼可扩展的云原⽣ PaaS 平台 刘浩杨 端点 技术专家 个⼈简介 - 18年加⼊端点,现任微服务和监控团队负责⼈ - 端点开源 PaaS Erda 的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 Erda Infra 开发框架 Erda Infra 是⼀套轻量级 Go 微服务框架,包含⼤量现成的模块和⼯具,能够快速构 建起以模块化驱动的应⽤程序。 • 以模块化设计⽅式来驱动应⽤系统实现,⽀持模块可插拔 • 统⼀配置读取,⽀持默认值、⽀持从⽂件、环境变量、命令⾏参数读取 • 统⼀模块的初始化、启动、关闭 • 统⼀管理模块间的依赖关系 • ⽀持模块间的依赖注⼊ • 包含⼤量现成的微模块 基于 pr 的持续集成 - 打破需求、开发和测试的边界 简化平台的上⼿难度 - 解耦对中间件的强依赖 - 平台应⽤可独⽴安装和部署 - 像搭积⽊⼀样拼装系统 云端和本地⼀致的开发体验 - 本地⽆需启动完整的环境 - 借助IDE插件实现云端服务连接 - 本地和云端服务可交互 微信公众号 : Github : https://github.com/erda-project/erda0 码力 | 40 页 | 8.60 MB | 1 年前3Laravel 5.3 中文文档
提供强大的实时支持;通过 Laravel Passport 实现无痛的 OAuth2 服务器;通过 Laravel Scout 实现全文模型搜索;在 Laravel Elixir 中支持 Webpack;“可邮寄”的对象;明确分离 web 和 api 路由;基于闭包的控制台命令;存储上传文件的辅助函数;支持 POPO 和单动作控制 器;以及优化前端脚手架;等等等等。 通知(Notifications) 记录的搜索索引,目前,Scout 使用 Algolia 驱动,不 过,编写自己的驱动很简单,你可以通过自己的搜索实现扩展 Scout。 你可以简单通过添加 Searchable trait 到模型让模型变得可搜索: paginate(); 当然,Scout 还有很多其他特性,具体请查看其文档。 可邮寄对象 注:Laracasts 上有关于该特性的免费视频教程。 Laravel 5.3 支持可邮寄对象,这些对象可以以一个简单对象的形式表示邮件信息,而不再需要在 闭包中自定义邮件信息,例如,你可以定义一个简单的邮寄对象用作欢迎邮件: class WelcomeMessage extends Mailable0 码力 | 691 页 | 9.37 MB | 1 年前3Laravel 6.0 中文文档
方法行为一致。 本文档由学院君提供 学院君致力于提供优质 Laravel 中文学习资源:https://xueyuanjun.com 17 如果你想要通过 BelongsTo 方法更新模型的所属对象,并获取批量 赋值更新保护和事件触发,需要在模型自身上调用 update 方法: // Ad-hoc query... no mass assignment protection or ev ents Illuminate\Contracts\Auth\MustVerifyEmail 契约中新增 了 getEmailForVerification 方法声明,如果你自行实现过该契 约,需要添加该方法的实现。这个方法应该返回与对象关联的邮箱地 址,如果你的 App\User 模型使用的 是 Illuminate\Auth\MustVerifyEmail Trait,可以忽略此更新, 因为该 Trait 内部已经帮我们实现好了。 你可以在 issue board 上提议新功能或者优化已有功能,如果是新功 能的话请至少实现部分代码以便完成新功能开发。 关于 Laravel 的 bug、新功能、以及现有功能实现的非正式讨论可 以在 Laravel Discord server 的 #internals 频道进行。Taylor Otwell,Laravel 框架的维护者,通常在工作日的上午 8 点到下午 5 点(美西0 码力 | 1442 页 | 14.66 MB | 1 年前3Laravel 5.6 中文文档
Str::orderedUuid,orderedUuid 方法会生成一个时间戳最靠前的 UUID,通过诸如 MySQL 的数据库来索引,更简单,也更高效。两个方法都会返回 Ramsey\Uuid\Uuid 对象: use Illuminate\Support\Str; return (string) Str::uuid(); return (string) Str::orderedUuid(); Laravel 的一些其它组件,比如缓存、数据库、Session 等,关于这些我们将会在后续文档一一探讨。 Web 服务器配置 关于虚拟主机的配置(映射域名到 Laravel 应用目录)略过,如果了解细节可参考这篇教程,当然也可以留待下一篇讲 Homestead 和 Valet 再去了 解。本文只探讨如何美化 URL 让其更具有可读性。 Apache 框架中自带的 public/.htaccess 文件支持隐藏 Console 目录 Console 目录包含应用所有自定义的 Artisan 命令,这些命令类可以使用 make:command 命令生成。该目录下还有 Console/Kernel 类,在这里可 以注册自定义的 Artisan 命令以及定义调度任务。 Events 目录 这个目录默认不存在,但是可以通过 event:generate 和 make:event 命令创建。该目录用于存放事件0 码力 | 377 页 | 14.56 MB | 1 年前34_杨柳_基于Python构建高稳定可扩展的自动化测试集群
0 码力 | 62 页 | 25.29 MB | 1 年前3Python 标准库参考指南 3.8.20
高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . 328 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 11 文件和目录访问 343 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 12 数据持久化 389 12.1 pickle --- Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 12.2 copyreg --- 注册配合 . . . . . . . . 404 12.3 shelve --- Python 对象持久化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 12.4 marshal --- 内部 Python 对象序列化 . . . . . . . . . . . . . . . . . . . . .0 码力 | 1927 页 | 9.69 MB | 9 月前3Python 标准库参考指南 3.8.20
高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . 328 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 11 文件和目录访问 343 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 12 数据持久化 389 12.1 pickle --- Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 12.2 copyreg --- 注册配合 . . . . . . . . 404 12.3 shelve --- Python 对象持久化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 12.4 marshal --- 内部 Python 对象序列化 . . . . . . . . . . . . . . . . . . . . .0 码力 | 1927 页 | 9.69 MB | 9 月前3
共 553 条
- 1
- 2
- 3
- 4
- 5
- 6
- 56