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

【热门主题】000054 ECMAScript:现代 Web 开发的核心语言

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕

共同探索软件研发!敬请关注【宝码香车】
关注描述

csdngif标识

目录

  • 【热门主题】000054 ECMAScript:现代 Web 开发的核心语言
  • 📚一、ECMAScript 的前世今生
  • 📚二、ECMAScript 的核心特性
    • 📘(一)变量与数据类型
    • 📘(二)函数与控制结构
    • 📘(三)对象、类与模块
    • 📘(四)异步编程
  • 📚三、ECMAScript 的发展历程
    • 📘(一)ES1:奠定基础
    • 📘(二)ES2:编辑加工
    • 📘(三)ES3:真正的编程语言
    • 📘(四)ES4:命运坎坷
    • 📘(五)ES5:澄清与新增
    • 📘(六)ES6:重大变革
    • 📘(七)ES7:小步前进
    • 📘(八)ES8:拓展与优化
    • 📘(九)ES9:持续改进
    • 📘(十)ES10:新增实用特性
    • 📘(十一)ES11:增强语言特性
    • 📘(十二)ES12:继续优化
    • 📘(十三)ES13、ES14 及未来展望
  • 📚四、ECMAScript 的未来趋势
    • 📘(一)性能优化
    • 📘(二)新语言特性
    • 📘(三)与其他技术的融合
  • 📚五、ECMAScript 在实际项目中的应用
    • 📘(一)前端开发
    • 📘(二)服务器端开发
    • 📘(三)工具库和框架
  • 📚六、ECMAScript 标准详解
    • 📘(一)语法结构
    • 📘(二)变量声明
    • 📘(三)操作符
    • 📘(四)控制语句


📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋0️⃣1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟🆗*️⃣#️⃣

【热门主题】000054 ECMAScript:现代 Web 开发的核心语言

📚一、ECMAScript 的前世今生

ECMAScript 起源于 JavaScript,由欧洲计算机制造商协会标准化,历经多个版本的发展,成为现代 Web 开发的基石。

ECMAScript 的发展有着丰富的历史。1995 年,Netscape 公司推出了 JavaScript,最初命名为 Mocha,后改名为 LiveScript,最终定名为 JavaScript。1996 年 11 月,网景公司将 JavaScript 提交给欧洲计算机制造商协会进行标准化。1997 年 6 月,ECMA 组织采纳了 ECMA-262 的第一个版本,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript。

ECMAScript 的版本不断演进。ES1(ECMAScript 1997)作为首个版本开启了征程。随后,ES2(ECMAScript 1998)增加了少量改进,ES3(ECMAScript 1999)则引入了更广泛的更新。然而,计划中的 ES4 最终没有正式发布。ES5(ECMAScript 2009)提供了更严格的数据类型检查和数组方法。从 ES6 / ES2015 开始,ECMAScript 迎来了重大变革,引入了许多新特性,如箭头函数、类、模块等。此后,ES7 / ES2016 新增了 Array.includes () 方法等;ES8 / ES2017 带来了 async/await、Object.values/Object.entries 等;ES9 / ES2018 引入了 REST 客户端、异步迭代器等;ES10 / ES2019 新增了扁平化数组的 Array.flat () 和 Array.flatMap () 等;ES11 / ES2020 包含了 Promise.allSettled () 和动态导入等;ES12 / ES2021 继续增强语言特性和性能;ES13 / ES2022 进一步改进,如类字段的顶级 await;ES14 / ES2023 增强了模式匹配等功能。

随着每年的新版本推出,ECMAScript 不断为开发者提供更强大的工具和更高效的编程方式,持续推动着现代 Web 开发的发展。

📚二、ECMAScript 的核心特性

📘(一)变量与数据类型

ECMAScript 中有三种主要的变量声明方式:var、let 和 const。
var:在 ES2015 之前是唯一的变量声明方式。它的作用域在函数级别,存在变量提升的现象,即可以在声明之前使用变量,此时变量的值为 undefined。并且在全局作用域中声明的变量会成为 window 对象的属性。例如:

function localVariable() {console.log(userName);var userName = "marshal";
}
localVariable();

在这个例子中,输出结果为 undefined,因为变量提升使得变量在函数内部的声明被提升到了函数顶部。
let:ES2015 引入的新声明方式,具有块级作用域。在 let 声明之前使用变量会报错,不存在变量提升。而且 let 不能重复声明同一个变量,例如:

let city = "广州";
let city = "上海";
console.log(city);
// Uncaught SyntaxError: Identifier 'city' has already been declared

const:也在 ES2015 引入,用于声明常量。必须在声明时进行初始化,且后续不能修改常量的值(对于基本类型的值不能修改,对于引用类型不能修改其引用,但可以修改其内部属性)。例如:

const message = { a: 'hello' };
message.b = 'world';
console.log(message); // { a: 'hello', b: 'world' }

ECMAScript 中有多种数据类型,包括原始类型(如 Undefined、Null、Number、String、Boolean、Symbol)和复合类型(如 Object)。数字类型可以进行各种数学运算,字符串可以进行拼接等操作。布尔类型有 true 和 false 两个值,用于条件判断。Symbol 是一种唯一的不可变的数据类型,可以用作对象属性的标识符。

📘(二)函数与控制结构

在 ECMAScript 中,函数是一段可重复调用的代码块。函数可以通过 function 关键字进行声明,也可以使用函数表达式或箭头函数来定义。例如:

function sum(num1, num2) {return num1 + num2;
}
const multiply = (a, b) => a * b;

函数可以接收参数,参数可以有默认值,也可以是 rest 参数。函数调用时可以传入相应的参数,执行函数体内的代码并返回结果。
ECMAScript 中有多种控制语句,包括条件语句(如 if-else、switch)、循环语句(如 for、while、do-while)和跳转语句(如 break、continue)。这些控制语句可以根据不同的条件执行不同的代码块,实现复杂的逻辑控制。

📘(三)对象、类与模块

对象字面量是一种创建对象的简洁方式,可以通过大括号括起来的属性和方法来定义对象。例如:

const person = {name: 'John',sayHello: function() {console.log('Hello!');}
};

类是 ES2015 引入的一种语法糖,用于更方便地创建对象和实现面向对象编程。类可以包含属性、构造函数和方法。例如:

class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a sound.`);}
}

模块是 ES2015 引入的另一个重要特性,用于组织和管理代码。可以通过 export 关键字导出模块中的函数、对象或常量,通过 import 关键字导入其他模块的内容。例如:

// moduleA.js
export const variableA = 42;// main.js
import { variableA } from './moduleA.js';
console.log(variableA);

📘(四)异步编程

在 ECMAScript 中,异步编程是处理耗时操作(如网络请求、文件读取等)的关键。Promise 和 Async/Await 是用于简化异步操作的重要特性。
Promise 是一种表示异步操作的对象,它有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。可以通过 then 和 catch 方法来处理 Promise 的结果。例如:

function fetchData() {return new Promise((resolve, reject) => {setTimeout(() => {resolve('Data fetched!');}, 1000);});
}fetchData().then(result => console.log(result)).catch(error => console.error(error));

Async/Await 是建立在 Promise 之上的,它让异步代码看起来更像是同步代码。async 关键字用于声明一个函数是异步的,而 await 关键字只能在 async 函数内部使用,用于等待一个 Promise 的解决。例如:

async function getData() {try {const result = await fetchData();console.log(result);} catch (error) {console.error(error);}
}

📚三、ECMAScript 的发展历程

ECMAScript 的发展历程充满了创新与变革,从最初的 ES1 到如今的最新版本,每一次的更新都为开发者带来了新的工具和更高效的编程方式。

📘(一)ES1:奠定基础

1997 年发布的 ES1 本质上与 JavaScript 1.1 相同,删除了所有针对浏览器的代码并作了一些较小的改动。ECMAScript 要求支持 Unicode 标准,对象也变成了平台无关的。这个版本为后续的发展奠定了基础。

📘(二)ES2:编辑加工

1998 年发布的 ES2 主要是编辑加工的结果,与 ISO/IEC-16262 保持严格一致,没有作任何新增、修改或删节处理。一般不使用第 2 版来衡量 ECMAScript 实现的兼容性。

📘(三)ES3:真正的编程语言

1999 年 12 月发布的 ES3 是对 ECMAScript 标准第一次真正的修改。新增了对正则表达式、新控制语句、try-catch 异常处理的支持,修改了字符处理、错误定义和数值输出等内容。从各方面综合来看,第 3 版标志着 ECMAScript 成为了一门真正的编程语言。

📘(四)ES4:命运坎坷

计划中的 ES4 于 2008 年 7 月发布前被废弃。ES4 原本计划引入大量的新特性,但由于改动太大,导致各方意见不一,最终未能正式发布。

📘(五)ES5:澄清与新增

2009 年 12 月发布的 ES5 力求澄清第 3 版中的歧义,并添加了新的功能。新功能包括:原生 JSON 对象、继承的方法、高级属性的定义以及引入严格模式。严格模式使得代码更加规范,减少了一些潜在的错误。

📘(六)ES6:重大变革

2015 年 6 月发布的 ES6(也称为 ES2015)是继 ES5 之后的一次主要改进。语言规范由 ES5.1 时代的 245 页扩充至 600 页。ES6 增添了许多必要的特性,例如:模块和类以及一些实用特性,例如 Maps、Sets、Promises、生成器(Generators)等。箭头函数使语法更加简洁灵活;Class 声明将原型相关的代码进行了更彻底地封装;模板字符串优化字符串操作;promise 对象简化异步编程;Iterators&Generators 应对复杂数据结构;模块系统为浏览器和服务端引入一种新的模块解决方案。

📘(七)ES7:小步前进

2016 年发布的 ES7(也称为 ES2016)新增了指数运算符(**)和 Array.prototype.includes () 方法。指数运算符使得数学运算更加方便,Array.prototype.includes () 方法用于确定给定项是否在包含在数组中。

📘(八)ES8:拓展与优化

2017 年发布的 ES8(也称为 ES2017)拓展了对对象字面量的支持,并可使用 async/await 来更易地编写异步代码。此外,还有一些新的功能,例如 String#padStart,Object#values 和 Object#entries 等。String#padStart 和 String#padEnd 用于在字符串的前端和尾部添加字符,Object#values 和 Object#entries 方便了对象属性的遍历。

📘(九)ES9:持续改进

2018 年发布的 ES9(也称为 ES2018)引入了一些新的功能,包括 REST 客户端、异步迭代器等。Rest/Spread 属性允许在对象和数组字面量中使用三个点来声明展开语法;模板字面量用反引号把多行字符串括起来,可以隔开空格和换行;Promise.finally () 允许执行和 Promise 无关的操作,无论函数 resolve 或者 reject。

📘(十)ES10:新增实用特性

2019 年发布的 ES10(也称为 ES2019)新增了扁平化数组的 Array.flat () 和 Array.flatMap () 等方法,以及 String.prototype.trimStart () 和 String.prototype.trimEnd () 方法用于去除字符串首尾的空格。此外,还改进了 try-catch 语句和 Array.prototype.sort () 方法的稳定性。

📘(十一)ES11:增强语言特性

2020 年发布的 ES11(也称为 ES2020)包含了 Promise.allSettled () 和动态导入等新特性。可选链运算符(?.)、空值合并运算符(??)等也为开发者提供了更方便的编程方式。BigInt 大整数类型的引入满足了对大整数的处理需求。

📘(十二)ES12:继续优化

2021 年发布的 ES12(也称为 ES2021)新增了 String.prototype.replaceAll () 方法、逻辑赋值运算符(如 ||=, &&=,??=)等。这些新特性进一步增强了语言的功能和灵活性。

📘(十三)ES13、ES14 及未来展望

随着每年的新版本推出,ECMAScript 不断为开发者提供更强大的工具和更高效的编程方式。未来,ECMAScript 有望继续在性能、异步编程、面向对象编程等方面进行改进和创新,以满足不断发展的 Web 开发需求。

📚四、ECMAScript 的未来趋势

📘(一)性能优化

ECMAScript 标准可能会继续关注性能优化,以提高 JavaScript 的执行速度和内存管理效率。例如,通过优化编译器和解释器,减少代码的执行时间和内存占用。此外,随着硬件技术的不断发展,ECMAScript 也可能会利用新的硬件特性,如多核处理器和图形处理器(GPU),来加速 JavaScript 的执行。
根据一些研究数据,优化后的 JavaScript 代码可以在某些情况下提高数倍的执行速度。例如,通过使用更高效的算法和数据结构,以及避免不必要的内存分配和垃圾回收,可以显著提高代码的性能。

📘(二)新语言特性

随着技术的不断发展,可能会引入更多的新语言特性。例如,更好的类型系统可以提供更强的类型安全和错误检测能力。目前,TypeScript 等基于 ECMAScript 的扩展语言已经提供了更强大的类型系统,未来 ECMAScript 可能会借鉴这些语言的经验,引入类似的特性。
模式匹配也是一个可能的新特性。模式匹配可以使代码更加简洁和易于理解,例如在处理复杂的数据结构时,可以使用模式匹配来快速提取所需的信息。

📘(三)与其他技术的融合

ECMAScript 可能会与其他技术如 WebAssembly、人工智能等进行更紧密的融合,为前端开发带来更多的可能性。
WebAssembly 是一种新的二进制格式,可以在浏览器中运行高性能的代码。ECMAScript 可以与 WebAssembly 进行交互,利用 WebAssembly 的高性能来加速某些计算密集型的任务。例如,在处理图像和视频等多媒体数据时,可以使用 WebAssembly 来实现高效的编解码算法。
人工智能也是一个热门的技术领域,ECMAScript 可以与人工智能技术进行融合,例如通过使用机器学习算法来优化代码的性能,或者实现智能的代码自动生成和修复功能。
总之,ECMAScript 的未来充满了无限的可能性。随着技术的不断发展和创新,ECMAScript 将继续为前端开发提供更强大的工具和更高效的编程方式,推动前端开发技术的不断进步。

📚五、ECMAScript 在实际项目中的应用

📘(一)前端开发

在 Web 前端开发中,ECMAScript 扮演着至关重要的角色。它能够实现网页的动态交互,为用户带来更加丰富的体验。例如,通过使用 ECMAScript 的事件处理机制,可以轻松地响应用户的操作,如点击、鼠标移动等。当用户点击一个按钮时,可以使用 ECMAScript 来触发一系列的操作,如显示隐藏的内容、发送网络请求等。
ES6 及以上版本的新特性更是大大提高了前端开发的效率。例如,模板字符串使得字符串的拼接更加方便直观。以前需要使用多个加号进行字符串拼接的操作,现在可以使用模板字符串轻松完成。例如:

const name = 'John';
const message = `Hello, ${name}!`;
console.log(message);

箭头函数的引入也使得代码更加简洁易读。在处理数组的遍历和操作时,箭头函数可以简洁地表达回调函数的逻辑。比如:

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(num => num * 2);
console.log(doubledNumbers);

在响应式网页设计中,ECMAScript 可以与 CSS 媒体查询结合,根据不同的屏幕尺寸和设备类型动态调整网页布局。通过监听窗口大小的变化事件,使用 ECMAScript 来修改网页元素的样式和布局,以适应不同的设备。
此外,在前端框架如 React 和 Vue 中,ECMAScript 也是核心语言。这些框架利用 ECMAScript 的特性,如对象、函数、类等,来构建复杂的用户界面和交互逻辑。例如,在 React 中,使用 ES6 的类和箭头函数来定义组件,利用状态管理和生命周期方法来实现动态的用户界面更新。

📘(二)服务器端开发

借助 Node.js,ECMAScript 在服务器端发挥着重要作用。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 ECMAScript 在服务器端进行编程。
在服务器端开发中,ECMAScript 可以处理复杂的后端逻辑。例如,使用 Node.js 可以构建 RESTful API,处理数据库操作,实现用户认证和授权等功能。通过使用异步编程模型,如 Promise 和 async/await,开发者可以高效地处理网络请求、文件读取和数据库查询等耗时操作,提高服务器的响应速度和吞吐量。
Node.js 的包管理系统 npm 提供了丰富的第三方模块,这些模块大多是用 ECMAScript 编写的。开发者可以轻松地引入这些模块,快速构建功能强大的服务器端应用。例如,使用 Express.js 框架可以快速搭建一个 Web 服务器,处理 HTTP 请求和响应。
在服务器端的性能优化方面,ECMAScript 也有很大的潜力。通过合理地使用数据结构和算法,以及优化代码的执行路径,可以提高服务器的性能和稳定性。例如,使用缓存机制可以减少重复的数据库查询和计算,提高响应速度。

📘(三)工具库和框架

ECMAScript 在各种工具库和框架中广泛应用,极大地提升了开发的便捷性。例如,Lodash 是一个非常流行的 JavaScript 工具库,它提供了许多实用的函数,如数组操作、对象操作、函数式编程等。Lodash 的函数大多是用 ECMAScript 编写的,开发者可以在项目中轻松地引入 Lodash,使用其提供的函数来简化复杂的操作。
在测试框架中,如 Jest 和 Mocha,ECMAScript 也是主要的编程语言。这些测试框架提供了丰富的断言和测试工具,帮助开发者编写高效的测试用例,确保代码的质量和稳定性。例如,使用 Jest 可以轻松地进行单元测试、集成测试和端到端测试,通过模拟函数和对象的行为,测试代码的各种情况。
在状态管理库中,如 Redux 和 Vuex,ECMAScript 也发挥着重要作用。这些状态管理库利用 ECMAScript 的对象和函数特性,实现了集中式的状态管理,使得应用的状态更加清晰和可预测。开发者可以使用 Redux 或 Vuex 来管理应用的状态,通过定义 actions、reducers 和 store,实现状态的更新和分发。

📚六、ECMAScript 标准详解

📘(一)语法结构

ECMAScript 是一种区分大小写的脚本语言规范。在命名标识符时,需遵循特定规则,首字符为字母、下划线或美元符号,后续字符可以是字母、下划线、美元符号或数字,且采用驼峰大小写格式。注释方面,支持单行注释(以两个斜杠开头)和块级注释(以一个斜杠和一个星号开头,以一个星号和一个斜杠结尾)。严格模式(“use strict”)为 JavaScript 定义了一种不同的解析与执行模式,能处理不确定行为并对不安全操作抛出错误。语句一般以分号结尾,可使用 C 风格语法把多条语句组合到一个代码块中。

📘(二)变量声明

ECMAScript 提供了三种变量声明方式。
var:函数作用域或全局作用域,存在变量提升现象。例如,在函数中声明的变量可以在声明之前使用,此时变量的值为 undefined,并且全局作用域中声明的变量会成为 window 对象的属性。
let:块级作用域,不存在变量提升,在声明之前使用变量会报错,且不能重复声明同一个变量。
const:块级作用域,用于声明常量,一旦声明必须初始化,对于基本类型的值不能修改,对于引用类型不能修改其引用,但可以修改其内部属性。

📘(三)操作符

算术操作符:包括 +、-、*、/、%、**(ES2020 引入的指数运算符)。可进行数值的加、减、乘、除、取余和指数运算。
比较操作符:有 <、>、<=、>=、==、!=、===、!== 等。用于比较两个值的大小关系或判断是否相等。其中,不严格,只需要值相等而数据类型不一定相同;严格,要求值与数据类型都相等。
逻辑操作符:由 &&(逻辑与)、||(逻辑或)、!(逻辑非)组成。用于组合多个条件判断。
位操作符:包括 &(按位与)、|(按位或)、^(按位异或)、~(按位非)、<<(左移)、>>(有符号右移)、>>>(无符号右移)。对数值的二进制形式进行操作。

📘(四)控制语句

条件语句:if、else if、else、switch。根据不同的条件执行不同的代码块。例如,使用 if 语句判断一个条件是否为真,如果为真则执行相应的代码块,否则执行 else 分支的代码。switch 语句用于多个值的相等比较。
循环语句:for、while、do-while。用于重复执行一段代码。for 循环通常在已知循环次数的情况下使用;while 循环在条件为真时执行代码块;do-while 循环先执行一次代码块,再判断条件是否为真。
跳转语句:break、continue、return。break 用于跳出循环;continue 跳过当前循环的剩余部分,继续下一次循环;return 在函数中用于退出函数并返回一个值。

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕,若转载本文,一定注明本文链接。


整理不易,点赞关注宝码香车

更多专栏订阅推荐:
👍 html+css+js 绚丽效果
💕 vue
✈️ Electron
⭐️ js
📝 字符串
✍️ 时间对象(Date())操作

相关文章:

【热门主题】000054 ECMAScript:现代 Web 开发的核心语言

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…...

【Pytorch】torch.nn.functional模块中的非线性激活函数

在使用torch.nn.functional模块时&#xff0c;需要导入包&#xff1a; from torch.nn import functional 以下是常见激活函数的介绍以及对应的代码示例&#xff1a; tanh (双曲正切) 输出范围&#xff1a;(-1, 1) 特点&#xff1a;中心对称&#xff0c;适合处理归一化后的数据…...

reactflow 中 useNodesState 模块作用

1. 节点状态管理核心功能 useNodesState是一个关键的钩子函数&#xff0c;用于专门管理节点&#xff08;Nodes&#xff09;的状态。节点是流程图的核心元素&#xff0c;它们可以代表各种实体&#xff0c;如流程中的任务、系统中的组件或者数据结构中的元素。 useNodesState提…...

Go语言内存分配源码分析学习笔记

大家好&#xff0c;我是V 哥。GO GO GO&#xff0c;今天来说一说Go语言内存分配问题&#xff0c;Go语言内存分配的源码主要集中在runtime包中&#xff0c;它实现了Go语言的内存管理&#xff0c;包括初始化、分配、回收和释放等。下面来对这些过程详细分析一下&#xff0c;先赞后…...

【jvm】方法区常用参数有哪些

目录 1. -XX:PermSize2. -XX:MaxPermSize3. -XX:MetaspaceSize&#xff08;Java 8及以后&#xff09;4. -XX:MaxMetaspaceSize&#xff08;Java 8及以后&#xff09;5. -Xnoclassgc6. -XX:TraceClassLoading7.-XX:TraceClassUnLoading 1. -XX:PermSize 1.设置JVM初始分配的永久…...

JAVA环境的配置

首先找到JDK环境的官网。 Java Archive Downloads - Java SE 8u211 and laterhttps://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 我下载的最后一个x64.exe&#xff0c;下载后&#xff0c;直接双击运行&#xff0c;我这里默认安装到…...

LLM文档对话 —— pdf解析关键问题

一、为什么需要进行pdf解析&#xff1f; 最近在探索ChatPDF和ChatDoc等方案的思路&#xff0c;也就是用LLM实现文档助手。在此记录一些难题和解决方案&#xff0c;首先讲解主要思想&#xff0c;其次以问题回答的形式展开。 二、为什么需要对pdf进行解析&#xff1f; 当利用L…...

MySQL单表查询时索引使用情况

本文针对 MySQL 单表查询时索引使用的几种场景情况进行分析。 假设有一个表如下&#xff1a; CREATE TABLE single_table (id INT NOT NULL AUTO_INCREMENT,key1 VARCHAR(100),key2 INT,key3 VARCHAR(100),key_part1 VARCHAR(100),key_part2 VARCHAR(100),key_part3 VARCHAR(1…...

Qt邮箱程序改良版(信号和槽)

上一版代码可以正常使用,但是会报错 上一篇文章 错误信息 "QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread" 指出了一个问题&#xff0c;即在非主线程中尝试启用或禁用套接字通知器&#xff08;QSocketNotifier&#xff09;…...

入门到精通mysql数据(四)

5、运维篇 5.1、日志 5.1.1、错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录/var/log…...

Java 设计模式 详解

在Java开发中&#xff0c;设计模式是一种常见的、成熟的解决方案&#xff0c;用于应对特定的设计问题和复杂性管理。以下是一些常用的设计模式&#xff0c;它们可以分为三类&#xff1a;创建型模式、结构型模式和行为型模式。 一、创建型模式 创建型模式主要负责对象的创建&a…...

卡尔曼滤波学习资料汇总

卡尔曼滤波学习资料汇总 其实&#xff0c;当初的目的&#xff0c;是为了写 MPU6050 的代码的&#xff0c;然后不知不觉学了那么多&#xff0c;也是因为好奇、感兴趣吧 有些还没看完&#xff0c;之后笔记也会同步更新的 学习原始材料 【卡尔曼滤波器】1_递归算法_Recursive P…...

linux003.在ubuntu中安装cmake的方法

1.cmake安装程序下载 https://cmake.org/files/v3.30/ 2.解压并下载包 解压cmake压缩包 tar -xvzf cmake.tar.gz进入解压目录 cd cmake-<version>编辑~/.bashrc nano ~/.bashrc在文件的末尾添加如下代码 export PATH/home/xwl/software/cmake/bin:$PATH然后运行以…...

EtherNet/IP转Profinet网关连接发那科机器人配置实例解析

本案例主要展示了如何通过Ethernet/IP转Profinet网关实现西门子1200PLC与发那科搬运机器人的连接。所需的设备有西门子1200PLC、开疆智能Ethernet/IP转Profinet网关以及Fanuc机器人。 具体配置步骤&#xff1a;打开西门子博图配置软件&#xff0c;添加PLC。这是配置的第一步&am…...

自动化运维-检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型等信息脚本

前言&#xff1a;以上脚本为今年8月1号发布的&#xff0c;当时是没有任何问题&#xff0c;但现在脚本里网络速度测试py文件获取不了了&#xff0c;测速这块功能目前无法实现&#xff0c;后面我会抽时间来研究&#xff0c;大家如果有建议也可以分享下。 脚本内容&#xff1a; #…...

ubuntu24.04设置开机自启动Eureka

ubuntu24.04设置开机自启动Eureka 之前我们是在/root/.bashrc的文件中增加了一条命令 nohup java -jar /usr/software/eurekaServer-auth-prd-03.jar > /usr/software/log.log 2>&1 &但上面这条命令只有在登录root的用户时&#xff0c;才会执行&#xff0c;如果…...

从视频帧生成点云数据、使用PointNet++模型提取特征,并将特征保存下来的完整实现。

文件地址 https://github.com/yanx27/Pointnet_Pointnet2_pytorch?spm5176.28103460.0.0.21a95d27ollfze Pointnet_Pointnet2_pytorch\log\classification\pointnet2_ssg_wo_normals文件夹改名为Pointnet_Pointnet2_pytorch\log\classification\pointnet2_cls_ssg "E:…...

工化企业内部能源能耗过大 落实能源管理

一、精准监测与数据分析 实时准确的数据采集 企业能耗管理系统能够对企业内各种能源&#xff08;如电、水、气、热等&#xff09;的使用情况进行实时监测。通过安装在能源供应线路和设备上的智能传感器&#xff0c;可以精确地采集能源消耗的各项数据&#xff0c;包括瞬时流量、…...

LSTM 和 LSTMCell

1. LSTM 和 LSTMCell 的简介 LSTM (Long Short-Term Memory): 一种特殊的 RNN&#xff08;循环神经网络&#xff09;&#xff0c;用于解决普通 RNN 中 梯度消失 或 梯度爆炸 的问题。能够捕获 长期依赖关系&#xff0c;适合处理序列数据&#xff08;如自然语言、时间序列等&…...

python成长技能之正则表达式

文章目录 一、认识正则表达式二、使用正则表达式匹配单一字符三、正则表达式之重复出现数量匹配四、使用正则表达式匹配字符集五、正则表达式之边界匹配六、正则表达式之组七、正则表达式之贪婪与非贪婪 一、认识正则表达式 什么是正则表达式 正则表达式&#xff08;英语&…...

解决docker报Error response from daemon Get httpsregistry-1.docker.iov2错误

解决docker报Error response from daemon: Get "https://registry-1.docker.io/v2/"错误 报错详情 首先先看一下问题报错效果,我想要拉去nacos-serve&#xff1a;1.1.4的镜像&#xff0c;报如下错误&#xff0c;从报错信息可以看到&#xff0c;用于网络的愿意&…...

【论文分享】利用多源大数据衡量街道步行环境的老年友好性:以中国上海为例

本次给大家带来一篇SCI论文的全文翻译&#xff01;该论文考虑了绿化程度、可步行性、安全性、形象性、封闭性和复杂性这六个指标&#xff0c;提出了一种基于多源地理空间大数据的新型定量评价模型&#xff0c;用于从老年人和专家的角度评估街道步行环境的老年友好程度&#xff…...

说说软件工程中的“协程”

在软件工程中&#xff0c;协程&#xff08;coroutine&#xff09;是一种程序运行的方式&#xff0c;可以理解成“协作的线程”或“协作的函数”。以下是对协程的详细解释&#xff1a; 一、协程的基本概念 定义&#xff1a;协程是一组序列化的子过程&#xff0c;用户能像指挥家…...

使用IDE实现java端远程调试功能

使用IDE实现java端远程调试功能 1. 整体描述2. 前期准备3. 具体操作3.1 修改启动命令3.2 IDE配置3.3 打断点3.4 运行Debug 4. 总结 1. 整体描述 在做项目时&#xff0c;有些时候&#xff0c;需要和第三方进行调式&#xff0c;但是第三方不在一起&#xff0c;需要进行远程调试&…...

javaScript交互案例2

1、京东侧边导航条 需求&#xff1a; 原先侧边栏是绝对定位当页面滚动到一定位置&#xff0c;侧边栏改为固定定位页面继续滚动&#xff0c;会让返回顶部显示出来 思路&#xff1a; 需要用到页面滚动事件scroll&#xff0c;因为是页面滚动&#xff0c;所以事件源是document滚动…...

JavaScript 浏览器对象模型 BOM

浏览器对象模型&#xff08;Browser Object Model&#xff0c;BOM&#xff09;是指一组与浏览器进行交互的 JavaScript 对象。它允许 JavaScript 与浏览器的组件进行交互&#xff0c;比如窗口、文档、历史记录等。BOM 不同于 DOM&#xff08;文档对象模型&#xff09;&#xff…...

基于MATLAB的激光雷达与相机联合标定原理及实现方法——以标定板为例

1.为什么要进行激光雷达和相机的联合标定&#xff1f; 激光雷达和相机的联合标定是为了将两种传感器的数据统一到同一坐标系中&#xff0c;从而实现更准确的环境感知。激光雷达提供精准的三维距离信息&#xff0c;而相机捕捉丰富的纹理和颜色&#xff0c;通过联合标定可以结合两…...

React(一)

文章目录 项目地址一、创建第一个react项目二、JSX语法2.1 生成列表2.2 大括号识别JS的表达式2.3 列表循环array2.4 条件判断以及假值显示2.5 复杂条件渲染2.6 事件处理2.7 添加CSS样式2.8 添加图片2.9 使用Fregments返回多个根标签2.10多条件渲染2.11 导出子组件2.12 给子组件…...

Liunx-Ubuntu22.04.1系统下配置Anaconda+pycharm+pytorch-gpu环境配置

这里写自定义目录标题 Liunx-Ubuntu22.04.1系统下配置Anacondapycharmpytorch-gpu环境配置一、Anaconda3配置1.Anaconda安装2.Anaconda更新3.Anaconda删除 二、pycharm配置1.pycharm安装 三、pytorch配置 Liunx-Ubuntu22.04.1系统下配置Anacondapycharmpytorch-gpu环境配置 一…...

Postman之数据提取

Postman之数据提取 1. 提取请求头\request中的数据2. 提取响应消息\response中的数据3. 通过正在表达式提取4. 提取cookies数据 本文主要讲解利用pm对象对数据进行提取操作&#xff0c;虽然postman工具的页面上也提供了一部分的例子&#xff0c;但是实际使用时不是很全面&#…...