JavaScript 基础通关

快速熟悉 JavaScript 的基础语法,比较高级的比如事件放在后面的笔记中。

JavaScript

1. JavaScript 介绍

1.1 JavaScript 基本介绍

  1. JavaScript 是一门运行在客户端(浏览器)的编程语言,实现人机交互的效果。
  2. 实现网页特效、表单验证、数据交互的效果、服务端编程(node.js)

权威网站:https://developer.mozilla.org/zh-CN/

1.2. JavaScript 的书写位置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.2.1 内部 JavaScript
  1. 直接写在 HTML 文件中,用 <scrpit> 包裹住
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>alert('弹出框')</script>
</body>
</html>

# 1.2.2 外部 JavaScript

  1. 代码写在以.js结尾的文件里
  2. 语法:通过script标签,引入到html页面中
<body><script src=""></script>
</body>
1.2.3 内联 JavaScript

现阶段基本不会使用

<body><button ontclick="alert('你好')"></button>    
<body>

1.3 JavaScript 书写格式

1.3.1 结束符
  • 使用英文的 ; 作为语句的结尾
  • 实际开发中可写可不写,浏览器可以自行推断语句的结束位置
  • 在实际开发中越来越多的人主张省略结束符
  • 为了风格统一,结束符要么都写要么都不写

1.4 输入和输出的语法

写出常见的输入和输出语法

1.4.1 输入语法
// 网页中显示
document.write('我是 div 标签')
document.write('<h1>我是一个标题</h1>')
// 网页弹出框
alert('弹出的内容')
// 控制台内容
console.log('弹出到控制台的内容')
1.4.2 输出语法
promopt('请输入你的姓名:')

作用:显示一个对话框,对话框中包含一条文字信息用来提示用户输入文字。

1.5 字面量

在计算机科学中,字面量(literal)是在计算机中描述 事/物
比如:

  • 我们工资是: 1000 此时 1000 就是 数字字面量
  • 黑马程序员’ 字符串字面量
  • 还有接下来我们学的 [] 数组字面量 {} 对象字面量 等等

2. 变量

2.1 变量的基本介绍

问题1:用户输入的数据如何存储起来?

变量就是计算机存储数据的容器,但需要注意的是变量不是数据本身,它们仅仅是存储数据的容器。

2.2 变量的基本使用(重点)

<script>// 声明变量let age;// 赋值age = 18;// 更新变量的值age = 19;// 输出变量的值alert(age);
</script>
<script>let age = 18, uname = 'Tom';
</script>

2.3 变量的本质

内存是计算机中存储数据的地方,变量是程序在内存中申请的一块用来存放数据的小空间。

2.4 变量命名规则与规范

  1. 规则
    1. 不能使用关键字,即有特殊含义的字符
    2. 只能使用下划线、字母、数字和 $ 符号组成,且数字不能用作开头
    3. 字母严格区分大小写
  2. 规范
    1. 起名要有意义
    2. 遵循小驼峰命名

2.5 拓展:let 与 var

在较老的 JavaScript 的版本中,使用关键字 var 来声明变量,而不是使用 let

但在现在开发中一般使用 let 我们可能在老版的程序中看到它

let 可以解决 var 的一些问题

下面列举一些 var 声明不合理的地方

  • 可以先使用再声明
  • 声名过的变量可以重复声明
  • 无法实现变量提升、全局变量、没有块级作用域

2.6 数组

let 数组名 = [数据1, 数据2, 数据3......];
  • 数组是按照顺序存储的,每个数据都有自己的编号
  • 计算机中的编号从 0 开始,数组下标的索引也是从 0 开始
  • 数组可以存储任意数据类型的数据

3. 常量

使用 const 声明的变量称为常量,当你确定这个常量设置了之后就不会再改变的时候,就可以通过 const 声明。

const G = 9.8;
alert(G);

常量是不允许重新被赋值的:

<script>const X = 1;X = 2;alert(X);
</script>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4. 数据类型

JavaScript 中的数据类型分为两大类

  • 基本数据类型
  • 应用数据类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.1 数字类型(Number)

数字可以有很多操作,比如加减乘除等等,所以数字类型经常和算数运算符一起出现

案例:计算圆形的面积
  let r = prompt('请输入圆的半径');const PI = 3.14;alert('圆形的面积为' + PI * r * r);

4.2 字符串类型(String)

通过单引号和双引号包裹的数据都叫字符串,单引号和双引号包裹没有本质的区别,但推荐使用单引号。

使用 + 可以实现两个字符串的拼接(和 Java 相同)。

因为这种拼接方法比较麻烦,衍生出了模板字符串

document.write(`大家好,我叫${name}, 今年${age});

4.3 布尔类型(Boolean)

标识肯定或者否定的是布尔类型,有两个固定的值 true 和 false

4.4 未定义类型(Undefined)

未定义是一个比较特殊的类型,只有一个值是 undefined,在只声明变量但是没有给变量赋值的时候变量的默认值就是 undefined

使用的场景比如,在开发中声明一个变量,等待数据传输过来,通过这个数据是否为未定义类型就可以判断出数据有没有传入。

4.5 空类型(null)

标识一个空的含义的特殊值

这里需要搞懂的是 null 和 undefined 的区别:null 是有值但是值为空,undefined 的意思是变量没有赋值

4.6 检测数据类型

  1. 通过控制台的颜色来判断数据类,比如布尔类型为蓝色,字符串和 undefined 为灰色
  2. 通过 typeof 关键字来判断:typeof age

5. 类型转化

5.1 为什么要进行类型转化呢

JavaScript 是一门弱类型语言,在赋值之前无法判断这个变量是哪种数据类型

这时候,我们使用表单或者 prompt 获取过来的数据默认是字符串类型的,我们如果相对其中的数字进行运算可能会出现如下的效果

console.log('100' + '120');//结果为 100120

这时候就需要转化数据类型

5.2 隐式转换

某些运算符被执行的时候,系统内部自动的将数据类型进行转化呢,这种转化被称为隐式转换

规则

  1. 当 + 两边只要有字符串的时候,就自动将另一边转为字符串
  2. 除了 + 以外的算术运算符会把数据类型转化为数字类型

但是转化的意义不太明确,常用的就是拼接字符串

5.3 显示转化

为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。

显示转化可以通过自己写代码告诉系统转化的数据类型

let a = prompt('请输入一个数字');
let b = prompt('请输入另一个数字');
a = parseInt(a);
b = parseInt(b);
alert(a+b);
  • 转换为数字型:

Number(数据)

parseInt(数据)

只保留整数部分

parseFloat(数据)

可以保留小数部分

如果字符串中有非数字,转化之后的结果就是 NaN(Not a Number),这也是一个 number 类型的代表非数字

  • 转换为字符串类型

String(数据)

变量.toString()

运算符与语句

1. 运算符

1.1 赋值运算符

对变量进行赋值的运算符称为赋值运算符

除了等号以外常见的赋值运算符有:

+= -= *= /= %= ,与 Java 中的含义相同

1.2 一元运算符

根据所需要的表达式的个数,分为一元运算符、二元运算符和三元运算符

比如 + 两边需要两个表达式,就是二元运算符

常见的一元运算符有:

自增

  • 符号 ++
  • 作用:让变量的值加一

同理,-- 是自减运算符

与 Java 相同,这个自增也分为前置自增和后置自增

1.3 比较运算符

1.4 逻辑运算符

和 Java 相同,分为与、或、非:&& ||!

1.5 运算符优先级

2. 语句

2.1 表达式和语句

表达式:表达式可以被求值,写在赋值语句的右侧

语句:语句不一定有值,有些语句就不能用作赋值

2.2 分支语句

分支语句让我们可以有选择性的执行某些语句

有三种实现的方式:

  1. if 分支语句

if 语句有单分支、双分支和多分支

// 单分支
if (条件) {语句;
}
// 双分支
if(条件) {语句;
} else {语句;
}
// 多分支
if (条件1) {语句;
} else if (条件2) {语句;
} 
......
else {语句;
}
  1. 三元运算符

条件 ? 满足条件执行的代码 : 不满足条件执行的代码

一般用来取值

  1. switch 分支语句

因为 JavaScript 是弱类型的语言,所以这里比较的是全等 === 即类型和内容完全相同才会判断相同,而 Java 不用考虑这些

switch () {case1:代码1;break;case2:代码1;break;default:代码 n;break;
}

3.循环语句

3.1 while 循环

循环就是重复执行某些操作,while 就是在什么什么期间的意思,就是在满足条件的区间,重复执行某些代码

while (循环条件) {需要重复执行的代码;
}

3.2 for 循环

for (变量起始值; 终止条件; 变量变化量) {循环体;
}

退出循环

  1. continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
  2. break 退出整个for循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用

4. 数组

4.1 基本介绍

数组是一种可以按顺序保存数据的数据类型

声明语法:

let 数组名 = [数据1, 数据2, ..., 数据 n];
这样就可以构造出一个数组,数组中的数据是是按顺序保存的,每个数据都有自己的编号

取值语法:

数组名[下标];与 Java 不同的是这个数组可以存储多种数据类型,取出来的是什么类型的就根据这个类型的特点访问

数组遍历:

for (let i = 0; i < 数组名.length; i++) {数组名[i];
}

4.2 操作数组

数组也是一种数据结构,即存储数据的方式,而对于数据结构无非就是增删改查,这里来看一下 JavaScript 中操控数组的方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.2.1 操作数组 - 新增
  1. arr.push()
  • 语法 : arr.push()
  • 向数组中添加新元素到数组的末尾,返回数组的新长度
  • 可以一次添加多个数组
let arr = ['red', 'green'];
arr.push('pink');
console.log(arr);
  1. arr.unshift
  • 语法:arr.unshift()
  • 将一个或者多个元素添加到数组的开头,并返回该数组的新长度
let arr = ['red', 'green'];
arr.unshift('pink', 'yellow');
console.log(arr); // ['pink', 'yellow', 'red', 'green'];
4.2.2 操作数组 - 删除

与上面的新增相同也是有删除最后一个元素和删除第一个元素

  1. 删除最后一个元素:arr.pop();
  2. 删除第一个元素:arr.shift;
  3. 删除多个元素:arr.splice(start, deleteCount);
    从 start 开始,删除 deleteCount 个元素

函数

1. 函数

1.1 函数的使用

函数可以实现代码的复用,提高开发效率

  • 函数声明语法

    function 函数名() {函数体;
    }
    

函数命名规范:

  1. 和变量名基本一致
  2. 尽量使用小驼峰式命名法
  3. 前缀应该是动词

  • 函数的调用语法
函数名()

我们曾经使用的 alert() parseInt() 等后面带括号的都是函数的调用

1.2 函数传参

function 函数名(参数列表) {函数体;
}
  1. 形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
  2. 实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数) Ø
  3. 形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值
  4. 开发中尽量保持形参和实参个数一致
  5. 我们曾经使用过的 alert(‘打印’), parseInt(‘11’), Number(‘11’) 本质上都是函数调用
1.2.1 参数默认值

形参如果没有赋值的话,默认值为 undefined 回顾前面的知识,如果我们使用这个 undefined 和另一个 undefined相加得到的结果为 NaN

我们可以在定义函数的时候给一个初始值

function add(x = 0, y = 0) {alert(x + y);
}

1.3 函数返回值

我们在函数执行完特定的任务以后,可以让函数把结果交给我们

我们前面接触的很多函数都有返回值,比如 prompt()parseInt()等等,只是这些函数是 JavaScript 内置的,可以直接调用

调用方式

function getSum(x, y) {return x + y;
}
let num = getSum(10, 20);
document.write(num);

1.4 作用域

通常来说一段程序的代码中用到的名字不总是有效的,而限定这个名字的可用性的区域就是作用域,它提高了程序逻辑的局部性,减少了起名冲突。

这里有一个坑,就是函数内部变量没有声明,直接进行赋值,会当作全局变量来看,但是强烈不推荐这样写

1.5 匿名函数

1.5.1 函数表达式

将匿名函数直接赋值给一个变量,并且通过变量名来进行调用,将这个称为函数表达式:

let fn = function() {函数体;
}
1.5.2 立即执行函数
(function({console.log(11)}))();

对象

1. 对象

1.1 什么是对象?

  • 对象是 JavaScript 中的一个数据类型
  • 可以理解为一个无序的数据集合,注意数组是有序的数据集合
  • 用来描述某个事物的信息(属性和行为)
    • 静态特征
    • 动态行为

1.2 对象属性使用

// 对象声明语法
let 对象名 = {属性名: 属性值,方法名: 函数,
};
let 对象名 = new Object();

对象属性举例:

let person = {uname: 'Tom',age: 18,gender: '男',
}

对于数据结构还是无非增删改查

// 查
let person = {name: 'Tom',age: 18,gender: '男',
}
console.log(person.name);
// 改
person.gender = '女';
// 增
person.address = '山东';
// 删
delete person.gender;

对于查还有另外一种写法,比如我们有一个属性命名为 user-name 这时候在使用 对象.属性的方式就无法正常的调用了,这时候可以采取以下的方式

let person = {'user-name': 'Tom',age: 18,gender: '男'
}
console.log(person['user-name'])

这种方式也可以作用于正常的属性:

console.log(person['age']);

遍历对象属性:

let obj = {uname: 'Tom',gender: '男',age: 18
}
for(let k in obj) {document.write(k + ':' + obj[k]);document.write('<br>')
}

显示效果:

1.3 对象中的方法

数据的行为性的信息称为方法,一般是动词性质的,它的本质就是函数

  1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
  2. 多个属性之间使用英文 , 分隔
  3. 方法是依附在对象中的函数
  4. 方法名可以使用 “” 或 ‘’,一般情况下省略,除非名称遇到特殊符号如空格、中横线
let person  = {name: 'Tom';sayHello: function() {document.write('Hello World');}
}
person.sayHello();

1.4 JavaScript 内置对象

是 JavaScript 内部提供的对象,包含各种属性和方法提供给开发者使用

1.4.1 内置对象 Math

这是 JavaScript 提供的一个数学对象,提供了一系列数学运算方法

JavaScript 参考手册:https://www.w3school.com.cn/jsref/index.asp

Math 对象提供的常用方法:

Web API

1. Web API 基本认知

1.1 作用和分类

作用:就是使用 JS 去操作 html 和浏览器

分类:DOM(文档对象模型)、BOM(浏览器对象模型)

2. DOM

2.1 DOM 基本介绍

文档对象模型,是用来呈现以及于任意 HTM 或 XML 文档交互的 API,可以操控网页内容

DOM 树:将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树,可以直观的体现标签于标签的关系

DOM 对象:浏览器根据 HTML 标签生成的一个 JS 对象,这个就是 DOM 对象

  • 对象就有属性和方法
  • DOM 的核心思想就是把网页内容当作对象来处理
  • document 也是一个对象,所以我们前面能够通过 document.write() 方法来向网页中书写内容

2.2 获取 DOM 元素

2.2.1 通过 CSS 选择器来获取
  1. 选择匹配的第一个元素

    语法:document.querySelector('css 选择器')
    参数:包含一个或多个有效的 CSS 选择器 字符串
    返回值:CSS 选择器匹配的第一个元素,一个 HtmlElement 对象

  2. 选择匹配的多个元素

    语法:document.querySelectorAll('css 选择器')

    参数与上面相同,但是返回值是 CSS 选择器匹配的 Node List 对象集合

    哪怕是只有一个元素获取过来的也是一个伪数组,需要通过 for 循环来获取对象

2.2.2 其他获取方式(了解)

3. 操作元素内容

3.1 innerText

修改标签内容的一种方式,将文本内容更新到任意标签的位置,但是里面的标签内容不会被解析,是纯文本

3.2 innerHtml

和上面唯一的区别是会解析 HTML 标签

4. 操作元素属性

4.1 操作元素常用属性

可以通过 JS 来修改和设置标签元素的属性,比如通过 src 更换图片

最常见的属性比如 href title src 等

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><img src="./img/ai01.png" alt=""><script>function getRandom(N, M) {return Math.floor(Math.random()*(M - N + 1)) + N;}const random = getRandom(1, 6);const img = document.querySelector('img');img.src = `./img/ai0${random}.png`</script>
</body>
</html>

4.2 操控元素的样式属性

4.21. 通过 style 属性来修改
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {background-image: url(./img/ai01.png);}</style>
</head>
<body><script>let body = document.querySelector('body');function getRandom(N, M) {return Math.floor(Math.random()*(M - N + 1)) + N;}const random = getRandom(1, 6);body.style.backgroundImage = `url(./img/ai0${random}.png)`</script>
</body>
</html>
4.2.2 通过操作类型操作 CSS
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 300px;height: 300px;background-color: red;}.box {width: 200px;height: 200px;}</style>
</head>
<body><div></div>
</body>
<script>let div = document.querySelector('div');div.className = 'box';
</script>
</html>
4.2.3 通过 classList 来操控
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=`, initial-scale=1.0"><title>Document</title><style>.box {width: 200px;height: 200px;background-color: red;}.active {width: 300px;height: 300px;background-color: yellow;}</style>
</head>
<body><div class="box"></div><script>let box = document.querySelector('.box');// 添加类box.classList.add('active');// 移除类box.classList.remove('active');// 切换类:如果有类就切换、没有类就删除box.classList.toggle('active');</script>
</body>
</html>

4.3 操控表单元素属性

表单很多情况,也需要修改属性,比如输入密码的时候点击眼睛图标可以看到密码,本质上是把表单属性变为文本框

正常的有属性有取值的,跟其他的标签属性的设置没有任何区别,其他的按照下面的来

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.4 自定义属性

标准属性:标签自带的属性,可以直接使用

自定义属性:H5 之后的新方式,可以为标签添加自定义的属性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div data-id="1", data-spm="不知道"></div><div data-id="2"></div><div data-id="3"></div><script>let div = document.querySelector('div');console.log(div.dataset.id);console.log(div.dataset.spm);</script>
</body>
</html>

5. 定时器 - 间歇函数

5.1 基本介绍

  • 网页中使用到每个一段时间需要自动执行一段代码,不需要我们手动触发
  • 例如网页中的倒计时,这些效果需要间歇函数实现

5.2 间歇函数的使用

  1. 开启定时器

    setInterval(函数, 间隔时间);
    
  2. 关闭定时器

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><script>// setInterval(function(){//   document.write('1');// }, 100);function fn() {console.log('1');}let no = setInterval(fn, 1000);console.log(no);// 后续要添加条件clearInterval(no);</script>
    </body>
    </html>
    

5.3 阅读注册协议综合案例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><textarea name="" id="" cols="30" rows="10">用户注册协议:欢迎你称为京东用户!在您注册的过程中,您需要完成我们的注册流程并通过【请您注意】如果您不同意以下协议的任何条款规定,请您停止注册。</textarea><br><button class="btn" disabled>我已经阅读用户协议(5)</button>
</body>
<script>let btn = document.querySelector('.btn');let i = 5;let n = setInterval(function() {i--;btn.innerHTML = `我已经阅读用户协议(${i})`;if (i == 0) {clearInterval(n);btn.disabled = false;btn.innerHTML = '我已经阅读用户协议';}}, 1000);
</script>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python入门学习篇(十四)——模块文件操作

1 模块 1.1 理解 包: python中带有__init__.py文件的文件夹 模块: 文件名(不包含.py后缀),如python官方的time.py中time就是模块1.2 示例代码 import datetime# 调用datetime模块中的datetime类的now()方法 t datetime.datetime.now() # 格式化输出日期和时间 strftime(&qu…

Vue2中使用echarts,并从后端获取数据同步

一、安装echarts npm install echarts -S 二、导入echarts 在script中导入&#xff0c;比如&#xff1a; import * as echarts from "echarts"; 三、查找要用的示例 比如柱状图 四、初始化并挂载 <template><div id"total-orders-chart" s…

开发Python网络爬虫应用,爬取链家新房楼盘信息保存到mongodb中,并分析相关数据

这里写自定义目录标题 爬取代码分析数据问题 爬取代码 import requests import time from lxml import html from pymongo import MongoClient import randomBASEURL https://cq.fang.lianjia.com/loupan/# 获取某市区域的所有链接 def get_areas(url):print(获取区县列表)# …

git解决冲突场景

文章目录 git解决冲突场景 git解决冲突场景 假设我们在公司开发了一个功能修改了一个文件 我们现在模拟修改文件之后提交一个版本到本地&#xff0c;但是不上传到远程仓库 假设我们现在回到家开发代码&#xff0c;需要拉去最新的代码 提示已经更新。根本没有最新的代码改动&am…

Codeforces Round 917 (Div. 2) A~F

A.Least Product(思维) 题意&#xff1a; 给出一个数组 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1​,a2​,...,an​&#xff0c;你可以进行若干次以下操作&#xff1a; 选择数组中的一个元素 a i a_i ai​&#xff0c;将这个数字修改为 0 ∼ a i 0 \sim a_i 0∼ai​之…

PHP与Angular详细对比 帮助你选择合适的项目技术

开发可有效扩展并提供诺克斯堡级安全性的Web应用程序和网站是每个开发人员的梦想。而使用这样的产品是每个用户的愿望。因此&#xff0c;为您的项目选择最合适和可靠的技术非常关键。 虽然PHP和Angular是完全不同的技术——PHP与JavaScript是一个更恰当的比较——但它们都广泛…

ACES 增强版不丹水稻作物地图(2016-2022 年)

ACES 增强版不丹水稻作物地图&#xff08;2016-2022 年&#xff09; 用于改善粮食安全决策的 2016-2022 年年度作物类型稻米地图仍然是不丹的一项挑战。这些地图是与不丹农业部和 SERVIR 合作开发的。通过专注于发展不丹的科学、技术、工程和数学 (STEM)&#xff0c;我们共同开…

kotlin快速入门1

在Google I/O 2017中&#xff0c;Google 宣布 Kotlin 成为 Android 官方开发语言。目前主流AndroidApp开发已经全部切换成此语言&#xff0c;因此对于Android开发而言&#xff0c;掌握Kotlin已经变成必要事情。 Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言&#xff…

OFDM——PAPR减小

文章目录 前言一、PAPR 减小二、MATLAB 仿真1、OFDM 信号的 CCDF①、MATLAB 源码②、仿真结果 2、单载波基带/通频带信号的 PAPR①、MATLAB 源码②、仿真结果 3、时域 OFDM 信号和幅度分布①、MATLAB 源码②、仿真结果 4、Chu 序列和 IEEE802.16e 前导的 PAPR①、MATLAB 源码②…

微服务(1)

目录 1.什么是微服务&#xff1f;谈谈你对微服务的理解&#xff1f; 2.什么是Spring Cloud&#xff1f; 3.Springcloud中的组件有哪些&#xff1f; 3.具体说说SpringCloud主要项目&#xff1f; 5.SpringCloud项目部署架构&#xff1f; 1.什么是微服务&#xff1f;谈谈你对微…

java maven项目添加oracle jdbc的依赖

一般添加依赖是直接在pom.xml中添加配置即可&#xff0c;Maven会自动获取对应的jar包&#xff0c;但是oracle驱动依赖添加后会显示红色&#xff0c;代表找不到依赖项&#xff0c;是因为Oracle授权问题&#xff0c;Maven3不提供Oracle JDBC driver&#xff0c;为了在Maven项目中…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《兼顾捕碳强度与可再生能源消纳的储能容量配置优化方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到两个主要方面&#xff1a;捕碳强度和可再生能源的消纳&#xff0c;以及与之相关的储能容量配置的优化方法。下面我会逐一解读这两个方面&…

【快速全面掌握 WAMPServer】10.HTTP2.0时代,让 WampServer 开启 SSL 吧!

网管小贾 / sysadm.cc 如今的互联网就是个看脸的时代&#xff0c;颜值似乎成了一切&#xff01; 不信&#xff1f;看看那些直播带货的就知道了&#xff0c;颜值与出货量绝对成正比&#xff01; 而相对于 HTTP 来说&#xff0c;HTTPS 绝对算得上是高颜值的帅哥&#xff0c;即安…

深入理解Mysql事务隔离级别与锁机制

1. 概述 我们的数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题&#xff0c;为了解决多事务并发问题&am…

Decorator装饰模式(单一责任)

Decorator&#xff08;装饰模式&#xff1a;单一责任模式&#xff09; 链接&#xff1a;装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”&#xff0c;由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用&#xff1f; AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

[Ray Tracing: The Rest of Your Life] 笔记

前言 开年第一篇博客~ 整理了三四个小时才整理完orz。 这一部分是光线追踪三部曲的最后一部&#xff0c;主要介绍了蒙特卡洛积分、重要性采样等内容。场景上没有什么大的改变&#xff0c;基本上就是在Cornell Box中渲染的&#xff0c;本篇主要在加速收敛&#xff0c;提升渲染效…

【快速全面掌握 WAMPServer】09.如何在 WAMPServer 中安装 Composer

网管小贾 / sysadm.cc WAMPServer 的大名想必应该有不少人特别是新手小白们略有耳闻吧。 它是出自法国大神之手的一款 PHP 开发环境集成包&#xff0c;工作于 Windows 环境&#xff0c;类似于它这样的集成包在 Linux 平台上反正我是没找到&#xff0c;所以它应该算是对使用 Wi…

MIT线性代数笔记-第35讲-期末复习

目录 35.期末复习打赏 35.期末复习 已知一个矩阵 A A A满足 A x ⃗ [ 1 0 0 ] A \vec{x} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} Ax ​100​ ​无解且 A x ⃗ [ 0 1 0 ] A \vec{x} \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} Ax ​010​ ​仅有一个解 (1)求 A A A的…

linux安装rabbitmq

文章目录 前言一、下载安装包二、erlang1.安装依赖2.解压3.安装4.环境变量5.验证 三、rabbitmq1.安装依赖2.解压3.新建目录4.rabbitmq.env.conf5.rabbitmq.conf6.环境变量7.启动8.验证9.停止 四、安装web1.安装插件2.访问控制台界面 五、开机启动1.编写脚本2.设置开机启动3.测试…