【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 创建…...

TCP的连接管理
三次握手 什么是三次握手? 1. 第一次握手(客户端 → 服务器) 客户端发送一个 SYN 报文,请求建立连接。 报文中包含一个初始序列号 SEQ x。 表示:我想和你建立连接,我的序列号是 x。 2. 第二次握手&a…...
DAMA第10章深度解析:参考数据与主数据管理的核心要义与实践指南
引言 在数字化转型的浪潮中,数据已成为企业的核心资产。然而,数据孤岛、冗余和不一致问题严重制约了数据价值的释放。DAMA(数据管理协会)提出的参考数据(Reference Data)与主数据(Master Data&…...

初识Linux · 传输层协议TCP · 下
目录 前言: 滑动窗口和流量控制机制 流量控制 滑动窗口 1.滑动窗口如何移动 2.滑动窗口的大小如何变化的 3.如果发生了丢包如何解决(快重传) 拥塞控制 延迟应答 面向字节流 RST PSH URG 什么是 PSH? 什么是 URG&…...
Kubernetes生产实战(十六):集群安全加固全攻略
Kubernetes集群安全加固全攻略:生产环境必备的12个关键策略 在容器化时代,Kubernetes已成为企业应用部署的核心基础设施。但根据CNCF 2023年云原生安全报告显示,75%的安全事件源于K8s配置错误。本文将基于生产环境实践,系统讲解集…...

什么是分布式光伏系统?屋顶分布式光伏如何并网?
政策窗口倒计时!分布式光伏如何破局而立? 2025年,中国分布式光伏行业迎来关键转折: ▸ "430"落幕——抢装潮收官,但考验才刚开始; ▸ "531"生死线——新增项目全面市场化交易启动&…...
YOLO 从入门到精通学习指南
一、引言 在计算机视觉领域,目标检测是一项至关重要的任务,其应用场景广泛,涵盖安防监控、自动驾驶、智能交通等众多领域。YOLO(You Only Look Once)作为目标检测领域的经典算法系列,以其高效、快速的特点受到了广泛的关注和应用。本学习指南将带领你从 YOLO 的基础概念…...
嵌入式硬件篇---麦克纳姆轮(简单运动实现)
文章目录 前言1. 麦克纳姆轮的基本布局X型布局O型布局 2. 运动模式实现原理(1) 前进/后退前进后退 (2) 左右平移向左平移向右平移 (3) 原地旋转顺时针旋转(右旋)逆时针旋转(左旋) (4) 斜向移动左上45移动 (5) 180旋转 3. 数学原理…...

完整进行一次共线性分析
(随便找个基因家族) 1.数据收集 使用水稻、拟南芥、玉米三种作物进行示例 可以直接去ensemble去找最标准的基因组fasta文件和gff文件。 2.预处理数据 这里对于fasta和gff数据看情况要不要过滤掉线粒体叶绿体的基因,数据差异非常大&#…...

RabbitMQ--基础篇
RabbitMQ 简介:RabbitMQ 是一种开源的消息队列中间件,你可以把它想象成一个高效的“邮局”。它专门负责在不同应用程序之间传递消息,让系统各部分能松耦合地协作 优势: 异步处理:比如用户注册后,主程序将发…...

Quorum协议原理与应用详解
一、Quorum 协议核心原理 基本定义 Quorum 是一种基于 读写投票机制 的分布式一致性协议,通过权衡一致性(C)与可用性(A)实现数据冗余和最终一致性。其核心规则为: W(写成功副本数) …...

vue搭建+element引入
vue搭建element 在使用Vue.js开发项目时,经常会选择使用Element UI作为UI框架,因为它提供了丰富的组件和良好的设计,可以大大提高开发效率。以下是如何在Vue项目中集成Element UI的步骤: 1. 创建Vue项目 如果你还没有创建Vue项…...

食物数据分析系统vue+flask
食物数据分析系统 项目概述 食物数据分析系统是一个集食物营养成分查询、对比分析和数据可视化于一体的Web应用。系统采用前后端分离架构,为用户提供食物营养信息检索、食物对比和营养分析等功能,帮助用户了解食物的营养成分,做出更健康的饮…...

SPDK NVMe of RDMA 部署
使用SPDK NVMe of RDMA 实现多NVMe设备共享 一、编译、安装spdk 1.1、下载 1.1.1 下载spdk源码 首先,我们需要从GitHub上克隆SPDK的源码仓库。打开终端,输入以下命令: git clone -b v22.01 https://github.com/spdk/spdk.git cd spdk1.1.2…...
《C++中插入位的函数实现及示例说明》
《C中插入位的函数实现及示例说明》 这个函数 insertBits 的作用是将整数 M 插入到整数 N 的指定位置区间 [i, j] 中。具体来说,函数会先清除 N 中从第 i 位到第 j 位的所有位,然后将 M 左移 i 位后与清除后的 N 相加,从而将 M 插入到 N 的指…...

【Redis】缓存和分布式锁
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 一、缓存(Cache) 概述 Redis最主要的应用场景便是作为缓存。缓存(Cache)是一种用于存储数据副本的技术或组件,…...
SDK游戏盾与高防ip的的区别
SDK游戏盾与高防IP是两种针对不同业务场景设计的网络安全防护方案,二者在技术原理、防护能力、应用场景及用户体验等方面存在显著差异。以下为具体对比分析: 一、技术原理与实现方式 高防IP 原理:通过DNS解析或BGP路由将流量牵引至高防机房…...

OpenLayers 精确经过三个点的曲线绘制
OpenLayers 精确经过三个点的曲线绘制 根据您的需求,我将提供一个使用 OpenLayers 绘制精确经过三个指定点的曲线解决方案。对于三个点的情况,我们可以使用 二次贝塞尔曲线 或 三次样条插值,确保曲线精确通过所有控制点。 实现方案 下面是…...

大模型微调指南之 LLaMA-Factory 篇:一键启动LLaMA系列模型高效微调
文章目录 一、简介二、如何安装2.1 安装2.2 校验 三、开始使用3.1 可视化界面3.2 使用命令行3.2.1 模型微调训练3.2.2 模型合并3.2.3 模型推理3.2.4 模型评估 四、高级功能4.1 分布训练4.2 DeepSpeed4.2.1 单机多卡4.2.2 多机多卡 五、日志分析 一、简介 LLaMA-Factory 是一个…...

GLPK(GNU线性规划工具包)介绍
GLPK全称为GNU Linear Programming Kit(GNU线性规划工具包),可从 https://sourceforge.net/projects/winglpk/ 下载源码及二进制库,最新版本为4.65。也可从 https://ftp.gnu.org/gnu/glpk/ 下载,仅包含源码,最新版本为5.0。 GLPK是…...
Kubernetes生产实战(十七):负载均衡流量分发管理实战指南
在Kubernetes集群中,负载均衡是保障应用高可用、高性能的核心机制。本文将从生产环境视角,深入解析Kubernetes负载均衡的实现方式、最佳实践及常见问题解决方案。 一、Kubernetes负载均衡的三大核心组件 1)Service资源:集群内流…...

PCB设计实践(十三)PCB设计中差分线间距与线宽设置的深度解析
一、差分信号的基本原理与物理背景 差分信号技术通过两条等幅反相的传输线实现信号传输,其核心优势体现在电磁场耦合的对称性上。根据麦克斯韦方程组的对称解原理,两条线产生的电磁场在远场区域相互抵消,形成以下特性: 1. 共模噪…...

2025python学习笔记
一.Python语言基础入门 第一章 01.初识Python Python的起源: 1989年,为了打发圣诞节假期,Gudio van Rossum吉多范罗苏姆(龟叔)决心开发一个新的解释程序(Python维形)1991年,第一个…...
前端取经路——入门取经:初出师门的九个CSS修行
大家好,我是老十三,一名前端开发工程师。CSS就像前端修行路上的第一道关卡,看似简单,实则暗藏玄机。在今天的文章中,我将带你一起应对九大CSS难题,从Flexbox布局到响应式设计,从选择器优先级到B…...
【Pandas】pandas DataFrame corr
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

【并发编程】基于 Redis 手写分布式锁
目录 一、基于 Redis 演示超卖现象 1.1 Redis 超卖现象 1.2 超卖现象解决方案 二、Redis 的乐观锁机制 2.1 原生客户端演示 2.2 业务代码实现 三、单机部署 Redis 实现分布式锁 3.1 分布式锁的演变和升级 3.2 setnx 实现分布式锁 3.2.1 递归调用实现分布式锁 3.2.2 循…...
Web3 初学者的第一个实战项目:留言上链 DApp
目录 📌 项目简介:留言上链 DApp(MessageBoard DApp) 🧠 技术栈 🔶 1. Solidity 智能合约代码(MessageBoard.sol) 🔷 2. 前端代码(index.html script.js…...

Jsp技术入门指南【十二】自定义标签
Jsp技术入门指南【十二】自定义标签 前言一、什么是标签二、标签的类型有哪些?1. 空标签2. 带有属性的标签3. 带主体的标签 三、自定义标签的部件3.1 自定义标签的四步骤3.2 标签处理程序3.3 自定义标签的开发及使用步骤第一步:创建标签助手类第二步&…...

Java—— 泛型详解
泛型概述 泛型是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。 泛型的格式:<数据类型> 注意:泛型只能支持引用数据类型。 泛型的好处 没有泛型的时候,可以往集合中添加任意类型的数据&#x…...

GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系
大模型时代浪潮汹涌,作为其中的领军者,OpenAI 其推出的系列模型以强大的能力深刻影响着整个行业,并常常成为业界其他公司对标和比较的基准。因此,深入了解 OpenAI 的大模型,不仅是为了使用它们,更是为了理解当前大模型的能力边界和发展趋势,这对于我们评估和选择其他各类…...