05-JavaScript对象

news2024/11/24 16:54:49

1. 对象

1.1 对象的相关概念

  • 什么是对象?

    在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。 对象是由属性和方法组成的。

  • 属性:事物的特征,在对象中用属性来表示(常用名词)

  • 方法:事物的行为,在对象中用方法来表示(常用动词)

  • 为什么需要对象?

    保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组。

    如果要保存一个人的完整信息呢?

    例如,将“张小好”的个人的信息保存在数组中的方式为:

var arr = ["张小好","女",18,20001];

上述例子中用数组保存数据的缺点是:数据只能通过索引值访问,开发者需要清晰的清除所有的数据的排行才能准确地获取数据,而当数据量庞大时,不可能做到记忆所有数据的索引值。

为了让更好地存储一组数据,对象应运而生:对象中为每项数据设置了属性名称,可以访问数据更语义化,数据结构清晰,表意明显,方便开发者使用。

使用对象记录上组数据为:

var obj = {
    name:"张小好",
    sex:"女",
    age:18,
    height:165
}

JS中的对象表达结构更清晰,更强大。

1.2 创建自定义对象的三种方式

1.2.1 利用字面量创建对象

  • 使用对象字面量创建对象

    就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法;{ } 里面采取键值对的形式表示

键:相当于属性名

值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)

var person = {
    name : '张小好',
    age : 18,
    sex : '女',
    sayHi : function(){
        alert('今天很开心');
    }
};
  • 对象的使用

    • 对象的属性

      • 对象中存储具体数据的 "键值对"中的 "键"称为对象的属性,即对象中存储具体数据的项

    • 对象的方法

      • 对象中存储函数的 "键值对"中的 "键"称为对象的方法,即对象中存储函数的项

    • 访问对象的属性

      • 对象里面的属性调用 : 对象.属性名 ,这个小点 . 就理解为“ 的 ”

      • 对象里面属性的另一种调用方式 : 对象[‘属性名’],注意方括号里面的属性必须加引号

        示例代码如下:

        console.log(person.name)     // 调用名字属性
        console.log(person['name'])  // 调用名字属性

    • 调用对象的方法

      • 对象里面的方法调用:对象.方法名() ,注意这个方法名字后面一定加括号

        示例代码如下:

        person.sayHi();              // 调用 sayHi 方法,注意,一定不要忘记带后面的括号

1.2.2 利用 new Object 创建对象

  • 创建空对象

    通过内置构造函数Object创建对象,此时person变量已经保存了创建出来的空对象

    var person = new Object();

  • 给空对象添加属性和方法

    person.name = 'zhangmeili';
    person.age = 18;
    person.sex = '女';
    person.sayHi = function(){
        alert('今天很开心');
    }

注意:

Object() :第一个字母大写

new Object() :需要 new 关键字

使用的格式:对象.属性 = 值;

1.2.3 利用构造函数创建对象

  • 构造函数

    一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

  • 构造函数的封装格式:

    function 构造函数名(形参1,形参2,形参3) {
         this.属性名1 = 参数1;
         this.属性名2 = 参数2;
         this.属性名3 = 参数3;
         this.方法名 = 函数体;
    }
  • 构造函数的调用格式

    var obj = new 构造函数名(实参1,实参2,实参3)

以上代码中,obj即接收到构造函数创建出来的对象。

构造函数的注意事项

1.构造函数约定首字母大写

2.函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法。

3.构造函数中不需要 return 返回结果

4.当我们创建对象的时候,必须用 new 来调用构造函数

1.2.4 普通函数和构造函数的区别

1. 构造函数
  1. new test( ) 用new关键字调用。

  2. this指向的是构造出的新对象。

  3. 构造函数是不需要用return显式返回值的,默认会返回this,也就是新的实例对象。

  4. 构造函数一般是首字母大写。

2.普通函数
  1. test( ) 不需要用new关键字调用。

  2. 函数内部的this指向调用函数的对象(如果没有对象调用,默认是window)。

总结:

  • 普通函数:做业务处理,构造函数:自定义实例化对象。

  • 构造函数首字母大写。

1.2.5 new关键字的作用

  1. 创建新对象

  2. 将构造函数的作用域赋给了新对象(this指向这个新对象)

  3. 指向构造函数的代码(为这个新对象添加属性)

  4. 返回新对象赋值给实例化对象

1.3 遍历对象

  • 使用for...in遍历

    语句用于循环对象属性。

    循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

    //for...in 语句用于对数组或者对象的属性进行循环操作。
    //其语法如下:
    for (变量 in 对象名字) {
        // 在此执行代码
    }

    语法中的变量是自定义的,它需要符合命名规范,通常我们会将这个变量写为 k 或者 key。

    for (var k in obj) {
        console.log(k);      // 这里的 k 是属性名
      console.log(obj[k]); // 这里的 obj[k] 是属性值
    }

2.对象分类

2.1 对象

在javascript中,可以将对象分为“内部对象”、“宿主对象”和“自定义对象”三种。

  • 1.内部对象分为本地对象和内置对象

    • 本地对象

      JS中的本地对象包括Number、String、Boolean、Array、Function、Date、Object、RegExp、Error等

    • Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。

      内置对象(built-in object)定义为“由 ECMAScript 实现提供的,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。

  • 2.宿主对象

    宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。浏览器对象有很多,如Window和Document等等。

  • 3.自定义对象

    顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充。

2.2 数组对象(回忆)

2.2.1 创建数组的两种方式

  • 字面量方式

    var arr = [1,"test",true];
  • new Array()

    var arr = new Array();

注意:上面代码中arr创建出的是一个空数组,如果需要使用构造函数Array创建非空数组,可以在创建数组时传入参数

参数传递规则如下:

  • 如果只传入一个参数,则参数规定了数组的长度

  • 如果传入了多个参数,则参数称为数组的元素

2.2.2 数组对象的方法sort

sort()
功能描述对数组的元素进行排序(默认是从小到大来排序 并且是根据字符串来排序的)
语法array.sort(sortfunction)
参数sortfunction:可选。规定排序顺序。必须是函数。
返回值排序后新数组
是否改变原数组改变
var ary1 = [32,44,23,54,90,12,9]; 
ary1.sort(function(a,b){
// return a-b;  // 结果[9, 12, 23, 32, 44, 54, 90]
// return b-a;  // 结果[90, 54, 44, 32, 23, 12, 9]
})  
console.log(ary1);

注意:sort在不传递参数情况下,只能处理10以内(个位数)数字排序

2.3 字符串对象

2.3.1 基本包装类型

为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean。 基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。

// 下面代码有什么问题?
var str = 'zhangmeili';
console.log(str.length);

按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为js会把基本数据类型包装为复杂数据类型,其执行过程如下:

// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('zhangmeili');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;

2.3.2 String对象方法

  • 创建字符串对象

var str = new String('Hello World');
​
// 获取字符串中字符的个数
console.log(str.length);

2.4 字符串对象的常用方法

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。

2.4.1 字符方法

1. charAt()
charAt()
功能描述返回指定索引处的字符。索引范围为从 0 到 length- 1
语法string.charAt(index)
参数index -- 字符的索引。
返回值返回指定索引处的字符。

注意:str[index]:和charAt(index)等效

2. charCodeAt()
charCodeAt()
功能描述可返回指定位置的字符的 Unicode 编码()
语法string.charCodeAt(index)
参数index -- 字符的索引。
返回值返回在指定的位置的字符的 Unicode 编码。
3. fromCharCode()
fromCharCode()
功能描述可接受一个指定的 Unicode 值作为参数,然后返回相应字符
语法String.fromCharCode(number1,number2,....numberX )
参数必需。一个或多个 Unicode 值,即要创建的字符串中的字符的 Unicode 编码
返回值返回代表 Unicode 编码的字符。
4. ASCII码

ASCII 指的是“美国信息交换标准代码”(American Standard Code for Information Interchange)。

它是在 20 世纪 60 年代初设计的,是计算机和电子设备的标准字符集。

ASCII 是包含 128 个字符的 7 位字符集。

它包含从 0-9 的数字,从 A 到 Z 的大写和小写英文字母以及一些特殊字符。

现代计算机和 HTML 中,以及在 Internet 中,使用的字符集均基于 ASCII。

2.4.2 字符串操作方法

1.concat()
concat()
功能描述用于连接两个或多个字符串。
语法string.concat(string1, string2, ..., stringX)
参数必需。将被连接为一个字符串的一个或多个字符串对象。
返回值两个或多个字符串连接后生成的新字符串。
2.slice()
slice()
功能描述提取字符串的片断,并在新的字符串中返回被提取的部分。
语法slice(start,end)
参数start必须. 要抽取的片断的起始下标。第一个字符位置为 0, end可选。 紧接着要截取的片段结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
返回值提取的字符串
3.substring()
substring()
功能描述用于提取字符串中介于两个指定下标之间的字符。
语法substring(from,to)
参数from必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。to可选。一个非负的整数,规定要提取的子串结束位置的下标(不包含)。 如果省略该参数,那么返回的子串会一直到字符串的结尾。
返回值提取后生成的新字符串。
4.substr()
substr()
功能描述可在字符串中抽取从 开始 下标开始的指定数目的字符。
语法substr(start,length)
参数start必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。length可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
返回值抽取从 开始 下标开始的指定数目的字符
5.split()
split()
功能描述用于把一个字符串分割成字符串数组。
语法split(separator,limit)
参数separator可选。字符串或正则表达式,从该参数指定的地方分割 string Object。 limit*可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 string Object 分割成子串创建的。返回的数组中的字串不包括 separator 自身

注意点: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

2.4.3 检索方法

1. includes()
includes()
功能描述用于判断字符串是否包含指定的子字符串。
语法array.includes(item, [start])
参数item必需,要查找的字符串。start:可选,设置从那个位置开始查找,默认为 0。 如果该参数为负数,将按照索引为0开始检索
返回值如果找到匹配的字符串返回 true,否则返回 false。
2. indexof()
indexOf()
功能描述返回指定内容在元字符串中的第一次出现的位置。
语法indexOf(item,[start])
参数item 必需,规定需检索的字符串值,start可选的,整数参数。规定在字符串中开始检索的位置。 它的合法取值是 0 到 string Object.length - 1。如省略该参数,则将从字符串的首字符开始检索。 如果该参数为负数,将按照索引为0开始检索。
返回值返回查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。
3.lastIndexOf()
lastIndexOf()
功能描述该方法将从后向前检索字符串,返回是从起始位置 (0) 开始计算子字符串最后出现的位置。
语法lastIndexOf(item,[start])
参数item必需。规定需检索的字符串值。start可选的整数参数。规定在字符串中开始检索的位置。 它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。 如果该参数为负数,将按照索引为0开始检索。
返回值返回查找的字符串最后出现的位置,如果没有找到匹配字符串则返回 -1。
4.search()
search()
功能描述方法用于检索字符串中指定的子字符串,或与正则表达式相匹配的子字符串,在字符串中首次匹配项的索引。
语法search(searchvalue)
参数必须。查找的字符串或者正则表达式。56
返回值如果匹配成功,则 search() 返回在字符串中首次匹配项的索引;否则,返回 -1
5. 替换方法replace()
replace()
功能描述用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法replace(searchvalue,newvalue)
参数searchvalue必需。规定子字符串或要替换的模式的 RegExp 对象。 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。 newvalue必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

2.4.4 去除空白trim()

trim()
功能描述trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等
语法trim()
参数
返回值返回移除头尾空格的字符串。

2.4.5 大小写转换方法

1.toUpperCase()
toUpperCase()
功能描述所有小写字符全部被转换为大写字符
语法string.toUpperCase()
参数
返回值生成的新字符串。
2.toLowerCase()
toLowerCase()
功能描述所有大写字符全部被转换为小写字符
语法string.toLowerCase()
参数
返回值生成的新字符串。

2.4.6 总结String 对象操作方法

方法描述
charAt()返回在指定位置的字符。
charCodeAt()返回在指定的位置的字符的 Unicode 编码。
String.fromCharCode()将 Unicode 编码转为字符。
concat()连接两个或更多字符串,并返回新的字符串。
slice()提9取字符串的片断,并在新的字符串中返回被提取的部分。不包含结束的索引
substring()提取字符串中两个指定的索引号之间的字符。
substr()从起始索引号提取字符串中指定数目的字符。
split()把字符串分割为字符串数组。
includes()查找字符串中是否包含指定的子字符串。
indexOf()返回某个指定的字符串值在字符串中首次出现的位置。
lastIndexOf()从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
search()查找与字符串或正则表达式相匹配的字符。
replace()用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
trim()参数值无。去除字符串前后的空白。
toLowerCase()把字符串转换为小写。
toUpperCase()把字符串转换为大写。

2.5 Number对象

// 创建 Number 对象
var objNum = new Number(23);
var num = 123.456;
//把 Number 四舍五入为指定小数位数的数字
console.log(num.toFixed(2));
  • Number 对象方法

方法描述
toFixed(x)把数字转换为字符串,结果的小数点后有指定位数的数字。
toString([radix])把数字转换为字符串, radix可选参数,指定要用于数字到字符串的转换的基数 (从 2 到 36)。如果未指定 radix 参数,则默认值为 10。
toLocaleString()返回这个数字在特定语言环境下的表示字符串。

2.6 Boolean对象

var bool1 = false;
var bool2 = new Boolean(true);
console.log(bool1)
console.log(bool2)

2.7 日期对象

Date对象,Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。Date 实例用来处理日期和时间

2.7.1 使用Date实例化日期对象

  • 获取当前时间必须实例化:

var now = new Date();
  • 获取指定时间的日期对象

var date1 = new Date('2022/1/16');
var date2 = new Date('2022-1-16 0:0:0');

注意:如果创建实例时并未传入参数,则得到的日期对象是当前时间对应的日期对象

2.7.2 使用Date实例的方法和属性

方法名说明代码
getFullYear()获取当年dateObj.getFullYear()
getMonth()获取当月(0-11)dateObj.getMonth()
getDate()获取当天日期dateObj.getDate()
getDay()获取星期几(周日0到周六6)dateObj.getDay()
getHours()获取当前小时dateObj.getHours()
getMinutes()获取当前分钟dateObj.getMinutes()
getSeconds()获取当前秒钟dateObj.getSeconds()

2.7.3 通过Date实例获取总毫米数(时间戳)

  • 总毫秒数的含义

    基于1970年1月1日(世界标准时间)起的毫秒数

  • 获取总毫秒数

    // 实例化Date对象
    var now = new Date();
    // 1. 用于获取对象的原始值
    console.log(date.valueOf())	
    console.log(date.getTime())	
    // 2. 简单写可以这么做
    var now = +new Date();			
    // 3. HTML5中提供的方法,有兼容性问题
    var now = Date.now();

2.8 Math对象

Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。

属性、方法名功能
Math.PI圆周率
Math.max()/Math.min()求最大和最小值
Math.abs()绝对值
Math.pow(x,y)pow() 方法可返回 x 的 y 次幂的值。
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四舍五入版 就近取整 注意 -3.5 结果是 -3 (往大的取)
Math.random()获取范围在[0,1)内的随机值

获取指定范围内的随机整数

function getRandom(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min); 
}

2.9 JavaScript 全局对象

全局对象(global object)在javascript中有着重要的用途:全局对象的属性是全局定义的符号,通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。

  • 顶层对象在浏览器环境中指的是window对象,在Node环境中指的是global对象。在ES5中顶层对象的属性与全局变量是等价的。

  • 全局对象,Global中封装的方法不需要对象就可以直接调用。 直接写:方法名();

  • 分类

    • 1.全局属性:比如undefined、Infinity以及NaN。

    • 2.全局对象:比如Math、JSON

    • 3.全局函数:比如isNaN()、isFinite()、parseInt()和eval()等。

    • 4.全局构造器(constructor),也即全局类。比如Date()、RegExp()、String()、Object()、 Function()和Array()、Number()、Boolean()等。

顶层函数(全局函数)

函数描述
decodeURI()解码某个编码的 URI。
decodeURIComponent()解码一个编码的 URI 组件。
encodeURI()把字符串编码为 URI。
encodeURIComponent()把字符串编码为 URI 组件。
escape()可对字符串进行编码。
unescape()对由 escape() 编码的字符串进行解码。
eval()计算 JavaScript 字符串,并把它作为脚本代码来执行。
isNaN()检查其参数是否是非数字值。
Number()把对象的值转换为数字。
parseFloat()解析一个字符串并返回一个浮点数。
parseInt()解析一个字符串并返回一个整数。
String()把对象的值转换为字符串。

3. 简单数据类型和复杂数据类型

3.1 简单数据类型

简单类型(基本数据类型、值类型):在存储时变量中存储的是值本身,包括String ,Number,Boolean,Undefined,Null。

3.2 复杂数据类型

复杂数据类型(引用类型):在存储时变量中存储的仅仅是地址(引用),通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date、Function等。

3.3 对于复杂数据类型的访问、增删改

3.3.1 数组

var arr = [2,4,5,8]
//访问
console.log(arr[2]);
//增加
arr[4] = 9;
//修改
arr[0] = 1;
//删除--数值--保留空的位置
delete arr[3];
// 方式1 推荐 
arr = [];
// 方式2 
arr.length = 0;
// 方式3
arr.splice(0, arr.length);
arr.splice(0);

3.3.2 对象

var obj1 = {
    myName: '雷布斯',
    age: 40,
    gender: '男',
    eat: function() {
        console.log('吃饭啦!');
    }
};
// 访问属性
console.log(obj1.myName)
console.log(obj1.age)
console.log(obj1['gender'])
obj1.eat();
obj1['eat']();

// 修改属性

obj1.myName = '乔布斯';
obj1['age'] = 50;

obj1.eat = function() {
    console.log('又该吃饭啦');
};
obj1['eat'] = function() {
    console.log('中午吃啥呀');
};
// 添加属性
obj1.address = '中国';
obj1.sleep = function() {
    console.log('年轻人,不要老熬夜,洗洗睡吧')
};
// 删除属性
delete obj1.age;
delete obj1.address;
delete obj1['gender'];

3.4 instanceof检测复杂数据类型

在 JavaScript 中,判断一个变量的类型常常,会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。ECMAScript 引入了另一个 Java 运算符 instanceof 来解决这个问题。instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。

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

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

相关文章

Fantasy Forest Environment

此包包含120多个预制件,您需要创建风格化的森林环境:从树木、灌木丛到岩石和蘑菇。演示场景有夏季、秋季和冬季变体! 下载:​​Unity资源商店链接资源下载链接 效果图:

Java八股文(JVM)

Java八股文のJVM JVM JVM 什么是Java虚拟机(JVM)? Java虚拟机是一个运行Java字节码的虚拟机。 它负责将Java程序翻译成机器代码并执行。 JVM的主要组成部分是什么? JVM包括以下组件: ● 类加载器(ClassLoa…

Linux应用实战之网络服务器(三)CSS介绍

0、前言 准备做一个Linux网络服务器应用实战,通过网页和运行在Linux下的服务器程序通信,这是第三篇,介绍一下CSS,优化上一篇文章中制作的HTML页面。 1、CSS常用语法 CSS(层叠样式表)是用于描述HTML或XML…

数据库原理与应用(SQL Server)笔记 关系数据库

目录 一、关系数据库的基本概念(一)关系数据库的定义(二)基本表、视图(三)元组、属性、域(四)候选码、主码、外码 二、关系模型三、关系的完整性(一)实体完整…

Android Studio控制台输出中文乱码问题

控制台乱码现象 安卓在调试阶段,需要查看app运行时的输出信息、出错提示信息。 乱码,会极大的阻碍开发者前进的信心,不能及时的根据提示信息定位问题,因此我们需要查看没有乱码的打印信息。 解决步骤: step1: 找到st…

阿里通义千问Qwen1.5开源MoE模型

介绍 2024年3月28日,阿里团队推出了Qwen系列的首个MoE模型,Qwen1.5-MoE-A2.7B。它仅拥有27亿个激活参数,但其性能却能与当前最先进的70亿参数模型,如Mistral 7B和Qwen1.5-7B相媲美。相较于包含65亿个Non-Embedding参数的Qwen1.5-…

电脑关机速度很慢怎么解决?

给电脑关机,总是要很久才完全关闭。这是因为计算机运行了太长时间,并且打开的程序太多,则关闭时间超过十秒钟,这是正常的现象。还有就是计算机升级或补丁程序更新也将导致计算机缓慢关闭。此时,建议耐心等待关闭完成。…

SCI论文改写、防查重神器QuillBot如何付费高级版本?

写论文时候的修改软件QuillBot,正常的文献里的句子帖进去,直接给各种倒装和各种同义词替换至少10次,保证查不出来是别人的句子。 QuillBot是一个帮助改写内容的转述工具。 Quillbot让你的内容重组变得简单。 转述是指你用不同的词来表达&a…

深度学习每周学习总结P3(天气识别)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 数据链接 提取码:o3ix 目录 0. 总结1. 数据导入部分数据导入部分代码详解:a. 数据读取部分a.1 提问:关…

Nginx【概述:网页服务器 并发能力强】【常见命令】【部署实战】【反向代理】

Nginx-概述 介绍下载和安装下载安装重点目录和文件如下 Nginx-命令常用命令1). 查看版本2). 检查配置文件3). 启动4). 停止5). 重新加载 环境变量配置 Nginx-应用配置文件结构部署静态资源介绍测试1). 将静态资源上传到 /usr/local/nginx/html 目录2). 启动nginx3). 访问4). 配…

Linux命令及中间件安装

一.Linux简介 1.Linux操作系统概述 Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。Linux是由Linus Torvalds(林纳斯托瓦兹)起初开发的,由于源代码的开放性,现在…

Flask后端框架搭建个人图库

Hello,我是"小恒不会java" 前言 最近发现自己有一些站点图片丢失,原来是用了人家的链接。考虑到使用对象存储容易被刷流量,可以用flask这种轻量级框架快速实现网页登陆操作,行,也就不考虑正式生产环境那些复…

Leetcode146. LRU 缓存

Every day a Leetcode 题目来源&#xff1a;146. LRU 缓存 解法1&#xff1a;哈希表 链表 代码&#xff1a; /** lc appleetcode.cn id146 langcpp** [146] LRU 缓存*/// lc codestart class LRUCache { private:unordered_map<int, list<pair<int, int>>:…

攻防世界-baby_web

题目信息 相关知识 使用bp进行抓包 解题过程 题目界面如下所示: 试图找index界面&#xff1a; 发现又跳转到http://61.147.171.105:51201/1.php页面&#xff0c;因此说明61.147.171.105:51201/index.php是存在的&#xff08;因为笔者试了&#xff0c;不存在的页面会直接报…

fastadmin学习04-一键crud

FastAdmin 默认内置一个 test 表&#xff0c;可根据表字段名、字段类型和字段注释通过一键 CRUD 自动生成。 create table fa_test (id int unsigned auto_increment comment ID primary key,user_id int(10) default 0 null…

【python 数据可视化】 WordCloud词云图

目录 词云简介 准备工作 安装方法一&#xff1a; 安装方法二&#xff1a; 生成词云步骤 数据预处理&#xff1a; 分词&#xff1a; 统计词频出现的次数&#xff1a; 去除词语&#xff1a; 生成词云&#xff1a; 显示词云&#xff1a; 保存词云&#xff1a; 完整代码 词…

逐步学习Go-Select多路复用

概述 这里又有多路复用&#xff0c;但是Go中的这个多路复用不同于网络中的多路复用。在Go里&#xff0c;select用于同时等待多个通信操作&#xff08;即多个channel的发送或接收操作&#xff09;。Go中的channel可以参考我的文章&#xff1a;逐步学习Go-并发通道chan(channel)…

OpenHarmony中的LLDB高性能调试器

概述 LLDB&#xff08;Low Lever Debugger&#xff09;是新一代高性能调试器。详细说明参考 LLDB官方文档 。 当前OpenHarmony中的LLDB工具是在 llvm15.0.4 基础上适配演进出来的工具&#xff0c;是HUAWEI DevEco Studio工具中默认的调试器&#xff0c;支持调试C和C应用。 工…

Codeforces Round 841 (Div. 2) C. Even Subarrays

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

基于SVM的PLOSAR图像分类

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…