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

新手如何练习SQL?|掌握

对于新手想要练习SQL语句,可以从以下几个方面入手:

1. 建立理论基础

  • 首先深入理解数据库的核心组件,包括数据库本身、其内部的各个表、表中的字段及其对应的数据类型(如字符串、整型、日期等),以及数据库设计中常用的索引、主键约束(确保唯一性的关键字段)和外键约束(关联不同表之间的关系)。

2. 掌握SQL语句结构

  • DML操作:学习SQL的Data Manipulation Language部分,这是日常工作中最常用的部分。
    • SELECT语句是数据检索的核心,不仅要学会选择所需的列,还需熟练运用WHERE子句实现各种条件筛选,结合ORDER BY对结果集进行排序,以及使用LIMIT控制返回的记录条数。
    • INSERT INTO语句用于向表中插入新的数据行,明确指定要插入的列及其对应的值。
    • UPDATE语句允许你更新已存在的记录,通过设置新值替换原有数据,并通常配合WHERE子句精确定位待更新的记录。
    • DELETE语句则用于删除满足特定条件的记录,同样需要合理地使用WHERE子句防止误删数据。

逐一详细说明这些DML(数据操作语言)操作:

SELECT语句

SELECT 是SQL中最核心的数据检索命令,用于从数据库表中检索数据。它的基本语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • SELECT 后面跟着的是你想从表中选取的列名,可以用 * 表示所有列。
  • FROM 子句指定了从中检索数据的表名。
  • WHERE 子句用于设置检索条件,只有满足条件的记录才会被选中。例如:
    SELECT * FROM Employees WHERE Department = 'Sales' AND Salary > 50000;
    
  • ORDER BY 用于对检索出的结果集进行排序:
    SELECT * FROM Employees ORDER BY Salary DESC;
    
    这个例子将按工资降序排列员工列表。
  • LIMIT 用于限制返回的记录数量:
    SELECT * FROM Employees LIMIT 10;
    
    这个例子只返回前10条员工记录。

INSERT INTO语句

INSERT INTO 用于将新的记录插入到数据库表中。基本语法如下:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
  • table_name 是目标表的名字。
  • 在括号内列出你想要插入值的列名。
  • VALUES 关键字后面跟着对应列的值,值必须按照列的顺序给出,且数量和类型与列匹配。

例如:

INSERT INTO Employees (FirstName, LastName, Department, Salary)
VALUES ('John', 'Doe', 'IT', 60000);

UPDATE语句

UPDATE 用于修改数据库表中已存在的记录。基本语法如下:

UPDATE table_name
SET column1 = new_value1, column2 = new_value2, ...
WHERE condition;
  • UPDATE 后面跟的是要修改数据的表名。
  • SET 关键字后面跟着一系列列名和新值,用来更新指定列的值。
  • WHERE 子句用于指定哪些记录应该被更新。如果不加WHERE子句,则会更新表中的所有记录。

例如:

UPDATE Employees
SET Salary = Salary * 1.1
WHERE Department = 'HR' AND Year(HireDate) = 2020;

这个例子将人力资源部门2020年入职的所有员工的薪资提高10%。

DELETE语句

DELETE 用于从数据库表中删除记录。基本语法如下:

DELETE FROM table_name
WHERE condition;
  • DELETE FROM 后面跟着的是你要从其中删除记录的表名。
  • WHERE 子句至关重要,因为它指定了删除哪些记录的条件。若省略WHERE子句,将删除表中的所有记录!

例如:

DELETE FROM Employees
WHERE ID = 123;

这个例子将删除ID为123的员工记录。在执行删除操作时务必谨慎,否则可能导致不可逆的数据丢失。在生产环境中,通常会在删除前备份数据或使用事务来确保操作的安全性。

3. 扎实实战训练

  • 选择合适的环境:选择MySQL、SQLite或PostgreSQL等开源且易上手的数据库系统进行实践操作,无论是搭建本地环境还是利用在线模拟器都可以。
  • 建立及维护数据模型:从创建简单的表结构开始,定义各字段的数据类型和约束,然后填充有意义的示例数据,以便于后续的查询和操作演练。
  • 逐项练习CRUD操作
    • Create:编写SQL语句创建新表,并插入一系列示例数据,理解AUTO_INCREMENTDEFAULT等属性的应用。
    • Read:进行各种类型的查询练习,从小到简单的单表查询,再到涉及多个表的连接查询(JOIN),乃至使用聚合函数(COUNT、SUM、AVG、MAX、MIN)进行统计分析。
    • Update:根据给定条件更新特定记录,体会影响多行或多列数据的更新策略。
    • Delete:针对满足特定逻辑条件的数据记录执行删除操作,确保数据安全性和完整性。

逐一详细说明这些CRUD(数据操作语言)操作:

Create(创建)

假设我们要创建一个名为Employees的新表,包含ID(主键)、FirstNameLastNameDepartmentHireDate字段,其中ID字段自动递增,Department字段有默认值"General":

CREATE TABLE Employees (ID INT AUTO_INCREMENT,FirstName VARCHAR(50),LastName VARCHAR(50),Department VARCHAR(50) DEFAULT 'General',HireDate DATE,PRIMARY KEY (ID)
);-- 插入示例数据
INSERT INTO Employees (FirstName, LastName, HireDate)
VALUES ('John', 'Doe', '2022-01-01'),('Jane', 'Smith', '2021-05-15'),('Michael', 'Johnson', '2020-10-10');

Read(读取)

  1. 单表查询示例:查找所有在IT部门工作的员工。
SELECT * FROM Employees WHERE Department = 'IT';
  1. 联接查询(JOIN)示例:假设还有一个Departments表,包含DepartmentIDDepartmentName字段,现在想找出每位员工所在的部门名称。
SELECT E.FirstName, E.LastName, D.DepartmentName
FROM Employees AS E
JOIN Departments AS D ON E.Department = D.DepartmentID;
  1. 使用聚合函数统计分析:计算所有员工的平均薪资(假设有一个Salary字段)。
SELECT AVG(Salary) AS AverageSalary FROM Employees;

Update(更新)

更新所有在’HR’部门的员工的薪资增加10%。

UPDATE Employees
SET Salary = Salary * 1.1
WHERE Department = 'HR';

Delete(删除)

删除所有离职日期在2020年以前的员工记录。

DELETE FROM Employees
WHERE HireDate < '2021-01-01';

注意:在执行删除操作前,请确保进行了充分的数据审查和备份,以保护数据的安全性和完整性。在实际应用中,还可能需要使用事务来确保操作的一致性。

4. 应对实际挑战

  • 解决实际问题:参考在线SQL练习题库,模拟解决现实世界中的数据查询和处理问题,通过实例来锻炼自己的SQL思维和解决问题的能力。
  • 参与实战项目:寻找数据库教程配套的练习题,参与在线编程挑战或项目实战,从而积累实际应用经验。

5. 深入复杂查询技术

  • 学习高级查询方法:逐步掌握JOIN(内连接、外连接、自连接等)、UNION(合并两个或多个查询结果集)、SUBQUERY(子查询,嵌套查询)等复杂查询技术。
  • 运用分组和过滤:学会使用GROUP BY对数据进行分组,并结合HAVING子句对分组后的数据进行条件筛选,这对于数据分析尤为重要。
  • 优化查询性能:理解查询优化原则,例如避免全表扫描、合理规划索引策略,以及何时应该考虑使用临时表或视图等技术手段。

逐一详细说明这些(数据操作语言)操作:

JOIN操作

内连接(INNER JOIN)
内连接仅返回两个表中存在匹配项的记录。例如,如果我们有两个表OrdersCustomers,并且希望找出每个订单对应的客户信息:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;

外连接(OUTER JOIN)

  • 左外连接(LEFT JOIN / LEFT OUTER JOIN):返回左表的所有记录以及右表的匹配记录,如果没有匹配,则结果为NULL。
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
LEFT JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;
  • 右外连接(RIGHT JOIN / RIGHT OUTER JOIN):与左外连接相反,返回右表的所有记录以及左表的匹配记录,没有匹配的左侧记录用NULL填充。

自连接(SELF JOIN)
自连接是对同一表的连接,常用于解决层次关系查询或比较表中某个字段自身的关联情况。

SELECT A.ManagerID, A.EmployeeName AS Manager, B.EmployeeName AS Employee
FROM Employees AS A
JOIN Employees AS B
ON A.EmployeeID = B.ManagerID;

UNION操作

UNION用于合并两个或多个查询结果集,并去除重复行。

-- 获取销售额超过10000的订单,无论它们来自于哪个季度
SELECT OrderID, TotalAmount FROM Orders WHERE TotalAmount > 10000
UNION
SELECT OrderID, TotalAmount FROM QuarterlySales WHERE TotalAmount > 10000;

SUBQUERY(子查询)

子查询是在一个查询语句内部嵌套另一个查询语句。例如,找出每个部门中薪水最高的员工:

SELECT e1.Department, e1.EmployeeName, e1.Salary
FROM Employees AS e1
WHERE e1.Salary = (SELECT MAX(e2.Salary)FROM Employees AS e2WHERE e1.Department = e2.Department
);

分组与HAVING子句

分组和HAVING通常一起使用,先使用GROUP BY对数据进行分类,再用HAVING筛选分组结果。

-- 统计每个部门的平均薪资,并只显示平均薪资超过50000的部门
SELECT Department, AVG(Salary) as AverageSalary
FROM Employees
GROUP BY Department
HAVING AVG(Salary) > 50000;

查询性能优化

避免全表扫描

  • 使用索引:在经常出现在WHERE、JOIN条件和ORDER BY子句中的列上创建索引,能够显著提高查询速度。
  • 精确的WHERE条件:尽量减少模糊查询和范围查询,如LIKE ‘%…%’ 或 BETWEEN,这类查询往往无法有效利用索引。

合理规划索引

  • 考虑覆盖索引:如果索引包含了查询所须的所有列,那么数据库可以直接从索引中获取所需信息,无需回表查询,从而提升效率。
  • 索引冗余和联合索引:根据实际业务需求创建复合索引(多个列组合成的索引)。

临时表与视图

  • 临时表:当处理大量中间结果或频繁重用某查询结果时,可以考虑将结果暂存到临时表,但要注意临时表也占用资源,且不是所有查询都适合用临时表优化。
  • 视图:视图可以简化复杂的查询结构,有时候通过创建视图将复杂查询封装起来,并在视图的基础上进行简单查询,可以提高查询可读性和一定程度上的性能。

然而,实际的查询性能优化还需要综合考虑多种因素,如表设计、索引优化、查询计划、硬件资源等。在数据库管理系统中,通常会有查询执行计划分析工具帮助我们识别低效查询并针对性地进行优化。

6. 利用在线资源辅助学习

  • 利用在线SQL编辑器:借助SQL Fiddle、SQLite Online等在线工具,实时编写和执行SQL语句,直观地观察查询结果,便于快速验证和调整SQL代码。

7. 持续巩固与深化

  • 定期复习和总结:周期性地回顾已经学习过的SQL知识点,并整理成笔记或个人文档,通过持续复习加强记忆。
  • 积极参与社区互动:加入SQL学习社群,参与线上课程或论坛讨论,与同行分享SQL查询案例和解决方案,共同进步。

相关文章:

新手如何练习SQL?|掌握

对于新手想要练习SQL语句&#xff0c;可以从以下几个方面入手&#xff1a; 1. 建立理论基础 首先深入理解数据库的核心组件&#xff0c;包括数据库本身、其内部的各个表、表中的字段及其对应的数据类型&#xff08;如字符串、整型、日期等&#xff09;&#xff0c;以及数据库…...

JavaScript宝典下

小哆啦闭关修炼已久&#xff0c;潜心攻读专业秘技&#xff0c;方才下山考研本欲大展宏图&#xff0c;怎奈山河虽壮志难酬&#xff0c;终是觉察考研无望。思来想去&#xff0c;不若弃考研之念&#xff0c;重拾敲代码之道&#xff0c;复盘前端奇术&#xff0c;以备闯荡职场江湖。…...

浅谈云计算12 | KVM虚拟化技术

KVM虚拟化技术 一、KVM虚拟化技术基础1.1 KVM虚拟化技术简介1.2 KVM虚拟化技术架构1.2.1 KVM内核模块1.2.2 用户空间工具&#xff08;QEMU、Libvirt等&#xff09; 二、KVM虚拟化技术原理2.1 硬件辅助虚拟化2.2 VMCS结构与工作机制 三、KVM虚拟化技术面临的挑战与应对策略3.1 性…...

Spring Boot 动态表操作服务实现

Spring Boot 动态表操作服务实现 Spring Boot 动态表操作服务实现1. 环境配置2. JdbcTemplate 的使用2.1 创建动态表2.2 动态添加字段2.3 动态删除字段2.4 动态修改字段类型2.5 删除表的方法实现 3. 小结3.1 可能的优化 Spring Boot 动态表操作服务实现 在现代的应用开发中&am…...

62_Redis服务器集群优化

Redis集群虽然具备高可用特性,且能实现自动故障恢复,但是如果使用不当,也会存在一些问题,总结如下。 集群完整性问题集群带宽问题数据倾斜问题客户端性能问题命令的集群兼容性问题Lua和事务问题1.集群完整性问题 在 Redis 集群的默认配置下,当节点检测到存在至少一个哈希…...

晨辉面试抽签和评分管理系统之九:随机编排考生的分组(以教师资格考试面试为例)

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

Linux Top 命令 load average 指标解读

前言 作为平台开发的同学&#xff0c;维护平台稳定性是我们最基本的工作职责&#xff0c;下面主要介绍下top 命令里 &#xff0c;load average 这个指标如何去衡量机器负载程度。 概念介绍 load average 是系统在过去 1 分钟、5 分钟、15 分钟 的平均负载&#xff0c;它表示运…...

Nacos: 一个动态服务发现与配置管理平台

Nacos: 一个动态服务发现与配置管理平台 引言 在微服务架构日益普及的今天&#xff0c;服务之间的调用和配置管理变得越来越复杂。为了简化这一过程并提高开发效率&#xff0c;阿里巴巴推出了Nacos——一个易于使用的动态服务发现、配置管理和服务管理平台。 Nacos是什么&am…...

SpringBoot + 事务钩子函数

一、案例背景 拿支付系统相关的业务来举例。在支付系统中&#xff0c;我们需要记录每个账户的资金流水&#xff08;记录用户A因为哪个操作扣了钱&#xff0c;因为哪个操作加了钱&#xff09;&#xff0c;这样我们才能对每个账户的账做到心中有数&#xff0c;对于支付系统而言&…...

OpenCV相机标定与3D重建(56)估计物体姿态(即旋转和平移)的函数solvePnPRansac()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用RANSAC方案从3D-2D点对应关系中找到物体的姿态。 cv::solvePnPRansac 是 OpenCV 中用于估计物体姿态&#xff08;即旋转和平移&#xff09;的…...

【JVM中的三色标记法是什么?】

JVM中的三色标记法是什么? 一、基本概念二、标记过程三、优势与问题四、漏标与多标的解决方案三色标记法(Tri-color Marking Algorithm)是Java虚拟机(JVM)中一种用于追踪对象存活状态的垃圾回收算法。 它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法…...

从0开始学习搭网站第二天

前言&#xff1a;今天比较惭愧&#xff0c;中午打铲吃了一把&#xff0c;看着也到钻二了&#xff0c;干脆顺手把这个赛季的大师上了&#xff0c;于是乎一直到网上才开始工作&#xff0c;同样&#xff0c;今天的学习内容大多来自mdn社区mdn 目录 怎么把文件上传到web服务器采用S…...

43.Textbox的数据绑定 C#例子 WPF例子

固定最简步骤&#xff0c;包括 XAML&#xff1a; 题头里引入命名空间 标题下面引入类 box和block绑定属性 C#&#xff1a; 通知的类&#xff0c;及对应固定的任务 引入字段 引入属性 属性双触发&#xff0c;其中一个更新block的属性 block>指向box的属性 从Textbo…...

钉钉实现第三方登录示例(重复回调问题解析)

钉钉作为专门为企业打造的沟通协助平台&#xff0c;包含的功能很多&#xff0c;考勤打卡&#xff0c;审批&#xff0c;日记&#xff0c;钉盘&#xff0c;钉邮等。基本满足了一些中小企业的大部分工作需求。因此对接钉钉的一些功能模块业务需求在开发中也是比较常见的。钉钉的开…...

Vue2+OpenLayers添加/删除点、点击事件功能实现(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、安装Element-UI 四、代码实现 4.1、添加一个点 4.2、删除所有点 4.3、根据经纬度删除点 4.4、给点添加点击事件 4.5、完整代码 五、Gitee源码 一、案例截图 可以新增/删除标记点&#xff0c;点击标记点可以获取到当前标…...

算法妙妙屋-------2..回溯的奇妙律动

回溯算法是一种用于系统性地搜索和解决问题的算法&#xff0c;它以深度优先搜索&#xff08;DFS&#xff09;为基础&#xff0c;用来探索所有可能的解决方案。通过递归地尝试候选解并在必要时回退&#xff08;即“回溯”&#xff09;&#xff0c;它能够高效地解决许多涉及组合、…...

pytest-instafail:让测试失败信息即时反馈

pytest-instafail&#xff1a;让测试失败信息即时反馈 前言一、简介二、优势三、安装与使用3.1 未安装时运行情况3.2 安装3.3 已安装时运行情况3.3 pytest.ini 配置选项 四、对比 总结 前言 当测试用例数量庞大时&#xff0c;定位测试失败的原因往往耗时费力。此时&#xff0c;…...

K8S--配置存活、就绪和启动探针

目录 1 本人基础环境2 目的3 存活、就绪和启动探针介绍3.1 存活探针3.2 就绪探针3.3 启动探针 4 探针使用场景4.1 存活探针4.2 就绪探针4.3 启动探针 5 配置存活、就绪和启动探针5.1 定义存活探针5.2 定义一个存活态 HTTP 请求接口5.3 定义 TCP 的就绪探针、存活探测5.4 定义 g…...

solidity基础 -- 枚举

在智能合约开发领域&#xff0c;Solidity语言因其简洁高效而被广泛使用。其中&#xff0c;枚举&#xff08;enum&#xff09;作为一种特殊的数据类型&#xff0c;为合约的状态管理提供了极大的便利。本文将通过一个具体的Solidity合约示例&#xff0c;深入探讨枚举的定义、使用…...

重回C语言之老兵重装上阵(六)枚举

1. 什么是枚举 (enum)&#xff1f; 枚举&#xff08;enum&#xff09;是 C 语言中的一种数据类型&#xff0c;用于定义一组具名的整数常量。它可以使代码更加可读&#xff0c;帮助程序员更容易理解程序中的常量值。通过枚举&#xff0c;程序员可以使用有意义的名称来代替数字&…...

python+playwright自动化测试(一):安装及简单使用,截图录屏

目录 基本使用 浏览器调用 启用浏览器 创建窗口对象 访问URL 页面的刷新、返回、前进 关闭 截图、录屏、保存pdf 截图 录屏 保存为pdf 设置窗口大小 调试模式 手机模式及new_context的更多参数 手机模式 new_context的其他参数 设置语言和时区 设置和修改位置…...

Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)

MySQL是一种广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;其体系结构设计旨在提供高效的数据存储、查询处理和事务管理。MySQL的体系结构可以分为多个层次&#xff0c;每个层次负责不同的功能模块。 MySQL的体系结构主要由以下几个部分组成&#…...

git merge 压缩提交

在 Git 中&#xff0c;执行 git merge 时可以通过一些操作来“压缩”提交&#xff0c;通常是指将合并过程中的多个提交压缩成一个单一的提交。这可以通过使用 --squash 选项来完成&#xff0c;或者在合并后进行交互式 rebase。以下是两种常见的方法&#xff1a; 方法 1&#x…...

Python脚本自动发送电子邮件

要编写一个Python脚本来自动发送电子邮件&#xff0c;你可以使用smtplib库来处理SMTP协议&#xff0c;以及email库来构建邮件内容。 安装必要的库 通常情况下&#xff0c;smtplib和email库是Python标准库的一部分&#xff0c;因此不需要额外安装。如果你使用的是较旧的Python版…...

uniapp中rpx和upx的区别

在 UniApp 中&#xff0c;rpx 和 upx 是两种不同的单位&#xff0c;它们的主要区别在于适用的场景和计算方式。 ### rpx&#xff08;Responsive Pixel&#xff09; - **适用场景**&#xff1a;rpx 是一种响应式单位&#xff0c;主要用于小程序和移动端的布局。 - **计算方式**…...

CentOS 9 Stream 中查看 Python 版本并升级 Python

CentOS 9 Stream 中查看 Python 版本并升级 Python 1. 查看当前 Python 版本2. 升级 Python 版本&#xff08;1&#xff09;安装开发工具&#xff08;2&#xff09;安装必要的依赖包&#xff08;3&#xff09;下载和安装新版本的 Python&#xff08;4&#xff09;验证安装 3. …...

可以用于分割字符串的方法(python)

一、str.split(sep,maxsplit)函数&#xff08;返回列表&#xff09; sep&#xff1a;分隔符 maxsplit&#xff1a;分割次数 a"Hello world" list1a.split(" ",1) print(list1) 结果&#xff1a; [Hello, world] 二、str.rsplit(sep,maxsplit)函数&…...

【Vue】全局/局部组件使用流程(Vue2为例)

全局组件和局部组件区别 如何使用 全局组件&#xff1a;全局注册后&#xff0c;可以在任意页面中直接使用。局部组件&#xff1a;在页面中需要先导入子组件路径&#xff0c;注册组件才能使用。 适用场景 全局组件&#xff1a;适用于高频使用的组件&#xff0c;如导航栏、业…...

virtual box虚拟机误删Python3.6后导致UBUNTU18.04开机无UI界面(进不了desktop)的解决方法

最近在解决一个python引起的问题的时候&#xff0c;作者心一狠&#xff0c;删了系统自带的python3.6&#xff0c; 顺便还删了python3。导致重启后ubuntu的virtual box虚拟机无法看到UI登录界面&#xff0c;只给我了孤零零的命令行。装了很多东西不可能重装&#xff0c;无奈只能…...

虚拟线程JDK与Spring Core Reactor

两种虚拟线程对比&#xff1a;JDK vs. Spring Core Reactor性能对比 1、基于 JDK 的虚拟线程实现&#xff1a; 摘自实际代码&#xff1a; public static void withFlatMapUsingJDK() { ... var virtualThreadExecutor Executors.newThreadPerTaskExecutor( Thread .ofVirtual…...

纯 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差异分析

一、纯 Python 1.1 基础概念 Python 是一种高级、通用、解释型的编程语言&#xff0c;以其简洁易读的语法和丰富的标准库而闻名。“纯 Python” 在这里指的是不依赖特定的 Web 框架或数据分析工具&#xff0c;仅使用 Python 原生的功能和标准库来开发应用程序或执行任务。 1.…...

C++ NULL和nullptr

NULL实际是一个宏&#xff0c;在传统的C头文件(stddef.h)中&#xff0c;可以看到如下代码: #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif 如上是条件编译的宏定义 确保在不同编程环境下正确处理NULL的定义 C中NULL可能被定义…...

算法日记1:洛谷p2678跳石头(二分答案)

1、题目 二、题解&#xff1a; 2.1解题思路: 1.题目要求求出最小值最大&#xff0c;明显的二分答案题目&#xff0c;所以我们可以二分可以跳跃距离int l-1,rL1; 2.此时我们思考lmid和rmid的处理,当我们的check(mid)为true时候 表明我们此时的mid是符合要求的&#xff0c; 那么…...

PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析

PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析 目录 PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析1. 引言2. PID控制器的基本概念2.1 PID控制器的定义2.2 PID控制器的核心思想2.3 PID控制器的应用领域 3. PID控…...

Vue中nextTick实现原理

源码实现思路&#xff08;面试高分回答&#xff09; 面试官问我 Vue 的 nextTick 原理是怎么实现的&#xff0c;我这样回答&#xff1a; 在调用 this.$nextTick(cb) 之前&#xff1a; 存在一个 callbacks 数组&#xff0c;用于存放所有的 cb 回调函数。存在一个 flushCallbac…...

【MATLAB】subplot如何增加title

在 Matlab 中&#xff0c;使用 subplot 函数将图形窗口划分为多个子图&#xff0c;并使用 title 函数为每个子图添加标题。以下是一个示例&#xff1a; matlab % 生成示例数据 x 0:0.1:10; y1 sin(x); y2 cos(x); % 创建一个 2 行 1 列的子图布局&#xff0c;并选…...

vue3+ts的<img :src=““ >写法

vue3ts的<img :src"" >写法<img :src"datasetImage" alt"数据分布示意图" /><script setup lang"ts">const datasetImage ref();datasetImage.value new URL(../../../assets/images/login-background.jpg, impo…...

Vue+Echarts+百度地图 实现 路径规划

实现功能: 通过选择 相关调拨&#xff0c;系统自动规划 路径&#xff0c;并且以地图的形式呈现最佳路径 技术难点: 1. vue 结合使用 echarts 2.echarts 在 vue嵌入百度地图&#xff0c;并且做出路径 曲线 最终结果:...

uniapp 小程序 textarea 层级穿透,聚焦光标位置错误怎么办?

前言 在开发微信小程序时&#xff0c;使用 textarea 组件可能会遇到一些棘手的问题。最近我在使用 uniapp 开发微信小程序时&#xff0c;就遇到了两个非常令人头疼的问题&#xff1a; 层级穿透&#xff1a;由于 textarea 是原生组件&#xff0c;任何元素都无法遮盖住它。当其…...

IGP协议的双点双向注入(路由引入)

一、拓扑环境 二、单向注入 以上拓扑为例&#xff0c;单点注入存在路由回包问题 在AR5上注入直连路由 55.5.5.5 需求&#xff1a;AR1上的10.1.1.1 需访问AR5上的55.5.5.5 1、在AR2和AR3上查看注入的55.5.5.5的路由信息 2、现在边界设备以学习到目的网段的路由信息&#xff0…...

【React】新建React项目

目录 create-react-app基础运用React核心依赖React 核心思想&#xff1a;数据驱动React 采用 MVC体系package.jsonindex.html好书推荐 官方提供了快速构建React 项目的脚手架&#xff1a; create-react-app &#xff0c;目前使用它安装默认是19版本&#xff0c;我们这里降为18…...

“AI 自动化效能评估系统:开启企业高效发展新征程

在当今数字化飞速发展的时代&#xff0c;企业面临着日益激烈的市场竞争&#xff0c;如何提升效率、降低成本成为了企业生存与发展的关键。AI 自动化效能评估系统应运而生&#xff0c;它如同一把智能钥匙&#xff0c;为企业开启了高效发展的新征程。 AI 自动化效能评估系统&…...

免 root 开启 Pixel 手机 VoLTE 功能

部分运营商需要开启 VoLTE 功能才可以正常通话和接收短信&#xff0c;但是默认情况下&#xff0c;Pixel 是无法开启的&#xff0c;需要我们手动开启一下。经过网友的确认&#xff0c;这种方法还适用于荣耀 MAGIC 等其他品牌的手机。 具体流程如下&#xff1a; 1.打开开发者选…...

华为2024嵌入式研发面试题

01 你认为最好的排序算法是什么&#xff1f; 在实际的编程中&#xff0c;最好的排序算法要根据实际需求和数据规模来选择&#xff0c;因为每种排序算法都有其优势和劣势。以下是一些常见排序算法及其优缺点&#xff1a; 冒泡排序 冒泡排序是一种简单直观的排序算法&#xff0…...

Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法

报错信息&#xff1a; android.database.sqlite.SQLiteException: too many SQL variables (code 1 SQLITE_ERROR): while compiling: SELECT * FROM points WHERE id IN (?,?,?,...,?,?,?)SQLiteException: too many SQL variables 通常是由于一次查询或插入的 SQL 语句…...

PHP 字符串

PHP 字符串 引言 在 PHP 中&#xff0c;字符串是一种非常基础且重要的数据类型。字符串可以包含字母、数字、标点符号以及特殊字符。PHP 提供了丰富的字符串函数&#xff0c;使得字符串操作变得简单而高效。本文将详细介绍 PHP 中字符串的常用操作&#xff0c;包括字符串的创…...

Android15源码编译问题处理

最近想在Raspberry Pi5上面运行自己编译的Android15镜像,参考如下链接来处理: GitHub - raspberry-vanilla/android_local_manifest GitHub - raspberry-vanilla/android_kernel_manifest 代码同步完后,编译就出问题了,总是提示: FAILED: analyzing Android.bp files and…...

Transformer架构和Transformers 库和Hugging Face

Transformer架构 和 Hugging Face 之间的关系非常紧密&#xff0c;Hugging Face 是推动 Transformer 架构普及和应用的重要力量。以下是两者的关系及其具体联系&#xff1a; 1. Transformer 架构 背景: Transformer 是由 Google 在 2017 年提出的革命性架构&#xff0c;基于自…...

【机器学习 | 数据挖掘】离群点检测

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…...

【极速版 -- 大模型入门到进阶】除了 Prompting, 大模型还能如何被应用?

文章目录 大模型应用 -- Generative AI Projects&#x1f30a; 大模型应用的时效优势&#x1f30a; 大模型应用的方式 - Technology Options应用方式一 &#x1f41f; Prompting&#xff1a;最简单快速应用方式二&#x1f41f; Retrieval augmented generation (RAG)&#xff1…...