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

ECMAScript 标准解析及应用

摘要: 本文深入解析了 ECMAScript 标准,包括其发展历程、核心语法、数据类型、对象模型、函数特性等方面。详细阐述了如何在实际的 Web 开发和 JavaScript 编程中应用这些特性,通过具体的代码示例展示了 ECMAScript 标准在构建高效、健壮的应用程序中的重要性和广泛应用场景,旨在帮助开发者更好地理解和掌握这一关键的编程语言标准,提升开发技能和代码质量。

一、引言

ECMAScript 作为 JavaScript 的标准化规范,在现代 Web 开发中扮演着至关重要的角色。它定义了 JavaScript 的核心语法、数据类型、对象系统、函数行为等基本要素,使得不同的浏览器和 JavaScript 运行环境能够遵循统一的标准来解析和执行代码。随着 Web 技术的不断发展,ECMAScript 标准也在持续演进,新的特性和功能不断被引入,为开发者提供了更强大、高效和便捷的编程工具。深入理解 ECMAScript 标准对于编写高质量、可维护且跨平台兼容的 JavaScript 代码具有重要意义。

二、ECMAScript 发展历程

  1. 起源与早期版本
    ECMAScript 的起源可以追溯到 Netscape 公司的 JavaScript 语言。最初,JavaScript 是为了给网页添加动态交互功能而设计的。1997 年,ECMAScript 1.0 发布,它奠定了 JavaScript 的基本语法和数据类型,包括数字、字符串、布尔值、对象、函数等基础概念,以及基本的控制结构如 if-else 语句、for 循环等。
  2. 演进与新增特性
    后续版本中,ECMAScript 不断演进。ES3(1999 年发布)增加了正则表达式、异常处理等重要特性,使得 JavaScript 在文本处理和错误处理方面更加灵活和强大。ES5(2009 年发布)引入了严格模式,增强了代码的安全性和可维护性,同时还添加了新的数组方法(如 forEach、map、filter 等)和对象字面量增强等特性,极大地提升了开发效率和代码质量。
  3. 现代版本的重大变革
    从 ES6(2015 年发布,也称为 ES2015)开始,ECMAScript 进入了快速发展阶段,带来了众多重大变革。包括 let 和 const 关键字用于块级作用域变量声明,解决了 var 关键字带来的变量提升和作用域混淆问题;箭头函数提供了更简洁的函数语法,并且绑定了词法作用域的 this 值;类的语法糖使得面向对象编程更加直观和易于理解;模板字符串方便了字符串的拼接和插值操作;解构赋值简化了数据提取和赋值操作等。此后,每年都有新的 ES 版本发布,持续引入新的特性,如 ES7 的指数运算符(**)、ES8 的异步函数(async/await)、ES9 的对象扩展运算符和 Promise.finally 等,不断丰富和完善 JavaScript 的编程能力。

三、核心语法解析

  1. 变量声明与作用域
    • var 声明:在早期 JavaScript 中,使用 var 关键字声明变量。变量存在变量提升现象,即变量可以在声明之前被访问,但其值为 undefined。例如:

收起

javascript

console.log(a); // 输出 undefined
var a = 10;

  • let 和 const 声明:ES6 引入的 let 和 const 声明具有块级作用域。let 声明的变量不允许重复声明,且不存在变量提升。const 声明的是常量,一旦赋值就不能再修改其引用,但对于对象和数组等复合数据类型,其内部属性可以修改。例如:

收起

javascript

{let b = 20;const c = 30;console.log(b); // 输出 20console.log(c); // 输出 30
}
console.log(b); // 报错,b 不在作用域内
c = 40; // 报错,不能给常量重新赋值

  1. 数据类型
    • 基本数据类型:ECMAScript 有 7 种基本数据类型,包括 number(数字,包括整数和浮点数)、string(字符串)、boolean(布尔值,true 或 false)、null(表示空值)、undefined(表示未定义)、Symbol(ES6 新增,用于创建唯一的标识符)和 BigInt(ES2020 新增,用于表示大整数)。例如:

收起

javascript

let num = 123;
let str = "Hello";
let bool = true;
let n = null;
let u; // undefined
let sym = Symbol("unique");
let big = BigInt("123456789012345678901234567890");

  • 引用数据类型:对象(Object)是最常见的引用数据类型,包括普通对象、数组、函数等。对象通过键值对的形式存储数据,例如:

收起

javascript

let obj = {name: "John",age: 30,hobbies: ["reading", "running"]
};

  1. 运算符
    • 算术运算符:包括加法(+)、减法(-)、乘法(*)、除法(/)、取模(%)等基本运算,以及自增(++)和自减(--)运算符。例如:

收起

javascript

let x = 5;
let y = 2;
console.log(x + y); // 输出 7
console.log(x % y); // 输出 1
x++;
console.log(x); // 输出 6

  • 比较运算符:用于比较两个值的大小或相等关系,如大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和全等(===)。全等运算符会同时比较值和数据类型,而等于运算符会进行类型转换后再比较。例如:

收起

javascript

console.log(5 == "5"); // 输出 true
console.log(5 === "5"); // 输出 false

  • 逻辑运算符:包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。逻辑与运算符只有当两个操作数都为 true 时才返回 true,逻辑或运算符只要有一个操作数为 true 就返回 true,逻辑非运算符用于取反布尔值。例如:

收起

javascript

let a = 10;
let b = 5;
console.log(a > 5 && b < 10); // 输出 true
console.log(a < 5 || b > 10); // 输出 false
console.log(!(a > 5)); // 输出 false

四、对象模型

  1. 对象字面量
    对象字面量是创建对象的一种简洁方式,使用花括号括起来,包含键值对形式的属性和方法。例如:

收起

javascript

let person = {firstName: "Alice",lastName: "Smith",age: 25,getFullName: function() {return this.firstName + " " + this.lastName;}
};
console.log(person.getFullName()); // 输出 "Alice Smith"

  1. 构造函数与原型链
    • 构造函数:通过构造函数可以创建具有相同属性和方法的多个对象实例。构造函数使用 new 关键字调用,例如:

收起

javascript

function Car(make, model, year) {this.make = make;this.model = model;this.year = year;this.getDetails = function() {return this.make + " " + this.model + " " + this.year;};
}
let myCar = new Car("Toyota", "Corolla", 2020);
console.log(myCar.getDetails()); // 输出 "Toyota Corolla 2020"

  • 原型链:每个对象都有一个原型对象(proto),当访问对象的属性或方法时,如果对象本身不存在该属性或方法,就会沿着原型链向上查找,直到找到为止。所有的对象都最终继承自 Object.prototype。例如:

收起

javascript

console.log(myCar.toString()); // 调用的是从 Object.prototype 继承来的 toString 方法

  1. ES6 类语法糖
    ES6 引入了类(class)的语法糖,使得面向对象编程更加清晰和简洁。类定义包含构造函数、实例方法和静态方法等,例如:

收起

javascript

class Rectangle {constructor(width, height) {this.width = width;this.height = height;}area() {return this.width * this.height;}static isSquare(rect) {return rect.width === rect.height;}
}
let rect = new Rectangle(5, 10);
console.log(rect.area()); // 输出 50
console.log(Rectangle.isSquare(rect)); // 输出 false

五、函数特性

  1. 函数声明与表达式
    • 函数声明:使用 function 关键字声明函数,函数声明会被提升到作用域顶部,因此可以在声明之前调用。例如:

收起

javascript

sayHello(); // 可以正常调用
function sayHello() {console.log("Hello!");
}

  • 函数表达式:将函数赋值给一个变量,函数表达式不会被提升,只有在赋值语句执行后才能调用。例如:

收起

javascript

let greet = function() {console.log("Greetings!");
};
greet();

  1. 箭头函数
    箭头函数是 ES6 新增的一种函数简洁写法,它没有自己的 this、arguments、super 和 new.target 绑定,而是继承自父级作用域。例如:

收起

javascript

let numbers = [1, 2, 3, 4, 5];
let doubled = numbers.map(num => num * 2);
console.log(doubled); // 输出 [2, 4, 6, 8, 10]

  1. 函数参数与默认参数
    函数可以接收参数,并且在 ES6 中可以为参数设置默认值。例如:

收起

javascript

function multiply(a, b = 2) {return a * b;
}
console.log(multiply(3)); // 输出 6
console.log(multiply(3, 4)); // 输出 12

六、应用场景与案例

  1. Web 应用开发
    在前端开发中,ECMAScript 用于构建交互式网页。通过操作 DOM(文档对象模型)元素,响应用户事件(如点击、输入等),实现页面的动态更新和交互效果。例如,使用事件监听器来处理按钮点击事件:

收起

javascript

document.getElementById("myButton").addEventListener("click", function() {// 执行点击按钮后的操作,如更新页面内容、发送 AJAX 请求等console.log("Button clicked!");
});

  1. 后端开发(Node.js)
    Node.js 基于 ECMAScript 标准,使得 JavaScript 能够在服务器端运行。可以使用 Node.js 构建 Web 服务器、处理文件系统操作、进行数据库连接和查询等。例如,使用 Express 框架创建一个简单的 Web 服务器:

收起

javascript

const express = require('express');
const app = express();app.get('/', (req, res) => {res.send('Hello, World!');
});app.listen(3000, () => {console.log('Server running on port 3000');
});

  1. 数据处理与算法实现
    利用 ECMAScript 的数组方法和函数特性,可以高效地处理数据和实现各种算法。例如,使用数组的 reduce 方法计算数组元素的总和:

收起

javascript

let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 输出 15

七、最佳实践与优化技巧

  1. 代码模块化与组织
    将代码分割成独立的模块,每个模块负责特定的功能,通过模块导入和导出机制(如 ES6 模块)来提高代码的可维护性和可复用性。例如,创建一个名为 mathUtils.js 的模块:

收起

javascript

// mathUtils.js
export function add(a, b) {return a + b;
}
export function subtract(a, b) {return a - b;
}

在其他文件中使用:

收起

javascript

// main.js
import { add, subtract } from './mathUtils.js';
console.log(add(3, 5)); // 输出 8
console.log(subtract(10, 4)); // 输出 6

  1. 内存管理与性能优化
    避免创建不必要的全局变量,及时释放不再使用的对象和内存,减少内存泄漏风险。对于频繁操作的数组和对象,可以考虑使用优化后的方法和数据结构。例如,在处理大量数据时,使用 Set 数据结构来去除数组中的重复元素,比使用传统的循环和条件判断更高效:

收起

javascript

let data = [1, 2, 2, 3, 4, 4, 5];
let uniqueData = [...new Set(data)];
console.log(uniqueData); // 输出 [1, 2, 3, 4, 5]

  1. 代码可读性与可维护性
    遵循一致的代码风格和命名规范,添加适当的注释来解释复杂的逻辑和代码意图。使用函数式编程和面向对象编程的最佳实践,使代码结构清晰、易于理解和扩展。例如,将复杂的业务逻辑封装在独立的函数或类方法中,避免在一个函数中编写过长的代码块:

收起

javascript

// 计算圆的面积
function calculateCircleArea(radius) {// 根据圆的面积公式 S = π * r^2const PI = 3.14159;return PI * radius ** 2;
}

八、结论

ECMAScript 标准作为 JavaScript 编程的核心规范,随着时间的推移不断发展和完善,为开发者提供了丰富而强大的编程工具和特性。通过深入理解其语法、数据类型、对象模型、函数特性等方面,并将其应用于实际的 Web 开发和其他 JavaScript 应用场景中,同时遵循最佳实践和优化技巧,开发者能够编写高质量、高效、可维护和可扩展的代码。随着 Web 技术的持续进步,ECMAScript 标准也将继续演进,开发者需要不断学习和掌握新的特性和变化,以适应不断变化的开发需求,构建出更加优秀的应用程序,推动 Web 开发领域的创新和发展。

相关文章:

ECMAScript 标准解析及应用

摘要&#xff1a; 本文深入解析了 ECMAScript 标准&#xff0c;包括其发展历程、核心语法、数据类型、对象模型、函数特性等方面。详细阐述了如何在实际的 Web 开发和 JavaScript 编程中应用这些特性&#xff0c;通过具体的代码示例展示了 ECMAScript 标准在构建高效、健壮的应…...

2025最新版Java面试八股文大全

一、Java并发面试题 1、 ThreadLocal 1.1 谈谈你对ThreadLocal的理解&#xff1f; ThreadLocal的作用主要是做数据隔离&#xff0c;填充的数据只属于当前线程&#xff0c;变量的数据对别的线程而言是相对隔离的。它不是针对程序的全局变量&#xff0c;只是针对当前线程的全局…...

从零开始学AI,完成AI 企业知识库的AI问答搭建

1&#xff1a;本地安装一个ollama玩下&#xff0c;ollama下载模型默认路径为C盘&#xff0c;但该盘空间不足。 解决方案&#xff1a;添加系统环境变量OLLAMA_MODELS&#xff0c;设置其值为新的路径。 2&#xff1a;安装完成后&#xff0c;访问http://127.0.0.1:11434/ 查看服务…...

路过石岩浪心古村

周末常去的七彩城堡儿童乐园附近经常有老房子&#xff0c;没想到老房子最多的地方还是浪心古村。而且越看越有历史。 见到一座写着《序西书室》的房子&#xff0c;我最开始以为是一个古代的学校。但是查了百度更加不知道什么意思了哈。‌“序西书室”‌是指《文心雕龙》中的一个…...

【Leecode】Leecode刷题之路第93天之复原IP地址

题目出处 93-复原IP地址-题目描述 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 93-复原IP地址-官方解法 方法1&#xff1a;回溯 思路&#xff1a; 代码示例&#xff1a;&#xff08;Java&…...

121. 买卖股票的最佳时机

题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/?envTypestudy-plan-v2&envIdtop-100-liked 算法思路&#xff1a; 虽然已经提示我们使用贪心算法了&#xff0c;但是我最开始的时候却不知道怎么使用&#xff0c;因为如果…...

Python Polars快速入门指南:LazyFrames

前文已经介绍了Polars的Dataframe, Contexts 和 Expressions&#xff0c;本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一&#xff0c;使用惰性API可以设定一系列操作&#xff0c;而无需立即运行它们。相反&#xff0c;这些操作被保存为计算图&#xff0c;只在必要…...

OpenCV-Python实战(10)——形态学

1、腐蚀 cv2.erode() 可以删除图像中的噪音点。 可以删除毛边。 分割图像&#xff08;当图像连接的不够紧密时&#xff09; 。 img cv2.erode(src*,kernel*,anchor*,iterations*,borderType*,borderValue*)img&#xff1a;目标图像。 src&#xff1a;原始图像。 kernel&…...

在Windows上读写Linux磁盘镜像的一种方法

背景 嵌入式开发中&#xff0c;经常会把系统的Linux磁盘镜像保存到Windows上&#xff0c;以便上传到网盘备份或发送给工厂&#xff0c;但是如果想读取/修改镜像中的某个文件&#xff0c;一般有2种方案&#xff1a; 直接访问 就是用虚拟磁盘软件将镜像文件挂载成磁盘&#xf…...

基于STM32F103控制L298N驱动两相四线步进电机

文章目录 前言一、模块参数二、接口说明三、准备工作四、直流电机驱动引脚接线效果展示 五、两相四线步进电机驱动步进电机相关概念拍数驱动时序引脚接线效果展示 六、参考示例 前言 L298N 是一种常见的双 H 桥电机驱动模块&#xff0c;广泛用于驱动直流电机和步进电机。它基于…...

Blazor开发中注册功能设计研究

Blazor开发中注册功能设计是为了用户可以高效、安全地完成注册并登录系统。以高效和用户友好为目标,结合校验、注册和登录功能,为用户提供一个完整的账户管理流程,同时保障系统安全性和稳定性。注册页面应该结构清晰、布局合理,既满足基本注册功能,又通过响应式设计与视觉…...

Docker安装体验kuboard-k8s多集群管理工具

文章目录 1.kuboard是什么&#xff1f;2.docker安装命令2.1 Linux上docker环境安装命令2.2 Windows上docker环境安装命令 3.登录访问3.1首页访问地址3.2 默认账号密码3.3 登录页3.4 首页 4总结 1.kuboard是什么&#xff1f; 参看官网: https://kuboard.cn/gitHub项目地址&…...

组建基于IPV6的网络

现在很多单位使用IPV6的网络&#xff0c;地址资源紧张的状况得到了缓解&#xff0c;很多单位目前采用双栈运行&#xff0c;就是网络设备上同时跑IPV4和IPV6。 IPV6的网络与IPV4网络的配置与IPV4基本相同&#xff0c;注意地址规则与格式的不同。 长度&#xff1a;     IPv6地…...

浙江肿瘤医院病理库存储及NAS共享存储(磁盘阵列)方案-Infortrend普安科技

Infortrend金牌代理-燊通智联信息科技发展&#xff08;上海&#xff09;有限公司与院方多轮沟通&#xff0c;详细讨论性能与容量要求&#xff0c;最终决定采用GSe统一存储设备&#xff0c;与现有病理系统服务器无缝对接&#xff0c;每台设备配1.92T SSD作缓存加速原数据读写&am…...

UE5在蓝图中使用VarestX插件访问API

在Fab中安装好VarestX免费插件 这个插件可以用来远程请求http和api等&#xff0c;返回json等格式内容 插件网址 https://www.fab.com/zh-cn/listings/d283e40c-4ee5-4e73-8110-cc7253cbeaab 虚幻里开启插件 然后网上随便搜个免费api测试一下&#xff0c;这里我找了个微博热搜…...

QML学习(五) 做出第一个简单的应用程序

通过前面四篇对QML已经有了基本的了解&#xff0c;今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目&#xff0c;选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型&#xff0c;以及输出的程…...

Java日志框架:log4j、log4j2、logback

文章目录 配置文件相关1. properties测试 2. XMl使用Dom4j解析XML Log4j与Log4j2日志门面 一、Log4j1.1 Logges1.2 Appenders1.3 Layouts1.4 使用1.5 配置文件详解1.5.1 配置根目录1.5.2 配置日志信息输出目的地Appender1.5.3 输出格式设置 二、Log4j22.1 XML配置文件解析2.2 使…...

tcp 的重传,流量控制,拥塞控制

tcp 的重传解决了什么问题tcp的几种重传机制分别解决什么问题?方案 1: 超时重传方案2: 快速重传选择性确认(sack)d-sack(重复接收) 滑动窗口:累计应答 流量控制解决什么问题?如何做的?问题1: 那如果第一次发送的数据都大于缓冲区的大小怎么办?问题2: 如果剩余大小为0会发生…...

【多时段】含sop的配电网重构【含分布式电源】【已更新视频讲解】

1 主要内容 之前分享了很多配电网重构的程序&#xff0c;每个程序针对场景限定性比较大&#xff0c;程序初学者修改起来难度较大&#xff0c;本次分享一个基础程序&#xff0c;针对含sop的配电网重构模型&#xff0c;含风电和光伏&#xff0c;优化了33节点网络电压合理性&…...

angular管道传多个参数

比如有个时间管道 time.pipe.ts import { Pipe, PipeTransform } from angular/core;Pipe({ name: time }) export class TimePipe implements PipeTransform {transform(value: any,type: any,isTime: boolean,): string {// 具体逻辑不写了} }使用的时候对时间字段的处理只需…...

STM32高级 以太网通讯案例1:网络搭建(register代码)

需求描述 驱动W5500芯片&#xff0c;设置好IP&#xff0c;测试网络是否连通。 思考&#xff1a; 驱动W5500芯片是通过spi协议&#xff0c;所以和spi相关的有四个引脚&#xff0c;MOSI&#xff08;主出从入&#xff09;MISO&#xff08;主入从出&#xff09;SCK&#xff08;时…...

strncpy函数和使用案例

strncpy 是 C 语言标准库函数之一&#xff0c;用于字符串操作。它的功能是将源字符串&#xff08;source&#xff09;中的字符复制到目标字符串&#xff08;destination&#xff09;中&#xff0c;但最多复制 n 个字符。如果源字符串的长度小于 n&#xff0c;则目标字符串剩余的…...

Python调用Elasticsearch更新数据库

文章目录 Elasticsearch介绍Python调用Elasticsearch更新数据库 Elasticsearch介绍 Elasticsearch是一个基于Lucene的搜索引擎&#xff0c;它提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;具有HTTP web接口和无模式的JSON文档。Elasticsearch是用Java开发的&#x…...

阿里云-将旧服务器数据与配置完全迁移至新服务器

文章目录 一&#xff1a;创建镜像二&#xff1a;将创建好的镜像复制到新服务器所在的目标地域&#xff08;如果新服务器与镜像在同一地域就不用进行这一操作&#xff09;三&#xff1a;将镜像配置到新服务器上四&#xff1a;导出安全组&#xff08;如果新服务器与旧服务器使用同…...

redis cluster实验详解

华子目录 实验环境准备部署redis cluster添加节点删除节点redis cluster集群维护 实验 环境准备 再开3台主机 先把之前3台源码编译的redis删除 [rootredis-node1 ~]# cd /usr/local/redis/ [rootredis-node1 redis]# make uninstall[rootredis-node2 ~]# cd /usr/local/redi…...

网络技术-QoS策略以及如何定义 流分类,流行为,流策略

一&#xff1a;QoS策略简介 QoS策略由如下部分组成&#xff1a; 类&#xff0c;定义了对报文进行识别的规则。 流行为&#xff0c;定义了一组针对类识别后的报文所做的QoS动作。 通过将类和流行为关联起来&#xff0c;QoS策略可对符合分类规则的报文执行流行为中定义的…...

【小程序】自定义组件的data、methods、properties

目录 自定义组件 - 数据、方法和属性 1. data 数据 2. methods 方法 3. properties 属性 4. data 和 properties 的区别 5. 使用 setData 修改 properties 的值 自定义组件 - 数据、方法和属性 1. data 数据 在小程序组件中&#xff0c;用于组件模板渲染的私有数据&…...

实验五 时序逻辑电路部件实验

一、实验目的 熟悉常用的时序逻辑电路功能部件&#xff0c;掌握计数器、了解寄存器的功能。 二、实验所用器件和仪表 1、双 D触发器 74LS74 2片 2、74LS162 1片 3、74194 1片 4、LH-D4实验仪 1台 1.双…...

时序论文34|AdaWaveNet:用于时间序列分析的自适应小波网络

论文标题&#xff1a;AdaWaveNet: Adaptive Wavelet Network for Time Series Analysis 论文链接&#xff1a;https://arxiv.org/abs/2405.11124 论文代码&#xff1a;https://github.com/comp-well-org/AdaWaveNet/ 前言 这篇文章面向非平稳时间序列进行分析与建模&#x…...

Maven怎么会出现一个dependency-reduced-pom.xml的文件

问题 今天打包时突然发现&#xff0c;多出了一个名为dependency-reduced-pom.xml的文件 解决方法 由于使用了maven-shade-plugin插件导致的&#xff0c;在 <plugin> 标签下添加 <configuration><createDependencyReducedPom>false</createDependencyR…...

Vue.js组件(6):echarts组件

1 前言 本章主要对常用的echars图表展示进行基本的组件封装。使用该组件前需要在项目中引入echarts。官网&#xff1a;Apache ECharts npm install echarts --save 2 图表组件 2.1 折线图组件 组件属性&#xff1a;chartId&#xff0c;指定图表挂载div的id&#xff0c;注意不…...

在低版本 CUDA 环境下安装高 CUDA 版本的 PyTorch 及 DGL

项目中&#xff0c;代码环境需要 PyTorch 1.12.0 以上版本&#xff0c;但服务器上的 CUDA 版本仅为 10.1&#xff0c;官方支持的 PyTorch 最高版本为 1.7.0。导致无法直接使用所需的 PyTorch 版本。而且&#xff0c;DGL 也需要 0.9.1 版本&#xff0c;而 CUDA 10.1 不支持该版本…...

【SpringMVC】REST 风格

REST&#xff08;Representational State Transfer&#xff0c;表现形式状态转换&#xff09;是一种访问网络资源的格式。传统的资源描述方式通常如下&#xff1a; http://localhost/user/getById?id1http://localhost/user/saveUser 而 REST 风格的描述则更简洁&#xff1a…...

windows C#-使用对象初始值设定项初始化对象

可以使用对象初始值设定项以声明方式初始化类型对象&#xff0c;而无需显式调用类型的构造函数。 以下示例演示如何将对象初始值设定项用于命名对象。 编译器通过首先访问无参数实例构造函数&#xff0c;然后处理成员初始化来处理对象初始值设定项。 因此&#xff0c;如果无参…...

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中&#xff0c;还有一个流控效果选项&#xff1a; 流控效果是指请求达到流控阈值时应该采取的措施&#xff0c;包括三种&…...

安装与配置

《PHP Libxml》是一个在PHP中处理XML和HTML文档的重要库。它提供了丰富的API&#xff0c;支持DOM、SimpleXML和XMLReader等多种解析方式&#xff0c;广泛应用于各种编程语言和项目中。 安装与配置 安装: 在PHP中&#xff0c;libxml扩展通常是默认启用的。如果你需要手动安装&…...

optuna和 lightgbm

文章目录 optuna使用1.导入相关包2.定义模型可选参数3.定义训练代码和评估代码4.定义目标函数5.运行程序6.可视化7.超参数的重要性8.查看相关信息9.可视化的一个完整示例10.lightgbm实验 optuna使用 1.导入相关包 import torch import torch.nn as nn import torch.nn.functi…...

SpringAI人工智能开发框架006---SpringAI多模态接口_编程测试springai多模态接口支持

可以看到springai对多模态的支持. 同样去创建一个项目 也是跟之前的项目一样,修改版本1.0.0 这里 然后修改仓库地址,为springai的地址 然后开始写代码...

ONLYOFFICE 协作空间 3.0 新功能详解

ONLYOFFICE 协作空间 3.0 新功能详解 书接上文&#xff1a; ONLYOFFICE 协作空间 3.0 发布: 新增虚拟数据房间、用户类型、OAuth 2.0 等更新 简单的介绍了一下 ONLYOFFICE 协作空间 3.0 的新功能&#xff0c;今天我们详细介绍一下这些新功能。 关于 ONLYOFFICE 协作空间 O…...

湖南引力:低代码助力实现智慧养老管理系统

“低代码开发宛如一座神奇的桥梁&#xff0c;它以简洁高效的方式连接起创意与应用&#xff0c;降低了开发门槛&#xff0c;为企业和开发者带来前所未有的便捷与可能&#xff0c;开启了快速实现软件梦想的新征程。” ——王港&#xff0c;湖南引力科技有限公司 湖南引力科技有…...

React里使用lodash工具库

安装 使用命令 npm install lodash 页面引入 常见的引入方式 引入整个lodash对象&#xff1a; import _ from lodash按名称引入特定的函数&#xff1a; import { orderBy } from "lodash"; tips: 这两种引入方式都会引入整个lodash库&#xff0c; 体积大&#x…...

机器人C++开源库The Robotics Library (RL)使用手册(二)

由于RL库采用跨平台CMake源码,可以轻松在win、ubantu等平台部署、编译,win通常用VS编译器,为了便于使用、阅读,需要将CMake编译成VS工程。 1、准备三个工具:CMake、VS、QT 为了在Windows上编译RL和依赖项,您需要安装一个编译器(例如。,Visual Studio 2017)和跨平台构…...

Excel无法插入新单元格怎么办?有解决方法吗?

在使用Excel时&#xff0c;有时会遇到无法插入新单元格的困扰。这可能是由于多种原因导致的&#xff0c;比如单元格被保护、冻结窗格、合并单元格等。本文将详细介绍3种可能的解决方案&#xff0c;帮助你顺利插入新单元格。 一、消冻结窗格 冻结窗格功能有助于在滚动工作表时保…...

2024年-全球使用Delphi统计

Delphi是一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在支持开发者高效地构建桌面、移动、Web 以及控制台应用程序&#xff0c;特别适合追求速度与效率的快速应用开发&#xff08;RAD&#xff09;流程。 根据 theirstack.com 网站的数据&#xff0c;我们大致描…...

行为树详解(5)——事件驱动

【分析】 如果行为树的节点很多&#xff0c;那么会存在要经过很多节点才会走到动作节点的情况。显然&#xff0c;性能上不如状态机。 每帧都需要重新遍历一系列节点才会走到动作节点&#xff0c;而实际上很多条件节点在数帧内不会有变化&#xff0c;这是造成性能问题的重要原…...

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU&#xff1f; 本篇文章的目标是帮助初学者了解 CUDA 是什么&#xff0c;以及它如何与 PyTorch 配合使用&#xff0c;更重要的是&#xff0c;我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA&#xff0c;我们需要对图…...

Kinova在开源家庭服务机器人TidyBot++研究里大展身手

在科技日新月异的今天&#xff0c;机器人技术在家庭场景中的应用逐渐成为现实&#xff0c;改变着我们的生活方式。今天&#xff0c;我们将深入探讨一篇关于家用机器人研究的论文&#xff0c;剖析其中的创新成果&#xff0c; 论文引用链接&#xff1a;http://tidybot2.github.i…...

Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一&#xff1a;使用fromsize实现分页 快速掌握Elasticsearch检索之二&#xff1a;滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…...

Day1 微服务 单体架构、微服务架构、微服务拆分、服务远程调用、服务注册和发现Nacos、OpenFeign

目录 1.导入单体架构项目 1.1 安装mysql 1.2 后端 1.3 前端 2.微服务 2.1 单体架构 2.2 微服务 2.3 SpringCloud 3.微服务拆分 3.1 服务拆分原则 3.1.1 什么时候拆 3.1.2 怎么拆 3.2 拆分购物车、商品服务 3.2.1 商品服务 3.2.2 购物车服务 3.3 服务调用 3.3.1 RestTemplate 3.…...

shell编程7

声明 学习视频来自B站UP主 泷羽sec for循环与while循环 for 循环 例子 代码如下: for i in seq 1 100 do echo $i done或者 for i in $(seq 1 100) do echo $i done 反引号的作用 在 shell 脚本中&#xff0c;反引号用于命令替换。它会将反引号中的命令执行&#xff0c;…...