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

MySQL——5、基本查询

表的增删改查

  • 1、Create
    • 1.1、单行数据+全列插入
    • 1.2、多行数据+指定列插入
    • 1.3、插入否则更新
    • 1.4、替换
  • 2、Retrieve
    • 2.1、select列
    • 2.2、where条件
    • 2.3、结果排序
    • 2.4、筛选分页结果
  • 3、Update
  • 4、Delete
    • 4.1、删除数据
    • 4.2、截断表
  • 5、插入查询结果
  • 6、聚合函数
  • 7、group by子句的使用
  • 8、实战OJ

CURD:Create(创建),Update(更新),Retrieve(读取),Delete(删除)。

1、Create

在这里插入图片描述
这是用来向表中插入数据的,表明后面跟指定列,如果没有指定列默认就是全列插入,values后面跟要插入列的数据。
首先创建一张学生表:
在这里插入图片描述

1.1、单行数据+全列插入

单行指定列插入:
在这里插入图片描述

单行全列插入:
在这里插入图片描述

into可以省略:
在这里插入图片描述

1.2、多行数据+指定列插入

多行全列插入:
在这里插入图片描述

多行指定列插入:
在这里插入图片描述

1.3、插入否则更新

我们在插入的时候可能会发生以下两种情况:主键冲突、唯一键冲突。
在这里插入图片描述

如果插入的时候发生了冲突,我们想让它去修改值,而不是直接无脑的拦住我,可以使用下面的语法:
在这里插入图片描述

下面这种情况插入默认是直接拦截你的,因为主键发生了冲突,但是我们在后面添加on duplicate key update,如果发生了冲突可以对其他属性进行修改,这样不会直接拦截报错。
在这里插入图片描述

另外,还可以根据执行后的响应结果分辨是哪种情况:
由于上面是插入冲突了,进行数据更新,所以是两行受影响

在这里插入图片描述

当插入一行且不存在冲突时,就是一行受影响。
接着我们再插入肯定会发生冲突,而此时就是更新数据,所以是两行受影响。
第三次插入时也会发生冲突,但是更新的数据和原来的一样,所以零行受影响。

在这里插入图片描述

另外,我们可以使用row_count()获取受影响的行数:
在这里插入图片描述

1.4、替换

在这里插入图片描述
上述语法只不过是把insert into替换成了replace into。

在这里插入图片描述
第一次插入的时候由于没有存在冲突,所以直接插入,一行受影响。第二次插入的时候存在冲突,所以会把原来那一行删除掉然后再重新插入,因此两行受影响。同时可以看到新的id为20,第一次插入的时候为19,删除后再次插入就变成20了。


2、Retrieve

在这里插入图片描述
首先需要做一下准备工作,创建一张表并插入一些数据:

-- 创建表结构
CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese float DEFAULT 0.0 COMMENT '语文成绩',
math float DEFAULT 0.0 COMMENT '数学成绩',
english float DEFAULT 0.0 COMMENT '英语成绩'
);-- 插入测试数据
INSERT INTO exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);

2.1、select列

2.1.1、全列查询
在这里插入图片描述
*和Linux里的很像,表示一种通配。
通常情况下不建议使用*进行全列查询:
1、查询的列越多,意味着需要传输的数据量越大。
2、可能会影响到索引的使用。

2.1.2、指定列查询
在这里插入图片描述

2.1.3、查询字段为表达式
在这里插入图片描述
在这里插入图片描述

2.1.4、为查询结果指定别名
在这里插入图片描述

并且as可以省略:
在这里插入图片描述

2.1.5、结果去重
默认查询数学成绩这一列会出现重复的数据,如果想对数据进行去重可以加上distinct
在这里插入图片描述


2.2、where条件

在这里插入图片描述
=可以用来比较数字和字符串,但是不能用来判断是否为NULL,如果要判断是否为NULL,应该使用<=>或is null:
在这里插入图片描述

同样的,!=和<>也是NULL不安全的,判断一个值不为NULL应该使用is not NULL。
在这里插入图片描述

2.2.1、英语不及格的同学及英语成绩 ( < 60 )
在这里插入图片描述

2.2.2、语文成绩在 [80, 90] 分的同学及语文成绩
在这里插入图片描述

2.2.3、数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
在这里插入图片描述

2.2.4、姓孙的同学及孙某同学
在这里插入图片描述

2.2.5、语文成绩好于英语成绩的同学
在这里插入图片描述

2.2.6、总分在200分以下的同学
在这里插入图片描述
下面这种重命名为什么不行?因为执行该条语句的顺序是:1、先知道要从哪个表中获取数据。2、筛选的条件。3、筛选的内容。因此total是在重命名之前的,所以就不认识total了。

2.2.7、语文成绩>80并且不姓孙的同学
在这里插入图片描述

2.2.8、孙某同学,否则要求总成绩>200并且语文成绩<数学成绩并且英语成绩>80
在这里插入图片描述

2.2.9、NULL的查询
前置工作:
在这里插入图片描述

在这里插入图片描述


2.3、结果排序

在这里插入图片描述
注意:没有ORDER BY子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。

2.3.1、同学及数学成绩,按数学成绩升序显示
在这里插入图片描述

2.3.2、查询test表,按名字升序排序
在这里插入图片描述
这里主要是要说明NULL比任何值都要小。

2.3.3、查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示
在这里插入图片描述
另外我们也可以省略asc或desc,默认采用asc升序排序。

2.3.4、查询同学及总分,由高到低
在这里插入图片描述
我们发现这里又可以使用别名了?为什么在这里可以使用别名,在where子句不能使用别名?
执行顺序是:1、先知道从哪个表中查。2、根据where子句的条件去筛选。3、要筛选出哪些列信息。4、进行排序。
所以排序是在最后进行的,此时已经被重命名了,所以可以使用重命名。

2.3.5、查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
在这里插入图片描述


2.4、筛选分页结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

实现分页查找:
在这里插入图片描述

在这里插入图片描述

比如我们想根据三个科目总成绩来查找第一名,或者查找前n名:
在这里插入图片描述


3、Update

在这里插入图片描述

3.1、将孙悟空同学的数学成绩变更为80分
在这里插入图片描述

3.2、将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分
在这里插入图片描述

3.3、将总成绩倒数前三的3位同学的数学成绩加上30分
在这里插入图片描述

3.4、将所有同学的语文成绩更新为原来的2倍
在这里插入图片描述


4、Delete

4.1、删除数据

在这里插入图片描述

4.1.1、删除孙悟空同学的考试成绩
在这里插入图片描述
首先默认不加条件就会把整张表都删掉。

在这里插入图片描述

4.1.2、删除总分倒数第一同学的考试成绩
在这里插入图片描述

4.1.3、删除整张表数据,慎用!!
首先创建一张测试表:

-- 准备测试表
CREATE TABLE for_delete (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');

在这里插入图片描述
当我们删除后,查询不到表的数据,表已经为空。并且我们注意到删除前后的自增计数器是不变的。


4.2、截断表

在这里插入图片描述
创建一个表进行测试:

-- 准备测试表
CREATE TABLE for_truncate (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);-- 插入测试数据
INSERT INTO for_truncate (name) VALUES ('A'), ('B'), ('C');

在这里插入图片描述
truncate清空表数据后,我们发现自增计数器也不见了。

在这里插入图片描述
接着我们再插入数据发现自增主键又从1开始了,并且这时候自增计数器的值为2。
总结:delete不会重置自增计数器,会记录下操作的日志。truncate会重置自增计数器,但是不会记录下操作日志。所以truncate比delete快。


5、插入查询结果

在这里插入图片描述
案例:删除表中的的重复复记录,重复的数据只能有一份

-- 创建原数据表
CREATE TABLE duplicate_table (id int, name varchar(20));-- 插入测试数据
INSERT INTO duplicate_table VALUES
(100, 'aaa'),
(100, 'aaa'),
(200, 'bbb'),
(200, 'bbb'),
(200, 'bbb'),
(300, 'ccc');

在这里插入图片描述
我们想要去除重复的数据,但是没办法直接delete from删除,因为会把重复的所有数据都删掉。
所以我们的做法是创建一个和duplicate_table结构一样的表,然后查询duplicate_table去重后的数据,将查询的数据插入到新建的表中。然后把duplicate_table重命名,再把新建的表名字改为duplicate_table,这样就完成了数据去重。

在这里插入图片描述

然后对表进行重命名,修改表明有以下两种方式:
在这里插入图片描述


6、聚合函数

在这里插入图片描述

6.1、统计班级共有多少同学
在这里插入图片描述

6.2、统计本次考试的数学成绩分数个数
在这里插入图片描述
先对数学成绩做去重,然后再聚合统计。

6.3、统计数学成绩总分
在这里插入图片描述
再比如统计数学的平均分:
在这里插入图片描述

6.4、统计平均总分
在这里插入图片描述

6.5、返回英语最高分
在这里插入图片描述
在这里插入图片描述
另外我们发现在前面加上name是不行的。

6.6、返回>70分以上的数学最低分
在这里插入图片描述


7、group by子句的使用

在这里插入图片描述
准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表):EMP员工表、DEPT部门表、SALGRADE工资等级表。可以上网查。
在这里插入图片描述

6.7.1、如何显示每个部门的平均工资和最高工资
在这里插入图片描述
第一次查询,我们是把整个表当作一个组,查找这一个组里面薪资最高和平均薪资。第二次查询我们使用了group by通过部门号deptno进行分组,由于emp表中部门号有3种,因此根据部门号分成三个组然后再把这三个组分别进行聚合统计,计算出每个组的最高薪资和平均薪资。
分组的目的:分组之后方便进行聚合统计。

分组指定的是列名,实际上分组根据的是该列不同的数据来进行分组的。分组的条件为deptno,组内的deptno值一定都是相同的,所以可以被聚合统计。分组我们看成"分表",把一张表按照条件在逻辑上拆成了多个子表,然后对各自的子表进行聚合统计。

6.7.2、显示每个部门的每种岗位的平均工资和最低工资
在这里插入图片描述
如果我还想看一下名字呢?
在这里插入图片描述
我们发现直接报错了。一般只有在group by后面出现的,或者是聚合函数才能在select后面出现。

6.7.3、显示平均工资低于2000的部门和它的平均工资
处理:1、统计出每一个部门的平均工资,先聚合统计出结果。2、再进行判断,对聚合统计的结果判断是否低于2000。
在这里插入图片描述
having是对聚合后的数据进行条件筛选。

6.7.4、having VS where的区别和理解?执行顺序?
在这里插入图片描述
我们发现把having换成where后就报错了,把where换成having是可以查出来的,虽然可以查出来,但是严重不推荐这么写。

需求:显示平均工资低于2000的部门和它的平均工资并且SMITH员工不参与统计。
在这里插入图片描述
where和having都是条件筛选,区别在于它们进行条件筛选的阶段是不同的。
另外不要单纯的认为,只有磁盘上的表结构导入到mysql,真实存在的表才叫做表。按条件筛选之后、分组之后等全都是表。中间过程包括最后结果,在我们看来都是逻辑上的表。MySQL一切皆表。未来只要我们能够处理好单表的CURD,所有的SQL场景,我们全部都能用统一的方式进行。

面试题:SQL查询中各个关键字的执行先后顺序 from > on > join > where > group by > with > having > select > distinct > order by > limit。


8、实战OJ

牛客:批量插入数据

牛客:找出所有员工当前(to_date=‘9999-01-01’)具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示

牛客:查找最晚入职员工的所有信息

牛客:查找入职员工时间排名倒数第三的员工所有信息

牛客:查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t

LeetCode:182. 查找重复的电子邮箱

LeetCode:595. 大的国家

LeetCode:177. 第N高的薪水

相关文章:

MySQL——5、基本查询

表的增删改查 1、Create1.1、单行数据全列插入1.2、多行数据指定列插入1.3、插入否则更新1.4、替换 2、Retrieve2.1、select列2.2、where条件2.3、结果排序2.4、筛选分页结果 3、Update4、Delete4.1、删除数据4.2、截断表 5、插入查询结果6、聚合函数7、group by子句的使用8、实…...

ngx_http_referer_module 模块概述

一、使用场景 防盗链 仅允许本站或特定域名的页面直接引用图片、视频等资源&#xff0c;拒绝第三方网站直接嵌入。流量控制 阻止来自社交媒体、搜索引擎或未知来源的大量自动化抓取。安全审计 简易记录并过滤可疑 Referer&#xff0c;以减少非法请求。 注意 Referer 头可被伪造…...

Go语言--语法基础5--基本数据类型--类型转换

Go 编程语言中 if 条件语句的语法如下&#xff1a; 1、基本形式 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } If 在布尔表达式为 true 时&#xff0c;其后紧跟的语句块执行&#xff0c;如果为 false 则 不执行。 package main import "fmt" …...

用golang实现二叉搜索树(BST)

目录 一、概念、性质二、二叉搜索树的实现1. 结构2. 查找3. 插入4. 删除5. 中序遍历 中序前驱/后继结点 一、概念、性质 二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;简写BST&#xff0c;又称为二叉查找树 它满足&#xff1a; 空树是一颗二叉搜索树对…...

基于FPGA的电子万年历系统开发,包含各模块testbench

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的电子万年历系统开发,包含各模块testbench。主要包含以下核心模块&#xff1a; 时钟控制模块&#xff1a;提供系统基准时钟和计时功能。 日历计算模块&#xff1a…...

上位机知识篇---Web

文章目录 前言 前言 本文简单介绍了Web。...

2025 ISCC 练武赛Pwn-wp(含附件)

前言 去年个人赛报名了忘记打了(笑), 所以这应该算是我第一次参加ISCC, 体验也是非常非常非常非常的cha(第四声)!!! 主办方也是非常幽默&#xff0c;pwn和web都是公用容器&#xff0c;那web最后都被当成玩具玩坏了 下面是这次练武题的pwn所有附件 通过网盘分享的文件&#xf…...

LeetCode Hot100刷题——除自身以外数组的乘积

238. 除自身以外数组的乘积 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&a…...

IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)

一、基础折叠操作 折叠当前代码块&#xff1a;Ctrl - # 操作方式按下 【Ctrl】 键&#xff0c;再按下 【-】 键展开当前代码块&#xff1a;Ctrl # 操作方式按下 【Ctrl】 键&#xff0c;再按下 【】 键折叠所有代码块&#xff1a;Ctrl Shift - # 操作方式按下 【Ctrl】…...

javaSE.Map

Map存储映射关系。键值对。key-value 左边值映射着右边的值&#xff0c;左边相当于钥匙&#xff0c;开到右边的门获取得到信息。 get&#x1f447;put 是否存在该key&#x1f447;containsKey() map.values&#x1f447; entrySet&#x1f447; entrySet()获取map中所有的键…...

Python Requests库完全指南:从入门到精通

引言 在Python的生态系统中&#xff0c;requests库以其简洁优雅的API设计和强大的功能&#xff0c;成为HTTP请求处理领域的标杆工具。无论是数据爬虫开发、API接口调用&#xff0c;还是自动化测试场景&#xff0c;requests都能将复杂的网络交互简化为几行可读性极高的代码。相…...

1.QPushBotton 以及 对象树

目录 1. 创建第一个Qt程序 1.1 初始化设置 ​&#x1f350; 选择存储位置 &#x1f34a; Kit &#x1f34b; 类信息 &#x1f34c; 项目管理 1.2 代码 &#x1f349; main.cpp &#x1f347;widget.h &#x1f353; widget.cpp 1.3 .pro文件 &#x1f348; 常见模块…...

GO语言语法---For循环、break、continue

文章目录 1. 基本for循环&#xff08;类似其他语言的while&#xff09;2. 经典for循环&#xff08;初始化;条件;后续操作&#xff09;3. 无限循环4. 使用break和continue5 . 带标签的循环&#xff08;可用于break/continue指定循环&#xff09;1、break带标签2、continue带标签…...

网络编程-select(二)

一、I/O多路复用 1、为什么要多路复用 之前开启多线程能实时接收数据&#xff0c;并且也不是一次性连接服务。但毕竟是一请求一连接&#xff0c;每有一个客户端向服务端发起请求&#xff0c;就会创建一个线程&#xff0c;当请求达到上千上万&#xff0c;就会创建上千上万的线…...

2025年PMP 学习十九 第12章 项目采购管理

2025年PMP 学习十九 第12章 项目采购管理 序号过程过程组1规划采购管理规划2实施采购执行3控制采购监控4合同管理- 文章目录 2025年PMP 学习十九 第12章 项目采购管理12 项目采购管理建立战略合作伙伴关系的意义&#xff1a;细化采购步骤 12.1 规划采购管理1. **定义与作用**2…...

10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析

LangGraph 项目:High-level API for Multi-actor Agents 关键词:LangGraph 多角色 Agent, 状态管理, 持久化机制, 工作流编排, 生产级 AI 系统 1. LangGraph 设计哲学与架构演进 LangGraph 是 LangChain 生态中首个面向 多角色协作 Agent 的高阶 API 框架,其核心设计思想可…...

计算机网络概要

⽹络相关基础知识 协议 两设备之间使⽤光电信号传输信息数据 要想传递不同信息 那么⼆者ᳵ就需要约定好的数据格式 层 封装 继承 多态是计算机的性质 它们⽀持了软硬件分层的实现 同层协议可以ᳵ接通信 同层协议ᳵ不直接通信 是各⾃调⽤下层提供的结构能⼒完成通信 分层…...

Visual Studio已更新为17.14+集成deepseek实现高效编程

01 Visual Studio 2022 v17.14。 此更新侧重于全面提供出色的开发人员体验&#xff0c;侧重于稳定性和安全性以及 AI 改进。 02 GPT-4o代码完成模式 我们非常高兴地宣布&#xff0c;新的 GPT-4o Copilot 代码完成模型现已在 Visual Studio 17.14 中为 GitHub Copilot 用户…...

axios的基本使用

1. Axios概述 Axios 是一个基于 Promise 的 HTTP 客户端库&#xff0c;专为浏览器和 Node.js 设计&#xff0c;用来发送AJAX请求。可以通过npm install -g axios安装axios库。Axios有以下特征&#xff1a; 跨平台兼容性&#xff1a;同一套代码可运行于浏览器和 Node.js。在浏…...

【第三十六周】LoRA 微调方法

LoRA 摘要Abstract文章信息引言方法LoRA的原理LoRA在Transformer中的应用补充其他细节 实验与分析LoRA的使用论文实验结果分析 总结 摘要 本篇博客介绍了LoRA&#xff08;Low-Rank Adaptation&#xff09;&#xff0c;这是一种面向大规模预训练语言模型的参数高效微调方法&…...

fcQCA模糊集定性比较分析法-学习笔记

模糊集定性比较分析&#xff08;fsQCA&#xff0c;Fuzzy-set Qualitative Comparative Analysis&#xff09; 是一种结合了定性和定量元素的研究方法&#xff0c;用于分析中小样本数据中的复杂因果关系。 1. 理解基础概念 QCA的核心思想&#xff1a; 基于集合论和布尔代数&a…...

基于WebRTC的实时语音对话系统:从语音识别到AI回复

基于WebRTC的实时语音对话系统&#xff1a;从语音识别到AI回复 在当今数字化时代&#xff0c;实时语音交互已成为人机界面的重要组成部分。本文将深入探讨一个基于WebRTC技术的实时语音对话系统&#xff0c;该系统集成了语音识别(ASR)、大语言模型(LLM)和语音合成(TTS)技术&am…...

Text2SQL:自助式数据报表开发---0517

Text2SQL技术 早期阶段&#xff1a;依赖于人工编写的规则模板来匹配自然语言和SQL语句之间的对应关系 机器学习阶段&#xff1a;采用序列到序列模型等机器学习方法来学习自然语言与SQL之间的关系 LLM阶段&#xff1a;借助LLM强大的语言理解和代码生成能力&#xff0c;利用提示…...

关于 Web 漏洞原理与利用:1. SQL 注入(SQLi)

一、原理&#xff1a; 拼接 SQL 语句导致注入 SQL 注入的根本原因是&#xff1a;开发者将用户的输入和 SQL 语句直接拼接在一起&#xff0c;没有任何过滤或校验&#xff0c;最终被数据库“当作语句”执行了。 这就像是我们给数据库写了一封信&#xff0c;结果攻击者在我们的…...

【NLP 75、如何通过API调用智谱大模型】

事事忘记&#xff0c;事事等待&#xff0c;事事自愈 —— 25.5.18 一、调用智谱大模型 zhipuai.model_api.invoke()&#xff1a;调用智谱 AI 的大模型&#xff08;如 ChatGLM&#xff09;进行文本生成或推理&#xff0c;支持同步请求。 参数列表 参数名类型是否必需默认值说…...

【RabbitMQ】 RabbitMQ高级特性(二)

文章目录 一、重试机制1.1、重试配置1.2、配置交换机&队列1.3、发送消息1.4、消费消息1.5、运行程序1.6、 手动确认 二、TTL2.1、设置消息的TTL2.2、设置队列的TTL2.3、两者区别 三 、死信队列6.1 死信的概念3.2 代码示例3.2.1、声明队列和交换机3.2.2、正常队列绑定死信交…...

EMQX开源版安装指南:Linux/Windows全攻略

EMQX开源版安装教程-linux/windows 因最近自己需要使用MQTT&#xff0c;需要搭建一个MQTT服务器&#xff0c;所以想到了很久以前用到的EMQX。但是当时的EMQX使用的是开源版的&#xff0c;在官网可以直接下载。而现在再次打开官网时发现怎么也找不大开源版本了&#xff0c;所以…...

MySQL 数据库备份与还原

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月18日 专栏&#xff1a;MySQL教程 思维导图 备份 (Backup) 与 冗余 (Redundancy) 的核心区别: &#x1f3af; 备份是指创建数据的副本并将其存储在不同位置或介质&#xff0c;主要目的是在发生数据丢失、损坏或逻辑错误时进…...

【数据结构】2-3-4 单链表的建立

数据结构知识点合集 尾插法建立单链表 建立链表时总是将新节点插入到链表的尾部&#xff0c;将新插入的节点作为链表的尾节点 /*尾插法建立链表L*/ LinkList List_TailInsert(LinkList &L) { int x; /*建立头节点*/ L (LNode *)malloc(sizeof(LNode)); /*…...

JVM如何处理多线程内存抢占问题

目录 1、堆内存结构 2、运行时数据 3、内存分配机制 3.1、堆内存结构 3.2、内存分配方式 1、指针碰撞 2、空闲列表 4、jvm内存抢占方案 4.1、TLAB 4.2、CAS 4.3、锁优化 4.4、逃逸分析与栈上分配 5、问题 5.1、内存分配竞争导致性能下降 5.2、伪共享&#xff08…...

猫番阅读APP:丰富资源,优质体验,满足你的阅读需求

猫番阅读APP是一款专为书籍爱好者设计的移动阅读应用&#xff0c;致力于提供丰富的阅读体验和多样化的书籍资源。它不仅涵盖了小说、非虚构、杂志等多个领域的电子书&#xff0c;还提供了个性化推荐、书架管理、离线下载等功能&#xff0c;满足不同读者的阅读需求。无论是通勤路…...

Redis 学习笔记 4:优惠券秒杀

Redis 学习笔记 4&#xff1a;优惠券秒杀 本文基于前文的黑马点评项目进行学习。 Redis 生成全局唯一ID 整个全局唯一 ID 的结构如下&#xff1a; 这里的时间戳是当前时间基于某一个基准时间&#xff08;项目开始前的某个时间点&#xff09;的时间戳。序列号是依赖 Redis 生…...

C++学习:六个月从基础到就业——C++17:if/switch初始化语句

C学习&#xff1a;六个月从基础到就业——C17&#xff1a;if/switch初始化语句 本文是我C学习之旅系列的第四十六篇技术文章&#xff0c;也是第三阶段"现代C特性"的第八篇&#xff0c;主要介绍C17引入的if和switch语句的初始化表达式特性。查看完整系列目录了解更多内…...

C++跨平台开发经验与解决方案

在当今软件开发领域&#xff0c;跨平台开发已成为一个重要的需求。C作为一种强大的系统级编程语言&#xff0c;在跨平台开发中扮演着重要角色。本文将分享在实际项目中的跨平台开发经验和解决方案。 1. 构建系统选择 CMake的优势 跨平台兼容性好 支持多种编译器和IDE 强大…...

RabbitMQ 工作模式(上)

前言 在 RabbitMQ 中&#xff0c;一共有七种工作模式&#xff0c;我们也可以打开官网了解&#xff1a; 本章我们先介绍前三种工作模式 &#xff08;Simple&#xff09;简单模式 P&#xff1a;producer 生产者&#xff0c;负责发送消息 C&#xff1a;consumer 消费者&#x…...

为什么需要加密机服务?

前言 大家好&#xff0c;我是老马。 以前我自己在写工具的时候&#xff0c;都是直接自己实现就完事了。 但是在大公司&#xff0c;或者说随着合规监管的要求&#xff0c;自己随手写的加解密之类的&#xff0c;严格说是不合规的。 作为一家技术性公司&#xff0c;特别是金融…...

【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 上篇文章&#xff1a;多路转接epoll&#xff0c;实现echoserver 至此&#xff0c;Linux与…...

c/c++的findcontours崩溃解决方案

解决 Windows 平台 OpenCV findContours 崩溃&#xff1a;一种更稳定的方法 许多在 Windows 平台上使用 OpenCV 的开发者可能会在使用 findContours 函数时&#xff0c;遇到令人头疼的程序崩溃问题。尽管网络上流传着多种解决方案&#xff0c;但它们并非总能根治此问题。 当时…...

机器学习 Day18 Support Vector Machine ——最优美的机器学习算法

1.问题导入&#xff1a; 2.SVM定义和一些最优化理论 2.1SVM中的定义 2.1.1 定义 SVM 定义&#xff1a;SVM&#xff08;Support Vector Machine&#xff0c;支持向量机&#xff09;核心是寻找超平面将样本分成两类且间隔最大 。它功能多样&#xff0c;可用于线性或非线性分类…...

npm与pnpm--为什么推荐pnpm

包管理器中 npm是最经典的&#xff0c;但大家都任意忽略一个更优质的管理器&#xff1a;pnpm 1. 核心区别 特性npmpnpm依赖存储方式扁平化结构&#xff08;可能重复依赖&#xff09;硬链接 符号链接&#xff08;共享依赖&#xff0c;节省空间&#xff09;安装速度较慢&#…...

ollama调用千问2.5-vl视频图片UI界面小程序分享

1、问题描述&#xff1a; ollama调用千问2.5-vl视频图片内容&#xff0c;通常用命令行工具不方便&#xff0c;于是做了一个python UI界面与大家分享。需要提前安装ollama&#xff0c;并下载千问qwen2.5vl:7b 模型&#xff0c;在ollama官网即可下载。 &#xff08;8G-6G 显卡可…...

济南国网数字化培训班学习笔记-第三组-1-电力通信传输网认知

电力通信传输网认知 电力通信基本情况 传输介质 传输介质类型&#xff08;导引与非导引&#xff09; 导引传输介质&#xff0c;如电缆、光纤&#xff1b; 非导引传输介质&#xff0c;如无线电波&#xff1b; 传输介质的选择影响信号传输质量 信号传输模式&#xff08;单工…...

Kubernetes控制平面组件:Kubelet详解(六):pod sandbox(pause)容器

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…...

51单片机,两路倒计时,LCD1602 ,Proteus仿真

初始上电 默认2路都是0分钟的倒计时 8个按键 4个一组 一组控制一路倒计时 4个 按键:加 减 开始或者暂停 复位到0分钟相当于停止 针对第一路倒计时 4个 按键2:加 减 开始或者暂停 复位到0分钟相当于停止 针对第2路倒计时 哪一路到了0后蜂鸣器响 对应LED点亮 main.c 文件实现了…...

MySQL之储存引擎和视图

一、储存引擎 基本介绍&#xff1a; 1、MySQL的表类型由储存引擎(Storage Engines)决定&#xff0c;主要包括MyISAM、innoDB、Memory等。 2、MySQL数据表主要支持六种类型&#xff0c;分别是&#xff1a;CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、这六种又分…...

写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果

1. 添加依赖 在项目的 pom.xml&#xff08;Maven&#xff09;中添加以下依赖&#xff1a; xml <!-- Spark SQL --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.3.0…...

一:操作系统之系统调用

系统调用&#xff1a;用户程序与操作系统交互的桥梁 在计算机的世界里&#xff0c;应用程序是我们日常接触最多的部分&#xff0c;比如浏览器、文本编辑器、游戏等等。然而&#xff0c;这些应用程序并不能直接控制硬件资源&#xff0c;比如读写硬盘、创建新进程、发送网络数据…...

【ROS2】 核心概念6——通信接口语法(Interfaces)

古月21讲/2.6_通信接口 官方文档&#xff1a;Interfaces — ROS 2 Documentation: Humble documentation 官方接口代码实战&#xff1a;https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Single-Package-Define-And-Use-Interface.html ROS 2使用简化的描…...

SmartETL函数式组件的设计与应用

SmartETL框架主要采用了面向对象的设计思想&#xff0c;将ETL过程中的处理逻辑抽象为Loader和Processor&#xff08;对应loader模块和iterator模块&#xff09;&#xff0c;所有流程组件需要继承或实现DataProvider&#xff08;iter方法&#xff09;或JsonIterator&#xff08;…...

Spring Security与SaToken的对比与优缺点分析

Spring Security与SaToken对比分析 一、框架定位 Spring Security 企业级安全解决方案&#xff0c;深度集成Spring生态提供完整的安全控制链&#xff08;认证、授权、会话管理、攻击防护&#xff09;适合中大型分布式系统 SaToken 轻量级权限认证框架&#xff0c;专注Token会…...