ECMAScript基础入门:从语法到应用

 

在此之前我以及发布过关于JavaScript基础知识点大家也可以参考

大家有关于JavaScript知识点不知道可以去

🎉博客主页:阿猫的故乡

🎉系列专栏:JavaScript专题栏

🎉ajax专栏:ajax知识点

🎉欢迎关注:👍点赞🙌收藏✍️留言

以下我总结关于ecm重要知识点!

目录

学习目标:

学习内容:

学习时间:

学习产出:

ECMAScript简介:了解ECMAScript的起源、发展历程和版本:

 JavaScript基础语法:学习变量、数据类型、运算符、条件语句、循环语句等基本语法。

 函数和对象:掌握函数的定义与调用、作用域、闭包等概念;学习对象的创建、属性与方法的使用。

每一个都详细代码举例加上案例演示

DOM操作:理解DOM的概念,学习如何通过JavaScript操作HTML元素。 

 事件处理:学习如何使用事件监听器和事件处理函数来实现交互功能。

 异步编程:掌握异步编程的概念,学习使用回调函数、Promise和async/await处理异步任务。

 错误处理和调试:了解常见的JavaScript错误类型和调试技巧。


学习目标:

  1. 理解ECMAScript的基本概念和发展历程。
  2. 掌握JavaScript的基本语法和常用的控制结构。
  3. 熟悉JavaScript中的函数和对象的使用。
  4. 能够处理数组和字符串的操作。
  5. 熟悉DOM操作和事件处理。
  6. 掌握异步编程的基本知识和技巧。
  7. 理解常见的JavaScript错误类型和调试技巧,能够进行基本的错误处理和调试。

学习内容:

  1. ECMAScript简介:了解ECMAScript的起源、发展历程和版本。
  2. JavaScript基础语法:学习变量、数据类型、运算符、条件语句、循环语句等基本语法。
  3. 函数和对象:掌握函数的定义与调用、作用域、闭包等概念;学习对象的创建、属性与方法的使用。
  4. 数组和字符串:熟悉数组的操作、遍历、排序等;了解字符串的常用方法。
  5. DOM操作:理解DOM的概念,学习如何通过JavaScript操作HTML元素。
  6. 事件处理:学习如何使用事件监听器和事件处理函数来实现交互功能。
  7. 异步编程:掌握异步编程的概念,学习使用回调函数、Promise和async/await处理异步任务。
  8. 错误处理和调试:了解常见的JavaScript错误类型和调试技巧。

学习时间:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

ECMAScript简介:了解ECMAScript的起源、发展历程和版本:

ECMAScript(简称ES)是一种由ECMA国际(European Computer Manufacturers Association)制定的脚本语言标准,最初于1997年发布。ECMAScript是JavaScript的规范化版本,JavaScript是ECMAScript在Web浏览器中的实现。

起源:ECMAScript起源于Netscape公司推出的一种名为LiveScript的脚本语言,后来与Sun公司合作进行标准化,并更名为JavaScript。为了确保JavaScript的规范性和跨平台性,ECMA国际成立了TC39委员会,负责制定和更新ECMAScript标准。

发展历程:ECMAScript标准经历了多个版本的发展。最早的版本是ECMAScript 1,随后是ECMAScript 2、ECMAScript 3、ECMAScript 4(未通过)和ECMAScript 5。ECMAScript 5在2009年发布,成为JavaScript的主流版本。之后,ECMAScript进入了一种按年份命名的更新模式,例如ECMAScript 2015、ECMAScript 2016和ECMAScript 2017等。从ECMAScript 2015开始,标准每年发布一个新版本,引入了许多新的语言特性和功能。

版本:每个ECMAScript版本都有其特定的特性和升级内容。例如,ECMAScript 5引入了严格模式、JSON对象和数组的新方法等。ECMAScript 2015引入了let和const关键字、箭头函数、模板字符串等新特性。而ECMAScript 2016和ECMAScript 2017则引入了更多的功能,如可选链操作符(Optional Chaining)、空值合并操作符(Nullish Coalescing Operator)、异步函数等。

通过了解ECMAScript的起源、发展历程和不同版本的特性,我们可以更好地理解和应用JavaScript。同时,了解ECMAScript的最新特性和更新内容也有助于我们保持对JavaScript语言的学习和技术的更新。

 JavaScript基础语法:学习变量、数据类型、运算符、条件语句、循环语句等基本语法。

JavaScript基础语法是学习和理解JavaScript编程的重要一步。以下是一些常见的基础语法内容:

  1. 变量:学习如何声明和使用变量,了解变量的作用域和命名规则。

    // 声明和初始化变量
    var name = "John";
    let age = 25;
    const PI = 3.14;// 输出变量的值
    console.log(name);
    

  2. 数据类型:了解JavaScript的基本数据类型,如字符串、数字、布尔值和特殊值(null和undefined)。

    let name = "John";
    let age = 25;
    let isStudent = true;
    let address = null;
    let phoneNumber; // undefinedconsole.log(typeof name); // 输出 "string"
    

  3. 运算符:学习JavaScript的算术运算符、比较运算符、逻辑运算符以及赋值运算符等。

    let num1 = 10;
    let num2 = 5;let sum = num1 + num2; // 加法运算
    let difference = num1 - num2; // 减法运算
    let product = num1 * num2; // 乘法运算
    let quotient = num1 / num2; // 除法运算
    let remainder = num1 % num2; // 取余运算console.log(sum); // 输出 15
    

  4. 条件语句:学习使用if语句、switch语句等进行条件判断。

    let age = 18;if (age >= 18) {console.log("成年人");
    } else {console.log("未成年人");
    }
    

  5. 循环语句:学习使用for循环、while循环等进行重复执行一段代码。

    for (let i = 0; i < 5; i++) {console.log(i);
    }let i = 0;
    while (i < 5) {console.log(i);i++;
    }
    

通过以上的基础语法的学习,你可以理解JavaScript的基本语法结构,为后续的JavaScript编程打下坚实的基础。你可以运用上述的代码举例和案例演示,加深对每个基础语法的理解和记忆。

案例演示:

好的,以下是对应每个部分的案例:

  1. 变量:
// 示例1:声明和初始化变量
var name = "John";
let age = 25;
const PI = 3.14;// 示例2:输出变量的值
console.log(name); // 输出 "John"

  1. 数据类型:
let name = "John";
let age = 25;
let isStudent = true;
let address = null;
let phoneNumber; // undefinedconsole.log(typeof name); // 输出 "string"

  1. 运算符:
let num1 = 10;
let num2 = 5;let sum = num1 + num2; // 加法运算
let difference = num1 - num2; // 减法运算
let product = num1 * num2; // 乘法运算
let quotient = num1 / num2; // 除法运算
let remainder = num1 % num2; // 取余运算console.log(sum); // 输出 15

  1. 条件语句:
let age = 18;if (age >= 18) {console.log("成年人");
} else {console.log("未成年人");
}

  1. 循环语句:
// for循环
for (let i = 0; i < 5; i++) {console.log(i);
}// while循环
let i = 0;
while (i < 5) {console.log(i);i++;
}

你可以运行这些代码示例,观察控制台输出并理解每个基础语法的运行结果。

 函数和对象:掌握函数的定义与调用、作用域、闭包等概念;学习对象的创建、属性与方法的使用。

  1. 函数的定义与调用:
// 函数的定义
function sayHello() {console.log("Hello!");
}// 函数的调用
sayHello(); // 输出 "Hello!"

  1. 作用域与闭包:
// 全局变量
let globalVariable = "I'm global";function outerFunction() {let outerVariable = "I'm outer";function innerFunction() {let innerVariable = "I'm inner";console.log(globalVariable); // 访问全局变量console.log(outerVariable); // 访问外部函数变量console.log(innerVariable); // 访问当前函数变量}innerFunction();
}outerFunction();

  1. 对象的创建与属性的使用:
// 对象的创建
let person = {name: "John",age: 25,isStudent: true,address: {street: "123 Main St",city: "New York"}
};// 访问对象属性
console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 25
console.log(person.address.city); // 输出 "New York"

  1. 对象的方法的使用:
// 对象的方法
let calculator = {num1: 5,num2: 3,// 加法方法add: function() {return this.num1 + this.num2;},// 减法方法subtract: function() {return this.num1 - this.num2;}
};console.log(calculator.add()); // 输出 8
console.log(calculator.subtract()); // 输出 2

通过运行以上代码示例,你可以深入理解函数和对象的相关概念,并掌握它们的使用方法和特性。

案例演示:

  1. 函数的定义与调用:
// 函数的定义
function sayHello() {console.log("Hello!");
}// 函数的调用
sayHello(); // 输出 "Hello!"

  1. 作用域与闭包:
// 全局变量
let globalVariable = "I'm global";function outerFunction() {let outerVariable = "I'm outer";function innerFunction() {let innerVariable = "I'm inner";console.log(globalVariable); // 访问全局变量console.log(outerVariable); // 访问外部函数变量console.log(innerVariable); // 访问当前函数变量}innerFunction();
}outerFunction();

  1. 对象的创建与属性的使用:
// 对象的创建
let person = {name: "John",age: 25,isStudent: true,address: {street: "123 Main St",city: "New York"}
};// 访问对象属性
console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 25
console.log(person.address.city); // 输出 "New York"

  1. 对象的方法的使用:
// 对象的方法
let calculator = {num1: 5,num2: 3,// 加法方法add: function() {return this.num1 + this.num2;},// 减法方法subtract: function() {return this.num1 - this.num2;}
};console.log(calculator.add()); // 输出 8
console.log(calculator.subtract()); // 输出 2

通过运行以上代码示例,你可以深入理解函数和对象的相关概念,并掌握它们的使用方法和特性。

每一个都详细代码举例加上案例演示

  1. 数组的操作、遍历和排序:
// 数组的创建
let fruits = ["apple", "banana", "orange"];// 访问数组元素
console.log(fruits[0]); // 输出 "apple"
console.log(fruits[1]); // 输出 "banana"// 添加元素到数组末尾
fruits.push("grape");
console.log(fruits); // 输出 ["apple", "banana", "orange", "grape"]// 删除数组末尾的元素
fruits.pop();
console.log(fruits); // 输出 ["apple", "banana", "orange"]// 数组遍历
for (let i = 0; i < fruits.length; i++) {console.log(fruits[i]);
}// 数组排序
fruits.sort();
console.log(fruits); // 输出 ["apple", "banana", "orange"]

  1. 字符串的常用方法:
let str = "Hello, world!";// 计算字符串长度
console.log(str.length); // 输出 13// 字符串转换为大写
console.log(str.toUpperCase()); // 输出 "HELLO, WORLD!"// 字符串转换为小写
console.log(str.toLowerCase()); // 输出 "hello, world!"// 字符串查找子串
console.log(str.indexOf("world")); // 输出 7// 字符串替换子串
console.log(str.replace("world", "JavaScript")); // 输出 "Hello, JavaScript!"

以上代码演示了数组的基本操作和遍历,以及字符串的常用方法。通过运行这些例子,你可以更好地理解和应用数组和字符串的相关操作。

 案例演示:

函数的定义与调用、作用域、闭包等概念:

// 函数的定义与调用
function sayHello(name) {console.log("Hello, " + name + "!");
}sayHello("John"); // 输出 "Hello, John!"// 作用域
let x = 10; // 全局作用域function foo() {let x = 20; // 局部作用域console.log(x); // 输出 20
}foo();
console.log(x); // 输出 10// 闭包
function counter() {let count = 0;function increment() {count++;console.log(count);}return increment;
}let c = counter();
c(); // 输出 1
c(); // 输出 2

对象的创建、属性与方法的使用:

// 对象的创建和访问属性
let person = {name: "John",age: 30,city: "New York"
};console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 30// 对象的方法
let person = {name: "John",age: 30,city: "New York",sayHello: function() {console.log("Hello, my name is " + this.name + ".");}
};person.sayHello(); // 输出 "Hello, my name is John."

以上代码演示了函数的定义与调用、作用域、闭包以及对象的创建、属性与方法的使用。通过运行这些例子,你可以更好地理解和应用这些概念。

DOM操作:理解DOM的概念,学习如何通过JavaScript操作HTML元素。 

DOM操作是指通过JavaScript来操纵HTML文档中的元素。DOM(文档对象模型)是一种表示和操作HTML文档的标准,它将HTML文档中的每个元素都视为对象,并提供了一组方法和属性来操作这些对象。以下是一些常见的DOM操作示例,使用了最新的JavaScript语法:

  1. 获取元素:
// 通过id获取元素
const elementById = document.getElementById("myElement");// 通过类名获取元素(返回数组)
const elementsByClass = document.getElementsByClassName("myClass");// 通过标签名获取元素(返回数组)
const elementsByTag = document.getElementsByTagName("div");// 通过选择器获取元素
const elementBySelector = document.querySelector("#myElement .myClass");// 通过选择器获取多个元素(返回数组)
const elementsBySelectorAll = document.querySelectorAll(".myClass");

  1. 创建元素并添加到文档中:
const newElement = document.createElement("div");
newElement.textContent = "This is a new element";
document.body.appendChild(newElement);

  1. 修改元素的属性和样式:
// 修改元素的属性
element.setAttribute("class", "newClass");// 修改元素的样式
element.style.backgroundColor = "red";
element.style.fontSize = "20px";

  1. 添加事件处理程序:
// 添加点击事件处理程序
element.addEventListener("click", () => {console.log("Element clicked");
});// 添加事件委托处理程序
document.addEventListener("click", event => {if (event.target.matches(".myClass")) {console.log("Element with class 'myClass' clicked");}
});

  1. 修改元素的内容:
// 修改元素的文本内容
element.textContent = "New text content";// 修改元素的HTML内容
element.innerHTML = "<strong>New HTML content</strong>";

以上示例演示了如何使用最新的JavaScript语法进行DOM操作。请注意,这些示例只是最基本的操作,DOM还提供了更多的方法和属性,可以根据需求进行深入学习和探索。

案例说明:

好的,以下是对以上每个部分案例的具体说明:

  1. 获取元素:
  • 通过id获取元素:使用document.getElementById("myElement")方法来获取id为"myElement"的元素。
  • 通过类名获取元素:使用document.getElementsByClassName("myClass")方法来获取类名为"myClass"的所有元素。
  • 通过标签名获取元素:使用document.getElementsByTagName("div")方法来获取所有的div元素。
  • 通过选择器获取元素:使用document.querySelector("#myElement .myClass")方法来获取选择器为"#myElement .myClass"的元素。
  • 通过选择器获取多个元素:使用document.querySelectorAll(".myClass")方法来获取所有选择器为".myClass"的元素。
  1. 创建元素并添加到文档中:首先使用document.createElement("div")方法创建一个新的div元素,然后使用newElement.textContent属性设置元素的内容,最后使用document.body.appendChild(newElement)将新元素添加到文档的body中。

  2. 修改元素的属性和样式:

  • 修改元素的属性:使用element.setAttribute("class", "newClass")方法将元素的class属性修改为"newClass"。
  • 修改元素的样式:使用element.style.property = value的方式修改元素的样式,例如element.style.backgroundColor = "red"将元素的背景颜色修改为红色,element.style.fontSize = "20px"将元素的字体大小修改为20像素。
  1. 添加事件处理程序:
  • 添加点击事件处理程序:使用element.addEventListener("click", () => {...})方法为元素添加一个点击事件处理程序。
  • 添加事件委托处理程序:使用document.addEventListener("click", event => {...})方法来监听整个文档的点击事件,并通过event.target来判断具体点击的元素是否符合条件。
  1. 修改元素的内容:
  • 修改元素的文本内容:使用element.textContent = "New text content"将元素的纯文本内容修改为"New text content"。
  • 修改元素的HTML内容:使用element.innerHTML = "&lt;strong>New HTML content&lt;/strong>"将元素的HTML内容修改为"<strong>New HTML content</strong>"。

以上案例说明了如何使用最新的JavaScript语法进行DOM操作,具体展示了如何获取元素、创建元素、修改属性和样式、添加事件处理程序以及修改元素的内容。这些操作是在实际开发中常见的DOM操纵操作。

 事件处理:学习如何使用事件监听器和事件处理函数来实现交互功能。

好的,以下是一个使用事件监听器和事件处理函数的示例代码,并加上详细的注释说明:

// 获取按钮元素
const button = document.getElementById("myButton");// 定义点击事件处理函数
function handleClick(event) {// 阻止按钮默认的点击行为event.preventDefault();// 在控制台打印点击事件信息console.log("Button clicked");// 修改按钮的文本内容button.textContent = "Clicked!";// 修改按钮的样式button.style.backgroundColor = "red";
}// 添加点击事件监听器,当按钮被点击时调用 handleClick 函数
button.addEventListener("click", handleClick);

在上述代码中:

  • 首先通过document.getElementById()方法获取id为"myButton"的按钮元素。
  • 然后定义了一个名为handleClick的函数,它接受一个事件对象作为参数,用于处理点击事件。
  • handleClick函数中,使用event.preventDefault()方法阻止按钮的默认点击行为,以避免页面刷新。
  • 接着,在控制台打印了"Button clicked"的信息。
  • 然后修改了按钮的文本内容为"Clicked!"。
  • 最后修改了按钮的背景颜色为红色。
  • 最后,通过addEventListener()方法为按钮添加了一个点击事件监听器,当按钮被点击时,将调用handleClick函数。

这个示例展示了如何使用事件监听器和事件处理函数来实现交互功能。当按钮被点击时,会执行指定的函数,我们可以在函数中编写自己的逻辑代码,实现各种交互效果。

 异步编程:掌握异步编程的概念,学习使用回调函数、Promise和async/await处理异步任务。

异步编程是一种处理可能发生延迟或需要等待结果的操作的编程方式。在JavaScript中,常见的异步编程模式包括回调函数、Promise和async/await。

  1. 回调函数:回调函数是一种常见的用于处理异步操作的方式。它是一个作为参数传递给异步函数的函数,当异步操作完成时,会调用这个回调函数。
// 异步函数示例
function fetchData(url, callback) {// 模拟异步操作setTimeout(() => {const data = "Some data";// 将结果传递给回调函数callback(data);}, 2000);
}// 调用异步函数,并传入回调函数处理结果
fetchData("https://example.com/api/data", (data) => {console.log(data);
});

  1. Promise:Promise是ES6引入的一个处理异步操作的对象。它表示一个异步操作的最终完成或失败,并可获取结果。
// 异步函数示例
function fetchData(url) {return new Promise((resolve, reject) => {// 模拟异步操作setTimeout(() => {const data = "Some data";// 成功时调用 resolve,并传递结果resolve(data);// 或者失败时调用 reject,并传递错误信息// reject(new Error("Failed to fetch data"));}, 2000);});
}// 调用异步函数,并处理结果
fetchData("https://example.com/api/data").then((data) => {console.log(data);}).catch((error) => {console.log(error);});

  1. async/await:async/await是使用Promise进行异步编程的一种更简洁的语法。async函数返回一个Promise对象,并允许使用await关键字来等待异步操作完成。
// 异步函数示例
async function fetchData(url) {return new Promise((resolve, reject) => {// 模拟异步操作setTimeout(() => {const data = "Some data";// 成功时调用 resolve,并传递结果resolve(data);// 或者失败时调用 reject,并传递错误信息// reject(new Error("Failed to fetch data"));}, 2000);});
}// 使用 async/await 语法调用异步函数,并处理结果
async function handleData() {try {const data = await fetchData("https://example.com/api/data");console.log(data);} catch (error) {console.log(error);}
}// 调用处理函数
handleData();

这些是在ES6中使用最新语法处理异步编程的示例。它们提供了不同的方式来处理异步操作,使代码更具可读性和可维护性。您可以根据具体的应用场景选择适合的异步编程模式。

 错误处理和调试:了解常见的JavaScript错误类型和调试技巧。

在JavaScript中,常见的错误类型包括语法错误、运行时错误和逻辑错误。了解这些错误类型以及如何调试可以帮助我们更好地处理错误。

  1. 语法错误:这是由于代码中存在语法错误而导致的错误。例如,拼写错误、缺少括号或分号等。

    // 示例:语法错误
    if (true {console.log("Hello, World!");
    }
    // SyntaxError: Unexpected token '{'
    

    调试提示:在开发者工具的"控制台"中可以看到具体的语法错误信息,可以检查代码并修复错误。

  2. 运行时错误:这是在代码执行期间发生的错误。它可以是由于类型错误、变量未定义、越界访问等引起的。

    // 示例:运行时错误
    const num = 10;
    console.log(num.toUpperCase());
    // TypeError: num.toUpperCase is not a function
    

    调试提示:可以使用console.log()语句在代码的不同位置输出变量的值,以便确定错误发生的位置。还可以使用try-catch语句来捕获错误并采取适当的处理措施。

  3. 逻辑错误:这是由于代码的逻辑错误而导致的错误。代码可能按照逻辑执行,但结果不符合预期。

    // 示例:逻辑错误
    function calculateTotal(num1, num2) {return num1 + num2;
    }const total = calculateTotal(10, 20);
    console.log(total); // 1020,而不是30
    

    调试提示:可以使用console.log()语句来输出变量的值,以确保代码按照预期执行。还可以使用断点调试工具,如浏览器的开发者工具,在代码的特定位置设置断点以逐行调试代码。

除了调试技巧之外,还可以使用一些工具来帮助捕获和处理错误,例如:

  • 使用try-catch语句来捕获错误并采取适当的处理措施。
  • 使用开发者工具的"控制台"来查看错误信息和警告。
  • 使用console.log()语句在代码的不同位置输出变量的值以进行调试。
  • 使用断点调试工具(如浏览器的开发者工具)来逐行调试代码。
  • 使用lint工具(如ESLint)来静态分析代码并捕获潜在错误。

通过了解常见的JavaScript错误类型和调试技巧,我们可以更好地处理错误并改进代码的质量。

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

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

相关文章

nodejs+vue+ElementUi摄影作品图片分享工作室管理系统

第1周 2.21&#xff5e;2.27 查阅资料&#xff0c;学习vscode开发平台和vue框架技术 第2周 2.28&#xff5e;3.6 对软件功能需求进行分析, 软件功能模块划分及软件界面设计 第3周 3.7&#xff5e;3.13 撰写并提交毕业设计开题报告、英文资料翻译 第4周 3.14&#xff5…

将html转化成图片

如何将指定html内容转化成图片保存&#xff1f;这个问题很值得深思&#xff0c;实际应用中也很有价值。最直接的想法就是使用canvas&#xff0c;熟悉canvas的同学可以尝试一下。这里不做太多的说明&#xff0c;本文采用html2canvas库来实现。 html2canvas库的使用非常简单&…

2024年pmp考试还有多久啊?怎么备考?

一般来说每年3、6、9、12月考试&#xff0c;一年四次&#xff0c;具体时间以官网通知为准。报考时间提前2个月报名&#xff0c;2023年的最后一次考试时间是11月&#xff0c;已经截止报名了。所以下一次考试就得等到2024年3月了。 想知道怎么备考先来分析一下现在的“新”考纲&…

基于ERC20代币协议实现的去中心化应用平台

文章目录 内容简介设计逻辑ERC20TokenLoanPlatform 合约事件结构体状态变量函数 Remix 运行实现部署相关智能合约存款和取款贷款和还款 源码地址 内容简介 使用 solidity 实现的基于 ERC20 代币协议的借贷款去中心化应用平台(极简版)。实现存款、取款、贷款、还款以及利息计算的…

KubeSphere金丝雀发布流量分布调节不生效(将所有流量按比例分配给灰度发布版本)

如题 金丝雀发布按照流量比例访问不能生效 1、自制应用生成的路由添加注释: nginx.ingress.kubernetes.io/service-upstream:"true" 2、项目网关开启 3、完成 以上&#xff0c;祝好。

DBA-MySql面试问题及答案-上

文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎&#xff1f;6.可以针对表设置引擎吗&#xff1f;如何设置&#xff1f;6.选择合适的存储引擎&#xff1f;7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…

Linux 安装 Tomcat

1、找到安装包 2、解压缩 tar -xzvf xxx.tar.gz Tomcat 很好安装&#xff0c;已经安装好了 3、启动、关闭Tomcat 进入解压后文件夹之后&#xff0c;两个文件分别是启动和关闭 sh startup.sh // 启动 sh shutdown.sh // 关闭 然后就行了 4、主机连接虚拟机Tomcat 注意这里填写…

当物联网技术遇上圣诞节,会给你带来怎样的商业灵感

智能物联网项目可以将更浓烈的节日气氛融入到千家万户。有市场嗅觉的朋友已经踏上了这种创新与传统相遇的旅程&#xff0c;你可以参考一下他们的点子。 物联网智能照明 借助物联网技术&#xff0c;你可以创建一个智能照明系统&#xff0c;让每一束灯光闪烁出美妙的色彩或图案…

共享购:消费前沿的领导者

在当今这个信息化、互联网高速发展的时代&#xff0c;商业模式也在不断地创新和变革。共享购模式作为一种新型的商业模式&#xff0c;正逐渐受到广泛的关注和追捧。本文将深入探讨共享购模式的核心理念、优势以及如何应用在实际商业场景中&#xff0c;为读者揭示这一模式的巨大…

一起学量化之macd指标

macd指标 1. macd指标定义 MACD的组成要素MACD称为异同移动平均线&#xff0c;是从双指数移动平均线发展而来的。MACD由一根快线、一根慢线、一根0轴线和无数根红绿柱状线组成。 如下图所示&#xff0c;粉色的是快线&#xff0c;也称DIFF线&#xff1b;蓝色的是慢线&#xf…

基于Java SSM框架实现在线课程教育资源考试管理系统项目【项目源码+论文说明】

基于java的SSM框架实现在线课程教育资源考试管理系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线教育资源管理系统&#xff0c;主要的模块包括管理员&#xff1b;个人中心、学生…

html5实现最震撼公司年会抽奖(源码)

文章目录 1.设计来源1.1 主界面1.2 抽奖效果1.3 中奖效果 2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/12864099…