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

MySQL知识点(第一部分)

MySQL

基础:

1、SQL语句的分类:
  • DDL:用于控制数据库的操作
  • DML:用于控制表结构的字段,增、删、修
  • DQL:用于查询语句
  • DCL:用于管理数据库,用户,数据库的访问 权限。
2、MySQL的DQL语句的执行顺序:

先执行 from where group by select order by limit

3、事务
1、事务的实现方式:

方式一:

查询当前系统是否为自动提交事务,如果是 0 是手动提交,1 是自动提交

select @@autocommit;

设置为手动提交

set @@autocommit = 0;

手动提交事务

commit;

回滚事务

rollback;

方式二:

手动开启事务,表示下面的操作要手动控制事务

start transaction;
2、事务的四大特性(ACID):

1、原子性:是最小分割的操作单元,要么全部成功,要么全部失败。

2、一致性:事务完成时,必须使所有的数据都保持一致。

3、隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

4、持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

3、并发事物的问题:

1、脏读:一个事务读取到另一个事务还没有提交的数据。

2、不可重复读:一个事务先后读取同一条记录,但是两次读取的数据不同。

3、幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了一个幻影,再次查询又查

​ 不到,因为已经解决了不可重读的问题,因此会出现幻读的问题。

4、事务的隔离级别(解决并发事务的问题):

1、Read uncommitted :什么都不能解决。

2、Read committed :只能解决脏读。

3、Repeatable Read(默认) :只解决脏读、不可重复读。

4、Serializable :所有的都能解决。

-- 查看事务的隔离级别
select @@transaction_isolation;
-- 修改事务的隔离级别
-- session 表示仅在当前窗口有效,global 表示全局有效。
set session transaction isolation level serializable;

进阶:

1、储存引擎:
1、MySQL的体系结构:

1、连接层:与客户端的链接,密码的校验等

2、服务层:所有的查询接口,优化器,部分函数的执行等

3、引擎层:可插拔式的存储引擎,不同的引擎具有不同的功能,默认InnoDB

4、存储层:磁盘文件,日志等

2、存储引擎的介绍:

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎可以被称为表类型。

-- 查看数据库所支持的存储引擎
show engines;
3、存储引擎的特点:
1、InnoDB:
  • 特点

    • DML操作遵循ACID模型,支持事务。

    • 支持行级锁,提高并发性。

    • 支持外键约束,保证数据的完整性和正确性。

  • 文件

    • xxx.ibd :xxx 代表的是表名,innoDB 引擎的每张表都会对应这样一个表空间,存储该表的表结构、数据、索引。
    • 参数:innodb_file_per_table: 表示是否开启每张表都对应一个表空间文件,默认是开启的。
  • 逻辑空间结构:
    表空间 —> 段 —> 区 —> 页 —> 行

2、MySAM
  • 特点
    • 不支持事务,不支持外键
    • 支持表锁,不支持行锁
    • 访问速度快
  • 文件
    • xxx.sdi 存储表结构信息
    • xxx.MYD 存储数据
    • xxx.MYI 存储索引
3、Memory(了解):
  • 特点
    • 内存存放
    • hash索引
  • 文件
    • xxx.sdi 存储表结构信息
2、索引
1、索引概述:

索引是一种有序的数据结构,用于高效的获取数据。

**优点:**提高检索效率,降低IO成本。通过索引排序,降低CPU的消耗。

**缺点:**索引也会占用存储空间,并且再插入和删除数据时,需要维护索引结构。

2、索引结构:

1、B+Tree索引:最常见的索引类型,大部分引擎都支持B+树索引。

  • 二叉树的缺点:顺序插入时,会形成一个链表,查询性能大大降低,大数据量的情况下,层级越深,检索速度越慢。
  • 红黑树的缺点:大数据量的情况下,层级越深,检索速度越慢。
  • B-Tree:不论是叶子节点还是非叶子节点,都会保存数据,导致保存大量数据时,只能增加树的高度,导致性能降低。
  • MySQL的B+Tree:所有数据都出现在叶子节点,叶子节点也形成一个双向链表。

2、Hash索引:底层数据结构使用hash表实现的,只有精确匹配索引类的查询才有效,不支持范围查询,排序操作。

  • 先计算每行的hash值,再根据hash的字段,通过hash算法计算在hash表中的槽位,并存储这一行所计算出来的hash值来定位。

3、R-Tree(空间索引):空间索引是MySAM引擎的一个特殊索引,只要用于地理空间数据类型,通常使用较少

4、Full-text(全文索引):是一种通过建立倒排索引,快速匹配文档的方式,雷素与ES

3、索引分类:

1、在innoDB中储存引擎中可分为两种:注意:底层结构都是B+Tree,只不过是叶子节点的数据不同

  • 唯一索引(了解):不可重复

  • 全文索引(了解):类似于ES的倒排索引

  • 聚集索引:将数据存储与索引放到一块,索引结构的叶子节点保存行数据。必须有,而且只能有一个

    • 聚集索引的选取规则:
      • 如果存在主键,主键索引就是聚集索引。
      • 如果不存在主键,将使用第一个唯一索引作为聚集索引。
      • 如果表中没有主键,或者没有适合的唯一索引,则innoDB会自动生成一个rowid作为隐藏的聚集索引。
  • 二级索引:将数据与索引分开存储,索引结构的叶子节点关联的时对应的主键。可以存在多个。

  • 查询流程:
    由于二级索储存的是索引数据和该条数据的主键,对于非覆盖索引查询,都需要回表查询。

4、索引语法:
-- 创建索引:[唯一索引|全文索引] index 索引名 on 表名 (字段名1,字段2,...)
-- 索引表的名称一般为:idx_表明_字段名
create [UNIQUE|FULLTEXT] index index_name on table_name (index_col_name,...);
-- 查看索引
show index from table_name
-- 删除索引
drop index index_name on table_name
5、SQL性能分析
-- 查看数据库所有语句的执行频次:session表示当前会话的,global表示全局
show [session|global] status like 'Com_______';
-- 慢查日志-- 查看慢查询日志是否开启show variables like 'slow_query_log';-- 开启MySQL慢日志查询开关slow_query_log=1-- 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会被视为慢查询,记录慢查询的日志。long_query_time=2
-- profiling-- 查看当前数据库是否支持select @@have_profiling-- 是否开启select @@profiling-- 开启set profiling=1-- 查看show profiles
-- explain 查看搜索的执行情况explain select * from user;
6、索引的使用
1、最左前缀法则:

​ 如果索引了多列,(联合索引),要遵循最左前缀法则,指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳过了某一列,索引将部分失效(后面的字段索引也失效)

​ 就是如果一个索引表关联了多个字段,那末,查询时必须包含最左边的字段时,索引才生效,否则,索引不生效。如果关联的是三个字段,如:A B C 那么,在查询时,如果where A=’‘,B= ’‘,C= ’‘ ;索引生效,如果B = ’‘,C=’‘。索引失效,如果:A=’‘,C=’‘;A索引生效,C索引失效;只与存不存在有关,跟位置无关:C B A 也走索引,而且全部生效;

2、范围查询

如果使用了> 或 < 的字段,则其后面的索引失效,但是,如果使用的是 >= 或 <= 则不失效。

3、索引运算

如果索引字段进行函数运算,则索引失效

4、字符串不加单引号

字符串不加 ‘ ’ 则索引失效

5、模糊查询

尾部模糊(后面加%)查询走索引,后面模糊(前面加%)不走索引

6、or

or连接的索引,如果前面有索引,后面没索引,那么索引失效。解决:给字段建立索引。

7、数据分布

如果Mysql判断,走全表扫描快还是走索引快,那个快用哪个。

8、SQL提示

1、use index(索引名) :可以用哪个索引

2、ignore index(索引名) :忽略哪个索引

3、force index(索引名) :必须使用哪个索引

9、覆盖索引

覆盖索引就是只查询二级索引,就能查出来需要的字段,不需要回表查询

select 后不要写 * 要写需要的字段

10、前缀索引

在处理比较长的索引的时候。

语法:create index idx_xxxx on table_name(column(n))表示我要将字符串的一部分前缀建立索引从而节省索引的空间。

通过数据的 字段不重复的记录数 / 总记录数 的值,如果越接近 1 ,就越好。

3、SQL优化
1、插入数据
  • insert优化
    • 批量插入
    • 手动提交事务
    • 主键顺序插入
  • 大批量插入数据
    • 使用load指令
    • 连接服务端时,加上参数:mysql --local-infile -u root -p
    • 开启本地加载目录的开关:set global local_infile=1
    • 执行load指令,将准备好的数据加载到表结构中:load data local infile '文件路径' into table '表名' fields terminated by ',' lines terminated by '\n'
2、主键优化
1、数据组织方式

在innoDB引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表

2、页分裂

在主键乱序插入的情况下,由于要保证在每一页中的主键是有序的。因此,当一个主键的位置被占用时,就会开辟一块新的页,将这个中一半的数据都移动到新的页上面,然后再将当前数据插入到对应的位置,最后修改页指针,确保每一页之间也是有序的。

3、页合并

当删除一行记录时,并没有被物理的删除,只是被标记为删除,当页中删除的记录数道道MERGE_THRESHOLD(阈值默认为 50%),就会寻找最靠近的页看看是否能将两个页合并以优化空间的使用。阈值可以在创建表时指定。

4、主键的设计原则
  • 尽量降低主键的长度
  • 插入时,尽量使用AUTO_INCREMENT主键自增
  • 避免对主键的修改
3、order by 优化

① Using filesort :通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序

② Using index :通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率高。

  • 尽量使用覆盖排序,也可以调整排序缓冲区,默认是(256K)
4、group by 的优化

通过建立索引,并满足最左前缀原则。

5、limit 的优化

一般通过覆盖索引 + 子查询的方式。

select * from user u,(select id from user order by id limit 2000000,10) a where u.id = a.id;

也就等于

select * from user u right join (select id from user order by id limit 2000000,10) a on a.id = u.id;

6、count 的优化

目前没有好的优化记录,但是可以自己维护总数据数。

  • count(主键):直接把每一行的id取出来,返回服务层后累加。
  • count(字段):会判断字段是否为空,为空则不记录数,如果用not null 约束后,则不用判断
  • count(1):遍历整张表,不取值,每一行放一个 1 进去,后累加
  • count(*):由于Mysql专门做了优化,因此不取值,直接按行累加(建议使用
3、Update 语句

执行update语句时,要根据索引进行更新,否则会将行锁升级为表锁,锁住整张表,提交事务之前,其他的事务不能对这张表做修改操作。

4、视图
1、概括

视图是一种虚拟存在的表。只是保存了查询SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就是创建SQL语句上。

2、创建/修改/删除视图
-- create or replace view 视图名 as 查询语句
create or replace view test as select * from user;-- 检查选项:with [cascaded(默认),local] check option
create or replace view test as select * from user where id <= 30 with [cascaded,local] check option;
-- 当向视图中插入、更新、删除时 id > 30 的数据时,就会报错失败。
-- cascaded:由于视图可以依赖其他的视图创建,这个可以检查这个视图所依赖的视图,
-- 注意:如果创建的视图没有检查选项,那么即便是他所依赖的视图有检查选项,也不会检查,检查选项只能向上传递,不能向下传递。
--  	同时,如果上一层视图没有定义检查选项,那末也会检查(区别)-- local:表示,检查当前视图的的条件,同时也会递归去找上一层,但是,如果上一层没有定义检查选项,就不检查上一层。
-- 删除视图
drop view 视图名
3、查询/修改视图
-- 查询视图的创建语句
show create view 视图名
-- 由于试图是一张虚拟的表,也可以通过查询表的方式,查询视图
select * from 视图名 where ....-- 修改就是正常表的修改,但是,如果视图是定义的聚合函数,那末视图就不可进行插入,删除等操作。
5、存储过程
1、概括:

存储过程是事先金经过编译并储存在数据库中的一段SQL集合,调用存储存储过程可简化开发,减少数据库和应用服务器之间的传输,提高效率。简单来说:就是数据库SQL语言层面的代码封装和重用。

2、特点:
  • 封装、重用。
  • 可以接收参数,返回数据
  • 减少网络交互,减少网络的开销
3、创建、调用存储过程:
  • 创建

    create procedure 储存过程名([参数列表])
    begin
    -- SQL语句
    end:
    
  • 调用

    call 名称([参数])
    
  • 查看创建命令、删除

    show procedure 储存过程名
    

相关文章:

MySQL知识点(第一部分)

MySQL 基础&#xff1a; 1、SQL语句的分类&#xff1a; DDL&#xff1a;用于控制数据库的操作DML&#xff1a;用于控制表结构的字段&#xff0c;增、删、修DQL&#xff1a;用于查询语句DCL&#xff1a;用于管理数据库&#xff0c;用户&#xff0c;数据库的访问 权限。 2、M…...

ChatGPT使用经验分享

ChatGPT 3.5模型 与 4模型的区别 ChatGPT 3.5 示例 问&#xff1a;树上有9只鸟&#xff0c;打死了一只还剩几只&#xff1f; 答&#xff1a;如果打死了一只鸟&#xff0c;那么树上还剩下8只鸟。 ChatGPT 4 示例 问&#xff1a;树上有9只鸟&#xff0c;打死了一只还剩几只&…...

Webshell原理与利用

本文内容仅用于技术研究、网络安全防御及合法授权的渗透测试&#xff0c;严禁用于任何非法入侵、破坏或未经授权的网络活动。 1. WebShell的定义与原理 定义&#xff1a;WebShell是一种基于Web脚本语言&#xff08;如PHP、ASP、JSP&#xff09;编写的恶意后门程序&#xff0c;…...

Java直通车系列15【Spring MVC】(ModelAndView 使用)

目录 1. ModelAndView 概述 2. ModelAndView 的主要属性和方法 主要属性 主要方法 3. 场景示例 示例 1&#xff1a;简单的 ModelAndView 使用 示例 2&#xff1a;使用 ModelAndView 处理列表数据 示例 3&#xff1a;使用 ModelAndView 处理异常情况 1. ModelAndView 概…...

大模型系列课程学习-基于Vllm/Ollama/Ktransformers完成Deepseek推理服务部署

1.机器配置及实验说明 基于前期搭建的双卡机器装机教程&#xff0c;配置如下&#xff1a; 硬件名称参数备注CPUE5-2680V42 *2&#xff08;线程28个&#xff09;无GPU2080TI-22G 双卡魔改卡系统WSL Unbuntu 22.04.5 LTS虚拟机 本轮实验目的&#xff1a;基于VLLM/Ollama/ktran…...

基于深度文档理解的开源 RAG 引擎RAGFlow的介绍和安装

目录 前言1. RAGFlow 简介1.1 什么是 RAGFlow&#xff1f;1.2 RAGFlow 的核心特点 2. RAGFlow 的安装与配置2.1 硬件与软件要求2.2 下载 RAGFlow 源码2.3 源码编译 Docker 镜像2.4 设置完整版&#xff08;包含 embedding 模型&#xff09;2.5 运行 RAGFlow 3. RAGFlow 的应用场…...

DNS Beaconing

“DNS Beaconing” 是一种隐蔽的网络通信技术&#xff0c;通常与恶意软件&#xff08;如木马、僵尸网络&#xff09;相关。攻击者通过定期发送 DNS请求 到受控的域名服务器&#xff08;C&C服务器&#xff09;&#xff0c;实现与恶意软件的隐蔽通信、数据传输或指令下发。由…...

【论文阅读】多模态——LSeg

文献基本信息 标题&#xff1a;Language-Driven Semantic Segmentation作者&#xff1a;Boyi Li、Kilian Q. Weinberger、Serge Belongie、Vladlen Koltun、Ren Ranftl单位&#xff1a;Cornell University、University of Copenhagen、Apple、Intel Labs会议/期刊&#xff1a;…...

vue3如何配置环境和打包

很多新手友友们或刚从vue2切换到vue3的同学&#xff0c;对vue3不同环境配置和打包有很多困惑的地方&#xff0c;Jenna这就把vue3打包配置流程详细的写下来&#xff0c;你们只需要copy就好啦 1.创建环境文件 当我们把项目拿到手&#xff0c;只需要创建三个环境文件&#xff1a…...

高并发下订单库存防止超卖策略

文章目录 什么是超卖问题&#xff1f;推荐策略&#xff1a;Redis原子操作(Redis incr)乐观锁lua脚本利用Redis increment 的原子操作&#xff0c;保证库存数安全update使用乐观锁LUA脚本保持库存原子性 什么是超卖问题&#xff1f; 在并发的场景下&#xff0c;比如商城售卖商品…...

vue安装stylelint

执行 npm install -D stylelint postcss-html stylelint-config-recommended-vue stylelint-config-standard stylelint-order stylelint-prettier postcss-less stylelint-config-property-sort-order-smacss 安装依赖&#xff0c;这里是less&#xff0c;sass换成postcss-scss…...

用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏

大家好&#xff01;今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括&#xff1a;控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂&#xff0c;适合初学者学习和实践。 游戏功能概述 玩家控制&#xff1a;使用键…...

three.js 在 webGL 添加纹理

在我们生成了3D设计之后&#xff0c;我们可以添加纹理使其更加吸引人。在 webGL 和 p5.js中&#xff0c;可以使用 gl.texImage2D() 和 texture() API来为形状应用纹理。 使用 webGL 在 webGL 中&#xff0c;gl.texImage2D() 函数用于从图像文件生成2D纹理。该函数接受许多参…...

【5】单调队列学习笔记

前言 鸽了很久&#xff0c; 2023 / 1 / 5 2023/1/5 2023/1/5 开始&#xff0c; 2023 / 1 / 21 2023/1/21 2023/1/21 才完工。 中途去集训了&#xff0c;没时间来补漏洞。 单调队列 单调队列是一种非常实用的数据结构&#xff0c;可以用于查询一个定长区间在以一定速度向后滑…...

deepseek为什么要开源

一、生态位的抢占与锁定&#xff1a;以 JDK 版本为例​ 在软件开发的世界里&#xff0c;生态位的抢占和先入为主的效应十分显著。就拿 Java 开发中的 JDK 版本来说&#xff0c;目前大多数开发者仍在广泛使用 JDK8。尽管 JDK17 和 JDK21 已经推出&#xff0c;且具备更多先进特性…...

MySQL基本建表操作

目录 1&#xff0c;创建数据库db_ck 1.1创建表 1.2 查看创建好的表 2,创建表t_hero 2.1 先进入数据库Db_Ck 2.1.1 这里可以看是否进入数据库: 2.2 创建表t_Hero 2.2.1 我们可以先在文本文档里面写好然后粘贴进去&#xff0c;因为直接写的话&#xff0c;错了要重新开始 …...

防火墙旁挂组网双机热备负载均衡

一&#xff0c;二层交换网络&#xff1a; 使用MSTPVRRP组网形式 VLAN 2--->SW3为主,SW4 作为备份 VLAN 3--->SW4为主,SW3 作为备份 MSTP 设计 --->SW3 、 4 、 5 运行 实例 1 &#xff1a; VLAN 2 实例 2 &#xff1a; VLAN 3 SW3 是实例 1 的主根&#xff0c;实…...

大白话react第十八章React 与 WebGL 项目的高级拓展与优化

大白话react第十八章React 与 WebGL 项目的高级拓展与优化 1. 实现 3D 模型的导入与动画 在之前的基础上&#xff0c;我们可以导入更复杂的 3D 模型&#xff0c;并且让这些模型动起来&#xff0c;就像在游戏里看到的角色和场景一样。这里我们使用 GLTF 格式的模型&#xff0c…...

JavaScript系列06-深入理解 JavaScript 事件系统:从原生事件到 React 合成事件

JavaScript 事件系统是构建交互式 Web 应用的核心。本文从原生 DOM 事件到 React 的合成事件&#xff0c;内容涵盖&#xff1a; JavaScript 事件基础&#xff1a;事件类型、事件注册、事件对象事件传播机制&#xff1a;捕获、目标和冒泡阶段高级事件技术&#xff1a;事件委托、…...

C++:string容器(下篇)

1.string浅拷贝的问题 // 为了和标准库区分&#xff0c;此处使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 错误示范//String(const char* str nullptr) // 错误示范String(const char* str …...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...