前端:JavaScript (学习笔记)【2】

目录

一,数组的使用

1,数组的创建    [  ]

2,数组的元素和长度

3,数组的遍历方式

4,数组的常用方法

二,JavaScript中的对象

1,常用对象

(1)String和java中的String很类似,的常用方法

(2) Number的常用属性和方法(包装类)

     [ 1 ] 属性

     [ 2 ] 数学方法

(3)Math对象

(4)Date对象

    [1] 创建 Date 对象: new Date()

  [2] 其他方法

2,自定义对象

(1)调用系统的构造函数创建对象(Object)

(2)自定义构造函数创建对象(function)

(3)字面量的方式创建对象(JSON)

3,JS中原型的使用(了解)

(1)构造方法与原型之间的关系

(2)当前类对象和原型的关系

4,JS中的原型链


一,数组的使用

1,数组的创建    [  ]

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JavaSCript</title><script type="text/javascript">/*第一种*创建了一个空数组 new Array();* */var arr=new Array();arr[0]=1;console.log(arr);/**第二种* 创建定长数组 new Array(5);* */var arr2=new Array(5);arr2[0]="x";arr2[4]=true;console.log(arr2)/** 第三种创建语法* 创建时,直接指定元素值* */var arr3=new Array("asdf",10,20.3,true);console.log(arr3)/**第四种语法* 相当于第三种语法的简写* */var arr4=["asdf",10,20.3,true];console.log(arr4)</script></head><body></body>
</html>

2,数组的元素和长度

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JavaSCript</title><script type="text/javascript">var arr=[11,22,33];console.log(arr)console.log(arr[0]);console.log(arr.length)/** JS中的数组是可以通过修改length属性来改变数组长度的* */arr.length=5;console.log(arr)/** JS的数组可以通过索引改变数组的长度* */arr[9]=99;console.log(arr);</script></head><body></body>
</html>

3,数组的遍历方式

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JavaSCript</title><script type="text/javascript">var arr=[5,7,3,1,6,2,4,9,8];/** 普通for循环遍历数组* */for(var i=0;i<arr.length;i++){console.log(arr[i])}/**foreach循环遍历数组* JS 中foreach写法为  for( var i in 数组)* i 不是元素  是索引* */for (var i in arr){console.log(arr[i])}</script></head><body></body>
</html>

4,数组的常用方法

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JavaSCript</title><script type="text/javascript">//查询元素索引的方法var arr=[1,2,3,4,5,6,7,8,9];var index =arr.indexOf(7);console.log(index)// 合并两个数组var hege = ["Cecilie", "Lone"];var stale = ["Emil", "Tobias", "Linus"];var children = hege.concat(stale);console.log(children)// 合并三个数组var parents = ["Jani", "Tove"];var brothers = ["Stale", "Kai Jim", "Borge"];var children = ["Cecilie", "Lone"];var family = parents.concat(brothers, children);console.log(family)// 合并字符串var fruits = ["Banana", "Orange", "Apple", "Mango"];var fs =fruits.join();console.log(fs)// 移除最后一个元素var fruit=fruits.pop();console.log(fruits)console.log(fruit)// 想结尾增加元素fruits.push("Grape");console.log(fruits)//反转数组fruits.reverse();console.log(fruits)//删除数组第一个元素var ss =fruits.shift();console.log(fruits);console.log(ss)//向第一个位置添加元素fruits.unshift("火龙果");console.log(fruits);// 截取子数组  从哪个索引开始,到哪个索引结束 包头不包尾var citrus = fruits.slice(1,3);console.log(citrus)var numbers =[1,2,3,4,5,6,7,8,9]/** 删除数组中的某些元素* 2 从哪个索引开始删除* 3 删除多个少个元素* *//*numbers.splice(2,3);console.log(numbers)*//** 如果第二个参数是0 那么就变成了在指定索引位置增加元素* */numbers.splice(2,0,100);console.log(numbers)	
}</script></head><body></body>
</html>

二,JavaScript中的对象

1,常用对象

JS基于对象的脚本语言 ,有类和对象,但是没有封装,继承,多态,Java script 中有一些浏览器直接识别并使用的对象,常见的对象有Array,String对象,Math对象,Number对象,Date对象等等.

(1)String和java中的String很类似,的常用方法

方法    描述
charAt()    返回在指定位置的字符。
charCodeAt()返回在指定的位置的字符的 Unicode 编码。
concat()    连接两个或更多字符串,并返回新的字符串。
fromCharCode()    将 Unicode 编码转为字符。
indexOf()    返回某个指定的字符串值在字符串中首次出现的位置。
includes()    查找字符串中是否包含指定的子字符串。
lastIndexOf()    从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
match()   查找找到一个或多个正则表达式的匹配。
repeat()    复制字符串指定次数,并将它们连接在一起返回。
replace()    在字符串中查找匹配的子串, 并替换与正则表达式匹配的子串。
search()    查找与正则表达式相匹配的值。
slice()    提取字符串的片断,并在新的字符串中返回被提取的部分。
split()    把字符串分割为字符串数组
startsWith()      查看字符串是否以指定的子字符串开头。 。
substr()    从起始索引号提取字符串中指定数目的字符。
substring()    提取字符串中两个指定的索引号之间的字符。
toLowerCase()    把字符串转换为小写。
toUpperCase()    把字符串转换为大写。
trim()   去除字符串两边的空白
toLocaleLowerCase()  根据本地主机的语言环境把字符串转换为小写。
toLocaleUpperCase()    根据本地主机的语言环境把字符串转换为大写。
valueOf()    返回某个字符串对象的原始值。
toString()    返回一个字符串。
 <script>// 根据索引获取字符/*var str ="hello js";var c =str.charAt(6);console.log(c)*/// 拼接字符串var a="hi";var b="good";var c ="China";var d=c.concat(a,b);console.log(d)var e ="adsf";var f=e.repeat(3);console.log(f)// 截取字符串var g="helloJhon";var h=g.substr(1,5);// 从哪里开始,连续截取多少个字符console.log(h)// 包头不包尾var i=g.substring(1,7);// 从哪里开始,到哪里结束console.log(i)// 获取长度console.log(g.length)// length属性// JS中非常特殊的一个函数,可以将一段字符串当做JS代码来执行// 将字符串内容解析称JS代码并运行var testStr=" var x =10 ";eval(testStr);console.log(x)</script>

(2) Number的常用属性和方法(包装类)

     [ 1 ] 属性
属性描述
Number.MAX_VALUE最大值
Number.MIN_VALUE最小值
Number.NaN 非数字
Number.NEGATIVE_INFINITY  负无穷,在溢出时返回
Number.POSITIVE_INFINITY正无穷,在溢出时返回
Number.EPSILON  表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别
Number.MIN_SAFE_INTEGER最小安全整数。
Number.MAX_SAFE_INTEGER最大安全整数
     [ 2 ] 数学方法
方法描述
Number.parseFloat() 将字符串转换成浮点数,和全局方法 parseFloat() 作用一致。
Number.parseInt()将字符串转换成整型数字,和全局方法 parseInt() 作用一致。
Number.isFinite()判断传递的参数是否为有限数字。
Number.isInteger() 判断传递的参数是否为整数。
Number.isNaN()判断传递的参数是否为 isNaN()。
Number.isSafeInteger() 判断传递的参数是否为安全整数。

    

<script>console.log(Number.MAX_VALUE)console.log(Number.MIN_VALUE)console.log(Number.MAX_SAFE_INTEGER)console.log(Number.MIN_SAFE_INTEGER)console.log(Number.parseFloat("10.123")+20);console.log(Number.parseInt("30")+20);var i = 10%0;var j = 10/0;console.log(i)console.log(j)console.log(Number.isNaN(i)) // is not a number 是不是NANconsole.log(Number.isFinite(j))console.log(Number.isSafeInteger(Number.MAX_VALUE))console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER))</script>

(3)Math对象

<script>console.log(Math.round(3.64))console.log(Math.floor(3.14))// 地板数console.log(Math.ceil(3.01))// 天花板数console.log(Math.max(1,2,3,5.6))console.log(Math.min(1,2,3,5.6))console.log(Math.random())console.log(Math.sqrt(16))// 属性console.log(Math.PI)// 生成给定范围内的随机数var start =10;var end =16;var result =Math.floor(Math.random()*(end-start+1)+start);console.log(result)</script>

(4)Date对象

Date 对象用于处理日期与时间。

    [1] 创建 Date 对象: new Date()

以下四种方法同样可以创建 Date 对象:

var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
  [2] 其他方法
方法名方法描述
getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)
getDay()  从 Date 对象返回一周中的某一天 (0 ~ 6)
getFullYear() 从 Date 对象以四位数字返回年份。
getHours()返回 Date 对象的小时 (0 ~ 23)。
getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)
getMinutes()返回 Date 对象的分钟 (0 ~ 59)
getMonth()从 Date 对象返回月份 (0 ~ 11)
getSeconds()返回 Date 对象的秒数 (0 ~ 59)
getTime()返回 1970 年 1 月 1 日至今的毫秒数
getTimezoneOffset()返回本地时间与格林威治标准时间 (GMT) 的分钟差
getUTCDate()根据世界时从 Date 对象返回月中的一天 (1 ~ 31)
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCFullYear()根据世界时从 Date 对象返回四位数的年份
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)
getUTCMilliseconds()根据世界时返回 Date 对象的毫秒(0 ~ 999)。
getUTCMinutes()根据世界时返回 Date 对象的分钟 (0 ~ 59)
getUTCMonth()根据世界时从 Date 对象返回月份 (0 ~ 11)
getUTCSeconds()根据世界时返回 Date 对象的秒钟 (0 ~ 59)
parse()返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setFullYear() 设置 Date 对象中的年份(四位数字)
setHours()设置 Date 对象中的小时 (0 ~ 23)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)
setMinutes()设置 Date 对象中的分钟 (0 ~ 59)
setMonth() 设置 Date 对象中月份 (0 ~ 11)
setSeconds()设置 Date 对象中的秒钟 (0 ~ 59)
setTime()setTime() 方法以毫秒设置 Date 对象
setUTCDate()根据世界时设置 Date 对象中月份的一天 (1 ~ 31)
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)
setUTCHours()根据世界时设置 Date 对象中的小时 (0 ~ 23)
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)
setUTCMinutes()根据世界时设置 Date 对象中的分钟 (0 ~ 59)
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)
setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段
toDateString()把 Date 对象的日期部分转换为字符串
toISOString() 使用 ISO 标准返回字符串的日期格式
toJSON()   以 JSON 数据格式返回日期字符串
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
toLocaleTimeString()根据本地时间格式,把 Date 对象的时间部分转换为字符串
toLocaleString()根据本地时间格式,把 Date 对象转换为字符串。
toString() 把 Date 对象转换为字符串
toTimeString() 把 Date 对象的时间部分转换为字符串
toUTCString() 

根据世界时,把 Date 对象转换为字符串

实例:

var today = new Date();
var UTCstring = today.toUTCString();

UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数
valueOf()返回 Date 对象的原始值。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script>/** 在程序中 西方的月份编号从0开始* 1 2 3 4 5 6 * 0 1 2 3 4 5* */var today = new Date()var d1 = new Date("October 13, 1975 11:13:00")var d2 = new Date(79,5,24)var d3 = new Date(79,5,24,11,33,0)console.log(d1);console.log(d2);console.log(d3);var d4 = new Date(2048,0,13,16,51,20,123)console.log(d4)// set***  略自己尝试一下console.log(d4.getYear());// 和1900年的年份差console.log(d4.getFullYear());// 完整的年份console.log(d4.getMonth());console.log(d4.getDate());console.log(d4.getHours());console.log(d4.getMinutes());console.log(d4.getSeconds());console.log(d4.getMilliseconds());var d5 = new Date(2048,0,13,16,51,20,456)console.log(d4<d5)// 关于日期对象格式化处理/*date对象的格式化方法*//*修改Date原型,添加一个format格式化的方法*/Date.prototype.format = function(fmt){var o = {"M+" : this.getMonth()+1,                 //月份"d+" : this.getDate(),                    //日"h+" : this.getHours(),                   //小时"m+" : this.getMinutes(),                 //分"s+" : this.getSeconds(),                 //秒"q+" : Math.floor((this.getMonth()+3)/3), //季度"S"  : this.getMilliseconds()             //毫秒};if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));}for(var k in o){if(new RegExp("("+ k +")").test(fmt)){fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));  }       }return fmt;}var fmt=d4.format("yyyy-MM-dd hh:mm:ss");console.log(fmt)</script></head><body></body>
</html>

2,自定义对象

JS除了一些常用方法和类以外,允许我们自己定义对象,在JS中自定义对象有三种可用的语法格式

(1)调用系统的构造函数创建对象(Object)

<script>// 实例化对象var obj =new Object();// 给对象添加属性obj.name="张思锐";obj.age=35;obj.gender="男";// 给对象添加方法obj.eat=function(food){console.log(this.name+"正在吃"+food)	}// 查看对象属性console.log(obj.name);console.log(obj.age);console.log(obj.gender);// 调用对象方法obj.eat("蛋糕");</script>


(2)自定义构造函数创建对象(function)

<script>// 准备一个构造方法 function Person(pname,page){this.pname=pname;this.page=page;this.eat=function(food){console.log(this.page+"岁的"+this.pname+"正在吃"+food);}	}var p1=new Person("张思锐",10);// 查看对象属性console.log(p1.pname);console.log(p1.page);// 调用对象方法p1.eat("油条");
</script>


(3)字面量的方式创建对象(JSON)

JSON——JavaScript  native Object  ;javascript的原生对象。
它是js封装数据的一种格式,它是通过Object,Array 对象演化出来的。是最理想的数据交换语言。     

<script>/*	JSON var 对象名 ={属性名:属性值,属性名:属性值, ... ... ,方法名:方法声明,方法名:方法声明}*/var person ={name:"晓明",gender:"男",age:10,eat:function(food){console.log(this.age+"岁的"+this.gender+"孩儿"+this.name+"正在吃"+food)}};// 查看对象属性// 调用对象方法console.log(person.name)console.log(person.gender)console.log(person.age)person.eat("馒头")</script>

3,JS中原型的使用(了解)

  • 当我们用构造方法创建一个类时,在内存会预先调用构造方法创建一个对象,这对象我们称之为原型对象,

(1)构造方法与原型之间的关系

  • 构造方法对象中有一个prototype属性指向该对象,原型对象中有一个constructor属性指向构造方法.获得一个类的原型对象可以通过类名.prototype的方式获得.

// 准备一个构造方法 function Person(pname,page){this.pname=pname;this.page=page;this.eat=function(food){console.log(this.page+"岁的"+this.pname+"正在吃"+food);}	}console.log(Person)// Constructor对象  构造方法对象console.log(Person.prototype)

(2)当前类对象和原型的关系

当前类的每一个对象内部有一个 _proto_的一个属性,指向他们的原型, 当我们用对象获取属性和调用方法时,如果当前对象中没有,那么会去他们所对应的原型对象中去找,也就是说,我们通过对原型的操作可以实现为一个类所有的对象添加属性和方法.

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script>// 准备一个构造方法 function Person(pname,page){this.pname=pname;this.page=page;this.eat=function(food){console.log(this.page+"岁的"+this.pname+"正在吃"+food);}	}console.log(Person)// Constructor对象  构造方法对象console.log(Person.prototype)// 给Person所有的对象增加属性和方法//给Person的原型增加属性Person.prototype.gender="男";//给Person的原型增加一个方法Person.prototype.sleep=function(){console.log(this.page+"岁的"+this.gender+"孩儿"+this.pname+"正在睡觉");}var p1=new Person("张三",10);p1.eat("蛋挞")p1.sleep();var p2=new Person("李四",8);p2.eat("牛角面包")p2.sleep()console.log(p1);console.log(p2);</script></head><body></body>
</html>

4,JS中的原型链

  • 一个类的原型是一个Object类的对象,
  • 也就是说,原型也有一个_proto_属性,指向Object的原型对象,
  • 那么也就是说 Person prototype中没有的属性和方法会继续向Object  prototype去找,
  • 也就是说,我们在Object原型中添加的属性和方法,我们在person1和person2中也可以使用.那么这种连续的 _proto_属性指向就形成了原型链

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script>// 准备一个构造方法 function Person(pname,page){this.pname=pname;this.page=page;this.eat=function(food){console.log(this.page+"岁的"+this.pname+"正在吃"+food);}	}// 给所有的对象增加属性和方法//给最终原型增加属性Object.prototype.gender="男";//给Person的原型增加一个方法Object.prototype.sleep=function(){console.log(this.page+"岁的"+this.gender+"孩儿"+this.pname+"正在睡觉");}var p1=new Person("张三",10);p1.eat("蛋挞")p1.sleep();var p2=new Person("李四",8);p2.eat("牛角面包")p2.sleep()console.log(p1);console.log(p2);</script></head><body></body>
</html>

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

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

相关文章

QML学习 —— 28、3种等待指示控件(附源码)

效果如下 说明 BusyIndicator应用于指示在加载内容或UI被阻止等待资源可用时的活动。BusyIndicator类似于一个不确定的ProgressBar。两者都可以用来指示背景活动。主要区别在于视觉效果,ProgressBar还可以显示具体的进度(当可以确定时)。由于视觉差异,繁忙指示器和不确定的…

Java 基于SpringBoot+Vue的家政服务管理平台

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

DataGear 5.2.0 发布,数据可视化分析平台

DataGear 企业版 1.3.0 已发布&#xff0c;欢迎体验&#xff01; http://datagear.tech/pro/ DataGear 5.2.0 发布&#xff0c;图表插件支持定义依赖库、严重 BUG 修复、功能改进、安全增强&#xff0c;具体更新内容如下&#xff1a; 重构&#xff1a;各模块管理功能访问路径…

nature communications论文 解读

题目《Transfer learning with graph neural networks for improved molecular property prediction in the multi-fidelity setting》 这篇文章主要讨论了如何在多保真数据环境&#xff08;multi-fidelity setting&#xff09;下&#xff0c;利用图神经网络&#xff08;GNNs&…

Flutter:SlideTransition位移动画,Interval动画延迟

配置vsync&#xff0c;需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// 定义 AnimationControllerlate AnimationController _controller;overridevoid initState() {super.…

svn 崩溃、 cleanup失败 怎么办

在使用svn的过程中&#xff0c;可能出现整个svn崩溃&#xff0c; 例如cleanup 失败的情况&#xff0c;类似于 这时可以下载本贴资源文件并解压。 或者直接访问网站 SQLite Download Page 进行下载 解压后得到 sqlite3.exe 放到发生问题的svn根目录的.svn路径下 右键呼出pow…

GPT系列文章

GPT系列文章 GPT1 GPT1是由OpenAI公司发表在2018年要早于我们之前介绍的所熟知的BERT系列文章。总结&#xff1a;GPT 是一种半监督学习&#xff0c;采用两阶段任务模型&#xff0c;通过使用无监督的 Pre-training 和有监督的 Fine-tuning 来实现强大的自然语言理解。在 Pre-t…

Linux线程(Linux和Windows的线程区别、Linux的线程函数、互斥、同步)

Linux线程&#xff08;Linux和Windows的线程区别、Linux的线程函数、互斥、同步&#xff09; 1. 线程介绍 线程的概念&#xff1a; 线程是 CPU 调度的基本单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0…

Large Spatial Model:End-to-end Unposed Images to Semantic 3D 论文解读

目录 一、概述 二、相关工作 1、SfM和可微神经表示 2、端到端的Image-to-3D 三、LSM 1、密集几何预测 2、2D信息特征提取 3、点特征融合 4、可微渲染 5、损失函数 四、实验 一、概述 该论文提出一种大型空间模型&#xff08;Larget Spatial Model,LSM&#xff09;…

Leetcode207. 课程表(HOT100)

链接 题解&#xff1a;先统计入度为0的点&#xff0c;如果一个节点入度为0&#xff0c;说明没有课程指向它&#xff0c;那么你就可以学习它了。反之说明还有先修课。 注意&#xff1a;图存在拓扑排序等价于图不存在环。其实可以想出&#xff1a;如果是一个环&#xff0c;那么…

JavaScript将至

JS是什么&#xff1f; 是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互效果 作用捏&#xff1f; 网页特效 (监听用户的一些行为让网页作出对应的反馈) 表单验证 (针对表单数据的合法性进行判断) 数据交互 (获取后台的数据, 渲染到前…

Centos-stream 9,10 add repo

Centos-stream repo前言 Centos-stream 9,10更换在线阿里云创建一键更换repo 自动化脚本 华为centos-stream 源 , 阿里云centos-stream 源 华为epel 源 , 阿里云epel 源vim /centos9_10_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.h

网络安全概论

一、 网络安全是一个综合性的技术。在Internet这样的环境中&#xff0c;其本身的目的就是为了提供一种开放式的交互环境&#xff0c;但是为了保护一些秘密信息&#xff0c;网络安全成为了在开放网络环境中必要的技术之一。网络安全技术是随着网络技术的进步逐步发展的。 网络安…

【Android】android compat理解

1&#xff0c;前提 即便是在同一手机上安装的不同apk&#xff0c;其编译的apk不同&#xff0c;也会导致行为上的差异。如SDK34有限制后台启动&#xff0c;但如果安装的apk所依赖的sdk是33&#xff0c;则不会表现出此差异。这是如何实现的呢&#xff1f;其实&#xff0c;本质是…

《数据结构》学习系列——图(中)

系列文章目录 目录 图的遍历深度优先遍历递归算法堆栈算法 广度优先搜索 拓扑排序定义定理算法思想伪代码 关键路径基本概念关键活动有关量数学公式伪代码时间复杂性 图的遍历 从给定连通图的某一顶点出发&#xff0c;沿着一些边访问遍图中所有的顶点&#xff0c;且使每个顶点…

【C++】static修饰的“静态成员函数“--静态成员在哪定义?静态成员函数的作用?

声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b;用 static修饰的成员函数&#xff0c;称之为静态成员函数。静态成员变量一定要在类外进行初始化 一、静态成员变量 1)特性 所有静态成员为所有类对象所共…

MySQL面试-1

InnoDB中ACID的实现 先说一下原子性是怎么实现的。 事务要么失败&#xff0c;要么成功&#xff0c;不能做一半。聪明的InnoDB&#xff0c;在干活儿之前&#xff0c;先将要做的事情记录到一个叫undo log的日志文件中&#xff0c;如果失败了或者主动rollback&#xff0c;就可以通…

JavaScript中的this指向绑定规则(超全)

JavaScript中的this指向绑定规则&#xff08;超全&#xff09; 1.1 为什么需要this? 为什么需要this? 在常见的编程语言中&#xff0c;几乎都有this这个关键字&#xff08;Objective-C中使用的是self),但是在JavaScript中的this和常见的面向对象语言中的this不太一样 常见面…

Linux---ps命令

​​​​​​Linux ps 命令 | 菜鸟教程 (runoob.com) process status 用于显示进程的状态 USER: 用户名&#xff0c;运行此进程的用户名。PID: 进程ID&#xff08;Process ID&#xff09;&#xff0c;每个进程的唯一标识号%CPU: 进程当前使用的CPU百分比%MEM: 进程当前使用的…

【Spiffo】环境配置:VScode+Windows开发环境

摘要&#xff1a; 在Linux下直接开发有时候不习惯快捷键和操作逻辑&#xff0c;用Windows的话其插件和工具都更齐全、方便&#xff0c;所以配置一个Windows的开发环境能一定程度提升效率。 思路&#xff1a; 自己本地网络内远程连接自己的虚拟机&#xff08;假定用的是虚拟机…