JavaScript 基础通关

news2025/7/8 15:14:19

快速熟悉 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.coloradmin.cn/o/1347501.html

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

相关文章

SpringBoot学习(一)

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! Spring Boot 是一种基于 Spring 框架的开发模式&#xff0c;旨在简化 Spring 应用程序的创…

学生管理系统(vue + springboot)

学生管理系统&#xff08;vuespringboot&#xff09;资源-CSDN文库 项目介绍 这是一个采用前后端分离开发的项目&#xff0c;前端采用 Vue 开发、后端采用 Spring boot Mybatis 开发。 项目部署 ⭐️如果你有 docker 的话&#xff0c;直接 docker compose up 即可启动&#…

NullByte

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-29 09:23 CST Nmap scan report for 192.168.1.1 Host is up (0.00038s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for …

使用软件解决T490笔记本57摄氏度温度墙的问题

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 客户使用LenovoT490跑GQRX SDR&#xff0c;接入SDR在5MHz采样率下&#xff0c;机器卡顿。这对于10代i7CPU显然是不正常的。后续发现上网页也卡&#xff0c;卸载杀毒、重装系统、BIOS电源设置、系统最…

uniapp的css样式图片大小截图展示

目录 截取图片前截取图片后第一种方式&#xff1a;代码第二种方式&#xff1a;代码最后 截取图片前 截取图片后 第一种方式&#xff1a;代码 <view class"swiper-box-img"><image class"swiper-box-img-img" :src"item.file_path" mod…

10TB海量JSON数据从OSS迁移至MaxCompute

前提条件 开通MaxCompute。 在DataWorks上完成创建业务流程&#xff0c;本例使用DataWorks简单模式。详情请参见创建业务流程。 将JSON文件重命名为后缀为.txt的文件&#xff0c;并上传至OSS。本文中OSS Bucket地域为华东2&#xff08;上海&#xff09;。示例文件如下。 {&qu…

【后端】Docker学习笔记

文章目录 Docker一、Docker安装&#xff08;Linux&#xff09;二、Docker概念三、Docker常用命令四、数据卷五、自定义镜像六、网络七、DockerCompose Docker Docker是一个开源平台&#xff0c;主要基于Go语言构建&#xff0c;它使开发者能够将应用程序及其依赖项打包到一个轻…

Linux:apache优化(1)—— 长链接/保持连接

系统:CentOS 7.9 apache版本为&#xff1a;2.4.25 需要使用源码包进行安装才能够使用这些扩展模块 在使用这些扩展模块前要先下载zlib-devel 安装--enable-deflate选项需要的网页压缩传输的软件包 yum -y install zlib-devel 在配置编译安装时需要使用扩展配置 ./config…

【瞎折腾/3D】无父物体下物体的旋转与移动

目录 说在前面移动World SpaceLocal Space 旋转World SpaceLocal Space 代码 说在前面 测试环境&#xff1a;Microsoft Edge 120.0.2210.91three.js版本&#xff1a;0.160.0其他&#xff1a;本篇文章中只探讨了无父对象下的移动与旋转&#xff0c;有父对象的情况将在下篇文章中…

2024-01-01 事业-代号s-科特勒《营销管理》-分析

摘要: 2024-01-01 事业-代号s-科特勒《营销管理》-分析 科特勒《营销管理》-分析 营销管理 - 思维导图 01 理解营销管理 这本书不仅从概念出发介绍了营销管理的定义、职能和计划&#xff0c;还拆解了每一个管理环节策划的具体实施方法。通过下面这张思维导图&#xff0c;我们…

分布式数据库事务故障恢复的原理与实践

关系数据库中的事务故障恢复并不是一个新问题&#xff0c;自70年代关系数据库诞生之后就一直伴随着数据库技术的发展&#xff0c;并且在分布式数据库的场景下又遇到了一些新的问题。本文将会就事务故障恢复这个问题&#xff0c;分别讲述单机数据库、分布式数据库中遇到的问题和…

深度学习 | 编码器-解码器网络、seq2seq模型、束搜索算法

我们知道传统RNN输入和输出数据是等长的&#xff0c;这显然极大限制了他的应用范围。 前面几节我们讲到的循环神经网络的各种变体基本上都在解决一个序列的问题。还有一大类问题涉及到的是两个序列间转换。它是自然语言处理中的一个重要领域&#xff0c;包括机器翻译、语音识别…

go slice源码探索(切片、copy、扩容)和go编译源码分析

文章目录 概要一、数据结构二、初始化2.1、字面量2.2、下标截取2.2.1、截取原理 2.3、make关键字2.3.1、编译时 三、复制3.1、copy源码 四、扩容4.1、append源码 五&#xff1a;切片使用注意事项六&#xff1a;参考 概要 Go语言的切片&#xff08;slice&#xff09;是对数组的…

FA对接FC流程

2、FA进行对接 &#xff08;1&#xff09;首先安装好AD域控服务器DHCPDNS&#xff08;注意&#xff0c;不要忘记了做DNS正反向解析&#xff0c;就是把已经安装了ITA的主机做解析&#xff09;&#xff0c;在里面创建域用户 &#xff08;2&#xff09;安装ITA和VAG/VLB&#xf…

Redis7.2.3(Windows版本)

1、解压 &#xfeff; &#xfeff; 2、设置密码 &#xff08;1&#xff09; 右击编辑redis.conf文件&#xff1a; &#xfeff; &#xff08;2&#xff09; 设置密码。 &#xfeff; 3、测试密码是否添加成功 &#xfeff; 如上图所示&#xff0c;即为成功。 4、设置…

Redis(Linux版本7.2.3)

1、停止Redis服务器 [roottssvr1-c1 sysconfig]# ps -ef | grep redis root 322 1 0 10月30 ? 02:58:53 ./bin/redis-server 0.0.0.0:6379 root 32664 12498 0 14:45 pts/0 00:00:00 grep --colorauto redis [roottssvr1-c1 sysconfig]# [roottssvr…

在Mac上恢复SD卡数据的 6 个有效应用程序

慌&#xff01;SD卡里的照片和视频不小心删了&#xff0c;Mac设备上还恢复不了数据&#xff01; 遇到这种情况&#xff0c;你需要的是一款可靠的Mac适用的SD卡恢复软件。我们为你准备了一份最佳的SD卡恢复软件列表&#xff0c;并且还有详细的评论。另外&#xff0c;我们还会给…

vue中常见的指令

简单介绍一下常见的vue中用到的指令 v-on 指定当前的事件&#xff0c;语法糖为&#xff0c;如例子所示&#xff0c;指定按钮的事件为addCounter&#xff0c;点击会使变量counter 1 <!DOCTYPE html> <html><head><meta charset"utf-8" />…

CSS2_基础学习

CSS2_基础学习 一、css基础知识二、css选择器2.0 选择器的优先级2.1 CSS基本选择器2.2 复合选择器2.2.1. 交集选择器2.2.2. 并集选择器2.2.3. 后代选择器&#xff08;加空格&#xff09;2.2.4. 子代选择器2.2.5. 兄弟选择器2.2.6. 属性选择器2.2.7. 伪类选择器2.2.8. 伪元素选择…

zabbix通过自动发现-配置监控项、触发器(小白教程)

自动发现配置参考链接&#xff08;不小白&#xff0c;不友好&#xff09; zabbix-get介绍 1配置 zabbix server&#xff1a;版本7&#xff08;不影响&#xff09;,IP地址&#xff1a;192.168.0.60zabbix agent&#xff1a;版本agent1&#xff08;不影响&#xff09;&#xff…