MySQL高级特性详解

一、自关联查询

概念

自关联查询是指一个表与它自己进行连接的查询。通常用于处理具有层级关系或递归结构的数据。

应用场景

  • 员工与上级关系
  • 分类的父子关系
  • 地区的层级关系

示例

-- 创建员工表
CREATE TABLE employees (emp_id INT PRIMARY KEY,emp_name VARCHAR(50),manager_id INT,FOREIGN KEY (manager_id) REFERENCES employees(emp_id)
);-- 插入示例数据
INSERT INTO employees VALUES 
(1, '张总', NULL),
(2, '李经理', 1),
(3, '王主管', 2),
(4, '赵员工', 3),
(5, '钱员工', 3);-- 查询每个员工及其直接上级
SELECT e1.emp_name AS '员工',e2.emp_name AS '上级'
FROM employees e1
LEFT JOIN employees e2 ON e1.manager_id = e2.emp_id;-- 查询所有下属超过1人的管理者
SELECT e2.emp_name AS '管理者',COUNT(e1.emp_id) AS '下属人数'
FROM employees e1
INNER JOIN employees e2 ON e1.manager_id = e2.emp_id
GROUP BY e2.emp_id, e2.emp_name
HAVING COUNT(e1.emp_id) > 1;

二、子查询操作

概念

子查询是嵌套在其他SQL语句中的SELECT语句,可以出现在WHERE、FROM、SELECT等子句中。

子查询分类

1. 标量子查询(返回单个值)
-- 查询工资高于平均工资的员工
SELECT emp_name, salary 
FROM employees 
WHERE salary > (SELECT AVG(salary) FROM employees);
2. 列子查询(返回一列多行)
-- 使用IN操作符
SELECT * FROM employees 
WHERE dept_id IN (SELECT dept_id FROM departments WHERE location = '北京');-- 使用ANY/ALL操作符
SELECT * FROM employees 
WHERE salary > ANY (SELECT salary FROM employees WHERE dept_id = 10);
3. 行子查询(返回一行多列)
-- 查询与张三相同部门和职位的员工
SELECT * FROM employees 
WHERE (dept_id, position) = (SELECT dept_id, position FROM employees WHERE emp_name = '张三'
);
4. 表子查询(返回多行多列)
-- FROM子句中的子查询
SELECT t.dept_name, t.avg_salary
FROM (SELECT d.dept_name, AVG(e.salary) AS avg_salaryFROM employees eJOIN departments d ON e.dept_id = d.dept_idGROUP BY d.dept_name
) t
WHERE t.avg_salary > 10000;

EXISTS子查询

-- 查询有员工的部门
SELECT * FROM departments d
WHERE EXISTS (SELECT 1 FROM employees e WHERE e.dept_id = d.dept_id
);-- 查询没有下属的员工
SELECT * FROM employees e1
WHERE NOT EXISTS (SELECT 1 FROM employees e2 WHERE e2.manager_id = e1.emp_id
);

三、窗口函数

概念

窗口函数在保留原表所有行的基础上,为每一行计算聚合值。与GROUP BY不同,它不会减少返回的行数。

基本语法

函数名() OVER ([PARTITION BY 列名][ORDER BY 列名][窗口子句]
)

常用窗口函数

1. 聚合窗口函数
-- 计算累计销售额
SELECT order_date,amount,SUM(amount) OVER (ORDER BY order_date) AS cumulative_sum,AVG(amount) OVER (ORDER BY order_date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg
FROM orders;-- 按部门计算工资占比
SELECT emp_name,dept_id,salary,salary / SUM(salary) OVER (PARTITION BY dept_id) * 100 AS salary_percentage
FROM employees;
2. 排名函数
-- ROW_NUMBER(): 生成唯一序号
-- RANK(): 相同值同排名,下一个排名会跳过
-- DENSE_RANK(): 相同值同排名,下一个排名连续SELECT emp_name,dept_id,salary,ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS row_num,RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rank_num,DENSE_RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS dense_rank_num
FROM employees;-- NTILE(): 将数据分成N组
SELECT emp_name,salary,NTILE(4) OVER (ORDER BY salary) AS quartile
FROM employees;
3. 偏移函数
-- LAG/LEAD: 访问前后行数据
SELECT month,sales,LAG(sales, 1) OVER (ORDER BY month) AS prev_month_sales,LEAD(sales, 1) OVER (ORDER BY month) AS next_month_sales,sales - LAG(sales, 1) OVER (ORDER BY month) AS month_over_month_change
FROM monthly_sales;-- FIRST_VALUE/LAST_VALUE: 获取窗口内第一个/最后一个值
SELECT emp_name,dept_id,salary,FIRST_VALUE(emp_name) OVER (PARTITION BY dept_id ORDER BY salary DESC) AS highest_paid,LAST_VALUE(emp_name) OVER (PARTITION BY dept_id ORDER BY salary DESCRANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS lowest_paid
FROM employees;

四、MySQL常用内置函数

1. 时间日期函数

-- 获取当前时间
SELECT NOW(), CURDATE(), CURTIME();-- 日期格式化
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');-- 日期计算
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS '7天后',DATE_SUB(NOW(), INTERVAL 1 MONTH) AS '1个月前',DATEDIFF('2024-12-31', NOW()) AS '距离年底天数',TIMESTAMPDIFF(YEAR, '1990-01-01', NOW()) AS '年龄';-- 提取日期部分
SELECT YEAR(NOW()) AS '年',MONTH(NOW()) AS '月',DAY(NOW()) AS '日',DAYNAME(NOW()) AS '星期',WEEKDAY(NOW()) AS '星期索引';

2. 字符串函数

-- 字符串连接
SELECT CONCAT('Hello', ' ', 'World');
SELECT CONCAT_WS(',', 'A', 'B', 'C'); -- 使用分隔符-- 字符串长度和位置
SELECT LENGTH('你好'), CHAR_LENGTH('你好'); -- 字节长度vs字符长度
SELECT LOCATE('world', 'hello world'); -- 查找位置-- 字符串截取
SELECT LEFT('abcdefg', 3) AS '左截取',RIGHT('abcdefg', 3) AS '右截取',SUBSTRING('abcdefg', 2, 3) AS '中间截取';-- 字符串转换
SELECT UPPER('hello') AS '大写',LOWER('HELLO') AS '小写',REPLACE('hello world', 'world', 'MySQL') AS '替换',TRIM('  hello  ') AS '去空格',REVERSE('hello') AS '反转';

3. 数学函数

-- 基础数学运算
SELECT ABS(-10) AS '绝对值',CEIL(4.3) AS '向上取整',FLOOR(4.7) AS '向下取整',ROUND(4.567, 2) AS '四舍五入',TRUNCATE(4.567, 2) AS '截断';-- 高级数学函数
SELECT POW(2, 3) AS '幂运算',SQRT(16) AS '平方根',MOD(10, 3) AS '取余',RAND() AS '随机数',FLOOR(RAND() * 100) AS '0-99随机整数';

五、CASE WHEN条件判断

简单CASE语法

SELECT emp_name,salary,CASE dept_idWHEN 1 THEN '技术部'WHEN 2 THEN '销售部'WHEN 3 THEN '人事部'ELSE '其他部门'END AS dept_name
FROM employees;

搜索CASE语法

-- 工资等级划分
SELECT emp_name,salary,CASE WHEN salary >= 20000 THEN '高级'WHEN salary >= 10000 THEN '中级'WHEN salary >= 5000 THEN '初级'ELSE '实习'END AS salary_level
FROM employees;-- 条件统计
SELECT dept_id,COUNT(CASE WHEN salary >= 10000 THEN 1 END) AS high_salary_count,COUNT(CASE WHEN salary < 10000 THEN 1 END) AS low_salary_count,SUM(CASE WHEN gender = '男' THEN salary ELSE 0 END) AS male_total_salary,SUM(CASE WHEN gender = '女' THEN salary ELSE 0 END) AS female_total_salary
FROM employees
GROUP BY dept_id;-- 动态排序
SELECT * FROM employees
ORDER BY CASE WHEN @sort_type = 'name' THEN emp_name END,CASE WHEN @sort_type = 'salary' THEN salary END DESC;

六、事务概念及应用

事务的概念

事务是一组不可分割的操作单元,要么全部成功,要么全部失败。

ACID特性

  • 原子性(Atomicity):事务是不可分割的最小操作单元
  • 一致性(Consistency):事务完成后,数据必须处于一致状态
  • 隔离性(Isolation):多个事务之间相互独立
  • 持久性(Durability):事务一旦提交,改变是永久的

事务操作

-- 开启事务
START TRANSACTION; -- 或 BEGIN;-- 执行SQL操作
UPDATE accounts SET balance = balance - 1000 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE account_id = 2;-- 提交或回滚
COMMIT; -- 提交事务
ROLLBACK; -- 回滚事务-- 设置保存点
SAVEPOINT point1;
-- 回滚到保存点
ROLLBACK TO point1;

事务隔离级别

-- 查看当前隔离级别
SELECT @@transaction_isolation;-- 设置隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; -- 读未提交
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;   -- 读已提交
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;  -- 可重复读(MySQL默认)
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;      -- 串行化

应用场景示例

-- 转账操作
DELIMITER $$
CREATE PROCEDURE transfer_money(IN from_account INT,IN to_account INT,IN amount DECIMAL(10,2)
)
BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGINROLLBACK;SELECT 'Transaction failed, rolled back' AS message;END;START TRANSACTION;UPDATE accounts SET balance = balance - amount WHERE account_id = from_account AND balance >= amount;IF ROW_COUNT() = 0 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Insufficient balance';END IF;UPDATE accounts SET balance = balance + amount WHERE account_id = to_account;COMMIT;SELECT 'Transaction successful' AS message;
END$$
DELIMITER ;

七、索引概念及应用

索引的概念

索引是帮助MySQL高效获取数据的数据结构,类似于书的目录。

索引类型

  1. 主键索引(PRIMARY KEY):唯一且不为NULL
  2. 唯一索引(UNIQUE):唯一,可以为NULL
  3. 普通索引(INDEX):最基本的索引
  4. 全文索引(FULLTEXT):用于全文搜索
  5. 组合索引:多列组成的索引

索引操作

-- 创建索引
CREATE INDEX idx_emp_name ON employees(emp_name);
CREATE UNIQUE INDEX idx_emp_email ON employees(email);
CREATE INDEX idx_emp_dept_salary ON employees(dept_id, salary); -- 组合索引-- 查看索引
SHOW INDEX FROM employees;-- 删除索引
DROP INDEX idx_emp_name ON employees;-- 使用EXPLAIN分析查询
EXPLAIN SELECT * FROM employees WHERE emp_name = '张三';

索引使用原则

-- 1. 最左前缀原则(组合索引)
-- 假设有索引 (a, b, c)
SELECT * FROM table WHERE a = 1; -- 使用索引
SELECT * FROM table WHERE a = 1 AND b = 2; -- 使用索引
SELECT * FROM table WHERE b = 2; -- 不使用索引-- 2. 避免索引失效的情况
-- 函数操作
SELECT * FROM employees WHERE YEAR(hire_date) = 2024; -- 索引失效
SELECT * FROM employees WHERE hire_date >= '2024-01-01' AND hire_date < '2025-01-01'; -- 使用索引-- 类型不匹配
SELECT * FROM employees WHERE emp_id = '123'; -- 如果emp_id是整数,可能失效-- LIKE通配符
SELECT * FROM employees WHERE emp_name LIKE '%张%'; -- 索引失效
SELECT * FROM employees WHERE emp_name LIKE '张%'; -- 使用索引

索引优化建议

  • 选择性高的列适合建索引
  • 频繁作为查询条件的列建索引
  • 经常需要排序的列建索引
  • 避免过多索引,影响写入性能
  • 定期分析和优化索引

八、视图概念及应用

视图的概念

视图是一个虚拟表,其内容由查询定义。视图不存储数据,只存储SQL查询语句。

视图的优点

  1. 简化复杂查询
  2. 数据安全性(隐藏敏感列)
  3. 逻辑数据独立性

视图操作

-- 创建视图
CREATE VIEW v_emp_dept AS
SELECT e.emp_id,e.emp_name,e.salary,d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id;-- 使用视图
SELECT * FROM v_emp_dept WHERE salary > 10000;-- 创建可更新视图
CREATE VIEW v_emp_simple AS
SELECT emp_id, emp_name, salary
FROM employees
WHERE dept_id = 1
WITH CHECK OPTION; -- 确保通过视图的修改符合WHERE条件-- 修改视图
ALTER VIEW v_emp_dept AS
SELECT e.emp_id,e.emp_name,e.salary,e.hire_date,d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id;-- 删除视图
DROP VIEW IF EXISTS v_emp_dept;

视图应用场景

-- 1. 权限控制:为不同用户创建不同视图
CREATE VIEW v_emp_public AS
SELECT emp_id, emp_name, dept_id
FROM employees; -- 隐藏工资信息-- 2. 简化复杂查询
CREATE VIEW v_sales_summary AS
SELECT DATE_FORMAT(order_date, '%Y-%m') AS month,SUM(amount) AS total_sales,COUNT(DISTINCT customer_id) AS customer_count,AVG(amount) AS avg_order_value
FROM orders
GROUP BY DATE_FORMAT(order_date, '%Y-%m');-- 3. 计算字段
CREATE VIEW v_emp_annual AS
SELECT emp_id,emp_name,salary,salary * 12 AS annual_salary,salary * 0.1 AS bonus
FROM employees;

九、ER模型和3NF三范式

ER模型(实体-关系模型)

基本概念
  • 实体(Entity):现实世界中的对象,如学生、课程
  • 属性(Attribute):实体的特征,如学生的姓名、年龄
  • 关系(Relationship):实体之间的联系
关系类型
  1. 一对一(1:1):一个实体对应另一个实体的一个实例
  2. 一对多(1:N):一个实体对应另一个实体的多个实例
  3. 多对多(M:N):多个实体对应另一个实体的多个实例
ER图示例
-- 学生与课程的多对多关系
-- 学生表
CREATE TABLE students (student_id INT PRIMARY KEY,student_name VARCHAR(50),age INT
);-- 课程表
CREATE TABLE courses (course_id INT PRIMARY KEY,course_name VARCHAR(100),credits INT
);-- 选课表(关系表)
CREATE TABLE enrollments (student_id INT,course_id INT,grade DECIMAL(3,1),PRIMARY KEY (student_id, course_id),FOREIGN KEY (student_id) REFERENCES students(student_id),FOREIGN KEY (course_id) REFERENCES courses(course_id)
);

三范式(3NF)

第一范式(1NF):原子性

每个字段都是不可分割的原子值。

-- 违反1NF的设计
CREATE TABLE bad_students (student_id INT,student_name VARCHAR(50),phone_numbers VARCHAR(200) -- 存储多个电话号码,如"13812345678,13987654321"
);-- 符合1NF的设计
CREATE TABLE students (student_id INT PRIMARY KEY,student_name VARCHAR(50)
);CREATE TABLE student_phones (student_id INT,phone_number VARCHAR(20),phone_type VARCHAR(20),PRIMARY KEY (student_id, phone_number),FOREIGN KEY (student_id) REFERENCES students(student_id)
);
第二范式(2NF):完全依赖主键

非主键字段必须完全依赖于主键,不能只依赖主键的一部分。

-- 违反2NF的设计
CREATE TABLE bad_order_items (order_id INT,product_id INT,quantity INT,product_name VARCHAR(100), -- 只依赖于product_id,不依赖于order_idproduct_price DECIMAL(10,2), -- 只依赖于product_idPRIMARY KEY (order_id, product_id)
);-- 符合2NF的设计
CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(100),product_price DECIMAL(10,2)
);CREATE TABLE order_items (order_id INT,product_id INT,quantity INT,PRIMARY KEY (order_id, product_id),FOREIGN KEY (product_id) REFERENCES products(product_id)
);
第三范式(3NF):消除传递依赖

非主键字段之间不能有依赖关系,都应该直接依赖于主键。

-- 违反3NF的设计
CREATE TABLE bad_employees (emp_id INT PRIMARY KEY,emp_name VARCHAR(50),dept_id INT,dept_name VARCHAR(50), -- 传递依赖:dept_name依赖于dept_id,而非直接依赖于emp_iddept_location VARCHAR(100) -- 传递依赖
);-- 符合3NF的设计
CREATE TABLE departments (dept_id INT PRIMARY KEY,dept_name VARCHAR(50),dept_location VARCHAR(100)
);CREATE TABLE employees (emp_id INT PRIMARY KEY,emp_name VARCHAR(50),dept_id INT,FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

范式化的优缺点

优点
  • 减少数据冗余
  • 保证数据一致性
  • 节省存储空间
  • 更新异常少
缺点
  • 查询时需要更多JOIN操作
  • 可能影响查询性能
反范式化场景

在某些情况下,为了提高查询性能,可能会适度违反范式:

-- 适度冗余以提高查询性能
CREATE TABLE order_summary (order_id INT PRIMARY KEY,order_date DATE,customer_name VARCHAR(100), -- 冗余字段,避免每次都JOINtotal_amount DECIMAL(10,2), -- 计算字段,避免每次都SUMitem_count INT -- 统计字段
);

实战练习题

综合练习:电商数据分析

-- 创建示例表
CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE,total_amount DECIMAL(10,2)
);-- 1. 使用窗口函数计算客户的购买排名
SELECT customer_id,SUM(total_amount) AS total_purchase,RANK() OVER (ORDER BY SUM(total_amount) DESC) AS customer_rank
FROM orders
GROUP BY customer_id;-- 2. 使用子查询找出消费超过平均值的客户
SELECT DISTINCT customer_id
FROM orders o1
WHERE (SELECT SUM(total_amount) FROM orders o2 WHERE o2.customer_id = o1.customer_id
) > (SELECT AVG(customer_total) FROM (SELECT SUM(total_amount) AS customer_total FROM orders GROUP BY customer_id) t
);-- 3. 使用CASE WHEN进行客户分类
SELECT customer_id,SUM(total_amount) AS total_amount,CASE WHEN SUM(total_amount) >= 10000 THEN 'VIP客户'WHEN SUM(total_amount) >= 5000 THEN '重要客户'WHEN SUM(total_amount) >= 1000 THEN '普通客户'ELSE '潜在客户'END AS customer_level
FROM orders
GROUP BY customer_id;

总结

掌握这些MySQL高级特性对于数据库开发和优化至关重要:

  1. 自关联查询子查询提供了灵活的数据查询方式
  2. 窗口函数让复杂的分析查询变得简单高效
  3. 内置函数CASE WHEN增强了SQL的表达能力
  4. 事务确保了数据的完整性和一致性
  5. 索引是提升查询性能的关键
  6. 视图简化了复杂查询并提供了安全性
  7. ER模型范式化是良好数据库设计的基础

建议通过大量实践来深入理解这些概念,并在实际项目中灵活运用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95852.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95852.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95852.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习——调整学习率

学习率调整方法详解在深度学习训练过程中&#xff0c;学习率&#xff08;Learning Rate, LR&#xff09; 是影响模型收敛速度和效果的关键超参数。学习率过大可能导致训练不稳定、震荡甚至无法收敛&#xff1b;学习率过小又会导致收敛过慢甚至陷入局部最优。因此&#xff0c;如…

Java分页 Element—UI

前端代码 <div class"block"><span class"demonstration">页数较少时的效果</span><el-paginationlayout"prev, pager, next":total"50"></el-pagination> </div>参考Element-UI total:0, form: …

html中列表和表格的使用

列表一般来说只有一列一列的进行使用&#xff0c;是一维的列表分为三种列表形式<!-- 列表标签ul-li:无序列表&#xff0c;必须用 <ul> 当 “容器”&#xff08;代表 “无序列表”&#xff09;&#xff0c;每个条目用 <li> 包起来&#xff08;代表 “列表项”&am…

大学信息查询平台:一个现代化的React教育项目

一 项目简介大学信息查询平台是一个基于React Vite Tailwind CSS构建的现代化Web应用&#xff0c;专门用于查询中国各大高校的详细信息。该项目不仅功能实用&#xff0c;更在用户体验和界面设计上做到了极致。二 核心功能2.1. 智能大学搜索// 搜索功能核心代码 const searchU…

代码随想录算法训练营第六天 - 哈希表2 || 454.四数相加II / 383.赎金信 / 15.三数之和 / 18.四数之和

代码随想录算法训练营第六天 - 哈希表2 || 454.四数相加II / 383.赎金信 / 15.三数之和 / 18.四数之和454.四数相加II解题思路383.赎金信自己解答&#xff1a;代码随想录讲解暴力做法哈希表15.三数之和双指针优化改进18.四数之和自己的解答系统讲解454.四数相加II 文档讲解&…

FPGA实现流水式排序算法

该算法采用双调排序算法&#xff0c;是一种可流水的递推算法&#xff0c;且算法的消耗时长可算&#xff0c;具体细节参考视频&#xff1a; https://www.bilibili.com/video/BV1S3thzWEnh/?spm_id_from333.1387.homepage.video_card.click&vd_source69fb997b62efa60ae1add…

平衡车 -- MPU6050

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 传感器原理 此外&#xff0c;用陀螺仪获取x,y,z轴的加速度。 初始化 我们现在对MPU6050进行初始化&#xff0c;MPU6050通过I2C总线与单片机进行通信&#xff0c;通过的是PB8和PB…

在电路浪涌测试中,TVS(瞬态电压抑制二极管)的防护效果确实会受到陪测设备中去耦网络(Decoupling Network,DN)的显著影响

在电路浪涌测试中&#xff0c;TVS&#xff08;瞬态电压抑制二极管&#xff09;的防护效果确实会受到陪测设备中去耦网络&#xff08;Decoupling Network&#xff0c;DN&#xff09;的显著影响&#xff0c;这一现象与浪涌能量的传递路径、阻抗匹配及信号完整性密切相关。结合 AD…

Redis之分布式锁与缓存设计

1、分布式锁 1.1、超卖问题/*** 存在库存超卖的不安全问题*/private void deductStock() {int stockTotal Integer.parseInt(stringRedisTemplate.opsForValue().get("stock"));if (stockTotal > 0) { // 这里存在多个线程、进程同时判断通过&#xff0c;然后超买…

静态住宅IP的特点

稳定性高&#xff1a;与动态IP地址相比&#xff0c;静态住宅IP不会不定时变更&#xff0c;能确保业务在网络环境中的一致性和连贯性&#xff0c;适合需要长期维持同一身份的场景&#xff0c;如跨境电商业务等3。安全性强&#xff1a;由于其住宅属性&#xff0c;看起来更像是正常…

Linux 编译 Android 版 QGroundControl 软件并运行到手机上

Linux 编译 Android 版 QGroundControl 软件并运行到手机上环境说明操作步骤一、参考上一篇文章在电脑端把环境搭建好二、配置 Qt Creator 的 Android 环境环境说明 电脑系统 Ubuntu 22.04 qgroundcontrol master 分支 Qt 6.8.3 操作步骤 一、参考上一篇文章在电脑端把环境搭…

Python 2025:量化金融与智能交易的新纪元

当Python遇见金融大数据&#xff0c;算法交易正迎来前所未有的技术变革在2025年的技术浪潮中&#xff0c;Python已经从一个"胶水语言"蜕变为金融科技领域的核心驱动力。根据GitHub 2025年度报告&#xff0c;Python在量化金融项目中的使用率增长了217%&#xff0c;在对…

[论文阅读] 人工智能 + 软件工程 | TDD痛点破解:LLM自动生成测试骨架靠谱吗?静态分析+专家评审给出答案

TDD痛点破解&#xff1a;LLM自动生成测试骨架靠谱吗&#xff1f;静态分析专家评审给出答案 论文信息项目详情论文原标题Evaluation of Large Language Models for Generating RSpec Test Skeletons in Ruby on Rails论文链接https://arxiv.org/pdf/2509.04644一段话总结 该研究…

开源PSS解析器1

本章介绍另一个开源PSS解析工具zuspec&#xff1a; zuspec 提供了一组用于处理 actions relationship level 的工具 &#xff08;ARL&#xff09; 模型&#xff0c;主要是使用 Accellera 便携式测试和刺激 &#xff08;PSS&#xff09; 语言描述的模型。ARL 模型用于为数字设计…

26考研——内存管理_内存管理策略(3)

408答疑 文章目录一、内存管理策略1、内存管理的基本原理和要求1.1、相关概念1.2、逻辑地址与物理地址1.3、程序的链接与装入1.4、进程的内存映像1.5、内存保护1.6、内存共享1.7、内存分配与回收1.8、在存储管理中涉及到两个问题2、连续分配管理方式2.1、相关概念2.2、单一连续…

Python爬虫实战:研究Event Handling机制,构建在线教育平台的课程数据采集和分析系统

1. 引言 1.1 研究背景与意义 在大数据时代,互联网作为全球最大的信息载体,蕴含着海量有价值的数据。这些数据涵盖了商业交易、用户行为、社会趋势等多个领域,对企业决策、学术研究和社会管理具有重要参考价值。如何高效、准确地获取这些数据并进行深度分析,成为当前数据科…

docker 安装 redis 并设置 volumes 并修改 修改密码(四)

设置新密码: 127.0.0.1:6379> CONFIG SET requirepass newpassword OK验证新密码: 127.0.0.1:6379> AUTH newpassword OK更新配置文件: 编辑主机的配置文件/data/redis/conf/redis.conf,将requirepass的值修改为新密码: requirepass newpassword重启容器以使配置…

NBA球星知识大挑战:基于 PyQt5 的球星认识小游戏

NBA球星知识大挑战&#xff1a;基于 PyQt5 的球星认识小游戏 代码详见&#xff1a;https://github.com/xiaozhou-alt/NBA_Players_Recognition 文章目录 NBA球星知识大挑战&#xff1a;基于 PyQt5 的球星认识小游戏一、项目介绍二、文件夹结构三、项目实现1. 自定义动画按钮&a…

电磁波成像(X射线、CT成像)原理简介

电磁波成像&#xff08;X射线、CT成像&#xff09;原理简介一、图像形成的一般形式二、可见光成像2.1可见光2.2可见光成像三、其他电磁波成像3.1X射线成像3.2CT成像3.2.1CT成像原理3.2.2CT成像与X射线成像对比3.2.3CT生成三维描述3.3PET成像一、图像形成的一般形式 大多数图像…

k8s部署2:前置条件:docker部署

前两天发布了k8s的前置发布条件,对于防火墙的处理,我看大家反响还不错,所以作为先行者,我感觉自己多了不少动力,所以今天来说说k8s部署前置条件中docker部分的部署。在此先感谢一下那些点赞和添加收藏的朋友们,你们的支持是我永远的动力!三克油喂给马吃! 之前写过docke…