[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副本出现故障时&#…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
