Node.js 学习笔记 fs、path、http模块;模块化;包;npm

Node.js学习

  • Node.js
    • 一、定义
      • 1.前端工程化
      • 2.Node.js 为何能执行 JS?
      • 3.安装nodejs、删除之前的nodejs
      • 4.使用 Node.js
    • 二、fs模块 \- 读写文件
    • 三、path 模块
    • 案例 - 压缩前端html
    • 四、HTTP相关
      • URL中的端口号
      • 常见的服务程序
      • http 模块-创建 Web 服务
        • 案例:浏览时钟
    • 五、模块化
      • 1.CommonJS 模块标准
      • 2.ECMAScript 模块标准
        • 2.1 默认导出和导入
        • 2.2 命名导出和导入
    • 六、包
      • 1.包
      • 2.npm
        • npm - 软件包管理器
        • npm - 安装所有依赖
        • npm - 全局软件包 nodemon
    • 七、Node.js总结
      • 1.Node.js 模块化:
      • 2.Node.js 包
      • 3.常用命令
    • 七、Node.js总结
      • 1.Node.js 模块化:
      • 2.Node.js 包
      • 3.常用命令

Node.js

教学视频 BV1MN411y7pw , P83-97的笔记

一、定义

Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。

作用:使用 Node.js 编写服务器端程序

✓ 编写数据接口,提供网页资源浏览功能等等

✓ 前端工程化:为后续学习 Vue 和 React 等框架做铺垫

1.前端工程化

前端工程化:开发项目直到上线,过程中集成的所有工具和技术

Node.js 是前端工程化的基础(因为 Node.js 可以主动读取前端代码内容)
在这里插入图片描述

2.Node.js 为何能执行 JS?

首先:浏览器能执行 JS 代码,依靠的是内核中的 V8 引擎(C++ 程序)

其次:Node.js 是基于 Chrome V8 引擎进行封装(运行环境)

区别:都支持 ECMAScript 标准语法,Node.js 有独立的 API

注意:Node.js 环境没有 DOM 和 BOM 等
在这里插入图片描述

3.安装nodejs、删除之前的nodejs

因为之前有安装过一次nodejs,但是忘记放在哪里了,

a later version of node.js is already installed.

https://www.cnblogs.com/fighxp/p/7410235.html

https://blog.51cto.com/teayear/9559527

备注一下,我这次装在了D:\nodejs
在这里插入图片描述

4.使用 Node.js

需求:新建 JS 文件,并编写代码后,在 node 环境下执行

命令:在 VSCode 集成终端中,输入node xxx.js,回车即可执行

在这里插入图片描述

总结:
1. Node.js 是什么?
➢ 基于 Chrome 的 V8 引擎封装,独立执行 JavaScript 代码的环境2. Node.js 与浏览器环境的 JS 最大区别?
➢ Node.js 环境中没有 BOM 和 DOM3. Node.js 有什么用?
➢ 编写后端程序:提供数据和网页资源等
➢ 前端工程化:集成各种开发中使用的工具和技术4. Node.js 如何执行代码?
➢ 在 VSCode 终端中输入:node xxx.js 回车即可执行(注意路径)

二、fs模块 - 读写文件

模块:类似插件,封装了方法/属性

fs 模块:封装了与本机文件系统进行交互的,方法/属性

语法:

  1. 加载 fs 模块对象
  2. 写入文件内容
  3. 读取文件内容

在这里插入图片描述

 const f = require('fs')// 写f.writeFile('./02test.txt','hello,node.js',err => {if (err) {console.log(err);} else {console.log('写入成功');}})// 读
f.readFile('./02test.txt',(err, data) => {if(err) console.log(err);else {console.log(data); // 68 65 6c 6c 6f 2c 6e 6f 64 65 2e 6a 73>// data是文件内容的 Buffer数据流 (是字符串在 计算机中保存的二进制数据 转换成的十六进制数据)console.log(data.toString()); // hello,node.js} 
})

三、path 模块

问题:Node.js 代码中,相对路径是根据终端所在路径来查找的,可能无法找到你想要的文件。

建议:在 Node.js 代码中,使用绝对路径

补充知识点:__dirname 内置变量(获取当前模块目录的绝对路径)

  • 例子:

✓ windows: D:\备课代码\3-B站课程\03_Node.js与Webpack\03-code\03

✓ mac: /Users/xxx/Desktop/备课代码/3-B站课程/03_Node.js与Webpack/03-code/03

mac 和 windows 的区别在于 分隔符 一个是\ 一个是/

注意:path.join() 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起。

path.join('03', 'dist/js', 'index.js')
// windows: '03\dist\js\index.js'
// mac:      '03/dist/js/index.js'

语法
在这里插入图片描述

path用于解决,代码中的相对路径和调试终端的所在文件夹 不同的问题。

调用path.join()配合__dirname组成的目标文件的绝对路径。

  • 案例:

在这里插入图片描述

修改后:

const path = require('path')
console.log(__dirname);const f = require('fs')
f.writeFile(path.join(__dirname,'./03test.txt'),'444444',err => {if (err) {console.log(err);} else {console.log('写入成功');}
})

案例 - 压缩前端html

需求:把 回车符(\r)和换行符(\n)去掉后,写入到新 html 文件中

步骤:

  1. 读取源 html 文件内容
  2. 正则替换字符串
  3. 写入到新的 html 文件中

V:\Web\mycode\nodejs\04 compress_html\public\index.html

/*** 目标1:压缩 html 代码* 需求:把回车符 \r,换行符 \n 去掉,写入到新 html 文件中*  1.1 读取源 html 文件内容*  1.2 正则替换字符串*  1.3 写入到新的 html 文件中*/
// 1.1 读取源 html 文件内容
const fs = require('fs')
const path = require('path')
fs.readFile(path.join(__dirname, 'public/index.html'), (err, data) => {if (err) console.log(err)else {const htmlStr = data.toString()// 1.2 正则替换字符串const resultStr = htmlStr.replace(/[\r\n]/g, '')console.log(resultStr)// 1.3 写入到新的 html 文件中fs.writeFile(path.join(__dirname, 'dist/index.html'), resultStr, err => {if (err) console.log(err)else console.log('写入成功')})}
})

四、HTTP相关

URL中的端口号

URL:统一资源定位符,简称网址,用于访问服务器里的资源

端口号:标记服务器里不同功能的服务程序

端口号范围:0-65535 之间的任意整数
在这里插入图片描述

注意:http 协议,默认访问 80 端口。所以可以省略。

常见的服务程序

服务器中常见的服务程序-Web 服务程序:用于提供网上信息浏览功能

注意:0-1023 和一些特定端口号被占用,我们自己编写服务程序请避开使用

1. 端口号的作用?
➢ 标记区分服务器里不同的服务程序
2. 什么是 Web 服务程序?
➢ 提供网上信息浏览的程序代码

http 模块-创建 Web 服务

使用nodejs提供的http模块,创建 Web 服务

需求:创建 Web 服务并响应内容给浏览器

步骤:

  1. 加载 http 模块,创建 Web 服务对象

  2. 监听 request 请求事件,设置响应头和响应体

    server.on(‘request’, (req, res) =>{ // 略})

    • req,request 意为请求. 是对请求报文的封装对象, 通过 request 对象可以获得请求报文的数据
    • res,response 意为响应. 是对响应报文的封装对象, 通过 response 对象可以设置响应报文
  3. 配置端口号并启动 Web 服务(一个web服务程序对应一个端口号)

  4. 浏览器请求 http://localhost:3000 测试

(localhost:固定代表本机的域名)

// 1. 加载 http 模块,创建 Web 服务对象
const h = require('http')
const server = h.createServer()// 2. 监听 request 请求事件,设置响应头和响应体
server.on('request', (req, res) => {// 设置响应头: 内容类型 普通文本以及中文编码格式res.setHeader('Content-Type', 'text/plain; charset=utf-8')// 设置响应体内容,结束本次请求与响应res.end('欢迎使用node.js和http模块创建的web服务')
})// 3. 配置端口号并启动 Web 服务(一个web服务程序对应一个端口号)
server.listen(3000, () => {console.log('web服务启动成功');
})// 4. 浏览器请求 http://localhost:3000 测试

在浏览器网址栏输入 http://localhost:3000后:
在这里插入图片描述

案例:浏览时钟

需求:基于 Web 服务,开发提供网页资源的功能

在这里插入图片描述

const fs = require('fs')
const path = require('path')// 基于http模块
const http = require('http');
// 创建服务器
const server = http.createServer()// 服务器监听有没有请求
// req,request 意为请求. 是对请求报文的封装对象, 通过 request 对象可以获得请求报文的数据
// res,response 意为响应. 是对响应报文的封装对象, 通过 response 对象可以设置响应报文
server.on('request', (req, res) => {if(req.url === '/index.html') {// 返回该网址fs.readFile(path.join(__dirname, 'dist/index.html'), (err,data) =>{if(err) console.log(err);else {res.setHeader('Content-Type', 'text/html; charset=utf-8')res.end(data.toString())}})} else {res.setHeader('Content-Type', 'text/html;charset=utf-8')res.end('not found')}
})// 配置端口号并启动 Web 服务
server.listen(8080, () => {console.log('web 服务器启动');
})

五、模块化

在Node.js 中,每个文件都被视为一个单独的模块。

概念:项目是由很多个模块文件组成的。 一个文件就是一个模块。

好处:提高代码复用性,按需加载,独立作用域

使用:需要标准语法 导出和导入进行使用。标准语法有 CommonJS 、ECMAScript

1.CommonJS 模块标准

CommonJS 模块是为Nodejs打包 JavaScript 代码的原始方式。Node.js 还支持浏览器和其他JavaScript运行使用的ECMAScript模块标准

使用:

1、导出:module.exports = {}

2、导入:require(‘模块名或路径’)

模块名或路径:

​ ✓ 内置模块:直接写名字(例如:fs,path,http)

​ ✓ 自定义模块:写模块文件路径(例如:./utils.js)

  • 示例

需求:定义 utils.js 模块,封装基地址和求数组总和的函数
在这里插入图片描述

V:\Web\mycode\nodejs\07 modularity_CommonJS\index.js

在这里插入图片描述

utils.js:

const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)// const getArraySum2 =  function (arr) {
//   return arr.reduce((sum,item) => sum + item ,0)
// }// 导出
module.exports = {url: baseURL,arraySum: getArraySum
}

index.js:

const obj = require('./utils.js')
console.log(obj.url);
console.log(obj.arraySum([1,2,4]));
总结:
1. Node.js 中什么是模块化?
➢ 每个文件都是独立的模块
2. 模块之间如何联系呢?
➢ 使用特定语法,导出和导入使用
3. CommonJS 标准规定如何导出和导入模块呢?
➢ 导出:module.exports = {}
➢ 导入:require('模块名或路径')
4. 模块名/路径如何选择?
➢ 内置模块,直接写名字。例如:fs,path,http等
➢ 自定义模块,写模块文件路径。例如:./utils.js

2.ECMAScript 模块标准

2.1 默认导出和导入

默认标准使用:

1、导出:export default {}

2、导入:import 变量名 from ‘模块名或路径’

注意:Node.js 默认支持 CommonJS 标准语法。如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建 package.json 文件,并设置 { “type” : “module” }

  • 示例
    在这里插入图片描述

V:\Web\mycode\nodejs\08 modularity_ECMAScript_default export\index.js

index.js是运行模块,要在index.js所在的文件夹中 创建一个 package.json

在这里插入图片描述

utils.js

const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)// 导出
export default {url: baseURL,arraySum: getArraySum
}

index.js

import obj from './utils'
console.log(obj);

package.json

{"type" : "module"
}

在这里插入图片描述

总结
1. ECMAScript 标准规定如何默认导出和导入模块呢?
➢ 导出:export default {}
➢ 导入:import 变量名 from '模块名或路径'
2. 如何让 Node.js 切换模块标准为 ECMAScript?
➢ 运行模块所在文件夹,新建 package.json 并设置
➢ { "type" : "module" }
2.2 命名导出和导入

命名标准使用:

1、导出:export 修饰定义语句

2、导入:import { 同名变量 } from '模块名或路径‘

如何选择是默认导入导出还是命名导入导出?

​ 按需加载,使用命名导出和导入

​ 全部加载,使用默认导出和导入

​ 二者可以同时用
在这里插入图片描述

  • 示例

utils.js

// 导出
export const baseURL = 'http://hmajax.itheima.net'
export const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)

index.js

// 默认导入导出
import {baseURL, getArraySum} from './utils.js'
console.log(baseURL);
console.log(getArraySum([1,2,5]));

package.json

{ "type" : "module" }

本节总结

1. Node.js 支持哪 2 种模块化标准?
➢ CommonJS 标准语法(默认)
➢ ECMAScript 标准语法
2. ECMAScript 标准,命名导出和导入的语法?
➢ 导出:export 修饰定义的语句
➢ 导入:import { 同名变量 } from '模块名或路径‘
3. ECMAScript 标准,默认导出和导入的语法?
➢ 导出:export default {}
➢ 导入:import 变量名 from '模块名或路径'

六、包

1.包

包:将模块,代码,其他资料聚合成一个文件夹

包分类:

✓ 项目包:主要用于编写项目和业务逻辑

✓ 软件包:封装工具和方法进行使用

要求:根目录中,必须有 package.json 文件(记录包的清单信息)

  • 示例:package.json

在这里插入图片描述

注意:导入软件包时,默认引入该包中的 index.js 模块文件 。如果没有找到,就引入package.json文件中 main 属性指定的模块文件。

  • 案例

需求:封装数组求和函数的模块,判断用户名和密码长度函数的模块,形成成一个软件包

V:\Web\mycode\nodejs\10 package\server.js

在这里插入图片描述

总结

1. 什么是包?
➢ 将模块,代码,其他资料聚合成的文件夹
2. 包分为哪 2 类呢?
➢ 项目包:编写项目代码的文件夹
➢ 软件包:封装工具和方法供开发者使用
3. package.json 文件的作用?
➢ 记录软件包的名字,作者,入口文件等信息
4. 导入一个包文件夹的时候,导入的是哪个文件?
➢ 默认 index.js 文件,package.json文件中 main 属性指定的文件文件 —— 模块
文件夹 —— 包

2.npm

npm - 软件包管理器

npm是Node.js标准的软件包管理器。

它起初是作为下载和管理Node.js包依赖的方式(下载和管理Node.js中需要的软件包),但其现在也已成为前端JavaScript中使用的工具。

使用:

  1. 初始化清单文件 :npm init -y(得到 package.json 文件,用于记录当前项目下载过哪些软件包,有则略过此命令)

  2. 下载软件包 :npm i 软件包名称

  3. 使用软件包

  • 示例: 需求:使用 dayjs 软件包,来格式化日期时间

① 创建一个项目文件夹

② 初始化清单文件 :npm init -y ,得到 package.json 文件,用于记录当前项目下载过哪些软件包

③ npm i dayjs 命令, 从npm资源库中下载该软件包到当前项目文件夹中的node_modules文件夹中。(1) 同时npm会记录dayjs包的名字、版本号 到 package.json 文件中(具体是dependencies选项里)(2)还会生成一个package-lock.json文件,主要作用是固化下载的软件包对应的版本号。(固化原因:开发项目的过程中如果修改这个软件包,使用过的方法会有问题,为了保证当前项目可以正常运行)

④自己的项目文件中导入dayjs包 并引用方法

流程图:
在这里插入图片描述

  • 案例

V:\Web\mycode\nodejs\11 npm_use\server.js

总结

1. npm 软件包管理器作用?
➢ 下载软件包以及管理版本
2. 初始化项目清单文件 package.json 命令?
➢ npm init -y
3. 下载软件包的命令?
➢ npm i 软件包名字
4. 下载的包会存放在哪里?
➢ 当前项目下的 node_modules 中,并记录在 package.json 中
npm - 安装所有依赖

从网上找到的代码 少了 node_modules文件夹

在这里插入图片描述

项目中不包含 node_modules,不能正常运行。因为缺少依赖的本地软件包。

为什么别人不把node_modules传递给我们呢?因为,自己用 npm 下载依赖比磁盘传递拷贝要快得多。

解决:项目终端输入命令:【npm i】 (注意下载路径要对)

下载 package.json 中记录的所有软件包

BV1MN411y7 , P95

总结
1. 当项目中只有 package.json 没有 node_modules 怎么办?
➢ 当前项目下,执行 npm i 安装所有依赖软件包
2. 为什么 node_modules 不进行传递?
➢ 因为用 npm 下载比磁盘传递要快
npm - 全局软件包 nodemon

BV1MN411y7pw, P96

软件包区别:

➢ 本地软件包:当前项目内使用,封装属性和方法,存在于 node_modules

➢ 全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

nodemon 作用:替代 node 命令,检测我们编写的代码是否发生更改,然后自动重启程序

使用nodemon:

  1. 安装:npm i nodemon -g(-g 代表安装到全局环境中,因此下载的时候终端路径是什么都可以)
  2. 运行:nodemon 待执行的目标 js 文件
总结
1. 本地软件包和全局软件包区别?
➢ 本地软件包,作用在当前项目,封装属性和方法
➢ 全局软件包,本机所有项目使用,封装命令和工具
2. nodemon 作用?
➢ 替代 node 命令,检测代码更改,自动重启程序
3. nodemon 怎么用?
➢ 先确保安装 npm i nodemon -g
➢ 使用 nodemon 执行目标 js 文件

七、Node.js总结

1.Node.js 模块化:

概念:每个文件当做一个模块,独立作用域,按需加载

使用:采用特定的标准语法导出和导入进行使用
在这里插入图片描述

CommonJS 标准:一般应用在 Node.js 项目环境中

ECMAScript 标准:一般应用在前端工程化项目中

2.Node.js 包

Node.js 包:

  • 概念:把模块文件,代码文件,其他资料聚合成一个文件夹

  • 包的分类

​ 项目包:编写项目需求和业务逻辑的文件夹

​ 软件包:封装工具和方法进行使用的文件夹(一般使用 npm 管理)

​ 软件包分类:

​ ✓ 本地软件包:作用在当前项目,一般封装的属性/方法,供项目调用编写业务需求

​ ✓ 全局软件包:作用在所有项目,一般封装的命令/工具,支撑项目运行

在这里插入图片描述

3.常用命令

,然后自动重启程序

使用nodemon:

  1. 安装:npm i nodemon -g(-g 代表安装到全局环境中,因此下载的时候终端路径是什么都可以)
  2. 运行:nodemon 待执行的目标 js 文件
总结
1. 本地软件包和全局软件包区别?
➢ 本地软件包,作用在当前项目,封装属性和方法
➢ 全局软件包,本机所有项目使用,封装命令和工具
2. nodemon 作用?
➢ 替代 node 命令,检测代码更改,自动重启程序
3. nodemon 怎么用?
➢ 先确保安装 npm i nodemon -g
➢ 使用 nodemon 执行目标 js 文件

七、Node.js总结

1.Node.js 模块化:

概念:每个文件当做一个模块,独立作用域,按需加载

使用:采用特定的标准语法导出和导入进行使用

[外链图片转存中…(img-utaMSZxB-1710427561669)]

CommonJS 标准:一般应用在 Node.js 项目环境中

ECMAScript 标准:一般应用在前端工程化项目中

2.Node.js 包

Node.js 包:

  • 概念:把模块文件,代码文件,其他资料聚合成一个文件夹

  • 包的分类

​ 项目包:编写项目需求和业务逻辑的文件夹

​ 软件包:封装工具和方法进行使用的文件夹(一般使用 npm 管理)

​ 软件包分类:

​ ✓ 本地软件包:作用在当前项目,一般封装的属性/方法,供项目调用编写业务需求

​ ✓ 全局软件包:作用在所有项目,一般封装的命令/工具,支撑项目运行

[外链图片转存中…(img-4aLpJCdz-1710427561671)]

3.常用命令

在这里插入图片描述

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

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

相关文章

Python二级备考

考试大纲如下: 基本要求 考试内容 考试方式 比较希望能直接刷题,因为不懂的比较多可能会看视频。 基础操作刷题: 知乎大头计算机1-13题 import jieba txtinput() lsjieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)…

XIAO ESP32S3部署Edge Impulse模型

在上一篇文章中我们介绍了如何使用edge impulse训练一个图片分类模型并导出arduino库文件。在这篇文章中我们将介绍如何在esp32s3中部署这个训练好的图片分类模型。 添加进Arduino库 有两种方法将下载的文件添加进Arduino库。 在Arduino IDE程序中,转到项目选项卡…

✅技术社区—集成xxl-job实现定时任务的管理和执行

xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。(其中XXL是作者许雪里的简称) xxl-job是对老牌调度平台Quartz进行的封装。在开始介绍xxl-job之前我来先简单…

Jmeter —— jmeter中元件的执行顺序作用域

元件的执行顺序: 配置元件-->前置处理程序-->定时器-->取样器-->后置处理程序(除非Sampler 得 到的返回结果为空)-->断言(除非Sampler 得到的返回结果为空)-->监听器 (除非Sampler 得到…

【Redis系列】深入了解 Redis:一种高性能的内存数据库

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

微信小程序-day01

文章目录 前言微信小程序介绍 一、为什么要学习微信小程序?二、微信小程序的历史创建开发环境1.注册账号2.获取APPID 三、下载微信开发者工具1.创建微信小程序项目2.填写相关信息3.项目创建成功 四、小程序目录结构项目的主体组成结构 总结 前言 微信小程序介绍 微信小程序&…

新 树莓派4B 温湿度监测 基于debian12的树莓派OS

前言 本文旨在完成通过外接温湿度传感器至树莓派使得树莓派不断记录并存储温湿度数据 这个领域有很多文章,但是部分文章已经缺乏了时效性,在最新系统不适用,本文目前适用 硬件 硬件连接 温湿度传感器常选用DHT11和DHT22,淘宝…

HelpLook AI 升级!一键生成SEO设置关键要素

| 现代SEO营销为何选择与AI同行 众多企业面临SEO优化日趋复杂的挑战,投入的时间和资源不断攀升。然而,HelpLook利用AI技术,一键完成SEO关键词和描述的生成,无需额外付费或繁琐操作,轻松提升网站曝光和点击率&#xff…

Android 学习之追踪应用的安装情况

先上结论,急用的话直接看结论 结论一、借助 API 读取安装信息,然后上报二、借助手动埋点,然后上报三、对比 前提过程 结论 一、借助 API 读取安装信息,然后上报 通过 PackageManager 的 API,我们可以得知自身应用安装…

【SSM】任务列表案例 基本CRUD SSM整合

文章目录 一、案例功能预览二、接口分析三、前端工程导入四、后端程序实现和测试4.1 准备4.2 功能实现4.2.1 分页查询显示4.2.2 添加计划4.2.2 删除计划4.2.3 修改计划 4.3 前后联调 一、案例功能预览 Github 地址 : ssm-integration-part 二、接口分析 学习计划…

【话题】2024年AI辅助研发趋势,有那些应用领域

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】系列文章,这一次的话题是《2024年AI辅助研发趋势》 目录 背景概念实践医药领域汽车设计领域展望未来文章推荐 背景 随着人工智能技术的持续发展与突破,2024年AI辅…

BI数据分析案例详解:零售人货场分析该怎么做?

在当今快节奏、高竞争的商业环境中,人货场分析已成为企业成功的关键因素之一。科技的进步和数据的日益丰富使得企业对人流、货物流和场地布局的深入洞察变得愈发重要。通过科学的人货场分析,企业能更好地理解顾客行为、优化供应链、提高运营效率&#xf…

【wine】WINEDEBUG 分析mame模拟器不能加载roms下面的游戏 可以调整参数,快速启动其中一个游戏kof98

故障现象,MAME启动后,游戏都没有识别 添加日志输出,重新启动wine #!/bin/bashexport WINEPREFIX$(pwd)/.wine export WINESERVER$(pwd)/bin/wineserver export WINELOADER$(pwd)/bin/wine export WINEDEBUG"file,mame,warn,err"…

加速渲染:Blender与在线渲染农场的结合

​在数字艺术和三维设计的世界里,Blender软件因其强大的功能和灵活性而广受欢迎。然而,随着项目复杂性的增加,渲染时间也随之增长,成为艺术家和设计师面临的一大挑战。在线渲染农场的出现,为这一问题提供了革命性的解决…

C语言例:(m=a==b)||(n=a==b);求解m,n的值

题目&#xff1a;设int a0,b0,m0,n0;执行语句(mab)||(nab);求解m,n的值。 #include<stdio.h> int main(void) {int a0,b0,m0,n0;(mab)||(nab);printf("m%d\n",m);printf("n%d\n",n);return 0; } 优先级: () 优先 优先 a b -->为真&am…

【软件测试面试】银行项目测试面试题+答案(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试题&#xff1…

代码随想录算法训练营第二十三天 | 77. 组合

回溯 77. 组合 题目链接&#xff1a;https://leetcode.cn/problems/combinations/ 文章讲解&#xff1a;https://programmercarl.com/0077.%E7%BB%84%E5%90%88.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ti4y1L7cv/ class Solution { private:vector<…

打卡学习kubernetes——了解五种控制器类型

目录 1 Deployment控制器 2 StatefulSet控制器 3 DaemonSet控制器 4 Job控制器 5 CronJob控制器 1 Deployment控制器 Deployment为Pod和Replica Set&#xff08;下一代Replication Controller&#xff09;提供声明式更新。 Deployment运行无状态应用&#xff0c;一般情况…

圈子社交系统-多人语音-交友-陪玩-活动报名-商城-二手论坛-源码交付,支持二开!

圈子小程序适用于多种场景&#xff0c;涵盖了各个领域的社交需求。以下是一些常见的适用场景&#xff1a; 兴趣社区&#xff1a; 用户可以加入自己感兴趣的圈子&#xff0c;与志同道合的人一起讨论交流&#xff0c;分享经验和知识。 行业交流&#xff1a; 各个行业可以建立自…

突发想法2:浏览器的缓存有什么作用?为什么有了缓存,一开始较快,缓存多了打开某些网站会变慢?

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、问题二、解决1、为什么第一次打开时那么慢&#xff…