深入聊聊typescript、ES6和JavaScript的关系与前瞻技术发展

什么是typescript,为什么项目当中你可能没见过?

TypeScript由微软发布于2012年,在发布之初并没有立即获得广泛的采用,但随着它的逐步发展和流行的框架(如 Angular 和 React)的支持,TypeScript 的使用逐渐增加。现在,TypeScript 已经成为许多大型前端和后端项目的标准选择,尤其是在 TypeScript 和 JavaScript 的兼容性和工具链日益完善的情况下

主要用途

TypeScript 是 JavaScript 的超集,主要是为了给 JavaScript 添加类型系统和一些现代化的特性。它的主要用途和优势包括:

类型安全: TypeScript 允许你在代码中显式地声明数据类型(如字符串、数字、数组等),这可以帮助在开发过程中捕获错误,避免常见的运行时错误。例如,编译器会在你试图将字符串传给一个只接受数字的函数时提示错误。

增强的 IDE 支持: 由于 TypeScript 拥有静态类型信息,IDE(如 Visual Studio Code)能够提供更好的智能提示、代码补全和类型检查。这可以提高开发效率,减少 bug 的数量。

代码可维护性: 随着项目规模的扩大,类型系统能够帮助开发者理解和维护代码。TypeScript 的类型系统可以使代码更具可读性,并且容易追踪和理解数据流。

更好的重构支持: TypeScript 使得在大型项目中进行代码重构变得更加安全,因为 IDE 和编译器能够帮助检查重构后可能遗漏的地方。

支持最新的 JavaScript 特性: TypeScript 支持 ECMAScript(ES)的最新特性,即使这些特性在一些浏览器或环境中尚不支持,你也可以使用 TypeScript 进行开发。TypeScript 会将这些现代化的特性编译成兼容的 JavaScript。

与 JavaScript 完全兼容: TypeScript 代码会被编译成标准的 JavaScript,因此可以与现有的 JavaScript 代码和库无缝协作。你可以逐步迁移项目,从部分代码开始引入 TypeScript,而不是必须一次性重写整个项目

为什么在项目当中少见?

对于小型项目,TypeScript 可能会显得冗余,因为它引入的类型检查等功能可能不会带来明显的好处。许多小型或初创项目可能选择 JavaScript,因为它上手简单、开发速度较快。现有的开发工具链和工作流程已经围绕 JavaScript 进行了优化,引入 TypeScript 可能需要额外的配置和调整,仍有一些框架或库没有广泛采用。

对于JavaScript现代的新特性,有ES6不就好了吗?为什么还要TS?

ES6作为JavaScript的新特性,提升了开发效率和可读性
ES6(即 ECMAScript 6)引入了大量的 JavaScript 新特性,包括:

箭头函数 (() => {})
类 (class)
模块化 (import / export)
模板字符串 (Hello, ${name})
解构赋值 (const { x, y } = point)
Promise(用于异步编程)
生成器函数(function*)
Set 和 Map 数据结构
默认参数 (function(a = 5) {})
扩展运算符(…)

为什么选择 TypeScript 而不仅仅是 ES6?

类型系统:TypeScript 提供的静态类型检查在开发过程中能够捕捉到更多的错误。
开发体验:IDE 的智能提示和类型推断可以显著提高开发效率。
代码可维护性:TypeScript 更适合处理大型项目,减少潜在的 bug 并提高代码的可维护性。
高级类型系统:TypeScript 提供了很多 JavaScript 中没有的高级类型功能,适用于更复杂的应用场景。
兼容性:TypeScript 可以将新特性编译为兼容的 JavaScript,确保兼容不同的浏览器和环境。

ES6和TS在框架当中的应用如何?举例VUE来说

现代前端框架中,TypeScript(TS)和ES6(以及更高版本的 JavaScript)都得到了广泛的应用。很多框架,尤其是 Vue、React 和 Angular,都在逐渐加强对 TypeScript 的支持,并且许多开发者也在这些框架中采用 TypeScript 来编写应用程序。

Vue.js 自从版本 2.0 起就已经开始支持 ES6 特性,特别是通过 Babel 进行转译,允许开发者在项目中使用 ES6 的功能。例如解构赋值、箭头函数、模块化、异步函数。Vue 2.x 对 ES6 的支持通常依赖于现代浏览器或通过 Babel 进行转译。开发者可以在 Vue 项目中自由使用 ES6 的特性,但需要确保通过构建工具(例如 Vue CLI、Webpack、Babel)进行兼容性转译。

Vue 3.x 对 TypeScript 的支持相比 Vue 2.x 要更加完善和全面。Vue 3 是完全使用 TypeScript 编写的,因此它原生支持 TypeScript,且提供了多种工具来帮助开发者高效使用 TypeScript。

为什么在 Vue 中使用 TypeScript?

类型检查:TypeScript 为 Vue 组件提供了类型安全,帮助开发者捕获类型错误和常见的逻辑错误,尤其在大型项目中,可以减少许多不易察觉的 bug。
增强的 IDE 支持:得益于 TypeScript 的类型定义,IDE(如 VSCode)能够提供更好的代码提示、自动补全和跳转功能,极大提高开发效率。
维护和可扩展性:随着项目规模的扩大,TypeScript 能够帮助开发者更好地维护代码,尤其是当团队成员较多时,强类型系统能减少协作中的不一致和潜在错误。
Vue 3 的 Composition API 与 TypeScript 结合:Vue 3 引入的 Composition API 对 TypeScript 提供了更加自然的支持,通过使用 ref、reactive 等 API,Vue 3 能够与 TypeScript 更好地协同工作。

Vue 3 和 Composition API 的 TypeScript 支持

Vue 3 的 Composition API(如 setup、reactive、ref 等)与 TypeScript 配合得非常好,因为它让开发者可以通过更细粒度的控制来定义类型。(举例)

<template>
  <div>{{ count }}</div>
  <button @click="increment">Increment</button>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const count = ref<number>(0);  // 使用 TypeScript 明确类型

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment
    };
  }
});
</script>
//使用 lang="ts" 来指定这是一个 TypeScript 文件。
//ref<number>(0) 用来指定 count 是一个 number 类型的响应式数据。
//increment 函数会自动推断类型,并且如果你犯了类型错误(比如将非数字类型赋给 count),TypeScript 会提示你。

Vue 组件的类型声明

TypeScript 允许你为 Vue 组件创建类型声明,帮助 IDE 识别组件的接口,增加代码的可读性和可维护性。

Vue Router 和 Vuex 的类型支持

对于使用 Vue Router 和 Vuex 的应用,TypeScript 也提供了强大的类型支持:

Vue Router:可以使用 TypeScript 对路由参数、路由元数据等进行类型检查。
Vuex:使用 TypeScript 可以为 Vuex 的 state、mutations、actions 等提供类型定义,避免在使用过程中出现类型错误。

类型定义文件

如果你正在使用第三方库或组件,TypeScript 通常会提供相关的类型定义文件(如 @types)。如果你没有这些类型文件,Vue 和 TypeScript 的社区也提供了很多工具来为 Vue 组件提供类型支持。

使用 TypeScript 开发 Vue 项目

如果你想在 Vue 项目中使用 TypeScript,推荐使用 Vue CLI 创建项目,因为 Vue CLI 提供了 TypeScript 支持的模板。

vue create my-vue-project
//在创建过程中,选择 TypeScript 模板,Vue CLI 会自动为你配置 TypeScript

vue2.x可以使用typescript吗?

Vue 2.x 也可以与 TypeScript 配合使用。你可以通过一些额外的配置,如使用 vue-class-component 和 vue-property-decorator,在 Vue 2 中使用 TypeScript。不过,Vue 2.x 的 TypeScript 支持没有 Vue 3 那么完备,因此,如果你从头开始构建新项目,建议直接使用 Vue 3 和 TypeScript。

ES6与typescript在VUE框架当中的比较

ES6 是现代 JavaScript 的标准,它是框架、库和开发工具的基础。所有框架(包括 Vue)都支持 ES6 特性(如模块化、箭头函数、解构等),并且你可以在这些框架中自由地使用 ES6。TypeScript 则是增强了 ES6 特性,它提供了静态类型检查和更好的开发体验。在 Vue 中,TypeScript 提供了类型安全、更强的 IDE 支持以及更高的可维护性,尤其在大型项目中,TypeScript 会大大减少潜在的 bug 和错误

为什么在感官上会感觉JavaScript的发展越来越向java靠近了?比如增加了类型、泛型、接口这些

1、静态类型系统的引入:JavaScript → TypeScript

JavaScript 的类型系统
JavaScript 自始至终都是一种 动态类型语言,这意味着:

类型在运行时才被确定,开发者可以在运行时给变量赋予任何类型的值,灵活性很大。
缺乏类型检查:这导致在编写大型应用时,很多类型错误只能在运行时发现,尤其是对于不熟悉代码的开发者,代码的理解和维护变得更加困难。
然而,随着应用变得越来越复杂,开发者和团队开始感受到 动态类型带来的缺陷,特别是在处理大型项目时。这也是为什么 TypeScript 应运而生的原因。TypeScript 为 JavaScript 添加了 静态类型 和 类型检查,使得代码更加可靠和易于维护。它的出现大大提高了代码的可预测性和可维护性,尤其是在多人协作和大型项目中。

TypeScript 的特性:

静态类型:变量、函数参数、返回值的类型可以在编译时明确。
接口(Interface):允许你定义对象和类的结构,以确保它们符合预期的类型。
泛型(Generics):允许你创建可重用的函数、类和接口,它们可以处理多种类型的数据。
类型推导和类型检查:TypeScript 会根据上下文自动推导类型,增强开发体验,减少错误。
这些特性使得 TypeScript 更加接近静态类型语言,如 Java、C# 等,它们都有强大的类型系统,能够在编译时检查代码的类型。

Java 和 TypeScript 的相似性
Java 是一种静态类型语言,要求开发者显式声明变量的类型,并在编译时进行类型检查。TypeScript 通过引入类似的特性(如类型注解、接口、泛型)逐渐让 JavaScript 向静态类型语言靠拢。

2、JavaScript 语言的演变和需求变化

JavaScript 作为最流行的前端语言,经历了从 动态脚本语言 到 全栈语言 的演变。在过去几年,JavaScript 的应用场景逐渐扩大,特别是 Node.js 的流行使得 JavaScript 从浏览器端扩展到了服务器端,成为 全栈开发 的主要语言。

这种变化带来了一些挑战:

代码规模和复杂性增加:传统的 JavaScript 更适用于小型、快速的脚本编写,但对于大型的企业级应用来说,动态类型和弱类型检查带来了维护困难。
多人协作和团队开发:在多人协作的环境下,开发者可能对代码的类型和结构没有足够的了解,这增加了出错的可能性。
工具支持的需求增加:随着开发的复杂性增加,开发者希望使用更强大的工具(如 IDE 和静态分析工具),这些工具的核心之一就是类型系统。
为了应对这些问题,TypeScript 和类似的静态类型检查工具逐渐成为前端开发的标准。

3、 泛型、接口等特性的引入

泛型(Generics):泛型是一种允许开发者在定义函数、类或接口时不指定具体类型的特性,而是使用 占位符,在使用时提供具体的类型。泛型让代码更加灵活、可复用。

接口(Interface):接口是静态类型语言中常用的结构,用于定义对象的 契约 或结构。在 TypeScript 中,接口帮助开发者明确对象应该具备哪些属性和方法。

4、JavaScript 生态系统的进化

JavaScript 的工具链和生态系统逐渐发生了变化,开发者希望将 JavaScript 应用于 大型应用程序 或 企业级应用,这促使语言本身朝着静态类型语言的方向发展。加上 TypeScript 提供了 类型系统、接口、泛型等特性,这些特性曾经是 Java 和 C# 等语言的标志。

例如:

ES6(ECMAScript 2015) 引入了类(class)、模块化(module)、箭头函数(arrow function)、生成器(generator)等许多现代编程语言的特性,这些特性更接近于 Java、C# 等静态类型语言。
TypeScript 的引入,尤其是对 泛型、接口 和 类型注解 的支持,极大增强了 JavaScript 的表达能力,使其更加适合大型项目和复杂的企业级开发。

那么这么看来,JavaScript和typescript可以类似于积木一样,可以有动态类型也可以走静态类型,可以做前端也可以写node做后端,他的发展前景是不是会比JAVA这类语言更具有前瞻性?

1. 语言的灵活性:动态类型与静态类型

JavaScript 和 TypeScript 的一个显著优势在于它们的 灵活性,特别是在 类型系统 上:

JavaScript 是动态类型语言,意味着你可以在运行时自由地赋予变量不同的类型,这非常适合原型开发、快速迭代和小型项目。它的灵活性让开发者能够根据需要快速构建功能,并且有更少的语法和结构约束。
TypeScript 则在 JavaScript 的基础上增加了静态类型支持,允许开发者在编写代码时提前指定变量的类型,并在编译阶段进行检查。这使得 TypeScript 更加适合复杂的、长期维护的大型项目,尤其是多人协作的环境。
可切换的类型系统:
JavaScript 和 TypeScript 都允许开发者根据项目需求选择是否启用静态类型。对于一个开发者来说,TypeScript 的出现让他们能够灵活地选择是否使用静态类型,这种灵活性大大增加了语言的适用范围。
而在 Java 等静态类型语言中,类型检查是强制的,开发者无法选择放松或忽略类型检查(即使这对于快速开发或小型项目来说可能是一个限制)。

2. 前端与后端的统一性

JavaScript/TypeScript:全栈开发

JavaScript(通过 Node.js)和 TypeScript 都能够同时用于前端和后端开发,形成 全栈开发 的一体化语言。这一点对于开发者来说非常具有吸引力,特别是在团队中只需要掌握一种语言(JavaScript 或 TypeScript)即可开发完整的应用。
前端开发:JavaScript 是 Web 开发的主力语言,Vue、React、Angular 等前端框架都支持 JavaScript 和 TypeScript。通过 TypeScript,开发者可以在前端应用中享受更强的类型安全和开发体验。
后端开发:使用 Node.js,开发者可以在服务器端运行 JavaScript 或 TypeScript。Node.js 拥有一个庞大的生态系统,并且非常适合处理 I/O 密集型任务(如 API 服务、实时聊天应用等)。TypeScript 在 Node.js 开发中越来越流行,因为它为开发者提供了类型安全、自动补全和更强的代码检查,提升了开发效率和代码质量。
总结:JavaScript 和 TypeScript 提供了前后端一体化的开发体验,特别适合于全栈开发项目。相比之下,Java 通常需要额外的技术栈来处理前端(例如与 JavaScript 或 TypeScript 结合使用),并且更倾向于后端服务和企业级应用开发。

Java:传统的后端语言

Java 一直以来是大型企业级应用的主力语言,尤其是在传统的 后端开发 和 大规模系统 中,拥有庞大的生态和非常成熟的工具链。虽然 Java 的前端开发(例如 JavaFX 或其他 GUI 技术)也存在,但它并不像 JavaScript 那样在 Web 前端中占主导地位。
全栈开发的挑战:虽然 Java 在后端具有强大的影响力,但它并不天然适合 Web 前端开发,因此需要使用其他技术(如 JavaScript)与之配合。通常情况下,Java 和 JavaScript 这两种语言被用作前后端技术栈的一部分。

3. 开发者社区和生态系统的活跃性

JavaScript 和 TypeScript 的最大优势之一是它们的 庞大社区和生态系统。这两个语言不仅是前端开发的核心,而且在服务器端、桌面应用程序、甚至移动应用开发(如通过 React Native)中也得到了广泛的应用。

Node.js 的生态:Node.js 让 JavaScript 能够在服务器端运行,开创了全新的开发模式。Node.js 拥有丰富的 npm 包管理器,它提供了大量的开源模块,可以帮助开发者快速构建服务端应用。
TypeScript 的兴起:随着 TypeScript 的普及,越来越多的大型项目(包括 Angular、Vue、React 等)开始原生支持 TypeScript,或者提供 TypeScript 的开发支持。TypeScript 不仅提升了 JavaScript 的开发体验,也让它更加适合大型企业应用,减少了因类型错误导致的问题。
相比之下,Java 的生态虽然成熟,但它的工具链和开发模式相对更加传统。它仍然依赖于较为复杂的构建工具和多样的框架,如 Spring、Hibernate 等,虽然非常强大,但对于现代的敏捷开发和快速迭代的需求来说,有时显得稍显繁琐。

4. JavaScript/TypeScript 与 Java 的性能对比

JavaScript/TypeScript(通过 Node.js):Node.js 通常适用于高并发、I/O 密集型的应用程序,如实时聊天、API 服务、流媒体等。由于 JavaScript 是单线程的,Node.js 使用事件循环和异步 I/O 来处理大量的并发连接。
性能特点:Node.js 在处理 I/O 密集型任务(如文件操作、数据库查询等)时表现非常出色,但在 CPU 密集型任务 上可能不如 Java 和其他编译型语言(如 C++)那样高效。
Java:Java 是一种 编译型语言,其运行效率通常优于 JavaScript,特别是在 CPU 密集型计算和大规模数据处理上。Java 使用 JVM(Java Virtual Machine)来执行字节码,并且优化了内存管理和垃圾回收机制,因此非常适合构建 企业级应用、分布式系统 和 大数据处理系统。
性能特点:Java 在 高并发 和 多线程 处理方面具有天然的优势,特别是在处理复杂的计算和数据密集型任务时,Java 通常比 Node.js 更高效。

5. 未来趋势:前瞻性和发展潜力

JavaScript/TypeScript 的前瞻性

全栈开发:JavaScript 和 TypeScript 的最大优势之一是它们能够在 前端和后端 之间无缝连接,开发者可以用同一语言处理整个应用。这种语言的统一性让开发者能够提高生产力,减少上下游切换的复杂性,促进了 全栈开发 的流行。
快速迭代和灵活性:JavaScript 和 TypeScript 都适用于 快速迭代 和 敏捷开发,这种灵活性特别适合互联网企业和初创公司。
开源生态和工具链:JavaScript 和 TypeScript 的开源生态非常活跃,新的框架、库和工具层出不穷,这使得前端和后端开发都能紧跟技术发展的趋势。Node.js、React、Vue、Angular、NestJS、Next.js 等热门框架和工具都大大推动了 JavaScript 和 TypeScript 的发展。
WebAssembly(Wasm):JavaScript 在未来将与 WebAssembly 结合,进一步提升其在浏览器端的计算能力,扩展其在高性能计算中的应用场景。

Java 的前瞻性

企业级应用和大规模系统:Java 仍然在企业级应用、分布式系统、大数据处理和 Android 开发中占有非常重要的位置。其强大的 JVM(Java 虚拟机)生态、成熟的框架(如 Spring、Hibernate)以及卓越的 性能优化,让 Java 在需要高性能、可扩展系统的应用场景中继续占据主导地位。
现代化转型:Java 社区也在进行现代化转型,加入了许多现代编程语言的特性,如 Lambda 表达式、流式编程(Streams)、模块化(Java 9 引入的模块系统)等,以适应当下更加敏捷和灵活的开发需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)

目录 1. 简介 2. 创建 Platform 2.1 Block Design 2.1.1 DPU PFM Lite 2.1.2 DPU prj 2.1.3 DPU MIPI Platform 2.2 pin 约束 2.2.1 GPIO 约束 2.2.2 IIC 约束 2.1.3 DPHY 约束 3. 报错总结 3.1 AXI_M 必须顺序引用 3.2 DPU 地址分配错误 4. Design Example 4.…

李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning

笔记是在语雀上面做的&#xff0c;粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型&#xff0c;可以将机器学习进行分类 regression 回归任务&#xff1a;函数输出时一个数值classification 分类任务&#xff1a;人类设定好选项…

《Rust权威指南》学习笔记(五)

高级特性 1.在Rust中&#xff0c;unsafe是一种允许绕过Rust的安全性保证的机制&#xff0c;用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是&#xff1a;unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作&#xff0c;从而可以进行性能优化&#xff0c;如手…

云备份项目--客户端编写

文章目录 10. 客户端工具类10.1 整体的类10.2 测试 11 客户端数据管理类11.1 整体的类11.2 测试 12. 客户端业务处理12.1 整体的类 完整的代码–gitee链接 10. 客户端工具类 10.1 整体的类 在windows平台下进行开发&#xff0c;Util.hpp实际上是客户端FileUtil.hpp和JsonUtil…

开发培训-慧集通(iPaaS)集成平台脚本开发Groovy基础培训视频

‌Groovy‌是一种基于Java虚拟机&#xff08;JVM&#xff09;的敏捷开发语言&#xff0c;结合了Python、Ruby和Smalltalk的许多强大特性。它旨在提高开发者的生产力&#xff0c;通过简洁、熟悉且易于学习的语法&#xff0c;Groovy能够与Java代码无缝集成&#xff0c;并提供强大…

蓝桥杯(Java)(ing)

Java前置知识 输入流&#xff1a; &#xff08;在Java面向对象编程-CSDN博客里面有提过相关知识------IO流&#xff09; // 快读快写 static BufferedReader in new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter out new BufferedWriter(new…

【2025最新计算机毕业设计】基于SpringBoot+Vue智慧养老医护系统(高质量源码,提供文档,免费部署到本地)【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

文献分享集:跨模态的最邻近查询RoarGraph

文章目录 1. \textbf{1. } 1. 导论 1.1. \textbf{1.1. } 1.1. 研究背景 1.2. \textbf{1.2. } 1.2. 本文的研究 1.3. \textbf{1.3. } 1.3. 有关工作 2. \textbf{2. } 2. 对 OOD \textbf{OOD} OOD负载的分析与验证 2.1. \textbf{2.1. } 2.1. 初步的背景及其验证 2.1.1. \textbf{2…

【读书笔记·VLSI电路设计方法解密】问题35:ASIC设计流程的两个主要方面是什么

毫无疑问,ASIC设计流程是一个复杂的系统,包含了许多商业CAD工具以及许多内部开发的工具或脚本。然而,无论流程中集成了多少工具或脚本,ASIC设计流程的核心目标始终可以归结为两个关键点:创建和检查。 创建过程指的是生成硬件的活动,例如RTL编码、逻辑综合以及布局布线。…

域上的多项式环,整除,相通,互质

例1.已知 (R,,x)为域&#xff0c;请选出正确的说法:(A)(R,,x)也是整区; ABCD (B)R中无零因子; C)R在x运算上满足第一、二、三指数律; (D)R只有平凡理想; (E)R只有平凡子环。 域的特征&#xff1a; 域中&#xff0c;非0元素的加法周期 思考、在模7整数环R,中&#xff0c;…

CSS3——3. 书写格式二

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写&#xff1a;--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…

2街景两两对比程序,Trueskill计算评分代码,训练模型,预测街景

目录 0、Emeditor软件1、place pluse 2.0数据集2、街景主观感知两两对比程序3、Trueskill结果4、训练模型Resnet&#xff0c;Efficient&#xff0c;VIT等对比选择。5、模型预测6、其他数据处理/程序/指导&#xff01;&#xff01;&#xff01;优势&#xff1a;全网最全最细&am…

【React+TypeScript+DeepSeek】穿越时空对话机

引言 在这个数字化的时代&#xff0c;历史学习常常给人一种距离感。教科书中的历史人物似乎永远停留在文字里&#xff0c;我们无法真正理解他们的思想和智慧。如何让这些伟大的历史人物"活"起来&#xff1f;如何让历史学习变得生动有趣&#xff1f;带着这些思考&…

Golang学习历程【第五篇 复合数据类型:数组切片】

Golang学习历程【第五篇 复合数据类型&#xff1a;数组&切片】 1. 数组&#xff08;Array&#xff09;1.1 数组的定义1.2 初始化数组1.3 数据的循环遍历1.4 多维数组 2. 切片&#xff08;Slice&#xff09;2.1 切片声明、初始化2.2 基于数组创建切片2.2 切片的长度(len)和容…

ESP32自动下载电路分享

下面是一个ESP32系列或者ESP8266等电路的一个自动下载电路 在ESP32等模块需要烧写程序的时候&#xff0c;需要通过将EN引脚更改为低电平并将IO0引脚设置为低电平来切换到烧写模式。 有时候也会采用先将IO接到一个按键上&#xff0c;按住按键拉低IO0的同时重新上电的方式进入烧写…

【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析

文章目录 前言一、前提条件二、操作步骤2.1 准备云主机实例2.2 安装docker-compose2.3 使用docker-compose安装Superset2.3.1 克隆 Superset 的 GitHub 存储库2.3.2 通过 Docker Compose 启动 Superset 2.4 开通 OB Cloud 云数据库2.5 获取连接串2.6 使用 Superset 连接 OceanB…

联发科MTK6771/MT6771安卓核心板规格参数介绍

MT6771&#xff0c;也被称为Helio P60&#xff0c;是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片&#xff0c;可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造&#xff0c;拥有八个ARM Cortex-A73和Cortex-A53核心&#xff0c;主频分别…

修复 ITunes 在 Windows 或 Mac 上不断崩溃的问题 [100% 有效]

对于 iDevice 用户来说&#xff0c;只能通过 iTunes 在 iDevice 和计算机之间传输文件的困境一直是一个紧迫的问题。所有 iPhone 用户可能都知道&#xff0c;iTunes 并不是一款高效的应用程序&#xff0c;有时性能会很差&#xff0c;例如在 iDevices 和计算机之间传输文件时不断…

【AI大模型】深入GPT-2模型细节:揭秘其卓越性能的秘密

目录 &#x1f354; GPT2的架构 &#x1f354; GPT2模型的细节 2.1 模型过程 2.2 GPT2工作细节探究 &#x1f354; 小结 学习目标 掌握GPT2的架构掌握GPT2的训练任务和模型细节 &#x1f354; GPT2的架构 从模型架构上看, GPT2并没有特别新颖的架构, 它和只带有解码器模块…

C语言 - 理解函数栈帧

一&#xff1a;概述 函数栈帧是函数调用过程中为管理和存储函数相关信息&#xff08;如局部变量、返回地址等&#xff09;而在栈上分配的一块内存区域。它是实现函数调用、递归和返回的关键机制。 二&#xff1a;栈帧的组成 一个典型的栈帧通常包含以下内容&#xff08;从高地…