Java Web(四)--JavaScript

介绍

JavaScript 教程

    JavaScript 能改变 HTML 内容,能改变 HTML 属性,能改变 HTML 样式 (CSS),能完成页面的数据验证;
    JS 需要运行浏览器来解析执行JavaScript 代码
    JS 是 Netscape 网景公司的产品,最早取名为 LiveScript,后更名为 JavaScript,和 Java 没有关系;

  •         JavaScript 是一种解释型的脚本语言,C、C++等语言先编译后执行,而 JavaScript 是在程序的运行过程中逐行进行解释。
  •         JavaScript 是一种基于对象的脚本语言,可以创建对象,也可使用现有对象(有对象)。
  •         JavaScript 是弱类型的,对变量的数据类型不做严格的要求,变量的数据类型在运行过程可以变化。
  •         跨平台性(只要是可以解释  JS 的浏览器都可以执行,和平台无关);
  •         使用垃圾回收的编程语言,开发者不需要操心内存分配和回收,主流的垃圾回收算法是标记算法;

说明:

js代码可以写在 script标签中;
type="text/javascript" :表示这个脚本(script)类型是javascript,可以不写,但是建议写上;

js 语句可以不写 ; 建议写上。

使用方式

方式1

script 标签 写 JS 代码;

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>script 标签中 写 JS 代码</title><script type="text/javascript">//在head内使用script写jsalert("ok");//使用警告框来显示数据:</script></head><body><script type="text/javascript">//在body内使用script写jsconsole.log("hi");//写入浏览器控制台
</script></body></html>

 说明:

  • scrpt标签位置可以在 head 和 body 嵌入,执行顺序从上到下;
  • 建议放在head中
  • alert 是 JavaScript 语言提供的一个警告框函数。它可以输出指定的内容, 变量等信息。

方式2

使用script标签引入js文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>使用 script 标签引入 JS文件</title><script type="text/javascript" src="./js/test.js"></script></head><body>
</body>
</html>test.js文件JS代码:
alert("我是 test.js 文件");

两种使用js的方式,是二选一,不能混用。
若都使用,不会报错,但是只有一个生效, 前面引入的js生效。

好处:

  1. 可维护性
  2. 缓存。浏览器会根据特定的设置缓存所有外部链接的JavaScript文件,这意味着如果两个页面都用到同一个JavaScript文件,则该文件只需加载一次,这最终意味着页面加载更快。

内容

JS变量

JavaScript 变量表示存储数据的容器,通过 var 关键词来声明 JavaScript 变量,并以逗号分隔变量。

所有 JavaScript 变量必须以唯一的名称标识,这些唯一的名称称为标识符

标识符可以是短名称(比如 x 和 y),或者更具描述性的名称(age、sum、totalVolume)。

构造变量名称(唯一标识符)的通用规则是:

  • 名称可包含字母、数字、下划线和美元符号
  • 名称必须以字母开头
  • 名称也可以 $ 和 _ 开头(但是在本教程中我们不会这么做)
  • 名称对大小写敏感(y 和 Y 是不同的变量)
  • 保留字(比如 JavaScript 的关键词)无法用作变量名称
序号名称数据类型备注
1数值类型number
2字符串类型    string

可以双引号括起来, 也可以单引号括起来;

"a book of JavaScript"、 'abc'、"a"、 "";

3对象类型object
4布尔类型boolean
5函数类型function
6不带有值的变量undefined未赋初始值时,默认 undefined
7空值null

ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const

对比var与let、const

  • let不具备声明提升,var具备声明提升
  • let声明的范围是块作用域,而var声明的范围是函数作用域。
  • let是ES6才引入的声明关键字
  • for循环中的let声明
  • const与let很相似,最大的区别是const必须初始化,且不能再次赋值。

结语:

大多数开发者尽量限制自己只使用let和const,有助于提升代码质量,因为变量有了明确的作用域、声明位置、以及不变的值。
const优先,let次之。使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>数据类型-特殊值</title>
</head>
<body>
<script type="text/javascript">//1. typeof()是 JavaScript 语言提供的一个函数,返回变量的数据类型//2. 3个特殊值 undefined 没有赋值就使用 null, NaN 当不能识别类型var email; //特殊值undefinedconsole.log("email= " + email); //undefinedvar address = null;console.log("address= " + address); //nullconsole.log(10 * "abc"); //NaN= Not a Numberalert(typeof(email));</script>
</body>
</html>

变量的特点:

  1. 原始值大小固定,保存在栈内存中
  2. 从一个变量到另一个变量复制原始值,会创建该值得第二个副本
  3. 引用值是对象,存储在堆内存中
  4. 包含引用值的变量实际上只包含指向相应对象的一个指针,而不是对象本身
  5. 从一个变量到另一个变量复制引用值,只会复制指针,因此结果是两个变量都指向同一个对象
  6.  typeof操作符可以确定值的原始类型,instanceof操作符用于确保值的引用类型(针对数组变量时候,注意使用instanceof的前提是只有一个全局执行上下文);

变量的执行:任何变量都存在于某个执行上下文中(也称为作用域)。这个上下文(作用域)决定了变量的生命周期,以及它们可以访问代码的哪些部分。

  1. 执行上下文分为 ① 全局上下文、② 函数上下文、③ 块级上下文
  2. 代码执行流每进入一个新上下文,都会创建一个作用域链,用于搜索变量和函数
  3. 函数或块的局部上下文不仅可以访问自己作用域内的变量,也可以访问任何包含上下文乃至全局上下文的变量
  4. 全局上下文只能访问全局上下文中的变量和函数,不能直接访问局部上下文中的任何数据
  5. 变量的执行上下文用于确定什么时候释放内存;

JS数组

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>数组定义</title><script type="text/javascript">//"Audi", "BMW", "Volvo";//数组定义方式1var cars1 = ["Audi", "BMW", "Volvo"];console.log("cars1=" + cars1);console.log(cars1[1]);//表示访问 cars1 数组的第2个元素, 1表示下标/索引,从0开始编号//数组定义方式2var cars2 = [];//空数组//添加元素cars2[0] = "奥迪";cars2[1] = "宝马";cars2[2] = "奔驰";console.log("cars2=" + cars2);console.log("cars2[2]=" + cars2[2]);//奔驰console.log("cars2[10]=" + cars2[10]);//如果该元素不存在,返回的就是undefined//数组定义方式3var cars3 = new Array("Audi", "BMW", "Volvo");console.log("cars3=" + cars3);console.log("cars3[0]=" + cars3[0]);//Audi//数组定义方式4var cars4 = new Array();//空数组console.log(typeof cars4); //objectcars4[0] = "法拉利";cars4[1] = "保时捷";cars4[2] = "yy";//相当于是给数组扩容cars4[0] = "zz";//替换cars4[8] = "红旗";//扩容, 如果是跳过了下标给赋值,那么中间没有赋值的元素为undefinedconsole.log("cars4[3]=" + cars4[3]);//undefinedconsole.log("cars4= " + cars4);//遍历数组for (i = 0; i < cars4.length; i++) {console.log(cars4[i]); //log 方法会自动换行}</script>
</head>
<body>
</body>
</html>

JS函数

函数是由事件驱动的,或者当它被调用时,执行的可重复使用的代码块;

执行函数的方式:1、主动调用;2、事件触发。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>使用函数方式1</title><script type="text/javascript">//定义没有返回值的函数function f1() {alert("f1() 被调用...");}f1();//定义有形参的函数//这里的形参,不需要指定类型, name的数据类型是由实参决定function f2(name) {alert("hi " + name);}f2("jack");//定义有形参和返回值的函数, 不需要指定返回类型, 返回类型由返回的数据来决定//js的函数调用机制和java一样function f3(n1, n2) {return n1 + n2;}alert("f3(10, 20)=" + f3(10, 20));</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>使用函数的第二种方式</title><script type="text/javascript">//可以理解成f1指向了函数var f1 = function () {alert("hi");}console.log(typeof f1);f1();//调用函数var f3 = f1;f3();var f2 = function (name) {alert("hi " + name);}f2("小米");var f4 = function (n1, n2) {return n1 + n2;}alert("res= " + f4(10, 50));</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>函数使用注意事项和细节</title><script type="text/javascript">//1. JS 中函数的重载会覆盖掉上一次的定义//2. 当你调用f1() 时候其实调用的是 f1(name)//3. 调用f1(name) 如果你没有传入实参, 那么这个name就是undefinedfunction f1() {alert("ok jack~")}function f1(name) {alert("hi " + name);}f1();// 2. 函数的 arguments 隐形参数(作用域在 function 函数内)// (1) 隐形参数: 在 function 函数中不需要定义,可以直接用来获取所有参数的变量。// (2) 隐形参数特别像 java 的可变参数一样。 public void fun( int ... args )// (3) js 中的隐形参数跟 java 的可变参数一样。操作类似数组function f2() {//遍历 函数的 arguments 隐形参数,arguments 是数组//如果我们希望通过 console.log输出对象的数据,使用, 连接而不是+console.log("arguments= ", arguments);console.log("arguments长度= " + arguments.length)alert("f2()...")}f2(10, 20, 30, "java");//3 (1)如果我们的函数有形参,在传入实参的时候,仍然按照顺序匹配//  (2)如果有匹配上,就赋给他, 如果没有匹配上,也无所谓//  (3)仍然会把所有的实参,赋给 arguments//  (4)如果形参个数,大于了实参个数,则该形参的值为undefinedfunction f3(n) {console.log("n=" + n);//100console.log("arguments= ", arguments);//100, 90, 20}f3(100, 90, 20);</script>
</head>
<body></body>
</html>

说明: 

  • 如果不调用函数,那么该函数时不会执行;
  • JS中函数的重载会覆盖掉上一次的定义;
  • 函数的arguments隐形参数(作用域在 function  函数内),在function函数中不需要定义,可以直接用来获取所有参数的变量,跟 java  的可变参数一样。操作类似数组 public void fun( int ... args );
  • 实参、形参的类型、数量无需保持一致

JS自定义对象

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>自定义对象</title><script type="text/javascript">//自定义对象的方式1//person是一个空对象,没有自定义的函数和属性var person = new Object();console.log("person类型=" + typeof(person));//object//增加一个属性nameperson.name = "jack";//增加一个属性person.age = 20;//增加函数person.say = function () {//这里的this就是personconsole.log("person的信息 " + this.name + " " + this.age + " " + this.job);}//调用//访问属性console.log("name= " + person.name + " " + person.email);//访问方法person.say();//小细节, 如果没有定义属性,直接使用,就会出现变量提升, 显示undefinedconsole.log("address= " + person.address);</script>
</head>
<body></body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>自定义对象方式2:{} 形式</title><script type="text/javascript">//演示自定义对象方式2:{} 形式var person = {name: "老韩", //说明多个属性和函数之间,使用,隔开age: 20,hi: function () {console.log("person信息= " + this.name + " " + this.age);},sum: function (n1, n2) {return n1 + n2;}}//使用console.log("外部访问 name= " + person.name + " age=" + person.age);person.hi();console.log("sum=" + person.sum(10, 30));</script>
</head>
<body></body>
</html>

事件

事件是电脑输入设备与页面进行交互的响应;事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行;

事件的注册(绑定):    当事件响应(触发)后要浏览器执行哪些操作代码,叫事件注册或事件绑定;

静态注册事件:     通过 html 标签的事件属性直接赋于事件响应后的代码;

动态注册事件:   

  •           通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function(){} 形式;
  •           步骤:1. 获取标签<--->dom 对象; 2. dom 对象.事件名 = fucntion(){}

 常用事件

onload加载完成事件

  •     onload : 某个页面或图像被完成加载
  •     页面加载完成之后, 常用于做页面 js 代码初始化操作

onclick单击事件

  •     常用于按钮的点击响应操作

onblur失去焦点事件

  •     常用用于输入框失去焦点后验证其输入内容是否合法

onchange内容发生改变事件

  •     常用于下拉列表和输入框内容发生改变后操作

onsubmit 表单提交事件

  •     常用于表单提交前, 验证所有表单项是否合法
  •     邮箱的正则表达式:        var emailPatt = /^[\w-]+@([a-zA-Z]+\.)+[a-zA-Z]+$/;
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>onclick 单击事件</title><script type="text/javascript">//定义一个函数function sayOK() {alert("你点击了sayOK按钮");}//1. 在js中,将页面窗口 映射成 window dom对象//2. window对象有很多的函数和属性,可以使用//3. window.onload 表示页面被加载完毕//4. 后面的 function (){} 表示加载完毕后,要执行的函数/代码  window.onload = function () {alert("动态注册 onload 事件");// 动态注册 onclick 事件//1. 先拿到 id=btn01 的 button对应dom对象(当页面加载完成后,即执行window.onload后,才能得到)//2. 通过 dom对象动态的绑定onclick事件//3. 通过document的 getElementById获取对应的dom对象// 挖坑~填坑var btn01 = document.getElementById("btn01");// alert(btn01); //[object HTMLButtonElement]btn01.onclick = function () {alert("你点击了sayHi按钮");}}</script>
</head>
<body>
<!--静态注册 onClick 事件-->
<button onclick="sayOK()">sayOK按钮</button><!--动态注册 onClick 事件-->
<button id="btn01">sayHi按钮</button>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>onblur 失去焦点事件</title><script type="text/javascript">//静态绑定function upperCase() {
//1. 先得到fname 输入框的value -> 得到对应dom对象var fname = document.getElementById("fname");fname.value = fname.value.toUpperCase();}//在页面加载完毕,完成动态绑定window.onload = function () {//1.得到fname2的dom对象var fname2 = document.getElementById("fname2");fname2.onblur = function () {fname2.value = fname2.value.toUpperCase();}}</script>
</head><body>
输入英文单词:
<input type="text" id="fname" onblur="upperCase()" /><br />
输入英文单词:
<input type="text" id="fname2" />
</body></html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>onchange 内容发生改变事件</title><script type="text/javascript">function mySal() {alert("工资范围变化了~");}//动态注册window.onload = function () {//获取到sel01的dom对象var sel01 = document.getElementById("sel01");//给sel01绑定onchange事件sel01.onchange = function () {alert("你换女友的~");}}</script>
</head>
<body>
你当前工资水平: <!--静态注册 onchange 事件-->
<select onchange="mySal()"><option>--工资范围--</option><option>10k以下</option><option>10k-30k</option><option>30k以上</option>
</select> <br/>你当前女友是谁:
<select id="sel01"> <!-- 动态绑定 onchange--><option>---女友---</option><option>艳红</option><option>春桃</option><option>春花</option>
</select>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>onsubmit 表单提交事件</title><script type="text/javascript">//静态注册表单提交事件function register() {//先得到输入的用户名和密码var username = document.getElementById("username");var pwd = document.getElementById("pwd");//判断是否为空""if ("" == username.value || "" == pwd.value) {alert("用户名和密码不能为空, 不能提交");return false;//不提交}//表示要提交return true;}//动态注册表单提交事件window.onload = function () {//使用折半法, 观察原页面是否真的是最新的, 是不是修改的页面和访问的页面一致 (查看页面的源代码,可查看是否一致)-->查找问题;//得到 from2 表单dom对象var form2 = document.getElementById("form2");// //给form2绑定onsubmit事件, onsubmit 绑定的函数会直接将结果(f,t)返回给onsubmitform2.onsubmit = function () {if(form2.username.value == "" || form2.pwd.value == "") {alert("用户名和密码不能为空, 不能提交");return false;//不提交}return true;}}</script>
</head>
<body>
<h1>注册用户1</h1> <!-- 静态注册表单提交事件 -->
<form action="ok.html" onsubmit="return register()">u: <input type="text" id="username" name="username"/><br/>p: <input type="password" id="pwd" name="pwd"/><br/><input type="submit" value="注册用户"/>
</form><h1>注册用户2</h1> <!-- 动态注册表单提交事件 -->
<form action="ok.html" id="form2">u: <input type="text" name="username"/><br/>p: <input type="password" name="pwd"/><br/><input type="submit" value="注册用户"/></form>
</body>
</html>

运算符

算术运算符

用于执行变量与/或值之间的算术运算;

赋值运算符

用于给 JavaScript 变量赋值;

关系运算符

在逻辑语句中使用,以测定变量或值是否相等;

注意事项:
    等于: ==  是简单的做字面值的比较
    全等于:  === 除了做字面值的比较之外,还会比较两个变量的数据类型

逻辑运算符

用于测定变量或值之间的逻辑;

注意事项
    在 JavaScript  语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用
    0  、null、  undefined、""(空串)  都认为是 false
    &&  且运算,有两种情况  =>  (即  && 返回值是遵守短路与的机制)
    ||  或运算,  有两种情况  => (即||  返回值是遵守短路或的机制)
    短路现象:当&&和||有确定结果后,后面的表达式不再执行;

条件运算符

类似 Java 的三元运算符。

    <title>条件运算符</title><script type="text/javascript">// 规则 如果 (10 > 1) 条件表达式为 T, 返回第一个表达式的值 ;条件表达式为 F, 返回第 2 个表达式的值var n1 = 90;var n2 = 1;var res = n2 > 9 ? "jack" + " 你好" : 800 + n1;alert("res=" + res);</script>

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

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

相关文章

深入了解Figure的结构与层次

深入了解Figure的结构与层次 一 Matplotlib中的Figure1.1 Figure的概念和作用:1.2.创建Figure对象:1.3 Figure的属性和方法: 二 子图&#xff08;Axes&#xff09;的角色与创建2.1 子图&#xff08;Axes&#xff09;的概念&#xff1a;2.2 创建子图的方法&#xff1a;2.3 Axes的…

使用visual studio写一个简单的c语言程序

官网下载visual studio&#xff0c;社区版免费的 https://visualstudio.microsoft.com/zh-hans/ 下载好以后选择自己的需求进行安装&#xff0c;我选择了两个&#xff0c;剩下的是默认。 创建文件&#xff1a;

嵌入式面试提问

嵌入式面试问题 1.讲一下STM32的时钟系统 现总结下&#xff1a;首先是时钟源输入时钟信号到单片机&#xff0c;然后单片机对输入的时钟信号进行倍频和分频处理&#xff0c;再将处理后的时钟信号输出至系统&#xff0c;外设或外部接口。   先看这张图&#xff0c;最外面的线上…

第三篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:添加页面和页面路由

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例短博文系列 短博文目录一、前言二、编写第一个页面Index.ets 示例代码三、编写第二个页面Second.ets示例代码四、第一个页面Index.ets 跳转到第二个页面Second.ets 示例代码五、第二个页面Scond.ets返回第一个页面In…

[C#]winform部署yolov7+CRNN实现车牌颜色识别车牌号检测识别

【官方框架地址】 https://github.com/WongKinYiu/yolov7.git 【框架介绍】 Yolov7是一种目标检测算法&#xff0c;全称You Only Look Once version 7。它是继Yolov3和Yolov4之后的又一重要成果&#xff0c;是目标检测领域的一个重要里程碑。 Yolov7在算法结构上继承了其前…

HTML标签(二)

目录 表格标签 表格的主要作用 表格的具体用法 表头单元格标签 表格属性 表格结构标签 合并单元格 合并单元格的方式&#xff1a; 跨行合并&#xff1a; 跨列合并&#xff1a; 列表标签 无序列表 有序列表 自定义列表 表单标签 表单域 表单域的常用属性 表单元素…

如何使用labelme上次的标记结果继续制作图像的标签

众所周知&#xff0c;labelme 软件可以对图像进行标签的制作&#xff0c;本文就来讲解一下如何根据labelme上次的标记结果&#xff0c;继续对图像的标签进行制作。 首先&#xff0c;确保创建的虚拟环境中已经安装了labelme软件&#xff0c;关于labelme的安装在此我就不赘述了&…

[极客大挑战 2019]LoveSQL1

万能密码测试&#xff0c;发现注入点 注意这里#要使用url编码才能正常注入 测试列数&#xff0c;得三列 查看table&#xff0c;一个是geekuser另一个是l0ve1ysq1 查看column&#xff0c;有id&#xff0c;username&#xff0c;password&#xff0c;全部打印出来&#xff0c;…

【医学图像数据增强】切割-拼接(CS-DA)

切割-拼接CS-DA CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想 论文链接&#xff1a;https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf 大多数用于医学分割的数据增强技术最初是在自然图像上开发的&#x…

如何实现动态代理(俩种方式)

文章目录 基于接口的动态代理&#xff1a;基于类的动态代理&#xff1a; 基于接口的动态代理&#xff1a; 通过Java的反射机制来动态创建代理对象&#xff0c;代理对象实现了一个或多个接口。 Java提供了java.lang.reflect包中的Proxy类和InvocationHandler接口来实现基于接口…

ORM-06-jooq 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.&#xff08;手写简易版 mybatis&#xff09; JOOQ JOOQ 可以通过数据库直接生成 java 代码&#xff0c;通过 flent-api 进行数据库操作。 SQL builder JOOQ 非常的灵活和强大。你可…

加载服务端发送的模型文件_unity开发进阶

加载服务端发送的模型文件 前言一、服务端搭建二、unity请求文件三、加载模型结语 前言 之前我们学习制作的都是离线状态下的东西&#xff0c;今天我们学习制作一个小demo。 内容就是我们用unity请求后台&#xff0c;接受后台发送过来的模型&#xff0c;然后将模型加载到场景中…

0125-2-Vue深入学习1—mustache模板引擎原理

[mustache] 是 “胡子”的意思&#xff0c;因为它的嵌入标记 {{ }} 旋转过来很像[胡子]&#xff0c;Vue中的 {{ }} 语法也引用了mustache&#xff0c;这也是我深入学习的目的。 1、原始js方式使 数据 变为视图 <ul id"list"></ul><script>var arr …

k8s---安全机制

k8s的安全机制&#xff0c;分布式集群管理工具&#xff0c;就是容器编排。安全机制的核心&#xff1a;APIserver。为整个集群内部通信的中介&#xff0c;也是外控控制的入口。所有的机制都是围绕apiserver来进行设计&#xff1a; 请求api资源&#xff1a; 1、认证 2、鉴权 …

快速上手的AI工具-文心一言绘本创作

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工具…

js计算皮尔逊相关系数

代码如下; let XGX {correlationCoefficient(pA, pB) {let covXY -pA * pBlet varX pA * (1-pA) let varY (1-pB)* pBlet res covXY / (Math.sqrt(varX*varY, 2))return res},correlation(x,y){x[0.3,50.2,99.5,199.3,299,398];y[0.1,50,99.9,200,300,400];// 计算均值con…

Linux操作系统概念

绪论​&#xff1a; “心灵纯洁的人&#xff0c;生活充满甜蜜和喜悦。——列夫托尔斯泰”&#xff0c;本章的主要内容是介绍了硬件的组成结构冯诺依曼体系结构以及操作系统的概念和操作系统的作用&#xff0c;本章的内容主要是理论他起到承上启下的作用只有理解了操作系统的运行…

SAP创建资产号码和分配资产价值

文章目录 1 Creat new asset2 View asset3 Create old asset4 Transfer value5 Summary 1 Creat new asset T-code(AS01) 2 View asset T-CODE : AS03 3 Create old asset T-code(as91) 4 Transfer value T-code(ABLDT) If there is following information a…

Typora + PicGo + GitHub搭建图床

Typora PicGo GitHub搭建图床 1. Typora下载破解 这一步自行百度 2. PicGo下载 PicGo is Here | PicGo 自行下载安即可 3. GitHub仓库设置 gitHub注册略过&#xff0c;如果不能访问请科学上网 创建仓库 生成访问token 点击右上角头像 -> setting -> 点击左边最…

Hotspot源码解析-第25章-类的初始化

第25章-类的初始化 这一章主要是讲类的初始化操作&#xff0c;后续类加载章节中也会用到这一章的知识&#xff0c;只不过&#xff0c;这里就讲&#xff0c;是因为虚拟在初始化过程中&#xff0c;需要对基础类&#xff0c;比如System/Thread等类进行初始化操作&#xff0c;所以…