当前位置: 首页 > news >正文

Node.js中util模块详解

Node.js 中 util 模块全部 API 详解

一、类型检查函数

const util = require('util');// 1. util.types
// 检查对象类型
console.log(util.types.isDate(new Date()));  // true
console.log(util.types.isRegExp(/abc/));  // true
console.log(util.types.isArrayBuffer(new ArrayBuffer(10)));  // true
console.log(util.types.isArrayBufferView(new Uint8Array(10)));  // true
console.log(util.types.isAsyncFunction(async function() {}));  // true
console.log(util.types.isDataView(new DataView(new ArrayBuffer(10))));  // true
console.log(util.types.isExternal(new Int32Array(10)));  // false
console.log(util.types.isMap(new Map()));  // true
console.log(util.types.isMapIterator(new Map().entries()));  // true
console.log(util.types.isPromise(new Promise(() => {})));  // true
console.log(util.types.isSet(new Set()));  // true
console.log(util.types.isSetIterator(new Set().entries()));  // true
console.log(util.types.isTypedArray(new Uint8Array()));  // true
console.log(util.types.isUint8Array(new Uint8Array()));  // true
console.log(util.types.isUint8ClampedArray(new Uint8ClampedArray()));  // true
console.log(util.types.isUint16Array(new Uint16Array()));  // true
console.log(util.types.isUint32Array(new Uint32Array()));  // true
console.log(util.types.isInt8Array(new Int8Array()));  // true
console.log(util.types.isInt16Array(new Int16Array()));  // true
console.log(util.types.isInt32Array(new Int32Array()));  // true
console.log(util.types.isFloat32Array(new Float32Array()));  // true
console.log(util.types.isFloat64Array(new Float64Array()));  // true
console.log(util.types.isBigInt64Array(new BigInt64Array()));  // true
console.log(util.types.isBigUint64Array(new BigUint64Array()));  // true
console.log(util.types.isWeakMap(new WeakMap()));  // true
console.log(util.types.isWeakSet(new WeakSet()));  // true
console.log(util.types.isWeakRef(new WeakRef({})));  // true
console.log(util.types.isGeneratorFunction(function*() {}));  // true
console.log(util.types.isGeneratorObject((function*() {})()));  // true
console.log(util.types.isFinalizationRegistry(new FinalizationRegistry(() => {})));  // true

二、工具函数

const util = require('util');// 1. util.callbackify(original)
// 将 async 函数转换为回调函数
async function asyncFn() {return 'hello';
}
const callbackFn = util.callbackify(asyncFn);
callbackFn((err, result) => {console.log(result);  // 'hello'
});// 2. util.debuglog(section)
// 创建调试日志函数
const debug = util.debuglog('app');
debug('调试信息');  // 当 NODE_DEBUG=app 时输出// 3. util.deprecate(fn, msg[, code])
// 标记函数为废弃
const deprecatedFn = util.deprecate(() => {console.log('这是一个废弃的函数');
}, '这个函数将在未来版本中移除');
deprecatedFn();  // 输出警告信息// 4. util.format(format[, ...args])
// 格式化字符串
console.log(util.format('Hello %s', 'World'));  // 'Hello World'
console.log(util.format('Count: %d', 42));  // 'Count: 42'
console.log(util.format('Object: %o', { a: 1 }));  // 'Object: { a: 1 }'// 5. util.inherits(constructor, superConstructor)
// 实现继承
function Animal(name) {this.name = name;
}
function Dog(name) {Animal.call(this, name);
}
util.inherits(Dog, Animal);// 6. util.inspect(object[, options])
// 检查对象
const obj = {a: 1,b: { c: 2 },d: [1, 2, 3]
};
console.log(util.inspect(obj, { depth: null, colors: true }));// 7. util.promisify(original)
// 将回调函数转换为 Promise
const fs = require('fs');
const readFile = util.promisify(fs.readFile);
readFile('file.txt').then(data => {console.log(data);
});// 8. util.stripVTControlCharacters(str)
// 移除 VT 控制字符
const str = 'Hello\x1b[31mWorld\x1b[0m';
console.log(util.stripVTControlCharacters(str));  // 'HelloWorld'

三、TextEncoder 和 TextDecoder

const util = require('util');// 1. util.TextEncoder
const encoder = new util.TextEncoder();
const encoded = encoder.encode('Hello World');
console.log(encoded);  // Uint8Array// 2. util.TextDecoder
const decoder = new util.TextDecoder();
const decoded = decoder.decode(encoded);
console.log(decoded);  // 'Hello World'

四、自定义工具函数

const util = require('util');// 1. 深度克隆对象
function deepClone(obj) {return util.inspect(obj, { depth: null });
}// 2. 格式化日期
function formatDate(date) {return util.format('%s-%s-%s', date.getFullYear(),String(date.getMonth() + 1).padStart(2, '0'),String(date.getDate()).padStart(2, '0'));
}// 3. 检查对象是否为空
function isEmpty(obj) {return Object.keys(obj).length === 0;
}// 4. 延迟执行
function delay(ms) {return new Promise(resolve => setTimeout(resolve, ms));
}// 5. 重试函数
async function retry(fn, retries = 3, delay = 1000) {try {return await fn();} catch (err) {if (retries === 0) throw err;await new Promise(resolve => setTimeout(resolve, delay));return retry(fn, retries - 1, delay);}
}

五、错误处理工具

const util = require('util');// 1. 自定义错误类
class CustomError extends Error {constructor(message) {super(message);this.name = 'CustomError';}
}// 2. 错误包装
function wrapError(err, message) {return new Error(`${message}: ${err.message}`);
}// 3. 错误日志
function logError(err) {console.error(util.inspect(err, {depth: null,colors: true}));
}// 4. 错误重试
async function withRetry(fn, retries = 3) {for (let i = 0; i < retries; i++) {try {return await fn();} catch (err) {if (i === retries - 1) throw err;console.error(`重试 ${i + 1}/${retries}:`, err);await new Promise(resolve => setTimeout(resolve, 1000));}}
}

六、调试工具

const util = require('util');// 1. 创建调试日志
const debug = util.debuglog('app');// 2. 性能计时
function measureTime(fn) {const start = process.hrtime();fn();const [seconds, nanoseconds] = process.hrtime(start);console.log(`执行时间: ${seconds}s ${nanoseconds}ns`);
}// 3. 内存使用
function logMemoryUsage() {const used = process.memoryUsage();console.log(util.inspect(used, {depth: null,colors: true}));
}// 4. 对象比较
function compareObjects(obj1, obj2) {return util.inspect(obj1) === util.inspect(obj2);
}

七、Promise 工具

const util = require('util');// 1. Promise 超时
function timeout(promise, ms) {return Promise.race([promise,new Promise((_, reject) => setTimeout(() => reject(new Error('超时')), ms))]);
}// 2. Promise 重试
function retryPromise(fn, retries = 3) {return new Promise((resolve, reject) => {fn().then(resolve).catch(err => {if (retries === 0) reject(err);else retryPromise(fn, retries - 1).then(resolve).catch(reject);});});
}// 3. Promise 队列
class PromiseQueue {constructor() {this.queue = [];this.running = false;}add(fn) {return new Promise((resolve, reject) => {this.queue.push({ fn, resolve, reject });this.process();});}async process() {if (this.running) return;this.running = true;while (this.queue.length > 0) {const { fn, resolve, reject } = this.queue.shift();try {const result = await fn();resolve(result);} catch (err) {reject(err);}}this.running = false;}
}

八、实际应用示例

const util = require('util');
const fs = require('fs');
const path = require('path');// 1. 文件操作工具
class FileUtils {static async readFile(filePath) {const readFileAsync = util.promisify(fs.readFile);return readFileAsync(filePath, 'utf8');}static async writeFile(filePath, content) {const writeFileAsync = util.promisify(fs.writeFile);return writeFileAsync(filePath, content, 'utf8');}static async copyFile(src, dest) {const copyFileAsync = util.promisify(fs.copyFile);return copyFileAsync(src, dest);}
}// 2. 日志工具
class Logger {static debug = util.debuglog('app:debug');static info = util.debuglog('app:info');static error = util.debuglog('app:error');static log(level, message, ...args) {const timestamp = new Date().toISOString();console.log(util.format('[%s] %s: %s', timestamp, level, message), ...args);}
}// 3. 配置管理
class Config {static load(configPath) {const config = require(configPath);return util.inspect(config, { depth: null });}static validate(config) {// 配置验证逻辑return util.types.isObject(config);}
}// 4. 性能监控
class PerformanceMonitor {static measure(name, fn) {const start = process.hrtime();const result = fn();const [seconds, nanoseconds] = process.hrtime(start);console.log(util.format('%s: %ds %dns',name,seconds,nanoseconds));return result;}static async measureAsync(name, fn) {const start = process.hrtime();const result = await fn();const [seconds, nanoseconds] = process.hrtime(start);console.log(util.format('%s: %ds %dns',name,seconds,nanoseconds));return result;}
}

九、最佳实践

const util = require('util');// 1. 错误处理
function handleError(err) {if (util.types.isNativeError(err)) {console.error('原生错误:', err);} else {console.error('自定义错误:', err);}
}// 2. 类型检查
function validateInput(input) {if (!util.types.isString(input)) {throw new TypeError('输入必须是字符串');}
}// 3. 异步操作
async function asyncOperation() {try {const result = await util.promisify(someAsyncFunction)();return result;} catch (err) {handleError(err);throw err;}
}// 4. 对象序列化
function serializeObject(obj) {return util.inspect(obj, {depth: null,colors: true,maxArrayLength: null});
}// 5. 性能优化
function optimizePerformance(fn) {return util.callbackify(async (...args) => {const start = process.hrtime();const result = await fn(...args);const [seconds, nanoseconds] = process.hrtime(start);console.log(`执行时间: ${seconds}s ${nanoseconds}ns`);return result;});
}

util 模块的主要特点:

  1. 提供类型检查功能
  2. 提供工具函数
  3. 支持 Promise 转换
  4. 提供调试工具
  5. 支持文本编码解码

使用建议:

  1. 合理使用类型检查
  2. 注意错误处理
  3. 使用 Promise 工具
  4. 优化性能监控
  5. 规范代码风格

相关文章:

Node.js中util模块详解

Node.js 中 util 模块全部 API 详解 一、类型检查函数 const util require(util);// 1. util.types // 检查对象类型 console.log(util.types.isDate(new Date())); // true console.log(util.types.isRegExp(/abc/)); // true console.log(util.types.isArrayBuffer(new …...

BasicTS:全面基准测试与异质性分析

BasicTS&#xff1a;全面基准测试与异质性分析 在当今数字化时代&#xff0c;多元时间序列&#xff08;Multivariate Time Series, MTS&#xff09;分析在众多领域发挥着关键作用&#xff0c;从交通管理到能源系统优化&#xff0c;都离不开对MTS的精准预测。然而&#xff0c;当…...

认识python全栈框架reflex:快速打造工具类网站、模型调用web应用

以下是对reflex的简单介绍&#xff1a; 纯Python编写的&#xff0c;高性能、可自定义的 Web 应用开发框架 网页开发内置组件生态完整&#xff0c;灵活使用、快速接入、快速部署支持路由页面&#xff0c;可以开发复杂系统、企业级系统&#xff0c;这方面优于gradio、streamlit…...

课题申报的立项依据方位指南:使用DeepSeek提高课题立项的关键

在竞争日益激烈的学术研究和科研项目申报环境中&#xff0c;立项依据作为课题申报书的灵魂部分&#xff0c;往往决定着一项研究能否获得评审专家的青睐和资助。 然而&#xff0c;许多研究者尽管学术能力突出&#xff0c;却在立项依据的撰写上显得力不从心&#xff0c;导致优质…...

蓝桥杯电子赛_E2PROM(AT24C02)

目录 一 前言 二 E2PROM的相关讲解 AT24C02的地址 PCF8591的地址 三 根据提供的iic写代码 相关可能会有疑问的地方&#xff1a; 1 三个入口参数&#xff0c;都有什么用&#xff1f; 2 为什么在写中&#xff0c;要用IIC_SendByte&#xff0c;在读中&#xff0c;要用IIC_R…...

Kubernetes服务注册到consul流程实践

文章目录 前言架构图示意一、环境准备二、consul部署1.yaml示例2.consul部署验证 三、consulctl工具实现1.核心功能2.注册到consul的标签及元数据3.consulctl工具使用示例 四、通过Dockerfile构建consulctl工具镜像五、Kubernetes集成方案六、 结果验证1.注册验证2.销毁验证 总…...

供应链业务-供应链全局观(三)- 供应链三流的集成

概述 供应链的全局观的全两篇文章主要描述了供应链的基础概念和供应链的协作和集成问题。 供应链业务-供应链全局观&#xff08;一&#xff09;定义了什么是供应链和供应链管理。 所谓供应链就是把采购进来的东西&#xff0c;通过自身的生成加工&#xff0c;进行增值服务&am…...

Docker 提示Docker Engine stopped

做AI开发的时候&#xff0c;安装Docker提示Docker Engine stopped&#xff0c;以下是解决步骤&#xff1a; 一般都是成功的&#xff0c;不成功很可能是电脑兼容问题&#xff0c;通过采用4.4.4版本解决的&#xff1a; docker desktop 4.4.4 旧版本下载&#xff1a;在这里找到了4…...

对自己的优缺点评价

在面试中回答优缺点时&#xff0c;需要既体现自我认知的客观性&#xff0c;又能将优缺点与岗位需求结合&#xff0c;避免暴露可能影响工作的硬伤。以下是一个符合Java开发者角色的回答框架&#xff0c;供参考&#xff1a; 回答思路&#xff1a; 优点&#xff1a;选择与岗位直接…...

解决eNSP在24H2版本下AR_40启动失败问题

前言 1.网络学习中缺少不了模拟&#xff0c;自从Windows版本更新24H2以后&#xff0c;eNSP就出现各种问题&#xff0c;最常见的就是AR报错40【启动失败】&#xff0c;之前我也去网站搜了&#xff0c;也问了Microsoft社区&#xff0c;发现他们在底层逻辑上进行了修改(开启了虚拟…...

计算机组成原理-指令系统

1. 指令系统的定义与作用 指令系统&#xff08;Instruction Set Architecture, ISA&#xff09;是计算机硬件与软件之间的接口规范&#xff0c;定义了CPU能够识别和执行的所有指令的集合&#xff0c;是计算机体系结构的核心组成部分。 核心作用&#xff1a; 为程序员提供操作…...

Oracle数据库中 LEVEL start with prior connect by

在Oracle数据库中&#xff0c;处理层次结构数据是一项常见且重要的任务。无论是组织结构、分类目录还是其他具有层级关系的数据&#xff0c;Oracle都提供了强大的工具来简化和优化这些操作。其中&#xff0c;LEVEL伪列结合CONNECT BY和START WITH关键字&#xff0c;成为了处理层…...

HTTP 1.1 比 HTTP1.0 多了什么?(详尽版)

相较于HTTP 1.0&#xff0c;1.1 版本增加了以上特性&#xff1a; 1. 新增了连接管理即 keepalive&#xff0c;允许持久连接。 定义&#xff1a; Keepalive允许客户端和服务器在完成一次请求-响应后&#xff0c;保持连接处于打开状态&#xff0c;以便后续请求复用同一连接&am…...

Java学习手册:Java I/O与NIO

Java I/O&#xff08;Input/Output&#xff09;和NIO&#xff08;New Input/Output&#xff09;是Java语言中用于处理输入输出操作的重要部分。它们提供了丰富的API来处理文件和网络通信。I/O是Java早期版本中引入的&#xff0c;而NIO是在Java 1.4中引入的&#xff0c;旨在提供…...

linux下的目录文件管理和基本文件管理的基本操作

目录 1.目录创建&#xff0c;文件创建和文件编辑的案例 2.文件编辑进阶 --vim 3. 命令的别名 4. 查看文件内容和文件编辑(重定向)的案例 5. 重定向之追加 6. 查看目录和文件编辑的案例 7. 查看目录和文件编辑(覆盖)的案例 为了加深对linux命令的熟悉程度&#xff0c;这…...

magnet库Hello,world!

1.c文件 #include<iostream> #include"Control.hpp" class O1:public mag::Control{bool b; public:O1(){b1;}bool decide(){return b&&islifing();}void action(){std::cout<<"Hello,world!\n";b0;destroy();} }; int main(){O1 o1;…...

应急响应靶机-Linux(1)

挑战内容 账户密码&#xff1a;defend/defend Root/defend 黑客的IP地址遗留下的三个flag 1、按正常思路来走&#xff0c;先登录一手因已经给出root账户密码&#xff0c;先查看一手执行过的命令&#xff0c;发现一个flag值并且看到他往期编辑了一个文件&#xff0c;咱们顺便进去…...

k8s 部署spring项目+动态启动pod

在 Kubernetes 中部署 Spring Boot 项目并实现 动态管理 Pod&#xff08;自动扩缩容、滚动更新等&#xff09;&#xff0c;需要结合 Docker 镜像构建、Deployment 配置、Service 暴露和 HPA&#xff08;Horizontal Pod Autoscaler&#xff09; 等组件。以下是完整操作步骤&…...

【DINO】

detr 简化了检测流水线,消除了许多手工设置的组件 单阶段目标检测 需要前置的backbone抽取特征 faster_rcnn和yolo都是基于anchor,anchor当作候选框,NMS非极大值抑制 重叠的框只保存一个,效率低 所以detr来了,transformer,既有encoder又有decoder,套一个transforme…...

Nature重磅:后晶体管时代光子芯片革新AI计算!光子处理器运行《吃豆人》性能比肩电子,能效提升超500倍

随着人工智能&#xff08;AI&#xff09;模型规模以及应用范围的不断拓展&#xff0c;性能上限和能耗瓶颈正逐渐显现出来。大语言模型&#xff08;LLM&#xff09;、强化学习和卷积神经网络等 AI 模型的复杂性不断增长&#xff0c;正在将传统电子计算推向极限&#xff0c;能源需…...

Excel表格文件分组归并——通过sql

将 Excel 表转换为 SQL 数据库并直接执行 SQL 查询以获得所需的输出。以下是使用 SQL 实现此目的的步骤&#xff1a; 第 1 步&#xff1a;将 Excel 数据导入 MySQL 假设您设置了 MySQL 数据库&#xff0c;则需要先将 Excel 数据导入到表中。您可以使用语句或工具&#xff08;…...

2.微服务拆分流程

文章目录 交易服务1.1.创建项目1.2.引入依赖1.3.创建交易服务启动类1.4.创建并编写配置文件1.5.代码连接池4.2.1.引入依赖4.2.2.开启连接池抽取Feign客户端 1.6.抽取ItemClient接口1.7.抽取CartClient接口改造OrderServiceImpl扫描包 1.8.数据库1.9.配置启动项1.10.测试 以拆分…...

vue入门:计算属性computer监听器watch

文章目录 计算属性computer定义计算属性在模板中使用计算属性计算属性的使用场景 监听器watch基本语法深度监听立即执行监听数组异步操作数据校验副作用处理清理监听器 watch 与 computed 的区别 计算属性computer 在 Vue 中&#xff0c;计算属性&#xff08;computed&#xf…...

Jenkins 发送钉钉消息

这里不介绍 Jenkins 的安装&#xff0c;可以网上找到很多安装教程&#xff0c;重点介绍如何集成钉钉消息。 需要提前准备钉钉机器人的 webhook 地址。&#xff08;网上找下&#xff0c;很多教程&#xff09; 下面开始配置钉钉机器人&#xff0c;登录 Jenkins&#xff0c;下载 …...

numpy练习

生成一个2行3列随机整数二维数组a使用Numpy方法对&#xff08;1&#xff09;中数组a进行整体求积使用Numpy方法对&#xff08;1&#xff09;中数组a进行求每列最大值索引定义一个NumPy一维数组 b&#xff0c;元素为 1 到 10 的整数获取&#xff08;4&#xff09;数组b中最后五个…...

Ethers.js 开发入门:核心功能、最佳实践与避坑指南

引言 Ethers.js 是当前 Web3 开发领域增长最快、备受开发者青睐的以太坊 JavaScript 库之一。在本篇文章中&#xff0c;我们将介绍 Ethers.js 的核心功能和用法&#xff0c;包括如何连接区块链节点、与钱包交互、读取智能合约数据、发送交易等。同时&#xff0c;我们还将分享使…...

SQL查询语句的​​书写顺序​​

一、标准SQL书写顺序&#xff08;逻辑顺序&#xff09; 书写顺序是开发者编写SQL时遵循的语法规则&#xff0c;逻辑上更贴近“声明式”需求描述。以下是​​从前往后​​的书写顺序&#xff1a; SELECT[DISTINCT] 列名或表达式 FROM表名或子查询 [JOIN ... ON ...] WHERE行级…...

探索加密期权波动率交易的系统化实践——动态对冲工具使用

Trading Volatility – What Are My Options? 在本文中&#xff0c;我们将介绍一些如何交易资产波动性&#xff08;而非资产价格&#xff09;的示例。为了帮助理解&#xff0c;我们将使用 Deribit 上提供的几种不同产品&#xff0c;包括但不限于期权。我们将尽可能消除对标的价…...

文件操作和 IO - 3

目录 文件内容的读写 —— 数据流 InputStream 概述 方法&#xff1a; 说明&#xff1a; FileInputStream 概述 read 方法&#xff1a; OutputStream 概述 方法 说明 FileOutputStream 概述 write 方法&#xff1a; Reader 字符流 Writer 字符流 总结&#xff1a…...

Kubernetes中的Label和Selector核心作用与应用场景

一. Label 和 Selector 的核心概念 Label 和 Selector 是 Kubernetes 中实现灵活资源管理的基石&#xff0c;贯穿部署、服务发现、监控等核心场景。通过合理设计标签&#xff0c;用户可以高效实现自动化运维与精准资源控制。 Label&#xff08;标签&#xff09;&#xff1a; K…...

L1-6 大勾股定理

题目 大勾股定理是勾股定理的推广&#xff1a;对任何正整数 n 存在 2n1 个连续正整数&#xff0c;满足前 n1 个数的平方和等于后 n 个数的平方和。例如对于 n1 有 3^2 4^2 5^2 &#xff1b;n2 有 10^2 11^2 12^2 13^2 14^2 等。给定 n&#xff0c;本题就请你找出对应的解。 输…...

esp32-idf Linux 环境安装教程

一、提前说明 1. 系统环境 Ubuntu22.04 2. 适配芯片 ESP32S3 3. idf版本 v5.4.1(截止2025年4月13日为最新版本) 二、安装步骤 1. 安装前置依赖 sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev l…...

关于使用 nuitka进行构建python应用的一些配置,以及github action自动构建;

1. 通用配置 # 设置输出目录和文件名output_dir "dist"app_name "CursorAutoFree"# 基础命令行选项base_options ["--follow-imports", # 跟踪导入"--enable-plugintk-inter", # 启用 Tkinter 支持"--include-packagecusto…...

C++开山解惑

. Solution & Code 本题解仅适用于 C 选手。 这道题可谓是 C 中最基础的题目之一&#xff0c;先上两份代码&#xff1a; #include <cstdio> using namespace std;int main() {long long a, b;scanf("%lld%lld", &a, &b);printf("%lld"…...

Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(二)

Pytorch深度学习框架60天进阶学习计划 - 第41天&#xff1a;生成对抗网络进阶&#xff08;二&#xff09; 7. 实现条件WGAN-GP # 训练条件WGAN-GP def train_conditional_wgan_gp():# 用于记录损失d_losses []g_losses []# 用于记录生成样本的多样性&#xff08;通过类别分…...

路由策略/策略路由之route-policy

思科名称&#xff1a;route-map、match、set Route-policy 是一个非常重要的基础性策略工具。你可以把它想象成一个拥有多个节点&#xff08;node&#xff09;的列表&#xff08;这些 node 按编号大小进行排序&#xff09;。在每个节点中&#xff0c;可以定义条件语句及执行语…...

《嵌入式系统原理》一些题目

1 &#xff0e;ARM 的存储格式&#xff1f;默认的存储模式是&#xff1f; 大端格式和小端格式&#xff0c;默认为小端模式 2 &#xff0e;当前程序状态寄存器&#xff1f;&#xff08;英文简写、条件码标志位及控制位的含义&#xff09; CPSR&#xff0c;N,Z,C,V(P26) 3 &a…...

卡洛诗已悄然改写高性价比西餐的竞争规则

在餐饮行业竞争日益激烈的今天&#xff0c;消费者对“高性价比”的定义已从单纯的低价转向品质、体验与情感价值的综合考量。萨莉亚原团队成员出来升级孵化的新概念中式西餐卡洛诗以“访九州异馔&#xff0c;再造东方味”为核心理念&#xff0c;通过本土化创新、严控文化及场景…...

独立开发者之网站的robots.txt文件如何生成和添加

robots.txt是一个存放在网站根目录下的文本文件&#xff0c;用于告诉搜索引擎爬虫哪些页面可以抓取&#xff0c;哪些页面不可以抓取。下面我将详细介绍如何生成和添加robots.txt文件。 什么是robots.txt文件&#xff1f; robots.txt是遵循"机器人排除协议"(Robots…...

02核心-EffectSpec,EffectContext

1.FGameplayEffectSpec 效果Spec 创建&#xff1a;MakeOutGoingSpec>EffectSpecHandle≈EffectSpec. 创建总结&#xff1a;EffectLevelEffectContext>EffectSpec(Handle) 数据&#xff1a;EffectSpec存有效果的等级&#xff0c;上下文&#xff0c;类。 还有很多其他东…...

驱动开发硬核特训 · Day 10(下篇):设备模型实战篇 —— Platform 驱动机制 ≈ 运行时适配器

&#x1f50d; B站相应的视屏教程&#xff1a; &#x1f4cc; 内核&#xff1a;博文视频 - 总线驱动模型实战全解析 敬请关注&#xff0c;记得标为原始粉丝。 &#x1f527; &#x1f4cd; 一、目标与回顾 在上篇《理论篇》中&#xff0c;我们从软件工程角度&#xff0c;解释…...

集合框架二三事

一.集合框架 Java集合框架&#xff08;Java Collections Framework&#xff09;是Java标准库中用于存储和处理对象集合的一组接口和实现类。它提供了一套统一的API&#xff0c;使得开发者能够高效地管理和操作数据集合。以下是关于Java集合框架的详细介绍&#xff0c;包括其核…...

前端jest(vitest)单元测试快速手上

前言 vitest和jest除了配置上不同&#xff0c;其他的基本差不多&#xff0c;这里以jest为例进行说明 安装依赖 npm install -D jest编写测试 例如&#xff0c;我们将编写一个简单的测试来验证将两个数字相加的函数的输出。 sum.js export function sum(a, b) {return a b…...

优化方法介绍(二)

优化方法介绍(二) 本博客是一个系列博客,主要是介绍各种优化方法,使用 matlab 实现,包括方法介绍,公式推导和优化过程可视化 1 BFGS 方法介绍 BFGS 的其实就是一种改良后的牛顿法,因为计算二阶导数 Hessian 矩阵所需的计算资源是比较大的,复杂度为 O ( 2 ⋅ n 2 ) …...

Sklearn入门之datasets的基本用法

、 Sklearn全称:Scipy-toolkit Learn是 一个基于scipy实现的的开源机器学习库。它提供了大量的算法和工具&#xff0c;用于数据挖掘和数据分析&#xff0c;包括分类、回归、聚类等多种任务。本文我将带你了解并入门Sklearn下的datasets在机器学习中的基本用法。 获取方式 pi…...

UDS协议 - 应用层服务测试用例概览

目录 前言一、10服务物理寻址测试功能寻址测试二、11服务物理寻址测试功能寻址测试三、14服务物理寻址测试功能寻址测试四、19服务物理寻址测试功能寻址测试五、22服务物理寻址测试功能寻址测试六、27服务物理寻址测试七、28服务物理寻址测试功能寻址测试八、2E服务物理寻址测试…...

记录一个虚拟机分配资源的问题

Virtualize Intel VT - x/EPT or AMD - V/RVI&#xff1a;若物理机的 CPU 支持对应的硬件虚拟化技术&#xff08;Intel VT - x 或 AMD - V&#xff09;&#xff0c;强烈建议开启。该功能可显著提升虚拟机的性能&#xff0c;让虚拟机更高效地利用物理 CPU 资源&#xff0c;改善卡…...

(即插即用模块-特征处理部分) 三十一、(2024) CDFA 对比度驱动的特征聚合模块

文章目录 1、Contrast-Driven Feature Aggregation module2、代码实现 paper&#xff1a;ConDSeg: A General Medical Image Segmentation Framework via Contrast-Driven Feature Enhancement Code&#xff1a;https://github.com/Mengqi-Lei/ConDSeg 1、Contrast-Driven Feat…...

机械革命 无界15X 自带的 有线网卡 YT6801 debian12下 的驱动方法

这网卡是国货啊。。。 而且人家发了驱动程序 Motorcomm Microelectronics. YT6801 Gigabit Ethernet Controller [1f0a:6801] 网卡YT6801在Linux环境中的安装方法 下载网址 yt6801-linux-driver-1.0.29.zip 我不知道别的系统是否按照说明安装就行了 但是debian12不行&…...

TypeScript 的 interface 接口

TypeScript 的 interface 接口 简介 interface 是对象的模板&#xff0c;可以看作是一种类型约定&#xff0c;中文译为“接口”。使用了某个模板的对象&#xff0c;就拥有了指定的类型结构。 interface Person {firstName: string;lastName: string;age: number;} 上面示例中…...