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; // undefined
    
    console.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; // undefined

console.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错误类型和调试技巧,我们可以更好地处理错误并改进代码的质量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis常见数据类型

目录 1.基本全局命令 2.数据结构和内部编码 3.单线程架构 1.基本全局命令 Redis有5种数据结构,但它们都是键值对种的值&#xff0c;对于键来说有一些通用的命令。 KEYS 返回所有满足样式(pattern) 的key。支持如下统配样式。 h?llo 匹配 hello, hallo和hxllo h*llo匹配h…

机场信息集成系统系列介绍(6):机场协同决策支持系统ACDM

目录 一、背景介绍 1、机场协同决策支持系统是什么&#xff1f; 2、发展历程 3、机场协同决策参与方 4、相关定义 二、机场协同决策ACDM的建设目标 &#xff08;一&#xff09;机场协同决策支持系统的宏观目标 1、实现运行数据共享和前序航班信息透明化 2、实现地面资源…

Linux常用基本命令(三)

一、显示命令 1. cat 通式&#xff1a;cat 选项 文件名 只能看普通的文本文件 缺点&#xff1a;如果内容过多会显示不全 选项效果-n显示行号包括空行-b跳过空白行编号-s讲所有的连续的多个空行替换为一个空行&#xff08;压缩成一个空行&#xff09;-A显示隐藏字符 三个标准文件…

十四、W5100S/W5500+RP2040之MicroPython开发<MQTTThingSpeak示例>

文章目录 1. 前言2. 平台操作流程3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPython和树莓派PICO正以其独特的优势引领着嵌入式开发…

使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错问题

目录 1、问题说明 2、问题分析思路 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序&#xff0c;查看库与库的依赖关系&#xff0c;查看出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总&#xff08;专栏文章列表&…

【数据结构】线性表

一.线性表 1.定义&#xff1a; n个同类型数据元素的有限序列&#xff0c;记为 L为表名&#xff0c;i为数据元素在线性表中的位序&#xff0c;n为线性表的表长&#xff0c;n0时称为空表。 2.数据元素之间的关系&#xff1a; 直接前驱和直接后继 3.抽象数据类型线性表的定义…

PADS Layout安全间距检查报错

问题&#xff1a; 在Pads Layout完成layout后&#xff0c;进行工具-验证设计安全间距检查时&#xff0c;差分对BAK_FIXCLK_100M_P / BAK_FIXCLK_100M_N的安全间距检查报错&#xff0c;最小为3.94mil&#xff0c;但是应该大于等于5mil&#xff1b;如下两张图&#xff1a; 检查&…

SpringBoot的配置高级

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

【JMeter】使用内网负载机(Linux)执行JMeter性能测试

一、背景 ​ 在我们工作中有时候会需要使用客户提供的内网负载机进行性能测试&#xff0c;一般在什么情况下我们需要要求客户提供内网负载机进行性能测试呢&#xff1f; 遇到公网环境下性能测试达到了带宽瓶颈。那么这时&#xff0c;我们就需要考虑在内网环境负载机下来执行我们…

使用C语言将ASCII明文编码为GSM短信体格式

一、背景介绍 GSM&#xff08;Global System for Mobile Communications&#xff09;是全球移动通信系统的简称&#xff0c;而GSM 03.38是GSM系统中用于短信编码的标准。GSM 03.38字符集采用7-bit编码&#xff0c;与ASCII的8-bit编码有所不同。为了将ASCII编码的文本转换为GSM…

【JavaWeb学习笔记】13 - JSP浏览器渲染技术

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/jsp JSP 一、JSP引入 1.JSP现状 1.目前主流的技术是前后端分离(比如: Spring Boot Vue/React),我们会讲的.[看一下] 2. JSP技术使用在逐渐减少&#xff0c;但使用少和没有使用是两个意思&#xff…

DB207S-ASEMI迷你贴片整流桥DB207S

编辑&#xff1a;ll DB207S-ASEMI迷你贴片整流桥DB207S 型号&#xff1a;DB207S 品牌&#xff1a;ASEMI 封装&#xff1a;DBS-4 最大平均正向电流&#xff1a;2A 最大重复峰值反向电压&#xff1a;1000V 产品引线数量&#xff1a;4 产品内部芯片个数&#xff1a;4 产品…

Spring security之授权

前言 本篇为大家带来Spring security的授权&#xff0c;首先要理解一些概念&#xff0c;有关于&#xff1a;权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器 一.授权的基本介绍 Spring Security 中的授权分为两种类型&#xff1a; 基于角色的授权&…

2024最新苹果手机APP软件下架了,怎么安装?

如果你是一个iPhone用户&#xff0c;你可能会遇到这样的情况&#xff1a;你想下载或更新一个软件&#xff0c;但发现它已经从APP Store上消失了。这可能是因为软件违反了苹果的规则&#xff0c;或者开发者主动撤下了软件。那么&#xff0c;这种情况下&#xff0c;你还能安装或使…

OpenCV | 霍夫变换:以车道线检测为例

霍夫变换 霍夫变换只能灰度图&#xff0c;彩色图会报错 lines cv2.HoughLinesP(edge_img,1,np.pi/180,15,minLineLength40,maxLineGap20) 参数1&#xff1a;要检测的图片矩阵参数2&#xff1a;距离r的精度&#xff0c;值越大&#xff0c;考虑越多的线参数3&#xff1a;距离…

Unreal5.3 PCG 笔记

目录 ElectricDreams场景功能移动中间山体向周围随机生成倒下的树干树干上随机生成的植被 ElectricDreams场景功能 移动中间山体向周围随机生成倒下的树干 配置内容 中心山体Spline周围沟渠Spline&#xff08;土堆&#xff09;PCG规则 主要功能节点 SplineSample&#xff08;…

基于Java web的住院管理系统论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

Linux 操作系统(用户注册、删除、权限修改等)

添加用户 格式&#xff1a;useradd 用户名 ( 添加用户 ) passwd 用户名 (给用户设置密码) Linux 用户切换原则&#xff1a; 高权限向低权限切换无需输入密码 低权限向高权限或同级用户切换需要输入密码 用户切换&#xff1a;su su – 用户名 &#xff08;用户切换&#x…

【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

蓝牙技术在物联网中的应用

随着蓝牙技术的不断演进和发展&#xff0c;蓝牙已经从单一的传统蓝牙技术发展成集传统蓝牙。高速蓝牙和低耗能蓝牙于一体的综合技术&#xff0c;不同的应用标准更是超过40个越来越广的技术领域和越来越多的应用场景&#xff0c;使得目前的蓝牙技术成为包含传感器技术、识别技术…