SQL语句(三)—— DQL
目录
基本语法
一、基础查询
1、查询多个字段
2、字段设置别名
3、去除重复记录
4、示例代码
二、条件查询
1、语法
2、条件列表常用的运算符
3、示例代码
三、分组查询
(一)聚合函数
1、介绍
2、常见的聚合函数
3、语法
4、示例代码
(二)分组查询
1、语法
2、where 与 having 区别
3、注意事项
4、示例代码
四、排序查询
1、语法
2、排序方式
3、注意事项
4、示例代码
五、分页查询
1、语法
2、注意事项
3、示例代码
六、DQL语言的实战应用
(一)执行顺序
(二)各个字句的作用
(三)实际书写代码的思路
DQL 英文全称是Data Query Language,即数据查询语言,用来查询数据库中表的记录。
在一个正常的业务系统中,查询操作的频次是要远高于增删改的。
当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。
基本语法
DQL 查询语句,语法结构如下:
select字段列表
from表名列表
where条件列表
group by分组字段列表
having分组后条件列表
order by排序字段列表
limit分页参数
我们在讲解这部分内容的时候,会将上面的完整语法进行拆分,分为以下几个部分.
① 基本查询 (不带任何条件);② 条件查询 (WHERE);③ 聚合函数 (count、max、min、avg、sum);④ 分组查询 (group by);⑤ 排序查询 (order by);⑥ 分页查询 (limit)
一、基础查询
1、查询多个字段
在基本查询的DQL语句中,不带任何的查询条件,查询的语法如下:
select 字段1, 字段2, 字段3 ... from 表名 ;
select * from 表名 ;
注意:* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。
2、字段设置别名
select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] ... from 表名;
select 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... from 表名;
注意:关键字 as 可以省略,方括号表示可以不添加。
3、去除重复记录
select distinct 字段列表 from 表名;
select 的意思是选择,在这里选择对应的字段的意思就是,选到了什么字段,什么字段就显示出来,那一列就显示出来,没有被选择到的就不显示出来。
from 的意思是来自,后面接表名,也就是说明数据来源于哪个表。
4、示例代码
(1)查询指定字段 name, workno, age 并返回
select name,workno,age from emp;
(2)查询返回所有字段
select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp;
select * from emp;
(3)查询所有人员的工作地址、起别名
select workaddress as '工作地址' from emp;
-- as可以省略
select workaddress '工作地址' from emp;
(4)查询公司员工的上班地址有哪些(不要重复)
select distinct workaddress '工作地址' from emp;
二、条件查询
1、语法
select 字段列表 from 表名 where 条件列表 ;
2、条件列表常用的运算符
(1)常用的比较运算符如下:
(2)常用的逻辑运算符如下:
3、示例代码
(1)查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;
(2)查询性别为女且年龄小于25岁的员工信息
select * from emp where gender = '女' and age < 25;
(3)查询姓名为两个字的员工信息
select * from emp where name like '__';
--like后面有两条_,说明匹配两个任意字符
(4)查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
--%可以表示任意字符,'%X只要保证最后一位是X就行了'
select * from emp where idcard like '_________________X';
三、分组查询
(一)聚合函数
1、介绍
聚合函数即将一列数据作为一个整体,进行纵向计算 。select 的作用就是选择要展现的列,其后面可以接字段与聚合函数。
select 后面接字段就是正常输出一列;而接聚合函数,就是对这一列进行相应的处理,再展示出来,其行数会做出相应的调整。
直接引用表中原始字段,未经过聚合函数处理,这列则被称为非聚合列。而经过聚合函数处理的列,则称为聚合列。
聚合函数可以单独使用,但是如当与非聚合列一起出现时,必须通过 group by 明确分组规则,否则会导致语法错误。
2、常见的聚合函数
3、语法
select 聚合函数(字段列表) from 表名 ;
注意:NULL值是不参与所有聚合函数运算的
4、示例代码
(1)统计该企业员工数量
select count(*) from emp; -- 统计的是总记录数
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数
(2)统计该企业员工的最大年龄
select max(age) from emp;
(3)统计西安地区员工的年龄之和
select sum(age) from emp where workaddress = '西安';
(二)分组查询
1、语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
2、where 与 having 区别
(1)执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
(2)判断条件不同:where不能对聚合函数进行判断,而having可以。
3、注意事项
(1)分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。[重点]
例如,我根据性别 gender 分组,分组结为男与女,所以此时就会得到得到男与女两组,即男女两行;但这两行并没有数据,仅知道一行存放男性的数据、一行存放女性的数据。
此时使用聚合函数max(age),就会在这两行呈现对应数据,即男性的最大年龄与女性的最大年龄;再接gender字段,则在两行中分别填放男、女;
但如果接 workplace 字段,性别男或性别女会对应多个工作地址,系统根本不知道显示哪个。所以 select 的后面只能接作为分组依据的字段或聚合函数。
(2)执行顺序
where > group by> 聚合函数 > having
(3)支持多字段分组,具体语法为:group by columnA,columnB
4、示例代码
(1)根据性别分组 , 统计男性员工和女性员工的数量
select gender, count(*) from emp group by gender ;
(2)查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
(3)统计各个工作地址上班的男性及女性员工的数量
select workaddress, gender, count(*) '数量' from emp group by gender , workaddress ;
四、排序查询
排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。
1、语法
select 字段列表 from 表名 order by 字段1 排序方式1 , 字段2 排序方式2 ;
2、排序方式
asc:升序(默认值)
desc:降序
3、注意事项
(1)如果是升序,可以不指定排序方式ASC,因为默认升序;
(2)如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;
4、示例代码
(1)根据年龄对公司的员工进行升序排序
select * from emp order by age asc;
select * from emp order by age;
(2)根据入职时间, 对员工进行降序排序
select * from emp order by entrydate desc;
(3)根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc , entrydate desc;
五、分页查询
分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台都需要借助于数据库的分页操作。
1、语法
select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
2、注意事项
(1)起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
(2)分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
(3)如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
3、示例代码
(1)查询第1页员工数据, 每页展示10条记录
select * from emp limit 0,10;
select * from emp limit 10;
(2)查询第2页员工数据, 每页展示10条记录,即起始索引 = (页码-1) * 页展示记录数
select * from emp limit 10,10;
六、DQL语言的实战应用
(一)执行顺序
在讲解DQL语句的具体语法之前,我们已经讲解了DQL语句的完整语法,及编写顺序,现在我们要来说明的是DQL语句在执行时的执行顺序,也就是先执行哪一部分,后执行哪一部分。
(二)各个字句的作用
① from:指定要查询的表。
② where:筛选满足条件的行。
③ group by:按照指定列对结果进行分组。
④ having:分组后,筛选满足条件的行。
⑤ select:选择要返回的列。
⑥ order by:对结果进行排序。
所以说一条语句执行的完整过程是:
from 先决定查询哪个表,where 筛选满足条件的行,group by再对指定的列进行分组,没有参与分组的列可以忽略了,因为根本select不出来,接着having 对分组后的结果进行二次筛选,筛选满足条件的行;
在前置操作完成后,select 就可以选择需要输出的列;
order by可以对输出的结果进行相应的排序,如果需要分页,则可以使用limit。
(三)实际书写代码的思路
题目:编写一个SQL查询,找出入职日期在2022年之后,所在部门员工平均工资超过5200的部门,统计这些部门的员工数量,最后按照员工数量从多到少排序。以下是表的具体内容:
-- 创建员工表
create table 员工 (员工编号 int primary key,员工姓名 varchar(50),部门 varchar(50),工资 decimal(10, 2),入职日期 date
);-- 插入示例数据
insert into 员工表 (员工编号, 员工姓名, 部门, 工资, 入职日期)
values (1, '爱丽丝', '人力资源部', 5000, '2022-01-01'),(2, '鲍勃', '信息技术部', 6000, '2022-03-15'),(3, '查理', '人力资源部', 5500, '2022-05-20'),(4, '大卫', '信息技术部', 7000, '2022-07-10'),(5, '伊芙', '财务部', 4500, '2022-09-05');
写代码的思路其实就是“代码的书写顺序”,语句的书写顺序符合的是人的思路,语句的执行顺序符合的是计算机的逻辑。【重点】
我们可以把书写代码的过程分为三部分:分组之前、分组、分组之后。
分组之前:第一步要知道,需要输出哪几列,从哪个表得到数据,即 select 与 from。根据“统计这些部门的员工数量”,可以知道,我们需要输出的有两列:部门、数量;数量需要使用聚合函数 count。接着,找出分组之前的筛选条件(where),是“入职日期在 2022 年之后”。
分组:然后要确定分组条件(group by)。我们已经知道了,输出的两列是部门与数量,因为输出的列除了聚合函数以外,就是分组条件,所以分组条件是部门。
分组之后:确定分组后的筛选条件(having)与排序规则(order by)。接着由“所在部门员工平均工资超过5200的部门”可知,在分组之后,我们还要根据平均工资 5200 进行相应的筛选;最后根据员工数量的多少进行排序。
三步之后,即可得到以下代码:
select department,count(employee_id)
fromemployees
where hire_date >= '2022-01-01'
group by department
having avg(salary) > 5200
order by count(employee_id) desc;
以上即为数据查询语言 DQL 的所有内容,我们首先对整体语句拆分,作逐个击破;然后对其整体的执行过程与书写思路作讲解,从而能在日常代码书写中,将语句写出。
相关文章:
SQL语句(三)—— DQL
目录 基本语法 一、基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 4、示例代码 二、条件查询 1、语法 2、条件列表常用的运算符 3、示例代码 三、分组查询 (一)聚合函数 1、介绍 2、常见的聚合函数 3、语法 4、示例代码 &…...
[2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
前言 类型 太赫兹 + 全光开关 太赫兹 + 全光开关 太赫兹+全光开关 期刊 A C S P H O T O N...
第十九节课: python第四周课程:程序分支结构详解
程序分支结构 1. 单分支结构 语法结构: if <条件>:<代码块>执行逻辑: 条件为真时执行代码块类似自然语言中的"如果…则…" 应用案例: # 猜数字示例 guess eval(input("请输入数字:")) if …...
NSSCTF [HGAME 2023 week1]simple_shellcode
3488.[HGAME 2023 week1]simple_shellcode 手写read函数shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…...
图形渲染中的定点数和浮点数
三种API的NDC区别 NDC全称,Normalized Device Coordinates Metal、Vulkan、OpenGL的区别如下: featureOpenGL NDCMetal NDCVulkan NDC坐标系右手左手右手z值范围[-1,1][0,1][0,1]xy视口范围[-1,1][-1,1][-1,1] GPU渲染的定点数和浮点数 定点数类型&a…...
报考高校辅导员需要具备哪些条件?
报考高校辅导员通常需要具备以下条件: 基本条件 国籍与政治面貌:具有中华人民共和国国籍,一般要求是中共党员(含预备党员)。道德品质:遵守宪法和法律,具有良好的品行,作风正派&…...
什么是Stop The World
深入解析Stop-The-World(STW):JVM垃圾回收的"世界暂停"现象 1. 什么是Stop-The-World(STW)? Stop-The-World(STW) 是JVM在执行垃圾回收(GC)时的一…...
Promise 详细说明、常用方法
Promise 详细说明 上一节:认识 Promise 1. 常用的几种方法 1.1 resolve 方法 resolve 方法作用:将一个普通的值转换成 Promise 类型的数据 方法的状态与结果受参数影响: 参数非 Promise 对象,将返回一个 Promise 对象…...
大模型学习四:DeepSeek Janus-Pro 多模态理解和生成模型 本地部署与调用指南
一、说明简介 DeepSeek Janus-Pro是一款先进的多模态理解和生成模型,旨在实现高质量的文本-图像生成与多模态理解。它是由DeepSeek团队研发的,是之前Janus模型的升级版,能够同时处理文本和图像,即可以理解图片内容,…...
康托展开原理
康托展开(Cantor Expansion) 康托展开是一种用于排列唯一编码的方法,可以把一个排列转换成一个整数,并且能够从整数反向解析出原排列。主要用于排列的唯一表示、字典序排名、全排列生成等问题。 1. 康托展开公式 给定一个长度为…...
RESTful如何传递参数
文章目录 前言一、REST 遵循核心原则二、REST 的优点和缺点1.优点2.缺点 三、常见参数传递方式1)路径参数(Path Parameters)2)查询参数(Query Parameters)3)请求体参数(Request Body…...
Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Pascal语言的贪心算法
贪心算法与Pascal语言 引言 在算法设计与分析中,贪心算法是一类重要的算法策略。它以一种直接而高效的方式解决问题,尤其适合那些可以通过局部最优解推导出全局最优解的问题。在本文中,我们将探讨贪心算法的基本概念、工作原理及其在Pascal…...
软件设计师之设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。…...
洛谷题单3-P1720 月落乌啼算钱(斐波那契数列)-python-流程图重构
题目描述 给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。 输入格式 一个整数 N N N。 …...
WinForm真入门(5)——控件的基类Control
控件的基类–Control 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。无论要学习哪个控件的使用,都离不开这些基本成员,尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征…...
第一讲—函数的极限与连续(一)
思维导图 笔记 双曲正弦函数及其反函数...
开发一个项目的顺序
目录 1.设计表 2.写好pom.xml和application.yml文件 (设置端口号,配置数据源) 3.引入一个插件,帮助自动生成dao层,model层和mapper目录的代码 4.接着配置mybatis的扫描路径,产生这些文件后,…...
第P10周:Pytorch实现车牌识别
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一.导入数据 from torchvision.transforms import transforms from torch.utils.data import DataLoader from torchvision import datase…...
如何在 Windows 上安装 Python
Python是一种高级编程语言,由于其简单性、多功能性和广泛的应用范围而变得越来越流行。如何在 Windows 操作系统中安装 Python 的过程相对简单,只需几个简单的步骤。 本文旨在指导您完成在 Windows 计算机上下载和安装 Python 的过程。 如何在 Windows…...
探秘区块链开发:智能合约在 DApp 中的地位及与传统开发差异
从:引言:当我们谈论区块链开发时,实际在讨论什么?,我们已经能够知道,当我们在讨论区块链开发的时候,大多数时间里说的就是DApp开发。 那么DApp是由什么组成的呢?从上篇文章的特征中我们得出一个技术名词”智能合约“。这是DApp的一个重要特征,也是DApp的一个重要组成…...
react redux的学习,多个reducer
redux系列文章目录 第一章 简单学习redux,单个reducer 前言 前面我们学习到的是单reducer的使用;要知道redux是个很强大的状态存储库,可以支持多个reducer的使用。 combineReducers combineReducers是Redux中的一个辅助函数,主要用于…...
SadTalker 数字人web网页版-不需要GPU也可以跑
数字人启动 Active code page: 65001 开始运行 Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] Commit hash: <none> Installing requirements for SadTalker WebUI (may take longer time in first time) Launching SadT…...
最少刷题数--二分+排序
1.考虑重复,题意是多的不超过少的,等于不算 2.所以中间的要二分判断 3.同时排序后要刷的题数也可能是pos-i,也可能是pos-i1,也要判断一下 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long lo…...
花卉识别分类系统,Python/resnet18/pytorch
花卉识别分类系统,Python/resnet18/pytorch 基于pytorch训练, resnet18网络,可用于训练其他分类问题,也可自己重新训练 共五种花卉:雏菊,蒲公英,玫瑰,向日葵,郁金香 标价包含GUI源码、数据集…...
基于 .NET 8 + Lucene.Net + 结巴分词实现全文检索与匹配度打分实战指南
文章目录 前言一、技术选型与优势1.1 技术栈介绍1.2 方案优势 二、环境搭建与配置2.1 安装 NuGet 包2.2 初始化核心组件 三、索引创建与文档管理3.1 构建索引3.2 动态更新策略 四、搜索与匹配度排序4.1 执行搜索4.2 自定义评分算法(扩展) 五、高级优化技…...
【图像处理基石】什么是neural style transfer?
1. 什么是neural style transfer? 神经风格迁移(Neural Style Transfer)是一种利用深度学习技术将一幅图像的风格(如笔触、色彩、纹理等)与另一幅图像的内容(如物体、场景结构)结合的方法。其核心思想是通…...
ubuntu20.04升级成ubuntu22.04
命令行 sudo do-release-upgrade 我是按提示输入y确认操作,也可以遇到配置文件冲突时建议选择N保留当前配置...
【C++奇遇记】C++中的进阶知识(继承(一))
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…...
SpringBoot异步任务实践指南:提升系统性能的利器
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 在现代Web应用中,高并发场景下的响应速度和资源利用率是系统设计的重要考量。SpringBoot通过简洁的异步任务机制,帮助开发者轻松…...
Gson修仙指南:谷歌大法的佛系JSON渡劫手册
各位在代码世界打坐修行的道友们!今天我们要参悟Google出品的JSON心法——Gson!这货就像代码界的扫地僧,表面朴实无华,实则内力深厚,专治各种JSON不服!准备好迎接"万物皆可JSON"的顿悟时刻了吗&a…...
MINIQMT学习课程Day8
获取qmt账号的资金账号后,我们进入下一步,如何获得当前账号的持仓情况 还是之前的步骤,打开qmt,选择独立交易, 之后使用pycharm,编写py文件。 from xtquant import xtdata from xtquant.xttrader import…...
spring-ai-alibaba第八章使用searxng构建大模型联网搜索应用
1、searxng安装配置 详见 anythingLLM结合searXNG实现联网搜索_anythingllm 配置 searxng-CSDN博客 2、本文介绍如何使用 Spring AI Alibaba 构建大模型联网搜索应用结合模块化 RAG(Module RAG)和信息检索服务(SearXNG)赋能大模…...
C#:is关键字
目录 is 关键字的核心是什么? 1. 什么是 is 关键字,为什么要用它? 2. 如何使用 is 关键字? 3. is 的作用和场景 4. is 与 as 的区别 5. 模式匹配的扩展(C# 8.0) 6. 常见陷阱和注意事项 总结&#x…...
SpringCloud第二篇:注册中心Eureka
注册中心的意义 注册中心 管理各种服务功能包括服务的注册、发现、熔断、负载、降级等,比如dubbo admin后台的各种功能。 有了注册中心,调用关系的变化,画几个简图来看一下。(了解源码可求求: 1791743380) 服务A调用服务B 有了注册中心之后&a…...
CSS语言的硬件驱动
CSS语言的硬件驱动探讨 引言 随着信息技术的迅猛发展,硬件和软件之间的交互愈发复杂,特别是在嵌入式系统、物联网设备等领域,硬件驱动程序的开发变得至关重要。而在众多编程语言中,CSS(层叠样式表)作为一…...
浅入浅出:从传统开发者角度去了解区块链和智能合约之间的关系
前言 在传统开发者视角:智能合约与区块链数据库探秘文中我为大家简单的讲解了DApp开发中智能合约开发和传统开发中数据存储层面的不同。而智能合约则是DApp中重要的组成部分,如同传统开发中的后端。 但是我们不要忘记的是:智能合约是应区块链而生的。 那么对于区块链来说…...
使用人工智能大模型DeepSeek,如何免费辅助教学?
今天我们学习DeepSeek工具如何辅助教学?DeepSeek功能很强大,带动人工智能快速发展,这里给DeepSeek点个赞。免费手把手学习视频地址:https://edu.csdn.net/learn/40402/666415 第一步,进入DeepSeek官网。打开google浏览器&#x…...
leetcode-代码随想录-链表-链表理论基础
链表: 通过指针串联在一起的线性结构;每个节点包含两部分:数据域、指针域(存放下一个节点的指针)入口节点:称为 头节点 head最后一个节点的指针指向 NULL(空指针) 链表的类型 1. 单…...
dify中配置使用Ktransformer模型
一共是两个框架一个是Ktransformer,一个是dify。 Ktransformer用来部署LLM,比如Deepseek,而LLm的应用框架平台Dify主要用来快速搭建基于LLM应用。 这篇教程主要是用来介绍两个框架的交互与对接的,不是部署Ktransformer也部署部署Dify,要部署Dify、Ktransformer可以直接参考…...
解释区块链技术的应用场景和优势
区块链技术是一种基于分布式账本的技术,被广泛应用于多个领域。以下是区块链技术的主要应用场景和优势: 应用场景: 金融领域:区块链可以用于支付结算、跨境汇款、智能合约等金融服务,提高交易效率和降低成本。物联网…...
明清两朝全方位对比
明清两朝是中国历史上最后两个封建王朝,在政治、经济、文化等方面存在显著差异,以下为主要区别: 一、政治制度 皇权集中程度 明朝:废除丞相制度,设内阁辅助皇帝,但中后期宦官专权(如刘瑾、魏…...
Mysql的事务
事务的概念 简单的说事务就是一个连贯性任务,只有一起成功或者一起失败的说法。在mysql的事务中要么事务里的sql语句成功执行,其中有出错就回滚到事务开始时候的状态。对于已经提交的事务来说,该事务对数据库所做的修改将永久生效事务的四大特性ACID 原子性(Atomicity):一件…...
chromium魔改——绕过无限debugger反调试
在进行以下操作之前,请确保已完成之前文章中提到的 源码拉取及编译 部分。 如果已顺利完成相关配置,即可继续执行后续操作。 在浏览器中实现“无限 debugger”的反调试技术是一种常见的手段,用于防止他人通过开发者工具对网页进行调试或逆向…...
【力扣hot100题】(051)腐烂的橘子
我讨厌图论。 这道题写了特别久,不过好歹也是写出来了…… 方法是先将橘子全部遍历一遍,做两件事:①找出所有连通的橘子②找出所有腐烂的橘子,设置一个vector<queue<int>>,每个vector元素代表一片连通的…...
PyTorch实现线性回归的基础写法与封装API写法
目录 1. 基础写法 1.1导包 2.2加载读取数据 2.3原始数据可视化(画图显示) 2.4线性回归的(基础)分解写法 2.5定义训练过程 2.PyTorch实现 线性回归的封装写法(实际项目中的常用写法) 2.1创建线性回归模型 2.2定义损失函数 2.3定义优化器 2.4定义训练过程 1…...
【蓝桥杯】算法笔记3
1. 最长上升子序列(LIS) 1.1. 题目 想象你有一排数字,比如:3, 1, 2, 1, 8, 5, 6 你要从中挑出一些数字,这些数字要满足两个条件: 你挑的数字的顺序要和原来序列中的顺序一致(不能打乱顺序) 你挑的数字要一个比一个大(严格递增) 问:最多能挑出多少个这样的数字? …...
【Linux】条件变量封装类及环形队列的实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
wsl2 配置ubuntu 固定ip
提示:环境搭建 文章目录 前言一、安装sshd 服务1. ubuntu 子系统安装 openssh-server2.配置sshd 开启密码链接3.配置sshd 服务开机启动 二、配置固定IP1 查看i2 查看路由3 查看wsl虚拟网卡4 配置wsl 子系统网卡4 设置生效 三、问题1. ssh 无法远程 前言 提示&#…...
电机控制学习路线
一、基础理论准备阶段 电路与电子技术 电路分析基础(基尔霍夫定律、动态电路分析) 模拟电子技术(放大器、滤波电路、功率器件) 数字电子技术(逻辑电路、微控制器基础) 数学工具 线性代数(矩…...