前端大全之JavaScript(简称JS)

news2024/11/29 15:00:07

目录

一、概念 

1.总体概要

2.来源说明

3.JavaScript和java的关系

4.JS的特点

5.浏览器执行JS的简介

6.JS的组成

二、引入方式

1.内部脚本例子

2. 外部脚本例子

三、使用规则

1.书写语法

2.报错的查看方式

3.输出语句

(1)写入警告框

(2) 写入HTML(浏览器)页面里面

(3)写入浏览器的控制台 

4.JS的变量

(1)var关键字

(2) let关键字

(3)const关键字 

5.数据类型

(1)JavaScript(简称JS)的数据类型

(2)特殊的值

6.运算符 

7.流程控制语句

8.函数(通俗讲就像是Java中的方法)

(1)方法一

(2)方法二 

 9.Array对象(类似Java中的集合)

(1)使用方式

(2)遍历方式

(3)添加和删除

 10.String关键字对象

11.自定义对象 

12.BOM

(1)window对象 

alert()

confirm()

setTimeout()------单次定时器

setInterval()----循环定时器

(2)History历史记录对象

返回网页的上一步:history.back();

进入下一个网页:history.forward();

(3)Location地址栏对象 

跳转到指定的网页:

13.DOM 

(1)DOM树

(2)DOM的作用

(3)DOM大全

1.核心DOM:针对任何结构化文档的标准模型

2.XML DOM:针对XML文档的标准模型

3.HTML DOM:针对HTML文档的标准模型

14.事件监听

(1)事件绑定

(2)常见事件

15.正则表达式


一、概念 

1.总体概要

JavaScript简称为JS这门语言诞生主要用于完成页面的数据验证,因此运行在客户端,需要浏览器来解析JavaScript的代码。是世界上最流行的脚本语言。

2.来源说明

JS是网景公司的产品,1995年布兰登·艾奇仅用了10天开发完成的。最早取名为LiveScript,为了吸引更多的程序员,取名为JavaScript。并于1997年成为一部ECMA标准,ECMAScript(ES6)是最新的JavaScript版本(发布于2015年)

3.JavaScript和java的关系

JavaScript和java没有什么关系,就像老婆和老婆饼一样。

JS是弱类型语言,JAVA是强类型语言

4.JS的特点

(1)交互性:它可以做的就是信息的动态交互

(2)安全性:不允许直接访问本次磁盘

(3)跨平台性:只要是可以解释JS的浏览器都可以执行,和平台无关

5.浏览器执行JS的简介

浏览器分成渲染引擎JS引擎两部分 

渲染引擎:用来解释HTML和CSS,也叫内核。例如谷歌浏览器的bilk

JS引擎:读取网页中的JS代码,也叫JS解释器。例如谷歌浏览器的V8

6.JS的组成

ECMAScript:规定了JS的编程语法和基础核心知识,是所有浏览器厂商都去共同遵守的一套JS语法标准。

DOM:也叫页面文档对象模型。是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过 DOM 提供的接口可以对页面上的元素进行各种的样式操作,例如颜色:大小,位置等等。

BOM:也叫浏览器对象模型。是 各个浏览器厂商根据 DOM在各自浏览器上的实现。就是Window 是 BOM 对象,而不是 js 对象;javacsript是通过访问BOM对象来访问、控制、修改客户端(浏览器)

7.目前版本和开发状态 

ECMAScript可以理解为是JavaScript的一个标准。目前版本最新的已经到了ES6.但是大部分浏览器只支持到ES5。所以开发环境和线上环境版本不一致

二、引入方式

(1)内部脚本:将JS代码定义在HTML页面中

(2)外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中

1.内部脚本例子

步骤

1.新建一个html文件,在里面添加一个script标签(建议放在body底部,可以优先加载其他HTML代码,显示运行效率更快),标签里面添加一个弹窗语句测试 

<script>
alert("hello JS")
</script>

 加自动模板的完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<!--在<script>标签中写一个弹窗语句alert测试-->
<script>
alert("hello JS")
</script>

<body>

</body>
</html>

 运行结果

2. 外部脚本例子

 步骤

1.idea新建里面新建一个js文件,并在js文件中添加一个弹窗语句

alert("hello  js")

2.idea新建一个html文件, 然后标签里面输入一个src引用js的文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--script这里添加引入的js文件-->
<script src="demo1.js"></script>
</body>
</html>

  运行结果

  

三、使用规则

1.书写语法

(1)区分大小写:与Java一样,变量名,函数名以及其他一切东西都区分大小写

(2)每行结尾的分号可有可无

(3)注释:单行注释://注释内容                   多行注释:/*注释内容*/ 

(4)大括号表示代码块

(5)定义的语句都要写在script标签里面(script标签建议写在html的body里面)

2.报错的查看方式

1.键盘F12(或者右键-检查)---2.点击顶部的Sources里面的报红查看

3.输出语句

ps:以下语句都是再html文件的body里面写的 

(1)写入警告框

<script>
    window.alert("hello  js");//写入警告框
</script>

运行结果

(2) 写入HTML(浏览器)页面里面

<script>
    document.write("hello js")//写入HTML页面里面
</script>

运行结果 

(3)写入浏览器的控制台 

<script>
    console.log("hello js")
</script>

运行结果(运行后,浏览器页面F12点开,点击Console就可以查看了)

4.JS的变量

简介:变量就是用来保存数据的,JavaScript是一门弱类型语言,变量可以用来存放任意的数据类型的值

(1)var关键字

说明:JS使用var(variable的缩写)关键字来声明变量。var相当于一个全局变量,用来定义什么都可以,而且值可以被重复定义

<script>
//1.代码块内可以定义相同的var,不过最下面的会覆盖上面之前的
    var age = 30;
    var age = 20;
    //测试
    alert(age);//运行结果为弹窗出来20

//2.变量值可以被重复定义,但是会覆盖上面的
    var Test = 10;
    Test = "帅哥"
    //测试
    alert(Test)//运行结果为弹窗出来帅哥
</script>

(2) let关键字

说明:ECMAScript6新增了let关键字来定义变量,他的语法类似var,但是所声明的变量,只能在在let关键字的代码块里面有效,有点像局部变量,并且不能重复声明

<script>
    {//如果被代码块包裹住,就只能在代码块里面生效
        let age = 20;
        alert(age)//运行结果:黑色页面(因为代码块内)弹窗出来20
    }    
</script>

(3)const关键字 

说明:ECMAScript6新增了const关键字,用来声明一个只读的常量,一旦声明,常量的值就无法改变

5.数据类型

(1)JavaScript(简称JS)的数据类型

数值类型:number

字符串类型:string

对象类型:object

布尔类型:boolean

函数类型:function

(2)特殊的值

初始默认值:undefined

空值:null

非数字、非数值:NAN-----全称是Not a Number

ps:要查看属于什么数字类型可以用:弹窗标签(typeof  查看的数据)

6.运算符 

JS的运算符和Java运算符都差不多,不过多了一个===(全等于的运算符)

ps:==就不是全等。例如23可以==”23“

这里的全等就是===了

7.流程控制语句

JS的流程控制语句和Java的一样,正常去使用就好了

java三种循环(for、while、do while)和终止语句(break、continue、return)_云边的快乐猫的博客-CSDN博客_java跳出本次循环进入下一次循环

Java中的if与switch选择结构语句应用_云边的快乐猫的博客-CSDN博客

8.函数(通俗讲就像是Java中的方法)

ps:我习惯称为方法,知道一个意思就可以了 

(1)方法一

通过function关键词进行定义

注意:形式参数不需要类型。返回值也不需要定义类型,直接return返回就好了 

语法为:

 function 自定义方法名  (自定义参数名1,自定义参数名2......){

        要执行的代码

}

<script>
    function hello(a,b){
        return a+b;
    }

    //传值并赋值给一个变量
    var h = hello(5,6);
    alert(h);//弹窗测试运行结果弹窗出来11
</script>

(2)方法二 

也是通过function关键词进行定义,区别在于实际传参个数和方法里面的形参个数不一样情况。对比方法一特点:可以任意个参数进去,但是

实际传参个数>形参个数。结果:实际传参多余的个数不会不生效

实际传参个数<形参个数。结果:传参+默认值计算结果(这个类型和传进去的参数类型一样,没有就默认值)。ps:谁会吃饱了没事干传多或者传少啊

语法为:

var 自定义名字   function(参数列表){
        要执行的代码
}

<script>
    //1.编写方法
    var Test = function (a,b){
        return a+b;
    }
    //2.把方法的值赋值给自定义的result
    var result = Test(1,2);
    //3.弹窗测试
    alert(result)//运行结果为3
</script>

 9.Array对象(类似Java中的集合)

这个在JS里面叫数组或者对象的,但是除了{}换成了[ ],实际使用方式还是和Java中的集合差不多,因为长度,类型都可以变。

语法格式为:

var 变量名 =new Array(元素列表);  //方法一         但是不怎么常用,因为麻烦

var 变量名 =[元素列表];   //方式二         常用

访问方式

arr[索引值] = 自定义值;

(1)使用方式

ps:这些都是在html的body里面运行

<script>
    //一、
    //1.编写方式
    var arr =[1,2,3];
    //2.弹窗测试
    alert(arr);//运行结果为弹窗1,2,3

    //3.根据索引访问并修改索引对应的值
    arr[1] = 10;//访问集合中的第一个元素的位置。并重新给他定义一个值
    alert(arr);//运行结果为弹窗1,10,3
    //ps:根据索引直接访问方式:alert(arr[1]);
</script>

(2)遍历方式

    //二、遍历方式
    //1.定义一个数组
<script>
    var name = ["张三","李四","王五"];
    //2.for循环遍历--快捷键为变量名.fori+回车键
    for (let i = 0; i < name.length; i++) {
        //3.弹窗测试
        alert(name[i]);//弹窗依次弹出张,三,李,四,王,五。如果想只弹出弹出一次,那就直接访问呗//alert(name)
    }
</script>

(3)添加和删除

<script>
    //一、添加:push
    //1.编写方式
    var arr =[1,2,3];
    //添加值
    arr.push(10);
    //弹窗测试
    alert(arr);//运行结果:弹窗出1,2,3,10

    //二、删除:
    arr.splice(0,2);//删除了从第0个开始,删除2个
    alert(arr);//运行结果弹窗3,10
</script>

10.String关键字对象

String里面常用的方法就是去除多余的空格------trim()

语法为:

var 自定义名称 = "值" 

<script>
    //一、创建String类型对象
    var str1 = "abc";
    //运行测试
    alert(str1);//运行结果为弹窗出来abc

    //二、常用方法:去除多余的空格,用trim()方法
    //创建String类型对象
    var str2 ="     abc    "
    //运行测试
    alert(str2.trim());//运行结果为弹窗出来abc,没有多余的空格
</script>

11.自定义对象 

简介:可以在自定义对象当中定义很多的方法或者函数这些,就像一个大麻袋,需要的东西就可以装里面。

语法为:

var 对象名称 = {

        属性名称1:属性值1,

        属性名称2:属性值2,

......

        函数名称:function(形参列表){}

......

};

<script>
    
    //一、创建自定义对象
    var boy = {
        name:"小明",
        age:18,
        eat:function () {
            alert("吃饭")
        }
    }
    //二、调用测试
    alert(boy.name);//运行结果为弹窗出小明
    alert(boy.eat())//运行结果为弹窗出吃饭
    //还有弹窗出来一个默认值undefined,因为age还没有被调用
    
</script>

12.BOM

简介:全称为:Browser Object Model-----浏览器对象模型

JS将浏览器的各个组成部分封装为对象

参考的w3school网站:JavaScript Window - 浏览器对象模型

组成:

Window:浏览器窗口对象

Navigator:浏览器对象

Screen:屏幕对象

History:历史记录对象

Location:地址栏对象

(1)window对象 

之前一直用的alert弹窗语句完整写法就是这样。通过window对象还可以获取其他4个BOM对象

常用的方法

alert()

显示一段话和带有一个确认按钮的警告框

<script>
    //window浏览器窗口对象
    window.alert("666");//运行结果为弹窗出来666
</script>

confirm()

显示带有一段消息以及确认按钮和取消按钮的对话框

<script>
    //确认取消按钮,点击确定按钮会返回true,取消会返回false
    var b = confirm("你确定执行吗?");

    //扩展代码
    if (b){
        //可以写上逻辑代码
        alert("6666")
    }
</script>

setTimeout()------单次定时器

在指定的毫秒数后调用函数或者计算表达式。在一定时间后执行一个function,只执行一次

<script>

    //单次定时器,只执行一次
    setTimeout(function (){
        alert("666")
    },3000);//运行结果为3秒后弹窗出来666一次
    
</script>

setInterval()----循环定时器

按照指定的周期(毫秒)来调用函数或者计算表达式。在一定时间后执行一个function,循环执行

<script>

    //循环定时器,循环执行
    setInterval(function (){
        alert("快乐")
    },2000);//运行结果为每2秒执行一次快乐,一直循环

</script>

(2)History历史记录对象

使用window.history获取,其中的window可以忽略

语法为:

history.方法();

常用的方法

返回网页的上一步:history.back();

进入下一个网页:history.forward();

(3)Location地址栏对象 

 使用window.Location获取,其中的window可以忽略

语法为:

Location.方法();

常用的方法

跳转到指定的网页:

跳转到百度的例子

location.href="https://www.baidu.com"

13.DOM 

简介:全称为:Document Object Model -----文档对象模型。是w3c(万维网联盟)的标准。DOM定义了访问HTML和XML文档的标准

将标记语言的各个组成部分封装成对象

(1)DOM树

(2)DOM的作用

JS通过DOM,就能够对HTML进行操作了。

改变HTML元素的内容--------------方法.innerHTML="改变后"

改变HTML元素的样式(CSS)--------方法.style.样式方法="样式"

对HTML DOM事件作出反应

添加和删除HTML元素

(3)DOM大全

1.核心DOM:针对任何结构化文档的标准模型

Document:整个文档对象

Element:元素对象

        获取:使用Document对象来获取

<body>
<!--测试标签1-->
<img id="light" src="D:\图片\壁纸\111.jpg" >

<!--测试标签2-->
<div class="cla">云边的快乐猫</div>

<!--测试标签3-->
<input type="checkbox" name="hobby">吃
<input type="checkbox" name="hobby">睡

<!--二、以下是调用测试上面的-->
<script>
    //测试1
    //getElementById:根据id属性值获取,返回一个Element对象
    var img = document.getElementById("light");
    alert(img);//弹窗运行结果为[object HTMLImageElement]

    //测试2
    //getElementsByTagName:根据标签名称获取,返回Element对象数组
    var divs = document.getElementsByTagName("div");
    //遍历访问数组
    for (let i = 0; i < divs.length; i++) {
        alert(divs[i]);//弹窗运行结果为[object HTMLDivElement]
    }

    //测试3
    //getElementsByName:根据name属性值获取,返回Element对象数组
    var hobbys = document.getElementsByName("hobby");
    for (let i = 0; i < hobbys.length; i++) {
        alert(hobbys[i]);//弹窗结果运行为[object HTMLInputElement]和[object HTMLInputElement]
    }

    //测试4
    //getElementsByClassName,根据class属性值获取,返回Element对象数组
    var clss = document.getElementsByClassName("cls");
    for (let i = 0; i < clss.length; i++) {
        alert(clss[i]);
    }
    
</script>

</body>

Attribute:属性对象

Text:文本对象

Comment:注释对象

2.XML DOM:针对XML文档的标准模型

3.HTML DOM:针对HTML文档的标准模型

14.事件监听

简介:事件:HTML事件是发生在HTML元素上的"事情" 。比如按钮被点击、鼠标移到元素上、按下键盘按键。

事件监听:JavaScript可以在事件被侦测到时执行代码

(1)事件绑定

方式一、通过HTML标签中的事件属性进行绑定-----不怎么推荐,因为耦合度高

方式二、通过DOM元素属性进行绑定

<body>

<!--HTML代码-->
<!--按钮1-->
<input type="button" value="点我" onclick="on()"><br>
<!--按钮2-->
<input type="button" value="再点我" id="btn">



    <!--JS代码-->
<script>
    //方式一
    function on(){
    alert("我被点了");
}

    //方式二
    document.getElementById("btn").onclick=function (){
    alert("我也被点了");
    }
</script>

</body>

(2)常见事件

参考w3sccool:HTML DOM 事件

常用的有:元素失去焦点 、获得元素焦点

15.正则表达式

简介:正则表达式定义了字符串的组成规则,一般用来进行验证使用。非常的方便 

语法:

^:表示开始

$:表示结束

[]:代表某个范围内的单个字符,比如[0~9]单个数字字符

.:代表任意单个字符,除了换行和结束符

\w:代表单词字符:字母、数字、下划线

\d:代表数字字符,相当于[0~9]

量词

+:至少一个

*:零个或者多个

:零个或者一个

{x}:x个

{m}:至少m个

{m,n}:至少m个,最多n个

1.直接量

var reg = /^\w{6,12} $/;

2.创建RegExp对象

var reg =new RegExp( /^\w{6,12} $/);

3.测试方法

test(str):判断指定字符串是否符合规则,返回turn或者false

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

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

相关文章

SecXOps 中的数据集存储方式

安全数据资产 统一管理DataOps&#xff0c;即 Data 和 Operations 的集成&#xff0c;于 2014 年首次提出。Gartner 将 DataOps 定义为“一种协作性的数据管理 实践&#xff0c;专注于改进组织内数据管道的通信、集成和自动化”[7]。DataOps 是一种面向流程的自动化方法&#x…

基于Java开发的(控制台)模拟的多用户多级目录的文件系统【100010035】

多级文件系统 1 设计目的 为了加深对文件系统内部功能和实现过程的理解&#xff0c;设计一个模拟的多用户多级目录的文件系统&#xff0c;并实现具体的文件物理结构、目录结构以及较为完善的文件操作命令集。 2 设计内容 2.1系统操作 操作命令风格&#xff1a;本文件系统的…

110115-07-6,Ac-LLM-CHOCalpain 抑制剂

Ac-LLM-CHO (ALLM) is a potent competitive inhibitor of cathepsin L (Ki0.6 nM) and cathepsin B (Ki100 nM). Ac-LLM-CHO (ALLM)是组织蛋白酶L (Ki0.6 nM)和组织蛋白酶B (Ki100 nM)的有效竞争性抑制剂。 编号: 124055中文名称: Calpain 抑制剂 II&#xff1a; Ac-Leu-Leu-M…

[附源码]Node.js计算机毕业设计点餐系统设计Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

游戏开发59课 性能优化

7. 耗电优化 游戏耗电和游戏卡并无必然联系&#xff0c;有些游戏在某些设备上虽然运行很流畅&#xff0c;但发现耗电很厉害&#xff0c;玩了不到半个小时&#xff0c;电量已经出现警报。游戏耗电的原因主要是因为&#xff1a;CPU占用普遍高&#xff0c;内存操作频繁&#xff0…

Spring MVC学习 | 获取请求参数

文章目录一、ServletAPI获取二、控制器方法形参获取2.1 不使用RequestParam注解2.2 使用RequestParam注解2.2.1 简介&使用2.2.2 相关注解2.3 实体类类型的形参三、中文乱码问题3.1 在tomcat中设置编码&#xff08;了解&#xff09;3.2 使用Spring MVC内部过滤器设置编码学习…

【PortSwiggerのWeb Security Academy靶场】SQL Injection系列 9th

Subject Lab: Blind SQL injection with conditional responses Url: portswigger.net/web-securit… Mind Palace 在带着 cookies的后续访问网页时会找到出现的 Welcome back! 标志 > 无法回显 > 采用盲注的方式 0x01 确认注入点 0x02 爆破数据库名 # 测试informati…

qiankun 部署微前端-vue2(一)

自从前后端分离以来&#xff0c;一直都有个困惑&#xff0c;就是随着项目的功能的不断拓展&#xff0c;项目变得不断臃肿&#xff0c;每次打包编译&#xff0c;都要把整个项目编译&#xff0c;非常耗时。如果前端也能像后端一样&#xff0c;在项目搭建初期&#xff0c;有类似微…

C++11【包装器】

包装器&#x1f4d6;1. 为什么需要包装器&#x1f4d6;2. 如何使用包装器&#x1f4d6;3. bind函数&#x1f4d6;1. 为什么需要包装器 包装器也叫做适配器&#xff0c;C中的function本质是一个类模板&#xff0c;也是一个包装器. 为什么需要function呢&#xff1f; 我们来看…

ant-design-vue修改input组件样式

问题场景 不得不说ant-design-vue的样式是真的难改。。。今天尝试了很多种方案&#xff0c;都无疾而终。最终&#xff0c;通过全局scss文件引入的方式解决了。 几种方案&#xff1a; 直接行内样式&#xff0c;发现部分可以&#xff0c;部分不行将style 的scoped属性去掉&#…

非线性负载的主要分类及其特性

非线性负载的主要分类 通常而言&#xff0c;由线性元件原件组成的负载称为线性负载&#xff0c;线性负载的输出与输入呈线性关系&#xff0c;典型的线性负载如电阻、电容和电感等&#xff1b;而由非线性元件构成的负载为非线性负载&#xff0c;在正弦波电压供电时会产生非正弦…

Sentinel服务流控

Sentinel通过流量控制&#xff08;flow control&#xff09;以及熔断降级来保护系统资源 QPS超过阈值直接失败 流量控制&#xff08;flow control&#xff09;&#xff0c;其原理是监控应用流量的 QPS 或并发线程数等指标&#xff0c;当达到指定的阈值时对流量进行控制&#x…

如何使用ABAQUS对新能源动力电池进行Pack分析

电池Pack的仿真&#xff0c;按照系统层次&#xff0c;可从电芯、模组、Pack和整车逐级分析。电芯主要集中于机械性能的材料拟合、激光焊接以及电-化学-热-机耦合建模&#xff0c;模组主要集中于跌落、振动以及模组冷却&#xff0c;Pack主要集中于**、冲击和振动以及Pack热管理&…

Token Merging: Your ViT But Faster

论文&#xff1a;https://arxiv.org/pdf/2210.09461.pdf 代码&#xff1a; https://github.com/facebookresearch/ToMe 这篇论文写的很棒呀&#xff0c;以摘要为例&#xff0c;第一句话指明ToMe的作用&#xff08;提高ViT-based模型的训练和推理速度&#xff09;和特色&#x…

java面试强基(21)

什么是线程和进程? 何为进程? ​ 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。 ​ 在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一个 J…

提质增效!北京筑龙助力蒙牛集团采招数智化升级

近两年&#xff0c;全球经济下行压力加剧&#xff0c;市场形势波动使得集团企业面临着很大的经营压力。随着数字经济时代的到来&#xff0c;利用数字技术重构价值链、重组业务流程&#xff0c;或创建新的生态系统平台成为集团企业数字化转型的契机。 蒙牛电子采购招标平台作为…

WEB网页设计期末作业个人主页——基于HTML+CSS制作个人简介网站

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

现实中的项目范围变更

大多数招投标或签合同的项目(TOG或TOB),范围变更是极少的,一旦发起范围变更申请,这个流程是非常复杂的,而且会有负面影响,尤其是TOG的项目。 项目范围变更,往往会引起项目金额变更,核减、增加、不变都有可能。 TOG项目的范围变更,常是因为政策变了、上级要求等不可…

(附源码)Springboot网上购物平台 毕业设计 141422

Springboot网上购物平台的开发 摘 要 随着Internet的使用越来越广泛&#xff0c;在传统的商业模式中&#xff0c;对于日常各类商品&#xff0c;人们习惯于到各种商家店铺购买。然而在快节奏的新时代中&#xff0c;人们不一定能为购买各类商品腾出时间&#xff0c;更不会耐心挑…

Docker管理工具Portainer忘记admin登录密码怎么办?

Portainer官网解决方法链接 https://docs.portainer.io/v/ce-2.11/advanced/reset-admin 炒鸡详细步骤&#xff01; 1.查看所有容器,包括未运行的 docker ps -a 2.找到Portainer对应信息 3.停止Portainer容器 docker stop portainerid 我这里就应该是 docker stop 507566…