MySQL数据库表的约束
目录
1.null属性
2.默认值约束(default)
3.comment
4.zerofill
5.主键(primary key)
6.自增长(auto_increment)
7.唯一键(unique)
编辑
8.外键
约束是为了安全插入数据,保证数据的合法性,防止无效数据进入数据库。它类似编译器语法提示,减少防止程序员在不知情的情况下插入错误数据。其中数据类型本身就是一种约束。
表的约束:表中一定要有各种约束,通过约束让我们未来插入数据库表中的数据是否合法的预期。本质通过技术手段倒逼程序员插入正确的数据。而站在MySQL视角,插入进来是数据一定是合法的。
为什么要约束:数据库是维护数据的最后一道防线,必须保证数据的完整性和可预期性。
1.null属性
在建表过程中,我们为数据类型添加时可以指定null或not null属性。
- null:表示在插入数据时这一列可以为空,如果不显示添加任何属性,默认就为null。
- not null:表示在插入数据时该列必须填写。
如下:
- 对于null属性的数据,在填写时可以不对该列填写,默认为null。
- 对于not null属性的数据,在填写时不可忽略。
如下:
这样对于必须填写数据的列就可以对空值进行拦截。
2.默认值约束(default)
在建表时可以对类型设置默认值属性,如果进行显示填写,会被默认设置为null。默认值可以是null,或者一个确切的值,比如‘男’,‘张三’,20254063等。
测试:
当我们进行插入数据时,不对某些向插入也是可行的,它会自动带上默认值。
mysql> insert into test2 (name) values('张三');
Query OK, 1 row affected (0.01 sec)mysql> select*from test2;
+------+--------+--------+
| id | gender | name |
+------+--------+--------+
| 0 | 男 | 张三 |
+------+--------+--------+
1 row in set (0.00 sec)mysql>
not null属性和default属性可以同时设置。它们并不冲突,而是一种互补功能。带有not null属性列也可以选择不插入,让它选择默认值,但前提必须是default属性不为null。
mysql> create table test3(-> id int default 0 not null,-> name varchar(20) not null-> );
Query OK, 0 rows affected (0.01 sec)mysql> insert into test3 (name) values('李四');
Query OK, 1 row affected (0.01 sec)mysql> insert into test3 (id) values(2025302);
ERROR 1364 (HY000): Field 'name' doesn't have a default value
mysql>
not null作用在用户插入的时候。default作用在用户忽略这一列的时候。一般情况下设置not null,不会带default。
3.comment
comment属性是列描述,更像是一种注释,给程序员看的。可以理解为软约束。
如下:
mysql> create table test4(-> id int comment '用户编号',-> name varchar(20) comment '用户名'-> );
Query OK, 0 rows affected (0.02 sec)mysql> show create table test4;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test4 | CREATE TABLE `test4` (`id` int(11) DEFAULT NULL COMMENT '用户编号',`name` varchar(20) DEFAULT NULL COMMENT '用户名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql>
4.zerofill
zerofill是 MySQL 中用于数值类型(如 INT, SMALLINT, BIGINT 等)的一个约束,它的主要作用是在显示数值时用前导零填充,以达到指定的字段宽度。
比如在创建数值类型时int(4),其中的4,表示时最小宽度为4位,如果加了zerofill属性,则不足4位的在前面添上0。
mysql> create table test5(-> a int(4) zerofill,-> b int(4) -> );
Query OK, 0 rows affected (0.02 sec)mysql> insert into test5 values(231,231);
Query OK, 1 row affected (0.00 sec)mysql> select*from test5;
+------+------+
| a | b |
+------+------+
| 0231 | 231 |
+------+------+
1 row in set (0.00 sec)mysql>
当我们不指明对齐长度时,对于int类型默认为11,int unsigned类型默认为10。因为int类型和int unsigned类型最大值分别是四十多亿和二十多亿。都是10位数字,而对于int类型还需要有负号所以为11位。
应用场景:
-
产品编号:如 "00123" 而不是 "123"
-
会员卡号:如 "0000000456"
-
订单编号:保持固定位数便于人工核对
5.主键(primary key)
主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键。主键所在的列通常是整数类型。
在数据库操作中,增删查改通常需要依赖主键,以确保数据的唯一性和操作的准确性。
在插入数据时不允许主键重复。
mysql> create table test_key(-> id int primary key,-> name varchar(20)-> );
Query OK, 0 rows affected (0.02 sec)mysql> insert into test_key values(2025401,'张三');
Query OK, 1 row affected (0.00 sec)mysql> insert into test_key values(2025401,'李四');
ERROR 1062 (23000): Duplicate entry '2025401' for key 'PRIMARY'
mysql> insert into test_key values(2025402,'李四');
Query OK, 1 row affected (0.00 sec)mysql> insert into test_key values(2025403,'李四');
Query OK, 1 row affected (0.01 sec)mysql> select*from test_key;
+---------+--------+
| id | name |
+---------+--------+
| 2025401 | 张三 |
| 2025402 | 李四 |
| 2025403 | 李四 |
+---------+--------+
3 rows in set (0.00 sec)mysql>
建表后才想起来加主键时,要保证没有重复数据。
只能有一个主键不意味着一个表中的主键只能添加给一列。可以设给多列,称为复合主键。
现在只有id和course_id同时和历史数据重复时才不被允许插入。如上也就是不能让学生的学号和选择的课重复记录。
id和course两者合起来才是一个主键。
6.自增长(auto_increment)
自增长属性主要作用于主键,主键有时候只是单纯的表示数据的唯一性,并不表示一种复杂的信息。此时可以把它设为自增长。也就是主键的信息不用我们自己去维护(插入),而是我们插入数据时会给该行自动添加主键信息。
要实现主键自增长添属性auto_increment即可。
mysql> create table test7(-> id int primary key auto_increment,-> name varchar(20) not null-> );
Query OK, 0 rows affected (0.02 sec)mysql> insert into test7 (name) values('李华');
Query OK, 1 row affected (0.01 sec)mysql> select*from test7;
+----+--------+
| id | name |
+----+--------+
| 1 | 李华 |
+----+--------+
1 row in set (0.00 sec)mysql>
如上我们并不需要手动输入id,系统会帮我们自动填充。 当然我们也可以手动插入。
我们再对自增长进行深入理解,观察下面插入结果。
mysql> insert into test7 (name) values('张三');
Query OK, 1 row affected (0.00 sec)mysql> insert into test7 (id,name) values(50,'李四');
Query OK, 1 row affected (0.00 sec)mysql> insert into test7 (name) values('王五');
Query OK, 1 row affected (0.00 sec)mysql> select*from test7;
+----+--------+
| id | name |
+----+--------+
| 1 | 李华 |
| 2 | 张三 |
| 50 | 李四 |
| 51 | 王五 |
+----+--------+
4 rows in set (0.00 sec)mysql>
可以发现当我们插入50后下一次自动从51开始自增。其实在表结构中存在auto_increment参数会记录次序。在建表时如果不进行设置auto_increment默认为1,也就是在下一次插入时,主键默认值为1。当我们手动插入50后,auto_increment变成51,从51自增。如下查看表的创建属性:
比如我们要给2026届的大一新生进行编号,可以把auto_increment参数设为20260001,即:
mysql> create table student(-> id int primary key auto_increment,-> name varchar(20) not null-> )auto_increment=20260001;
Query OK, 0 rows affected (0.01 sec)
7.唯一键(unique)
一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键,剩下需要唯一性约束的字段就可以使用唯一键。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。
关于唯一键和主键的区别:我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。最好把主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整。
唯一键和主键并不冲突而是互补的。
mysql> create table stu(-> id int primary key auto_increment,-> telephone char(11) unique,-> name varchar(20) not null-> );
Query OK, 0 rows affected (0.01 sec)mysql> insert into stu values(20250302,18756623304,'张三');
Query OK, 1 row affected (0.01 sec)mysql> insert into stu values(20250305,18756623304,'李四');
ERROR 1062 (23000): Duplicate entry '18756623304' for key 'telephone'
mysql> insert into stu values(20250307,null,'王五');
Query OK, 1 row affected (0.00 sec)mysql>
8.外键
外键约束的是表和表之间的关系。比如两个表:一个称为主表,一个称为从表。外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。
比如一个学生表和班级表的关系。
- 主表:班级表
- 从表:学生表
对于学生表,在clase_id这一列必须依赖于班级表中的id这一列,学生不能填一个不存在的班级。对于班级表,如果该班级下还有学生不能把该班的id改变或删除。
语法:在从表的列项中加 语法:foreign key (字段名) references 主表(列)
注意:因为外键是在从表上建立,需要主表的信息,所以需要先建主表。
如下:
mysql> create table class(-> id int primary key,-> name varchar(20) not null-> );
Query OK, 0 rows affected (0.02 sec)mysql> create table students(-> id int primary key,-> name varchar(20) not null,-> class_id int,-> foreign key(class_id) references class(id)-> );
Query OK, 0 rows affected (0.01 sec)mysql>
Query OK, 0 rows affected (0.01 sec)mysql> insert into class values(1,'经济统计');
Query OK, 1 row affected (0.00 sec)mysql> insert into class values(2,'网络安全');
Query OK, 1 row affected (0.00 sec)mysql> insert into class values(3,'机电工程');
Query OK, 1 row affected (0.00 sec)mysql> insert into students values(2025023,'张三',1);
Query OK, 1 row affected (0.00 sec)mysql> insert into students values(2025024,'李四',5);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`constraintTest`.`students`, CONSTRAINT `students_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))mysql> delete from class where id=3;
Query OK, 1 row affected (0.00 sec)mysql> delete from class where id=1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`constraintTest`.`students`, CONSTRAINT `students_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))
mysql>
相关文章:
MySQL数据库表的约束
目录 1.null属性 2.默认值约束(default) 3.comment 4.zerofill 5.主键(primary key) 6.自增长(auto_increment) 7.唯一键(unique) 编辑 8.外键 约束是为了安全插入数据&a…...
硅基计划2.0 学习总结 壹 Java初阶
一、初见Java (1)Java简介 首先不得不承认Java是一门优秀的程序设计语言 其系列的计算机软件和跨平台体系包括国内的生态链完善是C/C语言难以弥补的 (2)Java SE 全称Java Standard Edition,是Java体系的基础 &am…...
逆向破解:x64dbg
文章目录 一、CPU窗口1、反汇编窗口2、寄存器窗口3、栈地址窗口4、十六进制数据窗口5、堆栈参数解析窗口 二、常用快捷键三、字符串检索功能四、调试功能1、上一步 一、CPU窗口 1、反汇编窗口 2、寄存器窗口 寄存器窗口用于显示和解释当前线程环境下CPU寄存器的各种状态值和内…...
从MCU到SoC的开发思维转变
目录 1、硬件设计 2、软件开发 3、调试与测试 4、电源管理 微控制器单元(MCU)和系统级芯片(SoC)是嵌入式开发中最常见的两种处理器类型。MCU以其简单、低功耗的特点,广泛应用于特定控制任务;而SoC凭借强…...
3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】
一、引言 3D高斯泼溅(3DGS)是一种新兴的三维场景表示方法,可以生成高质量的场景重建结果。然而,要查看这些重建场景,需要特殊的高斯渲染器。大多数3D处理软件并不兼容3D高斯分布模型,但它们通常都兼容点云文件。 3DGS-to-PC项目提…...
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3 场景背景 面试场景设定在一家大型互联网公司,面试官为拥有10年以上经验的技术总监,专注于高并发、高可用系统的架构设计。候选人郑薪苦是一名技术潜力十足的程序员,擅…...
ABP-Book Store Application中文讲解 - 前期准备 - Part 3:Acme.BookStore项目模块详解
ABP-Book Store Application中文讲解-汇总-CSDN博客 本文通过对Acme.BookStore项目各模块的详解,让大家知道每个project用来干什么的,他们之间的引用关系是什么,同时知道怎样添加新的功能模块。 Acme.Bookstore 是主要 ABP Studio 模块的主…...
智慧城市综合运营管理系统Axure原型
这款Axure原型的设计理念紧紧围绕城市管理者的需求展开。它旨在打破传统城市管理中信息孤岛的局面,通过统一标准接入各类业务系统,实现城市运营管理信息资源的全面整合与共享。以城市管理者为中心,为其提供一个直观、便捷、高效的协同服务平台…...
Java中进阶并发编程
第一章、并发编程的挑战 并发和并行:指多线程或多进程 线程的本质:操作系统能够进行运算调度的最小单位,是进程(Process)中的实际工作单元 进程的本质:操作系统进行资源分配和调度的基本单位,…...
cursor 出现问题 为客户解决问题
文档出自:https://www.kdocs.cn/l/cp5GpLHAWc0p...
【氮化镓】GaN在不同电子能量损失的SHI辐射下的损伤
该文的主要发现和结论如下: GaN的再结晶特性 :GaN在离子撞击区域具有较高的再结晶倾向,这导致其形成永久损伤的阈值较高。在所有研究的电子能量损失 regime 下,GaN都表现出这种倾向,但在电子能量损失增加时,其效率会降低,尤其是在材料发生解离并形成N₂气泡时。 能量损失…...
用drawdb.app可视化创建mysql关系表
平时自己建表,没有可视化图形参考 为了便于理解,用drwadb画mysql关系表 drawDB | Online database diagram editor and SQL generator...
模型上下文协议(MCP):AI的“万能插座”
~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、MCP解决什么问题? \quad 在过去的几年中,AI大模型快速发展,从横空出世的GPT到“AI界拼多多”DeepSeek&am…...
初识 Pandas:Python 数据分析的利器
在数据分析、数据清洗和可视化等领域,Python 无疑是最受欢迎的语言之一,而在 Python 的数据处理生态中,Pandas 是最核心、最基础的库之一。如果你接触数据分析、机器学习、金融建模,或者只是想处理一些 Excel 表格,那么…...
Python教程(四)参数提取pymysql
Python(四) 本系列其他教程: Python教程(二):函数、异常、模块&包、文件读取、常用模块 Python教程(三):类&对象、闭包、装饰器、类型注解 Python教程(三):类&对象、闭包、装饰器、类型注解、…...
Halcon案例(一):C#联合Halcon识别路由器上的散热孔
本案例分3部分 识别效果,分别显示识别前后识别后;代码展示,分别是Halcon源码和Halcon转为C#的代码代码解释(解释在源码中) 原图如下: 处理后的图像: Halcon源码: *读取一张图像 read_image (Image, progres)*获取图像大小 get_image_size (Image, Width, Height)*关…...
SC5061串口设备联网服务器,4路RS-232,4路422/485串行接口
串口设备联网服务器,简称串口服务器。能够将RS-232/485/422串口设备联入TCP/IP网络,实现RS-232/485/422串口与TCP/IP网络接口的数据双向传输,使得串口设备能够具备联网功能,根据串口数量的不同,可以分为单串口、两串口…...
谈AI/OT 的融合
过去的十几年间,工业界讨论最多的话题之一就是IT/OT 融合,现在,我们不仅要实现IT/OT 的融合,更要面向AI/OT 的融合。看起来不太靠谱,却留给我们无限的想象空间。OT 领域的专家们不要再当“九斤老太”,指责这…...
RAGFlow 初步尝试 (01)
1. 起因, 目的: 简单尝试一下。 2. 先看效果 3. 过程: 目的: 研究 RAG 的实现过程。 实用目的: 对于一本电子书, pdf,我在读书的时候,可以问一写些问题。对一个 github 项目,可以迅速理解文件的关系。…...
Linux 服务器用 SSH 拉取多个 Git 工程
在一台 Linux 服务器上用 SSH 拉取两个 Git 工程,而这两个工程对应的是 不同的 Git 账号(SSH Key),做法: 使用 SSH Config 配置多个 Git 账号 场景假设: 工程 A 的仓库地址:gitgithub.com:com…...
测试文章标题01
模型上下文协议(Model Context Protocol, MCP)深度解析 一、MCP的核心概念 模型上下文协议(Model Context Protocol, MCP)是一种用于规范机器学习模型与外部环境交互的标准化框架。其核心目标是通过定义统一的接口和数据格式&am…...
如何禁止chrome自动更新
百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功: 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…...
【C++重载操作符与转换】构造函数和复制控制
目录 一、构造函数:对象的初始化引擎 1.1 构造函数的定义与分类 1.2 初始化列表:高效且安全的初始化方式 1.3 显式构造函数与类型安全 二、复制控制:管理对象的生命周期 2.1 复制构造函数:深拷贝的核心 2.2 赋值运算符重载…...
CATIA高效工作指南——常规配置篇(二)
一、结构树(Specification Tree)操作技巧精讲 结构树是CATIA设计中记录模型历史与逻辑关系的核心模块,其高效管理直接影响设计效率。本节从基础操作到高级技巧进行系统梳理。 1.1 结构树激活与移动 激活方式: 白线…...
神经生物学+图论双buff,揭示大脑语言系统的拓扑结构
摘要 近年来,神经影像数据分析的进展促进了大脑网络整合中适应性变化的表征。本研究提出了一种融合知识驱动与数据驱动的独特方法,为更精确地理解这些变化提供了新思路。通过运用图网络分析,并结合特定领域脑网络系统的现有神经生物学知识&am…...
Kotlin 懒初始化值
Kotlin 懒初始化值:深入理解 lateinit 与 by lazy 在 Kotlin 开发中,懒初始化(Lazy Initialization) 是一种常见的优化技巧,它允许我们将对象的初始化延迟到真正需要使用时再执行。Kotlin 提供了两种核心机制来实现懒…...
高速系统设计实例设计分析
在上几章的内容中,我们从纯粹高速信号的理论分析,到 Cadence 工具的具体使用都做了详细的讲解和介绍。相信读者通过前面章节的学习,已经对高速系统的设计理念及 Cadence 相应的设计流程和工具有了一个基本的认识。但是,对于高速电…...
数据结构与算法学习-JavaScript的Array.prototype.reduce()方法
一、语法 array.reduce(callbackfn, initialValue);callbackfn (accumulator, currentValue, currentIndex, array) > {// 回调逻辑 } callbackFn 为数组中每个元素执行的函数。 其返回值将作为下一次调用 callbackFn 时的 accumulator 参数。对于最后一次调用,…...
[Java][Leetcode simple] 189. 轮转数组
借助辅助数组 借助一个辅助数组tmp保存后面k个元素然后逆序循环,使用数组前面n-k个元素覆盖最后到后面最后把前k个元素从tmp中拿回来public void rotate(int[] nums, int k) {int len nums.length;k k % len;int[] Ra new int[len];int cnt 0;for (int i len-k…...
Hadoop 的代理用户(Proxy User) 功能解释
在$HADOOP_HOME/etc/hadoop下的core-site.xml 配置里,可以新增hadoop集群的代理用户。 在集成配置中,会经常用到。它属于 Hadoop 安全机制的一部分。 以下是对该配置效果的详细说明及示例: 配置效果 <!-- 允许用户 hadoop 从主机 hadoop…...
day06_java中的流程控制语句
流程控制语句 Java提供了一些流程控制语句,来控制程序的执行流程 顺序结构 任何编程语言中最常见的程序结构就是顺序结构顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转如果main方法的多行代码之间没有任何流程控制,则程序总是…...
机器学习实战:归一化与标准化的选择指南
在机器学习实战中——是否需要归一化(Normalization)或标准化(Standardization),取决于所使用的模型类型。 ✅ LightGBM / XGBoost 是否需要归一化或标准化? 不需要。 🔧 原因: L…...
【内蒙古】《内蒙古自治区本级政务信息化建设项目预算支出标准(试行)》(内财预〔2024〕1449号)-费用标准解读系列
内蒙古自治区政务服务与数据管理局在2024年11月29日发布了《内蒙古自治区本级政务信息化建设项目预算支出标准(试行)》(内财预〔2024〕1449号)。该文件适用于自治区本级各部门、单位非涉密政务信息化建设项目(以下简称建设项目)经费的预算编制、审核。下…...
文本数据可视化
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 原理 操作步骤 图像展示 【实验目的】 了解什么是文本可视化 掌握文本可视化的相关技术 文本信息的提取和可视表达 本次实验是将某一文本进行可视化生成词云图片 尝试构造文本指纹 【实验原理】…...
qt命名空间演示
#ifndef CIR_H #define CIR_Hnamespace cir {double PI3.141592653;//获取圆行周长double getLenthOfCircle(double radius){return 2*PI*radius;}//获取圆形面积double getAreaOfCircle(double radius){return PI*radius*radius;}} #endif // CIR_H#include <iostream> …...
Android学习总结之布局篇
一、大厂面试高频布局真题解析 1. ConstraintLayout vs RelativeLayout 深度对比 真题问法: "为什么说 ConstraintLayout 是 RelativeLayout 的替代方案?两者在布局原理、性能、复杂场景处理上有什么核心区别?" 核心考点解析&am…...
星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)
华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。 看…...
RNN(循环神经网络)原理与结构
1 RNN(循环神经网络)原理与结构 循环神经网络(Recurrent Neural Network, RNN)是一类专门用于处理序列数据(如时间序列、文本、语音等)的深度学习模型。与传统的前馈神经网络不同,RNN在每个时间…...
Claude深度解析:从技术原理到实战应用的全栈指南
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言:AI编程新纪元中的Claude 在生成式AI技术爆发的2024年,Anthropic的Claude系列模型以卓越的长文本处理能力和精确的代码生成质量,正在重塑程序员的开发范式。当开发者…...
9.渐入佳境 -- 套接字的多种可选项
前言 套接字具有多种特性,这些特性可通过可选项更改。本章将介绍更改套接字可选项的方法,并以此为基础进一步观察套接字内部。 一、套接字可选项和I/O缓冲大小 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是…...
AI日报 - 2024年05月13日
🌟 今日概览 (60秒速览) ▎🚀 技术突破 | Flow-GRPO将在线RL引入流匹配模型,提升性能并降低训练成本;「层内循环」(ILR)技术无需增加参数即可提升Transformer性能。▎💬 行业热议 | ICML强制作者参会政策引发广泛争议…...
开发工具分享: Web前端编码常用的在线编译器
1.OneCompiler 工具网址:https://onecompiler.com/ OneCompiler支持60多种编程语言,在全球有超过1280万用户,让开发者可以轻易实现代码的编写、运行和共享。 OneCompiler的线上调试功能完全免费,对编程语言的覆盖也很全&#x…...
Android学习总结之线程池篇
一、线程池参数调优实战真题 真题 1:直播 APP 弹幕加载线程池设计 题目描述:直播 APP 需要实时加载弹幕数据(网络请求,IO 密集型),同时渲染弹幕视图(UI 操作需切主线程)࿰…...
03.Golang 切片(slice)源码分析(二、append实现)
Golang 切片(slice)源码分析(二、append实现) 前言: Golang 切片(slice)源码分析(一、定义与基础操作实现) 在前面的文章我们介绍了,切片的结构体与创建\扩容…...
Python实例题:pygame开发打飞机游戏
目录 Python实例题 题目 pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本 代码解释 初始化部分: 游戏主循环: 退出部分: 运行思路 注意事项 Python实例题 题目 pygame开发打飞机游戏 pygame-aircraft-game使用 Pygame 开发…...
MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢?
MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢? 1. 使用 EXPLAIN 分析查询执行计划 在 SQL 查询前添加 EXPLAIN 关键字,查看 MySQL 优化器是否选择了你的索引。 示例: EXPLAIN SELECT * FROM db关键输出字段: typ…...
Go语言多线程爬虫与代理IP反爬
有个朋友想用Go语言编写一个多线程爬虫,并且使用代理IP来应对反爬措施。多线程在Go中通常是通过goroutine实现的,所以应该使用goroutine来并发处理多个网页的抓取。然后,代理IP的话,可能需要一个代理池,从中随机选择代…...
Linux文件编程:操作流程与内核机制
在 Linux 操作系统中,一切皆文件,这意味着从硬盘上的数据文件、设备驱动、到管道、套接字等都以文件的形式存在。Linux 的文件系统将这些不同类型的文件统一抽象成文件对象,允许程序通过文件描述符来访问它们。 一、核心概念解析 文件描述符…...
用短说社区搭建的沉浸式生活方式分享平台
你是否想打造一个融合小红书式种草基因与论坛深度互动的全新社区?本文依托短说社区论坛系统的社区功能规划,一起来规划,如何搭建一个集内容分享、社交互动、消费决策于一体的沉浸式生活社区。 短说社区的界面样式支持普通资讯列表或瀑布流列…...
【ASR学习笔记】:语音识别领域基本术语
一、基础术语 ASR (Automatic Speech Recognition) 自动语音识别,把语音信号转换成文本的技术。 VAD (Voice Activity Detection) 语音活动检测,判断一段音频里哪里是说话,哪里是静音或噪音。 Acoustic Model(声学模型࿰…...