Mysql从入门到上手(二)-全面了解增删改查(CRUD).
一、检索数据
MySQL 中的检索数据操作是数据库操作中最常见的任务之一。使用 SQL 查询语言中的 SELECT 语句,可以从数据库中的一个或多个表中检索数据。以下是 MySQL 中与数据检索相关的各种技术和用法的详细讲解。
1.1、基本查询
最基本的查询是使用 SELECT 语句来检索数据:
SELECT column1, column2, ... FROM table_name;
SELECT: 用于指定需要检索的列(字段)。
FROM: 指定要查询的表。
例如,从 users 表中检索所有列:
SELECT * FROM users;
* 表示选择所有的列。
1.2、限制返回
如果只需要检索特定的列,可以在 SELECT 中指定列名:
SELECT name, age FROM users;
这样只会返回 name 和 age 列的数据。
1.3、WHERE子句
WHERE 子句用于对检索的数据进行条件筛选。通过 WHERE 可以指定条件,限制结果集的范围。
SELECT * FROM users WHERE age > 18;
此查询会返回所有 age 大于 18 的用户。
常见的条件操作符包括:
=:等于
>:大于
<:小于
>=:大于等于
<=:小于等于
<> 或 !=:不等于
BETWEEN:在两个值之间
SELECT * FROM users WHERE age BETWEEN 10 AND 20;
IN:指定多个可能值
SELECT * FROM users WHERE age in (18,19);
LIKE:模式匹配
IS NULL:判断是否为 NULL
1.4、AND 和 OR
可以使用 AND 和 OR 组合多个筛选条件:
SELECT * FROM users WHERE age > 18 AND city = 'Beijing';
此查询返回 age 大于 18 且 city 为 'Beijing' 的用户。
SELECT * FROM users WHERE age > 18 OR city = 'Beijing';
此查询返回 age 大于 18 或 city 为 'Beijing' 的用户。
1.5、ORDER BY排序
ORDER BY 子句用于对检索到的数据进行排序。可以按一个或多个列进行升序(ASC)或降序(DESC)排序。
SELECT * FROM users ORDER BY age DESC;
此查询按 age 列降序排列结果。
SELECT * FROM users ORDER BY city ASC, age DESC;
此查询先按 city 升序排序,然后按 age 降序排序。
在 SQL 中,LIKE 操作符用于执行模糊匹配查询。你可以使用通配符(% 和 _)来匹配字符串中的特定模式。
1.6、通配符过滤
4.6.1、%通配符
% 是一个通配符,表示任意数量的字符(包括零个字符)。你可以在查询中使用 % 来匹配任意字符。
- 查询以某个字符串开始的记录
假设你有一个 employees 表,里面有 name 字段,你想查询所有名字以 "J" 开头的员工:
SELECT * FROM employees WHERE name LIKE 'J%';
这将返回所有名字以 "J" 开头的员工,如 James、John、Jack 等。
- 查询包含某个子字符串的记录
假设你要查询所有名字中包含 "ar" 的员工:
SELECT * FROM employees WHERE name LIKE '%ar%';
这将返回名字中包含 "ar" 的员工,如 Clark、Barbara 等。
- 查询以某个字符串结尾的记录
如果你想查询所有名字以 "son" 结尾的员工,可以使用 % 来表示字符串结尾:
SELECT * FROM employees WHERE name LIKE '%son';
这将返回所有名字以 "son" 结尾的员工,如 Jackson、Harrison 等。
4.6.2、_通配符
_ 是一个通配符,表示单个字符。它用于匹配某个位置的单个字符。
- 查询名字中第二个字符是 "a" 的员工
假设你想查询名字第二个字符是 "a" 的员工:
SELECT * FROM employees WHERE name LIKE '_a%';
这将返回所有名字第二个字符是 "a" 的员工,如 James、Carl 等。
- 查询名字第三个字符是 "n" 的员工
如果你想查询名字第三个字符是 "n" 的员工:
SELECT * FROM employees WHERE name LIKE '__n%';
这将返回所有名字第三个字符是 "n" 的员工,如 Mandy 等。
1.7、正则表达式
1.7.1、基本字符匹配
.:匹配任意单个字符(除换行符外)。
[abc]:匹配字符 a、b 或 c。
[^abc]:匹配任何不是 a、b 或 c 的字符。
示例: SELECT * FROM employees WHERE name REGEXP 'a.b';
这会匹配名字中,a 和 b 之间有任意一个字符的记录。
1.7.2、OR 匹配
|:表示“或”操作符,用于匹配两种或多种可能的模式。
示例:SELECT * FROM employees WHERE name REGEXP 'John|Steve';
这会匹配名字是 John 或 Steve 的记录。
1.7.3、范围匹配
[a-z]:匹配小写字母。
[A-Z]:匹配大写字母。
[0-9]:匹配数字。
[a-zA-Z]:匹配任何字母(不区分大小写)。
[a-z0-9]:匹配小写字母或数字。
示例:SELECT * FROM employees WHERE name REGEXP '^[a-z]';
这会匹配以小写字母开头的名字。
1.7.4、特殊字符匹配
^:匹配字符串的开头。
$:匹配字符串的结尾。
\:转义字符,匹配特殊字符(如 .、*、+ 等)。
示例:SELECT * FROM employees WHERE name REGEXP '^John';
这会匹配以 John 开头的名字。
如果你需要匹配字面上的点号(.),可以使用转义字符:
SELECT * FROM employees WHERE name REGEXP 'a\.b';
这会匹配 a.b(而不是任意字符)这样的名字。
1.7.5、结合多种规则
可以将多种正则表达式规则结合在一起,进行更复杂的匹配。
示例:SELECT * FROM employees WHERE name REGEXP '^[A-Za-z]+$';
这会匹配只包含字母的名字(不包括数字或其他字符)。
综合示例:
假设员工表,表格如下:
name | position |
John | Manager |
Steve | Developer |
Amanda | Designer |
Jack | Developer |
Sarah | Manager |
Jack123 | Developer |
示例 1:匹配名字以 J 开头,且至少包含两个字母。
SELECT * FROM employees WHERE name REGEXP '^J[a-zA-Z]{2,}';
结果:John、Jack
示例 2:匹配名字中包含 Jack 或 Sarah。
SELECT * FROM employees WHERE name REGEXP 'Jack|Sarah';
结果:Jack、Jack123
示例 3:匹配名字中至少包含一个数字。
SELECT * FROM employees WHERE name REGEXP '[0-9]';
结果:Jack123
1.8、数据处理函数
1. 字符串处理函数CONCAT()
将两个或多个字符串连接起来。
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
2. LENGTH() 和 CHAR_LENGTH()
LENGTH():返回字符串的字节长度。
CHAR_LENGTH():返回字符串的字符长度(考虑多字节字符)。
SELECT LENGTH('Hello') AS byte_length, CHAR_LENGTH('Hello') AS char_length;
3. UPPER() 和 LOWER()
将字符串转换为大写或小写。
SELECT UPPER('hello') AS upper_case, LOWER('HELLO') AS lower_case;
4.SUBSTRING() 或 SUBSTR()
截取字符串的一部分。
SELECT SUBSTRING('Hello World', 1, 5) AS substring;
5. NOW() 或 CURRENT_TIMESTAMP()
返回当前的日期和时间。
SELECT NOW() AS current_datetime;
- CURDATE() 和 CURTIME()
CURDATE():返回当前日期。
CURTIME():返回当前时间。
SELECT CURDATE() AS current_date, CURTIME() AS current_time;
- DATE_FORMAT()
格式化日期时间。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_date;
1.9、聚合函数
1. COUNT()
返回记录的数量。
SELECT COUNT(*) FROM employees;
2. SUM()
计算一列的总和。
SELECT SUM(salary) FROM employees;
3. AVG()
计算一列的平均值。
SELECT AVG(salary) FROM employees;
4. MAX() 和 MIN()
返回一列的最大值和最小值。
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;
1.10、GROUP BY分组
将查询结果按指定的列进行分组,并且通常与聚合函数(如 COUNT()、SUM()、AVG() 等)一起使用,用来对每个分组进行统计和分析。
GROUP BY 的基本语法
SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;
column1: 用于分组的列。
aggregate_function(column2): 聚合函数,应用在分组后的数据上(如 SUM(), COUNT(), AVG() 等)。
table_name: 表名。
基本的 GROUP BY 使用
假设有一个名为 employees 的表,它包含 department_id 和 salary 列,我们可以按部门分组,计算每个部门的平均薪资:
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;
这会按 department_id 列分组,并计算每个部门的平均薪资。
如果我们想要根据多个列进行分组,可以在 GROUP BY 后列出多个列名。例如,假设 sales 表包含 employee_id 和 sale_date 列,我们可以按员工和销售日期分组:
SELECT employee_id, sale_date, SUM(amount) AS total_sales FROM sales GROUP BY employee_id, sale_date;
1.11、LIMIT分页
通常用于从大量数据中提取部分结果,以提高查询效率。分页通常通过 LIMIT 和 OFFSET 来实现,它们用于限制返回的记录数量,并跳过指定数量的记录。
LIMIT 和 OFFSET
LIMIT:用于指定返回记录的数量。
OFFSET:用于指定跳过的记录数。
示例:
假设有一个表 employees,我们希望每页显示 10 条记录,查询第一页和第二页的数据。
第一页(记录 1 到 10):
SELECT * FROM employees LIMIT 10 OFFSET 0;
第二页(记录 11 到 20):
SELECT * FROM employees LIMIT 10 OFFSET 10;
可以看到,LIMIT 和 OFFSET 的搭配用于实现分页。LIMIT 规定了每页显示的记录数,而 OFFSET 确定了跳过的记录数,通常 OFFSET = (页数 - 1) * 每页记录数。
使用简化的 LIMIT:
LIMIT 还可以使用简化的写法,不显式使用 OFFSET,直接在一个参数中指定偏移量和记录数。
分页操作步骤讲解
1. 获取总记录数
分页查询的第一步是获取总记录数,通常通过 COUNT() 函数来获取表的总行数。通过获取总记录数,我们可以动态地计算出总页数。
SELECT COUNT(*) AS total_records FROM employees;
2. 计算总页数
有了总记录数后,我们可以计算出总页数。假设每页显示 10 条记录,可以通过以下公式计算:
总页数 = CEIL(总记录数 / 每页显示的记录数)
在 MySQL 中,可以通过 CEIL() 函数来向上取整,确保总页数即使有部分记录也能完整显示在最后一页。
SELECT CEIL(COUNT(*) / 10) AS total_pages FROM employees;
这个查询将返回一个数字,表示数据表中按每页 10 条记录分页后的总页数。
3. 计算当前页的 OFFSET
计算当前页数据时,需要知道从哪个位置开始获取数据。OFFSET 就是跳过前面多少条记录。通常是:
OFFSET = (当前页 - 1) * 每页显示的记录数
比如,如果用户请求第 3 页,每页显示 10 条记录,计算公式是:
OFFSET = (3 - 1) * 10 = 20 这意味着从第 21 条记录开始显示。
1.12、子查询
子查询是一个嵌套在另一个查询中的查询。它允许你在查询中使用一个查询的结果来影响另一个查询。
- 子查询在 WHERE 子句中
子查询常用来在 WHERE 子句中做条件过滤。它用于返回一个值,这个值会作为主查询的条件。
例子: 找到薪水高于某个员工(比如 id = 1)的所有员工。
SELECT
name
FROM
employees
WHERE salary > (SELECT salary FROM employees WHERE id = 1);
这里,内部的子查询 (SELECT salary FROM employees WHERE id = 1) 获取了员工 id = 1 的薪水,主查询会返回所有薪水大于这个值的员工。
- 子查询在 SELECT 子句中
子查询也可以放在 SELECT 子句中,通常用于计算某些值。
例子: 查询每个员工的薪水以及他们所在部门的最大薪水。
SELECT
name, salary,
(SELECT
MAX(salary)
FROM employees
WHERE department = e.department) AS max_salary
FROM employees e;
这里的子查询 (SELECT MAX(salary) FROM employees WHERE department = e.department) 计算了每个员工所在部门的最大薪水,并将其作为额外列返回。
- 子查询在 FROM 子句中
子查询可以出现在 FROM 子句中,这种情况通常用于将子查询的结果当作一个临时表来使用。
例子: 查询每个部门的平均薪水。
SELECT
department, AVG(salary)
FROM (SELECT department, salary FROM employees) AS dept_salaries
GROUP BY department;
子查询 (SELECT department, salary FROM employees) 返回了每个员工的部门和薪水,主查询对这些数据计算了每个部门的平均薪水。
1.13、联表查询
JOIN ON 是用来指定表之间如何连接的条件,通常会在 JOIN 语句中使用。ON 后面跟着的是两个表之间的连接条件,它决定了如何根据一个共同的列(或多个列)将两张表的数据组合在一起。
1. 基本的 JOIN ON 语法
SELECT
column1, column2
FROM
table1 JOIN table2
ON
table1.column_name = table2.column_name;
column_name 是连接条件,通常是两个表中的相同字段。它可以是 ID、外键 等。
ON 后的条件是用于匹配两张表中记录的规则。比如常见的是基于某个字段的相等匹配(例如 table1.id = table2.user_id)。
2. JOIN ON 的工作原理
在执行查询时,数据库会根据 ON 后的条件把两张表中的数据进行组合。只有满足连接条件的行才会被返回。换句话说,JOIN ON 确定了哪些行应该配对并一起展示。
INNER JOIN:只返回两个表中都有的记录。
LEFT JOIN:返回左表的所有记录,以及右表中匹配的记录,若没有匹配,则返回 NULL。
RIGHT JOIN:返回右表的所有记录,以及左表中匹配的记录,若没有匹配,则返回 NULL。
FULL JOIN:返回两个表中所有的记录,若没有匹配,则返回 NULL。
SELF JOIN:将表与自己连接,用于表内部的关系查询。
通过合理使用 JOIN,可以有效地从多张表中提取并关联数据。
二、MySQL索引
索引是数据库中用来加速查询操作的数据结构。它类似于书的目录,通过它可以快速定位到数据的位置,避免每次查询时都需要扫描整个表,从而提高查询效率。索引虽然能提升查询性能,但也带来了一些开销,如占用存储空间和降低写入性能。
2.1、主键索引
定义:主键索引是唯一的索引,确保表中的每一行数据都具有唯一的标识符,且值不能为 NULL。
特点:一个表只能有一个主键,MySQL 会自动创建主键索引。
2.2、唯一索引
定义:唯一索引保证了索引列的值是唯一的,但允许列中有 NULL 值(与主键索引不同,主键列不允许 NULL)。
特点:可以有多个唯一索引。
2.3、普通索引
定义:普通索引是最常用的索引类型,用于加速查询操作,但不强制唯一性。
特点:适用于查询频繁的列。
2.4、全文索引
定义:全文索引专用于加速对文本字段的全文搜索,适用于 CHAR、VARCHAR 和 TEXT 类型的字段。
特点:适合进行复杂的字符串匹配和查询(如 MATCH AGAINST),通常用于搜索引擎类应用。
2.5、组合索引
定义:组合索引是基于多个列的索引,用于加速多列组合查询的性能。
特点:适用于 WHERE 子句中涉及多个字段的查询。索引的顺序很重要。
组合索引的工作原理:
顺序匹配:组合索引会按照索引创建时的列顺序进行匹配。所以,当查询时列的顺序跟索引列的顺序一致时,索引会被完全利用。
最左前缀原则:MySQL 会根据最左边的列来选择是否使用组合索引。比如,索引是 (name, age),那么你可以通过 name 查询,也可以通过 name 和 age 一起查询,但不能只通过 age 查询。
三、INSERT添加
3.1、插入单行数据
通常的插入操作是将一行数据插入到表中。你可以指定要插入的列以及对应的值。
语法:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
注意:
如果你没有为 id 字段提供值,数据库会自动生成该值。
如果表中的某个字段允许 NULL 或有默认值,则可以选择不插入该字段的值,数据库会根据默认设置插入。
3.2、插入多行数据
INSERT 语句中插入多行数据,可以减少多个单独插入操作的开销。
语法:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1a, value2a, value3a, ...),
(value1b, value2b, value3b, ...),
(value1c, value2c, value3c, ...);
这种方式一次性插入三行数据,效果等同于执行三次 INSERT 语句,但更加高效。
注意:
每一行的数据值必须和列数一一对应。
每一行的值之间用逗号 , 分隔。
3.3、查询检索数据并插入
你可以通过 SELECT 查询语句从一个表中检索数据,然后将这些数据插入到另一个表中。这种方法在批量迁移数据或从其他表选择数据插入时非常有用。
语法:
INSERT INTO table_name (column1, column2, column3, ...)
SELECT
column1, column2, column3, ...
FROM
another_table
WHERE condition;
INSERT INTO table_name (column1, column2, ...):这是目标表和目标列,您要将数据插入到哪个表的哪些列。
SELECT column1, column2, ... FROM another_table:这是源表及其列,从哪个表中选择数据。
WHERE condition:这是一个条件,通常用来筛选要插入的数据。
注意:
SELECT 查询的列顺序必须与 INSERT INTO 中列的顺序一致。
目标表的字段类型必须兼容 SELECT 查询中检索到的列的类型。
四、UPDATE修改
UPDATE 语句用于修改表中的现有记录。你可以通过条件 WHERE 来指定更新的行。如果没有条件,整个表的记录都会被更新。
语法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
table_name:需要更新数据的表名。
column1, column2, ...:需要更新的列。
value1, value2, ...:新值,更新列的内容。
WHERE condition:指定哪些行需要更新,确保只更新特定的记录。如果没有 WHERE 条件,所有记录都会被更新。
注意事项:
使用 WHERE 条件:如果忘记写 WHERE 条件,所有记录都会被更新,这可能会导致数据丢失或不可预料的结果。
更新多列:可以在 SET 部分同时更新多个列。
五、DELETE删除
语句用于从表中删除一条或多条记录。就像 UPDATE 语句一样,DELETE 语句可以结合 WHERE 条件来指定哪些记录需要删除。没有 WHERE 条件时,所有记录都会被删除。
语法:
DELETE FROM table_name WHERE condition;
table_name:要删除数据的表名。
condition:指定哪些记录需要删除。如果没有 WHERE 条件,所有记录都会被删除。
注意事项:
使用 WHERE 条件:如果没有 WHERE 条件,所有数据都会被删除,这个操作无法恢复。
删除多行数据:可以使用条件来删除多条记录。例如,删除所有 signup_date 在 2023 年之前的用户:
DELETE FROM users WHERE signup_date < '2023-01-01';
软删除 vs 硬删除:在某些情况下,可能不希望真正删除数据,而是标记数据为已删除(软删除)。这种情况下可以使用 UPDATE 设置一个“删除标记”,例如:
UPDATE users SET deleted = 1 WHERE id = 1;
通过以上内容便可轻轻松松使用Mysql.是不是超级简单.有任何问题欢迎留言哦!!!
重点!重点!重点!
遇到问题不用怕不如来我的知识库找找看,也许有意想不到的收获!!!
易网时代-易库资源-易库教程:.NET开发、Java开发、PHP开发、SqlServer技术、MySQL技术-开发资料大全-易网时代-易库资源-易库教程 (escdns.com)
相关文章:
Mysql从入门到上手(二)-全面了解增删改查(CRUD).
一、检索数据 MySQL 中的检索数据操作是数据库操作中最常见的任务之一。使用 SQL 查询语言中的 SELECT 语句,可以从数据库中的一个或多个表中检索数据。以下是 MySQL 中与数据检索相关的各种技术和用法的详细讲解。 1.1、基本查询 最基本的查询是使用 SELECT 语句来…...
220V转5V转12V电机驱动供电WT5105
220V转5V转12V电机驱动供电WT5105 WT5105 芯片概述 WT5105 是一款集成非隔离式电源控制器,内部集成了 650V 高雪崩能力功率 MOSFET 以及高压启动与自供电电路。该芯片具有多模式输出的特点,输出电压可通过 FB 电阻灵活调整,能够实现 3.3V 以…...
基于Python Django 的全国房价大数据可视化系统(附源码,部署)
博主介绍:✌程序员徐师兄,7年大厂开发经验。全网粉丝12w,CSDN博客专家,同时活跃在掘金、华为云、阿里云、InfoQ等平台,专注Java技术和毕业项目实战分享✌ 🍅文末获取源码联系🍅 👇&a…...
leetcode0113. 路径总和 II - medium
1 题目:路径总和 II 官方标定难度:中 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root …...
day46——两数之和-输入有序数组(LeetCode-167)
题目描述 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 < index1 < index2 &l…...
数据结构:以一个例题演示弗洛伊德算法
例 8.5.2 利用弗洛伊德算法,对图 8.5.5 中左侧的带权有向图求最短路径,给出每一对顶点之间的最短路径及其路径长度在求解过程中的变化。 图 8.5.5 带权图和邻接矩阵 【解】 根据图 8.5.5 中的带权有向图,可得所对应的邻接矩阵 g g g &#…...
Nginx 报错403 排查与解决
目录 前言-环境基础问题出现:403 Forbidden问题排查问题解决 前言 今天领导让我部署一个前端项目,一顿操作报错访问报错403,让我们一起搞定他。 环境 CentOS 7 x86 的服务器上部署了 Nginx 服务器。 配置文件 我把前端项目打包后的 dist 文件夹放在了 /root/…...
React-useImperativeHandle (forwardRef)
我们会遇到这样的场景:某个组件想要暴露一些方法,来供外部组件来调用。例如我们在开发form表单的时候,就需要把设置表单值、重置值、提交等方法暴露给外部使用。会有如下代码: import { forwardRef } from react;const Form for…...
研一自救指南 - 07. CSS面向面试学习
最近的前端面试多多少少都会遇到css的提问,感觉还是要把重点内容记记背背。这里基于b站和我自己面试的情况整理。 20250418更新: 1. BFC Block Formatting Context,一个块级的盒子,可以创建多个。里面有很多个块,他们…...
生成式人工智能驱动下的个性化学习资源开发研究——以K12学科知识图谱构建为例
一、引言 1.1 研究背景与意义 在当今数字化时代,教育领域正经历着深刻的变革,生成式 AI 技术的迅猛发展为 K12 教育带来了新的契机与挑战。长期以来,K12 教育主要采用标准化教学模式,这种 “一刀切” 的方式难以满足学生多样化的…...
A股周度复盘与下周策略 的deepseek提示词模板
以下是反向整理的股票大盘分析提示词模板,采用结构化框架数据占位符设计,可直接套用每周市场数据: 请根据一下markdown格式的模板,帮我检索整理并输出本周股市复盘和下周投资策略 【A股周度复盘与下周策略提示词模板】 一、市场…...
性能比拼: Deno vs. Node.js vs. Bun (2025版)
本内容是对知名性能评测博主 Anton Putra Deno vs. Node.js vs. Bun: Performance Comparison 2025 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在本视频中,我们将使用当前可用的最新版本对 Node.js、Bun 和 Deno 进行比较。我决定更新本视频&#x…...
猫咪如厕检测与分类识别系统系列【十二】猫咪进出事件逻辑及日志优化
前情提要 家里养了三只猫咪,其中一只布偶猫经常出入厕所。但因为平时忙于学业,没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关,频繁如厕可能是泌尿问题,停留过久也可能是便秘或不适。为了更科学地了解牠的如…...
stm32| 中断标志位和中断挂起位 | TIM_ClearFlag 函数和TIM_ClearITPendingBit 函数
1. 中断标志位(Interrupt Flag) 作用: 中断标志位位于外设寄存器中(如定时器的TIMx_SR、GPIO的EXTI_PR等),用于指示某个特定事件是否发生(例如定时器溢出、GPIO引脚电平变化)。该标志…...
QML Rectangle 组件
基本属性 属性类型默认值描述colorcolor"white"矩形填充颜色border.colorcolor"transparent"边框颜色border.widthint0边框宽度radiusreal0圆角半径gradientGradientnull渐变填充antialiasingbooltrue是否抗锯齿 几何属性 (继承自Item) 属性类型默认值描…...
Spring 学习笔记之 @Transactional详解
一、数据库事务基础 数据库事务(Transaction)是数据库管理系统中用于确保数据一致性和完整性的一种机制。它是一组操作的集合,这些操作要么全部成功,要么全部失败,从而保证数据库状态的正确性。 1.1 事务的基本概念 定…...
绕过UI的cooke和token的验证
很多的网站都在登录页面加入了识别文字,识别图片,拖动拼图的验证码方式来防止爬虫、恶意注册等,如果是做自动化,需要绕过 验证码才能进入下一步操作。 方案一、测试环境去除验证码 :最轻松的方法,找开发帮忙…...
2024-04-19| Java: Documented注解学习 JavaDoc
在 Java 中,Documented 是一个元注解(meta-annotation),用于标记其他注解,表明这些注解应该被包含在 JavaDoc 文档中。以下是关于 Documented 注解的作用的简要说明: 作用 记录注解信息到 JavaDoc&#x…...
09-DevOps-Jenkins实现CI持续集成
前面已经把harbor搭建好了,也可以向harbor中推送自定义镜像。 原计划是在Jenkins这台服务器上,完成镜像构建,然后把镜像推送的harbor仓库中。现在改变计划了,Jenkins所在的服务器(192.168.1.10)不负责镜像…...
Java中包装类和泛型
包装类和泛型 包装类装箱和拆箱 泛型泛型的概念泛型的使用泛型的上界 通配符通配符概念通配符上界通配符下界 前言 在Java中,由于基本类型不是继承⾃Object,为了在泛型中可以⽀持基本类型,Java给每个基本类型都对应了⼀个包装类型,…...
小程序 GET 接口两种传值方式
前言 一般 GET 接口只有两种URL 参数和路径参数 一:URL 参数(推荐方式) 你希望请求: https://serve.zimeinew.com/wx/products/info?id5124接口应该写成这样,用 req.query.id 取 ?id5124: app.get(&…...
8、表单控制:预言水晶球——React 19 复杂表单处理
一、水晶球的预言本质 "每个表单都是时空裂缝中的预言容器,"占卜课教授特里劳妮凝视着水晶球,"React-Hook-Form与Formik的融合,让数据捕获如同捕捉未来碎片!" ——以魔法部神秘事务司的预言厅为隐喻…...
Android studio开发——room功能实现用户之间消息的发送
文章目录 1. Flask-SocketIO 后端代码后端代码 2. Android Studio Java 客户端代码客户端代码 3. 代码说明 SocketIO基础 1. Flask-SocketIO 后端代码 后端代码 from flask import Flask, request from flask_socketio import SocketIO, emit import uuidapp Flask(__name_…...
【测试文档】项目测试文档,测试管理规程,测试计划,测试文档模版,软件测试报告书(Word)
原件获取列表: 系统测试方案-2.docx B-Web安全服务渗透测试模板.docx 压力测试报告.docx安全测试用例及解析.docx 测试计划.doc 测试需求规范.doc 测试需求指南.docx 测试用例设计白皮.doc 单元测试报告模板.doc 单元测试计划模板.doc 回归测试指南.doc 集成测试报…...
将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据
文章目录 项目简介GiteeMCP 简介环境要求项目代码核心实现代码MCP 服务端(批量注册 Tool)MCP 客户端(调用 DeepSeek) DeepSeek APIDockersse 连接http 连接 Cherry Studio配置模型配置 MCP调用 MCP 项目简介 在本项目中ÿ…...
接口自动化 ——fixture allure
一.参数化实现数据驱动 上一篇介绍了参数化,这篇 说说用参数化实现数据驱动。在有很多测试用例的时候,可以将测试用例都存储在文件里,进行读写调用。本篇主要介绍 csv 文件和 json 文件。 1.读取 csv 文件数据 首先创建 csv 文件ÿ…...
Datawhale AI春训营学习笔记
数据竞赛Baseline代码全解析:从数据加载到结果输出 一、环境配置与数据加载 1.1 依赖库导入 from netCDF4 import Dataset # 处理气象.nc格式数据 import numpy as np import pandas as pd from sklearn.model_selection import KFold from sklearn.metrics imp…...
关于学习STM32的C语言的知识
数据类型 关键字位数表示范围stdint关键字char8 -128 ~ 127 int8_tunsigned char8 0 ~ 255 uint8_tshort16 -32768 ~ 32767 int16_tunsigned short16 0 ~ 65535 uint16_tint32 -2147483648 ~ 2147483647 int32_t unsigned int32 0 ~ 429496729 uint32_t long32 -2147483648 ~…...
day28 学习笔记
文章目录 前言一、图像添加水印1.ROI操作2.添加水印 二、图像去除噪声1.均值滤波2.方框滤波3.高斯滤波4.中值滤波5.双边滤波6.总结 前言 通过今天的学习,我掌握了OpenCV中有关图像水印以及图像去除噪声的原理以及相关操作 一、图像添加水印 1.ROI操作 ROI操作即之…...
第34讲|遥感大模型对比实战:SAM vs. CLIP vs. iSAM
目录 🔍 一、遥感大模型简要介绍 1️⃣ SAM(Segment Anything Model) 2️⃣ CLIP(Contrastive Language–Image Pretraining) 3️⃣ iSAM(Improved SAM for Remote Sensing) 🧪 二、实战数据集与任务设计 🌟 任务设置: 🧠 三、代码实现片段(以 Python 为…...
EAGLE代码研读+模型复现
要对代码下手了,加油(ง •_•)ง 作者在他们自己的设备上展现了推理的评估结果,受第三方评估认证,EAGLE为目前最快的投机方法(虽然加速度是评估投机解码方法的主要指标,但其他点也值得关注。比如PLD和Lookahead无需额…...
多线程使用——线程安全、线程同步
一、线程安全 (一)什么是线程安全问题 多个线程,同时操作同一个共享资源的时候,可能会出现业务安全的问题。 (二)用程序摹拟线程安全问题 二、线程同步 (一)同步思想概述 解决线…...
基于 Linux 环境的办公系统开发方案
基于 Linux 环境的办公系统开发方案 一、项目概述 1.1 项目背景 在当今数字化办公的时代,高效、稳定且功能丰富的办公系统对于企业和组织的日常运营至关重要。Linux 作为一种开源、稳定且高度可定制的操作系统,拥有庞大的开发者社区和丰富的软件资源&…...
mysql8.0.17以下驱动导致mybatis blob映射String乱码问题分析与解决
mysql8.0.17以下驱动导致blob映射String乱码问题分析与解决 一、问题复现二、问题深究三、解决方法方法1方法2 一、问题复现 1、docker安装mysql8.0,并创建测试数据库及测试数据表 CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4; use test; CREATE TABLE t…...
Unity Nav Mesh导航系统的简单使用
标题 1.下载。2.面板位置3.object面板4.Area面板5.Bake面板6.Agent面板7.Nav Mesh Agent组件8.Nav Mesh Obstacle组件9.简单使用 1.下载。 unity2022以上版本要去packageManager中下载。 2.面板位置 3.object面板 Navigation Static:设置该物体是否被列入静态寻路…...
从零开始学A2A五:A2A 协议的安全性与多模态支持
A2A 协议的安全性与多模态支持 一、A2A 协议安全机制 1. 认证机制 A2A 协议采用多层次认证机制,确保智能体身份的真实性和通信的安全性。 基于 Agent Card 的身份认证: {"agent_id": "secure_agent_001","authentication&…...
PyTorch源码编译报错“fatal error: numpy/arrayobject.h: No such file or directory”
记录一下这个bug的fix过程 一开始以为是版本问题,尝试了几个不同版本都不可以,遂排除版本问题的可能 定位 首先 pip list 看到确实安装了这个库 接着 pip show 查看 numpy 库的安装路径 numpy/arrayobject.h 是 NumPy 的 C-API 头文件,其…...
[Java EE] Spring AOP 和 事务
目录 1. AOP 1.1 AOP 概念 1.2 AOP 核心概念 1.3 AOP 作用 2. AOP 详解 2.1 切点(Pointcut) 2.2 连接点(Join Point) 2.3 通知(Advice) 2.4 切面(Aspect) 2.5 通知类型 2.5.1 Around 环绕通知 2.5.2 Before 前置通知 2.5.3 After 后置通知 2.5.4 AfterReturning …...
2025年KBS SCI1区TOP:增强天鹰算法EBAO,深度解析+性能实测
目录 1.摘要2.天鹰算法AO原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了增强二进制天鹰算法(EBAO),针对无线传感器网络(WSNs)中的入侵检测系统(IDSs)。由于WSNs的特点是规模…...
适合IIS部署网页应用的编程语言
直接部署在 IIS 上的语言/技术 PHP 使用 FastCGI 模块直接集成安装 PHP Manager for IIS 可简化配置示例配置:在 web.config 中添加处理程序映射指向 php-cgi.exe Node.js 使用 iisnode 模块实现直接集成允许 Node.js 应用在 IIS 进程中运行支持进程管理、负载均衡…...
43.[前端开发-JavaScript高级]Day08-ES6-模板字符串-展开运算符-ES7~ES11
ES6~ES13新特性(二) 1 模板字符串的详解 字符串模板基本使用 标签模板字符串使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content…...
边生成边训练:构建合成数据驱动的在线训练系统设计实战
目录 边生成边训练:构建合成数据驱动的在线训练系统设计实战 一、系统目标与能力总览 ✅ 核心目标: 二、系统架构图(推荐用于PPT展示) 三、关键模块设计解析 ✅ 1. 合成数据生成器模块 ✅ 2. 质量评分器模块 ✅ 3. 在线训…...
AF3 create_alignment_db_sharded脚本main函数解读
AlphaFold3 create_alignment_db_sharded 脚本在源代码的scripts/alignment_db_scripts文件夹下。 该脚本中的 main 函数是整个对齐数据库生成脚本的核心入口,它 orchestrates(编排)了所有流程,从读取链目录到生成 .db 文件、构建索引、处理重复链、写入最终索引文件。 ma…...
52. Java 类和对象 - 什么是隐藏字段?
文章目录 52. Java 类和对象 - 什么是隐藏字段?🎯 参数名称的作用与规则✅ 参数名称的命名规则 🎯 什么是隐藏字段?🚨 问题定义✅ 解决办法:使用 this 关键字 🎯 如何避免隐藏字段带来的困扰&am…...
IntelliJ IDEA右键快捷方式设置方法
IntelliJ IDEA右键快捷方式设置方法 在 IntelliJ IDEA 中设置右键快捷方式快速打开项目或文件(Windows 系统),可以通过以下方法实现: 方法 1:通过注册表添加右键菜单(推荐) 打开注册表编辑器 按…...
深入剖析JavaScript内存泄漏:识别、定位与实战解决
在JavaScript的世界里,开发者通常不必像使用C那样手动管理内存的分配和释放,这得益于JavaScript引擎内置的垃圾回收(Garbage Collection, GC)机制。然而,这并不意味着我们可以完全忽视内存管理。“自动"不等于&qu…...
JVM原理与实战
一、Java虚拟机概述 java程序通过虚拟机实现了java代码的跨平台。 二、java虚拟机运行过程: 类编译器编译java代码为class文件, 类加载器将class文件加载到jvm, 程序计数器控制程序的执行, 虚拟机栈存放局部变量,方法名…...
MCP协议用到的Node.js 和 npm npx
一、Node.js 与 npm、npx 的介绍 Node.js:是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,使您能够在服务器端运行 JavaScript 代码。它广泛用于构建服务器端应用程序和工具。 npm(Node Package Manager):是 Nod…...
如何写 commit message?
前言 每次写 commit message 时,都会纠结用什么动词,格式应该什么样,所以决定总结一下。 查了一下,还是挺复杂的。因为只面向我个人日常使用,所以只进行一些简单的、适合我的总结。 正文 message 分为两部分&#…...
【厦门大学】DeepSeek大模型赋能高校教学和科研
DeepSeek赋能高校教学和科研 引言人工智能发展简史:从图灵测试到大模型时代大模型核心技术解析:构筑智能金字塔DeepSeek赋能高校:打造智能校园生态本地部署方案:安全、高效与定制化兼得教学革新:重塑知识传授与学习体验…...