上海 网站开发 工作室/网页优化最为重要的内容是
1.ES6是什么
ES6,全称是ECMAScript 6,是JavaScript语言的下一代标准,由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015,从这个版本开始,ECMA组织决定每年发布一个新的ECMAScript版本,以使JavaScript语言能够持续发展和进化。
ES6引入了许多新特性,这些特性旨在提高JavaScript语言的编程效率、代码的可读性和可维护性。以下是一些ES6中的重要特性:
-
箭头函数(Arrow functions):提供了一种更简洁的函数书写方式。
const sum = (a, b) => a + b;
-
类(Classes):引入了类的概念,尽管JavaScript仍然是基于原型的,但类的语法更接近传统的面向对象语言。
class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise.`);} }
-
模块化(Modules):通过
import
和export
关键字,支持模块的导入和导出,使得代码组织更加清晰。// 导出 export const myFunction = () => {}; // 导入 import { myFunction } from './myModule';
-
模板字符串(Template literals):允许使用反引号(`)创建字符串,并提供字符串插值功能。
const message = `Hello, ${name}!`;
-
解构赋值(Destructuring assignment):允许从数组或对象中提取数据,并赋值给变量。
const [a, b] = [1, 2]; const { x, y } = { x: 1, y: 2 };
-
let和const:引入了
let
和const
关键字用于声明变量,解决了var
的一些问题,如变量提升和作用域问题。 -
Promise:用于更优雅地处理异步操作,替代了传统的回调函数模式。
-
默认参数(Default parameters):允许在函数定义时为参数设置默认值。
-
展开运算符(Spread operator):允许在函数调用或数组字面量中展开数组或对象。
-
Set和Map:引入了新的数据结构Set和Map,提供了更丰富的集合操作。
ES6的这些新特性极大地推动了JavaScript的发展,使得这门语言更适合大型应用的开发,并且更加现代化和高效。随着现代浏览器的支持,ES6已经成为现代前端开发的标配。
ES与JavaScript的关系
2.let和const的简介
在JavaScript中,let、var 和 const 都是用来声明变量的关键字,但它们之间有几个关键的区别:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>let、const 与 var 的区别</title></head><body><script>// 1.重复声明// 已经存在的变量或常量,又声明了一遍// var 允许重复声明,let、const 不允许// let a = 1;// // ...// let a = 2;// console.log(a);// function func(a) {// let a = 1;// }// func();// 2.变量提升// var 会提升变量的声明到当前作用域的顶部// console.log(a);// console.log(a);// var a = 1;// 相当于// var a;// console.log(a);// a = 1;// console.log(a);// let、const 不存在变量提升// console.log(a);// let a = 1;// 养成良好的编程习惯,对于所有的变量或常量,做到先声明,后使用// 3.暂时性死区// 只要作用域内存在 let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响// let、const 存在暂时性死区// let a = 2;// let b = 1;// function func() {// console.log(b);// // console.log(a);// // let a = 1;// }// func();// 养成良好的编程习惯,对于所有的变量或常量,做到先声明,后使用// 4.window 对象的属性和方法// 全局作用域中,var 声明的变量,通过 function 声明的函数,会自动变成 window 对象的属性或方法// let、const 不会// var/function// var age = 18;// function add() {}// console.log(window.age);// console.log(window.add === add);// let/const// let age = 18;// const add = function () {};// console.log(window.age);// console.log(window.add === add);// 5.块级作用域</script></body>
</html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>let、const 与 var 的区别</title></head><body><script>// 块级作用域// 1.什么是块级作用域// var 没有块级作用域// for (var i = 0; i < 3; i++) {// // console.log(i);// }// console.log(i);// let/const 有块级作用域// for (let i = 0; i < 3; i++) {// // i = i+1// // console.log(i);// }// console.log(i);// 2.作用域链// function func() {// for (let i = 0; i < 3; i++) {// // console.log(i);// }// }// func();// console.log(i);// 作用域链:内层作用域->外层作用域->...->全局作用域// 3.有哪些块级作用域// {}// {// let age = 18;// // console.log(age);// }// console.log(age);// {}// for(){}// while(){}// do{}while()// if(){}// switch(){}// function(){}// const person = {// getAge: function () {}// };</script></body>
</html>
1.作用域(Scope):
var 声明的变量拥有函数作用域(function scope),这意味着如果 var 变量在函数外部声明,它将是一个全局变量;如果在函数内部声明,它只能在那个函数内部被访问。
let 和 const 声明的变量拥有块作用域(block scope),这意味着它们的作用域限定在它们被声明的块(如一个花括号 {} 内部的区域)中。
2.变量提升(Hoisting):
var 声明的变量会被提升到其作用域的顶部,但在初始化之前不能使用,访问未初始化的变量会得到 undefined。
let 和 const 也会被提升,但是它们不允许在声明之前被访问,如果尝试这样做将会导致一个引用错误(ReferenceError)。
3.重复声明(Re-declaration):
在同一个作用域内,var 允许重复声明同一个变量。
let 和 const 不允许在同一个作用域内重复声明同一个变量。
4.重新赋值(Re-assignment):
使用 var 和 let 声明的变量可以被重新赋值。
使用 const 声明的变量必须在声明时初始化,并且一旦被赋值,其引用就不能再被改变。需要注意的是,const 保证的是变量引用的不可变性,而不是变量的值不可变。例如,如果 const 变量引用的是一个对象,那么对象的属性是可以被修改的。
5.window 对象的属性和方法
全局作用域中,var 声明的变量,通过 function 声明的函数,会自动变成 window 对象的属性或方法。let、const 不会
// 2.2.const 声明的常量,允许在不重新赋值的情况下修改它的值
// 基本数据类型
// const sex = 'male';
// sex = 'female'; //会报错
// 引用数据类型
// const person = { username: 'Alex' };
// // person = {};
// person.username = 'ZhangSan'; //通过.直接修改值,而不是复制操作,是可以的。
// console.log(person);
不知道用什么的时候先用const,也就是说不确定需求的时候用const,因为如果需要修改会报错,方便查找。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>const</title></head><body><script>// 1.为什么需要 const// let// let sex = 'male';// // ...// sex = 'female';// console.log(sex);// const// const sex = 'male';// // ...// sex = 'female';// console.log(sex);// const 就是为了那些一旦初始化就不希望重新赋值的情况设计的// 2.const 的注意事项// 2.1.使用 const 声明常量,一旦声明,就必须立即初始化,不能留到以后赋值// const sex;// sex='male'// const sex = 'male';// 2.2.const 声明的常量,允许在不重新赋值的情况下修改它的值// 基本数据类型// const sex = 'male';// sex = 'female';// 引用数据类型// const person = { username: 'Alex' };// // person = {};// person.username = 'ZhangSan';// console.log(person);// 3.什么时候用 const,什么时候用 let// var// for (let i = 0; i < 3; i++) {}// const username = 'Alex';// // ...// username = 'ZhangSan';</script></body>
</html>
以下是这些关键字的简单比较:
var 是ES5及之前版本中的标准声明方式,现在一般不推荐使用,因为它的作用域和提升行为可能会导致代码中的意外行为。
let 是ES6(ECMAScript 2015)中引入的,用于声明块作用域的变量,通常在需要重新赋值的情况下使用。
const 也是ES6中引入的,用于声明块作用域的常量,当你不希望变量的引用改变时使用。
总结来说,现代JavaScript编程中推荐尽可能使用 const,只在变量需要被重新赋值时使用 let。这样做可以提高代码的可读性和可维护性。
3.模版字符串
(1)是什么
模板字符串(Template Literals)是ES6(ECMAScript 2015)中引入的一种新的字符串表示法,它允许开发者以更简单、更直观的方式创建和维护字符串。模板字符串使用反引号(`)而不是单引号(')或双引号(")来定义字符串。
以下是模板字符串的一些主要特点和用法:
-
多行字符串:模板字符串可以跨越多行,不需要使用反斜杠(\)来换行。
const multiLineString = `This is a string that spans multiple lines.`;
-
字符串插值:可以在模板字符串中嵌入变量和表达式,这些变量和表达式会被解析并转换为字符串的一部分。插入变量或表达式时,需要使用
${expression}
的语法。const name = 'Alice'; const age = 30; const greeting = `Hello, my name is ${name} and I am${age} years old.`;
-
标签模板(Tagged Templates):模板字符串可以与一个函数一起使用,这种用法称为标签模板。函数的第一个参数是一个字符串数组,其余的参数对应于模板字符串中的插值表达式。
function myTag(strings, ...values) {// strings 是一个包含模板字符串中静态部分的数组// values 是一个包含模板字符串中动态部分(即插值表达式)的数组return strings.reduce((acc, str, i) => {return acc + str + (values[i] || '');}, ''); }const result = myTag`Hello ${name}, how are you?`;
-
原始字符串:模板字符串可以创建原始字符串,即字符串中的转义序列不会被特殊处理。这可以通过在模板字符串前加上
String.raw
来实现。const rawString = String.raw`This is a raw string: \n and \t are not special characters.`;
模板字符串因其灵活性和易读性,在现代JavaScript开发中被广泛使用。它们提供了一种简洁的方式来构建包含变量和表达式的大型字符串,而无需使用字符串连接或格式化函数。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>模板字符串是什么</title></head><body><script>// 1.认识模板字符串// const username1 = 'alex';// // "alex"// const username2 = `alex`;// console.log(username1, username2, username1 === username2);// 2.模板字符串与一般字符串的区别const person = {username: 'Alex',age: 18,sex: 'male'};// const info =// '我的名字是:' +// person.username +// ', 性别:' +// person.sex +// ', 今年' +// person.age +// '岁了';// console.log(info);// const info = `我的名字是:${person.username}, 性别:${person.sex}, 今年${person.age}岁了`;// console.log(info);// 和其他东西一起使用的时候,使用模板字符串,方便注入// 其他情况下使用模板字符串或一般字符串都行</script></body>
</html>
(2)模版字符串的注意事项
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>模板字符串的注意事项</title></head><body><script>// 1.输出多行字符串// 一般字符串// const info = '第1行\n第2行';// console.log(info);// 模板字符串// const info = `第1行\n第2行`;// const info = `第1行// 第2行`;// console.log(info);// 模板字符串中,所有的空格、换行或缩进都会被保留在输出之中// 2.输出 ` 和 \ 等特殊字符// const info = `'\`\\`;// console.log(info);// 3.模板字符串的注入// ${}// const username = 'alex';// const person = { age: 18, sex: 'male' };// const getSex = function (sex) {// return sex === 'male' ? '男' : '女';// };// const info = `${username}, ${person.age + 2}, ${getSex(person.sex)}`;// console.log(info);// 只要最终可以得出一个值的就可以通过 ${} 注入到模板字符串中</script></body>
</html>
(3) 应用
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>模板字符串的应用</title><style>body {padding: 50px 0 0 300px;font-size: 22px;}ul {padding: 0;}p {margin-bottom: 10px;}</style></head><body><p>学生信息表</p><ul id="list"><li style="list-style: none;">信息加载中……</li></ul><script>// 数据const students = [{username: 'Alex',age: 18,sex: 'male'},{username: 'ZhangSan',age: 28,sex: 'male'},{username: 'LiSi',age: 20,sex: 'female'}];const list = document.getElementById('list');let html = '';for (let i = 0; i < students.length; i++) {html += `<li>我的名字是:${students[i].username},${students[i].sex},${students[i].age}</li>`;}// console.log(html);list.innerHTML = html;</script></body>
</html>
4.箭头函数
(1)是什么
<script>// 1.认识箭头函数// const add = (x, y) => {// return x + y;// };// console.log(add(1, 1));// 2.箭头函数的结构// const/let 函数名 = 参数 => 函数体// 3.如何将一般函数改写成箭头函数// 声明形式// function add() {}// 声明形式->函数表达式形式// const add = function () {};// 函数表达式形式->箭头函数const add = () => {};</script>
(2)注意事项
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>箭头函数的注意事项</title></head><body><script>// 1.单个参数// 单个参数可以省略圆括号// const add = x => {// return x + 1;// };// console.log(add(1));// 无参数或多个参数不能省略圆括号// const add = () => {// return 1 + 1;// };// const add = (x, y) => {// return x + y;// };// console.log(add(1, 1));// 2.单行函数体// 单行函数体可以同时省略 {} 和 return// const add = (x, y) => {// return x + y;// };// const add = (x, y) => x + y;// console.log(add(1, 1));// 多行函数体不能再化简了// const add = (x, y) => {// const sum = x + y;// return sum;// };// 3.单行对象// const add = (x, y) => {// return {// value: x + y// };// };// const add = (x, y) => ({// value: x + y// });// 如果箭头函数返回单行对象,可以在 {} 外面加上 (),让浏览器不再认为那是函数体的花括号// const add = (x, y) => [x, y];// console.log(add(1, 1));</script></body>
</html>
(3)非箭头函数中this指向
在JavaScript中,this
关键字的行为取决于函数的调用方式。在非箭头函数(即传统的函数表达式或函数声明)中,this
的指向通常不是在函数定义时确定的,而是在函数被调用时确定的。以下是几种常见的函数调用场景及其对应的this
指向:
-
作为对象的方法调用: 当一个函数作为对象的方法被调用时,
this
指向该对象。const obj = {method: function() {return this; // 这里的this指向obj对象} }; obj.method(); // 返回obj对象
-
独立函数调用: 当函数不是作为对象的方法调用时(即独立调用),在非严格模式下,
this
指向全局对象(在浏览器中通常是window
对象),而在严格模式下,this
是undefined
。function func() {return this; // 非严格模式:指向全局对象,严格模式:undefined } func(); // 非严格模式返回全局对象,严格模式抛出TypeError
-
构造函数调用: 当使用
new
关键字调用一个函数时,this
指向新创建的对象。function Constructor() {this.prop = 'value'; // 这里的this指向新创建的对象 } const instance = new Constructor(); instance.prop; // 'value'
-
使用
call
、apply
或bind
方法调用:Function.prototype.call
、Function.prototype.apply
和Function.prototype.bind
方法可以显式地设置函数调用时this
的值。function func() {return this; } const context = { value: 'custom context' }; func.call(context); // 返回{ value: 'custom context' } func.apply(context); // 同上 const boundFunc = func.bind(context); boundFunc(); // 同上
-
作为DOM事件处理函数: 当函数作为DOM事件处理程序被调用时,
this
通常指向触发事件的元素。document.getElementById('button').addEventListener('click', function() {console.log(this); // 指向button元素 });
理解this
的工作原理对于编写JavaScript代码至关重要,因为它经常会导致混淆和错误。记住,this
的值是在函数被调用时确定的,而不是在函数定义时。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>非箭头函数中的 this 指向</title></head><body><script>// 1.全局作用域中的 this 指向// console.log(this); // window// 2.一般函数(非箭头函数)中的 this 指向// 'use strict';function add() {console.log(this);}// 严格模式就指向 undefined// add(); // undefined->window(非严格模式下)// window.add();// const calc = {// add: add// };// // calc.add(); // calc// const adder = calc.add;// adder(); // undefined->window(非严格模式下)// document.onclick = function () {// console.log(this);// };// document.onclick();// function Person(username) {// this.username = username;// console.log(this);// }// const p = new Person('Alex');// 只有在函数调用的时候 this 指向才确定,不调用的时候,不知道指向谁// this 指向和函数在哪儿调用没关系,只和谁在调用有关// 没有具体调用对象的话,this 指向 undefined,在非严格模式下,转向 window</script></body>
</html>
(4)箭头函数中this指向
箭头函数(Arrow Functions)在JavaScript中的this
绑定规则与传统的函数表达式或函数声明不同。箭头函数不绑定自己的this
,而是继承其所在上下文的this
值。这意味着箭头函数中的this
值由其外围最近一层非箭头函数决定。
以下是箭头函数中this
指向的一些关键点:
-
继承上下文的
this
: 箭头函数不定义自己的this
值,它会捕获其所在上下文的this
值,即定义时的词法作用域中的this
。const obj = {method: function() {setTimeout(() => {console.log(this); // 这里的this指向obj对象}, 1000);} }; obj.method(); // 打印obj对象
-
this
不会随调用方式改变: 由于箭头函数不绑定自己的this
,所以即使使用call
、apply
或bind
方法,也无法改变箭头函数中的this
值。const arrowFunc = () => this; const context = { value: 'custom context' }; arrowFunc.call(context); // 这里的this不会改变,仍然指向定义时的上下文
-
没有自己的
arguments
对象: 箭头函数没有自己的arguments
对象,但是可以访问外围函数的arguments
对象。const arrowFunc = () => arguments[0]; function outerFunc() {return arrowFunc(5); // 这里的arguments是outerFunc的 } outerFunc(10); // 返回10,因为箭头函数使用的是outerFunc的arguments
-
不能用作构造函数: 由于箭头函数没有自己的
this
,因此它们不能用作构造函数,尝试使用new
关键字会抛出错误。const ArrowFunc = () => {}; const instance = new ArrowFunc(); // 抛出TypeError
-
没有
prototype
属性: 箭头函数没有prototype
属性,因此也不能使用new.target
来检测函数是否被用作构造函数。
理解箭头函数的this
绑定规则对于避免常见的JavaScript错误非常有帮助,尤其是在处理异步代码和回调函数时。由于箭头函数的this
值是固定的,它们在处理事件处理器和定时器时特别有用,因为这些情况下传统函数的this
值可能会意外地改变。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>箭头函数中的 this 指向</title></head><body><script>// 1.箭头函数中的 this 指向// 箭头函数没有自己的 this// const calc = {// add: () => {// console.log(this);// }// };// calc.add(); // window// 2.练习// 'use strict';const calc = {add: function () {// thisconst adder = () => {console.log(this);};adder();}};// calc.add(); // calcconst addFn = calc.add;addFn(); // undefined->window</script></body>
</html>
(5)不适用箭头函数的场景
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>不适用箭头函数的场景</title></head><body><script>// 1.作为构造函数// 箭头函数没有 this// const Person = () => {};// new Person();// 2.需要 this 指向调用对象的时候// document.onclick = function () {// console.log(this);// };// document.addEventListener(// 'click',// () => {// console.log(this); //window// },// false// );// 3.需要使用 arguments 的时候// 箭头函数中没有 arguments// function add() {// console.log(arguments);// }// add(1, 2,3,4,5);// const add = () => console.log(arguments);// add();// 剩余参数</script></body>
</html>
(6)箭头函数的应用
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>箭头函数的应用</title><style>body {padding: 50px 0 0 250px;font-size: 30px;}#btn {width: 100px;height: 100px;margin-right: 20px;font-size: 30px;cursor: pointer;}</style></head><body><button id="btn">开始</button><span id="result">0</span><script>const btn = document.getElementById('btn');const result = document.getElementById('result');// const timer = {// time: 0,// start: function () {// // this// var that = this;// // var self = this;// btn.addEventListener(// 'click',// function () {// setInterval(function () {// console.log(this);// // this.time++;// // result.innerHTML = this.time;// that.time++;// result.innerHTML = that.time;// }, 1000);// },// false// );// }// };const timer = {time: 0,start: function () {// thisbtn.addEventListener('click',() => {// thissetInterval(() => {console.log(this);this.time++;result.innerHTML = this.time;}, 1000);},false);}};timer.start();</script></body>
</html>
相关文章:

前端学习之ES6+
1.ES6是什么 ES6,全称是ECMAScript 6,是JavaScript语言的下一代标准,由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015,从这个版本开始,ECMA组织决定每年发布一个新的ECMAScript版本,以使J…...

yolov10的几种权重文件
1.官方提供的几种模型权重文件 YOLOv10官网提供的权重文件是训练好的网络各层的权值,这些权值是通过训练集训练出来的。一旦网络训练完成,应用时只需加载这些权值,而不再需要原始的训练集。这意味着,如果你已经配置好了环境&am…...

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…...

C++类和对象 (下)
文章目录 前言一. 再探构造函数初始化列表特性总结练习 二. 类型转换2.1 隐式类型转换2.2 临时对象具有常性2.3 explicit关键字2.4 多参数类型转化 三. static成员概念特性练习 四. 友元概念特性 五. 内部类概念特性 六. 匿名对象概念特性 七. 对象拷贝时的编译器优化END 前言 …...

网络层5——IPV6
目录 一、IPv6 vs IPv4 1、对IPv6主要变化 2、IPv4 vs IPv6 二、IPv6基本首部 1、版本——4位 2、通信量类——8位 3、流标号——20位 4、有效载荷长度——16位 5、下一个首部——8位 6、跳数限制——8位 7、源 、 目的地址——128位 8、扩展首部 三、IPv6地址 1…...

【wpf】ResourceDictionary 字典资源的用法
如果你的字典资源是写在启动项目的App.xaml里 <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source"pack://application:,,,/YourNonStartupProject;component/Resources/SharedResour…...

Foliate:沉浸式阅读!!!
项目简介 Foliate 是一款开源的电子书阅读器,专为现代操作系统设计,提供了优雅且实用的阅读体验。它支持多种电子书格式,包括 EPUB、Mobipocket、Kindle、FB2、CBZ 和 PDF,让用户能够以分页或滚动模式阅读。Foliate 允许用户自定义…...

【excel基本操作-sumif绝对引用和相对引用
低量级数据的存储 复杂且无法优化的数据报表 怎么学excel? 一、输入与输出 二、计算与处理 三、可视化 四、连接匹配与自动化 excel操作笔记 打开表格第一步筛选 所以筛选的快捷键:shiftctrll 排序:多列排序 开始-排序与筛选-自定义排序-设置关键字添…...

word及Excel常见功能使用
最近一直在整理需规文档及表格,Word及Excel需要熟练使用。 Word文档 清除复制过来的样式 当复制文字时,一般会带着字体样式,此时可选中该文字 并使用 ctrlshiftN 快捷键进行清除。 批注 插入->批注,选中文本 点击“批注”…...

网页中的某个元素高度突然无法设置
做网页时本来一个div的高度好好的,结果代码打着打着突然发现有个div的高度变的很小,把我很多在这个div里的元素给搞的看不见了。 找了好久的原因最后发现是这个div的结束标签</div>不小心被我删了,之后把这个</div>给补上就好了。...

springboot给不同用户动态定制请求结果思路
我有个朋友在公司遇到一个需求:某个接口,面向不同的用户返回的字段数不一样字段数。 我举例两种场景并且都给一个方案他,同时也供大家参考。 场景1: 接口返回的是List 或者直接就是entity,且entity对应某张数据表&…...

【网络】HTTP(超文本传输协议)详解
目录 引言一、HTTP的基本概念1.1 什么是HTTP?1.2 HTTP的工作流程1.3 HTTP工作流程图 二、HTTP请求与响应2.1 HTTP请求格式2.2 HTTP响应格式 三、常见的HTTP状态码3.1 其他状态码示例 四、HTTP版本的演变4.1 HTTP/1.04.2 HTTP/1.14.3 HTTP/24.4 HTTP/3 五、HTTP的安全…...

poll()方法和remove()方法的区别是什么?
在Java的集合框架中,poll()方法和remove()方法是两个常用于从队列(Queue)头部获取并移除元素的方法。尽管它们的作用相似,但在行为细节和适用场景上存在显著的区别。以下是对这两个方法区别的详细阐述,旨在帮助开发者更…...

小程序跳转另一个小程序
1.配置要跳转的appid和小程序页面路径 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//develop开发版;trial体验版;release正式版envVersion: release, success(res) {// 打开成功console.log("跳转小程序成功&…...

介绍一下数组(c基础)(详细版)
c初期,记住规则,用规则。 我只是介绍规则。(有smart版) 数组 arr 看成一个集合但元素有次序了。 如何计算数组的大小-CSDN博客 简单讲解一下strlen与sizeof(c基础)-CSDN博客 arr[n] { }; [ ] 下标引…...

工业主板在汽车制造中的应用
工业主板在汽车制造中的应用非常广泛,主要得益于其高稳定性、高集成性、以及强大的计算和处理能力。以下是对工业主板在汽车制造中应用的详细分析: 一、应用场景 自动驾驶车辆: 工业主板作为自动驾驶车辆的核心计算平台,负责处…...

博弈论(所有情况最优解)——课堂笔记
博弈论(所有情况最优解)——课堂笔记|【博弈论】分割数游戏-CSDN博客https://blog.csdn.net/back_room/article/details/143464453?spm=1001.2014.3001.5501【博弈论】拍卖土地-CSDN博客...

深入提升Python编程能力的全方位指南
Python作为一种强大且灵活的编程语言,广泛应用于数据科学、机器学习、网络开发、自动化等领域。提升Python编程技术需要结合多方面的知识和技能。本文将详细介绍通过掌握核心技术、项目实践和代码示例来系统提升Python编程技能的方法。 一、掌握基础和高级Python特…...

如何使用 Python 语言的正则表达式进行网页数据的爬取?
以下是使用 Python 语言的正则表达式进行网页数据爬取的一般步骤: 一、安装必要的库: requests:用于发送 HTTP 请求获取网页内容。可以使用 pip install requests 命令进行安装。re:Python 的内置正则表达式库,用于对…...

剑指offer第七、八天
1.矩阵中的路径 class Solution {int n, m;int dx[4]{ 1,-1,0,0 };int dy[4]{ 0,0,1,-1 };bool dfs(int i, int j, vector<vector<char> >mat,vector<vector<bool> >vis, int u, const char* str){if (u strlen(str)-1){//刚开始这里我用的是strlen(…...

有哪些常见的方法可以评估中断处理能力?
以下是一些常见的评估中断处理能力的方法: 基准测试(Benchmarking) 定义和原理:基准测试是通过运行一系列标准化的测试程序来衡量系统性能的方法。对于中断处理能力评估,可以使用专门设计的中断基准测试软件。这些软件会模拟各种中断场景,如不同频率、不同优先级的中断请…...

Android GPU纹理数据拷贝
在 Android 开发中读取纹理数据有以下几种方法: glReadPixelsImageReaderPBO(Pixel BufferObject) HardwareBuffer 1. glReadPixels glReadPixels 是 OpenGL ES 的 API,通常用于从帧缓冲区中读取像素数据,OpenGL ES…...

浏览器端直播推流实现——系统篇
浏览器端用vue3.5.12写,服务器端用php8.2+swoole5.1.4+thinkphp8写,流媒体服务器使用nginx-rtmp模块,拉流App端用uniapp(其他端各自实现吧,这里以App端为例) 操作系统基于opencloudos8,还用到了ffmpeg,该安装就安装,这里不啰嗦安装步骤 以下是vue的代码,比较简陋,各…...

HDFS和HBase跨集群数据迁移 源码
HDFS集群间数据迁移(hadoop distcp) hadoop distcp \ -pb \ hdfs://XX.14.36.205:8020/user/hive/warehouse/dp_fk_tmp.db/ph_cash_order \ hdfs://XX.18.32.21:8020/user/hive/warehouse/dp_fksx_mart.db/HBase集群间数据(hbase ExportSnap…...

opencv实时弯道检测
项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…...

计算机网络综合题
IP数据报的划分 CRC差错检测 冗余码的计算 因此,余数是1110,传输的数为11010110111110。在传输过程中最后两位变成o,接收端能够发现,因为11010110111110除以10011余数不为0。 子网划分 暴力求解法 (定长子网划分大量…...

【ARM Linux 系统稳定性分析入门及渐进 1.2 -- Crash 工具依赖内容】
请阅读:【Linux 维测及Crash使用专栏】 文章目录 Prerequisites1. 内核对象文件2. 内存镜像3. 平台处理器类型4. Linux 内核版本 Prerequisites crash 工具需要依赖下面的内容: 1. 内核对象文件 vmlinux 文件:需要一个 vmlinux 内核对象文件ÿ…...

「C/C++」C++标准库 之 #include<exception> 异常处理库
✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

YOLOv7-0.1部分代码阅读笔记-experimental.py
experimental.py models\experimental.py 目录 experimental.py 1.所需的库和模块 2.class CrossConv(nn.Module): 3.class Sum(nn.Module): 4.class MixConv2d(nn.Module): 5.class Ensemble(nn.ModuleList): 6.def attempt_load(weights, map_locationNone): 1…...

【大数据学习 | kafka】简述kafka的消费者consumer
1. 消费者的结构 能够在kafka中拉取数据进行消费的组件或者程序都叫做消费者。 这里面要涉及到一个动作叫做拉取。 首先我们要知道kafka这个消息队列主要的功能就是起到缓冲的作用,比如flume采集数据然后交给spark或者flink进行计算分析,但是flume采用的…...