从零开始认识 Node.js:异步非阻塞的魅力
Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,用于在服务器端运行 JavaScript 代码。它的设计目标是让开发者能够用 JavaScript 构建高性能、可扩展的网络应用。以下是关于 Node.js 的详细介绍:
1. 核心特点
-
事件驱动与非阻塞 I/O:
Node.js 采用事件驱动架构,通过单线程处理大量并发请求,利用非阻塞 I/O 操作(如文件读写、网络请求)避免等待耗时任务,显著提升性能。 -
轻量高效:
基于 V8 引擎的即时编译(JIT)技术,执行 JavaScript 速度极快,适合高并发场景。 -
跨平台:
支持 Windows、Linux、macOS 等操作系统。 -
模块化与 npm 生态:
内置模块化系统(CommonJS),配合 npm(Node Package Manager)——全球最大的开源库生态系统,可轻松集成第三方库。
2. 历史背景
-
诞生:2009 年由 Ryan Dahl 创造,旨在解决传统服务器(如 Apache)的并发性能瓶颈。
-
关键版本:
-
2015 年:Node.js 4.0 引入 ES6 语法支持。
-
2020 年:Node.js 14+ 支持 ECMAScript Modules(ESM)。
-
长期支持(LTS)版本确保稳定性。
-
3. 架构与原理
-
事件循环(Event Loop):
Node.js 的核心机制,负责调度异步任务。通过 事件队列 处理 I/O 回调,实现非阻塞操作。// 示例:异步读取文件 const fs = require('fs'); fs.readFile('file.txt', (err, data) => {if (err) throw err;console.log(data); }); console.log('继续执行其他任务...'); // 非阻塞
-
单线程与多进程:
主线程是单线程,但可通过cluster
模块或child_process
创建子进程,利用多核 CPU。
4. 适用场景
-
Web 服务器/API 服务:
使用 Express、Koa、Fastify 等框架快速构建 RESTful API。 -
实时应用:
聊天室、在线游戏等需要 WebSocket 的场景(如 Socket.IO)。 -
微服务架构:
轻量级、低资源消耗,适合分布式系统。 -
工具链开发:
前端构建工具(Webpack、Babel)、CLI 工具等。 -
IoT 与数据流:
处理传感器数据流或实时分析(如使用 MQTT)。
5. 核心模块与工具
-
内置模块:
http
(创建服务器)、fs
(文件操作)、path
(路径处理)、stream
(流数据处理)等。 -
流行框架:
-
Express:最轻量的 Web 框架。
-
NestJS:支持 TypeScript 的企业级框架。
-
Socket.IO:实时双向通信库。
-
-
工具链:
PM2(进程管理)、Nodemon(热重载)、Jest(测试)。
6. 优势与劣势
-
优势:
-
高并发性能(适合 I/O 密集型任务)。
-
统一语言栈(前后端均用 JavaScript/TypeScript)。
-
活跃的社区和丰富的生态(npm 超过 200 万个包)。
-
-
劣势:
-
不适合 CPU 密集型任务(如图像处理、复杂计算)。
-
回调地狱(可通过
Promise
/async/await
解决)。 -
单线程崩溃影响全局(需用进程管理工具如 PM2 容错)。
-
7. 代码示例
// 使用 Express 创建简单服务器
const express = require('express');
const app = express();
app.get('/', (req, res) => {res.send('Hello Node.js!');
});
app.listen(3000, () => {console.log('Server running on port 3000');
});
Node.js 在前端开发中常用的核心 API 列表
1. fs
模块(文件系统)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
fs.readFile(path, [encoding], callback) | 异步读取文件内容 | - path : 文件路径- encoding : 编码格式(如 'utf8' )- callback(err, data) | fs.readFile('file.txt', 'utf8', (err, data) => { console.log(data); }); |
fs.writeFile(path, data, [encoding], callback) | 异步写入文件内容 | - data : 写入的数据- 其他同上 | fs.writeFile('file.txt', 'Hello', 'utf8', (err) => { /* 处理错误 */ }); |
fs.readdir(path, callback) | 读取目录内容 | - callback(err, files) : 返回文件名数组 | fs.readdir('./src', (err, files) => { console.log(files); }); |
fs.existsSync(path) | 同步检查文件/目录是否存在 | - path : 路径返回布尔值 | if (fs.existsSync('config.json')) { ... } |
2. path
模块(路径处理)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
path.join(...paths) | 拼接路径片段 | 接收多个路径片段 | path.join(__dirname, 'src', 'index.js') → 绝对路径 |
path.resolve(...paths) | 解析绝对路径 | 基于当前工作目录解析 | path.resolve('src') → /project/src |
path.extname(path) | 获取文件扩展名 | path : 文件路径 | path.extname('file.js') → .js |
path.basename(path) | 获取文件名(含扩展名) | 同上 | path.basename('/src/file.js') → file.js |
3. process
模块(进程信息)
API/属性 | 作用 | 关键参数/说明 | 示例 |
---|---|---|---|
process.cwd() | 获取当前工作目录路径 | 无参数,返回字符串 | console.log(process.cwd()); |
process.env | 访问环境变量 | 常用于区分开发/生产环境 | if (process.env.NODE_ENV === 'dev') { ... } |
process.argv | 获取命令行参数 | 返回参数数组 | node script.js arg1 → ['arg1'] |
4. http
/ https
模块(创建本地服务)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
http.createServer((req, res) => { ... }) | 创建 HTTP 服务器 | - req : 请求对象- res : 响应对象 | const server = http.createServer((req, res) => { res.end('Hello'); }); |
server.listen(port, callback) | 启动服务器监听端口 | - port : 端口号- callback : 启动回调 | server.listen(3000, () => { console.log('Running'); }); |
5. child_process
模块(执行子进程)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
exec(command, callback) | 执行 shell 命令 | - command : 命令字符串- callback(err, stdout, stderr) | exec('npm install', (err) => { ... }); |
spawn(command, [args]) | 启动子进程(流式输出) | - args : 命令参数数组 | const child = spawn('npm', ['run', 'build']); |
6. util
模块(工具函数)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
util.promisify(fn) | 将回调函数转为 Promise | 接收一个遵循回调风格的函数 | const readFile = promisify(fs.readFile);<br>readFile('file.txt').then(...); |
7. os
模块(操作系统信息)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
os.platform() | 获取操作系统类型 | 无参数,返回字符串(如 'darwin' 表示 macOS) | console.log(os.platform()); |
8. Buffer
(二进制数据处理)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
Buffer.from(string) | 将字符串转为 Buffer | - string : 输入字符串 | const buf = Buffer.from('Hello'); |
9. events
模块(事件驱动)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
EventEmitter | 创建自定义事件 | 通过 on 监听、emit 触发 | const emitter = new EventEmitter();<br>emitter.on('event', () => { ... }); |
10. stream
模块(流数据处理)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
fs.createReadStream(path) | 创建可读文件流 | 用于大文件分块读取 | const readStream = fs.createReadStream('bigfile.txt'); |
11. url
模块(URL 解析)
API | 作用 | 关键参数 | 示例 |
---|---|---|---|
url.parse(urlString) | 解析 URL 为对象 | 返回包含 pathname 、query 等属性的对象 | url.parse('http://example.com/path?name=test') |
Node.js 常用模块 API 示例
/*** Node.js 常用模块 API 示例合集* 执行方式:在终端中运行 `node 本文件路径.js`*/// ---------------------- 1. fs 模块(文件系统) ----------------------
const fs = require('fs');
const path = require('path');// 示例 1.1: 异步读取文件内容
fs.readFile(path.join(__dirname, 'example.txt'), 'utf8', (err, data) => {if (err) throw err;console.log('1.1 读取文件内容:', data); // 假设文件存在且内容为 "Hello Node.js"
});// 示例 1.2: 异步写入文件
fs.writeFile(path.join(__dirname, 'output.txt'), '新内容', 'utf8', (err) => {if (err) throw err;console.log('1.2 文件写入成功!');
});// 示例 1.3: 检查文件是否存在(同步方法)
const fileExists = fs.existsSync(path.join(__dirname, 'example.txt'));
console.log('1.3 文件是否存在:', fileExists ? '是' : '否');// ---------------------- 2. path 模块(路径处理) ----------------------
console.log('2.1 路径拼接:', path.join(__dirname, 'src', 'index.js')); // 输出绝对路径
console.log('2.2 文件扩展名:', path.extname('app.component.ts')); // 输出 .ts
console.log('2.3 解析绝对路径:', path.resolve('src')); // 基于当前工作目录解析// ---------------------- 3. process 模块(进程信息) ----------------------
console.log('3.1 当前工作目录:', process.cwd()); // 执行 Node 命令时的目录
console.log('3.2 环境变量 NODE_ENV:', process.env.NODE_ENV || '未设置'); // 需通过命令行设置// ---------------------- 4. http 模块(创建本地服务器) ----------------------
const http = require('http');// 示例 4.1: 创建简单 HTTP 服务器
const server = http.createServer((req, res) => {res.end('4.1 服务器响应成功!');
});// 启动服务器(默认端口 3000)
server.listen(3000, () => {console.log('4.1 服务器运行在 http://localhost:3000');
});// ---------------------- 5. child_process 模块(子进程) ----------------------
const { exec, spawn } = require('child_process');// 示例 5.1: 执行 shell 命令(如列出文件)
exec('ls -l', (err, stdout) => {if (err) throw err;console.log('5.1 当前目录文件列表:\n', stdout);
});// 示例 5.2: 启动子进程(如运行 npm install)
const child = spawn('npm', ['install'], { stdio: 'inherit' }); // 实时输出日志// ---------------------- 6. util 模块(工具函数) ----------------------
const util = require('util');// 示例 6.1: 将回调函数转为 Promise
const readFilePromise = util.promisify(fs.readFile);
readFilePromise(path.join(__dirname, 'example.txt'), 'utf8').then(data => console.log('6.1 Promise 读取内容:', data)).catch(err => console.error(err));// ---------------------- 7. os 模块(操作系统信息) ----------------------
const os = require('os');
console.log('7.1 操作系统类型:', os.platform()); // 如 'darwin'(Mac)、'win32'// ---------------------- 8. Buffer(二进制处理) ----------------------
const buffer = Buffer.from('Hello Buffer!');
console.log('8.1 Buffer 内容:', buffer.toString()); // 转为字符串输出// ---------------------- 9. events 模块(事件驱动) ----------------------
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}// 示例 9.1: 自定义事件
const myEmitter = new MyEmitter();
myEmitter.on('event', () => console.log('9.1 事件触发成功!'));
myEmitter.emit('event'); // 立即触发// ---------------------- 注意事项 ----------------------
/*** 1. 运行前确保项目中有 example.txt 文件(用于 fs 示例)。* 2. HTTP 服务器启动后,按 Ctrl+C 终止进程。* 3. child_process 示例可能需要根据系统调整命令(如 Windows 用 dir 代替 ls)。*/
使用说明
-
将代码保存为
node-api-demo.js
。 -
在文件同目录下创建
example.txt
(内容随意)。 -
在终端中运行:
node node-api-demo.js
-
观察控制台输出,或访问
http://localhost:3000
测试服务器。
相关文章:
从零开始认识 Node.js:异步非阻塞的魅力
Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,用于在服务器端运行 JavaScript 代码。它的设计目标是让开发者能够用 JavaScript 构建高性能、可扩展的网络应用。以下是关于 Node.js 的详细介绍: 1. 核心特点 事件驱动与非阻塞 I/O&…...
ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化
1.版本背景与发布 发布时间:2018年6月,由ECMA International正式发布,标准编号为ECMA-262 9th Edition。历史意义:作为ES6之后的第三次年度更新,ES2018聚焦于异步编程、正则表达式和对象操作的标准化,推动…...
【gitee 初学者矿建仓库】
简易的命令行入门教程: Git 全局设置: git config --global user.name "你的名字"触摸 git config --global user.email "你的邮箱"创建 git 仓库: mkdir codestore cd codestore git init -b "main" touch README.md # 选择运行 git add REA…...
Java 类和对象
文章目录 类和对象实例化对象this构造和初始化封装访问修饰限定符包自定义包 static代码块 类和对象 Java当中一切皆对象对象是什么呢? 比如是一个人,手机等怎么描述对象呢? 可以用类描述对象,可以理解类为一个模版,用…...
湖北理元理律师事务所:科学债务管理模型构建实录
债务问题本质是资源错配问题。湖北理元理律师事务所基于400案例的司法大数据,提炼出一套“三阶九步”债务管理模型,本文从技术视角解析其运作逻辑与实操价值。 模型架构:从诊断到执行的全周期管理 阶段一:债务体检(1…...
JavaScript vs Python 用于 Web Scraping(2025):终极对比指南
1. 引言 在不断发展的 Web Scraping 领域,选择合适的编程语言对于项目的成功至关重要。虽然 JavaScript 和 Python 在 2025 年仍然是 Web Scraping 领域的热门选择,但它们各自具备不同的优势和挑战。 本指南将深入分析 JavaScript 和 Python 的核心特性…...
数据结构day3
一、gdb调试 gcc -g main.c linklist.c // 对两个.c文件进行编译,生成 a.out 文件 gdb a.out //调试可执行文件 a.out b linklist.c:36 // 在该.c文件第 36 行设置断点 r // 运行程序,但会在断点前停…...
VSCode launch.json 配置参数详解
使用 launch.json 配置调试环境时,会涉及到多个参数,用于定义调试器的行为和目标执行环境。以下是一些常用的配置参数: 1、"type" :指定调试器的类型,例如 "node" 表示 Node.js 调试器࿰…...
[已解决] LaTeX “Unicode character“ 报错 (中文字符处理)
问题: 写 LaTeX 文档,特别是包含中文时,经常遇到类似下图的 “Unicode character XXXXXX” 报错 (X) Unicode character 本 (U672C) LaTeX [行 xx, 列 x] (X) Unicode character 报 (U62A5) LaTeX [行 xx, 列 x] ...这通常意味着我们的 LaTe…...
c++成员函数返回类对象引用和直接返回类对象的区别
c成员函数返回类对象引用和直接返回类对象的区别 成员函数直接返回类对象(返回临时对象,对象拷贝) #include <iostream> class MyInt { public:int value;//构造函数explicit MyInt(int v0) : value(v){}//加法操作,返回对象副本&…...
python项目参考文献
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
Go语言实现链式调用
在 Go 语言中实现链式调用(Method Chaining),可以通过让每个方法返回对象本身(或对象的指针)来实现。这样每次方法调用后可以继续调用其他方法。 示例:实现字符串的链式操作 假设你想对一个字符串连续执行…...
深入解析SpringMVC:从入门到精通
上文了解到SpingBoot的相关知识,此文开启Sping家族下的新篇章 1. 什么是SpringWebMVC? 官方对于SpringMVC的描述是这样的: 什么是Servlet呢? Servlet 是⼀种实现动态页面的技术.准确来讲Servlet是⼀套JavaWeb开发的规范,或者说…...
Java-Collections类高效应用的全面指南
Java-Collections类高效应用的全面指南 前言一、Collections 类概述二、Collections 类的基础方法2.1 排序操作2.1.1 sort方法2.1.2 reverse方法2.1.3 shuffle方法 2.2 查找与替换操作2.2.1 binarySearch方法2.2.2 max和min方法2.2.3 replaceAll方法 三、Collections 类的高级应…...
微软家各种copilot的AI产品:Github copilot、Microsoft copilot
背景 大家可能听到很多copilot,比如 Github Copilot,Microsoft Copilot、Microsoft 365 Copilot,有什么区别 Github Copilot:有网页版、有插件(idea、vscode等的插件),都是面向于程序员的。Mi…...
JAVA EE_HTTP
为什么意气风发的少年,总是听不进去别人的劝解。 ----------陳長生. ❀主页:陳長生.-CSDN博客❀ 📕上一篇:JAVA EE_网络原理_数据链路层-CSDN博客 1.HTTP 1.1.HTTP是什么 H…...
SEO 优化实战:ZKmall模板商城的 B2C商城的 URL 重构与结构化数据
在搜索引擎算法日益复杂的今天,B2C商城想要在海量信息中脱颖而出,仅靠优质商品和营销活动远远不够。ZKmall模板商城以实战为导向,通过URL 重构与结构化数据优化两大核心策略,帮助 B2C 商城实现从底层架构到搜索展示的全面升级&…...
使用HtmlAgilityPack采集墨迹天气中的天气数据
需要解析对应的HTML源码: <div class"left"><div class"wea_alert clearfix"><ul><li><a href "https://tianqi.moji.com/aqi/china/jiangxi/hukou-county" >< span class"level level_2&qu…...
广和通L610模块通过AT指令访问服务器方案:嵌赛使用
实现步骤及关键点: 网络连接配置 ATCGDCONT1,"IP","APN名称" // 设置APN ATCGACT1,1 // 激活PDP上下文 ATCGATT1 // 附着GPRS网络 HTTP协议支持验证 L610支持HTTP客户端功能,关键指…...
nodejs快速入门到精通1
参考 nodejs快速入门到精通 菜鸟教程-nodejs nodejs官方文档 原因 视频免费 资料收费 笔记还是自己写吧 安装 nodejs官网 windows下: #查看nodejs版本 node -v #查看npm版本 npm -v #设置npm为淘宝镜像源 npm config set registry https://registry.npmmirror.…...
Linux下软件安装
一、软件安装方式 在 Linux 系统中,常见的软件安装方式有以下几种: 包管理器安装(如 yum、apt) 这是最便捷的安装方式,通过系统自带的包管理器从官方软件源下载并安装软件。 # CentOS/RHEL系统使用yum安装 yum insta…...
React Fiber 架构深度解析:时间切片与性能优化的核心引擎
文章目录 前言一、Fiber 架构的诞生背景二、Fiber 架构的核心概念1. Fiber 节点2. Fiber 节点的结构3. 双缓存机制4. 增量渲染与优先级调度 三、时间切片技术详解1. 时间切片的定义与原理2. 时间切片与 JavaScript 事件循环3. 时间切片的实现方式4. 时间切片的优势 四、Fiber 架…...
mcp学习笔记
MCP(Model Context Protocol)是一种由Anthropic推出的开放协议,旨在统一大型语言模型(LLM)与外部数据源/工具之间的交互。其核心组件包括 MCP Client、MCP Server 和 Function Calling 机制,三者协…...
鸿蒙北向源码开发: 检查应用接口dts文件api规范性
开源鸿蒙5.0.2对应的api版本是14 5.0社区仓有工具检查接口规范性报告工具: interface/sdk-js/build-tools/api_check_plugin api_check_plugin是什么? 在解释api_check_plugin是什么之前得先知道 应用调用的api接口都是文件名后缀为.d.ts的文件,这些文件内部声明了arkts的a…...
Redis设计与实现——分布式Redis
Redis Sentinel(哨兵) Sentinel 的工作机制 故障检测(Failure Detection) 主观下线(Subjective Down):单个 Sentinel 实例检测到主节点在30 秒内无响应,标记其为 SDOWN。 客观下线…...
【Redis】Hash 哈希
文章目录 常用命令hsethgethmgethexistshkeyshvalshgetallhdelhlenhsetnxhincrbyhincrbyfloat 内部编码应用场景 Redis 存储键值对,也就是 key - value,不过同时也允许 value 也为键值对,但此时为了避免冲突,为 field - value PS…...
【matlab技巧】通过手绘的方法设计二维运动轨迹,附MATLAB程序
代码提供了一种直观的方式来使用鼠标在图形窗口中绘制线条,同时能够记录并显示用户绘制的轨迹坐标。用户通过左键点击绘制点,右键点击结束绘制,适合用于简单的图形交互和数据可视化。 文章目录 代码作用运行MATLAB源代码代码详解 代码作用 这…...
游戏引擎学习第290天:完成分离渲染
game_sim_region.cpp:在BeginSim中移除EntityOverlapsRectangle调用 现在我们接近一个关键点,虽然还没完全结束,但我们已经把所有东西迁移到了一个新概念上——即那些临时创建的控制器结构,称为“脑”(brains…...
uniapp-商城-61-后台 新增商品(添加商品到数据库)
完成商品的布局,完成商品的属性添加,最后的目的还是要完成数据添加,将我们前台的数据添加后台的数据库。 1、界面 2、点击提交完成商品添加 点击下方的提交按钮,将数据添加到数据库。 onSubmit 使用该函数---见3 <view cla…...
深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第一篇:I2C总线协议深度解剖
第一篇:I2C总线协议深度解剖 副标题 : 两根线如何征服千亿设备?详解硬件工程师必须掌握的通信奥义 1. 为什么I2C仍是嵌入式经典? 1.1 总线拓扑的哲学 拓扑对比图 SPI需4线N片选 vs I2C仅2线级联 UART点对点 vs I2C多主从架构 成本控制实…...
QT之LayOut布局
文章目录 QFormLayoutQGridLayoutQFormLayout、QGridLayout、QHBoxLayout、QVBoxLayout综合案例用QFormLayout 代替 界面左边部分的QGridLayout QFormLayout #include "widget.h"#include <QFormLayout> #include <QLineEdit>Widget::Widget(QWidget *p…...
ubuntu 24.04安装ros1 noetic
为了后续能够找到安装方法,记录一下: 参考如下链接安装: https://www.reddit.com/r/ROS/comments/158icpy/compiling_ros1_noetic_from_source_on_ubuntu_2204/ 安装步骤如下: 1.获取apt 包 sudo apt-get install python3-ros…...
动态规划-64.最小路径和-力扣(LetCode)
一、题目解析 从左上角到右下角使得数字总和最小且只能向下或向右移动 二、算法原理 1.状态表示 我们需要求到达[i,j]位置时数字总和的最小值,所以dp[i][j]表示:到达[i,j]位置时,路径数字总和的最小值。 2.状态转移方程 到达[i,j]之前要先…...
Python爬虫(29)Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)
目录 引言:动态爬虫的技术挑战与云原生机遇一、动态页面处理:Selenium与Scrapy的协同作战1.1 Selenium的核心价值与局限1.2 Scrapy-Selenium中间件开发1.3 动态分页处理实战:京东商品爬虫 二、云原生部署:Kubernetes架构设计与优化…...
FauxGen:一款由 CodeBuddy 主动构建的假数据生成器
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在前端开发中,经常需要一些「假数据」来模拟真实接口,便于开发阶段的界面构建和功能测试…...
chrome 浏览器插件 myTools, 日常小工具。
1. 起因, 目的: 比如,chatgpt, google, 打开网页,就能直接输入文字,然后 grok 就不行,必须用鼠标点一下,才能输入文字。 对我而言,是个痛点!写个插件,自动点…...
从代码学习深度学习 - 词嵌入(word2vec)PyTorch版
文章目录 前言1. 为什么需要词嵌入?2. 早期尝试:独热向量 (One-Hot Vectors)独热向量的局限性3. 自监督的 word2vec4. 跳元模型 (Skip-Gram Model)4.1. 训练5. 连续词袋 (CBOW) 模型5.1. 训练总结前言 自然语言处理(NLP)是人工智能领域中一个充满活力和挑战的分支。要让计…...
手写tomcat:基本功能实现(4)
逻辑架构 HTTP 请求与 Socket: 左侧的 “HTTP 请求” 箭头指向 “socket”,表示客户端发送的 HTTP 请求通过 socket 传输到服务器。Socket 负责接收请求,并提取出其中的 请求路径(如 /first)和 请求方法(如…...
String的一些固定程序函数
append reverse length toString...
SECERN AI提出3D生成方法SVAD!单张图像合成超逼真3D Avatar!
SECERN AI提出的3D生成方法SVAD通过视频扩散生成合成训练数据,利用身份保留和图像恢复模块对其进行增强,并利用这些经过优化的数据来训练3DGS虚拟形象。SVAD在新的姿态和视角下保持身份一致性和精细细节方面优于现有最先进(SOTA)的…...
windows触摸板快捷指南
以下是结构化整理后的触控手势说明,采用清晰的层级划分和标准化表述: **触控手势操作规范****1. 单指操作****2. 双指操作****3. 三指操作****4. 四指操作** **优化说明:** 触控手势操作规范 1. 单指操作 手势功能描述等效操作单击滑动选择…...
Mipsel固件Fuzzing小记
Mipsel固件Fuzzing小记 0x01 准备 1.1 安装必要工具链 首先需要安装 MIPS 交叉编译工具链和相关依赖: sudo apt-get install -y gcc-mipsel-linux-gnu g-mipsel-linux-gnu binwalk qemu-user-static afl这些工具分别用于:交叉编译、固件解包、二进制…...
边缘计算:物联网的“加速器”与“守护者”
引言 随着物联网(IoT)的快速发展,越来越多的设备接入网络,产生了海量的数据。传统的云计算架构面临着延迟高、带宽不足、数据安全等问题。边缘计算作为一种新兴技术,正在成为解决这些问题的关键手段。本文将探讨边缘计…...
简单网络交换、路由-华三RRPP以太环网
1、RRPP简单介绍 RRPP用来组建环网的链路层协议,工作在二层,比STP收敛更快,同时与STP、Smart-link互斥。很多企业很少应用环网组网,但是小编所在工业生产制造企业在特定工艺的区域对环网应用颇多,RRPP小编还是推荐网工…...
Kotlin变量与数据类型详解
Kotlin 变量与基本数据类型详解 一、变量声明 1. val vs var val:不可变变量(只读),类似 Java 的 finalvar:可变变量 val name "Kotlin" // 类型推断为 String var age 25 // 类型推断为 I…...
【Redis】List 列表
文章目录 初识列表常用命令lpushlpushxlrangerpushrpushxlpop & rpoplindexlinsertllen阻塞操作 —— blpop & brpop 内部编码应用场景 初识列表 列表类型,用于存储多个字符串。在操作和实现上,类似 C 的双端队列,支持随机访问(O(N)…...
React中useState中更新是同步的还是异步的?
文章目录 前言一、useState 的基本用法二、useState 的更新机制1. 内部状态管理2. 状态初始化3. 状态更新 三、useState 的更新频率与异步行为1. 异步更新与批量更新2. 为什么需要异步更新? 四、如何正确处理 useState 的更新1. 使用回调函数形式的更新2. 理解异步更…...
Python语法强化
在正式编写第一个Python程序前,我们先复习一下什么是命令行模式和Python交互模式。 命令行模式 在Windows开始菜单选择“Terminal”,就进入到PowerShell命令行模式,它的提示符类似PS C:\>: ┌───────────────…...
FastMCP:为大语言模型构建强大的上下文和工具服务
FastMCP:为大语言模型构建强大的上下文和工具服务 在人工智能快速发展的今天,大语言模型(LLM)已经成为许多应用的核心。然而,如何让这些模型更好地与外部世界交互,获取实时信息,执行特定任务&am…...
TC3xx学习笔记-UCB BMHD使用详解(二)
文章目录 前言Confirmation的定义Dual UCB: Confirmation StatesDual UCB: Errored State or ECC Error in the UCB Confirmation CodesECC Error in the UCB ContentDual Password UCB ORIG and COPY Re-programming UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x 0-3)BMHD Protecti…...