MySQL库级管理:数据库管理与存储引擎剖析
引言
各位数据库爱好者们好!今天我们要深入探讨MySQL数据库的基本操作,这是每位开发者必须掌握的"内功心法" 💪。无论你是刚接触MySQL的小白,还是需要复习基础的老手,这篇教程都将带你系统学习数据库的核心操作。我们将从最基础的创建、查看数据库开始,逐步深入到字符集设置和存储引擎选择等高级话题。准备好了吗?让我们一起开启这段MySQL探索之旅! 🚀
一、数据库的创建与管理基础
1.1 创建数据库的多种姿势
创建数据库就像盖房子前先规划地基一样重要 🏗️,MySQL提供了灵活的创建方式:
-- 最基础的创建方式(如果数据库已存在会报错)
CREATE DATABASE my_database;-- 推荐的安全创建方式(避免重复创建报错)
CREATE DATABASE IF NOT EXISTS my_database;-- 创建时指定字符集和排序规则(推荐utf8mb4)
CREATE DATABASE IF NOT EXISTS my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;-- 创建带注释的数据库
CREATE DATABASE IF NOT EXISTS inventory
COMMENT '用于存储产品库存信息的数据库';
注意事项:
- 数据库名称最好使用小写字母和下划线的组合
- 避免使用MySQL保留关键字作为名称
- 生产环境务必指定字符集,避免乱码问题
1.2 查看数据库的隐藏技巧
查看数据库不只是简单的SHOW DATABASES
,还有很多实用技巧:
-- 基本查看命令
SHOW DATABASES;-- 查看符合特定模式的数据库(如所有以'test'开头的数据库)
SHOW DATABASES LIKE 'test%';-- 查看数据库的创建语句(超级实用!)
SHOW CREATE DATABASE my_database;-- 从information_schema中获取更详细的信息
SELECT * FROM information_schema.SCHEMATA
WHERE schema_name = 'my_database';-- 查看数据库大小(需要计算所有表的总和)
SELECT table_schema AS '数据库',SUM(data_length + index_length) / 1024 / 1024 AS '大小(MB)'
FROM information_schema.TABLES
GROUP BY table_schema;
1.3 选择/切换数据库的艺术
选择数据库看似简单,但在复杂应用中很有讲究:
-- 基本选择命令
USE my_database;-- 在连接时直接选择数据库
mysql -u username -p -D my_database-- 查看当前选择的数据库
SELECT DATABASE();-- 在SQL脚本中安全切换(先检查是否存在)
SET @db_name = 'my_database';
SET @sql = CONCAT('USE ', @db_name);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
多数据库操作技巧:
- 可以在不切换数据库的情况下操作其他数据库的表:
SELECT * FROM another_db.users;
- 使用完全限定名称:
数据库名.表名
1.4 删除数据库的安全之道
删除数据库是危险操作,必须谨慎! 💥
-- 基本删除命令(危险!如果数据库不存在会报错)
DROP DATABASE my_database;-- 安全删除方式(推荐)
DROP DATABASE IF EXISTS my_database;-- 删除前先备份(命令行操作)
mysqldump -u username -p my_database > my_database_backup.sql
删除数据库的注意事项:
- 删除前务必备份重要数据
- 检查是否有应用程序正在使用该数据库
- 考虑使用权限控制,限制删除操作
- 生产环境建议先重命名数据库观察一段时间再删除
二、深入字符集与排序规则
2.1 字符集(Character Set)深度解析
字符集是数据库的"语言系统",选错会导致各种乱码问题 🌐:
查看支持的字符集:
SHOW CHARACTER SET;
-- 或者
SELECT * FROM information_schema.CHARACTER_SETS;
重点字符集对比:
字符集 | 描述 | 最大长度 | 推荐场景 |
---|---|---|---|
latin1 | 西欧字符 | 1字节 | 仅需西欧语言支持 |
utf8 | MySQL中的UTF-8(伪实现) | 3字节 | 不推荐使用 |
utf8mb4 | 真正的UTF-8实现 | 4字节 | 所有现代应用 |
gbk | 简体中文 | 2字节 | 仅需简体中文支持 |
关键结论:永远使用utf8mb4!因为它:
- 支持完整的Unicode字符集(包括emoji 😊)
- 是真正的UTF-8实现
- 已经成为MySQL的默认字符集(8.0+)
2.2 排序规则(Collation)高级应用
排序规则决定了字符串如何比较和排序,对查询性能有重要影响 🔍:
查看支持的排序规则:
SHOW COLLATION;
-- 或
SHOW COLLATION LIKE 'utf8mb4%';
常见排序规则解析:
utf8mb4_general_ci
:快速但不精确的比较utf8mb4_unicode_ci
:基于Unicode标准的精确比较utf8mb4_bin
:二进制比较,区分大小写utf8mb4_0900_ai_ci
:MySQL 8.0引入的更先进算法
排序规则后缀含义:
_ci
:Case Insensitive(不区分大小写)_cs
:Case Sensitive(区分大小写)_bin
:Binary(二进制比较)_ai
:Accent Insensitive(不区分重音)_as
:Accent Sensitive(区分重音)
性能考虑:
_general_ci
比_unicode_ci
快,但排序准确性稍差_bin
规则性能最好,但可能不符合语言习惯- MySQL 8.0的
_0900
系列规则在准确性和性能间取得了更好平衡
2.3 字符集与排序规则实践指南
创建时指定:
CREATE DATABASE my_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
修改已有数据库:
ALTER DATABASE my_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
查看当前设置:
SELECT DEFAULT_CHARACTER_SET_NAME,DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE schema_name = 'my_app';
表级别覆盖:
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
连接级别设置:
# 在my.cnf/my.ini中配置
[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4
三、存储引擎深入对比与实践
3.1 存储引擎全景概览
MySQL的存储引擎就像汽车的发动机,决定了数据库的性能特性 🚗:
查看支持的引擎:
SHOW ENGINES;
主要引擎对比表:
特性 | InnoDB | MyISAM | MEMORY | Archive |
---|---|---|---|---|
事务支持 | ✅ 完整ACID | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 |
锁粒度 | 行级锁 | 表级锁 | 表级锁 | 行级锁 |
外键支持 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 |
MVCC | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 |
崩溃恢复 | ✅ 优秀 | ❌ 较差 | ❌ 数据丢失 | ✅ 有限支持 |
全文索引 | ✅ (5.6+) | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
压缩能力 | ✅ 表压缩 | ✅ 行压缩 | ❌ 不支持 | ✅ 极高压缩比 |
适用场景 | 高并发OLTP | 读密集型报表 | 临时表/缓存 | 归档数据 |
3.2 InnoDB深度剖析
作为默认引擎,InnoDB是大多数应用的最佳选择 🏆:
核心特性:
- ACID事务:保证数据完整性
- 行级锁定:提高并发性能
- 外键约束:维护数据一致性
- 聚集索引:主键索引与数据存储在一起
- 多版本并发控制(MVCC):非阻塞读
配置优化:
[mysqld]
# 缓冲池大小(建议物理内存的50-75%)
innodb_buffer_pool_size = 4G# 日志文件大小(建议256M-2G)
innodb_log_file_size = 1G# 刷新日志频率
innodb_flush_log_at_trx_commit = 1 # 最安全
# innodb_flush_log_at_trx_commit = 2 # 折衷方案
# innodb_flush_log_at_trx_commit = 0 # 最佳性能# IO线程数
innodb_read_io_threads = 8
innodb_write_io_threads = 8
创建InnoDB表:
CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,amount DECIMAL(10,2) NOT NULL,order_date DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX idx_user (user_id),FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB
ROW_FORMAT=COMPRESSED -- 启用压缩
KEY_BLOCK_SIZE=8;
3.3 MyISAM适用场景与技巧
虽然逐渐被淘汰,但在特定场景仍有价值 💾:
适用场景:
- 只读或读多写少的应用
- 数据仓库和报表系统
- 需要全文索引(MySQL 5.6以前版本)
- 空间数据(GIS功能)
特性示例:
CREATE TABLE log_data (id BIGINT AUTO_INCREMENT PRIMARY KEY,log_time DATETIME NOT NULL,message TEXT NOT NULL,INDEX idx_time (log_time),FULLTEXT INDEX idx_message (message)
) ENGINE=MyISAM
KEY_BLOCK_SIZE=1024;-- 压缩MyISAM表(节省空间)
myisampack table_name.MYI
MyISAM关键文件:
.frm
:表结构定义.MYD
:数据文件.MYI
:索引文件
3.4 其他存储引擎精要
MEMORY引擎:
CREATE TABLE session_cache (session_id VARCHAR(128) PRIMARY KEY,user_id INT NOT NULL,data JSON,expires DATETIME NOT NULL
) ENGINE=MEMORY;
特点:
- 数据存储在内存中,速度极快 ⚡
- 表结构持久化,数据在重启后丢失
- 支持HASH索引(默认)和BTREE索引
Archive引擎:
CREATE TABLE audit_log (id BIGINT AUTO_INCREMENT PRIMARY KEY,action_time DATETIME DEFAULT CURRENT_TIMESTAMP,user_id INT,action VARCHAR(50),details TEXT
) ENGINE=ARCHIVE;
特点:
- 极高的压缩比(比MyISAM小75%)
- 只支持INSERT和SELECT操作
- 适合存储历史归档数据
3.5 存储引擎转换实战
转换方法:
-- 方法1:ALTER TABLE
ALTER TABLE my_table ENGINE=InnoDB;-- 方法2:导出/导入
mysqldump -u username -p my_database my_table > my_table.sql
sed -i 's/ENGINE=MyISAM/ENGINE=InnoDB/' my_table.sql
mysql -u username -p my_database < my_table.sql-- 方法3:CREATE TABLE...SELECT
CREATE TABLE new_table LIKE old_table;
ALTER TABLE new_table ENGINE=InnoDB;
INSERT INTO new_table SELECT * FROM old_table;
RENAME TABLE old_table TO old_table_backup, new_table TO old_table;
转换注意事项:
- 大表转换可能耗时较长,建议在低峰期进行
- 转换前务必备份数据
- 检查外键约束和索引是否兼容
- 验证转换后的应用功能是否正常
四、综合实战演练
4.1 场景1:电商系统数据库设计
-- 创建电商数据库
CREATE DATABASE IF NOT EXISTS ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci
COMMENT '电商系统主数据库';USE ecommerce;-- 用户表(InnoDB)
CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password CHAR(60) NOT NULL COMMENT 'bcrypt哈希',email VARCHAR(100) NOT NULL UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;-- 商品表(InnoDB)
CREATE TABLE products (product_id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,description TEXT,price DECIMAL(10,2) NOT NULL,stock INT NOT NULL DEFAULT 0,category_id INT,INDEX idx_category (category_id),FULLTEXT INDEX idx_search (name, description)
) ENGINE=InnoDB;-- 订单表(InnoDB)
CREATE TABLE orders (order_id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,total_amount DECIMAL(12,2) NOT NULL,status ENUM('pending','paid','shipped','completed','cancelled') DEFAULT 'pending',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES users(user_id)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;-- 日志表(MyISAM)
CREATE TABLE access_logs (log_id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id INT,ip_address VARCHAR(45),action VARCHAR(50) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,INDEX idx_user (user_id),INDEX idx_time (created_at)
) ENGINE=MyISAM;
4.2 场景2:数据库维护操作
-- 修改数据库字符集(需要转换现有数据)
ALTER DATABASE ecommerce CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 优化所有表
USE ecommerce;
SET @tables = NULL;
SELECT GROUP_CONCAT(table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'ecommerce';
SET @tables = CONCAT('OPTIMIZE TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;-- 备份单个数据库(命令行执行)
# mysqldump -u root -p --single-transaction --routines --triggers ecommerce > ecommerce_backup.sql-- 迁移存储引擎(MyISAM转InnoDB)
SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;')
FROM information_schema.tables
WHERE table_schema = 'ecommerce' AND engine = 'MyISAM';
五、性能优化与故障排查
5.1 数据库操作性能优化
创建数据库优化:
- 预分配大小(适用于某些存储引擎)
- 合理配置字符集和排序规则
- 考虑文件系统特性(如ext4的dir_index)
字符集优化建议:
- 所有数据库对象使用一致的字符集
- 连接字符集与数据库字符集保持一致
- 对于纯ASCII数据,可以考虑使用latin1节省空间
存储引擎选择策略:
- 事务需求:需要→InnoDB,不需要→考虑其他
- 并发写入:高并发→InnoDB,低并发→MyISAM
- 数据特性:临时数据→MEMORY,归档数据→ARCHIVE
- 特殊需求:全文搜索→MyISAM或InnoDB+外部方案
5.2 常见问题解决方案
问题1:创建数据库时报权限错误
解决方案:
-- 检查当前用户权限
SHOW GRANTS;-- 授予创建数据库权限
GRANT CREATE ON *.* TO 'username'@'host';
问题2:字符集不一致导致乱码
排查步骤:
- 检查数据库、表和列的字符集设置
- 确认客户端连接字符集
- 验证应用程序连接字符串配置
问题3:存储引擎不支持特定功能
解决方案:
- 修改表使用的存储引擎
- 使用替代方案实现功能(如应用层实现外键约束)
- 考虑使用触发器或存储过程弥补功能缺失
总结 🎯
今天我们全面掌握了MySQL数据库的基本操作 🎓,重点内容包括:
- 数据库生命周期管理:创建→查看→选择→删除的全套操作
- 字符集与排序规则:深入理解了utf8mb4的重要性和各种排序规则的区别
- 存储引擎对比:详细分析了InnoDB、MyISAM等引擎的特性和适用场景
关键收获:
- 始终使用
IF EXISTS
/IF NOT EXISTS
避免常见错误 - 生产环境必须使用utf8mb4字符集
- InnoDB是大多数场景的最佳选择
- 不同的业务场景可能需要混合使用多种存储引擎
最佳实践建议:
- 数据库命名采用小写+下划线规范
- 创建数据库时明确指定字符集和排序规则
- 重要操作前先备份数据
- 定期优化和维护数据库
PS:如果你在学习过程中遇到问题,别慌!欢迎在评论区留言,我会尽力帮你解决!😄
相关文章:
MySQL库级管理:数据库管理与存储引擎剖析
引言 各位数据库爱好者们好!今天我们要深入探讨MySQL数据库的基本操作,这是每位开发者必须掌握的"内功心法" 💪。无论你是刚接触MySQL的小白,还是需要复习基础的老手,这篇教程都将带你系统学习数据库的核心…...
MongoDB 的核心概念(文档、集合、数据库、BSON)是什么?
MongoDB 是一个面向文档的数据库,它的核心概念与传统的关系型数据库(RDBMS)有所不同。以下是它的四个主要核心概念: 文档 (Document) 定义: 文档是 MongoDB 中的基本数据单元。它类似于关系型数据库中的一行记录&#…...
占位符读取标准输入缓冲区规则
1、如果标准输入缓冲区中的前若干个字符都是空白字符,%s,%d,%f都能直接跳过并且从第一个非空白字符开始读取,但%c不能,而是直接读取。 2、%s遇到空白字符时停止,不会读取遇到的空白字符。 3、%d遇到非数字…...
使用Docker部署MongoDB
使用Docker部署MongoDB 使用Docker部署MongoDB是一种快速、便捷的方式,以下是详细步骤: 1. 基本部署 拉取MongoDB镜像 docker pull mongo:latest运行MongoDB容器(最简单方式) docker run --name mongodb -d -p 27017:27017 m…...
如何通过命令提示符(CMD)检查虚拟化是否已启用
想确认 Windows 11 或 10 电脑或笔记本上的虚拟化是否已启用,可以使用命令提示符或 PowerShell 中的 systeminfo 命令。之前已经介绍过使用图形界面的检查方法。在大多数现代系统中,虚拟化默认在 BIOS 中启用,但我们无需打开 BIOS/UEFI 固件菜单即可确认这一点。 虚拟化是一…...
【氮化镓】AlGaN合金中成分相关的辐射响应
2025年,美国宾夕法尼亚州立大学Miaomiao Jin等人基于分子动力学模拟方法,研究了AlGaN合金中成分依赖的辐射响应。研究结果表明,AlGaN合金的辐射损伤特性与铝含量密切相关:随铝含量增加,单次碰撞事件产生的缺陷减少,但由于累积效应,富铝系统更易形成扩展间隙缺陷簇,导致…...
『 测试 』软件测试全流程与Bug管理核心要点解析
文章目录 1 软件测试生命周期2 Bug2.1 Bug 的概念2.2 提出清晰的 Bug2.3 Bug 级别2.4 Bug 的生命周期2.5 作为测试人员与开发人员发生冲突怎么办 1 软件测试生命周期 软件测试贯穿于软件的整个生命周期; 需求分析 测试前需要对需求进行分析, 分析通常站在三个角度去考虑, 即用…...
【springcloud学习(dalston.sr1)】使用Feign实现接口调用(八)
该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一) (一)Feign的理解 前面文章【springcloud学习(dalston.sr1)】服务消费者通过restTemplat…...
嵌入式Linux Qt开发:2、Qt creator简单配置、Qt Designer使用以及信号槽机制使用
一、前言 Qt creator比较轻量,而且是Qt自带的IDE,基本可以开箱即用,个人使用起来感觉还是比较舒服的,并且其自带的FakeVim也可以做一些Vim的配置,其主界面可以简单配置显示很多的窗口,让开发更加顺畅。 Q…...
【Vue 3 + Vue Router 4】如何正确重置路由实例(resetRouter)——避免“VueRouter is not defined”错误
在使用 Vue 3 和 Vue Router 4 开发中大型 SPA 应用时,我们经常会遇到需要动态添加或删除路由的场景。尤其是在权限控制和用户登出后重置路由的需求中,正确地实现 resetRouter 非常关键。 然而,许多开发者在迁移或初始化项目时,会…...
企业内部通讯,企业级即时通讯软件选择
企业内部的沟通往往涉及大量敏感信息,如商业机密、财务数据、客户信息等。BeeWorks IM即时通讯平台采用全私有化部署,企业可以将服务器部署在自己的数据中心或私有云环境中,确保所有数据的存储和传输都在企业可控的网络内完成。这种部署方式从…...
300. 最长递增子序列
理解最长递增子序列(LIS)是解决该问题的关键。子序列是从给定数组中按顺序选取的元素序列,例如数组 [1, 2, 3, 4, 5] 的子序列可以是 [2, 3, 4]。需要注意的是,子序列的元素在原数组中不一定是连续的。因此,最长递增子…...
MongoDB入门
1.MongoDB 基本概念详解 2.MongoDB 快速实战 3.MongoDB 核心操作与原理详解 Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译 成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。Mongodb是一款非关系型数据库…...
MySQL基础原理
目录 一、MySQL架构 1、四层架构 2、MySQL运行机制 二、MySQL存储引擎 1、不同存储引擎对比 2、InnoDB存储结构 2.1 内存结构 2.2 磁盘结构 3、日志先行策略 3.1 核心思想 3.2 关键组件与流程 3.3 数据安全保证 3.3.1 崩溃恢复 3.3.2 持久性保障 一、MySQL架构 …...
Python刷题练习
文章目录 1.寻找相同字串2.密钥格式化3.五键键盘的输出4.单词重量5.输出指定字母在字符串的中的索引6.污染水域7.九宫格按键输入8.任务最优调度9.高效的任务规划 1.寻找相同字串 题目描述: 给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输…...
基于GPUGEEK 平台进行深度学习
一、平台简介 GPUGEEK 是一个专注于提供 GPU 算力租赁服务的平台,在人工智能与深度学习领域为用户搭建起便捷的算力桥梁。它整合了丰富多样的 GPU 资源,涵盖 RTX - 4090、RTX - 3090、A100 - PCIE 等多种型号,满足不同用户在模型训练、数据处…...
基于Matlab的非线性Newmark法用于计算结构动力响应
基于Matlab的非线性Newmark法用于计算结构动力响应,主要针对材料非线性或几何非线性问题。 1. Newmark法基本原理 Newmark法是一种隐式时间积分方法,通过预估-校正步骤更新位移、速度和加速度: 预测步: un1unΔtvn…...
Oracle — PL-SQL
介绍 Oracle PL/SQL是专为Oracle数据库设计的过程化编程语言,深度融合SQL语句与结构化编程逻辑,旨在高效处理复杂数据操作与业务规则。其核心特征为“块结构”,程序由声明、执行、异常处理三部分组成,支持模块化开发,显…...
第七节第二部分:接口的综合案例
案例分析 代码: Student类 package com.Interface_Demo;public class Student {private String name;private char sex;private double score;public Student() {}public Student(String name, char sex, double score) {this.name name;this.sex sex;this.scor…...
【AI古风美学渲染】:淡雅光影中的细腻呈现
“顶作AI”作为国内首个深度融合中文语义的生成式AI平台,以近百亿级参数的Lens跨模态模型为核心,开创了“自然语言即生产力”的创作模式。该平台突破传统工具对专业术语的依赖,用户仅需输入如“水墨风格的山间庭院,晨雾中若隐若现…...
JVM学习专题(二)内存模型深度剖析
目录 1.JVM结构体系 编辑 2.跨平台特性 3.JVM整体结构及内存模型 1.栈内存 1、栈帧: 1.局部变量表 2.操作数栈 3.动态链接 4.方法出口 2、创建对象 2.程序计数器: 3.方法区 4.堆 5.本地方法区 6.总结 1.JVM结构体系 JDK、JRE 和 JVM…...
Prometheus 的介绍与部署(入门)
一、什么是Prometheus; 1.介绍 Prometheus 是一个功能强大的监控工具,适用于各种环境。通过简单的安装和配置,可以快速实现对系统和服务的监控。无论是单机环境、容器化环境还是 Kubernetes 集群,Prometheus 都能提供灵活…...
JavaSwing之-JDialog
JavaSwing之-JDialog JDialog 是 Java Swing 中用于创建对话框窗口的容器类,继承自 Dialog 类(AWT),常用于显示临时信息、获取用户输入或执行模态操作。它是 javax.swing.JDialog 包中的类。 与 JFrame 不同的是,JDia…...
配置Nginx解决http host头攻击漏洞【详细步骤】
前言 大概内容: 安全系统渗透测试出host头攻击漏洞,下面是解决步骤,本人已测过无问题。 server_name aaabbb.com; if ($http_Host !~* ^127.0.0.1|aaabbb.com|localhost$){return 403;}...
如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?
一、Redis分布式锁基础实现 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默认30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…...
LeetCode 热题 100 35.搜索插入位置
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: Java代码: 题目: 题目描述: 题目链接: 35. 搜索插入位置 - 力扣&…...
电流检测放大器的优质选择XBLW-INA180/INA181
前言: 在当前复杂的国际贸易环境下,关税的增加使得电子元器件的采购成本不断攀升,电子制造企业面临着巨大的成本压力。为了有效应对这一挑战,实现国产化替代已成为众多企业降低生产成本、保障供应链稳定的关键战略。对此芯伯乐推出…...
序列化和反序列化:从理论到实践的全方位指南
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
Leetcode (力扣)做题记录 hot100(62,64,287,108)
力扣第62题:不同路径 62. 不同路径 - 力扣(LeetCode) class Solution {public int uniquePaths(int m, int n) {int[][] array new int[m][n];for(int i 0;i<n;i){array[0][i] 1;}for(int i 0;i<m;i){array[i][0] 1;}for(int i …...
【Linux】shell内置命令fg,bg和jobs
Shell 内置命令 fg(foreground 的缩写)。它用于将后台挂起的任务恢复到前台运行。 例如: 假设你运行了一个耗时的 SVN 操作(如 svn update 或 svn checkout)。按下 CtrlZ 将该进程挂起到后台。输入 fg…...
鸿蒙OSUniApp 制作动态加载的瀑布流布局#三方框架 #Uniapp
使用 UniApp 制作动态加载的瀑布流布局 前言 最近在开发一个小程序项目时,遇到了需要实现瀑布流布局的需求。众所周知,瀑布流布局在展示不规则尺寸内容(如图片、商品卡片等)时非常美观和实用。但在实际开发过程中,我…...
通用软件项目技术报告 - 导读II
现在,我们正式进入报告的第三个主要领域:3. 领域三:核心业务逻辑与算法实现。 连接: 我们已经讨论了如何存储数据(领域一)和如何设计 API 让外部或内部服务可以访问这些数据或触发操作(领域二)。现在,我们将深入应用程序的“心脏”——实际执行业务规则、进行计算和(…...
新能源汽车三电质量护盾:蓝光三维扫描技术显身手
在绿色低碳的潮流下,新能源汽车行业快速发展,车企们纷纷加速电气化转型。由于电动汽车动力系统构造与内燃机车辆的构造有很大不同,制造商及其供应商必须加快工程研发设计及生产,而这对质量保证过程提出了新的挑战。 对于新能源汽…...
针对已训练好的YOLOv8模型的优化策略
以下是针对已训练好的YOLOv8模型的优化策略,结合模型微调、结构改进、训练策略调整等方法,可进一步提升检测性能或适应特定场景需求: 一、超参数调优 学习率动态调整 初始学习率(lr0):若模型收敛后仍有优化…...
AI 产业化浪潮:从生成智能到星载计算,中国如何重塑全球竞争格局
2025 年的科技版图上,人工智能正经历着从技术奇点到产业爆点的历史性跨越。当生成式 AI 突破实验室围墙走进千行百业,当智能体开始在数字世界自主决策,当卫星搭载的大模型在太空展开计算,一场由技术创新驱动的产业革命正在重塑全球…...
Python如何解决中文乱码
Python文件头部声明 # -*- coding: utf-8 -*- # 必须放在文件第一行或第二行中文字符串定义方式 # Python 3 chinese_str "中文" # 默认就是Unicode# Python 2 chinese_str u"中文" # 必须加u前缀字符串编码转换黄金法则 # 解码:字节串 …...
android studio导入项目
如果 gradle-8.0-bin.zip 没有下载成功 可以点击进入这个网站:https://services.gradle.org/distributions/ 找到和自己本版相同的gradle-8.0-bin.zip文件找到自己版本进行下载; 如果下载依赖失败, 可以手动下载依赖编译过程中的jar https://repo.maven.apache.org/…...
Android Studio Meerkat与Gradle构建工具升级实战指南
简介 Android Studio Meerkat和Gradle构建工具的升级将带来显著的性能提升和开发体验优化。在Android生态快速演进的2025年,开发者亟需掌握这些新特性以提升工作效率。本指南将从零开始,详细讲解如何升级Android Studio和Gradle构建工具,配置新特性,并提供实际应用场景的代…...
TCP/IP参考模型详解:从理论架构到实战应用
一、参考模型基础概念与分类 计算机网络参考模型是为解决网络通信标准化问题而设计的逻辑框架。在众多模型中,TCP/IP参考模型以其高实用性和广泛应用,成为现代网络架构的基石。该模型采用分层设计思想,将复杂的网络通信功能划分为多个层次&am…...
【Linux网络】网络层
网络层 在复杂的网络环境中确定一个合适的路径 IP 协议 IPV4 点分十进制[0,255].[0,255].[0,255].[0,255]IPV6 IP地址目标网格目标主机 基本概念 主机:配有IP地址,但是不进行路由控制的设备;路由器:即配有IP地址,又能进行路由控制;节点:主机和路由器的统称。 两个问题 路…...
FastAPI + OpenAI 模型 的 GitHub 项目结构模板
FastAPI OpenAI 模型 的 GitHub 项目结构模板,适合用作大模型(如 GPT-4) API 服务的基础框架。该模板包括了基本的项目结构、配置、文档以及与 OpenAI API 的交互方式。 项目结构 fastapi-openai-api/ ├── app/ │ ├── __init__.p…...
基于EFISH-SCB-RK3576/SAIL-RK3576的无人快递柜控制器技术方案
国产化替代J1900的智能化升级方案 一、硬件架构设计 多模态感知模块 智能识别单元: 双MIPI-CSI接口接入4K摄像头,NPU加速包裹条码识别(速度>5件/秒,准确率>99.99%),支持破损检测&…...
Centos 上安装Klish(clish)的编译和测试总结
1,介绍 clish是一个类思科命令行补全与执行程序,它可以帮助程序员在nix操作系统上实现功能导引、命令补全、命令执行的程序。支持?,help, Tab按键。本文基于klish-2.2.0介绍编译和测试。 2,klish的编译 需要安装的库&…...
Android学习总结之Glide自定义三级缓存(面试篇)
一、三级缓存核心原理与设计 问题 1:为什么需要三级缓存?各层缓存的核心作用是什么? 回答核心 内存缓存:毫秒级快速响应,存储近期浏览的图片(如滑动列表来回切换的图片),通过 LRU…...
管理Oracle Data Guard的最佳实践
Oracle Data Guard的中文名字叫数据卫士,顾名思义,它是生产库的一道保障。所以管理Data Guard是DBA的一项重要工作之一,管理Data Guard时主要有以下几个注意点需要引起重视。 备份库的归档日志积压 一般情况下,生产库的归档日志是…...
iOS WebView和WKWebView怎么调试?
iOS WebView调试 本教程将指导您如何使用WebDebugX调试iOS应用中的WebView内容,包括WKWebView和UIWebView。通过本教程,您将学习如何检查WebView中的HTML、CSS和JavaScript,以及如何解决常见的WebView调试问题。 准备工作 在开始调试iOS W…...
笔记本电脑打开网页很慢,一查ip地址网段不对怎么处理
我有一个笔记本,在家里连WIFI后获取到的ip地址网段不对,那么常规做法是手动去配置个静态IP和DNS,要知道笔记本IP地址默认采用的是DHCP,也就是动态获取ip地址。如果手动设置静态IP,也就是固定IP的话,你换个场…...
【更新】全国省市县-公开手机基站数据集(2006-2025.3)
手机基站是现代通信网络中的重要组成部分,它们为广泛的通信服务提供基础设施。随着数字化进程的不断推进,手机基站的建设与布局对优化网络质量和提升通信服务水平起着至关重要的作用,本分享数据可帮助分析移动通信网络的发展和优化。本次数据…...
iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)
iOS视频编码详细步骤流程 1. 视频采集阶段 视频采集所使用的代码和之前的相同,所以不再过多进行赘述 初始化配置: 通过VideoCaptureConfig设置分辨率1920x1080、帧率30fps、像素格式kCVPixelFormatType_420YpCbCr8BiPlanarFullRange设置摄像头位置&am…...
行项目违反范围截止值
把允许负值打钩就可以,如果没有此字段,按照下面截图把屏幕格式放字段出来;字段放出来以后如果是灰色的话,就用SE16N调试模式修改字段值;...