[node] Node.js的文件系统
[node] Node.js的文件系统
- 文件系统的使用
- 异步和同步
- input.txt
- 示例
- 常用方法
- 打开文件
- 语法
- 示例
- 获取文件信息
- 语法
- 示例
- 写入文件
- 语法
- 示例
- 读取文件
- 语法
- 示例
- 关闭文件
- 语法
- 示例
- 截取文件
- 语法
- 示例
- 删除文件
- 语法
- 示例
- 创建目录
- 语法
- 示例
- 读取目录
- 语法
- 示例
- 删除目录
- 语法
- 示例
- 文件模块方法
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API
文件系统的使用
Node 导入文件系统模块(fs)语法如下:
var fs = require("fs")
异步和同步
Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
建议使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。
input.txt
文件读取实例
示例
main.js
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {// 异步读取if (err) {return console.error(err);}console.log("异步读取: " + data.toString());
});
var data = fs.readFileSync('input.txt');// 同步读取
console.log("同步读取: " + data.toString());
console.log("程序执行完毕。");
//终端执行 node main.js
//输出
// 同步读取: Test for read// 程序执行完毕。
// 异步读取: Test for read
常用方法
打开文件
语法
异步模式下打开文件:
fs.open(path, flags[, mode], callback)
- path - 文件的路径。
- flags - 文件打开的行为。标志说明看下表。
- mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
- callback - 回调函数,带有两个参数如:callback(err, fd)。
flags标志说明:
Flag | 描述 |
---|---|
r | 以读取模式打开文件。如果文件不存在抛出异常。 |
r+ | 以读写模式打开文件。如果文件不存在抛出异常。 |
rs | 以同步的方式读取文件。 |
rs+ | 以同步的方式读取和写入文件。 |
w | 以写入模式打开文件,如果文件不存在则创建。 |
wx | 类似 ‘w’,但是如果文件路径存在,则文件写入失败。 |
w+ | 以读写模式打开文件,如果文件不存在则创建。 |
wx+ | 类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。 |
a | 以追加模式打开文件,如果文件不存在则创建。 |
ax | 类似 ‘a’, 但是如果文件路径存在,则文件追加失败。 |
a+ | 以读取追加模式打开文件,如果文件不存在则创建。 |
ax+ | 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。 |
示例
var fs = require("fs");
// 异步打开文件
console.log("准备打开文件!");
fs.open('input.txt', 'r+', function(err, fd) {if (err) {return console.error(err);}console.log("文件打开成功!");
});
//终端执行 node main.js
//输出
// 准备打开文件!
// 文件打开成功!
获取文件信息
语法
异步模式下获取文件信息:
fs.stat(path, callback)
- path - 文件路径
- callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象
stats类中的方法有:
方法 | 描述 |
---|---|
stats.isFile() | 如果是文件返回 true,否则返回 false |
stats.isDirectory() | 如果是目录返回 true,否则返回 false |
stats.isBlockDevice() | 如果是块设备返回 true,否则返回 false |
stats.isCharacterDevice() | 如果是字符设备返回 true,否则返回 false |
stats.isSymbolicLink() | 如果是软链接返回 true,否则返回 false |
stats.isFIFO() | 如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道 |
stats.isSocket() | 如果是 Socket 返回 true,否则返回 false |
示例
fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性。例如判断是否为文件
var fs = require('fs');
fs.stat('/demo/fs.js', function (err, stats) {console.log(stats.isFile()); //true
})
写入文件
语法
异步模式下写入文件语法格式:
fs.writeFile(file, data[, options], callback)
writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容
。
- file - 文件名或文件描述符
- data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象
- options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’,这里flag的取值可以参考打开文件中flag的取值范围
- callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回
示例
mian.js
var fs = require("fs");
console.log("准备写入文件");
fs.writeFile('input.txt', '通过fs.writeFile 写入文件的内容', function(err) {if (err) {return console.error(err);}console.log("数据写入成功!");console.log("--------分割线-------------")console.log("读取写入的数据!");fs.readFile('input.txt', function (err, data) {if (err) {return console.error(err);}console.log("异步读取文件数据: " + data.toString());});
});
//终端执行 node main.js
//输出
// 准备写入文件
// 数据写入成功!
// --------分割线-------------
// 读取写入的数据!
// 异步读取文件数据: 通过fs.writeFile 写入文件的内容
读取文件
语法
异步模式下读取文件语法格式:
fs.read(fd, buffer, offset, length, position, callback)
该方法使用了文件描述符来读取文件
- fd - 通过 fs.open() 方法返回的文件描述符
- buffer - 数据写入的缓冲区
- offset - 缓冲区写入的写入偏移量
- length - 要从文件中读取的字节数
- position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取
- callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象
示例
mian.js
var fs = require("fs");
var buf = new Buffer.alloc(1024);console.log("准备打开已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {if (err) {return console.error(err);}console.log("文件打开成功!");console.log("准备读取文件:");fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){if (err){console.log(err);}console.log(bytes + " 字节被读取");// 仅输出读取的字节if(bytes > 0){console.log(buf.slice(0, bytes).toString());}});
});
//终端执行 node main.js
//txt文件内容是: 文件读取实例
//输出
// 准备打开已存在的文件!
// 文件打开成功!
// 准备读取文件:
// 20 字节被读取
// 文件读取实例
关闭文件
语法
异步模式下关闭文件语法格式:
fs.close(fd, callback)
- fd - 通过 fs.open() 方法返回的文件描述符
- callback - 回调函数,没有参数
示例
mian.js
var fs = require("fs");
var buf = new Buffer.alloc(1024);
console.log("准备打开文件!");
fs.open("input.txt", "r+", function (err, fd) {if (err) {return console.error(err);}console.log("文件打开成功!");console.log("准备读取文件!");fs.read(fd, buf, 0, buf.length, 0, function (err, bytes) {if (err) {console.log(err);}if (bytes > 0) {console.log(buf.slice(0, bytes).toString()); // 仅输出读取的字节}// 关闭文件fs.close(fd, function (err) {if (err) {console.log(err);}console.log("文件关闭成功");});});
});
//终端执行 node main.js
//输出
// 准备打开文件!
// 文件打开成功!
// 准备读取文件!
// 文件读取实例// 文件关闭成功
截取文件
语法
异步模式下截取文件语法格式:
fs.ftruncate(fd, len, callback)
- fd - 通过 fs.open() 方法返回的文件描述符
- len - 文件内容截取的长度
- callback - 回调函数,没有参数
示例
input.txt
Test for read or write!!!
mian.js
var fs = require("fs");
console.log("准备写入文件");
fs.writeFile('input.txt', '通过fs.writeFile 写入文件的内容', function(err) {if (err) {return console.error(err);}console.log("数据写入成功!");console.log("--------分割线-------------")console.log("读取写入的数据!");fs.readFile('input.txt', function (err, data) {if (err) {return console.error(err);}console.log("异步读取文件数据: " + data.toString());});
});
//终端执行 node main.js
//输出
// 准备打开文件!
// 文件打开成功!
// 截取10字节内的文件内容,超出部分将被去除。
// 文件截取成功。
// 读取相同的文件
// Test for r
// 文件关闭成功!
删除文件
语法
删除文件语法格式:
fs.unlink(path, callback)
- path - 文件路径
- callback - 回调函数,没有参数
示例
mian.js
var fs = require("fs");
console.log("准备删除文件!");
fs.unlink("input.txt", function (err) {if (err) {return console.error(err);}console.log("文件删除成功!");
});
//终端执行 node main.js
//输出
// 准备删除文件!
// 文件删除成功!
此时 input.txt 文件已经不存在
创建目录
语法
异步模式下创建目录语法格式:
fs.mkdir(path[, options], callback)
- path - 文件路径
- options - 参数可以是:
- recursive - 是否以递归的方式创建目录,默认 false
- mode - 设置目录权限,默认为 0777
- callback - 回调函数,没有参数
示例
mian.js
var fs = require("fs");console.log("创建目录 /tmp/");
fs.mkdir("/tmp/", function (err) {if (err) {return console.error(err);}console.log("目录创建成功。");
});
//终端执行 node main.js
//输出
// 创建目录 /tmp/
// 目录创建成功。
若是创建的是嵌套的目录,例如"/temp/test/,必须保证上级目录temp存在,否则会导致报错
若是不存在上级目录而成功创建test,则需添加参数recursive,因为该参数用于控制是否递归创建目录:
fs.mkdir('/temp/test', { recursive: true }, (err) => {if (err) throw err;
});
读取目录
语法
异步模式下读取目录语法格式:
fs.readdir(path, callback)
- path - 文件路径
- callback - 回调函数,回调函数带有两个参数:
- err 为错误信息
- files 为 目录下的文件数组列表。
示例
mian.js
var fs = require("fs");
console.log("查看 /bin 目录");
fs.readdir("bin/", function (err, files) {if (err) {return console.error(err);}files.forEach(function (file) {console.log(file);});
});
//终端执行 node main.js
//输出
// 查看 /bin 目录
// index.js
// readme.md
删除目录
语法
删除目录语法格式:
fs.rmdir(path, callback)
- path - 文件路径
- callback - 回调函数,没有参数。
示例
mian.js
var fs = require("fs");
// 执行前创建一个空的 temp/test 目录
console.log("准备删除目录 temp/test");
fs.rmdir("temp/test", function (err) {if (err) {return console.error(err);}console.log("读取 temp 目录");fs.readdir("temp", function (err, files) {if (err) {return console.error(err);}files.forEach(function (file) {console.log(file);});});
});
//终端执行 node main.js
//输出
// 准备删除目录 temp/test
// 读取 temp 目录
文件模块方法
以下为 Node.js 文件模块的方法列表:
方法 | 描述 |
---|---|
fs.rename(oldPath, newPath, callback) | 异步 rename().回调函数没有参数,但可能抛出异常 |
fs.ftruncate(fd, len, callback) | 异步 ftruncate().回调函数没有参数,但可能抛出异常 |
fs.ftruncateSync(fd, len) | 同步 ftruncate() |
fs.truncate(path, len, callback) | 异步 truncate().回调函数没有参数,但可能抛出异常。 |
fs.truncateSync(path, len) | 同步 truncate() |
fs.chown(path, uid, gid, callback) | 异步 chown().回调函数没有参数,但可能抛出异常。 |
fs.chownSync(path, uid, gid) | 同步 chown() |
fs.fchown(fd, uid, gid, callback) | 异步 fchown().回调函数没有参数,但可能抛出异常。 |
fs.fchownSync(fd, uid, gid) | 同步 fchown() |
fs.lchown(path, uid, gid, callback) | 异步 lchown().回调函数没有参数,但可能抛出异常。 |
fs.lchownSync(path, uid, gid) | 同步 lchown() |
fs.chmod(path, mode, callback) | 异步 chmod().回调函数没有参数,但可能抛出异常。 |
fs.chmodSync(path, mode) | 同步 chmod(). |
fs.fchmod(fd, mode, callback) | 异步 fchmod().回调函数没有参数,但可能抛出异常。 |
fs.fchmodSync(fd, mode) | 同步 fchmod(). |
fs.lchmod(path, mode, callback) | 异步 lchmod().回调函数没有参数,但可能抛出异常。Only available on Mac OS X. |
fs.lchmodSync(path, mode) | 同步 lchmod(). |
fs.stat(path, callback) | 异步 stat(). 回调函数有两个参数 err, stats,stats 是 fs.Stats 对象。 |
fs.lstat(path, callback) | 异步 lstat(). 回调函数有两个参数 err, stats,stats 是 fs.Stats 对象。 |
fs.fstat(fd, callback) | 异步 fstat(). 回调函数有两个参数 err, stats,stats 是 fs.Stats 对象。 |
fs.statSync(path) | 同步 stat(). 返回 fs.Stats 的实例。 |
fs.lstatSync(path) | 同步 lstat(). 返回 fs.Stats 的实例。 |
fs.fstatSync(fd) | 同步 fstat(). 返回 fs.Stats 的实例。 |
fs.link(srcpath, dstpath, callback) | 异步 link().回调函数没有参数,但可能抛出异常。 |
fs.linkSync(srcpath, dstpath) | 同步 link(). |
fs.symlink(srcpath, dstpath[, type], callback) | 异步 symlink().回调函数没有参数,但可能抛出异常。 type 参数可以设置为 ‘dir’, ‘file’, 或 ‘junction’ (默认为 ‘file’) 。 |
fs.symlinkSync(srcpath, dstpath[, type]) | 同步 symlink(). |
fs.readlink(path, callback) | 异步 readlink(). 回调函数有两个参数 err, linkString。 |
fs.realpath(path[, cache], callback) | 异步 realpath(). 回调函数有两个参数 err, resolvedPath。 |
fs.realpathSync(path[, cache]) | 同步 realpath()。返回绝对路径。 |
fs.unlink(path, callback) | 异步 unlink().回调函数没有参数,但可能抛出异常。 |
fs.unlinkSync(path) | 同步 unlink(). |
fs.rmdir(path, callback) | 异步 rmdir().回调函数没有参数,但可能抛出异常。 |
fs.rmdirSync(path) | 同步 rmdir(). |
fs.mkdir(path[, mode], callback) | S异步 mkdir(2).回调函数没有参数,但可能抛出异常。 访问权限默认为 0777。 |
fs.mkdirSync(path[, mode]) | 同步 mkdir(). |
fs.readdir(path, callback) | 异步 readdir(3). 读取目录的内容。 |
fs.readdirSync(path) | 同步 readdir().返回文件数组列表。 |
fs.close(fd, callback) | 异步 close().回调函数没有参数,但可能抛出异常。 |
fs.closeSync(fd) | 同步 close(). |
fs.open(path, flags[, mode], callback) | 异步打开文件。 |
fs.openSync(path, flags[, mode]) | 同步 version of fs.open(). |
fs.utimes(path, atime, mtime, callback) | 异步修改指定路径path的文件时间戳 |
fs.utimesSync(path, atime, mtime) | 修改指定路径path的文件时间戳 |
fs.futimes(fd, atime, mtime, callback) | 异步修改文件时间戳,通过文件描述符指定 |
fs.futimesSync(fd, atime, mtime) | 修改文件时间戳,通过文件描述符指定。 |
fs.fsync(fd, callback) | 异步 fsync.回调函数没有参数,但可能抛出异常。 |
fs.fsyncSync(fd) | 同步 fsync. |
fs.write(fd, buffer, offset, length[, position], callback) | 将缓冲区内容写入到通过文件描述符指定的文件。 |
fs.write(fd, data[, position[, encoding]], callback) | 通过文件描述符 fd 写入文件内容。 |
fs.writeSync(fd, buffer, offset, length[, position]) | 同步版的 fs.write()。 |
fs.writeSync(fd, data[, position[, encoding]]) | 同步版的 fs.write(). |
fs.read(fd, buffer, offset, length, position, callback) | 通过文件描述符 fd 读取文件内容。 |
fs.readSync(fd, buffer, offset, length, position) | 同步版的 fs.read. |
fs.readFile(filename[, options], callback) | 异步读取文件内容。 |
fs.readFileSync(filename[, options]) | fs.writeFile(filename, data[, options], callback) |
fs.writeFileSync(filename, data[, options]) | 同步版的 fs.writeFile。 |
fs.appendFile(filename, data[, options], callback) | 异步追加文件内容。 |
fs.appendFileSync(filename, data[, options]) | The 同步 version of fs.appendFile. |
fs.watchFile(filename[, options], listener) | 查看文件的修改。 |
fs.unwatchFile(filename[, listener]) | 停止查看 filename 的修改。 |
fs.watch(filename[, options][, listener]) | 查看 filename 的修改,filename 可以是文件或目录。返回 fs.FSWatcher 对象。 |
fs.exists(path, callback) | 检测给定的路径是否存在。 |
fs.existsSync(path) | 同步版的 fs.exists. |
fs.access(path[, mode], callback) | 测试指定路径用户权限 |
fs.accessSync(path[, mode]) | 同步版的 fs.access |
fs.createReadStream(path[, options]) | 返回ReadStream 对象 |
fs.createWriteStream(path[, options]) | 返回 WriteStream 对象 |
fs.symlink(srcpath, dstpath[, type], callback) | 异步 symlink().回调函数没有参数,但可能抛出异常 |
相关文章:

[node] Node.js的文件系统
[node] Node.js的文件系统 文件系统的使用异步和同步input.txt示例 常用方法打开文件语法示例 获取文件信息语法示例 写入文件语法示例 读取文件语法示例 关闭文件语法示例 截取文件语法示例 删除文件语法示例 创建目录语法示例 读取目录语法示例 删除目录语法示例 文件模块方法…...

【Linux系统基础】(2)在Linux上部署MySQL、RabbitMQ、ElasticSearch、Zookeeper、Kafka、NoSQL等各类软件
实战章节:在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,…...

CJson 使用 - 解析Object结构
简介 准备在开发板中使用json结构传送数据, 选用了cJson, 现在看下cJson的使用吧步骤 下载 git clone https://github.com/DaveGamble/cJSON 或者直接压缩包下载也行, 毕竟国内有时候下载不下来Qt 中使用cJson 在下载的cJson 目录中加入cJson.pri, 内容如下 INCLUDEPATH …...

MySQL8主主搭建
-- mysql8 主主搭建 mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz 主1 : 192.168.2.160 主2 : 192.168.2.161 --解压mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz为mysql8 -- 初始化mysql8 (略) -- 参数192.168.2.160 [root…...

使用Pycharm一键将.ui文件生成.py文件配置教程、一键打开QTDesigner教程
2df3621a-7ffd-4f18-9735-b86464b83a5b 前言 我痛恨所有将白嫖归为理所应当的猪🐖。 教程 打开pycharm之后,依次点击File->Settings->Tools->External Tools,进入如下界面: 1、配置快捷打开Qt Designer 点击号&…...

React 路由跳转
1. push 与 replace 模式 默认情况下,开启的是 push 模式,也就是说,每次点击跳转,都会向栈中压入一个新的地址,在点击返回时,可以返回到上一个打开的地址, 就像上图一样,我们每次返…...

【MySQL】数据处理:从SQL批量删除报错到Python优雅解决
一、背景 MySQL数据库表中有一批重复的脏数据,为不影响正常业务,需要进行批量删除。 二、SQL批量删除 首先想到的是编写SQL语句来批量删除:删除身份证号为51****59且ID不为5的全部数据(保留ID为5的那一条数据) DELETE FROM test_table WHERE id IN ( SELECT i…...

Rust 软件测试
Rust 第18节 软件测试 测试已写的函数 在创建每一个lib crate时,rust都会自动生产一个测试 mod;名字为tests; tests mod 被属性 #[cfg(test)] 修饰,用于测试; 在mod 内,需要在函数头上加属性 #[test]进行修饰,让其变为…...

win11下配置visual studio 2022+PCL1.13.1
第一部分:visual studio2022 安装 vs官网网址如下:https://visualstudio.microsoft.com/zh-hans/vs/ 第一步:我们打开官网链接,按如下操作点击下载免费版本的exe文件 第二步:打开下载目录下的安装文件进行安装&#…...

智能优化算法应用:基于法医调查算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于法医调查算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于法医调查算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.法医调查算法4.实验参数设定5.算法结果6.…...

【分享】4个方法打开PDF文件
PDF是很多人工作中经常使用的电子文档格式,但是可能有些刚接触的小伙伴不知道用什么工具来打开PDF文件,今天小编就来分享一下4种常用的工具。 1. 使用浏览器 只要有电脑基本都会安装一到两款浏览器,其实浏览器也可以用来打开PDF文件。 只需…...

React 调试
React 调试 console 调试 console.log console.info console.warn console.error console.time() & console.timeEnd() console.count() debugger调试 chrome断点调试 chrome条件断点 HTML节点复制 选中节点,使用 $0复制 JavaScript对象复制 copy…...

List 流的使用
摘要 本文将介绍在 Java 1.8 中对 List 进行流操作的使用方法。引入的 java.util.stream 包为开发者提供了一种更为便捷和强大的方式来处理集合数据。通过使用流,我们能够以声明性的方式进行集合操作,减少了样板代码,提高了代码的可读性和可…...

设计模式:单例模式(使用c++分别实现饿汉式单例、带双重检查锁定机制的懒汉式单例以及IoDH技术的单例)
单例模式 引言正文1. 饿汉式单例2. 带双重检查锁定机制的懒汉式单例3. IoDH技术的单例 结论优点饿汉式单例带双重检查锁定机制的懒汉式单例IoDH技术的单例 缺点饿汉式单例带双重检查锁定机制的懒汉式单例IoDH技术的单例 引言 在软件开发中,单例模式是一种很常用的设…...

[编程相关]正则表达式Regex语法
--目录-- 0. 前言1. 正则语法2. 正则搜索语法(1)字符集 Character_Classes(2)锚定符 Anchors(3)计数 Quantifiers(4)分组与索引 Group_And_Reference(5)周围 …...

axios实例配置和使用
一.vite项目中引入axios 1.1.安装axios pnpm add axios --save 二.配置axios实例 2.1实例配置 import axios from ‘axios’ import router from ‘/router’ const instance axios.create({ baseURL:“http://127.0.0.1:8080”, timeout:10*1000, //最长响应时间 }) instan…...

uni-app 工程目录结构介绍
锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

YOLOv8改进 | 主干篇 | 利用SENetV2改进网络结构 (全网首发改进)
一、本文介绍 本文给大家带来的改进机制是SENetV2,其是2023.11月的最新机制(所以大家想要发论文的可以在上面下点功夫),其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型,而是一个可以和现有的任何…...

TUP实现一对一聊天
package TCP; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /** * 发送消息线程 */ class Send ext…...

Kafka设计原理详解
Kafka核心总控制器 (Controller) 在Kafka集群中,通常会有一个或多个broker,其中一个会被选举为控制器 (Kafka Controller),其主要职责是管理整个集群中所有分区和副本的状态。具体来说: 当某个分区的leader副本出现故障时&#…...

光耦继电器
光耦继电器(光电继电器) AQW282SX 282SZ 280SX 280SZ 284SX 284SZ 212S 212SX 21 2SZ 文章目录 光耦继电器(光电继电器)前言一、光耦继电器是什么二、光耦继电器的类型三、光电耦合器的应用总结前言 光耦继电器在工业控制、通讯、医疗设备、家电及汽车电子等领域得到广泛应…...

【C++练级之路】【Lv.5】动态内存管理(都2023年了,不会有人还不知道new吧?)
目录 一、C/C内存分布二、new和delete的使用方式2.1 C语言内存管理2.2 C内存管理2.2.1 new和delete操作内置类型2.2.2 new和delete操作自定义类型 三、new和delete的底层原理3.1 operator new与operator delete函数3.2 原理总结3.2.1 内置类型3.2.2 自定义类型 四、定位new表达…...

2016年第五届数学建模国际赛小美赛A题臭氧消耗预测解题全过程文档及程序
2016年第五届数学建模国际赛小美赛 A题 臭氧消耗预测 原题再现: 臭氧消耗包括自1970年代后期以来观察到的若干现象:地球平流层(臭氧层)臭氧总量稳步下降,以及地球极地附近平流层臭氧(称为臭氧空洞&#x…...

springMVC-与spring整合
一、基本介绍 在项目开发中,spring管理的 Service和 Respository,SrpingMVC管理 Controller和ControllerAdvice,分工明确 当我们同时配置application.xml, springDispatcherServlet-servlet.xml , 那么注解的对象会被创建两次, 故…...

【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值
作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调双向队列 二叉树 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…...

如何使用树莓派Bookworm系统中配置网络的新方法NetworkManager
树莓派在 10 月新出的 Bookworm 版本系统中,将使用多年的 dhcpcd 换成了 NetworkManager(以前是在rasp-config中可选),这是因为 Raspberry Pi OS 使用的是 Debian 内核(和 Ubuntu 一样),所以树莓…...

恶意软件分析沙箱在网络安全策略中处于什么位置?
恶意软件分析沙箱提供了一种全面的恶意软件分析方法,包括静态和动态技术。这种全面的评估可以更全面地了解恶意软件的功能和潜在影响。然而,许多组织在确定在其安全基础设施中实施沙箱的最有效方法方面面临挑战。让我们看一下可以有效利用沙盒解决方案的…...

ARM学习(24)Can的高阶认识和错误处理
笔者来聊一下CAN协议帧的认识和错误处理。 1、CAN协议帧认识 CAN 差分信号,是经过CAN收发器转成差分信号的,CAN RX和TX是逻辑电平。CAN的基础知识,可参考笔者这边文章:ARM学习(21)STM32 外设Can的认识与驱…...

网络通信--深入理解网络和TCP / IP协议
计算机网络体系结构 TCP/IP协议族 TCP / IP 网络传输中的数据术语 网络通信中的地址和端口 window端查看IP地址和MAC地址:ipconfig -all MAC层地址是在数据链路层的;IP工作在网络层的 MAC是48个字节,IP是32个字节 在子网(局域…...

IPC之九:使用UNIX Domain Socket进行进程间通信的实例
socket 编程是一种用于网络通信的编程方式,在 socket 的协议族中除了常用的 AF_INET、AF_RAW、AF_NETLINK等以外,还有一个专门用于 IPC 的协议族 AF_UNIX,IPC 是 Linux 编程中一个重要的概念,常用的 IPC 方式有管道、消息队列、共…...