【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?
文章目录
- 🌍一. ES6 新特性
- ❄️1. ES6 基本介绍
- ❄️2. 基本使用
- 2.1 let 声明变量
- 2.2 const 声明常量/只读变量
- 2.3 解构赋值
- 2.4 模板字符串
- 2.5 对象拓展运算符
- 2.6 箭头函数
- 🌍二. Promise
- ❄️1. 基本使用
- ❄️2. 如何解决回调地狱问题
- 2.1回调地狱问题
- 2.2 使用 Promise
- 2.3Promise 的优势
- 🌍三. 模块化编程
- ❄️1. 基本介绍
- ❄️2. CommonJS 模块编程
- ❄️3. ES6 模块编程
- 1. ES6模块的关键特性
- 2. 实践中的注意事项
🙋♂️ 作者:@whisperrr.🙋♂️
👀 专栏:JavaWeb👀
💥 标题:【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?💥
❣️ 寄语:比较是偷走幸福的小偷❣️
🌍一. ES6 新特性
首先给大家推荐俩个学习ES6的网址。
ECMA International 官方网站:这个网站提供了 ES6 的官方文档,详细介绍了 ES6 的所有特性和规范。这是一个权威且详尽的学习资源,适合那些希望深入了解语言规范的开发者。
- 网址:https://262.ecma-international.org/6.0/
阮一峰的 ES6 教程:这是由阮一峰编写的一本关于 ES6 的入门书籍,广受前端开发者欢迎。这本书以简单易懂的方式介绍了 ES6 的各种特性,非常适合初学者和希望快速掌握 ES6 的开发者。
- 网址:https://es6.ruanyifeng.com/#docs/let
❄️1. ES6 基本介绍
1.ES6 是什么?
- ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准, 2015 年 6 月发布。
- ES6 设计目标:达到 JavaScript 语言可以用来编写复杂的大型程序,成为企业级开发语言
- ECMAScript 和 JavaScript 的关系:ECMAScript 是 JavaScript 的规范/规则,JavaScript 是ECMAScript 的一种实现
❄️2. 基本使用
2.1 let 声明变量
在ES6(ECMAScript 2015)中,let
关键字被引入用来声明变量,它的用法与 var
类似,但有以下几个重要的区别:
- 块级作用域:
let
声明的变量只在它所在的代码块内有效。 - 不存在变量提升:
let
声明的变量不会被提升到作用域的顶部。 - 暂时性死区:在声明之前就使用
let
声明的变量会导致ReferenceError错误。
下面是 let
声明变量的几种基本用法:
基本声明
let a;
let b = 10;
块级作用域示例
if (true) {let message = "Hello, World!";console.log(message); // "Hello, World!"
}
// 在这里访问 message 会报错,因为 message 是在 if 块中声明的
不存在变量提升
console.log(a); // 报错:ReferenceError: a is not defined
let a = 'I am not hoisted';
只能声明一次,
let num2 = 600;
let num2 = 900;
num2已经声明过了,再次使用let声明会报错
Uncaught SyntaxError: redeclaration of let num2
暂时性死区示例
var tmp = 123;
if (true) {tmp = 'abc'; // ReferenceError: Cannot access 'tmp' before initializationlet tmp;
}
在这个例子中,尽管
tmp
在let tmp;
声明之前已经被声明为一个全局变量,但在let
声明之前访问tmp
会导致错误,因为在if
块中的tmp
的暂时性死区内,它还未被声明。
使用let
可以帮助避免JavaScript中常见的一些错误,并且使得代码更加安全和易于理解。
2.2 const 声明常量/只读变量
在ES6(ECMAScript 2015)中,
const
关键字用于声明一个只读的常量。这意味着一旦一个变量被声明为常量,它的值就不能再被改变。下面是const
声明常量的一些基本用法和规则:
基本声明
const PI = 3.14159;
常量规则
- 必须初始化:声明一个常量时,必须同时初始化它的值,否则会报错。
const FOO; // SyntaxError: Missing initializer in const declaration
- 不可重新赋值:一旦声明,常量的值就不能再被改变。
const MAX_SIZE = 100; MAX_SIZE = 200; // TypeError: Assignment to constant variable.
2.3 解构赋值
1.基本介绍
- 解构赋值是对赋值运算符的扩展
- 是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值
- 主要有两种形式: 数组解构和对象解构
2.数组解构
ES6(ECMAScript 2016)引入了数组解构(Array Destructuring),它是一种表达式,可以方便地从数组中提取值并赋给变量。数组解构的语法形式是在一个赋值操作符的左侧使用一个数组字面量。
以下是数组解构的一些基本用法:
//第一种方式
let arr = [1, 2, 3];
let [a, b, c] = arr;
//第二种方式
let [num1, num2, num3] = [100, 200, 300];
3.对象解构
ES6(ECMAScript 2015)同样引入了对象解构(Object Destructuring),它允许你将对象中的属性直接赋值给变量。对象解构的语法是在赋值操作符的左侧使用一个对象字面量。
以下是对象解构的一些基本用法:
//第一种方式
let monster = {name: '牛魔王', age: 800};
let {name, age} = monster;
//第二种方式
let {name, age} = {name: '牛魔王', age: 800};//也可以当做形参
function f1({name, age}) {
console.log("f1-name=", name, " ", "f1-age=", age)
}
f1(monster);
1.把 monster 对象的属性, 赋值给{name,age}
2.{name,age} 的取名 name 和 age 要和 monster 对象的属性名保持一致
3.使用{} 包括, 不要使用[]
4.{name,age} 顺序是无所谓
2.4 模板字符串
- 模板字符串使用反引号 ` 字符串包裹
- 可作为普通字符串
- 可用来定义多行字符串,即可以将换行字符串原生输出
- 字符串插入变量和表达式, 使用
${}
- 字符串中调用函数
let str1 = `for(int i = 0;i < 10;i++){
System.out.println("i="+i);
}`;let str2 = `教育名称=${name}`;
let str3 = `1+2=${1 + 2}`;
2.5 对象拓展运算符
对象扩展运算符(Spread Operator),用三个点
(…)
表示,允许你将一个对象的可枚举属性复制到另一个对象中。这在合并对象、传递参数等场景中非常有用。
合并对象,你可以使用扩展运算符来合并两个或多个对象。
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = { …obj1, …obj2 };
console.log(mergedObj); // { a: 1, b: 3, c: 4 }
在这个例子中,obj2 的属性 b 覆盖了 obj1 中的 b 属性。
2.6 箭头函数
1.基本介绍
- 箭头函数提供更加简洁的函数书写方式。
- 基本语法是:
(参数列表) => { 函数体 }
- 箭头函数没有参数或有多个参数,要用 () 括起来,箭头函数只有一个参数, 可以省略
()
- 箭头函数函数体有多行语句,用
{}
包裹起来,表示代码块 - 函数体只有一行语句,并且需要返回结果时,可以省略
{}
, 结果会自动返回 - 箭头函数多用于匿名函数的定义
let f2 = (n, m) => {
var res = 0
for (var i = n; i <= m; i++) {
res += i
}
return res
};
🌍二. Promise
❄️1. 基本使用
1.Promise 基本介绍
- 传统的 Ajax 异步调用在需要多个操作的时候,会导致多个回调函数嵌套,导致代码不够直观,就是常说的
Callback Hell
- 为了解决上述的问题,Promise 对象应运而生,在 EMCAScript 2015 当中已经成为标准
- Promise 是异步编程的一种解决方案。
- 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息
- 一句话: Promise 是异步编程的一种解决方案, 可以解决传统 Ajax 回调函数嵌套问题
2.需求分析/图解
3.执行效果
❄️2. 如何解决回调地狱问题
下面让我们详细探讨一下如何使用 Promise 来解决传统 Ajax 请求中的嵌套回调问题。
2.1回调地狱问题
在传统的异步编程模式中,如果需要按顺序执行多个异步操作(比如多个 Ajax 请求),通常会写出如下嵌套回调的代码:
// 假设我们使用的是 jQuery 的 $.ajax 方法
$.ajax({url: 'url1',success: function(response1) {// 处理 response1$.ajax({url: 'url2',success: function(response2) {// 处理 response2$.ajax({url: 'url3',success: function(response3) {// 处理 response3// 如果还有更多操作,继续嵌套...},error: function(error3) {// 处理 error3}});},error: function(error2) {// 处理 error2}});},error: function(error1) {// 处理 error1}
});
这种代码结构被称为“回调地狱”,因为随着异步操作数量的增加,代码变得越来越难以阅读和维护。
2.2 使用 Promise
Promise 提供了一种更加优雅的方式来处理异步操作。以下是使用 Promise 改写上述代码的步骤:
- 创建 Promise 对象:对于每个异步操作,创建一个返回 Promise 对象的函数。
function fetchUrl(url) {return new Promise((resolve, reject) => {$.ajax({url: url,success: function(response) {resolve(response);},error: function(error) {reject(error);}});});
}
- 链式调用 .then() 方法:使用
.then()
方法来处理每个 Promise 的成功结果,并在每个.then()
方法中返回一个新的 Promise,以便链式调用。
fetchUrl('url1').then(response1 => {// 处理 response1// 可以返回新的 Promise 或值return fetchUrl('url2');}).then(response2 => {// 处理 response2// 继续返回新的 Promisereturn fetchUrl('url3');}).then(response3 => {// 处理 response3}).catch(error => {// 处理任何在执行过程中出现的错误});
在上面的代码中,每个 fetchUrl
函数调用都返回一个新的 Promise 对象。当这个 Promise 成功解决(resolved)时,.then()
方法会被调用,并传入解决值。如果 Promise 被拒绝(rejected),.catch()
方法会被调用,并传入拒绝的原因。
2.3Promise 的优势
- 代码扁平化:Promise 通过链式调用来避免嵌套回调,使代码更加扁平化。
- 更好的错误处理:
.catch()
方法可以捕获链中任何 Promise 的错误,而不是在每个回调中分别处理。 - 可读性和可维护性:链式调用使得异步代码的流程更加清晰,易于理解和维护。
通过使用 Promise,我们可以编写更加清晰和结构化的异步代码,避免了回调地狱,并提供了更强大的错误处理机制。
🌍三. 模块化编程
❄️1. 基本介绍
- 传统非模块化开发有如下的缺点:(1)命名冲突 (2)文件依赖
- Javascript 代码越来越庞大,Javascript 引入模块化编程,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块
- Javascript 使用"模块"(module)的概念来实现模块化编程, 解决非模块化编程问题
2.模块化编程原理示意图
❄️2. CommonJS 模块编程
- 每个 js 文件就是一个模块,有自己的作用域。在文件中定义的变量、函数、类/对象,都是私有的,对其他 js 文件不可见
- CommonJS 使用
module.exports={} / exports={}
导出 模块 , 使用let/const
名称=require("xx.js")
导入模块
CommonJS 是一种模块规范,最初被用于服务器端的 JavaScript 环境,尤其是 Node.js。它定义了一种简单的方式来创建和消费模块。以下是 CommonJS 模块编程的基本概念和用法:
1.模块定义
在 CommonJS 中,一个模块是一个文件。模块可以通过 module.exports
对象来导出值,也可以通过 exports
变量来导出多个成员。以下是导出一个函数的例子:
// myModule.js
function myFunction() {// ...
}
module.exports = myFunction;
或者,如果你想要导出多个函数或对象:
// myModule.js
function myFunction() {// ...
}
function anotherFunction() {// ...
}
exports.myFunction = myFunction;
exports.anotherFunction = anotherFunction;
2.模块引用
要使用一个模块,你可以使用 require
函数来引入它。require
函数会返回模块导出的对象。
// main.js
const myModule = require('./myModule');
myModule.myFunction();
如果模块导出的是一个函数或单个值,你可以直接使用它:
// main.js
const myFunction = require('./myModule');
myFunction();
3.模块缓存
Node.js 会缓存通过 require
加载的模块。这意味着每次调用 require
时,如果模块已经被加载过,它会返回缓存的模块,而不是重新加载。
特点
- 同步加载:CommonJS 模块是同步加载的,这意味着模块加载时会阻塞后续代码的执行,直到模块加载完成。
- 循环依赖:CommonJS 可以处理模块间的循环依赖,但是需要小心处理,因为可能会出现只部分加载的情况。
以下是一个简单的 CommonJS 模块化编程的例子:
// math.js
exports.add = function(a, b) {return a + b;
};
exports.subtract = function(a, b) {return a - b;
};
// main.js
const math = require('./math');
console.log(math.add(1, 2)); // 输出 3
console.log(math.subtract(5, 2)); // 输出 3
在这个例子中,
math.js
模块导出了两个函数,main.js
通过require
引入了这个模块,并使用了它的功能。
CommonJS 模块规范在 Node.js 和一些浏览器环境中得到了广泛的支持,但是在浏览器环境中,通常使用 ES6 Modules 或 AMD 作为模块化的解决方案。
❄️3. ES6 模块编程
- ES6 使用
(1)export {名称/对象/函数/变量/常量}
(2) export 定义=
(3) export default {}导出模块- 使用
import {} from "xx.js" / import
名称form "xx.js"
导入模块
ES6模块化编程是JavaScript语言的一个重要进步,它为开发者提供了一种官方的、标准化的方式来组织和重用代码。在此之前,JavaScript社区已经尝试了多种模块化方案,如AMD、CommonJS等,但它们都是非标准的,或者在某些环境中有限制。ES6模块的引入,标志着JavaScript在语言层面上对模块化的正式支持。
1. ES6模块的关键特性
- 导出(Export)与导入(Import)
ES6模块通过export
和import
关键字来管理模块的对外接口和依赖关系。这使得模块之间的交互变得直观且易于理解。你可以导出单个变量、函数、类或者整个模块对象,也可以导入一个模块中的特定部分或者整个模块。 - 默认导出(Default Export)
默认导出允许一个模块导出一个没有名字的值,这在使用模块时提供了更大的灵活性。每个模块只能有一个默认导出,但可以与多个命名导出共存。 - 编译时加载
与CommonJS的运行时加载不同,ES6模块是在编译时进行加载的。这意味着模块的依赖关系在代码执行之前就已经确定,这有助于提高性能并允许进行更多的编译时优化。 - 树摇(Tree Shaking)
由于ES6模块的静态结构,未使用的导出可以在打包过程中被移除,这个过程被称为“树摇”。这有助于减少最终打包文件的体积,提高应用的加载速度。 - 命名空间导出(Namespace Export)
ES6模块还支持命名空间导出,允许你将多个导出聚合到一个对象中。这对于组织大量导出非常有用,可以避免命名冲突。
2. 实践中的注意事项
- 浏览器支持:虽然现代浏览器支持ES6模块,但在使用时可能需要设置正确的MIME类型,并在
<script>
标签中使用type="module"
。 - 服务器端渲染:在Node.js等服务器端环境中,可能需要使用特定的模块解析策略或转换工具,如Babel,来兼容ES6模块。
- 打包工具:在实际开发中,通常会使用Webpack、Rollup等打包工具来处理模块依赖,优化生产环境下的代码。
ES6模块化编程不仅提升了代码的可维护性和可重用性,也为JavaScript的生态系统带来了标准化和一致性。随着现代前端框架和工具链的发展,ES6模块已经成为编写现代JavaScript应用程序的基石。
相关文章:
【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?
文章目录 🌍一. ES6 新特性❄️1. ES6 基本介绍❄️2. 基本使用2.1 let 声明变量2.2 const 声明常量/只读变量2.3 解构赋值2.4 模板字符串2.5 对象拓展运算符2.6 箭头函数 🌍二. Promise❄️1. 基本使用❄️2. 如何解决回调地狱问题2.1回调地狱问题2.2 使…...
每日一题之屏蔽信号
问题描述 在与三体文明的对抗中,人类联邦探测到了两个重要的信号源,分别用非负整数 aa 和 bb 来表示。 为了抵御三体舰队的入侵,科学家们制定出一项关键策略——屏蔽信号,目标是要让 aa、bb 这两个信号源其中之一的数值归零。 在…...
TCP如何保证可靠性
目录 回顾TCP协议TCP报文头部 TCP如何保证可靠性?校验和序列号确认应答机制(ACK)超时重传机制连接管理机制(三次握手和四次挥手)流量控制滑动窗口滑动机制 拥塞控制慢开始 & 拥塞避免快重传 & 快恢复 回顾TCP协…...
HTTP协议深度解析:从Tomcat到HTTPS的全方位探索
目录 引言 一、Tomcat部署与Servlet容器 1.1 Tomcat部署流程 1.2 Tomcat与Servlet 二、HTTP协议的基础构成 2.1 URL 2.2 HTTP请求与响应 2.3 HTTP状态码 三、计算机网络与数据传输 3.1 局域网与路由器 3.2 IP地址与MAC地址 3.3 域名与DNS 四、HTTPS协议与数据加密…...
互联网医院实时数据监测智能分析系统设计概述(下)
阶段4:可视化仪表盘与用户界面开发 在这一阶段,我们将使用 Plotly Dash 来设计一个实时预测仪表盘,用于展示疾病传播趋势、医生评估信息等。我们还将实现实时数据更新与展示,确保数据能够及时反映系统中的变化。 1. 设计实时预测仪表盘 步骤 1:安装 Dash 依赖 首先,确…...
性能测试测试策略制定|知名软件测评机构经验分享
随着互联网产品的普及,产品面对的用户量级也越来越大,能抗住指数级增长的瞬间访问量以及交易量是保障购物体验是否顺畅的至关重要的一环,而我们的性能测试恰恰也是为此而存在的。 性能测试是什么呢?性能测试要怎么测呢?…...
【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案
作者:Odoo技术开发/资深信息化负责人 日期:2025年2月28日 一、部署背景与目标 DeepSeek R1作为国产大语言模型的代表,凭借其强化学习驱动的推理能力,在复杂任务(如数学问题、编程逻辑)中表现优异。本地化部…...
蓝桥真题讲解
温馨提示:本系列文章非所有题都对对b组适用,b组的小伙伴请挑题看! 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 本题总结 第三题 题目链接 题目解析 代码原理 …...
javaweb将上传的图片保存在项目文件webapp下的upload文件夹下
前端HTML表单 (upload.html) 首先,创建一个HTML页面,允许用户选择并上传图片。 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>图片上传</title> </head> <…...
北京大学DeepSeek与AIGC应用(PDF无套路下载)
近年来,人工智能技术飞速发展,尤其是大模型和生成式AI(AIGC)的突破,正在重塑各行各业的生产方式与创新路径。 北京大学联合DeepSeek团队推出的内部研讨教程《DeepSeek与AIGC应用》,以通俗易懂的方式系统解…...
测量海拔以及两点间路程(十六)
一、DigitalEarthView.cpp void CDigitalEarthView::OnCheckCheliang() {isTestJu = !isTestJu;mOSG->isTestJu(isTestJu); } 二、OSGObject.cpp void COSGObject::isTestJu(bool isTest) {theApp.bNeedModify = TRUE;while(!theApp.bCanModify)Sleep(1);if(isTest){eh-&…...
Flutter状态管理框架GetX最新版详解与实践指南
一、GetX框架概述 GetX是Flutter生态中轻量级、高性能的全能开发框架,集成了状态管理、路由导航、依赖注入等核心功能,同时提供国际化、主题切换等实用工具。其优势在于代码简洁性(减少模板代码约70%)和高性能(基于观…...
8. 示例:对32位数据总线实现位宽和值域覆盖
文章目录 前言示例一:示例二:示例三:仿真与覆盖率分析覆盖点详细说明覆盖率提升技巧常见错误排查 示例四:仿真步骤 前言 针对32位数据总线实现位宽和值域的覆盖,并且能够用xrun运行,查看日志和波形。cover…...
第6篇:面向对象编程重构系统
一、OOP重构目标 数据封装:隐藏实现细节接口抽象:规范操作入口资源自治:实现自管理生命周期扩展基础:预留多态支持接口二、完全面向对象实现(完整代码) #include <iostream> #include <Windows.h> #include <li...
CTF-web: Rust 的过程宏
Rust 的过程宏(Procedural Macros)是一种强大的元编程工具,允许你在编译时对代码进行操作和生成。与属性宏和派生宏不同,过程宏可以接收并处理任意 Rust 代码,生成新的代码片段。这里有一个简单的例子来说明 Rust 的过…...
【Kubernetes】API server 限流 之 maxinflight.go
这个文件实现了一个基于信号量(Channel)的简单限流器。 基础知识 总共有四种channel 带缓冲的channel nonMutatingChan、mutatingChan 都是带缓冲的channel ,这类channel 的特点是: 这允许最多 mutatingLimit /nonMutatingLimit 个请求同时获取令牌并执…...
phpstudy安装教程dvwa靶场搭建教程
GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA) Dvwa下载地址 Windows版phpstudy下载 - 小皮面板(phpstudy) 小皮下载地址 1选择windows 版本,点击立即下载 下载完成,进行解压,注意不要有中文路径 点击.exe文件进行安装…...
React核心知识及使用场景
React是一个用于构建用户界面的JavaScript库,尤其适合构建单页面应用(SPA)。它基于组件化的开发思想,主要特点是通过虚拟DOM来提高渲染效率。以下是React的核心知识和使用场景: 一. 核心知识 组件化: 类组件和函数组件:React的组件分为类组件和函数组件。类组件通过继承…...
杰发科技AC7801——滴答定时器获取时间戳
1. 滴答定时器 杰发科技7801内部有一个滴答定时器,该定时器是M0核自带的,因此可以直接用该定时器来获取时间戳。 同样,7803也可以使用该方式获取时间戳。 2. 滴答定时器原理 SysTick是一个24位的递减计数器,它从预设的重装载值…...
「爬虫实战分享:如何高效爬取某汽车官方销售排行榜」
本文目录 💖前言一、💫代理IP的作用二、💫爬虫中的挑战1.代理IP的质量和稳定性2.IP封禁问题3. 反爬虫技术的升级 三、💫亮数据动态代理:数据采集的可靠伙伴1、真实体验 四、💫爬虫实战:使用亮数…...
AI数据分析:用DeepSeek做数据清洗
在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行数据清洗。 数据清洗是数据分析的基础,其目的是…...
使用串口工具实现tcp与udp收发
1、使用串口工具实现tcp收发 2、使用串口工具实现udp收发...
onlyoffice 服务搭建及配置 - 前端 office 文件预览解决方案
文章目录 1. 安装1.1 环境要求1.2 安装步骤1.3 常用配置1.3.1 安装目录/config/default.json1.3.2 安装目录/config/local.json1.3.3 安装目录/nginx/conf1.3.4 配置生效 2. 网站嵌入2.1 代码示例2.2 最终效果 3. 常见问题3.1 数据库配置错误导致加载不出来 1. 安装 写文章时使…...
PostgreSQL的基本使用
参考视频:零基础入门PostgreSQL教程 文章目录 一、PostgreSQL是什么?二、基本使用1.下载2.操作 一、PostgreSQL是什么? PostgreSQL 是一个免费的对象-关系数据库服务器,在灵活的BSD许可证下发行。 二、基本使用 1.下载 2.操作 …...
【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)
NumPy系列文章 入门篇进阶篇终极篇 一、NumPy简介 NumPy(Numerical Python)是Python中科学计算的核心库,提供了高性能的多维数组对象和各种用于数组操作的函数。它是Python数据分析和科学计算的基础,被广泛应用于机器学习、数据…...
武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会
2025年2月21日下午,武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司(以下简称“谱度众合”)在学院学术厅举行校企联培专业学位研究生合作交流会。武汉大学生命科学学院副院长刘星教授、生命科学学院周宇教授、产…...
小程序画带圆角的圆形进度条
老的API <canvas id"{{canvasId}}" canvas-id"{{canvasId}}" style"opacity: 0;" class"canvas"/> startDraw() {const { canvasId } this.dataconst query this.createSelectorQuery()query.select(#${canvasId}).bounding…...
MR-图解
1、不是所有的MR都适合combine 1.1、map端统计出了不同班级的每个学生的年龄 如:(class1, 14)表示class1班的一个学生的年龄是14岁。 第一个map任务: class1 14 class1 15 class1 16 class2 10第二个map任务: class1 16 class2 10 class…...
[深度学习] 大模型学习2-提示词工程指北
在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…...
VSCode离线安装插件
最近在其他电脑设备上部署vscode环境出现问题,在vscode里直接安装插件失败,软件提示如下:(此前已经用此方法安装过中文插件) 这里我们选择手动下载,会自动在浏览器中跳转到该插件的下载链接并自动下载插件&…...
python-leetcode-删除并获得点数
740. 删除并获得点数 - 力扣(LeetCode) 解法 1:动态规划(O(n) 时间,O(n) 空间) class Solution:def deleteAndEarn(self, nums: List[int]) -> int:if not nums:return 0# 统计每个数的贡献points Cou…...
Spring Boot 流式响应豆包大模型对话能力
当Spring Boot遇见豆包大模型:一场流式响应的"魔法吟唱"仪式 一、前言:关于流式响应的奇妙比喻 想象一下你正在火锅店点单,如果服务员必须等所有菜品都备齐才一次性端上来,你可能会饿得把菜单都啃了。而流式响应就像贴…...
STM32G431RBT6——(1)芯片命名规则
相信很多新手入门STM学的芯片,是STM32F103C8T6,假如刷到个项目换个芯片类型,就会感到好难啊,看不懂,就无从下手,不知所云。其实没什么难的,对于一个个不同的芯片的区别,就像是学习包…...
React进阶之前端业务Hooks库(三)
前端业务Hooks库 hooks 方法localStorage和sessionStorager区别packages/hooks/src/useLocalStorageStatepackages/hooks/src/useSessionStorageStatepackages/hooks/src/createUseStorageState模块Hooks在不同场景下的应用Hooks陷阱前提例子useLatest和useMemoizedFn其他功能的…...
卷积神经网络梯度下降方向与参数更新方向的一致性论述
梯度下降是一种常用的优化算法,用于最小化损失函数,在机器学习和深度学习领域有着广泛的应用。分别对梯度下降、梯度方向以及参数更新采用负梯度方向的原因进行论述。 1.梯度下降 它的基本思想是通过迭代的方式来更新模型的参数,使得损失函数…...
python 视频网站爬虫教程,爬虫入门教程(付安装包)
文章目录 前言1. 环境准备Python安装选择Python开发环境安装必要库 2. 了解目标网站3. 发送请求获取页面内容4. 解析页面内容,提取视频链接5. 下载视频6. 处理反爬机制7. 完整代码示例注意事项 前言 以下为你生成一份 Python 视频网站爬虫教程,以爬取简…...
Is Noise Conditioning Necessary for Denoising Generative Models?论文阅读笔记
很吸引人的一个标题,很吸引人的一个作者,来读一读明神的新作,讲的是怎么把去噪领域的一些有意思的思想,特别是blind denoising和noise-level estimation的思想,应用到denoising diffusion模型中,从而去掉de…...
BIO、NIO、AIO、Netty从简单理解到使用
Java编程中BIO、NIO、AIO是三种不同的I/O(输入/输出)模型,它们代表了不同的I/O处理方式。 Netty就是基于Java的NIO(New Input/Output)类库编写的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可…...
最新版 (持续更新)docker 加速源 linux yum 源
收藏两个网站,配置docker 加速源与yum 源。 docker 加速源链接 Docker/DockerHub 国内镜像源/加速列表(2月25日更新-长期维护)-腾讯云开发者社区-腾讯云https://cloud.tencent.com/developer/article/2485043 yum 源 CentOS7停服后yum源配置…...
MapReduce编程模型
MapReduce编程模型 理解MapReduce编程模型独立完成一个MapReduce程序并运行成功了解MapReduce工程流程掌握并描述出shuffle全过程(面试)独立编写课堂及作业中的MR程序理解并解决数据倾斜 1. MapReduce编程模型 Hadoop架构图 Hadoop由HDFS分布式存储、M…...
开源|Documind协同文档(接入deepseek-r1、支持实时聊天)
Documind 🚀 项目介绍 Documind 一个支持实时聊天和接入deepseek-r1模型AI助手的协同文档编辑项目 前端:NextJS React TailwindCSS ShadcnUl Tiptap Zustand后端:NextJS Convex Liveblocks Clerk项目预览:Documind 预览…...
【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝
【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候,通过命令行注册相应的服务(比如cloudwego项目的demo_proto以及user服务)失败。 解决办法 经过分析,是…...
`maturin`是什么:matu rus in python
maturin是什么 maturin 是一个用于构建和发布 Rust 编写的 Python 绑定库的工具。它简化了将 Rust 代码集成到 Python 项目中的过程,支持创建不同类型的 Python 包,如纯 Python 包、包含 **Rust (系统编程语言)**扩展模块的包等。以下为你详细介绍 maturin 的相关信息并举例…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_file_t
ngx_file_t 定义在 src/core/ngx_core.h typedef struct ngx_file_s ngx_file_t;ngx_file_s 定义 在 src/core/ngx_file.h struct ngx_file_s {ngx_fd_t fd;ngx_str_t name;ngx_file_info_t info;off_t …...
【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取
【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时,或者某些三方SDK以来的管理后台,都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释: 华为AppGallery Connect简称 AGC平台࿰…...
登录次数限制
文章目录 一、应用场景与设计目的1. 应用场景2. 设计目的 二、功能设计1. 登录限制规则2. 解锁机制3. 适用维度 三、技术实现1. 数据存储2. 逻辑流程3. 实现代码示例4. 动态锁定时间 四、安全增强与扩展1. 防止用户名枚举2. 加入验证码3. 监控与报警4. 分布式支持 五、设计思考…...
两台互通的服务器使用Docker部署一主两从MySQL8.0.35
文章目录 1. 使用Docker Overlay网络(需Swarm模式)在服务器1(172.25.0.19)上:在服务器2(172.25.0.20)上:创建 overlay 网络(172.25.0.19): 2. 部署…...
使用Semantic Kernel:对DeepSeek添加自定义插件
SemanticKernel介绍 Semantic Kernel是一个SDK,它将OpenAI、Azure OpenAI等大型语言模型与C#、Python和Java等传统编程语言集成在一起。Semantic Kernel通过允许您定义插件来实现这一点。 为什么需要添加插件? 大语言模型虽然具有强大的自然语言理解和…...
DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP
DeepSeek 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...
mysql数据迁移到SQLserver: 构建数据迁移脚本
文章目录 引言转换方法将 MySQL 脚本转换为 SQL Server 脚本主要修改点I 迁移案例菜单数据迁移迁移脚本1迁移脚本2I MySQL中将INT类型转换为字符串的方法CAST函数(标准SQL)CONVERT函数(MySQL特有)隐式转换(上下文触发)修改表结构(永久转换)保留前导零用…...