【MySQL】数据库、数据表的基本操作
个人主页:Guiat
归属专栏:MySQL
文章目录
- 1. MySQL基础命令
- 1.1 连接MySQL
- 1.2 基本命令概览
- 2. 数据库操作
- 2.1 创建数据库
- 2.2 查看数据库
- 2.3 选择数据库
- 2.4 修改数据库
- 2.5 删除数据库
- 2.6 数据库备份与恢复
- 3. 表操作基础
- 3.1 创建表
- 3.2 查看表信息
- 3.3 创建临时表
- 3.4 创建表的复制
- 4. 表结构修改
- 4.1 添加列
- 4.2 修改列
- 4.3 删除列
- 4.4 重命名表
- 4.5 删除表
- 5. 约束与键
- 5.1 主键约束
- 5.2 外键约束
- 5.3 唯一约束
- 5.4 检查约束
- 5.5 默认值约束
- 6. 索引操作
- 6.1 创建索引
- 6.2 查看索引
- 6.3 删除索引
- 7. 表数据操作
- 7.1 插入数据
- 7.2 更新数据
- 7.3 删除数据
- 7.4 查询数据
- 8. 高级表操作
- 8.1 表分区
- 8.2 视图操作
- 8.3 存储过程
- 9. 事务控制
- 9.1 事务基本操作
- 9.2 设置保存点
- 9.3 事务隔离级别
- 10. 实际应用案例
- 10.1 电子商务数据库设计
- 10.2 数据库维护操作
- 10.3 常见查询和操作示例
正文
1. MySQL基础命令
MySQL是一种流行的关系型数据库管理系统,掌握基本的数据库和表操作命令是使用MySQL的基础。
1.1 连接MySQL
# 连接本地MySQL服务器
mysql -u username -p# 连接远程MySQL服务器
mysql -h hostname -u username -p -P port
1.2 基本命令概览
-- 显示MySQL版本
SELECT VERSION();-- 显示当前日期时间
SELECT NOW();-- 显示当前用户
SELECT USER();-- 显示可用的命令
HELP;-- 退出MySQL客户端
EXIT;
-- 或
QUIT;
2. 数据库操作
2.1 创建数据库
-- 基本语法
CREATE DATABASE database_name;-- 指定字符集和排序规则
CREATE DATABASE database_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;-- 仅当数据库不存在时创建
CREATE DATABASE IF NOT EXISTS database_name;
2.2 查看数据库
-- 显示所有数据库
SHOW DATABASES;-- 显示创建数据库的SQL语句
SHOW CREATE DATABASE database_name;-- 显示数据库状态
SHOW STATUS;
2.3 选择数据库
-- 切换到指定数据库
USE database_name;-- 查看当前选中的数据库
SELECT DATABASE();
2.4 修改数据库
-- 修改数据库字符集
ALTER DATABASE database_name
CHARACTER SET = utf8mb4;-- 修改数据库排序规则
ALTER DATABASE database_name
COLLATE = utf8mb4_unicode_ci;
2.5 删除数据库
-- 删除数据库
DROP DATABASE database_name;-- 仅当数据库存在时删除
DROP DATABASE IF EXISTS database_name;
2.6 数据库备份与恢复
# 使用mysqldump备份数据库
mysqldump -u username -p database_name > backup_file.sql# 恢复数据库
mysql -u username -p database_name < backup_file.sql
3. 表操作基础
3.1 创建表
-- 基本表创建语法
CREATE TABLE table_name (column1 datatype constraints,column2 datatype constraints,...columnN datatype constraints
);-- 示例:创建学生表
CREATE TABLE students (student_id INT PRIMARY KEY AUTO_INCREMENT,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,email VARCHAR(100) UNIQUE,birth_date DATE,enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,active BOOLEAN DEFAULT TRUE
);
3.2 查看表信息
-- 显示当前数据库的所有表
SHOW TABLES;-- 显示表结构
DESCRIBE table_name;
-- 或
DESC table_name;-- 显示创建表的SQL语句
SHOW CREATE TABLE table_name;-- 显示表状态
SHOW TABLE STATUS LIKE 'table_name';
3.3 创建临时表
临时表在会话结束时自动删除:
-- 创建临时表
CREATE TEMPORARY TABLE temp_table (id INT,name VARCHAR(50)
);
3.4 创建表的复制
-- 复制表结构
CREATE TABLE new_table LIKE original_table;-- 复制表结构和数据
CREATE TABLE new_table AS SELECT * FROM original_table;-- 复制表结构和部分数据
CREATE TABLE new_table AS
SELECT * FROM original_table WHERE condition;
4. 表结构修改
4.1 添加列
-- 添加新列
ALTER TABLE table_name
ADD COLUMN column_name datatype constraints;-- 在特定位置添加列
ALTER TABLE table_name
ADD COLUMN column_name datatype constraints
AFTER existing_column;-- 添加列到表的第一个位置
ALTER TABLE table_name
ADD COLUMN column_name datatype constraints
FIRST;-- 添加多列
ALTER TABLE table_name
ADD COLUMN column1 datatype constraints,
ADD COLUMN column2 datatype constraints;
4.2 修改列
-- 修改列的数据类型
ALTER TABLE table_name
MODIFY COLUMN column_name new_datatype;-- 修改列名和数据类型
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name new_datatype constraints;-- 修改列的默认值
ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT default_value;-- 删除列的默认值
ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;
4.3 删除列
-- 删除单列
ALTER TABLE table_name
DROP COLUMN column_name;-- 删除多列
ALTER TABLE table_name
DROP COLUMN column1,
DROP COLUMN column2;
4.4 重命名表
-- 重命名表
RENAME TABLE old_table_name TO new_table_name;-- 或使用ALTER TABLE
ALTER TABLE old_table_name
RENAME TO new_table_name;
4.5 删除表
-- 删除表
DROP TABLE table_name;-- 仅当表存在时删除
DROP TABLE IF EXISTS table_name;-- 删除多个表
DROP TABLE table1, table2, table3;
5. 约束与键
5.1 主键约束
-- 创建表时定义主键
CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(100) NOT NULL
);-- 复合主键
CREATE TABLE order_items (order_id INT,product_id INT,quantity INT NOT NULL,PRIMARY KEY (order_id, product_id)
);-- 为已有的表添加主键
ALTER TABLE table_name
ADD PRIMARY KEY (column_name);-- 删除主键
ALTER TABLE table_name
DROP PRIMARY KEY;
5.2 外键约束
-- 创建表时定义外键
CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE,FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);-- 为已有的表添加外键
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);-- 添加带有删除和更新行为的外键
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE CASCADE
ON UPDATE CASCADE;-- 删除外键约束
ALTER TABLE orders
DROP FOREIGN KEY fk_customer;
5.3 唯一约束
-- 创建表时定义唯一约束
CREATE TABLE users (user_id INT PRIMARY KEY,username VARCHAR(50) UNIQUE,email VARCHAR(100) UNIQUE
);-- 为已有的表添加唯一约束
ALTER TABLE users
ADD CONSTRAINT uq_email UNIQUE (email);-- 删除唯一约束
ALTER TABLE users
DROP INDEX uq_email;
5.4 检查约束
MySQL 8.0及以上版本支持CHECK约束:
-- 创建表时定义检查约束
CREATE TABLE employees (employee_id INT PRIMARY KEY,name VARCHAR(100),salary DECIMAL(10,2) CHECK (salary > 0),age INT CHECK (age >= 18)
);-- 为已有的表添加检查约束
ALTER TABLE employees
ADD CONSTRAINT chk_salary CHECK (salary > 0);-- 删除检查约束
ALTER TABLE employees
DROP CHECK chk_salary;
5.5 默认值约束
-- 创建表时定义默认值
CREATE TABLE articles (article_id INT PRIMARY KEY,title VARCHAR(200) NOT NULL,content TEXT,published BOOLEAN DEFAULT FALSE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 为已有的列添加默认值
ALTER TABLE articles
ALTER COLUMN published SET DEFAULT TRUE;-- 删除默认值
ALTER TABLE articles
ALTER COLUMN published DROP DEFAULT;
6. 索引操作
6.1 创建索引
-- 创建普通索引
CREATE INDEX idx_name ON table_name (column_name);-- 创建唯一索引
CREATE UNIQUE INDEX idx_email ON users (email);-- 创建复合索引
CREATE INDEX idx_name_email ON users (name, email);-- 创建前缀索引
CREATE INDEX idx_title ON articles (title(50));-- 在表创建时定义索引
CREATE TABLE customers (id INT PRIMARY KEY,name VARCHAR(100),email VARCHAR(100),INDEX idx_name (name)
);-- 使用ALTER TABLE添加索引
ALTER TABLE customers
ADD INDEX idx_email (email);
6.2 查看索引
-- 查看表的所有索引
SHOW INDEX FROM table_name;
6.3 删除索引
-- 删除索引
DROP INDEX index_name ON table_name;-- 使用ALTER TABLE删除索引
ALTER TABLE table_name
DROP INDEX index_name;
7. 表数据操作
7.1 插入数据
-- 插入单行数据
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);-- 插入多行数据
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...),(value1, value2, ...),(value1, value2, ...);-- 插入所有列的数据
INSERT INTO table_name
VALUES (value1, value2, ...);-- 从另一个表插入数据
INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM source_table
WHERE condition;
7.2 更新数据
-- 更新所有行
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;-- 使用子查询更新数据
UPDATE table_name
SET column1 = (SELECT column2 FROM another_table WHERE condition)
WHERE condition;-- 多表更新
UPDATE table1 t1
JOIN table2 t2 ON t1.id = t2.id
SET t1.column1 = t2.column2
WHERE condition;
7.3 删除数据
-- 删除满足条件的行
DELETE FROM table_name
WHERE condition;-- 删除所有行
DELETE FROM table_name;-- 截断表(更快但不可回滚)
TRUNCATE TABLE table_name;-- 多表删除
DELETE t1 FROM table1 t1
JOIN table2 t2 ON t1.id = t2.ref_id
WHERE condition;
7.4 查询数据
-- 基本查询
SELECT column1, column2
FROM table_name
WHERE condition;-- 查询所有列
SELECT * FROM table_name;-- 查询唯一值
SELECT DISTINCT column FROM table_name;-- 使用条件查询
SELECT * FROM table_name
WHERE column = value AND/OR another_column > value;-- 使用排序
SELECT * FROM table_name
ORDER BY column1 ASC, column2 DESC;-- 使用限制
SELECT * FROM table_name
LIMIT 10 OFFSET 20;-- 分组查询
SELECT column1, COUNT(*) as count
FROM table_name
GROUP BY column1
HAVING count > 5;
8. 高级表操作
8.1 表分区
-- 创建分区表(按范围分区)
CREATE TABLE sales (id INT,amount DECIMAL(10,2),sale_date DATE
)
PARTITION BY RANGE (YEAR(sale_date)) (PARTITION p0 VALUES LESS THAN (2020),PARTITION p1 VALUES LESS THAN (2021),PARTITION p2 VALUES LESS THAN (2022),PARTITION p3 VALUES LESS THAN MAXVALUE
);-- 查看分区信息
SHOW CREATE TABLE sales;
SELECT * FROM information_schema.PARTITIONS
WHERE TABLE_NAME = 'sales';
8.2 视图操作
-- 创建视图
CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;-- 查看视图
SHOW FULL TABLES WHERE TABLE_TYPE = 'VIEW';-- 更新视图
ALTER VIEW view_name AS
SELECT column1, column2, column3
FROM table_name
WHERE condition;-- 删除视图
DROP VIEW IF EXISTS view_name;
8.3 存储过程
-- 创建存储过程
DELIMITER //
CREATE PROCEDURE procedure_name(IN param1 INT, OUT param2 VARCHAR(100))
BEGIN-- 存储过程体SELECT column INTO param2 FROM table WHERE id = param1;
END //
DELIMITER ;-- 调用存储过程
CALL procedure_name(5, @result);
SELECT @result;-- 删除存储过程
DROP PROCEDURE IF EXISTS procedure_name;
9. 事务控制
9.1 事务基本操作
-- 开始事务
START TRANSACTION;-- 执行SQL语句
INSERT INTO accounts (account_id, balance) VALUES (1, 1000);
UPDATE accounts SET balance = balance - 500 WHERE account_id = 1;
INSERT INTO transactions (account_id, amount) VALUES (1, -500);-- 提交事务
COMMIT;-- 或回滚事务
-- ROLLBACK;
9.2 设置保存点
-- 开始事务
START TRANSACTION;-- 执行操作
INSERT INTO table1 VALUES (1, 'value');-- 设置保存点
SAVEPOINT point1;-- 执行更多操作
INSERT INTO table2 VALUES (2, 'value');-- 回滚到保存点
ROLLBACK TO SAVEPOINT point1;-- 提交事务(只提交保存点之前的操作)
COMMIT;
9.3 事务隔离级别
-- 查看当前事务隔离级别
SELECT @@TRANSACTION_ISOLATION;-- 设置事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
10. 实际应用案例
10.1 电子商务数据库设计
-- 创建数据库
CREATE DATABASE ecommerce CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE ecommerce;-- 创建客户表
CREATE TABLE customers (customer_id INT PRIMARY KEY AUTO_INCREMENT,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,phone VARCHAR(20),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_email (email),INDEX idx_name (last_name, first_name)
);-- 创建地址表
CREATE TABLE addresses (address_id INT PRIMARY KEY AUTO_INCREMENT,customer_id INT NOT NULL,address_type ENUM('billing', 'shipping') DEFAULT 'shipping',address_line1 VARCHAR(100) NOT NULL,address_line2 VARCHAR(100),city VARCHAR(50) NOT NULL,state VARCHAR(50),postal_code VARCHAR(20) NOT NULL,country VARCHAR(50) NOT NULL,is_default BOOLEAN DEFAULT FALSE,FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,INDEX idx_customer (customer_id)
);-- 创建类别表
CREATE TABLE categories (category_id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,description TEXT,parent_id INT,FOREIGN KEY (parent_id) REFERENCES categories(category_id) ON DELETE SET NULL
);-- 创建产品表
CREATE TABLE products (product_id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,description TEXT,price DECIMAL(10, 2) NOT NULL CHECK (price > 0),stock_quantity INT NOT NULL DEFAULT 0 CHECK (stock_quantity >= 0),category_id INT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,FOREIGN KEY (category_id) REFERENCES categories(category_id) ON DELETE SET NULL,INDEX idx_category (category_id),INDEX idx_name (name)
);-- 创建订单表
CREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT,customer_id INT NOT NULL,order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,status ENUM('pending', 'processing', 'shipped', 'delivered', 'cancelled') DEFAULT 'pending',shipping_address_id INT NOT NULL,billing_address_id INT NOT NULL,shipping_fee DECIMAL(10, 2) DEFAULT 0.00,total_amount DECIMAL(10, 2) NOT NULL,payment_method ENUM('credit_card', 'paypal', 'bank_transfer'),notes TEXT,FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE RESTRICT,FOREIGN KEY (shipping_address_id) REFERENCES addresses(address_id) ON DELETE RESTRICT,FOREIGN KEY (billing_address_id) REFERENCES addresses(address_id) ON DELETE RESTRICT,INDEX idx_customer (customer_id),INDEX idx_date (order_date)
);-- 创建订单明细表
CREATE TABLE order_items (order_id INT,product_id INT,quantity INT NOT NULL CHECK (quantity > 0),unit_price DECIMAL(10, 2) NOT NULL,PRIMARY KEY (order_id, product_id),FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE,FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE RESTRICT
);-- 创建产品评价表
CREATE TABLE reviews (review_id INT PRIMARY KEY AUTO_INCREMENT,product_id INT NOT NULL,customer_id INT NOT NULL,rating TINYINT NOT NULL CHECK (rating BETWEEN 1 AND 5),comment TEXT,review_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,UNIQUE KEY unique_review (product_id, customer_id),INDEX idx_product (product_id)
);-- 创建产品库存历史表
CREATE TABLE inventory_history (id INT PRIMARY KEY AUTO_INCREMENT,product_id INT NOT NULL,quantity_change INT NOT NULL,reason ENUM('purchase', 'sale', 'return', 'adjustment'),reference_id INT,changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,INDEX idx_product (product_id),INDEX idx_date (changed_at)
);-- 创建订单状态历史视图
CREATE VIEW order_status_history AS
SELECT orders.order_id,customers.email,orders.status,orders.total_amount,orders.order_date
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;-- 创建存储过程:处理订单
DELIMITER //
CREATE PROCEDURE process_order(IN order_id_param INT)
BEGINDECLARE current_status VARCHAR(20);-- 获取当前订单状态SELECT status INTO current_status FROM orders WHERE order_id = order_id_param;-- 只处理待处理订单IF current_status = 'pending' THENSTART TRANSACTION;-- 更新订单状态UPDATE orders SET status = 'processing' WHERE order_id = order_id_param;-- 更新产品库存UPDATE products pJOIN order_items oi ON p.product_id = oi.product_idSET p.stock_quantity = p.stock_quantity - oi.quantityWHERE oi.order_id = order_id_param;-- 记录库存变更INSERT INTO inventory_history (product_id, quantity_change, reason, reference_id)SELECT product_id, -quantity, 'sale', order_id_paramFROM order_itemsWHERE order_id = order_id_param;COMMIT;SELECT 'Order processed successfully' AS message;ELSESELECT CONCAT('Cannot process order. Current status: ', current_status) AS message;END IF;
END //
DELIMITER ;
10.2 数据库维护操作
-- 分析表
ANALYZE TABLE customers, orders, products;-- 检查表
CHECK TABLE customers, orders, products;-- 优化表
OPTIMIZE TABLE customers, orders, products;-- 修复表
REPAIR TABLE customers, orders, products;
10.3 常见查询和操作示例
-- 插入客户
INSERT INTO customers (first_name, last_name, email, password, phone)
VALUES ('John', 'Doe', 'john.doe@example.com', SHA2('password123', 256), '555-123-4567');-- 插入产品
INSERT INTO categories (name, description) VALUES ('Electronics', 'Electronic devices and accessories');
INSERT INTO products (name, description, price, stock_quantity, category_id)
VALUES ('Smartphone X', 'Latest smartphone with advanced features', 699.99, 50, 1);-- 创建订单(简化版)
INSERT INTO addresses (customer_id, address_type, address_line1, city, postal_code, country)
VALUES (1, 'shipping', '123 Main St', 'New York', '10001', 'USA');INSERT INTO orders (customer_id, shipping_address_id, billing_address_id, total_amount, payment_method)
VALUES (1, 1, 1, 699.99, 'credit_card');INSERT INTO order_items (order_id, product_id, quantity, unit_price)
VALUES (1, 1, 1, 699.99);-- 处理订单
CALL process_order(1);-- 复杂查询:查找畅销产品
SELECT p.product_id,p.name,p.price,SUM(oi.quantity) AS total_sold,SUM(oi.quantity * oi.unit_price) AS total_revenue
FROM products p
JOIN order_items oi ON p.product_id = oi.product_id
JOIN orders o ON oi.order_id = o.order_id
WHERE o.order_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY p.product_id, p.name, p.price
ORDER BY total_sold DESC
LIMIT 10;-- 创建每日销售报表视图
CREATE VIEW daily_sales AS
SELECT DATE(o.order_date) AS sale_date,COUNT(DISTINCT o.order_id) AS order_count,SUM(oi.quantity) AS items_sold,SUM(o.total_amount) AS total_revenue
FROM orders o
JOIN order_items oi ON o.order_id = oi.order_id
GROUP BY DATE(o.order_date)
ORDER BY sale_date DESC;
掌握数据库和表的基本操作是使用MySQL的基础。这些操作包括数据库的创建、修改和删除,表的设计、修改和管理,以及数据的增删改查。随着经验的积累,您可以进一步探索更高级的功能,如存储过程、触发器、视图和事务管理,以构建更复杂、更高效的数据库应用程序。
结语
感谢您的阅读!期待您的一键三连!欢迎指正!
相关文章:
【MySQL】数据库、数据表的基本操作
个人主页:Guiat 归属专栏:MySQL 文章目录 1. MySQL基础命令1.1 连接MySQL1.2 基本命令概览 2. 数据库操作2.1 创建数据库2.2 查看数据库2.3 选择数据库2.4 修改数据库2.5 删除数据库2.6 数据库备份与恢复 3. 表操作基础3.1 创建表3.2 查看表信息3.3 创建…...
Java中的内部类详解
目录 什么是内部类? 生活中的内部类例子 为什么需要内部类? 生活中的例子 内部类的存在意义 内部类的分类 1. 成员内部类 什么是成员内部类? 成员内部类的特点 如何使用成员内部类? 成员内部类访问外部类同名成员 2. …...
【LangChain全栈开发指南】从LLM集成到智能体系统构建
目录 🌟 前言🏗️ 技术背景与价值💢 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🧩 关键技术模块说明⚖️ 技术选…...
《内存单位:解锁数字世界的“度量衡”》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、基础单位:字节(Byte)二、进阶单位:千字节(KB)、兆字节(MB)…...
Spring Boot + MyBatis-Plus 高并发读写分离实战
引言 在高并发场景下,单一数据库实例往往成为性能瓶颈。数据库读写分离通过将读操作和写操作分配到不同的数据库实例,有效缓解主库压力,提升系统吞吐量。MyBatis-Plus 作为一款强大的持久层框架,结合 Spring Boot 能够轻松实现读…...
STC32G12K128-旋转编码器-软件去抖
STC32G12K128-旋转编码器-软件去抖 简介代码 简介 EC11旋转编码器是一种可以连续旋转的器件A,B,C为旋转编码引脚,带按键的有D,E引脚。引脚功能: A:编码器A相;B:编码器B相;C:公共端-一般接到GN…...
第J7周:对于ResNeXt-50算法的思考
目录 思考 一、代码功能分析 1. 构建 shortcut 分支(残差连接的旁路) 2. 主路径的第一层卷积(11) 4. 主路径的第三层卷积(11) 5. 残差连接 激活函数 二、问题分析总结:残差结构中通道数不一致的…...
古方焕新潮!李良济盒马联名养生水,以创新赋能中式养生新潮流
今天下午,中华老字号李良济与新零售巨头盒马联名的“五汁饮&暑清元气水”新品发布会,在李良济隆重举行。 新品发布会上,盒马与多家媒体齐聚李良济,通过中医文化体验、新品品鉴、生产全链路探秘、媒体采访等环节,不…...
使用PyTorch训练马里奥强化学习代理的完整指南
以下是使用PyTorch训练马里奥强化学习代理的完整指南,涵盖依赖库配置、环境搭建、核心代码实现及输出结果分析,结合关键优化策略与实战经验。 一、依赖库配置 基础环境安装 # 使用Anaconda创建虚拟环境(推荐) conda create -n m…...
STM32F103RCT6 + MFC实现网口设备搜索、修改IP、固件升级等功能
资源下载链接:https://download.csdn.net/download/qq_35831134/90712875?spm=1001.2014.3001.5501 一.大概逻辑: // 网口搜索大概逻辑: // ************************************************************************** // 一.环境: // 上位机用MFC下位机用STM32F103R…...
ch09 课堂参考代码
ch09 拓扑排序与基环树 拓扑排序 在一些场景中,需要完成一系列事情,这些事情之间有顺序关系或者依赖关系,在做一件事情之前必须先做另一件事,例如课程学习的先后顺序,这类问题可以抽象为图论中的拓扑排序问题。 拓扑…...
Day 15 训练
Day 15 对鸢尾花数据集进行处理,特征可视化,贝叶斯优化随机森林,Shap解释1. 导入必要的库2. 设置中文字体3. 加载数据集4. 查看数据5. 数据准备6. 贝叶斯优化随机森林7. 评估结果8. 绘制箱形图9. 绘制特征相关性热力图10. SHAP模型解释总结 对…...
Path to Integer_ABC402分析与解答
考虑怎么降低复杂度,使用分治策略降低搜索的复杂度。 对于a_i,j,其一定在最后结果数的第(2n-i-j)位(如果将最低位看成第0位),故将a_i,j看成a_i,j * 10^(2n-i-j),这样每次加上a_i,j就可以了。 从(1,1)到(n…...
嵌入式学习笔记 - 关于结构体成员地址对齐问题
一 在没有#pragma pack()这个宏声明的情况下 C语言中结构体成员分配内存大小时需要满足2个条件,这也是内存对齐的原则: ①每个成员变量的起始地址必须为其数据类型所占空间大小的整数倍 ②结构体所占空间总大小为其最大数据类…...
JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码
本文项目编号 T 180 ,文末自助获取源码 \color{red}{T180,文末自助获取源码} T180,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
升级element-ui步骤
1 执行 cnpm uninstall element-ui 删除element-ui依赖2 执行 cpm install element-ui -S 安装最新的element-ui,并加入到packjson中3 在element-ui中生成主题,并将主题文件加入到element-ui-theme中。删除所有旧版本到主题文件 *4 修改element-ui-theme…...
Dp通用套路(闫式)
闫式dp分析法: 从集合角度来分析DP问题。 核心思想: DP是一种求有限集中的最值或者个数问题 由于集合中元素的数量都是指数级别的,直接用定义去求,把每种方案都用dfs暴力枚举一遍,时间复杂度很高,此时用…...
如何删除豆包本地大模型
由于无法选择大模型的安装位置,因此会占用C盘大量空间,然后又找到不卸载的地方,经排查豆包大模型安装位为:C:\Users\[当前电脑用户]\AppData\Local\Doubao\User Data,只能进行手动卸载。...
在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置
在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置如下图所示 将DemClearDTCLimitation参数改成DEM_ALL_SUPPORTED_DTCS 此时0x14 服务就可以支持单个DTC的故障清除, 如果配置成 DEM_ONLY_CLEAR_ALL_DTCS 则只能够用0x14服务清楚所有DTC。...
Linux59 SSH配置前瞻 JumpServer双网卡ping通
为什么Ping这个IP地址Ping得通 本地址 [rootlocalhost network-scripts]# cat ifcfg-ens33 iTYPEEthernet BOOTPROTOnone DEFROUTEyes DEVICEens33 ONBOOTno IPADDR192.168.235.4 NETMASK255.255.255.0 GATEWAY192.168.235.2 DNS1114.114.114.114 [rootlocalhost network-scrip…...
TensorFlow中数据集的创建
目录 前言示例示例1示例2示例3示例4 前言 TensorFlow 的 tf.data.Dataset API 提供了一种灵活且高效的方式来加载和预处理数据。它可以轻松处理大规模数据集,并支持多种数据源格式。 所有数据集相关的内容都在tf.data中,from_tensor_slices:…...
OpenHarmony SystemUI开发——实现全局导航栏和状态栏关闭
在实际生产中,进场遇到需要关闭导航栏和状态栏的需求,现分享解决办法: 开发环境 OpenHarmony 5.0.0r 代码分析 思路: launcher本身可以关闭 导航栏(实际是 公共事件,发送消息给systemUI来实控制&#x…...
机器视觉的平板电脑屏幕组件覆膜应用
在现代智能制造业中,平板电脑屏幕组件覆膜工序是确保产品外观和功能完整性的重要环节。随着技术的进步,传统的覆膜方式已经无法满足高速度、高精度的生产需求。而MasterAlign视觉系统的出现,将传统覆膜工艺转变为智能化、自动化的生产流程。在…...
Windows 10 无法启动或黑屏的修复指南(适用于更新失败或磁盘故障)
Windows 10 无法启动或黑屏的修复指南(适用于更新失败或磁盘故障) 当 Windows 10 突然无法启动(黑屏、无限重启、更新失败后断电等情况),很可能是由于启动引导程序损坏或系统映像异常(如系统磁盘出现坏道&…...
AI星智协脑:智能驱动的高效协作管理平台全解读
前言 想象一下:早上刚开电脑,十几条未读消息如机关枪般扫射而来,各路任务像陨石雨一样砸向你,会议排得比热播剧还密集,文档版本堪比宫斗剧剧情反转,同事围着你转圈追KPI,活脱脱一场《职场大逃杀…...
WebSocket:实时通信的新时代
在现代Web应用中,实时通信变得越来越重要。传统的HTTP协议虽然能够满足基本的请求-响应模式,但在需要频繁更新数据的场景下,其效率和性能显得捉襟见肘。WebSocket协议应运而生,它提供了一种在单个TCP连接上进行全双工通信的机制&a…...
NetSuite Saved Search如何在Criteria中利用Expressions处理不同Transaction之间的关系?
最近有几个Saved Search都用到了Criteria中的Use Expressions的参数,具体的场景是我们想要对不同的Transaction Type做出不同条件的限定,这里有两个不同的举例。 1.除了ER类型头和行的内容要根据实际取,其余所有Transaction类型都取头信息&a…...
2025年 全新 AI 编程工具 Cursor 安装使用教程
一、Cursor 软件下载 首选,登录Cursor官网,进行软件下载,官网下载地址如下: Cursor AI IDE 下载 二、Cursor软件安装配置 此处以Windows10系统安装为例,下载完成之后,右键安装包,以管理员身份…...
跨平台编码规范文档
1. 引言 1.1 目的与范围 本编码规范旨在为软件开发团队提供统一的代码编写标准,以提高代码质量、可维护性和团队协作效率。适用于使用C#、Java、安卓和Web前端(HTML/CSS/JavaScript/TypeScript)的项目开发,不针对特定语言特性&a…...
Spring创建的线程池
在自动审核的方法上加上Async注解(标明要异步调用) Async//异步方法调用public void audit(WmNews wmNews) {//这个方法处理时间很长,单体异步思想,线程池}在自媒体引导类中使用EnableAsync注解开启异步调用 SpringBootApplicati…...
【深度学习新浪潮】苹果在显示算法技术上的研发进展调研
苹果的显示算法技术研发呈现三大趋势:AI深度整合(如HDR增强、动态校准)、多模态环境感知(光、温湿度、生物特征)、软硬件协同优化(芯片、传感器、算法深度耦合)。 一、动态刷新率与功耗管理 1. ProMotion技术的算法升级 技术修正: 像素级功耗管理:iPhone 13系列的Pr…...
图像画质算法记录(前言)
一、背景介绍 本篇主要是对图像画质增强相关,进行简单整理和记录。 二、整体流程 整体效果主要受到两部分影响: 1、前端isp处理。 2、后端画质增强。 三、isp常规流程 可以参考:刘斯宁:Understanding ISP Pipeline 四、后端画质…...
uniapp-商城-47-后台 分类数据的生成(通过数据)
在第46章节中,我们为后台数据创建了分类的数据表结构schema,使得可以通过后台添加数据并保存,同时使用云函数进行数据库数据的读取。文章详细介绍了如何通过前端代码实现分类管理功能,包括获取数据、添加、更新和删除分类。主要代…...
阿里云服务器数据库故障排查指南?
阿里云服务器数据库故障排查指南? 以下是针对阿里云服务器(如ECS自建数据库或阿里云RDS等托管数据库)的故障排查指南,涵盖常见问题的定位与解决方案: 一、数据库连接失败 检查网络连通性 ECS自建数据库 确认安全组规则放行数据库…...
服务器不备案有影响吗
在当今数字化的时代,服务器成为了众多企业和个人开展业务、展示自我的重要工具。然而,有一个问题常常被忽视,那就是服务器不备案到底有没有影响? 答案是肯定的!服务器不备案,影响可不小。据相关数据显示&a…...
LVGL9保姆级教程(源码获取)
文章目录 🌟 LVGL 9 源码获取全流程指南📥 获取 LVGL 9 源码✅ 官方 GitHub 仓库下载📌 下载步骤: 🛠️ 获取 LVGL Code::Blocks 工程源码下载步骤有两种方式:🚀 方法一:通过 README…...
【react组件】矩形框选小组件,鼠标左键选中 div,键盘 ESC 清空
在线预览 GitHub demo import React, { useState } from react; import Chooser from rc-chooser;const containerStyle: React.CSSProperties {display: flex,alignItems: center,justifyContent: center,flexWrap: wrap, };const boxStyle: React.CSSProperties {width:…...
数据结构5.0
大家好,今天是队列的知识哦~ 目录 一、概念 1.0单链表 2.0双链表 3.0数组 二、队列的方法 1.0 offer方法 2.0 poll方法 3.0 peek方法 4.0 isEmpty方法 三、队列的题目 1.0 用队列实现栈 2.0 用栈实现队列 3.0 设计循环队列 一、概念 数组 、单链表和双…...
Python字典:数据操作的核心容器
在Python编程生态中,字典(dict)是最常用且功能强大的内置数据结构之一。它以键值对(Key-Value Pair)的形式存储数据,为快速查找、灵活映射关系提供了天然支持。无论是数据清洗、算法实现还是Web开发&#x…...
Midjourney-V7:支持参考图片头像或背景生成新保真图
Midjourney-V7重磅升级Omni Reference:全能图像参考神器!再也不用担心生成图片货不对版了! 就在上周,Midjourney发版它最新的V7版本:Omini Reference,提供了全方位图像参考功能,它可以参考你提…...
【MySQL数据库】--SQLyog创建数据库+python连接
目录 1.连接本地数据库 2.创建数据库和表 3.使用 python读取数据 1.连接本地数据库 进入SQLyog 2.创建数据库和表 创建数据库gyp_test: CREATE DATABASE gyp_test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 创建表student_grade: CREATE TABLE …...
深入解析:思维链模型在大语言模型中的应用与实践
在人工智能领域,大语言模型的发展正以前所未有的速度改变着我们的生活和工作方式。从早期的文本生成到如今的复杂推理,模型的能力不断进化。而其中,思维链(Chain-of-Thought, CoT)技术的出现,更是为大模型的…...
服务器多客户端连接核心要点(1)
刷题 服务器多客户端连接核心要点 多进程服务器 实现原理 fork子进程:每次accept新客户端后,调用fork创建子进程。独立处理:子进程负责与客户端通信(如read/write),父进程继续监听新连接。 特点 隔离性…...
SIGIR 2025端到端生成式推荐ETEGRec
文章目录 1. 背景2. 方法2.1 框架图2.2 问题定义2.3 Item Tokenizer2.4 Generative Recommender2.5 ⭐️Sequence-Item Alignment2.6 ⭐️Preference-Semantic Alignment2.7 交替优化 3. 总结 现阶段 GRM 大多是两阶段的模型,第一阶段进行内容理解-行为语义对齐&…...
rust 中的 EBNF 介绍
在 rust 参考手册中,有大量类似: 句法 MacroInvocation :SimplePath ! DelimTokenTreeDelimTokenTree :( TokenTree* )| [ TokenTree* ]| { TokenTree* }TokenTree :Token排除 定界符(delimiters) | DelimTokenTreeMacroInvocationSemi :SimplePath ! (…...
解决 Redis 缓存与数据库一致性问题的技术指南
Redis 缓存与数据库一致性是分布式系统中常见的挑战,尤其在高并发场景下(如电商、用户管理、对账系统)。Redis 作为高性能缓存,常用于加速数据访问,但其与数据库(如 MySQL)之间的数据同步可能因…...
LlamaIndex 第六篇 SimpleDirectoryReader
SimpleDirectoryReader 是将本地文件数据加载到 LlamaIndex 的最简单方式。虽然在实际生产场景中,您更可能需要使用 LlamaHub 提供的多种数据读取器(Reader),但 SimpleDirectoryReader 无疑是快速入门的理想选择。 支持的文件类型…...
window 显示驱动开发-配置内存段类型
视频内存管理器(VidMm)和显示硬件仅支持某些类型的内存段。 因此,内核模式显示微型端口驱动程序(KMD)只能配置这些类型的段。 KMD 可以配置内存空间段和光圈空间段,其中不同: 内存空间段由保存…...
【人工智能学习之动作识别TSM训练与部署】
【人工智能学习之动作识别TSM训练与部署】 基于MMAction2动作识别项目的开发一、MMAction2的安装二、数据集制作三、模型训练1. 配置文件准备2. 关键参数修改3. 启动训练4. 启动成功 ONNX模型部署方案一、环境准备二、执行转换命令 基于MMAction2动作识别项目的开发 一、MMAct…...
PostgreSQL冻结过程
1.冻结过程 冻结过程有两种模式,依特定条件而择其一执行。为方便起见,将这两种模式分别称为惰性模式(lazy mode)和迫切模式(eager mode)。 并发清理(Concurrent VACUUM)通常在内部…...