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

Node.js常用知识

Nodejs

总结Node.js基础知识,便于定期回顾

1、fs

文件写入

1、require(‘fs’)

2、fs.writeFile()

3、fs.appendFile()

4、fs.createwriteStream() //流式写入

ws.write()

文件读取

1、fs.readFile(‘’,(err,data)=>{

})

const fs=require('fs')
fs.readFile("D:/Node/Data.txt",(err,data)=>{console.log(data.toString())
})

2、流式读取

const rs=fs.createReadStream('./观书有感.txt')
rs.on('data',chunk=>{console.log(chunk)
})
rs.on('end',()=>{console.log("读取完成");
})

3、边取边存。

const fs=require('fs');const rs=fs.createReadStream('./观书有感.txt');
const ws=fs.createWriteStream('./观书有感2.txt');rs.on('data',chunk=>{ws.write(chunk);
})rs.on('end',()=>{console.log('执行完成')
})

也可以

rs.pipe(ws)

3、内存占用大小

console.log(process.memoryUsage)

4、文件重命名和移动

fs.rename('./座右铭.txt','./论语.txt',err=>{console.log(完成);
});

5、删除文件

//方法一:使用异步回调方法 fs.unlink()
const fs = require('fs');fs.unlink('./观书有感2.txt', (err) => {if (err) {console.error("文件删除失败:", err);return;}console.log("文件删除成功");
});
//方法二:使用同步方法 fs.unlinkSync()
const fs = require('fs');try {fs.unlinkSync('./观书有感2.txt');console.log("文件删除成功");
} catch (err) {console.error("文件删除失败:", err);
}

6、创建对象

const fs=require('fs');
fs.mkdir('./html',err=>{console.log("创建成功");
});

7、递归创建文件

fs.mkdir('./A/B/C',{recursive:true},err=>{console.log("创建成功");
})//删除文件
fs.rm('./')

8、读取文件夹

fs.readdir('./A',(eer,data)=>{if(eer){console.log("读取失败");return;}console.log(data);
});

9、删除文件夹

//递归删除
fs.rmdir('./A',{recursive:true},err=>{})//建议使用
fs.rm('./A',{recursive:true},err=>{})

10、查看资源状态

fs.stat('./A',(err,data)=>{    //旧方法fs.existsif(err){console.log('操作失败')return;}console.log(data)
})

11、__dirname

绝对路径 ’全局变量‘ 保存的是所在文件的所在目录的绝对路径。

fs.writeFile(__dirname+'/index.html')

12、Path

const path=require('path')
console.log(path.resolve(__dirname,'./index.html'));  //该方法将一些的 路径/路径段 解析为绝对路径
console.log(__filename)  //打印文件的绝对路径;
path.parse(str) //解析路径并返回对象
path.basename() 获取路径的基础名称
path.dirname() 获取路径的目录名
path.extname() 获取路径的扩展名

2、HTTP

1、响应状态码

200 请求成功

403 禁止请求

404 找不到资源

500 服务器内部错误

1xx 信息响应

2xx 成功响应

3xx 重定向消息

4xx 客户端错误响应

5xx 服务端错误响应

2、本地回环

127.0.0.1

3、Http协议默认端口是80,HTTPS协议默认端口是443,HTTP服务开发常用端口有3000,8080,8090,9000

4、获取请求HTTP报文

const http=require('http')
const server=http.createServer((request,response)=>{response.setHeader('content-type','text/html;charset=utf-8');//获取请求的方法console.log(request.method)//获取请求的URlconsole.log(request.url)//只包含url中的路径与查询字符串//获取http协议版本号console.log(request.httpVersion);//获取请求头console.log(request.headers)response.end('你好');
})
server.listen(9000,()=>{console.log("服务已经启动...");
})

res.writeHead(200, { ‘Content-type’: ‘text/html;charset=utf-8’ })

response.setHeader(‘content-type’,‘text/html;charset=utf-8’);

express框架中用req.body接收post客户端的数据,req.query接收get请求

http中

req.setEncoding('utf-8');
req.on('data',function(data){console.log(data)
})
req.on('end')

5、获取Http报文中的URL路径与查询字符串

const http=require('http')
const url=require('url');
const server=http.createServer((request,response)=>{let res=url.parse(request.url,true) //获取urllet pathname=res.pathname         //获取url的名称let keyword=res.query.keyword; //获取url的keywordconsole.log(keyword)response.end('url')
})
server.listen(9000,()=>{console.log("服务已经启动...");
})

推荐使用的方法

const http=require('http')
const server=http.createServer((request,response)=>{//实例化URL的对象let url=new URL(request.url,'http://127.0.0.1');//输出路径console.log(url.pathname);//输出keyword查询字符串console.log(url.searchParams.get('keyword'));response.end('url');
})
server.listen(9000,()=>{console.log("服务已经启动...");
})

6、练习 request

const http=require('http')
const server=http.createServer((request,response)=>{response.setHeader('content-type','text/html;charset=utf-8')let {method}=request;let {pathname}=new URL(request.url,'http://127.0.0.1')console.log(method);console.log(pathname);if(method=='GET'&&pathname=='/login'){response.end("登陆页面")}else if(method=='GET'&&pathname=='/reg'){response.end('注册页面')}else{response.end('啥也没有')}
})
server.listen(9000,()=>{console.log("服务已经启动")
})

7、练习、response

response.end 有且只有一个,可以使用response.write写很多内容

8、读取html

const http=require('http')
const fs=require('fs')
const server=http.createServer((request,response)=>{response.setHeader('content-type','text/html;charset=utf-8');let html=fs.readFileSync('./test.html');response.end(html)
});
server.listen(9000,()=>{console.log('服务器启动')
})

9、读取css

const http = require('http')
const fs = require('fs')
const server = http.createServer((request, response) => {//response.setHeader('content-type', 'text/html;charset=utf-8');let {pathname}=new URL(request.url,'http://127.0.0.1');if(pathname=='/'){console.log(pathname)let html = fs.readFileSync(__dirname+'/test.html');response.end(html)}else if(pathname=='/table.css'){console.log(pathname)let css = fs.readFileSync(__dirname+'/table.css');response.end(css)}else{response.statusCode=404;response.end(`<h1>404 not found</h1>`)}});
server.listen(9000, () => {console.log('服务器启动')
})

10、静态文件搭建

const http = require('http')
const fs = require('fs')
const server = http.createServer((request, response) => {//response.setHeader('content-type', 'text/html;charset=utf-8');let {pathname}=new URL(request.url,'http://127.0.0.1');let filepath=__dirname+pathname;fs.readFile(filepath,(err,data)=>{if(err){response.statusCode=500;response.end('文件读取是被~~');return;}response.end(data)})});
server.listen(9000, () => {console.log('服务器启动')
})

10、mime 媒体类型

加不加都可以,加上更规范

let mimes={html:'text/html',css:'text/css',js:'text/javascripts',png:'image/png',jpg:'image/jpeg',gif:'image/gif',mp4:'video/mp4',mp3:'audio/mpeg',json:'application/json'
}
fs.readFile(filepath,(err,data)=>{if(err){response.statusCode=500;response.end('文件读取是被~~');return;}//获取文件的后缀名let ext=path.extname(filepath);let type=mimes[ext]if(type){response.setHeader('content-type',type+';charset=utf-8') //同时解决乱码问题}else{response.setHeader('content-type','application/octet-stream');}///响应文件内容response.end(data)})

3、模块化


1、暴露数据

function tiemo(){console.log('贴膜...');
}
function Fun(){console.log('yes...');
}
//暴露数据方法一
//exports.tiemo=tiemo;
//exports.Fun=Fun;
//module.exports可以暴露任何值
module.exports={tiemo,Fun
}///获取数据//导入模块
const ms=require('./me.js');
ms.tiemo();
ms.Fun();

2、package.json

{"main":"./app.js"
}const me=require('./mode')  //mode是一个文件夹 package.json在文件夹下面
console.log(me)

如果package.json不存在,则会尝试导入文件夹下的index.js和index.json

4、包管理工具


1、npm初始化

npm init

2、npm资源网址

npm (npmjs.com)

3、生产依赖和开发依赖

npm i -S uniq   ------npm i --save uniq          生产
npm i -D less   ------npm i --save-dev less      开发

4、全局安装包的位置

使用 npm root -g 查看

5、npm i

刚拉下来的项目是不能启动的,首先需要npm i一下

6、删除包

npm r 包名

7、配置别名

{"name": "test","version": "1.0.0","description": "学习npm","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","server":"node ./Npms/.index.js" ================在这个位置"start": "node ./Npms/index.js"},"author": "","license": "ISC"
}

后面运行的话,使用npm run server

如果是start,使用npm start。

8、cnpm

npmmirror 镜像站

9、配置npm淘宝镜像

1、安装nrm

npm i -g nrm

2、修改镜像

nrm use taobao

3、检查是否配置成功

npm config list

nrm ls 可以列出支持的镜像地址

10 、yarn

安装

npm i -g yarn

配置镜像

11、报错

如果在运行期间,报错 (因为在此系统上禁止运行脚本)。

解决方法:管理员打开powershell ,运行set-ExecutionPolicy RemoteSigned 点击Y确认。

这是更改计算机的执行策略。

12、 查看配置

yarn config list

13、包管理工具不能混用

14、如果想发布包的话

要用 nrm use npm 修改回来镜像

11、NVM

可以很方便的帮我们切换nodejs版本

5、Express


 npm install express

初体验

//1、导入express
const express=require('express')//2.创建应用对象
const app=express()//3、创建路由
app.get('/home',(req,res)=>{res.end('hello express')
})
//4、监听端口,启动服务
app.listen(3000,()=>{console.log('服务已经启动,端口3000正在监听')
})
app.post('/login',(req,res)=>{res.end('Post')
})
app.all('/test',(req,res)=>{console.log("执行")res.end('执行')
})
//最后找不到 就执行这个
app.all('*',(req,res)=>{console.log("执行")res.end('执行')
})
app.get('/request',(req,res)=>{console.log(req.httpVersion);console.log(req.method)console.log(req.headers);console.log(req.url)console.log(req.path)console.log(req.query)console.log(req.ip)//获取请求头console.log(req.get('host'))res.end('hello express')
})

2、路由参数获取

app.get('/:id.html',(req,res)=>{console.log(req.params.id)  //params相当于所有参数res.end("shang pin lie biao")
})

3、express 对于json的读取

//1、导入express
const express=require('express')
const {singers}=require('./singer.json')   //使用解构赋值可以使导出的js变成一个对象,而不是数组。
//2.创建应用对象
const app=express()
console.log(singers)
app.get('/request',(req,res)=>{console.log(req.httpVersion);console.log(req.method)console.log(req.headers);console.log(req.url)console.log(req.path)console.log(req.query)console.log(req.ip)//获取请求头console.log(req.get('host'))res.end('hello express')
})app.get('/ .html',(req,res)=>{let {id}=req.params;let result =singers.find(item=>{if(item.id===Number(id)){return true;}});console.log(result)
})//4、监听端口,启动服务
app.listen(3000,()=>{console.log('服务已经启动,端口3000正在监听')
})

4、一般响应设置

 //原生响应res.statusCode=404;res.statusMessage='love';res.setHeader('xxx','yyy')res.write('hello express')  //的返回数据是没有经过处理的,原封不动的返回原数据,所见即所得.与res.end成对出现。//可以执行多次res.end('response')       //不允许多次输入//express响应res.status(500);res.set('aaa','bbb');res.send('你好')res.status(500).set('abc','def').send('thisisok')

5、

app.get('/home',(req,res)=>{//跳转响应 重定向//res.redirect('https://www.baidu.com/')//下载响应//res.download(__dirname+'/singer.json');//Json响应res.json({name:'ok',slogin:'YuYu'})//响应文件内容res.sendFile(__dirname+'/test.html');
})

6、中间件的使用

const express=require('express');
const fs=require('fs')
const app=express();
const path=require('path')
function Midd(req,res,next){let {url,ip}=req;fs.appendFileSync(path.resolve(__dirname,'./access.log'),`${url}  ${ip}\r\n`)next();
}
app.use(Midd)  //这种是作用全局
app.get('/home',(req,res)=>{res.send("前台首页")
})
app.get('login',(req,res)=>{res.send("后台首页")
})

第二种 类似于局部使用

const { application } = require('express');
const express=require('express')
const app=express();
app.get('/home',(req,res)=>{res.send('首页')
})
function Mindd(req,res,next){if(req.query.code==='521'){next()}else{res.send('code有问题')}
}
app.get('/admin',Mindd,(req,res)=>{res.send('登陆界面')
})
app.get('/setting',Mindd,(req,res)=>{res.send('设置界面')
})
app.listen(3000,()=>{console.log('服务器监听中。')
})

7、静态资源中间件

//静态资源中间件设置
app.use(express.static(__dirname+'/public'))

问题 路由和静态资源的优先问题

当app.get(‘/’)时,直接http://127.0.0.1:3000/可以访问,也可以访问index.html, 他俩的优先级是啥。

按照自上而下的顺序。

路由响应动态资源,静态资源中间件响应静态资源。

8、请求体

const express=require('express');
const bodyParser = require('body-parser')
const app=express();
// create application/json parser
//const jsonParser = bodyParser.json()// create application/x-www-form-urlencoded parser
const urlencodedParser = bodyParser.urlencoded({ extended: false })app.get('/login',(req,res)=>{res.sendFile(__dirname+'/form.html')
})
app.post('/login',urlencodedParser,(req,res)=>{console.log(req.body)res.send('获取用户的数据')
})
app.listen(3000,()=>{console.log('服务器运行中...')
})

9、防盗链

防止外部网站盗用本网站内容

const express=require('express')const app=express();app.use((req,res,next)=>{let referer=req.get('referer');if(referer){let url=new URL(referer);let hostname=url.hostname;if(hostname!=='127.0.0.1'){res.status(404).send('<h1>404 Not Found</h1>')return;}}next();
})app.use(express.static(__dirname+'/public'));app.listen(3000,()=>{console.log("服务器已经启动,端口3000.。。")
})

10、路由的模块化

const express = require('express')
const adminRouter=require('./routes/adminRouter');
const loginRouter=require('./routes/loginRouter')
const app = express();
//设置
app.use(adminRouter);
app.use(loginRouter);
app.listen(3000, () => {console.log("服务器执行。。。。")
})
---------------------------------------------------
const express =require('express');
const router=express.Router();
router.get('/login', (req, res) => {console.log('login执行')res.send('login执行');
})
module.exports=router;

11、模版引擎

模版引擎是分离用户界面和业务数据的一种技术

相关文章:

Node.js常用知识

Nodejs 总结Node.js基础知识&#xff0c;便于定期回顾 1、fs 文件写入 1、require(‘fs’) 2、fs.writeFile() 3、fs.appendFile() 4、fs.createwriteStream&#xff08;&#xff09; //流式写入 ws.write() 文件读取 1、fs.readFile(‘’,(err,data)>{ }) const …...

Block Blaster Online:免费解谜游戏的乐趣

Block Blaster Online 是一款免费的在线解谜游戏&#xff0c;它将挑战你的思维和反应能力&#xff01;在这里&#xff0c;你可以匹配五彩缤纷的方块&#xff0c;创造出令人惊叹的组合&#xff0c;享受无尽的解谜乐趣。无需安装&#xff0c;点击即可开始&#xff0c;加入全球数百…...

4 前置技术(下):git使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 前言...

Qwen2.5-Max:AI技术的新里程碑

随着人工智能&#xff08;AI&#xff09;技术的不断进步&#xff0c;全球各大科技公司都在竞相推出更强大的语言模型。近日&#xff0c;阿里巴巴发布了其最新的超大规模混合专家模型&#xff08;MoE&#xff09;——Qwen2.5-Max&#xff0c;这一成果不仅在多个基准测试中超越了…...

PyQt4学习笔记1】使用QWidget创建窗口

目录 一、创建一个简单的 QWidget 窗口 二、设置窗口属性 1. 设置窗口标题 2. 设置背景颜色 3. 设置窗口大小和位置 4. 设置窗口模式 5. 关闭窗口 6. QWidget 及其子控件的样式 三、添加控件到 QWidget 1. 添加按钮 2. 添加标签 3. 添加文本框 4. 控件布局管理 四、自定义样式 …...

九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)

九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位) 文章目录 九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位)1. RDB 概述2. RDB 持久化执行流程3. RDB 的详细配置4. RDB 备份&恢…...

Redis --- 秒杀优化方案(阻塞队列+基于Stream流的消息队列)

下面是我们的秒杀流程&#xff1a; 对于正常的秒杀处理&#xff0c;我们需要多次查询数据库&#xff0c;会给数据库造成相当大的压力&#xff0c;这个时候我们需要加入缓存&#xff0c;进而缓解数据库压力。 在上面的图示中&#xff0c;我们可以将一条流水线的任务拆成两条流水…...

使用VCS对Verilog/System Verilog进行单步调试的步骤

Verilog单步调试&#xff1a; System Verilog进行单步调试的步骤如下&#xff1a; 1. 编译设计 使用-debug_all或-debug_pp选项编译设计&#xff0c;生成调试信息。 我的4个文件&#xff1a; 1.led.v module led(input clk,input rst_n,output reg led );reg [7:0] cnt;alwa…...

Go语言中结构体字面量

结构体字面量&#xff08;Struct Literal&#xff09;是在 Go 语言中用于创建和初始化结构体实例的一种语法。它允许你在声明结构体变量的同时&#xff0c;直接为其字段赋值。结构体字面量提供了一种简洁、直观的方式来创建结构体对象。 结构体字面量有两种主要形式&#xff1…...

编程AI深度实战:大模型哪个好? Mistral vs Qwen vs Deepseek vs Llama

​​ 系列文章&#xff1a; 编程AI深度实战&#xff1a;私有模型deep seek r1&#xff0c;必会ollama-CSDN博客 编程AI深度实战&#xff1a;自己的AI&#xff0c;必会LangChain-CSDN博客 编程AI深度实战&#xff1a;给vim装上AI-CSDN博客 编程AI深度实战&#xff1a;火的编…...

19C RAC在vmware虚拟机环境下的安装

RAC安装规划 ===IP== ORA19C01 public ip : 192.168.229.191 heatbeat : 192.168.0.1 vip : 192.168.229.193 ORA19C02 public ip :192.168.229.192 heatbeat : 192.168.0.2 vip : 192.168.229.194 scan ip 192.168.229.195 hosts: echo "192.168.229…...

MongoDB 查询文档

MongoDB 查询文档 引言 MongoDB 是一个功能强大的文档型数据库,它使用 JSON 格式存储数据,并提供了灵活的查询机制。本文将深入探讨 MongoDB 的查询文档,包括查询基础、查询语法、查询优化以及一些高级查询技巧。 查询基础 MongoDB 的查询语句以 find() 方法开始,它允许…...

了解 ALV 中的 field catalog (ABAP List Viewer)

在 ABAP 中&#xff0c;字段目录是使用 ALV &#xff08;ABAP List Viewer&#xff09; 定义内部表中的数据显示方式的关键元素。它提供对 ALV 中显示的字段的各种属性的控制&#xff0c;例如列标题、对齐方式、可见性、可编辑性等。关键概念&#xff1a; Field Catelog 字段目…...

【C++STL标准模板库】二、STL三大组件

文章目录 1、容器2、算法3、迭代器 二、STL三大组件 1、容器 容器&#xff0c;置物之所也。 研究数据的特定排列方式&#xff0c;以利于搜索或排序或其他特殊目的&#xff0c;这一门学科我们称为数据结构。大学信息类相关专业里面&#xff0c;与编程最有直接关系的学科&…...

【高级篇 / IPv6】(7.2) ❀ 04. 在60E上配置ADSL拨号宽带上网(IPv4) ❀ FortiGate 防火墙

【简介】除了单位用户以外&#xff0c;大部分个人用户目前使用的仍然是30E、50E、60E系列防火墙&#xff0c;固件无法达到目前最高版本7.6&#xff0c;这里以最常用的60E为例&#xff0c;演示固件版本7.2下实现ADSL拨号宽带的IPv6上网。由于内容比较多&#xff0c;文章分上、下…...

基础IOIO

1.理解文件 1.侠义理解 文件是在从盘上的。磁盘是永久性存储介质。磁盘是外设。磁盘上对文件的所有操作&#xff0c;都是对外设的输入输出IO。 2.广义理解 linux下一切皆文件&#xff08;键盘&#xff0c;显示器&#xff0c;网卡&#xff0c;磁盘&#xff09; 3.文件操作的…...

starrocks最佳实践、行业实践

最佳实践 starrocks最佳实践 最佳实践集合 Bitmap索引适用场景和最佳实践 行业实践 行业实践...

详解CSS `clear` 属性及其各个选项

详解CSS clear 属性及其各个选项 1. clear: left;示例代码 2. clear: right;示例代码 3. clear: both;示例代码 4. clear: none;示例代码 总结 在CSS布局中&#xff0c;clear 属性是一个非常重要的工具&#xff0c;特别是在处理浮动元素时。本文将详细解释 clear 属性及其各个选…...

MVC、MVP和MVVM模式

MVC模式中&#xff0c;视图和模型之间直接交互&#xff0c;而MVP模式下&#xff0c;视图与模型通过Presenter进行通信&#xff0c;MVVM则采用双向绑定&#xff0c;减少手动同步视图和模型的工作。每种模式都有其优缺点&#xff0c;适合不同规模和类型的项目。 ### MVVM 与 MVP…...

【大数据技术】教程03:本机PyCharm远程连接虚拟机Python

本机PyCharm远程连接虚拟机Python 注意:本文需要使用PyCharm专业版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso写在前面 本文主要介绍如何使用本地PyCharm远程连接虚拟机,运行Python脚本,提高编程效率。 注意: …...

wsl+phpstorm+xdebug|windows子系统配置phpstorm开发调试|断点调试

安装wsl 安装apache php 安装xdebug扩展&#xff0c;并配置 这里是通过宝塔9.4面板安装的xdebug3.0 [xdebug] xdebug.modedebug xdebug.start_with_requesttrue xdebug.discover_client_hosttrue xdebug.client_host127.0.0.1配置PHPSTORM 注意&#xff1a;新建服务器一定要…...

如可安装部署haproxy+keeyalived高可用集群

第一步&#xff0c;环境准备 服务 IP 描述 Keepalived vip Haproxy 负载均衡 主服务器 Rip&#xff1a;192..168.244.101 Vip&#xff1a;192.168.244.100 Keepalive主节点 Keepalive作为高可用 Haproxy作为4 或7层负载均衡 Keepalived vip Haproxy 负载均衡 备用服务…...

Linux——文件与磁盘

1. 磁盘结构 磁盘在我们的计算机中有着重要的地位&#xff0c;当文件没有被打开时其数据就存储在磁盘上&#xff0c;要了解磁盘的工作原理先要了解磁盘的结构。 1.1 磁盘的物理结构 以传统的存储设备机械硬盘为例&#xff0c;它通过磁性盘片和磁头来读写数据。磁盘内部有多个旋…...

Maven jar 包下载失败问题处理

Maven jar 包下载失败问题处理 1.配置好国内的Maven源2.重新下载3. 其他问题 1.配置好国内的Maven源 打开⾃⼰的 Idea 检测 Maven 的配置是否正确&#xff0c;正确的配置如下图所示&#xff1a; 检查项⼀共有两个&#xff1a; 确认右边的两个勾已经选中&#xff0c;如果没有请…...

Qt中的UIC、MOC、RCC宏定义说明

在Qt6新建工程的时候&#xff0c;CMakeLists.txt中会默认带有UIC&#xff0c;MOC&#xff0c;RCC的3个宏定义。 set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) uic(User Interface Compiler)&#xff0c;用户界面编译器&#xff0c;将根据.ui文件生成相…...

SQLite Update 语句详解

SQLite Update 语句详解 SQLite 是一款轻量级的数据库管理系统&#xff0c;以其简单、易用和高效的特点在全球范围内得到了广泛的应用。在 SQLite 中&#xff0c;UPDATE 语句是用于修改数据库表中记录的常用命令。本文将详细解析 SQLite 的 UPDATE 语句&#xff0c;包括其语法…...

理解PLT表和GOT表

1 简介 现代操作系统都是通过库来进行代码复用&#xff0c;降低开发成本提升系统整体效率。而库主要分为两种&#xff0c;一种是静态库&#xff0c;比如windows的.lib文件&#xff0c;macos的.a&#xff0c;linux的.a&#xff0c;另一种是动态库&#xff0c;比如windows的dll文…...

InfluxDB 2.0 到 3.0 技术架构演进与性能分析

架构演进 关键技术变化&#xff1a;InfluxDB 3.0 相比 2.0 在架构上进行了重大的技术升级。首先&#xff0c;核心代码由 Go 语言重写为 Rust&#xff0c;以利用 Rust 更高的性能和内存安全特性&#xff0c;从而显著提升数据库的性能、可靠性和安全性。其次&#xff0c;引入列式…...

介绍一下Mybatis的底层原理(包括一二级缓存)

表面上我们的就是Sql语句和我们的java对象进行映射&#xff0c;然后Mapper代理然后调用方法来操作数据库 底层的话我们就涉及到Sqlsession和Configuration 首先说一下SqlSession&#xff0c; 它可以被视为与数据库交互的一个会话&#xff0c;用于执行 SQL 语句&#xff08;Ex…...

docker gitlab arm64 版本安装部署

前言&#xff1a; 使用RK3588 部署gitlab 平台作为个人或小型团队办公代码版本使用 1. docker 安装 sudo apt install docker* 2. 获取arm版本的gitlab GitHub - zengxs/gitlab-arm64: GitLab docker image (CE & EE) for arm64 git clone https://github.com/zengxs…...

7、怎么定义一个简单的自动化测试框架?

定义一个简单的自动化测试框架可以从需求理解、框架设计、核心模块实现、测试用例编写和集成执行等方面入手&#xff0c;以下为你详细介绍&#xff1a; 1. 明确框架需求和范围 确定测试类型&#xff1a;明确框架要支持的测试类型&#xff0c;如单元测试、接口测试、UI 测试等…...

linux组管理

创建组&#xff1a;groupadd &#xff08;创建组命令的详细使用&#xff1a;如何创建组-CSDN博客&#xff09; 修改组&#xff1a;groupmod &#xff08;修改组命令的详细使用&#xff1a;如何修改组-CSDN博客&#xff09; 组配置文件: /etc/group...

【MySQL】常用语句

目录 1. 数据库操作2. 表操作3. 数据操作&#xff08;CRUD&#xff09;4. 高级查询5. 索引管理6. 用户与权限7. 数据导入导出8. 事务控制9. 其他实用语句注意事项 如果这篇文章对你有所帮助&#xff0c;渴望获得你的一个点赞&#xff01; 1. 数据库操作 创建数据库 CREATE DATA…...

二维数组 C++ 蓝桥杯

1.稀疏矩阵 #include<iostream> using namespace std;const int N 1e4 10; int a[N][N];int main() {int n, m; cin >> n >> m;for (int i 1; i < n; i) {for (int j 1; j < m; j) {cin >> a[i][j];}}for (int j m; j > 1; j--) {for (i…...

SAP HCM 回溯分析

最近总有人问回溯问题&#xff0c;今天把12年总结的笔记在这共享下&#xff1a; 12年开这个图的时候总是不明白是什么原理&#xff0c;教程看N次&#xff0c;网上资料找一大堆&#xff0c;就是不明白原理&#xff0c;后来为搞明白逻辑&#xff0c;按照教材的数据一样做&#xf…...

MySQl的日期时间加

MySQL日期相关_mysql 日期加减-CSDN博客MySQL日期相关_mysql 日期加减-CSDN博客 raise notice 查询目标 site:% model:% date:% target:%,t_shipment_date.site,t_shipment_date.model,t_shipment_date.plant_date,v_date_shipment_qty_target;...

前部分知识复习03

一、光照模型 经验型&#xff1a; 1.Lambert光照模型 2.Phong光照模型 3.Blinn-Phong光照模型 物理型&#xff1a; 4.PBR光照模型 二、渲染路径 渲染路径&#xff1a;是为进行光照计算而设置的渲染方式 前向渲染路径顶点照明渲染路径延迟渲染路径 顶点照明渲染路径中的灯光…...

Windows图形界面(GUI)-QT-C/C++ - QT MDI Area

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、概述 二、使用场景 1. 多文档编辑器 2. 多窗口应用程序 3. 多视图应用程序 三、常见样式 1. 子窗口管理 2. 布局管理 四、属性设置 1. 添加子窗口 2. 移除子窗口 3. 设置…...

基于微信小程序的私家车位共享系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

用deepseek制作我的第一个长视频---使用AI解决尝试新领域没有经验拖延的问题!

&#xff08;由于技术原因&#xff0c;联网搜索暂不可用&#xff09; 制作一个高质量的Vlog或生活记录长视频&#xff0c;即使零基础也能通过系统规划实现&#xff01;以下是为你定制的「从零到成品」全流程指南&#xff0c;结合叙事逻辑、剪辑技巧和效率工具&#xff0c;帮你…...

零基础学习电磁兼容(EMC)06--时域和频域

大部分工程师很熟悉示波器,并使用它读取信号的频率和电压值,然而,在EMC领域,绝大多数的数据都是从频谱分析仪、测量接收机等基于频率测量的设备中读取的,因此,了解这些频率参数的含义以及与时域信号的关系,是非常重要的。 时域和频域的本质:傅里叶变换及其逆过程 如下…...

解决在使用自己的数据集在 Ultralytics 上运行 RT - DETR 模型时显存爆满的问题

在使用自己的数据集在 Ultralytics 上运行 RT - DETR 模型时&#xff0c;显存爆满是一个常见问题。以下是一系列可以采取的步骤和方法&#xff0c;帮助你解决这个问题&#xff0c;同时使用 Ultralytics 的官方源码。 1. 环境准备 确保你已经安装了 Ultralytics 库&#xff0c…...

Android学习19 -- 手搓App

1 前言 之前工作中&#xff0c;很多时候要搞一个简单的app去验证底层功能&#xff0c;Android studio又过于重型&#xff0c;之前用gradle&#xff0c;被版本匹配和下载外网包折腾的堪称噩梦。所以搞app都只有找应用的同事帮忙。一直想知道一些简单的app怎么能手搓一下&#x…...

鼠标拖尾特效

文章目录 鼠标拖尾特效一、引言二、实现原理1、监听鼠标移动事件2、生成拖尾元素3、控制元素生命周期 三、代码实现四、使用示例五、总结 鼠标拖尾特效 一、引言 鼠标拖尾特效是一种非常酷炫的前端交互效果&#xff0c;能够为网页增添独特的视觉体验。它通常通过JavaScript和C…...

【CSS】什么是响应式设计?响应式设计的基本原理,怎么做

在当今多设备、多屏幕尺寸的时代&#xff0c;网页设计面临着前所未有的挑战。传统的固定布局已无法满足用户在不同设备上浏览网页的需求&#xff0c;响应式设计&#xff08;Responsive Web Design&#xff09;应运而生&#xff0c;成为网页设计的趋势和标准。本文将深入探讨响应…...

单机性能调优中的程序优化

目录 一、系统框架的选择 二、程序优化 表单压缩 局部刷新 仅取所需 逻辑清晰 谨慎继承 程序算法优化 批处理 延迟加载 防止内存泄漏 减少大对象引用 防止争用死锁 存储过程 内存分配 并行 异步 缓存 单机优化顾名思义就是我们要在单机上对系统的性能进行调优…...

2.4学习总结

洛谷1305代码 #include<stdio.h> #include<stdlib.h> struct treenode {char val;struct treenode* left;struct treenode* right; }; struct treenode* createnode(char val) {struct treenode* node (struct treenode*)malloc(sizeof(struct treenode));node-&…...

小程序-视图与逻辑

前言 1. 声明式导航 open-type"switchTab"如果没有写这个&#xff0c;因为是tabBar所以写这个&#xff0c;就无法跳转。路径开始也必须为斜线 open-type"navigate"这个可以不写 现在开始实现后退的效果 现在我们就在list页面里面实现后退 2.编程式导航…...

突破封闭集限制:OvSGTR引领开放词汇场景图生成新纪元

场景图生成&#xff08;Scene Graph Generation, SGG&#xff09;&#xff0c;这个领域&#xff0c;旨在通过解析图像来构建描述性的结构化图表&#xff0c;不仅能够识别图片中的物体&#xff0c;还能捕捉它们之间的相互关系。 这种能力对于诸如图像字幕、视觉问答以及图像生成…...

C语言基础之【程序流程结构】

C语言基础之【程序流程结构】 概述选择结构if语句if…else语句小练习&#xff1a;“三只小猪体重比较” if…else if…else语句小练习&#xff1a;“三只小猪体重比较” 三目运算符小练习&#xff1a;“三只小猪体重比较” switch语句小练习&#xff1a;**“成绩等级判断器”**…...