学习node.js 二 path模块,os模块,process

目录

path模块

1. path.basename()

2. path.dirname

3. path.extname

4. path.join

5. path.resolve

6. path.parse path.format

OS模块

1. 获取操作系统的一些信息

(1)os.platform()

 (2)os.release

 (3)os.homedir()

   (4) os.type() 

   (5)os.arch()

2. 获取CPU的线程以及详细信息

(1)os.cpus()

 (2) os.cpus.length

3. 获取网络信息

process

api的介绍

(1)process.arch 

(2)process.cwd 

(3)process.argv

(4)process.memoryUsage

 (5)process.exit

 (6)process.kill

  (7)process.env


path模块

path模块在不同的操作系统是有差异的(windows | posix)

posix表示可移植操作系统接口,也就是定义了一套标准,遵守这套标准的操作系统有(unix,like unix,linux,macOs,windows wsl)

为什么要定义这套标准?

比如在Linux系统启动一个进程需要调用fork函数,在windows启动一个进程需要调用creatprocess函数,这样就会有问题,比如我在linux写好了代码,需要移植到windows发现函数不统一,posix标准的出现就是为了解决这个问题

Windows 并没有完全遵循 POSIX 标准。Windows 在设计上采用了不同于 POSIX 的路径表示方法。

在 Windows 系统中,路径使用反斜杠(\)作为路径分隔符。这与 POSIX 系统使用的正斜杠(/)是不同的。这是 Windows 系统的历史原因所致,早期的 Windows 操作系统采用了不同的设计选择。

1. path.basename()

返回的是给定路径中的最后一部分

console.log(path.basename("D:/node_base/testPath.js"))

结果:testPath.js

2. path.dirname

这个API和basename正好互补

path.dirname("D:/node_base/testPath.js")

结果:D:/node_base

dirname API 返回 /aaaa/bbbb/cccc 除了最后一个路径的其他路径。

basename API 返回 最后一个路径 index.html

3. path.extname

这个API 用来返回扩展名例如/bbb/ccc/file.txt 返回就是.txt

path.extname("D:/node_base/testPath.js")

返回最后一个点后面的内容

4. path.join

这个API 主要是用来拼接路径的

console.log(path.join("D:/node_base","testPath.js"))

结果:D:\node_base\testPath.js

也可以支持../ ./等操作

例:

console.log(path.join("D:/node_base/view","../","testPath.js"))

结果还是和上面的一样

5. path.resolve

用于将相对路径解析并且返回绝对路径

如果传入了多个绝对路径 它将返回最右边的绝对路径

例:

console.log(path.resolve("./index.js"))

结果:D:\item\node_base\index.js

path.resolve('/aaa','/bbb','/ccc') 返回/ccc

6. path.parse path.format

path.format 和 path.parse 正好互补

parse

用于解析文件路径。它接受一个路径字符串作为输入,并返回一个包含路径各个组成部分的对象

console.log(path.parse(__dirname + "/index.js"))

{
  root: 'D:\\',
  dir: 'D:\\item\\node_base',
  base: 'index.js',
  ext: '.js',
  name: 'index'
}
format 正好相反 在把对象转回字符串

OS模块

Nodejs os 模块可以跟操作系统进行交互

1. 获取操作系统的一些信息

(1)os.platform()

        返回标识为其编译 Node.js 二进制文件的操作系统平台的字符串。 该值在编译时设置。 可能的值为 'aix''darwin''freebsd''linux''openbsd''sunos'、以及 'win32'

实际案例:

按照不同的操作系统,执行shell命令

const os = require('os');
const {exec } = require('child_process');const osName = os.platform();function open(url) {if(osName === 'win32') {exec(`start ${url}`);} else if (osName === 'darwin') {exec(`open ${url}`);} else if (osName === 'linux') {exec(`xdg-open ${url}`);}
}
open("http://www.baidu.com")
 (2)os.release

        返回操作系统的版本例如10.xxxx win10

        如:10.0.22631

 (3)os.homedir()

        返回用户目录

        原理就是 windows echo %USERPROFILE% posix $HOME

        如:C:\Users\wanj

   (4) os.type() 

        它在 Linux 上返回 'Linux',在 macOS 上返回 'Darwin',在 Windows 上返回 'Windows_NT'

   (5)os.arch()

        返回cpu的架构 可能的值为 'arm''arm64''ia32''mips''mipsel''ppc'

'ppc64''s390''s390x'、以及 'x64'

2. 获取CPU的线程以及详细信息

(1)os.cpus()
{model: 'Intel(R) Core(TM) i7- CPU @ 2.20Hz',speed: ,times: {user: 2361078,nice: 0,sys: 1185984,idle: 85513343,irq: 12453}}

model: 表示CPU的型号信息

speed: 表示CPU的时钟速度

times: 是一个包含CPU使用时间的对象,其中包含以下属性:

  • user: 表示CPU被用户程序使用的时间(以毫秒为单位)。
  • nice: 表示CPU被优先级较低的用户程序使用的时间(以毫秒为单位)。
  • sys: 表示CPU被系统内核使用的时间(以毫秒为单位)。
  • idle: 表示CPU处于空闲状态的时间(以毫秒为单位)。
  • irq: 表示CPU被硬件中断处理程序使用的时间(以毫秒为单位)。
 (2) os.cpus.length

        可以获取到cpu的线程

3. 获取网络信息

os.networkInterfaces()

{lo: [{address: '127.0.0.1',netmask: '255.0.0.0',family: 'IPv4',mac: '00:00:00:00:00:00',internal: true,cidr: '127.0.0.1/8'},{address: '::1',netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',family: 'IPv6',mac: '00:00:00:00:00:00',scopeid: 0,internal: true,cidr: '::1/128'}],eth0: [{address: '192.168.1.108',netmask: '255.255.255.0',family: 'IPv4',mac: '01:02:03:0a:0b:0c',internal: false,cidr: '192.168.1.108/24'},{address: 'fe80::a00:27ff:fe4e:66a1',netmask: 'ffff:ffff:ffff:ffff::',family: 'IPv6',mac: '01:02:03:0a:0b:0c',scopeid: 1,internal: false,cidr: 'fe80::a00:27ff:fe4e:66a1/64'}]
} 
  • address: 表示本地回环接口的IP地址,这里是 '127.0.0.1'
  • netmask: 表示本地回环接口的子网掩码,这里是 '255.0.0.0'
  • family: 表示地址族(address family),这里是 'IPv4',表示IPv4地址。
  • mac: 表示本地回环接口的MAC地址,这里是 '00:00:00:00:00:00'。请注意,本地回环接口通常不涉及硬件,因此MAC地址通常为全零。
  • internal: 表示本地回环接口是否是内部接口,这里是 true,表示它是一个内部接口。
  • cidr: 表示本地回环接口的CIDR表示法,即网络地址和子网掩码的组合,这里是 '127.0.0.1/8',表示整个 127.0.0.0 网络。

process

process 是Nodejs操作当前进程和控制当前进程的API,并且是挂载到globalThis下面的全局API

api的介绍

(1)process.arch 

        和之前的os.arch一样

(2)process.cwd 

        返回当前的工作目录 例如在 F:\project\node> 执行的脚本就返回这个目录 也可以和path拼接代替__dirname使用——

        也就是和__dirname的作用是一样的,但是在esm模式下无法使用__dirname所以就会采用process.cwd代替

(3)process.argv

        这是process的一个属性

        获取执行进程后面的参数 返回是一个数组 后面到命令行交互工具的时候会很有用,各种cli脚手架也是使用这种方式接受配置参数例如webpack 
        node .\testPath.js --seva

        [ 'D:\\node\\node.exe', 'D:\\item\\node_base\\testPath.js', '--seva' ]

        第一个元素为,解析他的文件路径

        第二个元素为:调用这个属性的文件路径

        第三个元素为:执行命令后携带的参数

(4)process.memoryUsage

        用于获取当前进程的内存使用情况。该方法返回一个对象,其中包含了各种内存使用指标,如 rss(Resident Set Size,常驻集大小)、heapTotal(堆区总大小)、heapUsed(已用堆大小)和 external(外部内存使用量)等

        

{rss: 30932992, // 常驻集大小 这是进程当前占用的物理内存量,不包括共享内存和页面缓存。它反映了进程实际占用的物理内存大小heapTotal: 6438912, //堆区总大小 这是 V8 引擎为 JavaScript 对象分配的内存量。它包括了已用和未用的堆内存heapUsed: 5678624,  //已用堆大小external: 423221, //外部内存使用量 这部分内存不是由 Node.js 进程直接分配的,而是由其他 C/C++ 对象或系统分配的arrayBuffers: 17606 //是用于处理二进制数据的对象类型,它使用了 JavaScript 中的 ArrayBuffer 接口。这个属性显示了当前进程中 ArrayBuffers 的数量}
 (5)process.exit

         将强制进程尽快退出,即使仍有未完全完成的异步操作挂起

        例:

setTimeout(() => {console.log('Hello World')
},2000)
setTimeout(() => {process.exit()
},500)
process.on('exit', () => {console.log('Goodbye World')
})

有on方法可以去监听事件

 (6)process.kill

        与exit类似,kill用来杀死一个进程,接受一个参数进程id可以通过process.pid 获取

process.kill(process.pid, 'SIGINT')
  (7)process.env

        用于读取操作系统所有的环境变量,也可以修改和查询环境变量

        修改 注意修改并不会真正影响操作系统的变量,而是只在当前线程生效,线程结束便释放。

         

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年玩转音乐,不只是剪辑!这4款软件让创意跳跃在每个音符间

现在这年头,音乐不光是听个乐呵,还能暖暖心。要是想自己捣鼓捣鼓这音乐,或者给日常生活加个调调,有个好的音乐剪辑软件就特别重要。今天,我就来晒晒我收藏的那些音乐剪辑软件,这些软件不光是剪剪切切的工具…

分布式缓存———数据一致性问题

分布式基础理论 CAP理论 与 BASE理论-CSDN博客 分布式系统会的三座大山:NPC。 N:Network Delay,网络延迟P:Process Pause,进程暂停(GC)C:Clock Drift,时钟漂移 在当前…

机器学习第十一章——计算学习理论

一、基础知识 计算学习理论(computational learning theory)研究的是关于通过“计算”来进行“学习”的理论,即关于机器学习的理论基础,其目的是分析学习任务的困难本质,为学习算法提供理论保证,并根据分析结果指导算法设计。 给…

Verilog刷题笔记53

题目: Fsm serialdata See also: Serial receiver Now that you have a finite state machine that can identify when bytes are correctly received in a serial bitstream, add a datapath that will output the correctly-received data byte. out_byte needs …

如果忘记了 Apple ID 密码,如何重设

“我忘记了我的 Apple ID 密码,如何恢复我的帐户?”为了方便用户,Apple 允许每个人使用唯一的 Apple ID 和密码激活设备并访问所有 Apple 服务。然而,实际上,手动选择某项并忘记它似乎很容易。例如,许多 Ap…

基于web框架的协同过滤的美食推荐系统【数据爬虫、管理系统、数据可更新、样式可调整】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍研究背景研究的目的与意义协同过滤算法基于用户的协同过滤算法定义基于物品的协同过滤算法的定义 数据库设计db_food(美食信息表)db_collect(美食…

eclipse打开失败 java was started but returned exit code=13

报错详细信息如下 原因:eclipse版本和jdk版本不一致。系统之前jdk是1.6,然后安装1.8之后默认修改了环境变量。导致eclipse启动失败 解决方案:修改eclipse目录下的eclipse.ini文件增加一下内容。文档说明:eclipse.ini - Eclipsepe…

还在用Hexo吗?来试试Gatsby搭建一个网站吧!

本文首发于个人博客网站:http://www.blog.lekshome.top/2024/08/20/shi-yong-gatsby-da-jian-ge-ren-wang-zhan/由于CSDN并不是本人主要的内容输出平台,所以大多数博客直接由md文档导入且缺少审查和维护,如果存在图片或其他格式错误可以前往上…

Halcon灰度图像的形态学运算

Halcon灰度图像的形态学运算 本文介绍的算子的输入类型是灰度的Image图像。 1. 灰度图像与区域的区别 基于区域的形态学运算与基于灰度图像的形态学运算的根本区别在于,二者输入的对象不同。前者输入的是一些区域,并且这些区域是经过闽值处理的二值图…

一文搞懂大模型在多GPU环境的分布式训练!

随着大模型时代的到来,模型参数量、训练数据量、计算量等各方面急剧增长。大模型训练面临新的挑战: 显存挑战:例如,175B的GPT-3模型需要175B*4bytes即700GB模型参数空间,而常见的GPU显存如A100是80G显存,这…

visual studio使用技巧:快速生成Json、XML对应类

visual studio快速生成Json、XML对应类 在项目中经常用到json或者xml作为配置文件,进行序列化和反序列化就需要有对应的类,重新写一遍类就比较麻烦,这里就讲一下通过visual studio快速生成json或者xml对应类型的方法。 自动生成Json类 复制…

图像数据处理17

四、形态学图像处理 4.3 开运算与闭运算 4.3.1开运算与闭运算的定义: 开运算:先腐蚀,再膨胀 闭运算:先膨胀,再腐蚀 记忆方法:膨胀(胀开)所以开运算最后对应的结果是膨胀&#x…

c++进阶——继承的定义,复杂的菱形继承及菱形虚拟继承

目录 前言: 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6. 继承与静态成员 7.复杂的菱形继承及菱…

springsecurity 登录认证一(ajax)

一、准备工作 1.1 导入依赖 因springboot 3.0 以上版本只能支持java17 顾使用2.5.0 版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version><…

网络工程3(子网通信,为什么要使用mac和ip)

文章目录 一. 子网如何通讯1. 子网内部通信2. 子网外部通信 二. 交换机和路由器的连接三. 为什么不只使用mac地址或ip地址进行网络通信1. 首先要明确的是&#xff0c;不管是只用mac或只用ip通信 四. 子网设备如何获得ip五. 不同网段的主机无法直接通信的原因 一. 子网如何通讯 …

音频矩阵主要功能及常规路数配置有哪些

音频矩阵&#xff0c;又称AUDIO矩阵或音频矩阵切换器&#xff0c;是一种用于管理和控制多个音频信号的设备。它具备多种功能&#xff0c;主要可以概括为以下几个方面&#xff1a; 一、主要功能 信号切换&#xff1a; AUDIO128128音频矩阵能够将多个音频源的信号输入到设备中&…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…

怎么选开放式耳机好?精选五款物超所值机型推荐!

耳机已成为我们日常生活中的常见伙伴&#xff0c;无论是听音乐、玩游戏还是看剧&#xff0c;都离不开它。市场上耳机品牌和款式众多&#xff0c;找到一款真正适合自己的并不容易。尤其是长时间佩戴传统入耳式耳机可能会感到耳朵不舒服或闷热。开放式耳机因其非侵入式设计&#…

运维学习————Linux环境下Tomcat的部署

目录 一、环境准备 二、 启动测试 三、访问端口修改 四、部署web项目 1、材料准备 2、部署 2.1、上传war包到webapps目录下 2.2、修改项目配置 2.3、浏览器访问 引申 一、环境准备 tomcat安装包&#xff1a;apache-tomcat-9.0.52 JDK环境&#xff1a; 我使用的y…

MATLAB口罩检测系统

一、应用背景 作为数字图像处理和计算机视觉领域的一个重要组成部分&#xff0c;利用摄像机对图像进行采集&#xff0c;从图像中检测人脸并进行口罩穿戴的识别的有着非常重要的研究意义和应用价值。面对突如其来的新型肺炎疫情&#xff0c;人们生活秩序被严重打乱。跟普通流感…