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

sqlite3数据库-sqlite语句1(五)

DML(Data Manipulation Language,数据操作语言)

SELECT:查询表中的数据;

  1. SELECT语句中使用WHERE子句
SELECT <列名>,... FROM <表名> WHERE <条件表达式>;
SELECT id,name,purchase_price FROM Product; /*使用逗号分隔查询多列,顺序同子句顺序*/
SELECT * FROM 表名; /*查询所有*/
SELECT purchase_price AS price FORM Product; /*为列设定别名*/
SELECT DSITINCT type FROM Product; /*使用DISTINCT删除type列中重复数据*//*从表Product中查询type等于衣服的name列*/
SELECT name FROM Product WHERE type='衣服';/*使用运算表达式 从Product表中查询name和sale_price,并将sale_price乘2作为"sale_price_x2"列出*/
SELECT name,sale_price,sale_price * 2 AS "sale_price_x2" FROM Product;/* 所有包含NULL的计算,结果都是NULL *//*比较运算符 等于(==) 不相等(<>) 大于等于(>=) 大于(>) 小于等于(<=) 小于(<) */
/* 查询出sale_price等于500的name和type,列出 */
SELECT name,type FROM Product WHERE sale_price = 500;/* 查询出sale_price大于等于1000的name和type及sale_price记录 */
SELECT name,type,sale_price FROM Product WHERE sale_price >= 1000;/*查询登记日期在2022年11月12日前的记录 */
SELECT name,type,date FROM Product WHERE data < '2022-11-12';/*查询sale_price减去purchase_price大于等于500*/
SELECT name,type,purchar_price FROM Product WHERE Product WHERE sale_price - purchar_price >= 500;
  1. NULL特殊处理
/*查询NULL的记录*/
SELECT name,price FROM Product WHERE purchase_price IS NULL;
/*查询不为NULL的记录*/
SELECT name,price FROM Product WHERE purchase_price IS NOT NULL;
  1. AND运算符和OR运算符
/*查询商品类型为Tool且销售价价格大于等于1000的商品,列出name和purchar_price*/
SELECT name,purchar_price FROM Product WHERE type='Tool' AND sale_price >= 1000;/*查询商品类型为Tool或销售价价格大于等于1000的商品,列出name和purchar_price*/
SELECT name,purchar_price FROM Product WHERE type='Tool' OR sale_price >= 1000;
  1. 通过括号强化处理

注意:AND优先级高于OR, 想要优先执行OR运算符可以使用括号;

SELECT name,type,date FROM Product WHERE type='Work' AND (date = '02-11' OR date = '02-15');

INSERT:向表中插入新数据;

  1. 清单法插入一行
/*
sql = "CREATE TABLE ProductIns(" \"product_id     CHAR(4)     PRIMARY KEY    NOT NULL," \"product_name    VARCHAR(100)     NOT NULL," \"product_type    VARCHAR(32)     NOT NULL," \"sale_price     INTEGER        DEFAULT 0," \"purchase_price    INTEGER," \"regist_date DATE)";
*/INSERT INTO 表名 (列1,列2,...,列n) VALUES (val1,val2,...,valn);
/*
sql = "INSERT INTO ProductIns (product_id,product_name,product_type,sale_price,purchase_price,regist_date) VALUES ('001','毛衣','衣服',1000,500,'2009-09-20')";        
*/
2. 列清单的省略
INSERT INTO 表名 VALUES (val1,val2,...,valn);
/*
sql = "INSERT INTO ProductIns VALUES ('002','夹克','衣服',1000,600,'2009-09-21')";          
*/
3. 插入多行
sql = "INSERT INTO ProductIns VALUES ('003','拖鞋','鞋',1000,600,'2009-09-21'),"\"('004','内衣','衣服',1000,300,'2009-09-22'),""('005','皮鞋','鞋',1000,700,'2009-09-22')";        
4. 插入NULL
sql = "INSERT INTO ProductIns VALUES ('0026','皮裤','裤子',1000,NULL,'2009-09-26')";        

提示:插入NULL位置属性不能设置为NOT NUILL

5. 插入默认值
sql = "INSERT INTO ProductIns (product_id,product_name,product_type,purchase_price,regist_date) VALUES ('007','内裤','裤子',100,'2009-09-26')";

直接去掉该字段,提前是该字段有DEFAULT属性;

6. 从其他表复制数据
sql = "CREATE TABLE ProductCopy(" \"product_id    CHAR(4)     PRIMARY KEY NOT NULL," \"product_name VARCHAR(100)    NOT NULL," \"product_type VARCHAR(32)     NOT NULL," \"sale_price    INTEGER     DEFAULT 0," \"purchase_price    INTEGER," \"regist_date DATE)";sql = "INSERT INTO ProductCopy (product_id,product_name,product_type,sale_price,purchase_price,regist_date) SELECT * FROM ProductIns;";
或者
sql = "INSERT INTO ProductCopy (product_id,product_name,product_type,sale_price,purchase_price,regist_date) "\"SELECT product_id,product_name,product_type,sale_price,purchase_price,regist_date FROM ProductIns;";
6. 使用GROUP BY子句
sql = "CREATE TABLE ProductType(" \"product_type VARCHAR(32)     PRIMARY KEY NOT NULL," \"sale_price    INTEGER     DEFAULT 0," \"purchase_price    INTEGER)" ;sql = "INSERT INTO ProductType (product_type,sale_price,purchase_price) "\"SELECT product_type,SUM(sale_price),COUNT(purchase_price) FROM ProductIns GROUP BY product_type;";

补充:GROUP BY,HAVING,ORDER BY子句

GROUP BY,HAVING:从表中选取数据时用来改变抽取数据形式的;

ORDER BY:指定取得结果显示顺序的;

UPDATE:更新表中的数据;

  1. UPDATE语句+SET子句
UPDATE 表名 SET 列名 = 表达式sql = "UPDATE ProductIns SET regist_date = '2023-02-20'";//将表中regist_data全部更新成02-20 
2. 搜索型UPDATE
UPDATE 表名 SET 列名=表达式 WHERE 条件sql = "UPDATE ProductIns SET sale_price = sale_price*5 WHERE product_type='衣服'"; 
3. NULL情空

只有未设置NOT NULL约束的列才可设置;

sql = "UPDATE ProductIns SET sale_price = NULL WHERE product_type='鞋'"; 
4. 更新多列
sql = "UPDATE ProductIns SET sale_price = 500,purchase_price=200 WHERE product_type='鞋'"; 

DROP/DELETE:删除表中的数据;

sql = "DROP TABLE ProductCopy;"; //删除表 sql = "DELETE FROM ProductType"; //删除后会保留数据表,仅删除内容;sql = "DELETE FROM ProductIns WHERE purchase_price <= 300"; 

不能使用GROUP BY,HAVING,ORDER BY; 删除表中数据时起不到什么作用;

不可恢复,谨慎删除;

事务

批量执行数据库语句时,使用事务能极大提高效率;实测在嵌入式开发板上update语句,开始事务后能从5s缩短到ms级别;

sql = "BEGIN TRANSACTION;"; //开启事务
sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);...... 批量插入/更新if(条件){sql = "COMMIT;"; //提交事务sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);
}else{sql = "ROLLBACK;"; //回滚  
}

int main(int argc, const char *argv[])
{int ret;sqlite3 *ppDb = NULL;char *errMsg = NULL;ret = sqlite3_open("./config.db", &ppDb);if(ret != SQLITE_OK){printf("open config.db failed %s\n",sqlite3_errmsg(ppDb));return -1;}printf("open config.db ok\n");/* 创建表ProductIns */char *sql = NULL;sql = "CREATE TABLE ProductIns(" \"product_id     CHAR(4)     PRIMARY KEY    NOT NULL," \"product_name    VARCHAR(100)     NOT NULL," \"product_type    VARCHAR(32)     NOT NULL," \"sale_price     INTEGER        DEFAULT 0," \"purchase_price    INTEGER," \"regist_date DATE)";ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}/* 创建表ProductCopy */sql = "CREATE TABLE ProductCopy(" \"product_id    CHAR(4)     PRIMARY KEY NOT NULL," \"product_name VARCHAR(100)    NOT NULL," \"product_type VARCHAR(32)     NOT NULL," \"sale_price    INTEGER     DEFAULT 0," \"purchase_price    INTEGER," \"regist_date DATE)";ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}//创建表ProductTypesql = "CREATE TABLE ProductType(" \"product_type VARCHAR(32)     PRIMARY KEY NOT NULL," \"sale_price    INTEGER     DEFAULT 0," \"purchase_price    INTEGER)" ;ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}printf("crate config.db table ok\n");//开启事务sql = "BEGIN TRANSACTION;";ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}/* insert sql */sql = "INSERT INTO ProductIns (product_id,product_name,product_type,sale_price,purchase_price,regist_date)"\"VALUES ('001','毛衣','衣服',1000,500,'2009-09-20')";          ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec insert err %s\n",errMsg);sqlite3_free(errMsg);}sql = "INSERT INTO ProductIns VALUES ('002','夹克','衣服',1000,600,'2009-09-21')";          ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec insert err %s\n",errMsg);sqlite3_free(errMsg);}sql = "INSERT INTO ProductIns VALUES ('003','拖鞋','鞋',1000,600,'2009-09-21'),"\"('004','内衣','衣服',1000,300,'2009-09-22'),""('005','皮鞋','鞋',1000,700,'2009-09-22')";          ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec insert err %s\n",errMsg);sqlite3_free(errMsg);}sql = "INSERT INTO ProductIns VALUES ('006','皮裤','裤子',1000,NULL,'2009-09-26')";          ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec insert err %s\n",errMsg);sqlite3_free(errMsg);}sql = "INSERT INTO ProductIns (product_id,product_name,product_type,purchase_price,regist_date) "\"VALUES ('007','内裤','裤子',100,'2009-09-26')";          ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec insert err %s\n",errMsg);sqlite3_free(errMsg);}printf("insert config.db table ok\n");//从ProductIns表复制到ProductCopysql = "INSERT INTO ProductCopy (product_id,product_name,product_type,sale_price,purchase_price,regist_date) "\"SELECT product_id,product_name,product_type,sale_price,purchase_price,regist_date FROM ProductIns;";ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}sql = "INSERT INTO ProductType (product_type,sale_price,purchase_price) "\"SELECT product_type,SUM(sale_price),COUNT(purchase_price) FROM ProductIns GROUP BY product_type;";ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}sql = "COMMIT;";ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}//更新sql = "UPDATE ProductIns SET regist_date = '2023-02-20'"; ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}sql = "UPDATE ProductIns SET sale_price = sale_price*5 WHERE product_type='衣服'"; ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}sql = "UPDATE ProductIns SET sale_price = NULL WHERE product_type='鞋'"; ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}sql = "UPDATE ProductIns SET sale_price = 500,purchase_price=200 WHERE product_type='鞋'"; ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}//删除sql = "DELETE FROM ProductIns WHERE purchase_price <= 300"; //删除后会保留数据表,仅删除内容;ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_exec create err %s\n",errMsg);sqlite3_free(errMsg);}/* select sql */#if 0 sql = "SELECT * from ProductIns";int nRow, nCol;char **pazResult = NULL;ret = sqlite3_get_table(ppDb, sql, &pazResult, &nRow, &nCol, &errMsg);if(ret != SQLITE_OK){printf("sqlite3_get_table err %s\n",errMsg);sqlite3_free(errMsg);return -1;}printf("nRow = %d , nCol = %d\n", nRow, nCol);for(int i = 0; i < nCol*(nRow+1); i++){printf("pazResult[%d] = %s\n",i,pazResult[i]);}//正确且安全的释放内存sqlite3_free_table(pazResult);#endif sqlite3_close(ppDb);return 0;
}

相关文章:

sqlite3数据库-sqlite语句1(五)

DML(Data Manipulation Language,数据操作语言) SELECT:查询表中的数据;SELECT语句中使用WHERE子句SELECT <列名>,... FROM <表名> WHERE <条件表达式>;SELECT id,name,purchase_price FROM Product; /*使用逗号分隔查询多列,顺序同子句顺序*/ SELECT * FROM…...

【图像分类】卷积神经网络之LeNet5网络模型实现MNIST手写数字识别

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 在上一篇博文中我们对LeNet5网络模型的结构进行了剖析,本篇博文,我们将使用PyTorch搭建LeNet5实现MNIST手写数字…...

前端开发环境搭建

文章目录Node.js是什么安装查看版本入门示例NPM使用 npm 命令安装模块常见命令使用淘宝 NPM 镜像TypeScript安装入门示例从github拉取构建项目如何从零创建一个TypeScript项目规划目录结构新建项目Web App运行服务添加依赖打包使用browserify打包使用webpack打包推荐流程目录配…...

学习Flask之四、网页表单

第二章介绍的request对象&#xff0c;使用了客户端请求的所有信息。特别地&#xff0c;request.form提供了对POST请求提交的表单数据的访问。尽管Flask请求对象的支持足于处理网页单&#xff0c;但是还有很多作务很繁锁和重复。两个很好的例子是产生HTML表单代码和验证表单数据…...

CenterMask paper笔记

CenterMask是一个anchor free的实例分割模型&#xff0c; 来自paper: CenterMask: Real-Time Anchor-Free Instance Segmentation 提起anchor free, 会想到FCOS模型&#xff0c;是用来目标检测的&#xff0c; 那么这里就用到了FCOS, 不过换了backbone, 在FCOS检测出目标框后&…...

06- OpenCV查找图像轮廓 (OpenCV基础) (机器视觉)

知识重点 灰度图转换: gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)二值化: 返回两个东西&#xff0c;一个阈值&#xff0c; 一个是二值化的图: thresh, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)查找轮廓: 返回两个结果&#xff0c;分别是轮廓和层级: c…...

OpenGL学习日记之模型绘制

自己编译运行过程中遇到的一些问题 下载Assimp已编译的lib(因为我们公司的电脑有很多权限和限制&#xff0c;也不能自己安装一些没有报备的软件&#xff0c;所以愁方便我就没有用cMake自己编译了)找到一位免费分享的博主的。 https://blog.csdn.net/lady_killer9/article/deta…...

Springboot接口多个DTO入参的Postman上传方式

在Java中使用Spring Boot框架时&#xff0c;可以同时使用多个DTO作为方法参数。 TO&#xff08;Data Transfer Object&#xff09;是一个常见的设计模式&#xff0c;用于封装数据传输对象。它通常用于将数据从一个层传递到另一个层&#xff0c;例如将数据从服务层传递到控制器…...

软考各科目考核内容详细介绍,看这里

新手在准备报考软考时&#xff0c;都会遇到这样的一个问题——科目这么多&#xff0c;我适合考什么&#xff1f;要想知道自己适合报什么科目&#xff0c;就需要了解每个科目是什么&#xff0c;考什么等一系列的问题。 接下来&#xff0c;就为大家介绍一下软考的各个科目&#…...

连续时间信号与离散时间信号

前言 《信号与系统》是一门很难的课&#xff0c;也是许多学校考研要考的专业课&#xff0c;由于每周只有两节课&#xff0c;所以每次上完都要及时的去复习&#xff0c;这里参考的教材是奥本海姆著作&#xff0c;刘海棠译&#xff0c;北京&#xff1a;电子工业出版社&#xff0…...

TPM密钥管理、使用

前面讲过证书相关内容&#xff0c;除了在软件方面有所应用外&#xff0c;在硬件方面也有很多应用。本次讲一下TPM相关的内容。 一、TPM介绍 1.1背景 TCG基于硬件安全的架构是为应对1990s后期日益增多的复杂恶意软件攻击应用而生的。当时以及现在&#xff0c;抵御PC客户端网络…...

return和finally执行顺序、运行时异常与一般异常异同、error和exception区别、Java异常处理机制原理与应用

文章目录1.try {}里有一个return语句&#xff0c;那么紧跟在这个try后的finally{}里的code会不会被执行&#xff0c;什么时候被执行&#xff0c;在return前还是后?2.运行时异常与一般异常有何异同&#xff1f;3.java 程序中的错误有三种类型分别是什么4.error和exception有什么…...

我为什么放弃WinUI3

基于WinUI3开发HiNote已经有一个多月的时间了&#xff0c;算是做出来一个简单能用的C端软件。 基于个人的经历&#xff0c;说说其中的开发体验。 UI设计语言 无论是否抄袭苹果&#xff0c;WinUI3给人的感觉都是眼前一亮的。简洁美观&#xff0c;现代化&#xff0c;毛玻璃的美…...

2023年全国最新安全员精选真题及答案2

百分百题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 21.&#xff08;单选题&#xff09;静作用压路机在施工过程&#xff0c;要求实际含水量…...

计算机408考研先导课---C语言难点

以下为小编在重温C语言时&#xff0c;容易犯错的一些点&#xff0c;希望列出来对大家有一定帮助&#xff01; 一、整型变量数的范围 类型说明符长度&#xff08;字节&#xff09;数的范围int4/2&#xff08;有些为4字节&#xff0c;有些为2字节&#xff09;-32768~32767short2…...

K8S 部署 Redis-Cluster 集群

本文使用 bitnami 镜像部署 redis-cluster 官方文档&#xff1a;https://github.com/bitnami/charts/tree/main/bitnami/redis-cluster 添加 bitnami 仓库 helm repo add bitnami https://charts.bitnami.com/bitnami自定义 values.yaml storageClass&#xff1a;集群的存储…...

[oeasy]python0089_大型机的衰落_Dec小型机崛起_PDP_VAX网络

编码进化 回忆上次内容 上次 回顾了 计算机存储单位的演变 最小的读写单位 是 bit 8-bit 固定下来 成为了字节(Byte) 位数容量8-bit1Byte1024Byte1 KB1024 KB1 MB1024 MB1 GB1024 GB1 TB 存储字符时 第1位 是 标志位后7位 是 ascii具体的值 可以用 1Byte 存储 计算机之间 …...

Apache Shiro与Spring Security对比

Apache Shiro VS Spring Security 1.Spring Security 官方文档&#xff1a;https://spring.io/projects/spring-security#overview介绍&#xff1a; Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spr…...

23春招-mysql事务相关高频面试题

1、什么是事务 对于一个事务&#xff0c;要么事务内的sql全部执行&#xff0c;要么都不执行 2、 事务的特性ACID 原子性 整个事务中所有的操作要么全部提交成功&#xff0c;要么全部失败会滚。 一致性 数据库总是从一个一致性状态转换到另一个一致性状态。假如有三个sql语句…...

天线理论知识1——基础概念介绍

基础概念介绍 文章目录 基础概念介绍前言一、主要参数二、天线的种类三、天线的测量前言 天线是用于发射和接收电磁波设备。其功能可以概括为转换自由空间中的电磁波和设备中的导行波。 一、主要参数 天线设计中要考虑的参数较多,包括 方向性函数:距离天线 r r r处的远区…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...