day11_JS初识_语法

day11_JS初识_语法

今日学习目标 : 入门HarmonyOS生态中 , ArkTS最基础的语法 JavaScript , 今天最主要的学习内容了解和掌握JavaScript的基础语法 , 并灵活的再后面开发过程进行使用

今日学习目标

  1. 什么是JavaScript

  2. JavaScript组成

  3. JavaScript执行环境

  4. JavaScript代码的书写位置

  5. JavaScript中的注释

  6. 变量 ( 重点 )

  7. 变量命名规则和规范

  8. 输出形式

  9. 数据类型

  10. 数据类型转换

  11. 运算符

  12. 基础知识题目

1. 什么是JavaScript ( 简称JS )

  1. 首先要了解前端以及Harmony生态中网站的组成部分(网站的三层结构)

    • HTML 表示了你的页面内有什么,组成页面的骨架 (结构层)

    • CSS 表示了你的页面中每一个内容是什么样子的(样式层)

    • JavaScript(简称js) 表示了你的页面中每一个内容如何发生变化, 有什么行为内容(行为层)

  2. JavaScript

    • 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

2. JavaScript组成

  1. ECMASCRIPT: 定义了javascript的语法规范,描述了语言的基本语法和数据类型

  2. BOM (Browser Object Model): 浏览器对象模型

    • 有一套成熟的可以操作浏览器的 API,通过 BOM 可以操作浏览器。比如: 弹出框、浏览器跳转、获取分辨率等

  3. DOM (Document Object Model): 文档对象模型

    • 有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。比如: 增加个 div,减少个 div,给 div 换个位置等

3. JavaScript执行环境

JavaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码

4. JavaScript代码的书写位置

和 css 一样,我们的 js 也可以有多种方式书写在页面上让其生效

js 也有多种方式书写,分为 行内式, 内嵌式,外链式

1) 行内位置使用 ( 行内式 ) 不推荐

写在标签上的 js 代码需要依靠事件(行为)来触发

<!-- 写在 a 标签的 href 属性上 -->
<a href="javascript:alert('我是一个弹出层');">点击一下试试</a>
​
<!-- 写在其他元素上 -->
<div οnclick="alert('我是一个弹出层')">点一下试试看</div>
​
<!-- 注:onclick 是一个事件(点击事件),当点击元素的时候执行后面的 js 代码
-->

2) 内部位置使用 ( 内嵌式 )

内嵌式的 js 代码会在页面打开的时候直接触发

<!-- 在 html 页面书写一个 script 标签,标签内部书写 js 代码 -->
<script type="text/javascript">alert('我是一个弹出层')
</script>
​
<!-- 注:script 标签可以放在 head 里面也可以放在 body 里面 -->

3) 外部位置使用 ( 外链式 )

  • 外链式 js 代码只要引入了 html 页面,就会在页面打开的时候直接触发

  • 新建一个 .js 后缀的文件,在文件内书写 js 代码,把写好的 js 文件引入 html 页面

// 我是 index.js 文件
alert('我是一个弹出层')
<!-- 我是一个 html 文件 -->
<!-- 通过 script 标签的 src 属性,把写好的 js 文件引入页面 -->
<script src="index.js"></script>
​
<!-- 一个页面可以引入多个 js 文件 -->
<script src="index1.js"></script>
<script src="index2.js"></script>
<script src="index3.js"></script>

5. JavaScript中的注释

  • 学习一个语言,先学习一个语言的注释,因为注释是给我们自己看的,也是给开发人员看的

  • 写好一个注释,有利于我们以后阅读代码

1) 单行注释

一般就是用来描述下面一行代码的作用

可以直接写两个 / ,也可以按 ctrl + /

// 我是一个单行注释
// 下面代码表示在浏览器里面出现一个弹出层
alert('我是一个弹出层')

2) 多行注释

一般用来写一大段话,或者注释一段代码

可以直接写 /**/ 然后在两个星号中间写注释,也可以按 shift + alt + a

javascript

/*我是一个多行注释
*/
/*注释的代码不会执行alert('我是一个弹出层')alert('我是一个弹出层')
*/
alert('我是一个弹出层')

6. 变量

1) 什么是变量

  • 变量指的是在程序中保存数据的一个容器

  • 变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据

  • 也就是说,我们向内存中存储了一个数据,然后要给这个数据起一个名字,为了是我们以后再次找到他

  • 语法: var 变量名 = 值

2) 定义变量及赋值

/*
var : 定义变量的关键字, 告诉浏览器, 我要定义一个变量了
空格 : 必须写, 区分 关键 和 变量名 的
变量名 : 你自己起的一个名字
= : 赋值符号, 把右边的内容, 给到左边的变量
值 : 你给你定义的变量赋的是什么值
*/
​
// 定义一个变量
var num;
​
// 给一个变量赋值
num = 100;
​
// 定义一个变量的同时给其赋值
var num2 = 200;

3) 注意事项

  1. 一个变量名只能存储一个值

  2. 当再次给一个变量赋值的时候,前面一次的值就没有了

  3. 变量名称区分大小写(JS 区分大小写)

7. 变量命名规则和规范

- 规则: 必须遵守的,不遵守就是错1. 一个变量名称可以由 **数字**、**字母**、**英文下划线(_)**、**美元符号($)** 组成2. 严格区分大小写3. 不能由数字开头,不要使用中文汉字命名4. 不能是 **保留字** 或者 **关键字**5. 不要出现空格
- 规范: 建议遵守的(开发者默认),不遵守不会报错1. 变量名尽量有意义(语义化)2. 遵循驼峰命名规则,由多个单词组成的时候,从第二个单词开始首字母大写

8. 输出 输入 形式

1) 输出形式1

以弹窗的形式展示给用户

// 以弹出层的形式展示给我们
alert('你好 世界')

2) 输出形式2

在页面中展示给用户

// 直接展示到我们的页面上
document.write('hello world')

3) 输出形式3

// 在控制台展示出来
console.log('大家好');

4) 选择输入框

// 这个选择框返回的是一布尔值
var name = confirm('你是程序员吗')
// 打印我们拿到的结果(也就是布尔值)
console.log(name)

5) 用户输入框

// 这个输入框返回的是用户输出的内容
var name = prompt('请输入你的姓名')
// 我们拿到的结果就是用户输入的结果
console.log(name)

9. 数据类型

是指我们存储在内存中的数据的类型

我们通常分为两大类 *基本数据类型**复杂数据类型(引用数据类型)*

1) 基础数据类型

1) 数值类型(number)
  • 包含一切数字和数值相关内容

    • 整数 : 100, -100, 234

    • 浮点数 : 100.234, -0.456

    • 科学记数法 : 10e5

    • 其他进制表示

    • 二进制 : 0b100

    • 八进制 : 0o100

    • 十六进制 : 0x100

    • 无穷 : Infinity

    • 非数字 : NaN

// 整数
var n1 = 100
var n2 = -100
// 浮点数
var n3 = 100.2
var n4 = -100.2
// 科学记数法
// e5 => 指 10 的 5 次方
// 10e5 => 指 10 * 10的5次方
var n5 = 10e5
// 其他进制表示
var n6 = 0b100
var n7 = 0o100
var n8 = 0x100

2) 字符串类型 (string)
a) 被引号包裹的所有内容

单引号 ( '' )

双引号 ( "" )

反引号 ( `` )

ar s1 = 'hello world'
var s2 = "hello world"
var s3 = `hello world`
console.log(s1)
console.log(s2)
console.log(s3)
b) 注意

无论哪种引号, 必须成对出现

各种引号之前可以互相嵌套, 但是不能自己嵌套自己

反引号定义的字符串可以换行书写, 并且可以在字符串内直接使用 ${} 的形式解析变量

// 1. 可以换行书写
var str = `helloworld你好 世界
`
console.log(str)// 2. 可以直接在字符串内解析变量
var age = 18
// 单引号 和 双引号 不具备解析变量的能力
var s1 = '我是小千, 我今年 ${ age } 岁了'
console.log(s1)var s2 = `我是小千, 我今年 ${ age } 岁了`
console.log(s2)	
3) 布尔类型 (boolean)

表示肯定或否定时在计算机中对应的是布尔类型数据

只有两个(true 或者 false)

表示肯定的数据用 true,计算机中存储的就是1

表示否定的数据用 false,计算机中存储的就是0

/*布尔 Boolean+ true 表示真, 在计算机内存储的时候按照 1 存储+ false 表示假, 在计算机内存储的时候按照 0 存储
*/var b1 = true
var b2 = false
console.log(b1)
console.log(b2)
4) null类型

只有一个,就是 null,null值表示一个空对象指针

有值,但是是一个空值。

使用时需要给变量赋值为null,才能得到null

5) undefined类型

undefined也叫未定义是比较特殊的类型,本该有个值,但是没有 ,就是undefined

只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined

只有一个,就是 undefined,表示没有值的意思

/*空+ Undefined: 只有一个值=> undefined, 表示 没有=> 这里本该有一个值, 但是没有的时候, 叫做 undefined=> 一个变量声明为赋值, 就是 undefined+ Null: 只有一个值=> null, 表示 有一个空=> 这里真的有一个值, 这个值是一个空值=> 你需要给一个变量赋值为 null 才是 null
*/var u
// 需要拿到 u 变量的值来使用
// u 本该给我一个值, 让我显示, 但是没有
console.log(u)var n = null
// n 变量给我的值就是一个 空值
console.log(n)

2) 复杂数据类型

对象类型(object)

函数类型(function)

后面会详细的为大家详解复杂的数据类型

10. 数据类型转换

1) 数据类型检测

既然已经把数据分开了类型

我们就要知道我们存储的数据是一个什么类型的数据

我们就要知道每个变量的类型是什么

typeof

使用 typeof 关键字来进行判断

语法:

  1. typeof 变量

  2. typeof(变量)

返回值(结果): 以一个字符串的形式告诉你你检测的变量是什么数据类型

// 第一种使用方式
var n1 = 100;
console.log(typeof n1);// 第二种使用方式
var s1 = 'abcdefg';
console.log(typeof(s1));

注意

typeof 的结果必然是一个字符串类型

当你需要检测两个内容的运算结果的时候, 必须要使用 () 包裹

var r1 = typeof 100 + 200
var r2 = typeof(100 + 200)
console.log(r1)
console.log(r2)

当你多个typeof连用的时候,返回值必然是一个'string'

console.log(typeof typeof 100); // string

isNaN()

可以使用 isNaN 这个方法来判断一个变量是不是一个合法的数字

isNaN :is not a number

语法:

isNaN(要检测的数据)

返回值:布尔值

// 如果变量是一个数字
var n1 = 100;
console.log(isNaN(n1)); //=> false// 如果变量不是一个数字
var s1 = 'Jack'
console.log(isNaN(s1)); //=> true//如果变量是这样的一个数据
var r1 = '123javas
console.log(isNaN(r1)); //=>false

Number.isNaN()

Number.isNaN() 方法用于判断传递的值是否为 NaN

并且检查其类型是否为 Number

如果值为 NaN 且类型为 Number,则返回 true,否则返回 false

console.log(Number.isNaN(123)); // false
console.log(Number.isNaN(0/0)); // true

2) 数据类型转换

数据类型之间的转转换

其他数据类型转换成数值类型

其他数据类型转换成字符串类型

其他数据类型转换成布尔类型

1) 其他数据类型转成数值
*Number(变量)*

语法:

Number(你要转换的数据)

返回值:

转换好的数值类型数据

转换规则:

把你要转换的内容当做一个整体

如果整体可以转换为一个合法数字, 那么就是这个数字

如果整体不可以转换为合法数字, 那么就是 NaN(not a number)

注意:

true 会转换为 1

false 会转换为 0

// 1. Number()
var s1 = '132abc'
console.log(s1)
console.log(typeof s1)
console.log('==========================')
// 开始转换
// 使用 Number 方法转换 s1 变量, 把结果赋值给 res 变量
var res = Number(s1)
console.log(res)
console.log(typeof res)

*parseInt(变量)*

语法:

parseInt(你要转换的数据)

返回值:

转换好的数值类型数据

转换规则:

不管你要转换的是什么数据, 都一位一位的看待

如果第一位就不能转换成合法数字, 那么直接给出 NaN, 停止转换

如果第一位可以, 那么继续转换第二位

以此类推, 直到遇到不能转换的为止

注意:

不认识小数点,遇到小数点就认为不是一个数字后面的就不检测了返回的就是点前面的整数部分

所以使用 parseInt() 还有一个取整功能

var s1 = '100.23456'
console.log(s1)
console.log(typeof s1)
console.log('=============================')
var res = parseInt(s1)
console.log(res)
console.log(typeof res)

*parseFloat(变量)*

语法:

parseFloat(你要转换的数据)

返回值:

转换好的数值类型数据

转换规则:

和 parseInt 一模一样

唯一的区别就是认识一位小数点

var s1 = '1.52rem'
console.log(s1)
console.log(typeof s1)
console.log('=============================')
var res = parseFloat(s1)
console.log(res)
console.log(typeof res)

*除了加法以外的数学运算*

只要不是进行加法运算, 都可以进行转换数字

num - 0

num * 1

num / 1

...

转换规则:

和 Number 方法一模一样

把数据当做一个整体看待

运算符两边都是可运算数字才行

如果运算符任何一遍不是一个可运算数字,那么就会返回 NaN

加法不可以用

var s1 = '100'
console.log(s1)
console.log(typeof s1)
console.log('====================')
var res = s1 - 0
console.log(res)
console.log(typeof res)
2) 其他类型转成字符串

就是把其它的数据类型转换成字符串数据类型

*toString()*

语法:

你要转换的数据.toString()

返回值:

转换好的字符串类型数据

注意:

除了 null 和 undefined 以外都行

// 2. toString
var n = null
console.log(n)
console.log(typeof n)
console.log('-------------------------')
var res = n.toString()
console.log(res)
console.log(typeof res)

*String()*

语法:

String(你要转换的数据)

返回值:

转换好的字符串类型数据

能转换:

所有数据都能转换

// 1. String()
var n1 = 100
console.log(n1)
console.log(typeof n1)
console.log('==================')
var res = String(n1)
console.log(res)
console.log(typeof res)

*使用加法运算*

在 JS 里面,+ 由两个含义

字符串拼接: 只要 + 任意一边是字符串,就会进行字符串拼接

加法运算:只有 + 两边都是数字或者是布尔值的时候,才会进行数学运算

如果想把一个数据转换成字符串, 那么只需要 + 字符串

var n1 = '100'
console.log(n1)
console.log(typeof n1)
console.log('===================')
// 在字符串拼接转字符串的时候, 最好拼接一个空字符串
var res = n1 + ''
console.log(res)
console.log(typeof res)

3) 其他数据类型转成布尔

语法:Boolean(要转换的数据)

返回值:就是你转换好的布尔值

在 js 中,只有 ''、0、null、undefined、NaN,这些是 false

其余都是 true

console.log(Boolean(''));
console.log(Boolean(NaN));
console.log(Boolean(0));
console.log(Boolean(undefined));
console.log(Boolean(null));

11. 运算符

1) 含义

就是在代码里面进行运算的时候使用的符号

不光只是数学运算

我们在 js 里面还有很多的运算方式

我们所熟知的数学运算只是诸多运算符的一种

2) 数学运算符

  1. +

    • 只有符号两边都是数字或者布尔值的时候才会进行加法运算

    • 只要符号任意一边是字符串类型,就会进行字符串拼接

      // 数学运算符
      console.log(100 + 100); // 200
      console.log(100 + true); // 101
      console.log(100 + false); // 100
      console.log(100 + '435'); // '100435
  2. -

    • 会执行减法运算

    • 会自动把两边都转换成数字进行运算

      // 数学运算符(-)
      console.log(10 - 5); // 5
      console.log(10 - true); // 9
      console.log(10 - false); // 10
  3. *

    • 会执行乘法运算

    • 会自动把两边都转换成数字进行运算

      // 数学运算符(*)
      console.log(10 * 5); // 50
      console.log(10 * true); // 10
      console.log(10 * false); // 0
  4. /

    • 会执行除法运算

    • 会自动把两边都转换成数字进行运算

      // 数学运算符(/)
      console.log(10 / 5); // 2
      console.log(10 / true); // 10
      console.log(false / 10); // 0
  5. %

    • 会执行取余运算

    • 会自动把两边都转换成数字进行运算

      // 数学运算符(%)
      console.log(10 % 3); // 1
  6. **

    • 幂(**)运算符返回第一个操作数取第二个操作数的幂的结果

      // 数学运算符(**)
      console.log(3 ** 4); // 81

3) 赋值运算符

  1. =

    • 就是把 = 右边的赋值给等号左边的变量名

    • var num = 100

    • 就是把 100 赋值给 num 变量

    • 那么 num 变量的值就是 100

    • 注意:

      同一个变量只能赋值一次

      也就说给同一个变量第一次赋值以后就不能再次赋值了

      如果给同一个变量再次赋值会把前面的值覆盖掉

    • 变量值的交换

    • 借助第三个变量来做交换

      // 交换变量
      // 声明变量
      var x = 5
      var y = 6
      console.log(x) 
      console.log(y) // 声明第三个变量
      var tmp
      // 把x的值赋值给tmp
      tmp = x
      // 把y的值赋值给x 
      x = y
      // 把tmp的值赋值给y
      y = tmpconsole.log(x) 
      console.log(y) 
  2. +=

    • 就是赋值符号和加号的合作符号

    • 就是在自己的原来的基础上再加上多少

      var a = 10;
      a += 10;
      console.log(a); //=> 20
    • a += 10 等价于 a = a + 10

    • 不能写成 a = 10 + a

  3. -=

    • 就是赋值符号和减号的合作符号

    • 就是在自己的原来的基础上再减去多少

      var a = 10;
      a *= 10;
      console.log(a); //=> 100
      // `a -= 10` 等价于 `a = a - 10`
  4. *=

    • 就是赋值符号和乘号的合作符号

    • 就是在自己的原来的基础上再乘上多少

      var a = 10;
      a *= 10;
      console.log(a); //=> 100
      // `a *= 10` 等价于 `a = a * 10`
  5. /=

    • 就是赋值符号和除号的合作符号

    • 就是在自己的原来的基础上再除上多少

    var a = 10;
    a /= 10;
    console.log(a); //=> 1
    // `a /= 10` 等价于 `a = a / 10`
  6. %=

    • 就是赋值符号和取余符号的合作符号

    • 就是把自己和某个数取余后的结果在赋值给自己

      var a = 10;
      a %= 3;
      console.log(a); //=> 1
      // `a %= 3` 等价于 `a = a % 3`

4) 比较运算符

  1. 含义

    计算机除了能够处理数据的加减乘除运算外

    还能对数据进行比较,如大小比较、类型比较等

    比较运算的结果一定为布尔类型

    比较运算符也叫关系运算符

  2. ==

    比较符号两边的值是否相等,不管数据类型

    console.log(1 == 1); // true
    console.log(1 == '1'); // true
    console.log(1 == 2); // false
    console.log(1 == '2'); // false
  3. ===

    比较符号两边的值和数据类型是否都相等

    console.log(1 === 1); //true
    console.log(1 === '1'); // false
  4. !=

    比较符号两边的值是否不等,如果是返回true不管数据类型

    console.log(1 != 1);// false
    console.log(1 != '2'); // true
    console.log(1 != '1'); // false
  5. !==

    比较符号两边的数据类型和值是否不等,如果都满足返回true

    console.log(1 !== 1); // false
    console.log(1 !== '1');// true
    console.log(1 !== 2); // true
    console.log(1 !== '2'); // true
  6. '>='

    比较左边的值是否 大于或等于 右边的值

    console.log(2 >= 1); // true
    console.log(2 >= 2); // true
    console.log(2 >= 3); // false
  7. <=

    比较左边的值是否 小于或等于 右边的值

    console.log(1 <= 1); // true
    console.log(1 <= 2); // true
    console.log(3 <= 2); // false
  8. ">"

    比较左边的值是否 大于 右边的值

    console.log(1 > 2); // false
    console.log(3 > 2); // true
    console.log(2 > 2); // false
  9. "<"

    比较左边的值是否 小于 右边的值

    console.log(1 < 2); // true
    console.log(3 < 2); // false
    console.log(2 < 2); // false

5) 逻辑运算符

  1. 含义

    逻辑运算符一般是将多个表达式的值组合起来,再次运算产生的新的表达式的值,逻辑运算主要分3种情形

    逻辑与(且) &&

    逻辑或 ||

    逻辑非(取反)!

  2. 逻辑与 ( 且 ) &&

    • 进行 且 的运算

    • 必须符号两边同时为 true,才会返回 true

    • 只要有一边不是 true,那么就会返回 false

    • 同真为真,一假则假

    console.log(true && true); // true
    console.log(true && false); // false
    console.log(false && false); // false
  3. 逻辑或 ||

    • 进行 或 的运算

    • 符号两边任意一边为 true,都会返回 true

    • 只有两边都是 false 的时候才会返回 false

    • 一真为真,同假则假

    console.log(true || true); // true
    console.log(true || false); // true
    console.log(false || false); // false
  4. 逻辑非 ( 取反 ) !

    • 进行 取反 运算

    • 本身是 true 的,会变成 false

    • 本身是 false 的,会变成 true

    console.log(true); // true
    console.log(!true); // false
    console.log(false); // false
    console.log(!false); // true

6) 短路逻辑

  1. 逻辑且(与)&&

    当运算符左边为 false 的时候, 右边的代码不执行

    只有左边的代码为 true 的时候, 右边的代码才执行

    false && console.log('你好 世界');
    true && console.log('你好 世界');
  2. 逻辑或 ||

    当运算符 左边为 true 的时候, 右边的代码不执 行

    只有左边的代码为 false 的时候, 右边的代码才执行

    true || console.log('hello world');
    false || console.log('hello world');

7) 一元运算符

  1. 含义

    一个数据带一个运算符就能完成的运算就叫一元运算

  2. ++

    • 进行自增运算

    • 分成两种,前置++ 和 后置++ 不管是前置还是后置,都是让自身的值+1,只能+1

    • 前置++,会先把值自动 +1,在返回之后参与运算

    var a = 10;
    console.log(++a);
    // 会返回 11,并且把 a 的值变成 11
    • 后置++,会先把值拿来参与运算,运算结束以后在自动+1

    var a = 10;
    console.log(a++);
    // 会返回 10,然后把 a 的值变成 11
    • 练习 - 求 n 和 res 的值

    var n = 10
    var res = n++ + ++n + ++n + ++n + n++
    console.log(n) 
    console.log(res) 
  3. --

    • 进行自减运算

    • 分成两种,前置-- 和 后置--

    • 和 ++ 运算符道理一样

    • 求 n 和 res 的值

    var n = 10
    var res = --n + ++n + n++ + n++ + n-- - --n
    console.log(n) 
    console.log(res)

12. 课后练习题

详见强化练习

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

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

相关文章

[C++]:IO流

1. IO 流 1.1 流的概念 在C中&#xff0c;存在一种被称为“流”的概念&#xff0c;它描述的是信息流动的过程&#xff0c;具体来说就是信息从外部输入设备&#xff08;比如常见的键盘&#xff09;传输到计算机内部&#xff08;像内存区域&#xff09;&#xff0c;以及信息从内…

基于Kubernetes编排部署EFK日志收集系统

基于K8S编排部署EFK日志收集系统 案例分析 1. 规划节点 节点规划&#xff0c;见表1。 表1 节点规划 IP主机名k8s版本信息192.168.100.3masterv1.25.2192.168.100.4nodev1.25.2 2. 基础准备 Kubernete环境已安装完成&#xff0c;将提供的软件包efk-img.tar.gz上传至master…

Kubernetes 还是 SpringCloud?

前些年&#xff0c;随着微服务的概念提出以及落地&#xff0c;不断有很多的公司都加入到了这场技术革新中&#xff0c;现在可谓是人人都在做和说微服务。 提到微服务&#xff0c;Java栈内&#xff0c;就不得不提SpringBoot、SpringCloud、Dubbo。 近几年&#xff0c;随着Cloud …

ChatGPT如何辅助academic writing?

今天想和大家分享一篇来自《Nature》杂志的文章《Three ways ChatGPT helps me in my academic writing》&#xff0c;如果您的日常涉及到学术论文的写作&#xff08;writing&#xff09;、编辑&#xff08;editing&#xff09;或者审稿&#xff08; peer review&#xff09;&a…

101.【C语言】数据结构之二叉树的堆实现(顺序结构) 2

目录 1.堆删除函数HeapPop 一个常见的错误想法:挪动删除 正确方法 设计堆顶删除函数HeapPop 解析向下调整函数AdjustDown 核心思想 向下调整最多次数 向下调整的前提 代码实现 提问 细节分析 2.测试堆删除函数 运行结果 3.引申问题 运行结果 4.练习 分析 代码…

【机器学习chp8】统计学习理论

前言 本文遗留问题&#xff1a;无 目录 前言 一、结构风险最小化 1、最小化风险决策 2、分类与回归中的最小化风险决策 3、统计学习的基本目标 4、无免费午餐定理 5、Hoeffding不等式 &#xff08;1&#xff09;背景及定义 &#xff08;2&#xff09;Hoeffding不等式…

Springboot启动报错’javax.management.MBeanServer’ that could not be found.

报错信息如下图&#xff1a; 解决办法&#xff1a; 1.在你的.yml文件或者.properties文件里加上如下配置&#xff1a; properties: management.endpoints.jmx.enabledfalseyml: management:endpoints:jmx:enabled: false2.如果以上方法行不通&#xff0c;在springboot启动类…

英语知识网站:Spring Boot技术构建

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

英伟达推出了全新的小型语言模型家族——Hymba 1.5B

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

spring boot2.7集成OpenFeign 3.1.7

1.Feign Feign是一个声明式web服务客户端。它使编写web服务客户端更容易。要使用Feign&#xff0c;请创建一个接口并对其进行注释。它具有可插入注释支持&#xff0c;包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持&…

Jmeter中的前置处理器

5&#xff09;前置处理器 1--JSR223 PreProcessor 功能特点 自定义数据处理&#xff1a;使用脚本语言处理请求数据&#xff0c;实现高度定制化的数据处理和生成。动态数据生成&#xff1a;在请求发送前生成动态数据&#xff0c;如随机数、时间戳等。变量设置&#xff1a;设置…

git(Linux)

1.git 三板斧 基本准备工作&#xff1a; 把远端仓库拉拉取到本地了 .git --> 本地仓库 git在提交的时候&#xff0c;只会提交变化的部分 就可以在当前目录下新增代码了 test.c 并没有被仓库管理起来 怎么添加&#xff1f; 1.1 git add test.c 也不算完全添加到仓库里面&…

学习Java的日子 Day56 数据库连接池,Druid连接池

Day56 1.数据库连接池 理解&#xff1a;池就是容器&#xff0c;容器中存放了多个连接对象 使用原因&#xff1a; 1.优化创建和销毁连接的时间&#xff08;在项目启动时创建连接池&#xff0c;项目销毁时关闭连接池&#xff09; 2.提高连接对象的复用率 3.有效控制项目中连接的…

Jmeter测试工具的安装和使用,mac版本,jmeter版本5.2.1

Jmeter测试工具的安装和使用JSON格式请求 一、安装1、安装jdk包和设置java环境2、去官网下载Jmeter3、解压后&#xff0c;打开mac终端&#xff0c;进入apache-jmeter的bin文件开启jmeter 二、使用jmeter1、添加线程2、添加HTTP请求3、配置请求的协议、IP地址、端口号、请求方法…

Envoy 源码解析(一):Envoy 整体架构、Envoy 的初始化

本文基于 Envoy 1.31.0 版本进行源码学习 1、Envoy 整体架构 1&#xff09;、核心组件 Envoy 包含以下四个核心组件&#xff1a; Listener&#xff08;监听器&#xff09;&#xff1a;定义了 Envoy 如何处理入站请求。一旦连接建立&#xff0c;请求会被传递给一组过滤器进行处…

【VUE3】VUE组合式(响应式)API常见语法

pnpm常用命令 pnpm i //pnpm安装VUE3常见语法汇总 ref() //const count ref(0) //count.value&#xff08;访问值&#xff0c;包括对象要加.value&#xff09; //任何类型的值&#xff0c;包括深层嵌套的对象或则JS内置数据结构 await nextTick() //要等待 DOM 更新完成后…

CGAL CGAL::Polygon_mesh_processing::self_intersections解析

CGAL::Polygon_mesh_processing::self_intersections 是用于检测多边形网格&#xff08;Polygon Mesh&#xff09;中的自相交的函数。自相交是指网格中的某些面&#xff08;例如三角形&#xff09;与同一网格中的其他面交叉的情况。这种情况通常是不期望的&#xff0c;因为它会…

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处&#xff1a; 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

Vue前端开发2.3.5 条件渲染指令

本文介绍了Vue中两种条件渲染指令&#xff1a;v-if和v-show。v-if通过布尔值控制元素的DOM树存在&#xff0c;适用于不频繁切换显示状态的场景&#xff1b;v-show则通过CSS的display属性控制显示&#xff0c;适合频繁切换。通过创建单文件组件示例&#xff0c;演示了如何使用这…

GitLab指定用户分配合并权限

进入项目 -》 Project Settings Repository -》展开 Protected branches -》 添加要保护的分支&#xff0c;设置角色 管理用户角色权限 查看到不同用户的角色&#xff0c;一般设置Developer只有Merger Request权限&#xff0c;Maintainer还有Merge审批权限 GitLab 中的权限…