JavaScript的基本内容学习

概要
  • 前端的组成
层次作用
HTML(结构层)利用语义化标签搭建网页
CSS(样式层)利用样式进行美化网页、进行网页布局
JavaScript(行为层)可以给网页添加动态效果
  • JavaScript 是一种高级、解释型的编程语言,由网景公司(Netscape)在1995年开发,现由ECMA国际通过ECMAScript标准规范进行标准化。它是互联网上最广泛使用的客户端脚本语言,主要用于增强网页和用户交互、构建动态功能及创建网络应用。JavaScript 最初设计用于嵌入到HTML文档中,并能在用户的浏览器端直接执行,无需编译成可执行文件。随着技术发展,JavaScript 也扩展到了服务器端(Node.js)、移动端应用开发(如React Native)以及跨平台桌面应用开发(Electron)等领域。JavaScript 在Web开发中的核心作用包括表单验证、动画效果、用户界面互动、数据处理以及构建复杂的单页应用程序(SPA)等。此外,它还支持大量的开源库和框架,如jQuery、React、Vue.js等,极大地丰富了其功能和使用场景。

  • JavaScript的组成

    1. ECMAScript(核心):这是JavaScript语言的核心标准,定义了语言的基本语法、数据类型、控制结构、内置对象和函数等。例如变量声明、函数定义、字符串操作、数组方法、流程控制语句等都是ECMAScript规范的一部分。
    2. DOM(文档对象模型):DOM(Document Object Model)是文档对象模型的缩写,它是一种接口标准,用于表示和操作HTML、XML等文档的标准格式。DOM是浏览器提供的一套API,用于访问和操作HTML或XML文档的接口。通过DOM,JavaScript可以动态地改变网页的内容、结构和样式,比如获取页面元素、修改内容、添加或删除节点等。
    3. BOM(浏览器对象模型):BOM则是与浏览器交互的对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象,比如window对象、navigator对象、location对象、history对象等,这些对象提供了有关浏览器环境本身的信息,并允许脚本与浏览器进行交互,如弹出对话框、控制浏览器历史记录、处理定时器等。
  • 另外,在现代Web开发中,还有其他一些重要组成部分,如:

    1. Web API:浏览器提供的各种接口,包括但不限于AJAX、Fetch、WebSocket、Geolocation、IndexedDB等,使得JavaScript能更好地实现异步通信、地理位置定位、离线存储等功能。
    2. 库和框架:如jQuery、React、Vue、Angular等,它们为开发者提供了更高层次的抽象和工具,简化开发过程,提高开发效率。但请注意,这些并不是JavaScript语言本身的组成部分,而是基于JavaScript构建的额外工具。
  • JavaScript 的主要特点包括:

    1. 轻量级:易于学习和编写,语法简洁。
    2. 解释性:代码不需要预编译,可在支持JavaScript的环境中即时执行。
    3. 基于对象:采用面向对象编程机制,同时具有原型继承的特点。
    4. 事件驱动:支持事件处理模型,可以对用户的操作或特定事件做出响应。
    5. 弱类型:变量的数据类型可以在运行时自动确定或改变。
    6. 跨平台:能够在多种操作系统环境下运行,在所有现代浏览器中均得到支持。
    7. DOM操作:与HTML和CSS紧密结合,能够动态修改和访问网页内容、样式和结构。
    8. AJAX支持:允许无刷新页面更新,实现异步数据交换。
基本内容
  • JavaScript输出数据的方式:

    1. 使用 window.alert()弹出警告框。
    2. 使用 document.write() 方法将内容写到 HTML 文档中。
    3. 使用 innerHTML写入到 HTML 元素。
    4. 使用console.log()写入到浏览器的控制台。
    5. prompt() 是一个内置的浏览器窗口对象方法,用于与用户进行交互。它会弹出一个对话框,显示一段提示信息,并允许用户输入文本数据。
  • 数据类型:

    • 基本数据类型:包括number(数字)、string(字符串)、boolean(布尔值)、nullundefined以及ES6新增的symbol
    • 引用数据类型:包括object(对象)和function(函数),其中数组(array)和正则表达式(RegExp)也是对象类型的子类。
  • 变量声明:

    • var:在ES5及更早版本中使用,具有变量提升特性,在同一个作用域内可以重新声明。
    • letconst(ES6引入):提供了块级作用域,并且const用于声明常量,一旦赋值后不可更改其引用。
  • 操作符:

    • 算术运算符:如+-*/%等。
    • 关系与相等运算符:比较两个值的关系,如><>=<===!====(严格相等)、!==(严格不等)。
    • 逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)。
    • 赋值运算符:=, +=, -=等。
    • 位运算符:对二进制数进行操作,如&|^~<<>>>>>
    • 条件运算符(三元运算符):condition ? exprIfTrue : exprIfFalse
  • 控制结构:

    • 条件语句:if...elseswitch
    • 循环:forwhiledo...whilefor...in(遍历对象属性)、for...of(遍历可迭代对象,如数组)。
    • 跳转语句:breakcontinue
  • 函数:

    • 函数定义:通过function关键字创建函数。
    • 匿名函数:没有名称的函数,可以直接赋值给变量或者作为参数传递。
    • 箭头函数(ES6):简洁的函数定义语法,如(param1, param2) => expression{ statements }
    • 返回值:使用return语句从函数内部返回结果。
  • 对象:

    • 对象字面量:通过键值对形式创建对象,如{ key: value }
    • 属性访问:通过.[ ]来访问和修改对象属性。
    • 构造函数:使用new关键字实例化对象。
    • 原型链和继承:JavaScript基于原型实现继承机制。
  • 数组:

    • 数组定义:通过方括号[]初始化数组。
    • 内置方法:如.push().pop().shift().unshift().slice().map().filter()等。
  • 字符串:

    • 字符串是不可变的,可以通过字符串方法进行操作,如.length获取长度、.charAt()访问单个字符、.split()分割字符串、.concat()拼接字符串等。
  • 内置对象包括MathDateArrayObjectFunctionRegExp等。

    1. Object:所有JavaScript对象的基类,提供了一些通用的方法:

      • Object.create(prototype[, propertiesObject]):创建一个新对象,其[[Prototype]]链接到指定的对象。
      • Object.defineProperty(obj, prop, descriptor):直接在一个对象上定义或修改一个属性及其特性。
      • Object.keys(obj)Object.values(obj)Object.entries(obj):分别返回一个对象的所有自身可枚举属性名数组、值数组和键值对数组。
    2. Array:数组对象的构造函数,包含大量处理数组的方法:

      • push(): 向数组末尾添加元素。
      • pop(): 删除并返回数组最后一个元素。
      • shift(): 删除并返回数组的第一个元素。
      • unshift(): 在数组开头添加元素。
      • slice(): 返回一个子数组,原数组不变。
      • map(): 创建一个新数组,其结果是调用提供的函数处理原数组每个元素的结果。
      • filter(): 创建一个新数组,其中包含通过测试函数的所有元素。
    3. Function`

      • 函数对象的构造函数,但通常使用函数声明或箭头函数语法创建函数。
      • 每个函数都是Function的实例,拥有自己的方法如call()apply()bind()用于改变函数上下文(this)并执行函数。
    4. String:字符串对象的相关方法:

      • length: 属性返回字符串的长度。
      • charAt(index): 返回指定位置的字符。
      • substring(start, end?): 提取字符串的一部分。
      • split(separator[, limit]): 根据分隔符将字符串分割成数组。
      • concat(string2, ...[, stringN]): 连接两个或更多的字符串,并返回一个新的字符串。
    5. Number:提供与数字相关的属性和方法,例如:

      • isNaN(value): 判断给定参数是否为NaN。
      • isFinite(number): 判断给定数是否为有限数值。
      • toFixed(digits): 把数字转换为指定位数的小数。
    6. Math:包含数学常数和函数,如:

      • Math.PI: 圆周率。
      • Math.random(): 返回0到1之间的随机浮点数。
      • Math.floor(x): 对数进行下舍入。
      • Math.ceil(x): 对数进行上舍入。
      • Math.pow(base, exponent): 计算基数的指数次幂。
    7. Date:表示日期和时间的JavaScript对象,可以获取当前日期、设置日期以及进行日期操作。

      • 创建Date对象:

        • 构造函数:

          var date = new Date();
          

          不传入参数时,创建的是当前时间的一个新实例。

          或者可以通过以下方式指定特定时间:

          // 直接输入年、月、日等参数(月份从0开始计数,因此1代表2月)
          var date1 = new Date(2024, 0, 18); // 创建一个2024年1月18日的新实例// 使用特定格式的字符串创建
          var date2 = new Date("January 18, 2024 00:00:00"); 
          var date3 = new Date("2024-01-18T00:00:00"); // ISO 8601格式// 指定自1970年1月1日以来的毫秒数
          var date4 = new Date(1685055600000); // 2023年8月2日12:00:00 UTC
          
      • 获取和设置日期/时间值:

        • 实例方法

          • getDate(), getDay(), getFullYear(), getHours(), getMilliseconds(), getMinutes(), getMonth(), getSeconds(), getTime(), getTimezoneOffset() 等用于获取相应的时间部分。
          • 对应地,有 setDate(), setFullYear(), setHours(), setMilliseconds(), setMinutes(), setMonth(), setSeconds() 等方法来设置具体的时间值。

          示例:

          var today = new Date();
          console.log(today.getDate()); // 获取当前日期(1-31)
          today.setFullYear(2025); // 设置年份为2025
          
        • 其他常用方法:

          • toLocaleDateString()toLocaleTimeString() 方法将日期和时间转换为本地化格式的字符串。
          • toDateString() 返回日期部分的字符串形式。
          • toTimeString() 返回时间部分的字符串形式。
          • toISOString() 返回ISO 8601格式的字符串,如:“2024-01-18T00:00:00.000Z”。
        • 静态方法:

          • Date.now() 返回当前时间距离1970年1月1日0点0分0秒(UTC)的毫秒数。
          • Date.parse(dateString) 解析给定的日期字符串,并返回该时间点与1970年1月1日之间的毫秒数。此方法对于不同格式的日期字符串解析规则可能因浏览器而异,建议使用new Date(dateString)并检查返回值是否有效来确保兼容性。
        • 示例操作:

        var d = new Date();
        console.log(d.toLocaleString()); // 显示当前日期和时间的本地格式d.setDate(d.getDate() + 7); // 将日期增加7天
        console.log(d.toDateString()); // 显示修改后日期console.log(Date.now()); // 输出当前时间戳(毫秒)
        
    8. RegExp:正则表达式(Regular Expression,简称 RegExp),是 JavaScript 中用于处理文本字符串的强大工具。它定义了一种模式,可以用来搜索、匹配、替换文本中的特定子串。

    • 在JavaScript中创建正则表达式有两种方式:

      1. 字面量语法:

        var regex = /pattern/flags;
        

        其中 pattern 是一个代表所需匹配模式的字符串,而 flags 可选,包含标志字符(如 g、i、m),分别表示全局搜索(global)、不区分大小写(ignore case)和多行模式(multiline)。

      2. 构造函数语法:

        var regex = new RegExp('pattern', 'flags');
        
    • 正则表达式的常用方法:

      • .test(string): 测试给定字符串是否满足正则表达式所定义的模式。
      • .exec(string): 在字符串中执行查找,并返回第一个匹配项的信息,如果没有找到匹配项,则返回null。当使用全局标志g时,连续调用.exec()会逐个查找所有匹配项。
    • 与字符串对象结合的方法:

      • string.match(regexp): 在字符串中查找正则表达式的匹配项,返回匹配结果数组或null
      • string.replace(regexp|substr, newSubstr|function):根据正则表达式或子串进行查找并替换,如果第一个参数是正则表达式还可以利用分组(())捕获的内容进行动态替换。
      • string.search(regexp):返回字符串中第一次出现正则表达式匹配项的索引位置,如果没有找到返回-1
    • 全局函数如isNaN()检查是否为NaN、parseInt()parseFloat()转换字符串为数字、prompt()alert()confirm()与用户交互。

      • isNaN(value): 这不是一个正则表达式相关函数,而是用来检查传递的值是否为NaN(非数字)。返回值是一个布尔值,如果是NaN则返回true,否则返回false
      • parseInt(string, radix): 该函数解析一个字符串,并返回一个整数。第二个可选参数指定进制,默认是10进制。如果字符串不能被解析成有效的整数,或者基数无效,则返回NaN
      • parseFloat(string): 类似于parseInt,但此函数尝试将字符串解析为浮点数。
      • prompt(message[, defaultText]): 此全局浏览器函数弹出一个对话框,提示用户输入信息。返回用户输入的字符串或在用户取消时返回null
      • alert(message): 显示一个警告对话框,包含指定的消息内容,并在用户点击确定后关闭。
      • confirm(question): 显示一个确认对话框,包含指定的问题文本以及“确定”和“取消”按钮。用户点击确定时返回true,点击取消时返回false
  • 全局函数部分在JavaScript中指的是可以直接调用而无需特定对象的函数,这些函数在浏览器环境中提供了一些基本的用户交互和数据处理能力。以下是几个常用的全局函数详细介绍:

    1. isNaN(value)

      • 该函数接收一个参数并检查其是否为NaN(非数字)。
      var num = "Hello";
      console.log(isNaN(num)); // 输出:true,因为"Hello"不是数字
      

      注意:isNaN会首先尝试将传入值转换为数字,因此某些非数字字符串也可能返回false,例如空字符串""会被转换为0,所以isNaN("")会返回false。

    2. parseInt(string, radix)

      • 此函数用于解析一个字符串,并返回其中包含的整数值。第二个可选参数指定进制,默认是10进制。
      var str = "123";
      console.log(parseInt(str)); // 输出:123
      console.log(parseInt("1101", 2)); // 输出:13,二进制数1101转换为十进制数
      
    3. parseFloat(string)

      • 类似于parseInt,但此函数尝试将字符串解析为浮点数。
      var floatStr = "3.14";
      console.log(parseFloat(floatStr)); // 输出:3.14
      
    4. prompt(message[, defaultText])

      • 这是一个浏览器环境下的全局函数,它弹出一个对话框提示用户输入信息,用户可以在这个对话框内输入文本,然后点击确认或取消按钮。函数返回用户输入的字符串,如果用户点击取消,则返回null
      var userInput = prompt("请输入您的姓名:", "John Doe");
      if (userInput !== null) {console.log(userInput);
      }
      
    5. alert(message)

      • 显示一个警告对话框,包含给定的消息内容。这个对话框通常只包含一个“确定”按钮,当用户点击确定后对话框消失。
      alert("这是一条消息提醒!");
      
    6. confirm(question)

      • 显示一个确认对话框,包含一个问句以及“确定”和“取消”两个按钮。用户点击“确定”时,函数返回true;点击“取消”时,函数返回false
      var isAgreed = confirm("你是否同意条款和条件?");
      if (isAgreed) {console.log("用户已同意条款和条件");
      } else {console.log("用户不同意条款和条件");
      }
      

    这些全局函数主要用于简单的用户交互和数据类型转换,在现代Web应用开发中,为了更好的用户体验,推荐使用更复杂的UI组件和API进行交互操作。对于验证数据格式等任务,正则表达式也经常与这些函数结合使用。

  • 异步编程在JavaScript中,由于其单线程执行模型,处理网络请求、文件读写等耗时操作时需要采用异步编程方式,以避免阻塞主线程。以下是关于异步编程的三种主要技术手段的详细解释:

    1. 回调函数 回调函数是最早的异步编程模式之一,在JavaScript中广泛应用。当一个异步任务完成后,通过调用预先定义好的函数(即回调函数)来处理结果或错误。

      function getData(callback) {// 假设这是一个异步操作setTimeout(() => {const data = 'Async Data';callback(data); // 异步操作完成后调用回调函数}, 2000);
      }function processData(data) {console.log('Processed data:', data);
      }// 使用回调函数处理异步结果
      getData(processData);
      

      缺点:随着异步逻辑复杂度增加,多个回调嵌套导致代码难以阅读和维护,这通常被称为“回调地狱”。

    2. Promise Promise 是ES6引入的一种标准机制,用于处理异步操作并解决回调地狱问题。它代表了一个异步操作的最终完成(或失败)及其结果值。Promise有三种状态:pending(进行中)、fulfilled(已成功)或rejected(已失败)。一旦状态改变,就不可再变。

      function getData() {return new Promise((resolve, reject) => {setTimeout(() => {const data = 'Async Data';if (data) { // 模拟异步操作的成功情况resolve(data);} else {reject(new Error('Failed to fetch data'));}}, 2000);});
      }getData().then(data => {console.log('Processed data:', data);
      }).catch(error => {console.error('Error:', error.message);
      });
      
    3. async/await async/await 是基于Promise的更简洁的异步编程语法糖。async 关键字用来声明一个异步函数,该函数会隐式地返回一个Promise对象;await 关键字则用于等待Promise的结果,并可以放在async函数内部。

      async function getData() {return new Promise((resolve, reject) => {setTimeout(() => {resolve('Async Data');}, 2000);});
      }async function main() {try {const data = await getData();console.log('Processed data:', data);} catch (error) {console.error('Error:', error.message);}
      }main(); // 启动异步操作
      

    使用async/await可以使异步代码看起来更加同步化,更易于理解和调试。然而,本质上它们仍然是基于Promise的异步编程机制,只是提供了一种更接近传统顺序流程控制的语法形式。

  • 模块化是编程中的一种设计思想,它将程序分割成多个独立、可复用的部分(即模块),每个模块有自己明确的职责和接口。在JavaScript中,ES6引入了原生的模块系统,通过importexport关键字支持模块导入导出功能,使得代码结构更加清晰,同时方便代码复用和管理。

    • export 关键字:export用于对外暴露模块的功能(变量、函数、类等)。一个模块可以有多个export语句,也可以通过default export来指定一个默认输出项。

    • 命名导出:为模块内的每个需要导出的成员分别指定名称

      // math.js
      function add(x, y) {return x + y;
      }function subtract(x, y) {return x - y;
      }export { add, subtract };
      
    • 默认导出:模块内只能有一个default export,代表这个模块的默认出口。

      // person.js
      class Person {constructor(name, age) {this.name = name;this.age = age;}
      }export default Person;
      
    • import 关键字:import用于从其他模块导入已经导出的功能。

      • 导入默认导出:

        // 导入person.js中的默认导出(Person类)
        import Person from './person';const alice = new Person('Alice', 30);
        
      • 导入命名导出:

        // 导入math.js中的命名导出
        import { add, subtract } from './math';console.log(add(5, 3)); // 输出8
        console.log(subtract(5, 3)); // 输出2
        
      • 重命名导入:导入时可以给导入的变量或函数重新命名以避免命名冲突

        import { add as sum, subtract as difference } from './math';
        
      • 整体导入:使用*一次性导入模块的所有导出项目,并将其作为一个对象来访问

        // 导入math.js的所有导出内容
        import * as math from './math';console.log(math.add(5, 3)); // 输出8
        console.log(math.subtract(5, 3)); // 输出2
        

    通过这种方式,JavaScript开发者可以在不同的文件中编写模块化的代码,然后通过importexport相互连接,形成一个复杂的、分层次的应用程序结构。

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

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

相关文章

开发板通过 Ubuntu/Linux 连接外网

文章目录 开发板通过 Ubuntu/Linux 连接外网概述配置 Ubuntu 系统配置开发板 开发板通过 Ubuntu/Linux 连接外网 概述 如果开发板需要访问外网&#xff0c;可以通过网线将开发板与 Ubuntu 系统连接起来&#xff0c;在 Ubuntu 系统中配置 ip_forward 让 Ubuntu 成为路由器&…

数字创意市场:Web3时代创作者的新机遇

随着Web3时代的崭露头角&#xff0c;数字创意市场正迎来全新的变革和机遇。在这个数字化的时代&#xff0c;创作者们将面对更加开放、去中心化的创作和交易环境。本文将深入探讨Web3时代数字创意市场为创作者带来的新机遇&#xff0c;以及这个时代为创意产业带来的变革。 创作者…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-4 label

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>label</title> </head><body> 性别: <label for"male">男</label> <input type"radio" name"sex&quo…

滚动菜单ListView

activity_main.xml <include layout"layout/title"/> 引用上章自定义标题栏 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app&qu…

配置云服务器

需求 我打算配置一个小型云服务器&#xff0c;玩玩。学习怎么部署网站等等。 1、购买云服务器 第一次玩&#xff0c;我购买的华为云提供的云服务器 66元 安装ubuntu 22 2、配置环境 jdk 解压jdk命令 tar -xzf jdk-8u171-linux-x64.tar.gz 修改配置文件 vim /etc/profil…

如何安装“虚拟机(VMware)”win10系统?

1、 下载 vmware官网下载&#xff1a;vmware官网跳转 2、 安装

HarmonyOS NEXT鸿蒙星河版发布

1月18日,在深圳举行的“鸿蒙生态千帆启航仪式”上,华为常务董事、终端BG CEO余承东宣布HarmonyOS NEXT鸿蒙星河版面向开发者开放申请。鸿蒙星河版将实现原生精致、原生易用、原生流畅、原生安全、原生智能、原生互联6大极致原生体验。 并且,华为在 1 月 15 日开启了HarmonyO…

SpringBoot SaToken Filter如用使用ControllerAdvice统一异常拦截

其实所有的Filter都是一样的原理 大致流程: 创建一个自定义Filter, 用于拦截所有异常此Filter正常进行后续Filter调用当调用后续Filter时, 如果发生异常, 则委托给HandlerExceptionResolver进行后续处理即可 以sa-token的SaServletFilter为例 首先注册SaToken的过滤器 pac…

安卓apk加固后重签名

背景 等保检测&#xff0c;安卓apk使用第三方加固后签名信息会丢失&#xff0c;需要我们重新进行签名 使用jarsigner签名遇到的问题 APP失效无法安装 如何解决签名失效 我们在这里使用Android SDK的apksigner进行签名 mac系统&#xff0c;apksigner 需要设置环境变量 1、…

基于深度学习的时间序列算法总结

1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法&#xff0c;近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络&#xff08;RNN&#xff09;、长短时记忆网络&#xff08;LSTM&#xff09;、门控循环单元&a…

安全牧场,保障优质奶源 追溯羊奶品质

安全牧场&#xff0c;保障优质奶源 追溯羊奶品质 近年来&#xff0c;人们对食品安全和健康越来越关注&#xff0c;而安全牧场的兴起正能够满足人们对优质奶源的需求。安全牧场以严格的品质监控和科学的管理&#xff0c;为消费者提供可追溯的高品质羊奶产品。本文小编羊大师将为…

基于STM32F103的智能书房系统的设计

摘要&#xff1a; 智能书房系统是一种将现代技术应用于书房环境的智能化管理系统。本文提出了一种基于STM32F103的智能书房系统的设计方案&#xff0c;旨在提供便捷、舒适和高效的书房环境&#xff0c;以满足用户对学习和工作的需求。该系统利用嵌入式系统和传感器技术&#xf…

长虹智能电视刷机 ZLM75HiS机芯 55D3F、50D3F、43D3F、39D3F、32D3F 刷机方法,及刷机数据

机芯&#xff1a;ZLM75HiS 适用机型&#xff1a;55D3F、50D3F、43D3F、39D3F、32D3F USB升级 第1步&#xff0c; 下载后解压&#xff0c;找到文件夹里面 .pkg 等文件全部复制到U盘根目录。 第2步&#xff0c; 在关机情况下&#xff0c;将U 盘插入USB2.0 接口。 第3步&…

动态住宅代理IP是什么?如何配置使用?

动态住宅代理IP&#xff0c;作为一种高效的网络工具&#xff0c;不仅能够为您的在线活动提供额外的保护层&#xff0c;还能增强匿名性和数据安全。接下来将深入探讨动态住宅代理IP的定义、设置步骤、以及它如何有效保护您的网络隐私和安全。 一、动态住宅代理是什么&#xff1f…

springboot mybatis-plus swing实现报警监听

通过声音控制报警器&#xff0c;实现声光报警&#xff0c;使用beautyeye_lnf.jar美化界面如下 EnableTransactionManagement(proxyTargetClass true) SpringBootApplication EnableScheduling public class AlarmWarnApplication {public static void main(String[] args) …

如用postman进行web端自动化测试(超详细解析)

前言 概括说一下&#xff0c;web接口自动化测试就是模拟人的操作来进行功能自动化&#xff0c;主要用来跑通业务流程。 主要有两种请求方式&#xff1a;post和get&#xff0c;get请求一般用来查看网页信息&#xff1b;post请求一般用来更改请求参数&#xff0c;查看结果是否正…

购买cdn节点怎么接入服务器-速盾网络

购买CDN节点以提高网站的访问速度和稳定性已经成为许多网站运营者的共识。而在购买了CDN节点之后&#xff0c;接入服务器是一个必不可少的步骤。本文将介绍如何将购买的CDN节点接入服务器。 首先&#xff0c;我们需要选择合适的CDN厂商。市面上有很多知名的CDN厂商&#xff0c…

嵌入式学习-网络编程-Day5

思维导图 select完成tcp并发服务器模型&#xff1a; 服务器端 #include <myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.122.153"int main(int argc, const char *argv[]) {//1.创建套接字int sfd socket(AF_INET,SOCK_STREAM,0/*IPPROTO_TCP*…

前端公共组件库优化

背景 前段时间入职了新公司后&#xff0c;做一些内部前端基建的工作&#xff0c;其中一个工作就是优化现有的frontend-common公共组件库。之前的组件库一直是以源码依赖的形式存在&#xff0c;即各个项目通过git submodule的方式将该仓库引入到各个项目中&#xff0c;作为一个…

机器学习--jupyter使用

机器学习–jupyter notebook的使用 Jupyter项目是一个非盈利的开源项目&#xff0c;源于2014年的ipython项目&#xff0c;因为它逐渐发展为支持跨所有编程语言的交互式数据科学和科学计算 Jupyter Notebook&#xff0c;原名IPython Notbook&#xff0c;是IPython的加强网页版…