搭建Node.js后端
从头开始搭建一个Node.js后端,并实现查询历史数据的功能,下面是详细的步骤说明,包括环境配置、项目初始化、代码编写、以及服务器启动。
1. 环境配置
1.1 安装 Node.js 和 npm
首先,你需要在你的电脑上安装 Node.js 和 npm(Node.js 包管理器)。你可以从 Node.js 官方网站 下载并安装最新的 LTS 版本。
-
验证安装:安装完成后,可以通过命令行验证安装是否成功。
node -v npm -v
这两个命令会输出 Node.js 和 npm 的版本号。
2. 初始化 Node.js 项目
2.1 创建项目目录
在命令行中,导航到你希望创建项目的目录,然后创建一个新的项目目录。
mkdir wechat-miniprogram-server cd wechat-miniprogram-server
2.2 初始化 npm 项目
在项目目录中运行以下命令来初始化一个新的 npm 项目。这会创建一个 package.json
文件,用于管理项目的依赖和配置。
npm init -y
-y
参数会使用默认配置初始化项目。如果你想手动设置项目名称、版本等信息,可以省略 -y
参数并按提示输入相关信息。
3. 安装 Express 框架
3.1 安装 Express
Express 是一个简洁且灵活的 Node.js Web 应用框架,用于处理 HTTP 请求和构建 RESTful API。使用以下命令安装 Express:
npm install express --save
--save
参数会将 Express 添加到 package.json
的依赖项中。
4. 编写服务器代码
4.1 创建服务器文件
在项目根目录下创建一个 server.js
文件,这是你的服务器主文件。
type nul > server.js
4.2 编写服务器代码
在 server.js
中编写以下代码。这段代码创建了一个基本的 Express 服务器,并定义了一个简单的 API 接口用于查询历史数据。
const express = require('express'); const app = express(); // 解析 JSON 请求体 app.use(express.json()); // 模拟数据 const mockData = [ { id: 1, title: '历史记录1', date: '2024-08-20' }, { id: 2, title: '历史记录2', date: '2024-08-19' }, { id: 3, title: '历史记录3', date: '2024-08-18' }, { id: 4, title: '历史记录4', date: '2024-08-17' } ]; // 查询历史数据接口 app.post('/api/search', (req, res) => { const query = req.body.query.toLowerCase(); const result = mockData.filter(item => item.title.toLowerCase().includes(query)); res.json(result); }); // 启动服务器 const PORT = 3000; app.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); });
5. 启动服务器
5.1 启动服务器
在命令行中,确保你位于项目根目录,然后使用以下命令启动服务器:
node server.js
如果你看到如下输出,说明服务器启动成功:
Server running on http://localhost:3000
6. 测试 API 接口
6.1 使用 Postman 或 cURL 测试
你可以使用 Postman 或 cURL 来测试你的 API 接口。
-
Postman 测试:
-
打开 Postman,选择
POST
请求。 -
在 URL 中输入
http://localhost:3000/api/search
。 -
在
Body
选项卡中选择raw
,并将类型设置为JSON
。 -
输入如下 JSON 数据作为请求体:
{ "query": "历史记录1" }
-
点击
Send
按钮,你应该会看到服务器返回的匹配数据。
-
-
cURL 测试:
你也可以使用 cURL 命令行工具测试:
curl -X POST http://localhost:3000/api/search -H "Content-Type: application/json" -d '{"query":"历史记录1"}'
这将返回与查询条件匹配的历史记录。
7. 部署与优化
7.1 部署到生产环境
在开发阶段,服务器运行在 localhost
上。要将其发布到互联网上,你可以使用云服务提供商(如 AWS、阿里云、腾讯云等)来部署你的 Node.js 应用。
-
配置生产环境:
- 考虑使用环境变量配置端口、数据库连接等信息。
- 使用
pm2
等工具管理你的 Node.js 进程,确保应用在服务器崩溃后自动重启。
-
安全性考虑:
- 确保你的 API 安全,包括验证用户输入,防止 SQL 注入和跨站脚本攻击。
- 使用 HTTPS 确保数据传输的安全性。
8. 项目扩展
8.1 数据库集成
目前的项目使用的是模拟数据。如果你需要集成数据库(如 MySQL、MongoDB 等),可以按照以下步骤扩展:
-
安装数据库驱动程序:
npm install mongoose # MongoDB 驱动 npm install mysql2 # MySQL 驱动
-
在服务器中配置数据库连接,并修改
search
接口逻辑,使其从数据库中查询数据。 -
使用数据库管理数据的存储、查询、更新等操作。
在 Node.js 项目中,连接数据库的代码通常写在一个独立的模块文件中,便于维护和复用。以下是详细的步骤,包括如何组织代码和在不同文件中管理数据库连接。
1. 创建数据库连接模块
首先,在项目的根目录下创建一个 db.js
文件,用于管理和导出数据库连接。
1.1 创建 db.js
文件
你可以在项目根目录下使用以下命令创建 db.js
文件:
-
在Windows上(使用命令提示符):
type nul > db.js
-
或者直接在文件资源管理器中创建:
- 打开项目根目录,右键点击空白处,选择“新建” -> “文本文档”。
- 将文件命名为
db.js
,然后修改文件扩展名为.js
。
1.2 编写数据库连接代码
在 db.js
文件中,编写并导出数据库连接池。以 MySQL 为例,代码如下:
const mysql = require('mysql'); // 创建数据库连接池
const pool = mysql.createPool(
{ host: 'localhost', // 数据库主机名或IP地址 user: 'root', // 数据库用户名 password: 'your_password', // 数据库密码 database: 'your_database', // 数据库名称 connectionLimit: 10 // 连接池中最大连接数
}); // 导出数据库连接池
module.exports = pool;
2. 在其他模块中使用数据库连接
接下来,你可以在项目的其他文件中导入并使用这个数据库连接。例如,在 server.js
中使用这个连接池来执行查询。
2.1 在 server.js
中导入 db.js
在 server.js
文件中导入刚刚创建的 db.js
模块,并使用它来查询数据库。
const express = require('express');
const pool = require('./db'); // 导入数据库连接
const app = express();
app.use(express.json());
// 示例查询接口
app.get('/api/users', (req, res) => {pool.query('SELECT * FROM users', (error, results) => { if (error) { return res.status(500).json({ error: error.message });} ?res.json(results); });
});
const PORT = 3000;
app.listen(PORT, () => {console.log(`Server running on http://localhost:${PORT}`);
});
3. 使用 db.js
管理数据库连接的好处
- 模块化代码:将数据库连接封装在一个独立模块中,使得代码更清晰,更易于管理和复用。
- 配置集中管理:可以轻松更改数据库连接配置(如主机、用户、密码等)而无需修改多个文件。
- 复用连接池:通过连接池复用数据库连接,提高性能并减少数据库连接的开销。
4. 提高代码的健壮性
为了让代码更加健壮,你可以在 db.js
中添加错误处理和日志记录等功能,确保数据库连接在生产环境中稳定运行。例如:
const mysql = require('mysql'); // 创建数据库连接池
const pool = mysql.createPool(
{
host: 'localhost',
user: 'root',
password: 'your_password',
database: 'your_database',
connectionLimit: 10
}
);
// 检查数据库连接
pool.getConnection((err, connection) => {
if (err)
{
? console.error('数据库连接失败:', err);
}
else {console.log('数据库连接成功');
?connection.release(); // 释放连接
}
});module.exports = pool;
默认情况下,MySQL 服务器的端口号是 3306
。如果你的 MySQL 服务器运行在不同的端口上,或者你想显式地指定端口号,则需要在连接配置中包含 port
选项。
这里是包括端口号的完整示例代码:
示例代码:连接 MySQL 并查询数据
const mysql = require('mysql2'); // 创建数据库连接
const connection = mysql.createConnection(
{
? host: 'localhost', // 数据库主机名或IP地址
? port: 3306, // 数据库端口号,默认为3306
? user: 'root', // 数据库用户名
? password: 'your_password', // 数据库密码
? database: 'your_database' // 数据库名称
});
// 连接到数据库
connection.connect(err => {
? if (err) {
? console.error('连接数据库失败:', err.stack);
? return;
? }
? console.log('已连接到数据库');
});
// 查询数据
connection.query('SELECT * FROM your_table', (error, results) => {
? if (error) throw error;
? console.log('查询结果:', results);
});
// 关闭连接
connection.end();
参数说明
host
: 数据库服务器的主机名或IP地址。如果 MySQL 服务器在本地运行,通常设置为localhost
。port
: MySQL 服务器的端口号,默认为3306
。如果你的 MySQL 服务器使用了自定义端口,需要在这里指定。user
: 连接到 MySQL 数据库所使用的用户名。password
: 对应的用户密码。database
: 你想要连接的数据库名称。
注意
如果你在默认端口(3306)上运行 MySQL,并且不需要显式指定端口号,你可以省略 port
选项。
要测试编写的 Node.js 应用是否能够成功连接到 MySQL 数据库并执行查询,按照以下步骤进行操作。
1. 确保 MySQL 服务器正在运行
首先,确保你的 MySQL 服务器正在运行,并且你能够使用提供的凭据(用户名、密码)登录到 MySQL 数据库。
你可以使用 MySQL 客户端工具(如 MySQL Workbench、phpMyAdmin)或者命令行工具来确认这一点。比如,使用命令行工具可以通过以下命令连接到 MySQL:
mysql -u root -p
系统会提示你输入密码,成功后应该能够进入 MySQL 命令行。
2. 编写测试代码
确保你的 db.js
文件或相关代码已经准备好,如下所示:
const mysql = require('mysql2'); // 创建数据库连接
const connection = mysql.createConnection({ host: 'localhost', port: 3306, // 如果你的MySQL服务器在不同端口上运行,请更改此值 user: 'root',password: 'your_password', database: 'your_database'
});
// 连接到数据库
connection.connect(err => {
? if (err) { console.error('连接数据库失败:', err.stack); return; }
? console.log('已连接到数据库');});
// 查询数据
connection.query('SELECT * FROM your_table', (error, results) => {
? if (error) throw error; console.log('查询结果:', results);
});
// 关闭连接
connection.end();
将 your_password
、your_database
和 your_table
替换为你实际的数据库密码、数据库名称和数据表名称。
3. 运行测试代码
在命令行中,导航到你的项目目录,然后运行该文件。假设你将代码保存在 db.js
文件中,可以运行以下命令:
node db.js
4. 观察输出结果
运行之后,你应该看到以下几种情况之一:
-
连接成功,且查询成功:
- 控制台会输出
已连接到数据库
的信息。 - 紧接着会输出查询结果,即
your_table
表中的所有数据。
示例输出:
已连接到数据库 查询结果: [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' } ]
- 控制台会输出
-
连接失败:
- 控制台会输出
连接数据库失败
,并带有详细的错误信息(如数据库凭据错误、无法连接到服务器等)。
示例输出:
连接数据库失败: Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: YES)
此时,你需要检查数据库的主机名、端口、用户名、密码等信息是否正确,并确保 MySQL 服务器正在运行。
- 控制台会输出
-
查询失败:
- 可能会成功连接数据库,但在查询数据时出现错误,比如表不存在或查询语句有误。
示例输出:
已连接到数据库 Error: ER_NO_SUCH_TABLE: Table 'your_database.your_table' doesn't exist
此时,你需要检查 SQL 查询语句以及数据库中的表名称是否正确。
5. 处理常见错误
- ER_ACCESS_DENIED_ERROR:表示用户名或密码错误,请确保提供的用户名和密码正确无误。
- ER_BAD_DB_ERROR:表示数据库不存在,请确保数据库名称正确,并且数据库已经创建。
- ER_NO_SUCH_TABLE:表示表不存在,请检查表名称,确保它已在数据库中创建。
6. 修改并重新运行
如果遇到错误,修改你的代码或数据库设置,然后再次运行 node db.js
进行测试,直到连接和查询成功为止。
相关文章:
搭建Node.js后端
从头开始搭建一个Node.js后端,并实现查询历史数据的功能,下面是详细的步骤说明,包括环境配置、项目初始化、代码编写、以及服务器启动。 1. 环境配置 1.1 安装 Node.js 和 npm 首先,你需要在你的电脑上安装 Node.js 和 npm&…...
RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集
前面两篇已经交代AI和AENC模块的配置,这篇就让这两个模块绑定起来,绑定的原因是,Aenc从Ai模块拿到采集的原始数据进行编码。 使用 RK_MPI_SYS_Bind 把 AI 节点和 AENC 进行绑定,其中 enModId 是模块 ID 号选择的是 RK_ID_AI、s32C…...
vue编写一个可拖动的模块,并可以和任何其他组件组合使用
实现思路: 使用 Vue 的自定义指令(directive)来处理拖动逻辑。在 mounted 钩子中添加鼠标事件监听器,以实现拖动功能。在 unmounted 钩子中移除鼠标事件监听器,防止内存泄漏。 代码示例: <template&g…...
Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端
文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理(1)为RestClient(2)为WebClient(3)为RestTemplate 注意 一、概述 官方文档…...
【蓝桥杯】Python算法——求逆元的两种算法
目录 零、前言一、逆元二、扩展欧几里得算法三、费马小定理四、总结 零、前言 距离25年蓝桥杯还有大概三个月时间,接下来重点应该会放在蓝桥杯备考方向,一起努力,一起加油 一、逆元 什么是逆元?这是数论中的一个基本概念。如果存…...
音频语言模型与多模态体系结构
音频语言模型与多模态体系结构 多模态模型正在创造语言、视觉和语音等以前独立的研究领域的协同效应。这些模型使用通用架构,将每种模式视为不同的“token”,使它们能够以一种与人类认知非常相似的方式联合建模和理解世界。 可以将多模态分为两个主要领域:输入空间(…...
Redis的安装和配置、基本命令
一、实验目的 本实验旨在帮助学生熟悉Redis的安装、配置和基本使用,包括启动Redis服务、使用命令行客户端进行操作、配置Redis、进行多数据库操作以及掌握键值相关和服务器相关的命令。 二、实验环境准备 1. JAVA环境准备:确保Java Development Kit …...
2025.1.17——三、SQLi regexp正则表达式|
题目来源:buuctf [NCTF2019]SQLi1 目录 一、打开靶机,整理信息 二、解题思路 step 1:正常注入 step 2:弄清关键字黑名单 1.目录扫描 2.bp爆破 step 3:根据过滤名单构造payload step 4:regexp正则注…...
flutter 常用UI组件
文章目录 1. Toast 文本提示框oktoastbot_toast2. loading 加载窗flutter_easyloading3. 对话框gex dialog4.下拉刷新pull_to_refresh5. pop 窗custom_pop_up_menu6. pin code 密码框pinput7. 二维码qr_flutter8. swiper 滚动组件carousel_sliderflutter_swiper_view9. Badge 角…...
基于微信小程序的健身房预约管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Windows远程桌面网关出现重大漏洞
微软披露了其Windows远程桌面网关(RD Gateway)中的一个重大漏洞,该漏洞可能允许攻击者利用竞争条件,导致拒绝服务(DoS)攻击。该漏洞被标识为CVE-2025-21225,已在2025年1月的补丁星期二更新中得到…...
如何学习Transformer架构
Transformer架构自提出以来,在自然语言处理领域引发了革命性的变化。作为一种基于注意力机制的模型,Transformer解决了传统序列模型在并行化和长距离依赖方面的局限性。本文将探讨Transformer论文《Attention is All You Need》与Hugging Face Transform…...
RPA赋能内容创作:打造小红书入门词语图片的全自动化流程
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 用RPA全自动化批量生产【入门词语】图片做小红书商单,保姆级工具开发教程 最近由…...
Quantum supremacy using a programmable superconducting processor 全文翻译,配公式和图
2019年,谷歌的量子霸权文章, 原文链接: https://www.nature.com/articles/s41586-019-1666-5 第一稿,公式和视图后续再加 。。。 Quantum supremacy using a programmable superconducting processor 使用可编程超导处理器的量…...
Jupyter notebook中运行dos指令运行方法
Jupyter notebook中运行dos指令运行方法 目录 Jupyter notebook中运行dos指令运行方法一、DOS(磁盘操作系统)指令介绍1.1 DOS介绍1.2 DOS指令1.2.1 DIR - 显示当前目录下的文件和子目录列表。1.2.2 CD 或 CHDIR - 改变当前目录1.2.3 使用 CD .. 可以返回上一级目录1…...
个人vue3-学习笔记
声明:这只是我个人的学习笔记(黑马),供以后复习用 。一天学一点,随时学随时更新。明天会更好的! 这里只给代码,不给运行结果,看不出来代码的作用我也该进厂了。。。。。 Day1 使用create-vue创建项目。 1.检查版本。 node -v 2.创建项目 npm init vue@latest 可…...
Ubuntu安装搜狗输入法
Ubuntu安装搜狗输入法 官网完整安装步骤调整默认输入法 官网 搜狗输入法 - 官网:https://shurufa.sogou.com/ 搜狗输入法Linux版 - 首页:https://shurufa.sogou.com/linux 搜狗输入法Linux版 - 安装指南:https://shurufa.sogou.com/linux/gu…...
【C】链表算法题2 -- 反转链表
leetcode链接https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/…...
1.7 ChatGPT:引领AI对话革命的致胜之道
ChatGPT:引领AI对话革命的致胜之道 随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,OpenAI 的 ChatGPT 已经成为了举世瞩目的技术突破。从普通的自动化客服到深入的创作与协作,ChatGPT 通过其卓越的语言理解和生成能力,改变了人们与计算机交互的方式…...
当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线
问题:当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线; 原因:el-table有一个before的伪元素作为表格的下边框下,初始的时候已设置,在滚动的时候并没有重新设置…...
如何使用 useMemo 和 memo 优化 React 应用性能?
使用 useMemo 和 memo 优化 React 应用性能 在构建复杂的 React 应用时,性能优化是确保应用流畅运行的关键。React 提供了多种工具来帮助开发者优化组件的渲染和计算逻辑,其中 useMemo 和 memo 是两个非常有用的 Hook。本文将详细介绍这两个工具的使用方…...
turtle教学课程课堂学习考试在线网站
完整源码项目包获取→点击文章末尾名片!...
spark任务优化参数整理
以下参数中有sql字眼的一般只有spark-sql模块生效,如果你看过spark的源码,你会发现sql模块是在core模块上硬生生干了一层,所以反过来spark-sql可以复用core模块的配置,例外的时候会另行说明,此外由于总结这些参数是在不…...
TCP TIME-WAIT 状态为什么要坚持 2MSL
经常有人问这个问题,这种问题问我就对了。我准备了下面的一幅时序图来解释这个问题: 简单点说就是两个目的: 正常处理被动关闭方的重传 FIN;确保当前连接的所有报文全部消失。 也就是说,无论任何情况下,…...
如何在Ubuntu上安装Cmake
前言 本文主要阐述如何在Ubuntu22.04上面安装cmake,具体可看下面的操作。 正文 一、环境 Ubuntu22.04 cmake-3.31.4.tar.gz 二、步骤 参考这个方案: 【运维】Ubuntu如何安装最新版本的Cmake,编译安装Cmake,直接命令安装…...
1.17学习
crypto nssctf-[SWPUCTF 2021 新生赛]crypto8 不太认识这是什么编码,搜索一下发现是一个UUENCODE编码,用在线工具UUENCODE解码计算器—LZL在线工具解码就好 misc buuctf-文件中的秘密 下载附件打开后发现是一个图片,应该是一个图片隐写&…...
力扣 搜索二维矩阵
二分查找,闭区间与开区间的不同解法。 题目 乍一看,不是遍历一下找到元素就可以了。 class Solution {public boolean searchMatrix(int[][] matrix, int target) {for (int[] ints : matrix) {for (int ans : ints) {if (ans target) return true;}}…...
RabbitMQ基础篇
文章目录 1 RabbitMQ概述1.1 消息队列1.2 RabbitMQ体系结构 2 RabbitMQ工作模式2.1 简单模式(Simple Queue)2.2 工作队列模式(Work Queues)2.3 发布/订阅模式(Publish/Subscribe)2.4 路由模式(R…...
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
解决idea至少创建jdk17项目 问题 idea现在只能创建最少jdk17,不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17,不能创建java8了吗 我本来以为是 IDEA 版本更新导致的 Bug,开始还没在意。 直到我今天自己初始化项目时才发现&am…...
[BrainShadow-V1] VR头戴设备统计报告
Brain-Shadow-V1 EventVR headsetsReported byXiao enDate2025/01/15Version1.0 HTC Vive Pro 2 Pro HTC Vive Pro 2 是一款高端虚拟现实头显,配备双 2.5K 显示屏,组合分辨率达到 48962448,提供 120 的视场角和 120Hz 的刷新率。该设备支持…...
RK3568 Android11 锁屏界面屏蔽下拉状态栏
参考文章: Android R锁屏界面屏蔽下拉状态栏_pulseexpansionhandler-CSDN博客 前提增加状态栏控制显隐属性,以下面文章为前提补充功能 RK3568 Android11 状态栏和导航栏增加显示控制功能-CSDN博客 修改文件位置: frameworks/base/package…...
53,【3】BUUCTF WEB october 2019 Twice SQLinjection
题目得到信息,2次注入,进入靶场 登录页面,很自然想到SQL 第一次注入应该是这个可以登录,注册,提交简介的页面 第二次注入应该是在info处注入,信息显示在简介处 我真的纯脑子有病,人家二次注入不…...
利用硬盘虚拟内存解决华为手机模拟器运行内存不足问题
在进行鸿蒙开发时,华为手机模拟器是必不可少的工具。然而,对于只有 8GB 物理内存的电脑来说,运行模拟器可能会遇到 "系统内存不足" 的提示,导致模拟器无法正常启动。这时,我们可以通过硬盘虚拟出额外的内存来…...
探秘Shortest与Stagehand:开启高效测试与自动化新篇
探秘Shortest与Stagehand:开启高效测试与自动化新篇 在数字化浪潮的推动下,网页自动化工具如同繁星般涌现,为众多行业带来了效率的变革。在这些工具中,Shortest和Stagehand凭借其出色的表现,成为了众多开发者、测试人…...
网络安全构成要素
一、防火墙 组织机构内部的网络与互联网相连时,为了避免域内受到非法访问的威胁,往往会设置防火墙。 使用NAT(NAPT)的情况下,由于限定了可以从外部访问的地址,因此也能起到防火墙的作用。 二、IDS入侵检…...
家政服务小程序,打造智慧家政新体验
春节即将来临,家政市场呈现出了火热的场景,大众对家政服务的需求持续增加。 近年来,家政市场开始倾向数字化、智能化,借助科学技术打造家政数字化平台,让大众在手机上就可以预约家政服务,减少传统家政市场…...
2.使用Spring BootSpring AI快速构建AI应用程序
Spring AI 是基于 Spring Boot3.x 框架构建,Spring Boot官方提供了非常便捷的工具Spring Initializr帮助开发者快速的搭建Spring Boot应用程序,IDEA也集成了此工具。本文使用的开发工具IDEASpring Boot 3.4Spring AI 1.0.0-SNAPSHOTMaven。 1.创建Spring Boot项目 …...
OpenCV实战-全景图像拼接
代码地址见文末 实现效果 1. 项目背景 随着计算机视觉技术的不断发展,图像拼接技术已被广泛应用于虚拟现实、地图生成、全景摄影等领域。图像拼接(Image Stitching)旨在将多张部分重叠的图像无缝拼接成一幅完整的全景图像。此任务要求图像处…...
h5使用video播放时关掉vant弹窗视频声音还在后台播放
现象: 1、点击遮罩弹窗关闭,弹窗的视频已经用v-if销毁,但是后台会自己从头开始播放视频声音。但是此时已经没有视频dom 2、定时器在打开弹窗后3秒自动关闭弹窗,则正常没有问题。 原来的代码: //页面 <a click&quo…...
解决leetcode第3418题机器人可以获得的最大金币数
3418.机器人可以获得的最大金币数 难度:中等 问题描述: 给你一个mxn的网格。一个机器人从网格的左上角(0,0)出发,目标是到达网格的右下角(m-1,n-1)。在任意时刻,机器人只能向右或向下移动。 网格中的每个单元格包含一个值coin…...
anaconda安装和环境配置
文章目录 一、Anaconda下载1.从官网直接下载:2.从镜像站中下载: 二、Anaconda安装三、检测是否有Anaconda配置anaconda环境 四、 Anaconda创建多个python环境(方便管理项目环境)1.查看conda有哪些环境2.创建python3.6的环境3.激活…...
Lora理解QLoRA
Parameter-Efficient Fine-Tuning (PEFT) :节约开销的做法,fine-tune少量参数,而不是整个模型; Low-Rank Adaptation (LoRA) :是PEFT的一种;冻结原参数矩阵,只更新2个小参数矩阵。 原文经过对比…...
嵌入式杂谈——什么是DMA?有什么用?
什么是DMA?——直接内存访问技术详解 在嵌入式系统和计算机体系结构中,DMA(Direct Memory Access,直接内存访问) 是一种重要的数据传输技术。它允许外设(如UART、SPI、ADC等)直接与内存进行数据…...
超标量处理器设计2-cache
1. cache 介绍 影响Cache缺失的情况有3种: Compulsory: 第一次被访问的指令或者数据肯定不会在cache中,需要通过预取来减少这种缺失Capcity: Cache容量越大,缺失就可以更少, 程序频繁使用的三个数据来源于3个set, 但是ÿ…...
使用Nginx正向代理让内网主机通过外网主机访问互联网
目录 环境概述 流程说明 在外网服务器上安装部署nginx? 安装前准备 下载nginx ?编译安装nginx 开始配置正向代理 创建systemd服务单元文件,用于管理Nginx服务的启动、停止和重新加载 启动nginx ?代理服务器本地验证 ?内网服务器验证 ?将代理地址添…...
蓝桥杯刷题第二天——背包问题
题目描述 有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V&am…...
DM达梦启用及收集AWR报告
1.创建DBMS_WORKLOAD_REPOSITORY系统包 查看DBMS_WORKLOAD_REPOSITORY系统包启用状态 SQL> SELECT SF_CHECK_AWR_SYS;LINEID SF_CHECK_AWR_SYS ---------- ---------------- 1 0SF_CHECK_AWR_SYS 返回值 0:未启用;1:已启…...
【git】如何删除本地分支和远程分支?
1.如何在 Git 中删除本地分支 本地分支是您本地机器上的分支,不会影响任何远程分支。 (1)在 Git 中删除本地分支 git branch -d local_branch_name git branch 是在本地删除分支的命令。-d是一个标志,是命令的一个选项&#x…...
pix2pix mmgeneration通用场景黑白图片上色模型训练,Docker
https://www.dong-blog.fun/post/1924 对于机器学习和深度学习感兴趣的读者来说,OpenMMLab 提供的 MMGeneration 库是一个绝佳的选择。最近我在阅读一篇关于 MMGeneration 的博客文章,尤其是在使用 Docker 环境进行模型和算法测试方面,受益匪浅。以下是我对目标博客内容的概…...
【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)
目录 Spring Boot中集成Redis 1.项目创建和环境配置 2.基本操作演示 Spring Boot中集成Redis Spring社区也自定义了一套Redis的客户端,与jedis的操作方式有所差异,Spring中把每个类型的操作都单独封装了起来。下面就让我来带大家了解如何在Spring Bo…...