JavaScript 的基本术语大全

news2024/10/7 16:20:21

文章目录

  • 1、概述
  • 2、基本术语
    • 2.1、有效负载 (Payload)
    • 2.2、ReadableStream
    • 2.3、模块系统
    • 2.4、DOM (Document Object Model)
    • 2.5、事件 (Events)
    • 2.6、活动委托 (Event Delegation)
    • 2.7、内容安全策略 (CSP)
    • 2.8、渐进增强和优雅降级
    • 2.9、JSON (JavaScript Object Notation)
    • 2.10、AJAX (Asynchronous JavaScript and XML)
    • 2.11、闭包 (Closures)
    • 2.12、提升 (Hoisting)
    • 2.13、原型 (Prototypes)
    • 2.14、作用域 (Scope)
    • 2.15、this
    • 2.16、ES6/ES2015 及更高版本
    • 2.17、网络存储 API
    • 2.18、获取 API (Fetch API)
    • 2.19、预检请求 (Preflight Requests)
    • 2.20、CORS (跨源资源共享)
    • 2.21、WebSockets
    • 2.22、Service Workers
    • 2.23、渐进式网络应用程序 (PWA)
    • 2.24、Promise 和异步/等待
    • 2.25、Tree Shaking
    • 2.26、SSR (服务器端渲染)
    • 2.27、CSR (客户端渲染)
    • 2.28、虚拟DOM
    • 2.29、Webpack
    • 2.30、Babel
    • 2.31、NPM (节点包管理器)
    • 2.32、SPA (单页应用程序)
    • 2.33、SSG (静态站点生成器)
    • 2.34、错误处理
    • 2.35、性能优化技术
  • 3、总结

在这里插入图片描述

1、概述

JavaScript,作为现代Web开发的基石,随着技术的不断演进,引入了越来越多的新概念、术语和功能,使Web应用更加交互性强、高效且用户友好。掌握这些基本术语对于Web开发人员至关重要,无论你是初入此领域的新手还是寻求提升技能的资深开发者。本文将全面探讨JavaScript中的关键概念,从基础到高级,帮助你深化对JavaScript核心术语的理解。我们将涵盖DOM操作、异步编程、Service Workers等主题,旨在为你提供一个全面的JavaScript术语指南,助你在Web开发之旅中更加游刃有余。

2、基本术语

2.1、有效负载 (Payload)

有效负载是指在数据交换过程中传输的实际数据内容。在网络编程和API调用中,有效负载可以是任何形式的数据,如文本、图像、音频、视频或二进制数据。在HTTP请求和响应中,有效负载通常位于请求体或响应体中。有效负载的格式可以是JSON、XML、文本或其他格式,具体取决于应用程序的需求和协议规范。

// Sending a JSON payload to a server
fetch('https://api.example.com/data', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            key: 'value'
        }),
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch((error) => console.error('Error:', error));

2.2、ReadableStream

ReadableStream是Web Streams API的一部分,用于处理流数据。流数据是一种可以逐步读取的数据源,而不是一次性加载整个数据块到内存中。ReadableStream提供了一种机制,允许开发人员以异步方式读取流数据,并在数据到达时进行处理。这对于处理大型文件、实时数据流或需要逐步处理数据的场景非常有用。

// Assuming fetch API supports streams
fetch('path/to/text-file.txt')
    .then(response => {
        const reader = response.body.getReader();
        return new ReadableStream({
            start(controller) {
                function push() {
                    reader.read().then(({
                        done,
                        value
                    }) => {
                        if (done) {
                            controller.close();
                            return;
                        }
                        controller.enqueue(value);
                        push();
                    });
                }
                push();
            }
        });
    })
    .then(stream => new Response(stream))
    .then(response => response.text())
    .then(text => console.log(text))
    .catch(err => console.error(err));

2.3、模块系统

JavaScript的模块系统允许开发人员将代码组织成可重用的模块。每个模块定义了一组相关的功能或特性,并通过导出和导入机制与其他模块进行交互。模块系统提高了代码的可维护性、可读性和可扩展性。CommonJS和ES模块是JavaScript中最常用的两种模块系统。它们提供了不同的语法和特性,但核心思想是将代码拆分成独立的模块,并通过模块导出和导入来共享功能。

  // ES Modules example
  import {
      fetchData
  } from './api.js';

  fetchData().then(data => console.log(data));

2.4、DOM (Document Object Model)

DOM是Web文档的编程接口,它允许开发人员通过编程方式访问和修改HTML文档的结构、样式和内容。DOM将HTML文档表示为树形结构,其中每个HTML元素都是一个节点对象。开发人员可以使用JavaScript来查询、修改和创建DOM节点,从而动态地改变页面的外观和行为。DOM是Web开发中非常重要的一部分,几乎所有涉及页面交互和动态内容的功能都依赖于DOM。

// Accessing an element and changing its text content
  document.getElementById('demo').textContent = 'Hello, World!';

2.5、事件 (Events)

事件是在编程系统中发生的操作或信号,用于通知开发人员某些情况已经发生。在Web开发中,事件可以是用户交互(如点击、键盘输入)或系统事件(如页面加载完成、网络请求成功)。事件处理程序是与事件关联的函数,当事件发生时会被调用。通过监听和处理事件,开发人员可以响应用户操作、更新页面内容或执行其他逻辑。事件处理是构建交互式Web应用程序的基础。

document.getElementById('myButton').addEventListener('click', function() {
    alert('Button clicked!');
});

2.6、活动委托 (Event Delegation)

活动委托是一种事件处理策略,它将事件侦听器添加到父元素而不是各个子元素上。通过利用事件冒泡机制(即事件从触发它的元素向上传播到其父元素),可以在父元素上处理子元素的事件。这种方法减少了需要添加的事件侦听器的数量,提高了性能,并简化了事件处理程序的管理。活动委托特别适用于动态内容或大量相似元素的场景。

document.getElementById('parent').addEventListener('click', (event) => {
    if (event.target.tagName === 'LI') {
        console.log('List item clicked!');
    }
});

2.7、内容安全策略 (CSP)

内容安全策略是一种安全机制,用于减少和报告XSS(跨站脚本)攻击和其他内容注入攻击的风险。通过指定允许的脚本、样式、图像等资源的来源,CSP可以防止恶意代码的执行。CSP可以在服务器端通过HTTP响应头设置,也可以在客户端通过标签设置。CSP有助于提高Web应用程序的安全性,并减少潜在的安全漏洞。

2.8、渐进增强和优雅降级

渐进增强和优雅降级是Web开发中两种常见的设计策略,旨在确保Web应用程序在不同设备和浏览器上都能提供良好的用户体验。渐进增强是首先构建一个基本的、功能完备的应用程序版本,然后逐步添加增强功能以支持更高级的设备和浏览器。优雅降级则是从功能丰富的版本开始,并确保它在较旧的设备和浏览器上仍然可用,即使某些功能可能无法完全实现。这两种策略都强调了在构建Web应用程序时要考虑不同设备和浏览器的兼容性和性能。

2.9、JSON (JavaScript Object Notation)

JSON是一种轻量级的数据交换格式,基于JavaScript的子集。它以易于人类阅读和编写的文本形式表示数据,同时也易于机器解析和生成。JSON使用键-值对来表示数据对象,可以包含字符串、数字、布尔值、数组、对象等类型的数据。由于JSON的简洁性和通用性,它已成为Web开发中广泛使用的数据格式之一。无论是在客户端与服务器之间的通信、存储数据还是配置文件中,JSON都发挥着重要作用。

// JavaScript object
const obj = {
    name: "John",
    age: 30,
    city: "New York"
};

// Converting JavaScript object to JSON
const myJSON = JSON.stringify(obj);
console.log(myJSON); // {"name":"John","age":30,"city":"New York"}

// Parsing JSON to JavaScript object
const myObj = JSON.parse(myJSON);
console.log(myObj.name); // John

在这里插入图片描述

2.10、AJAX (Asynchronous JavaScript and XML)

AJAX是一种用于创建快速、动态网页的技术。它允许Web应用程序从服务器异步地发送和接收数据,而无需重新加载整个页面。通过使用XMLHttpRequest对象或Fetch API等现代技术,AJAX可以实现在不干扰用户当前浏览的情况下更新页面的部分内容。这使得Web应用程序更加响应迅速、交互性更强,并提供了更丰富的用户体验。AJAX常用于实时数据更新、表单验证、动态内容加载等场景。

// Basic AJAX call using XMLHttpRequest
const xhr = new XMLHttpRequest();

xhr.open('GET', 'https://api.example.com/data', true);

xhr.onload = function() {
    if (xhr.status >= 200 && xhr.status < 300) {
        console.log('Success:', JSON.parse(xhr.responseText));
    } else {
        console.error('Error:', xhr.statusText);
    }
};

xhr.onerror = function() {
    console.error('Request failed');
};

xhr.send();

2.11、闭包 (Closures)

闭包是JavaScript中的一个重要概念,它允许内部函数访问其外部函数的变量和参数。闭包的形成是由于JavaScript的作用域规则,即函数可以记住并访问其词法环境(即定义它的上下文)。闭包在JavaScript编程中有许多用途,包括实现私有变量、封装状态和行为、创建回调函数等。通过利用闭包,开发人员可以创建更灵活、可重用的代码模块,并管理复杂的状态和逻辑。

function makeGreeting(greeting) {
    return function(name) {
        console.log(`${greeting}, ${name}!`);
    };
}

const sayHello = makeGreeting('Hello');
sayHello('Alice'); // Outputs: Hello, Alice!

2.12、提升 (Hoisting)

在JavaScript中,提升是一种将变量和函数声明移动到其所在作用域顶部的行为。这意味着无论声明在代码中的哪个位置,它们都可以在声明之前的代码中被访问。然而,需要注意的是只有声明会被提升,而赋值操作不会被提升。因此,在使用变量之前进行赋值是非常重要的,以避免出现未定义或意外的值。了解提升行为对于避免常见的编程错误和陷阱至关重要。

console.log(myVar); // undefined (not ReferenceError)
var myVar = 5;

hoistedFunction(); // Outputs: "This function has been hoisted."
function hoistedFunction() {
    console.log('This function has been hoisted.');
}

2.13、原型 (Prototypes)

在JavaScript中,每个对象都有一个与之关联的原型对象。原型对象包含了可以被其关联对象继承的属性和方法。当尝试访问一个对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript引擎会在其原型链上查找该属性或方法。这种基于原型的继承机制允许对象共享属性和方法,从而提高了代码的可重用性和灵活性。通过修改原型对象,可以动态地添加或修改对象的行为和功能。

function Animal(name) {
    this.name = name;
}

Animal.prototype.speak = function() {
    console.log(`${this.name} makes a noise.`);
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

const dog = new Dog('Rex');
dog.speak(); // Rex barks.

2.14、作用域 (Scope)

作用域是指在程序中定义变量的区域,它决定了变量的可见性和生命周期。在JavaScript中,作用域可以是全局作用域(在整个程序中可见)或局部作用域(在特定函数或代码块中可见)。了解作用域规则对于避免命名冲突、管理变量生命周期和实现封装和模块化代码至关重要。通过合理使用作用域,可以编写更清晰、可维护的代码,并减少潜在的错误和问题。

function outerFunction() {
    let outer = 'I am the outer function!';

    function innerFunction() {
        console.log(outer); // Accesses outer function's variable
    }

    innerFunction();
}

outerFunction(); // Logs: I am the outer function!

2.15、this

在JavaScript中,"this"关键字用于引用当前对象或上下文。它的值取决于函数如何被调用以及它所处的执行环境。在全局上下文中,"this"引用全局对象(在浏览器中是window对象)。在对象的方法中,"this"引用调用该方法的对象实例。在构造函数中,"this"引用新创建的对象实例。在事件处理程序中,“this"通常引用触发事件的元素对象。了解"this"的行为和用法对于编写正确的面向对象编程和事件处理代码至关重要。通过正确地使用"this”,可以访问和操作当前对象的状态和行为,实现更复杂的功能和交互性。

const person = {
    firstName: "John",
    lastName: "Doe",
    fullName: function() {
        return `${this.firstName} ${this.lastName}`;
    }
};

console.log(person.fullName()); // John Doe

2.16、ES6/ES2015 及更高版本

ES6(或ECMAScript 2015)是JavaScript的一个重要更新版本,引入了许多新特性和语法改进。这些新特性包括类(class)语法、模块导入/导出、箭头函数、模板字符串、解构赋值、默认参数和剩余参数等。后续的版本(如ES7、ES8等)继续扩展了JavaScript的功能和性能。熟悉ES6及更高版本的新特性对于编写现代、高效、干净的JavaScript代码至关重要。这些新特性不仅提高了代码的可读性和可维护性,还提供了更强大的功能和更灵活的开发方式。通过使用ES6及更高版本的新特性,开发人员可以构建更复杂、交互性更强的Web应用程序,并充分利用JavaScript的强大功能。

const name = 'Alice';
const greet = (name) => `Hello, ${name}!`;
console.log(greet(name)); // Hello, Alice!

2.17、网络存储 API

网络存储API提供了在浏览器中存储数据的机制,包括localStorage和sessionStorage。localStorage用于持久化存储数据,即使关闭浏览器窗口或标签页后数据仍然保留。sessionStorage用于存储与特定会话相关的数据,当浏览器窗口或标签页关闭时数据会被清除。这些API允许开发人员将数据存储在客户端浏览器中,以便在没有网络连接的情况下访问数据或提高应用程序的性能。网络存储API对于实现离线功能、缓存数据或存储用户偏好等场景非常有用。通过合理使用网络存储API,可以创建更快速、响应更迅速的Web应用程序,并提供更好的用户体验。

// Storing data
localStorage.setItem('key', 'value');

// Retrieving data
const data = localStorage.getItem('key');
console.log(data);

2.18、获取 API (Fetch API)

Fetch API是一种现代的网络请求API,用于在浏览器中发送HTTP请求并接收响应。它提供了一个简洁、强大的接口来执行网络操作,并支持Promise-based异步处理。与旧的XMLHttpRequest对象相比,Fetch API更加简洁易用,并且提供了更好的错误处理和更灵活的功能。通过使用Fetch API,开发人员可以轻松地发起GET、POST等类型的HTTP请求,并处理返回的响应数据(如JSON、文本等)。Fetch API还支持请求和响应的拦截、超时设置、取消请求等高级功能。熟悉Fetch API对于构建高效、可靠的Web应用程序至关重要,特别是在需要处理大量网络请求或实现复杂交互功能的场景中。

fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));

2.19、预检请求 (Preflight Requests)

预检请求是一种跨域资源共享(CORS)机制的一部分,用于在浏览器发送实际请求之前检查服务器是否允许跨域访问。当浏览器遇到跨域请求(即请求的源与目标服务器的域不同)时,它会自动发送一个OPTIONS类型的预检请求到目标服务器。预检请求中包含了一些与跨域访问相关的HTTP

2.20、CORS (跨源资源共享)

CORS允许服务器明确哪些外部域名可以加载资源。对于前端开发人员来说,理解CORS是至关重要的,因为它影响了如何与第三方API交互。

// 服务器端设置CORS  
app.use((req, res, next) => {  
  res.header('Access-Control-Allow-Origin', '*');  
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');  
  res.header('Access-Control-Allow-Headers', 'Content-Type');  
  next();  
});

2.21、WebSockets

WebSockets提供了浏览器和服务器之间的持久连接,使得实时通信成为可能。这在需要即时更新的应用程序中非常有用,如聊天应用或实时仪表板。

// 客户端WebSocket连接  
const socket = new WebSocket('ws://localhost:8080');  
  
socket.onopen = function(event) {  
  socket.send('Hello Server!');  
};  
  
socket.onmessage = function(event) {  
  console.log('Server response: ', event.data);  
};  
  
socket.onerror = function(error) {  
  console.error('WebSocket Error: ', error);  
};  
  
socket.onclose = function(event) {  
  if (event.wasClean) {  
    console.log('Connection closed cleanly, code=', event.code, ' reason=', event.reason);  
  } else {  
    console.error('Connection died');  
  }  
};

2.22、Service Workers

Service Workers在浏览器后台运行,可以拦截和处理网络请求,缓存资源,发送推送通知等。它们对于创建离线应用和提高性能至关重要。

// 注册Service Worker  
if ('serviceWorker' in navigator) {  
  navigator.serviceWorker.register('/sw.js')  
    .then(registration => {  
      console.log('Service Worker registered:', registration);  
    })  
    .catch(error => {  
      console.error('Service Worker registration failed:', error);  
    });  
}

2.23、渐进式网络应用程序 (PWA)

PWA结合了现代Web技术来提供类似原生应用的用户体验。它们通过使用Service Workers和缓存策略实现离线访问,通过Web推送API提供通知。

2.24、Promise 和异步/等待

Promise是一种用于处理异步操作的对象,它提供了一种更可靠的方式来组织代码,避免回调地狱。异步/等待语法糖使异步代码看起来像同步代码,提高了可读性。

// 使用Promise  
fetch('https://api.example.com/data')  
  .then(response => response.json())  
  .then(data => console.log(data))  
  .catch(error => console.error('Error:', error));  
  
// 使用async/await  
async function fetchData() {  
  try {  
    const response = await fetch('https://api.example.com/data');  
    const data = await response.json();  
    console.log(data);  
  } catch (error) {  
    console.error('Error:', error);  
  }  
}  
fetchData();

2.25、Tree Shaking

Tree Shaking是一种通过静态分析来消除JavaScript上下文中未引用的代码的技术。这通常与模块打包器(如Webpack或Rollup)一起使用,以减少最终包的大小。

2.26、SSR (服务器端渲染)

服务器端渲染在服务器上生成HTML,然后将其发送到客户端。这对于搜索引擎优化(SEO)和提高首屏加载速度特别有用。

2.27、CSR (客户端渲染)

客户端渲染使用JavaScript在客户端生成和更新DOM。这种方法通常与单页应用程序(SPA)一起使用,提供动态和交互式的用户体验。

2.28、虚拟DOM

虚拟DOM是一个编程概念,其中在内存中维护一个轻量级的DOM副本。当数据变化时,先更新虚拟DOM,然后计算最小变化集并应用到真实DOM上,从而提高性能。

2.29、Webpack

Webpack是一个模块打包器,可以将许多模块打包成一个或多个文件,以优化加载时间和性能。它支持代码分割、懒加载和其他高级功能。

2.30、Babel

Babel是一个JavaScript编译器,可以将ES6+代码转换为向后兼容的JavaScript版本,以便在旧版浏览器中运行。

2.31、NPM (节点包管理器)

NPM是Node.js的包管理器,用于安装和管理Node.js项目的依赖项。

2.32、SPA (单页应用程序)

SPA是一种Web应用程序架构,其中用户与应用程序交互时不会重新加载整个页面,而是动态更新页面的部分。

2.33、SSG (静态站点生成器)

静态站点生成器在构建时生成HTML文件,而不是在服务器上实时生成。这种方法通常用于博客、文档网站和其他内容驱动的网站。

2.34、错误处理

在JavaScript中,错误处理是确保代码健壮性和可维护性的关键部分。使用try/catch块、错误事件监听器和被拒绝的Promise来处理错误。

2.35、性能优化技术

性能优化技术包括代码分割、懒加载、图片优化、压缩和最小化代码等,以提高Web应用程序的加载速度和响应性。

3、总结

JavaScript作为一门功能强大的编程语言,在Web开发中扮演着举足轻重的角色。从处理异步操作的Promise和异步/等待,到构建高性能网络应用的WebSockets和Service Workers,再到优化性能的技术如Tree Shaking和代码分割,JavaScript提供了丰富的工具和术语来帮助开发人员构建出色的Web应用。同时,随着技术的不断发展,新的术语和概念如PWA、无服务器功能和WebAssembly等不断涌现,为Web开发带来了更多的可能性和挑战。因此,持续学习和掌握这些关键术语对于开发人员来说至关重要。通过不断学习和实践,开发人员可以不断提升自己的技能,为Web开发领域带来更多的创新和突破。无论是初学者还是资深开发者,都应该保持对JavaScript的热情和好奇心,不断探索和学习新的知识和技术,共同推动Web开发的发展。

在这里插入图片描述

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

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

相关文章

支付宝沙盒(java使用支付宝)springboot

目录 前言 注册账号&#xff08;直接搜索支付宝沙盒&#xff09; ​编辑 具体代码编写 Application配置(按自己需求添加) config&#xff08;这里需要亲自添加appid&#xff0c;privateKey&#xff0c;publicKey&#xff09; controller类 Service类 ServiceImpl类 运…

OpenNJet产品体验丨从零部署一个炫酷的Web服务器

本文记录了使用OpenNJet从零部署一个Web服务器的心得体会。 OpenNJet官方网站&#xff1a;https://njet.org.cn/ 一、基本信息 产品名称 OpenNJet 体验版本 2.1.0 体验设备 VMware16Ubuntu18.04 体验时间 2024.4.23 体验耗时 1.5 h 二、产品信息 产品简介&#x…

【13-支持向量机(SVM):Scikit-learn中的分类与回归】

文章目录 前言理解SVM核心概念SVM的优势SVM的劣势Scikit-learn中的SVM实现安装与导入数据准备SVM分类SVM回归调优与最佳实践总结前言 支持向量机(SVM)是一种强大的机器学习算法,用于解决分类、回归和异常检测问题。它的核心思想是找到一个最优超平面,使得不同类别之间的边界…

一文了解云原生应用引擎的领跑者:OpenNJet

一文了解云原生应用引擎的领跑者&#xff1a;OpenNJet 1. 什么是应用引擎2. NGINX 架构与 NJet架构的区别3. OpenNJet 编译与安装步骤3.1 配置编译环境-CentOS 编译环境配置3.2 编译代码 4. OpenNJet 的基本使用4.1 系统目录结构及功能说明4.2 基础命令 5. 快速上手-如何通过 O…

4.Docker本地镜像发布至阿里云仓库、私有仓库、DockerHub

文章目录 0、镜像的生成方法1、本地镜像发布到阿里云仓库2、本地镜像发布到私有仓库3、本地镜像发布到Docker Hub仓库 Docker仓库是集中存放镜像的地方&#xff0c;分为公共仓库和私有仓库。 注册服务器是存放仓库的具体服务器&#xff0c;一个注册服务器上可以有多个仓库&…

IP纯净度对跨境电商有什么直接影响?

IP纯净度对跨境电商具有直接且深远的影响。在跨境电商的运作中&#xff0c;IP地址扮演着至关重要的角色&#xff0c;而IP纯净度则直接关系到跨境电商的网络安全性、访问效果以及业务竞争力。 第一点&#xff0c;纯净的IP地址对于提升跨境电商的网络安全性具有关键作用&#xf…

AI项目二十:基于YOLOv8实例分割的DeepSORT多目标跟踪

若该文为原创文章&#xff0c;转载请注明原文出处。 前面提及目标跟踪使用的方法有很多&#xff0c;更多的是Deepsort方法。 本篇博客记录YOLOv8的实例分割deepsort视觉跟踪算法。结合YOLOv8的目标检测分割和deepsort的特征跟踪&#xff0c;该算法在复杂环境下确保了目标的准…

信创 | 信创产品行业有哪些?已取得了哪些进展?

信创产业是一条庞大的产业链&#xff0c;涉及IT基础设施产品&#xff08;如CPU芯片、服务器、存储、交换机、路由器等&#xff09;&#xff0c;以及基础软件、应用软件、网络安全等领域。信创产业的核心目标是建立自主可控的信息技术底层架构和标准&#xff0c;全面推进国产替代…

Models_M1

a1 Hugging Face a2 openai/whisper-large-v3 示 a3 ByteDance/Hyper-SD 示​​​​​​​ a4 OpenGVLab/InternV…

LeetCode-旋转链表

每日一题&#xff0c;很久没做链表的题了&#xff0c;今天做l一道相对简单的力扣中等难度题。 题目要求 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&…

FPGA 以太网概念简单学习

1 MAC和PHY 从硬件的角度来说&#xff0c;以太网接口电路主要由 MAC &#xff08; Media Access Control &#xff09;控制器和物理层接口 PHY&#xff08;Physical Layer &#xff0c; PHY &#xff09;两大部分构成。 MAC 指媒体访问控制子层协议&#xff0c;它和 PHY 接…

使用yolov8+QT+onnrunxtime进行开发的注意事项

1、本来想尝试做一个C的yolov8在QT5.15.2的应用&#xff1b; 因此&#xff0c;在实现这个目标的时候&#xff0c;我先用了yolov8自带的export进行导出&#xff0c;使用的代码很简单&#xff0c;如下所示&#xff1a; import os from ultralytics import YOLO# model YOLO(&q…

优卡特脸爱云一脸通智慧平台 UpLoadPic.ashx 文件上传致RCE漏洞复现

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。功能包括:系统管理中心、人员信息管理中心、设备管理中心、消费管理子系统、订餐管理子系统、水控管理…

uniapp分包,以及通过uni-simple-router进行分包

先说一下uniapp的直接分包方式&#xff0c;很简单&#xff1a; 配置分包信息 打开manifest.json源码视图&#xff0c;添加 “optimization”:{“subPackages”:true} 开启分包优化 我们在根目录下创建一个pagesA文件夹&#xff0c;用来放置需要分包的页面 然后配置路由 运行到…

OpenNMS安装

环境要求 硬件要求 Just Testing 1Minimum Server Specification 2Minimum Server Specification 2CPU2GHz dual core x86_643GHz quad core x86_64 and aboveRAM4GB (physical)16GB (physical) and aboveStorage (disk space)50-GB HDD, SSD1TB with SSD and above You can i…

Python并发编程:揭开多线程与异步编程的神秘面纱

第一章&#xff1a;并发编程导论 1.1 并发与并行概念解析 1.1.1 并发性与并行性的区别 想象一下繁忙的厨房中多位厨师同时准备不同的菜肴——即使他们共享有限的空间和资源&#xff0c;也能协同工作&#xff0c;这就是并发性的一个生动比喻。并发性意味着多个任务在同一时间…

基于 dockerfile 编写LNMP

目录 一. 环境准备 二. 部署 nginx 2.1 建立工作目录&#xff0c;并上传需要的安装包 2.2 配置 nginx.conf 文件 2.3 编写 dockerfile 2.4 构建一个新的镜像 2.5 启动一个新的容器 三. 部署MySQL 3.1 建立工作目录&#xff0c;并上传安装包 3.2 编写 Dockerfile 3.…

ROS学习笔记(14)拉普拉斯变换和PID

0.前提 近些时间在对睿抗的ROS仿真赛进行小组安排&#xff0c;对小组成员进行了一些安排&#xff0c;也要求他们以本次比赛写下自己的比赛经历博客&#xff0c;他们的培训由我来安排和负责&#xff0c;因此我得加吧油&#xff0c;起码保证我的进度得快过他们&#xff0c;才能安…

源码编译安装curl _ 统信UOS _ 麒麟KOS _ 中科方德

原文链接&#xff1a;源码编译安装curl | 统信UOS | 麒麟KOS | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天我们来探讨一个非常实用的话题&#xff1a;在统信UOS、麒麟KOS以及中科方德桌面操作系统上如何从源码编译安装curl。Curl是一个广泛使用的命令行工具和库&…

【Kafka】Kafka高性能之道(六)

Kafka高性能之道 Kafka高性能原因 高效使用磁盘 1)顺序写磁盘&#xff0c;顺序写磁盘性能高于随机写内存。 2)Append Only 数据不更新&#xff0c;无记录级的数据删除(只会整个segment删s除)。读操作可直接在page cache内进行。如果进程重启&#xff0c;JVM内的cache会失效&a…