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

Java从入门到工作4 - MySQL

一:检测数据库网络

telnet 127.0.0.1 3306

注意ip和端口后之间是空格,不需要引号

二:SQL语法

1、创建结果集

SELECT '电视机' AS typeUNION SELECT '电冰箱'UNION SELECT '洗衣机'UNION SELECT '空调'UNION SELECT '电脑'UNION SELECT '热水器'UNION SELECT '吸油烟机'UNION SELECT '吸尘器'

这段 SQL 查询用于创建一个结果集,其中包含多个固定值。具体理解如下:

  1. SELECT '电视机' AS type:这一行创建第一条记录,返回一个值 '电视机' 并将其命名为 type

  2. UNION:这个关键字用于合并多个 SQL 语句的结果集。它确保结果中的每一条记录都是唯一的(默认情况下会去掉重复记录)。

  3. SELECT '电冰箱'SELECT '洗衣机',等:每一条 UNION 之后的 SELECT 语句都返回一个新的固定值,表示不同的电器品类。

最终,这段 SQL 查询生成的结果是一个包含以下内容的单列结果集:

  • 电视机
  • 电冰箱
  • 洗衣机
  • 空调
  • 电脑
  • 热水器
  • 吸油烟机
  • 吸尘器

用途:这个查询通常用于构建一个临时的表或列表,其中包含预定义的数据项,这在分析、报告或合并查询时非常有用。结合其他表进行连接查询时,可以确保结果集的完整性,尤其是在需要确保所有选定项目都包含在结果中时。

2、JOIN

在 MySQL 中,JOIN 操作用于根据两个或多个表之间的相关列进行组合。常见的连接类型包括 INNER JOIN(通常简称为 JOIN)、LEFT JOIN 和 RIGHT JOIN。它们的区别如下:

  1. INNER JOIN(或简写为 JOIN):

    • 仅返回两个表中匹配的行。
    • 如果某个表中没有与另一个表匹配的行,则该行不会出现在结果集中。
    • SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.for_id;
  2. LEFT JOIN(或称为 LEFT OUTER JOIN):

    • 返回左表(LEFT JOIN 前的表)中的所有行,即使右表中没有与之匹配的行。
    • 如果右表中没有匹配的行,结果集中该行的右表列将显示为 NULL
    • SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.for_id;
  3. RIGHT JOIN(或称为 RIGHT OUTER JOIN):

    • 返回右表(RIGHT 前的表)中的所有行,即使左表中没有与之匹配的行。
    • 如果左表中没有匹配的行,结果集中该行的左表列将显示为 NULL
    • SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.for_id;

总结:

  • INNER JOIN 只返回匹配的行。
  • LEFT JOIN 返回左表的所有行以及右表中匹配的行,右表不匹配的部分用 NULL 填充。
  • RIGHT JOIN 返回右表的所有行以及左表中匹配的行,左表不匹配的部分用 NULL 填充。

使用这些连接类型可以根据需要灵活地获取相关的数据。

3、执行顺序

3.1、SQL执行顺序

在MySQL中,SQL查询的执行顺序通常为:

  1. FROM:从哪张表中获取数据。
  2. JOIN:连接其他表,形成结果集。
  3. WHERE:过滤数据,删除不符合条件的行。
  4. GROUP BY:根据指定列对结果集进行分组。
  5. HAVING:对分组后的结果进行过滤(在GROUP BY之后)。
  6. SELECT:选择要显示的列。
  7. ORDER BY:对结果集进行排序。
  8. LIMIT:限制返回的行数。

这就是SQL查询的标准执行顺序。

  1. from / join 解决从哪里查
  2. where / group by / having 筛选处理数据
  3. select 拿到哪些数据 
  4. order by / limit 处理拿到的数据

3.2、阅读SQL顺序

知道了SQL的执行顺序,就知道如何快速的阅读sql

  1. select的内容先不看,
  2. 先从from、join开始看,先知道是查哪些表。
  3. where也可以先不看,它只是过滤部分行
  4. 再看group by,这时基本能够理解SQL的整体任务了
  5. 回头去看where 、select、order by等细节了

4、使用别名

不完全是。只能在 ORDER BY 和 HAVING 中使用前面 SELECT 子句中的别名,而在 WHERE 和 GROUP BY 中不能使用这些别名。具体来说:

  • 可以使用别名ORDER BY 和 HAVING
  • 不能使用别名WHERE 和 GROUP BY

5、执行计划

MySQL执行计划的主要列及其含义如下:

  1. id:查询的标识符,表示查询的顺序和层级。
  2. select_type:查询的类型,如 SIMPLE(简单查询)、PRIMARY(主查询)、SUBQUERY(子查询)等。
  3. table:当前操作的表名。
  4. type:连接类型,表示访问表的方式,如 all(全表扫描)、index(索引扫),range(范围扫描)等。类型越优越越好。
  5. possible_keys:可能使用的索引列表。
  6. key:实际使用的索引。
  7. key_len:索引长度,表示使用的字节数。
  8. ref:与索引匹配的字段或常量。
  9. rows:估算需要扫描的行数。
  10. filtered:估算在输出结果中,符合条件的行的百分比。
  11. Extra:额外信息,如 Using indexUsing whereUsing filesort 等,提供查询优化的线索。

这些列的组合可以帮助分析并优化查询性能。

6、索引

以下情况可能会触发命中索引:

  1. WHERE 子句:当查询中使用的条件字段在索引中时,会触发索引命中,尤其是相等条件和范围条件。

  2. JOIN 条件:连接查询中涉及到的字段如果有索引,也会导致索引的使用。

  3. GROUP BY 子句GROUP BY中字段有索引时,可以加速分组操作。

  4. HAVING 子句:在 HAVING 中使用的字段如果有索引,可以提高筛选效率(但通常在 WHERE 中能更早筛选)。

  5. ORDER BY 子句:如果ORDER BY中字段有索引,查询可以利用索引直接排序,避免额外的排序操作。

  6. UNIQUE 和 FOREIGN KEY 约束:这些约束条件会自动创建索引,从而支持快速查找。

  7. 子查询中的条件:如果子查询涉及到的字段有索引,也可能触发索引命中。

确保索引设计合理,选择合适的字段建立索引,有助于提高查询性能。

7、数据类型

7.1、日期字段

日期字段使用频率非常高,比如交易表中需要保存多个时间字段,它们的数据类型可能不同,就是同一数据类型,但保存的格式也有可能不同。如下从三个例子展开

  • create_time:数据类型为date_time,保存格式为 2024-09-15 16:20:16
  • modi_time:  数据类型为date,            保存格式为 2024-09-15 
  • play_time:    数据类型为    varchar,保存格式为 2024-10-14 15:55:47
  • play_date:    数据类型为    varchar,保存格式为 20241014

简而言之,

无论时间字段存储为 VARCHAR 还是 DATETIME,在比较时都可以直接与时间字符串进行比较,只要确保时间字符串的格式正确(如 'YYYY-MM-DD HH:MM:SS')。对于 VARCHAR 字段,关键是保持格式的一致性以确保正确的比较。

从底层上讲,

对于数据类型为varchar的字段跟字符串比较,是基于字典序比较的。即一个个字符按顺序轮流对比的,所以这种比较只有在数据格式保持一致时才有效。但不建议在日期时间数据中使用 VARCHAR 类型,因为这样会导致潜在的错误和性能问题。

对于数据类型为Date的字段跟字符串比较,在进行比较时并不是基于字典序比较,而是基于日期的内在表示进行比较。这种比较方式确保了日期的正确性,避免了诸如字符串比较可能带来的错误。可以确保更准确和高效的比较操作。 

7.2、日期比较

7.2.1、date_time类型

create_time是正经日期类型的字段,需要注意格式YYYY-MM-DD

筛选动态日期数据

create_time >= CURDATE() and create_time < CURDATE() + interval 1 day

筛选固定日期数据

筛选某一天前的数据,create_time < ='2023-09-30'即可create_time 数据类型如果为date_time,上面将自动转为2023-09-30 00:00,只能取到29号数据create_time 数据类型如果为date类型,上面就是2023-09-30,能取到30号数据
7.2.2、varchar类型

play_date存的字符串如’20241015‘,不专业不规范。但筛选时间也是可以直接跟字符串对比的

筛选动态日期数据

-- 将当天日期,转成%Y%m%d格式
consume.play_date = DATE_FORMAT(CURDATE(), '%Y%m%d') 
consume.play_date > DATE_FORMAT(CURDATE(), '%Y%m%d') // 这样varchar跟date也能比。但是效率低70%且无法保证正确性
consume.play_date = CURDATE() 

筛选固定日期数据

-- 将当天日期,转成%Y%m%d格式
consume.play_date = '20241028' 
consume.play_date > '20241028' 

8、函数

8.1、DATE_FORMAT()

接收日期类型,返回字符串类型

 DATE_FORMAT(CURDATE(), '%Y%m%d')

8.2、CURDATE()

CURDATE() 返回的是当前日期,格式为 YYYY-MM-DD,类型为 DATE

今天 CURDATE() ,格式为 2024-10-15 00:00:00

明天 CURDATE() + interval 1 day,格式为 2024-10-16 00:00:00

8.3、hour()

获取时间中的小时数,时间是varchar类型和dateTime类型都行,但需要注意格式hh:mm:ss

SELECT Hour('2024-10-27 19:22:33') 
SELECT Hour('19:22:33')   以上都返回19

9、In和Or

In和or都在where语句中使用,当同一个字段跟多个值比较时使用。

比如查询姓名是孙权、曹操、刘备、张飞、刘季的数据,都是name字段,但是筛选多个值

or实现:  where name = '孙权' or name = '曹操' or name = '刘备' or name = '张飞'

in实现:   where name in (孙权,曹操,刘备,张飞)

在有索引的情况下or的效率比in更高,数据库会优化

三:心得

1、select关键词

此关键词决定sql输出的字段

select * 表示输出所有字段

2、SQL思路

写语句前,先分析需求,需要查出什么字段,从哪个表查,需不需要分组

3、关键字

select 用来确定返回那些字段,

where 用来过滤要返回的数据,

group by 用来合并要返回的数据

4、SQL慢查询优化

大佬的总结:Docs

四:小应用

1、百分比处理

先把小数*100,然后用ROUND方法保留0位小数,然后用CONCAT拼上“%”

CONCAT(ROUND(data*100,0),'%'
)

2、无数据补0返回

品类无数据【补0】返回

SELECTCOALESCE(COUNT(type), 0) AS '交易笔数',

3、本月12点前的数据

笨写法

wherename = 'sq' and((pay_time >= '2024-10-02 00:00:00' AND pay_time <= '2024-10-02 12:00:00') or (pay_time >= '2024-10-03 00:00:00' AND pay_time <= '2024-10-03 12:00:00') or (pay_time >= '2024-10-04 00:00:00' AND pay_time <= '2024-10-04 12:00:00') or (pay_time >= '2024-10-05 00:00:00' AND pay_time <= '2024-10-05 12:00:00') or (pay_time >= '2024-10-06 00:00:00' AND pay_time <= '2024-10-06 12:00:00') )

正确写法

wherename = 'sq' andpay_time >= '2024-10-02 00:00:00' andpay_time <= '2024-11-01 00:00:00' andHOUR(pay_time) < 10

4、当天所有时段数据

SELECT DATE_FORMAT(consume.pay_time, '%Y-%m-%d %H:00:00') 小时,COUNT(1) AS '订单',
FROM ... 
WHERE x_time >= CURDATE() -- 今天的开始时间AND consume.x_time < CURDATE() + INTERVAL 1 DAY -- 明天的开始时间
GROUP BY DATE_FORMAT(x_time, '%Y-%m-%d %H:00:00')
ORDER BY 小时
小时订单
2024/12/13 15:00258
2024/12/13 16:0016

在上述 SQL 查询中,使用 DATE_FORMAT(consume.x_time, '%Y-%m-%d %H:00:00') 作为分组字段,结果表示每个小时的开始时间。因此:

查询中的 2024/12/13 15:00 的结果代表的是 2024/12/13 15:00:00 到 2024/12/13 15:59:59 这一时间段的交易数据。

五:SQL优化

1、大表联小表翻译

 可将某个表分组后再外连的辨别要点:

  • 语句顺序为:table1 left join table2 left join table3 where...group by...limit 
  • where/group by/order by压根不涉及某个外连表的字段

如下为具体示例

主表是大表100w数据,二表3000数据,三表3000数据

左联两个小表,为了映射字段名称

操作数据为100w*3000*3000最后取20条数据

改造思路:聚合和排序在大表先做好,再关联小表 

操作数据为20*3000*3000

2、合并SQL

当一个sql需要查n个指标,n个指标因where条件不同可能JOIN了很多个子查询。

当数据量很大时,多个子查询可能就导致多次扫表,效率很低。

这时可以看下where中是否大部分条件是相同的,可以将共用的条件抽出来放在一个where中。然后在select中使用case when来使用那些各个指标特殊的条件。

这样只扫一次表,可能会提高查询效率。最起码SQL看起来简洁很多,便于维护与下一步的优化。

 SELECT COUNT(CASE WHEN status = 4 THEN 1 END) AS 指标一,COUNT(CASE WHEN name is not null THEN 1 END) AS 指标二FROM tblWHERE公共条件

3、备份数据库

统计类的SQL非常消耗数据库资源,最好还是搞个备份库专门服务统计类查询,实现数据隔离,避免将业务库查崩。

3.1、如何实现备份库数据同步?

通过数据库审计功能,实现业务库跟备份库的数据同步问题。怎么理解数据库审计?

数据库审计是对数据库活动进行监控和记录的过程。其主要目的是确保数据的安全性、合规性和完整性。审计功能通常包括以下几个方面:

  1. 访问监控:记录哪些用户访问了数据库、何时访问、执行了哪些操作。
  2. 变更跟踪:监控数据的插入、更新和删除操作,确保能够追溯数据变化的来源。
  3. 合规性审核:验证数据库操作是否符合规定的安全和合规性标准。
  4. 异常检测:识别潜在的安全威胁或违规行为。

在业务库与备份库的数据同步中,数据库审计可以帮助确保同步过程的透明性和可靠性,及时发现和纠正同步过程中可能出现的问题。通过审计日志,可以追踪到哪些数据被同步、是否存在失败或异常操作,从而提供数据一致性的保障。

4、避免在where里使用函数

如果该字段有索引,函数会使索引失效!

实例1:where中某字段有索引避免使用函数

如下示例,sale_city为字符串有索引。同一个处理,两种写法。

第一种索引失效,第二种索引命中

  • where SUBSTRING(a.city, 1, 4) = 4113
  • where a.city like '4102%' 

实例2:where中某字段无索引也避免使用函数

如下示例,create_time日期类型有索引。同一个处理,两种写法。

第一种索引失效,第二种索引命中

  • where DATE_FORMAT(create_time, '%Y-%m-%d') = DATE_FORMAT(CURDATE(), '%Y-%m-%d')
  • where create_time >= CURDATE() and create_time < CURDATE() + interval 1 day

如果 create_time 列没有索引,仍然建议去掉对 create_time 的函数调用。原因如下:

  1. 全表扫描:使用 SUBSTRING 或其他函数将导致全表扫描,这会显著降低性能,因为数据库无法利用任何索引进行加速查询。

  2. 明确的范围条件:通过直接比较 create_time,可以增加效率,尤其是在大量数据的情况下。使用条件 create_time >= CURDATE() AND create_time < CURDATE() + INTERVAL 1 DAY 可以帮助数据库优化器更好地执行查询。

即使没有索引,去掉函数调用仍对查询性能有很大帮助。这是一个普遍的优化建议,特别是在处理大数据集时。可以在之后考虑为 create_time 列创建索引,以进一步提高查询效率。

5、数据偏移

数据偏移会导致索引失效,能想到的就是强制索引

force index (key)

6、如何定位慢查询原因?

当拿到一个慢sql,从哪里下手去定位呢?

1、看执行计划,指针是否命中?

如果没命中,结合看查询结果,是不是数据偏移?

2、如果有子查询,一层层看执行结果

如果内层查询,某些数据对外层无用。针对无用数据,想办法where添加条件,缩小查询范围

相关文章:

Java从入门到工作4 - MySQL

一&#xff1a;检测数据库网络 telnet 127.0.0.1 3306 注意ip和端口后之间是空格&#xff0c;不需要引号 二&#xff1a;SQL语法 1、创建结果集 SELECT 电视机 AS typeUNION SELECT 电冰箱UNION SELECT 洗衣机UNION SELECT 空调UNION SELECT 电脑UNION SELECT 热水器UNION…...

OpenShift 4 - 多云管理(2) - 配置多集群观察功能

《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…...

【鸿睿创智开发板试用】RK3568 NPU的人工智能推理测试

目录 引言 驱动移植 例程编译 修改build.sh 执行编译 运行测试 部署libc的库文件 执行测试程序 结语 引言 鸿睿创智的H01开发板是基于RK3568芯片的&#xff0c;瑞芯微芯片的一大特色就是提供了NPU推理的支持。本文将对其NPU推理进行测试。 驱动移植 H01的开发板已经…...

iOS swift开发系列 -- tabbar问题总结

1.单视图如何改为tabbar&#xff0c;以便显示2个标签页 右上角➕&#xff0c;输入tabbar 找到控件&#xff0c;然后选中&#xff0c;把entrypoint移动到tabbar控件 2.改成tabbar&#xff0c;生成两个item&#xff0c;配置各自视图后&#xff0c;启动发现报错 Thread 1: “-[p…...

四、CSS3

一、CSS3简介 1、CSS3概述 CSS3 是 CSS2 的升级版本&#xff0c;他在CSS2的基础上&#xff0c;新增了很多强大的新功能&#xff0c;从而解决一些实际面临的问题。 CSS在未来会按照模块化的方式去发展&#xff1a;https://www.w3.org/Style/CSS/current-work.html …...

Three使用WebGPU的关键TSL

Three.js 使用 WebGPU 的关键 TSL TSL: three.js shader language 介绍 three.js 材质转为webgpu的关键流程, 从而引出 TSL. 1、关键类关系 WebGPURenderer|-- library: StandardNodeLibrary|-- _nodes: Nodes|-- _objects: RenderObjects|-- createRenderObject()StandardN…...

ESP32-S3模组上跑通ES8388(30)

接前一篇文章:ESP32-S3模组上跑通ES8388(29) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回终于解析完了es8388_init函数的所有代码。本回回到调用它的地方,继续往下讲解。 我们是从ESP32-S3模组上跑通ES8388(7)-CSDN博客开始进入es8388_init函数,展开对于它的解析的…...

概率论得学习和整理24:EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形&#xff0c;统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图&#xff0c;一般是只选中1列数据&#xff08;1个数组&#xff09; 1.3 如何修改频度图的宽度 1.4 hist图的一个特…...

WPF中依赖属性的底层和普通属性的底层有什么不一样

WPF中依赖属性的底层 在 WPF 中&#xff0c;依赖属性&#xff08;Dependency Property&#xff09;是 WPF 属性系统的核心&#xff0c;它支持功能强大的特性&#xff08;如数据绑定、动画、样式等&#xff09;。其底层实现是围绕 DependencyObject 类展开的。以下是 WPF 中依赖…...

【Qt】drawText字体大小问题探究

背景 软件的一个功能是&#xff1a; 打开图片在图片上绘制序号&#xff0c;序号的样式是圆圈内包含数字将带有序号的图片打印出来 实现思路也很简单&#xff0c;在屏幕上显示时重写paintEvent函数&#xff0c;利用QPainter完成图片和序号的绘制。打印时只需要将QPainter对应…...

Mapbox-GL 的源码解读的一般步骤

Mapbox-GL 是一个非常优秀的二三维地理引擎&#xff0c;随着智能驾驶时代的到来&#xff0c;应用也会越来越广泛&#xff0c;关于mapbox-gl和其他地理引擎的详细对比&#xff08;比如CesiumJS&#xff09;&#xff0c;后续有时间会加更。地理首先理解 Mapbox-GL 的源码是一项复…...

【C++】高级分析 switch 语句的应用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;switch 语句的基本用法语法结构核心要点实例演示正确实现 期望输出错误实现错误输出 &#x1f4af;if 与 switch 语句的实现比较使用 if 语句使用 switch 语句比较分析 &am…...

活动预告 | Surface 来了#11:Windows 11 AI+ PC,释放 AI 办公设备的无限潜能

课程介绍 欢迎来到 Surface 来了第 11 期节目。 今年 5 月底&#xff0c;微软推出了专为 AI 体验而设计的全新 Windows PC 品类&#xff1a;Windows 11 AI PC。 微软通过 Windows 11 AI PC&#xff0c;进一步强调了 NPU 在运行设备端 AI 功能的重要性。并要求符合这一品类的…...

php基础:正则表达式

1.正则表达式 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。到目前为止&#xff0c;我们前面所用过的精确&#xff08;文本&#xff09;匹配也是一种正则表达式。 在PHP中&#xff0c;正则表达式一般是由正规字…...

go语言压缩[]byte数据为zlib格式的时候,耗时较多,应该怎么修改?

在Go语言中使用compress/flate包来实现Zlib格式的压缩时&#xff0c;如果发现压缩耗时较多&#xff0c;可以考虑以下几个优化方向&#xff1a; ### 1. 压缩级别 默认情况下&#xff0c;compress/flate包中的NewWriter函数使用的是默认压缩级别&#xff08;BestSpeed和BestComp…...

[机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)

AdaBoost AdaBoost&#xff08;Adaptive Boosting&#xff09;是一种Boosting算法&#xff0c;它通过迭代地训练弱分类器并将它们组合成一个强分类器来提高分类性能。 AdaBoost算法的特点是它能够自适应地调整样本的权重&#xff0c;使那些被错误分类的样本在后续的训练中得到…...

深入了解Spring

目录 Spring基础 什么是Spring框架&#xff1f; Spring 包含的模块有哪些&#xff1f; Core Container AOP Data Access/Integration Spring Web Messaging Spring Test Spring,Spring MVC,Spring Boot 之间什么关系? Spring基础 什么是Spring框架&#xff1f; Sp…...

jar 包如何下载

maven官网&#xff1a;https://mvnrepository.com/ 点击搜索&#xff0c;找对应搜索结果点击...

ESlint代码规范,手动与自动修复

规范说明 规则参考 - ESLint - 插件化的 JavaScript 代码检查工具 规范说明 ​ ​ 可看到是main.js文件报错分别是第三行第30个字符&#xff0c;以及第七行第一个字符 后面则是规范说明&#xff0c;可以根据说明查找相应的规范 一.手动修正 ctrl f 可以搜索 二.自动修正 …...

利用编程获得money?

在当今数字化时代&#xff0c;编程技能为人们开辟了众多赚钱途径。无论你是编程新手还是经验丰富的开发者&#xff0c;都能在广阔的市场中找到适合自己的盈利方式。以下是一份详细的用编程赚钱指南。 一、自由职业平台 像 Upwork、Freelancer 和 Fiverr 等知名自由职业平台&am…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

验证redis数据结构

一、功能验证 1.验证redis的数据结构&#xff08;如字符串、列表、哈希、集合、有序集合等&#xff09;是否按照预期工作。 2、常见的数据结构验证方法&#xff1a; ①字符串&#xff08;string&#xff09; 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...