当前位置: 首页 > news >正文

Unity跨平台基本原理

Unity跨平台基本原理

微软的.Net是什么

微软的 .Net既不是编程语言也不是框架 是类似于 互联网时代、次时代、21世纪、信息时代之类的宣传口号

它是一整套技术体系的统称,或者说它是微软提供的技术平台的代号

包含的内容有

框架体系:.Net Framework、.Net Core、Mono等等

开发语言:C#、VB、F#等等(C#是.Net平台主推的开发语言)

开发工具:Visual Studio、Visual Studio Code 等等

你可以简单理解.Net本质上就是微软为自己的一系列产品取的一个代号

微软做 .Net平台的目的

  1. 跨语言

只要是面向.NET平台的编程语言(C#、VB、C++、F#等等),用其中一种语言编写的内容可以无缝地用在另一种语言编写的应用程序中

  1. 跨平台

一次编译,不需要任何代码修改,应用程序就可以运行在任意有**.NET框架实现的操作系统上,即代码不依赖于操作系统,也不依赖硬件环境**

如何实现的.Net跨语言?

CLS(Common Language Specification) 公共语言规范

.Net专门参考每种语言并找出了语言间的共性,定义了一组规则。

与其说是规则,不如说它是一组语言互操作的标准规范

只要开发者都遵守这个规则来编码,那么代码就能被任意.Net平台支持的语言所通用,即可以通过不同的编程语言(C#、VB、J#等等)来创建应用程序

CTS(Common Type System) 公共类型系统

当你需要设计面向.Net的语言时需要遵循一个体系,这个体系就是CTS

刚才提到的CLS公共语言规范就是是CTS公共类型系统的子级

一个编程语言,如果它能够支持CTS,那么我们就称它为**面向.NET平台的语言 **

CLI(Common Language Infrastructure) 公共语言基础结构

是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准

总结

微软为了实现跨语言,制定了一些规范

只要一门语言支持CTS(公共类型系统)的规则

那么我们就能够使用它在.Net平台下开发应用程序 CLS(公共语言规范)是CTS的一个子级,是一组语言互操作的标准规范

我们经常可以看到的CLI公共语言基础结构,它包含CTS公共类型系统 它是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准

Net的跨语言是让各种语言支持.Net的规范CLI(也就是CTS等规范)

早期的.Net系列产品主要是为了给Windows操作系统服务的 并没有跨平台的特性,即使跨语言了

也只是可以使用多语言开发Windows上的应用程序

那么这里就不得不提几个个概念 .Net Framework 、 .Net、Mono

.Net Framework

.Net Framework 在2002年推出1.0版本 .NET Framework 是一个可以快速开发、部署网站服务及应用程序的开发框架 是 Windows 中的一个组件,部分开源,主要用于开发Windows下应用程序

包括 公共语言运行时(Common Language Runtime, CLR) 虚拟执行系统 .NET Framework 类库

.Net Framework的体系结构

在这里插入图片描述

制作应用程序

编程语言 + 调用各种类库进行开发 生成程序集

  1. 只要支持CLS公共语言规范的语言都可以用于 开发Windows下的各种应用程序和网站程序

  2. **BCL(基础类库)和FCL(框架类库)**是这个 框架体系中为我们实现好的各种API

  3. 程序集的表现就是后缀为.dll或者.exe格式的文件 其中包含的最关键信息:

    PE头、CLR头(就是一些程序的格式信息,比如入口方法,版本号等等)

    CIL代码(通用中间代码)介于源代码和机器码之间的代码之后会通过CLR产生机器码

    CIL代码你可以理解为由于可能使用不同的代码进行开发,所以会将这些代码翻译为统一规范的中间代码

CLR

让应用程序在操作系统上运行 CLR(Common Language Runtime) 公共语言运行时,

它是.Net Framework的基础, 所有的.Net技术都是建立在此之上的 它是一个在执行时管理代码的代码,提供内存管理、 线程管理等等核心服务,就好像一个小型的操作系统一样 所以形象的把它称为**“.Net虚拟机” 。**

如果想要应用程序在目标操作系统上能够运行 就必须依靠.Net提供的CLR环境来支持

那就必须在操作系统上安装.Net Framework 它会把程序集中的IL(中间代码)翻译成机器码

最终在操作系统上运行

在这里插入图片描述

总结

.Net Framework 是一个主要用于跨语言开发 Windows操作系统下的 应用程序的框架结构

他并不支持跨平台

如何实现的跨平台?

.Net Core

Net Core 是2016年推出的.Net Framework的新一代版本

它就像是.Net Framework的兄弟 是.Net Framework的翻版实现,它是一个开源项目

它是基于.Net Framework来进行设计的主要目的就是跨平台

是.Net技术框架组成在Windows、MacOS、类Linux系统下的具体实现

它的原理就是为不同的操作系统实现对应的 CLR公共语言运行时(.Net虚拟机)

这样就可以在不同的平台上 将IL(中间代码)翻译成机器码最终在操作系统上运行

.Net FrameWork 到 .Net Core

从前面.Net FrameWork 和 .Net Core相关内容

我们了解到 从并不跨平台的.Net FrameWork 在2002年正式问世 到2016年跨平台的.Net Core的诞生 中间

.Net 平台有14年的并不跨平台的空窗期 而在这段时间内,

难道.Net就并不支持跨平台了吗? 答案当然是否定的,那么我们就不得不提Mono了

Mono

Mono是一个由Xamarin公司(已被微软收购)所赞助的开源项目

它基于.Net的CLI(Common Language Infrastructure)公共语言基础结构

提供了微软.Net FrameWork的另一种实现 它相对.Net FrameWork最大的区别就是具备跨平台的能力

它不仅可以运行在Windows、MacOS、Linux等操作系统 甚至还可以运行在PS3、XBOX、Wii等主机平台上 Mono的1.0版本出现在2004年 也就是说在.Net Core出现之前,Mono是.Net平台实现跨平台的不二之选

Mono如何实现跨平台

Mono利用 .Net平台制定的CLI公共语言基础结构规则

利用它我们可以把很多种语言编译成通用规范的CIL公共中间语言

再利用CLR公共语言运行时,将这些CIL公共中间语言转换为 操作系统的原生代码(主要做的就是在各种操作系统上实现了对应的CLR内容

这样用各种不同语言编写的逻辑就能够在指定操作系统上运行了 它的这一套规则是在**.Net Framework规则上进行的修改和添加**

总结如何实现的跨平台?

在.Net Core出现之前开发者都通过Mono来实现.Net的跨平台

我们可以使用基于.Net平台的Mono开发 便可以发布可以在主流的各种操作系统上运行的应用程序

主要内容

微软的.Net是什么

是一个包含编程语言、框架、IDE等产品的系列产品统称

.Net跨语言的实现

CLI公共语言基础结构(CTS公共类型系统)

CLS公共语言规范是它的子级

.Net跨平台的实现

基于.Net Framework的 Mono 和 .Net Core

他们两都基于CLI公共语言基础结构和CLR公共语言运行时实现跨语言和跨平台

Unity和Mono的关系

Mono是基于.Net的跨平台方案,同时它具备.Net平台的跨语言特点 Mono的第一个版本是在2004年发布的

Unity公司于2004年成立

Unity的底层是通过C/C++来完成的 但是为了更方便的让开发者使用

Mono在当时成为了不二之选 它同时具备跨平台和跨语言的两个特性

Unity希望能有更多的开发者使用其进行游戏开发并且一次开发一劳永逸

所以跨语言和跨平台对于他们来说是很重要的

虽然C++本身跨平台,但是如果使用C++作为上层逻辑开发语言,那么作为开发者来说选择性相对较少,并且对于初学者来说学习难度也较大

所以当时的Mono是非常满足Unity需求的 不仅支持跨语言还支持跨平台

Unity跨平台的必备概念

Unity主要包括两个部分:

  1. Unity Engine(引擎): 提供UnityEngine.dll动态库,各平台不同,C/C++编写,包含平台相关代码、 图形API、物理引擎、灯光等等所有游戏引擎底层内容
  2. Unity Editor(编辑器):提供UnityEditor.dll动态库,大部分由C#编写,用户脚本最初可以使用C#、 JavaScript、Boo语言编写,项目代码最后由Mono编译

Mono跨平台基本原理

Mono利用 .Net平台制定的CLI公共语言基础结构规则

利用它我们可以把很多种语言编译成通用规范的CIL公共中间语言

再利用CLR公共语言运行时,将这些CIL公共中间语言转换为 操作系统的原生代码(主要做的就是在各种操作系统上实现了对应的CLR内容

这样用各种不同语言编写的逻辑就能够在指定操作系统上运行了 它的这一套规则是在**.Net Framework规则上进行的修改和添加**

Mono主要构成部分

  1. C#编译器(mcs)

  2. Mono Runtime 类似CLR公共语言运行时(虚拟机) 包括JIT(Just in time)即时编译器、AOT(Ahead of time)提前编译器、 GC、类库加载器 等等

  3. BCL基础类库

  4. Mono类库 提供很多超出.Net的一些额外功能,主要用于构建各种操作系统上的应用

Unity跨平台的基本原理(Mono)

在这里插入图片描述

在Unity下使用各种语言进行逻辑实现 这些语言在发布时会被编译成 IL中间代码

最终这些中间代码在对应操作系统上 通过Mono VM(虚拟机) 真正翻译成机器码运行起来

在这里插入图片描述

基于Mono跨平台的优缺点

优点:只要在不同操作系统上实现Mono VM(虚拟机) 那我们能够支持的平台就会“无限”多

缺点: 维护工作耗时耗力,当Unity版本更新时,Mono VM也需要维护和更新,那多对于N多个平台来说,工作量是非常大的。(Unity的工作量) 低版本Mono无法支持新版本C#的强大新特性

总结

  1. Unity和Mono的关系

    利用Mono实现Unity上层逻辑的跨语言和跨平台

  2. Unity跨平台的必备概念:

    Unity底层是C/C++,上层逻辑支持多语言(目前只用C#)

    Mono的基本构成有C#编译器、Mono运行时(虚拟机)、各种类库等

  3. Unity跨平台的基本原理(Mono)

    将基于CLI公共语言基础规则的语言编译成CIL公共中间语言,再通过Mono VM(虚拟机) 将其在各操作系统中转译为原生机器码进行运行

  4. 基于Mono跨平台的优缺点

    无限跨平台

    维护工作量大,低版本的Mono无法支持新版C#新功能

IL2CPP是什么

IL2CPP是在Unity4.6.1 p5之后的版本中 加入的脚本后处理方式

你可以把它简单理解为是继Mono之后的一种跨平台解决方案

顾名思义就是把 IL中间代码转译为CPP代码(C++)

IL2CPP跨平台原理

在这里插入图片描述

通过IL2CPP我们可以将编译好的IL中间代码转译成C++代码,再利用各平台优化过的编译器编译为对应平台的目标代码

IL2CPP和Mono的区别

当生成了IL中间代码

Mono是直接通过虚拟机转译运行

而IL2CPP的步骤多了一些 会将IL中间代码转译为C++代码,再通过各平台的C++编译器直接编译为可执行的原生汇编代码

虽然中间代码变为了C++ 但是内存管理还是遵循C#中GC的方式 这也是为什么有一个IL2CPP VM(虚拟机) 存在的原因,它主要是用来完成 GC管理,线程创建等服务工作的

在这里插入图片描述

Mono优缺点

  1. 构建(最终打包时)速度快
  2. Mono编译机制是JIT即时编译,所以支持更多类库
  3. 必须将代码发布为托管程序集(.dll文件)
  4. Mono VM虚拟机平台维护麻烦,且部分平台不支持(WebGL)
  5. 由于Mono版本授权原因,C#很多新特性无法使用
  6. IOS支持Mono,但不在允许32位的Mono应用提交到应用商店

IL2CPP优缺点

  1. 相对Mono构建(最终打包时)速度慢
  2. 只支持AOT提前编译
  3. 可以启用引擎代码剥离来减少代码的大小
  4. 程序的运行效率比Mono高,运行速度快
  5. 多平台移植更加方便

Mono和IL2CPP的最大区别

IL2CPP不能在运行时动态生成代码和类型,所以必须在编译时就完全确定需要用到的类型

IL2CPP在进行AOT编译时,会裁剪掉那些在代码中没有显式引用的类型,以减小最终打包文件的大小。这是因为AOT编译需要在编译时就确定所有需要的类型,而JIT编译则可以在运行时动态加载和编译代码,因此对于类型的需求不那么严格

举例:List和List中A和B是我们自定义的类,我能必须在代码中显式的调用过,IL2CPP才能保留List和List两个类型。如果在热更新时我们调用List,但是它之前并没有在代码中显示调用过,那么这时就会出现报错等问题。主要就是因为JIT和AOT两个编译模式的不同造成的

如果你在代码中没有显式调用过List<A>List<B>,那么在IL2CPP的AOT编译过程中,这两个类型可能会被裁剪掉,因为IL2CPP无法确定这两个类型在运行时是否需要。而JIT编译模式下,由于可以在运行时动态编译代码,所以不会出现这个问题

Mono和IL2CPP的使用建议

由于IL2CPP的运行效率有很大优势

所以建议大家在实际开发中 直接使用IL2CPP模式进行打包

总结

  1. IL2CPP是什么

    是Unity4.6.1版本之后加入的新的一种跨平台解决方案

  2. Mono跨平台原理

    C#代码—>Mono C#编译器—>IL中间代码—>Mono VM—>操作系统的原生代码

  3. IL2CPP跨平台原理

    C#代码—>Mono C#编译器—>IL中间代码—>IL2CPP—>C++—>C++编译器—>原生汇编代码—>IL2CPP VM

  4. Mono和IL2CPP的区别

    IL2CPP效率高于Mono,跨平台也更好维护。

    Mono是JIT即时编译,IL2CPP是AOT提前编译

  5. Mono和IL2CPP两种方式的使用建议

    建议使用效率更高的IL2CPP

相关文章:

Unity跨平台基本原理

Unity跨平台基本原理 Unity跨平台基本原理微软的.Net是什么微软做 .Net平台的目的如何实现的.Net跨语言&#xff1f;总结 .Net Framework.Net Framework的体系结构CLR总结 如何实现的跨平台&#xff1f;.Net Core.Net FrameWork 到 .Net CoreMonoMono如何实现跨平台总结如何实现…...

【前端开发】小程序无感登录验证

概述 封装的网络请求库&#xff0c;主要用于处理 API 请求并支持自动处理 token 过期 和 token 刷新&#xff0c;适用于需要身份验证的应用场景&#xff0c;特别是在移动端中。 主要功能 自动附加 Token 在每个请求中自动附加 Authorization 头部&#xff0c;使用存储的 acces…...

Flink常见面试题

1、Flink 的四大特征&#xff08;基石&#xff09; 2、Flink 中都有哪些 Source&#xff0c;哪些 Sink&#xff0c;哪些算子&#xff08;方法&#xff09; 预定义Source 基于本地集合的source&#xff08;Collection-based-source&#xff09; 基于文件的source&#xff08;…...

spark同步mysql数据到sqlserver

使用Apache Spark将数据从MySQL同步到SQL Server是一个常见的ETL&#xff08;Extract, Transform, Load&#xff09;任务。这里提供一个基本的步骤指南&#xff0c;以及一些代码示例来帮助你完成这项工作。 ### 前提条件 1. **安装Spark**&#xff1a;确保你的环境中已经安装了…...

Python Web 开发:FastAPI 基本概念与应用

Python Web 开发&#xff1a;FastAPI 基本概念与应用 目录 ✨ 1. FastAPI 路由&#xff08;定义请求路径&#xff09;&#x1f680; 2. HTTP 请求方法&#xff08;GET、POST、PUT、DELETE&#xff09;&#x1f511; 3. 参数类型&#xff08;路径参数、查询参数、请求体&#…...

Linux设置开启启动脚本

1.问题 每次启动虚拟机需要手动启动网络&#xff0c;不然没有enss33选项 需要启动 /mnt/hgfs/dft_shared/init_env/initaial_env.sh 文件 2.解决方案 2.1 修改/etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要…...

go并发设计模式runner模式

go并发设计模式runner模式 真正运行的程序不可能是单线程运行的&#xff0c;go语言中最值得骄傲的就是CSP模型了&#xff0c;可以说go语言是CSP模型的实现。 假设现在有一个程序需要实现&#xff0c;这个程序有以下要求&#xff1a; 程序可以在分配的时间内完成工作&#xff0…...

nn.RNN解析

以下是RNN的计算公式,t时刻的隐藏状态H(t)等于前一时刻隐藏状态H(t-1)乘以参数矩阵&#xff0c;再加t时刻的输入x(t)乘以参数矩阵&#xff0c;最后再通过激活函数&#xff0c;等到t时刻隐藏状态。 下图是输出input和初始化的隐藏状态&#xff0c;当参数batch_first True时候&…...

How to monitor Spring Boot apps with the AppDynamics Java Agent

本文介绍如何使用 AppDynamics Java 代理监视 Azure Spring Apps 中的 Spring Boot 应用程序。 使用 AppDynamics Java 代理可以&#xff1a; 监视应用程序使用环境变量配置 AppDynamics Java 代理 在 AppDynamics 仪表板中检查所有监视数据 How to monitor Spring Boot app…...

Linux学习笔记12 systemd的其他命令

前文已经介绍了systemd在系统初始化中起到的作用和服务的管理和配置。这里补充一下systemd的其他工具和系统进程的管理 前文 Linux学习笔记10 系统启动初始化&#xff0c;服务和进程管理&#xff08;上&#xff09;-CSDN博客 Linux学习笔记11 系统启动初始化&#xff0c;服务…...

NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比

NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测&#xff0c;含优化前后对比 目录 NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测&#xff0c;含优化前后对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介…...

【分布式】分布式缓存

一、什么是分布式缓存 分布式缓存是一种将缓存数据存储在多个节点上的缓存方案。它通过将数据分散存储在多个节点的内存中&#xff0c;以提高系统的读取性能、降低数据库压力和提高系统可扩展性。 二、分布式缓存的优点 优点明细提高性能&#xff1a;分布式缓存可以将数据缓…...

深度学习中的迁移学习:应用与实践

引言 在深度学习领域&#xff0c;迁移学习&#xff08;Transfer Learning&#xff09;是一个非常强大且日益流行的概念&#xff0c;它通过将从一个任务中学到的知识应用于另一个任务&#xff0c;能够显著加快模型训练速度并提高其泛化能力。迁移学习在许多实际应用中都得到了广…...

28.UE5实现对话系统

目录 1.对话结构的设计&#xff08;重点&#xff09; 2.NPC对话接口的实现 2.1创建类型为pawn的蓝图 2.2创建对话接口 3.对话组件的创建 4.对话的UI设计 4.1UI_对话内容 4.2UI_对话选项 4.3UI_对话选项框 5.对话组件的逻辑实现 通过组件蓝图&#xff0c;也就是下图中的…...

Redis中的分布式锁(步步为营)

分布式锁 概述 分布式锁指的是&#xff0c;所有服务中的所有线程都去获取同一把锁&#xff0c;但只有一个线程可以成功的获得锁&#xff0c;其他没有获得锁的线程必须全部等待&#xff0c;直到持有锁的线程释放锁。 分布式锁是可以跨越多个实例&#xff0c;多个进程的锁 分布…...

CentOS 7安装mysql+JDK+Tomcat完成流程

一.安装mysql 即使是新的linux服务器&#xff0c;也要先验证是否有mysql已经安装&#xff0c;如果有进行卸载原版本&#xff0c;一定要确认是否mysql已不再使用 原安装情况&#xff08;直接执行命令即可&#xff09; whereis mysql rpm -qa | grep -i mysql rpm -e perl-DBD-M…...

C++笔记之不同框架中事件循环的核心函数:io_run()、ros_spin()、app_exec()

C笔记之不同框架中事件循环的核心函数&#xff1a;io_run()、ros_spin()、app_exec() code review! 参考笔记 1.qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 2.qt-C笔记之QThread使用 3.qt-C笔记之多线程架构模式&#xff1a;事件信号监…...

C++异常处理

目录 一、异常的概念 二、异常的使用 &#xff08;1&#xff09;异常的抛出和捕获 &#xff08;2&#xff09;异常的重新抛出 &#xff08;3&#xff09;异常安全 &#xff08;4&#xff09;异常规范 三、自定义异常体系 四、c标注异常体系 五、异常的优缺点 在之前我们…...

【数据结构】哈希 ---万字详解

unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到log_2 N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好 的查询是&#xff0c…...

4399大数据面试题及参考答案(数据分析和数据开发)

对数据分析的理解 数据分析是一个从数据中提取有价值信息以支持决策的过程。它涵盖了数据收集、清洗、转换、建模和可视化等多个环节。 首先,数据收集是基础。这包括从各种数据源获取数据,例如数据库、文件系统、网络接口等。这些数据源可以是结构化的数据,如关系型数据库中…...

快速理解倒排索引在ElasticSearch中的作用

一.基础概念 定义&#xff1a; 倒排索引是一种数据结构&#xff0c;用来加速文本数据的搜索和检索&#xff0c;和传统的索引方式不同&#xff0c;倒排索引会被每个词汇项与包含该词汇项的文档关联起来&#xff0c;从而去实现快速的全文检索。 举例&#xff1a; 在传统的全文…...

C++趣味编程玩转物联网:基于树莓派Pico控制无源蜂鸣器-实现音符与旋律的结合

无源蜂鸣器是一种多功能的声音输出设备,与有源蜂鸣器相比,它能够通过不同频率的方波生成丰富多样的音调。本项目使用树莓派Pico开发板,通过编程控制无源蜂鸣器播放经典旋律《归来有风》。本文将详细介绍项目实现中的硬件连接、C++代码解析,以及无源蜂鸣器的工作原理。 一、…...

《RuoYi基于SpringBoot+Vue前后端分离的Java快速开发框架学习》系列博客_Part4_三模态融合

系列博客目录 文章目录 系列博客目录目标Step1:之前工作形成子组件Step2:弥补缺失的文本子组件&#xff0c;同时举例如何子组件向父组件传数据Step3:后端代码需要根据上传的文件传给python服务器Step4:python服务器进行分析 目标 实现三模态融合&#xff0c;将文本、图片、音频…...

springboot365高校疫情防控web系统(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;高校疫情防控的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为…...

STM32 USART串口数据包

单片机学习&#xff01; 目录 前言 一、数据包 二、HEX数据包 三、文本数据包 四、HEX数据包和文本数据包优缺点 4.1 HEX数据包 4.2 文本数据包 五、HEX数据包接收 六、文本数据包接收 总结 前言 本文介绍了串口数据包收发的思路和流程。 一、数据包 数据包的作用是把一个个单独…...

【LC】3232. 判断是否可以赢得数字游戏

题目描述&#xff1a; 给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中&#xff0c;Alice 可以从 nums 中选择所有个位数 或 所有两位数&#xff0c;剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和&#xff0c;则 Alice 获胜。如果…...

Linux基础学习--vi与vim

0.绪论 前面的内容基本学完了相关命令行&#xff0c;后面进行shell与shell script的学习。第一部分就是编辑器的学习&#xff0c;之前有写过vi/vim编辑器&#xff0c;但是我看了一下鸟哥这个非常详细&#xff0c;还是打算重头学习一下。 1.vi/vim的使用 一般命令模式(command…...

JavaScript 高级教程:异步编程、面向对象与性能优化

在前两篇教程中&#xff0c;我们学习了 JavaScript 的基础和进阶内容。这篇文章将带领你进入更深层次&#xff0c;学习 JavaScript 的异步编程模型、面向对象编程&#xff08;OOP&#xff09;&#xff0c;以及性能优化的技巧。这些内容对于构建复杂、流畅的前端应用至关重要。 …...

qt QToolBox详解

1、概述 QToolBox是Qt框架中的一个控件&#xff0c;它提供了一个带标签页的容器&#xff0c;用户可以通过点击标签页标题来切换不同的页面。QToolBox类似于一个带有多页选项卡的控件&#xff0c;但每个“选项卡”都是一个完整的页面&#xff0c;而不仅仅是标签。这使得QToolBo…...

翁知宜荣获“易学名师”与“国学文化传承人”称号

在2024年10月19日举行的北京第六届国学文化传承峰会上&#xff0c;翁知宜老师以其在易学界的卓越成就和对国学文化的传承与发扬&#xff0c;荣获“易学名师”和“国学文化传承人”两项荣誉称号。 翁知宜老师在易经学术竞赛中荣获第一名&#xff0c;其深厚的易学造诣和对玄学学…...

深圳网站开发公司 有哪些/优化模型

文章讲的是天池年度答辩&#xff1a;最小15岁&#xff0c;33人获认证&#xff0c;12月23日&#xff0c;广东省云计算大数据开发者大会暨2015云栖大会广东峰会在广州召开。阿里云进一步完善其大数据生态圈&#xff0c;推出大数据人才认证计划、扩容大学合作计划。 会上&#xff…...

网站优化建设/水果营销软文

开头 这个世界都是并发的&#xff0c;编程里更是这样&#xff0c;俗话说&#xff1a;并发知识大&#xff0c;一口吃不下。想成为一名优秀的 Java 开发&#xff0c;学好并发&#xff0c;绝对是你走入高薪行列的必备能力之一。 并发涉及的知识点&#xff0c;其实十分琐碎。学完…...

备案号 不放在网站首页/镇江关键字优化公司

Excel插件可读取和编辑NetCDF文件。 下载最新版本NetCDF4Excel_3_3 欢迎使用NetCDF4Excel 文档 Wiki。 英文(pdf) 法语(pdf) 。 发布页面发布。 报告问题...

政府网站信息建设/应用商店下载安装

SpringBootApplication public class ConfigApp {public static void main(String[] args) {SpringApplication.run(ConfigApp.class, args);} }以上为interface、class、enum等即可 复制上面的代码:选择上面代码 ctrlc 或右击鼠标复制即可打开开发软件idea或eclipse选中一个…...

wordpress主题格式/建网络平台要多少费用

游戏和锻炼有时候是一体两面&#xff0c;如果说《劲舞团》是键盘杀手的话&#xff0c;NBA Baller Beats则是教练杀手。根据篮球教练Julio Agosto的描述&#xff0c;基于微软的Kinect技术开发&#xff0c;一个新的Xbox控球和盘带游戏已经出现&#xff0c;“它能给予像私人教练一…...

网站团队人员/国内新闻最新消息十条

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口&#xff0c;使用它&#xff0c;可以在 .NET Framework 编程语言中处理 XML。 它将 XML 文档置于内存中&#xff0c;这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档&#xff0c;修改之后&#xff0c;可以将其另存…...