MySQL 数据库操作指南:从数据库创建到数据操作
关键词:MySQL;数据库操作;DDL;DML
一、引言
MySQL 作为广泛应用的关系型数据库管理系统,对于开发人员和数据库管理员而言,熟练掌握其操作至关重要。本文章通过一系列 SQL 示例,详细阐述 MySQL 数据库的常用操作。
参考资料:黑马程序员
二、数据库的查询与创建
2.1 查询所有数据库
使用 SHOW DATABASES;
语句可查询当前 MySQL 实例中的所有数据库。此语句返回一个列表,包含已存在的数据库名称。例如:
SHOW DATABASES;
2.2 创建数据库
通过 CREATE DATABASE
语句创建新的数据库。例如,创建名为 db02
的数据库:
CREATE DATABASE if not extists db02;
if not exists :数据库不存在,则创建该数据库;如果存在则不创建
2.3 使用数据库
use db01;
三、表结构定义(DDL - Data Definition Language)
3.1 创建表 - 基本语法
使用 CREATE TABLE
语句创建表,并定义表中的列及其属性。以下示例创建一个名为 tb_user
的表,包含 id
、username
、name
、age
和 gender
列:
CREATE TABLE tb_user (id INT COMMENT 'ID, 唯一标识',username VARCHAR(20) COMMENT '用户名',name VARCHAR(10) COMMENT '姓名',age INT COMMENT '年龄',gender CHAR(1) COMMENT '性别'
) COMMENT '用户表';
数值类型
类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|
TINYINT | 1byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
INT/INTEGER | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
BIGINT | 8bytes | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 |
FLOAT | 4bytes | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 |
DOUBLE | 8bytes | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
字符串类型
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
日期时间类型
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
3.2 创建表 - 基本语法(含约束)
在创建表时,可以为列添加约束条件,以确保数据的完整性。例如,为 tb_user
表添加主键、非空、唯一和默认值约束:
在MySQL数据库当中,提供了以下5种约束:
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
CREATE TABLE tb_user (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID, 唯一标识',username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',name VARCHAR(10) NOT NULL COMMENT '姓名',age INT COMMENT '年龄',gender CHAR(1) DEFAULT '男' COMMENT '性别'
) COMMENT '用户表';
3.3 创建表 tb_emp
除了纯 SQL 语句创建表,也可借助图形化工具创建表。以下为通过 SQL 语句创建 tb_emp
表,包含主键、唯一约束、默认值等多种约束:
CREATE TABLE tb_emp (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',username VARCHAR(20) NOT NULL COMMENT '用户名',password VARCHAR(32) DEFAULT '123456' NULL COMMENT '密码',name VARCHAR(10) NOT NULL COMMENT '姓名',gender TINYINT UNSIGNED NOT NULL COMMENT '性别, 1 男, 2 女',image VARCHAR(300) NULL COMMENT '图像url',job TINYINT UNSIGNED NULL COMMENT '职位, 1 班主任, 2 讲师, 3 学工主管, 4 教研主管',entrydate DATE NULL COMMENT '入职日期',create_time DATETIME NOT NULL COMMENT '创建时间',update_time DATETIME NOT NULL COMMENT '修改时间',CONSTRAINT tb_emp_username_uindex UNIQUE (username)
) COMMENT '员工表';
3.4 查看表结构
- 查看当前数据库下的表:使用
SHOW TABLES;
语句查看当前数据库中所有表的名称:
SHOW TABLES;
- 查看指定表结构:通过
DESC
语句查看指定表的详细结构,包括列名、数据类型、是否允许为空等信息。例如,查看tb_emp
表结构:
DESC tb_emp;
- 查看数据库的建表语句:使用
SHOW CREATE TABLE
语句查看创建指定表的完整 SQL 语句,包括表的所有定义和约束。例如,查看tb_emp
表的建表语句:
SHOW CREATE TABLE tb_emp;
3.5 修改表结构
- 添加字段:使用
ALTER TABLE...ADD
语句为表添加新字段。例如,为tb_emp
表添加qq
字段,类型为VARCHAR(11)
:
ALTER TABLE tb_emp ADD qq VARCHAR(11) COMMENT 'QQ';
- 修改字段类型:使用
ALTER TABLE...MODIFY
语句修改表中已有字段的类型。例如,将tb_emp
表中qq
字段的类型修改为VARCHAR(13)
并命名为qq_num
:
ALTER TABLE tb_emp MODIFY qq_num VARCHAR(13) COMMENT 'QQ';
- 修改字段名及类型:使用
ALTER TABLE...CHANGE
语句修改字段名及类型。例如,将tb_emp
表中qq
字段修改为qq_num
,类型为VARCHAR(13)
:
ALTER TABLE tb_emp CHANGE qq qq_num VARCHAR(13) COMMENT 'QQ';
- 删除字段:使用
ALTER TABLE...DROP COLUMN
语句删除表中的字段。例如,删除tb_emp
表中的qq_num
字段:
ALTER TABLE tb_emp DROP COLUMN qq_num;
- 修改表名:使用
RENAME TABLE
语句修改表的名称。例如,将tb_emp
表名修改为emp
:
RENAME TABLE tb_emp TO emp;
3.6 删除表结构
使用 DROP TABLE
语句删除表。为避免删除不存在的表导致错误,可使用 IF EXISTS
子句。例如,删除 tb_emp
表:
DROP TABLE IF EXISTS tb_emp;
四、数据操作语言(DML - Data Manipulation Language)
4.1 插入数据 - INSERT
- 为指定字段插入值:使用
INSERT INTO...VALUES
语句为表中的指定字段插入数据。例如,为tb_emp
表的username
、name
、gender
、create_time
和update_time
字段插入值:
INSERT INTO tb_emp (username, name, gender, create_time, update_time) VALUES ('wuji', '张无忌', 1, NOW(), NOW());
- 为所有字段插入值:为表中的所有字段插入数据时,需按表定义的字段顺序提供值。例如:
INSERT INTO tb_emp (id, username, password, name, gender, image, job, entrydate, create_time, update_time)
VALUES (NULL, 'zhiruo', '123', '周芷若', 2, '1.jpg', 1, '2010 - 01 - 01', NOW(), NOW());
-- 或者:
INSERT INTO tb_emp VALUES (NULL, 'zhiruo2', '123', '周芷若', 2, '1.jpg', 1, '2010 - 01 - 01', NOW(), NOW());
- 批量插入数据:可一次性为表插入多条记录。例如,批量为
tb_emp
表的username
、name
、gender
、create_time
和update_time
字段插入数据:
INSERT INTO tb_emp (username, name, gender, create_time, update_time) VALUES
('weifuwang', '韦一笑', 1, NOW(), NOW()), ('xieshiwang', '谢逊', 1, NOW(), NOW());
4.2 更新数据 - UPDATE
- 更新单条记录:使用
UPDATE...SET
语句更新表中的数据,并通过WHERE
子句指定更新条件。例如,将tb_emp
表中ID
为1
的员工姓名更新为张三
并更新update_time
:
UPDATE tb_emp SET name = '张三', update_time = NOW() WHERE id = 1;
- 更新多条记录:若不指定
WHERE
子句,则会更新表中的所有记录。例如,将tb_emp
表中所有员工的入职日期更新为2010 - 01 - 01
并更新update_time
:
UPDATE tb_emp SET entrydate = '2010 - 01 - 01', update_time = NOW();
4.3 删除数据 - DELETE
- 删除单条记录:使用
DELETE FROM...WHERE
语句删除表中的数据,并通过WHERE
子句指定删除条件。例如,删除tb_emp
表中ID
为1
的员工:
DELETE FROM tb_emp WHERE id = 1;
- 删除所有记录:若不指定
WHERE
子句,则会删除表中的所有记录。例如,删除tb_emp
表中的所有员工:
DELETE FROM tb_emp;
相关文章:
MySQL 数据库操作指南:从数据库创建到数据操作
关键词:MySQL;数据库操作;DDL;DML 一、引言 MySQL 作为广泛应用的关系型数据库管理系统,对于开发人员和数据库管理员而言,熟练掌握其操作至关重要。本文章通过一系列 SQL 示例,详细阐述 MySQL…...
从传递函数到PID控制器
在过程控制中,按偏差的比例(P,Proportional)、积分(I,Integral)和微分(D,Differential)进行控制的PID控制器(亦称PID调节器)是应用最为…...
抓wifi无线空口包之Ubuntu抓包(二)
一、设置网卡信道和频段,并抓包 1、使用iwconfig查看自己机器的无线网卡名称 wangwang-ThinkCentre-M930t-N000:~$ iwconfig lo no wireless extensions. eno1 no wireless extensions. enxc8a3624ab329 no wireless extensions. wlx90de80d1b5b1 IE…...
使用protobuf编译提示无法打开包括文件: ‘absl/log/absl_log.h’: No such file or directory
问题原因 Protobuf 依赖 Abseil: Protobuf 3.20 版本开始依赖 Abseil,但你的系统未正确安装或配置 Abseil。 头文件路径未包含: 编译器找不到 absl/log/absl_log.h,可能是因为 Abseil 未正确安装或未在项目中设置包含路径。 …...
深入浅出Java 锁 | 源码剖析 | 万字解析
目录 硬件内存结构&Java内存模型 硬件内存结构 Java内存模型(JMM) JMM中三大特性:原子性、有序性、可见性 Java中有哪些锁? Java中锁可以分成悲观锁和乐观锁的实现。 乐观锁和悲观锁的区别,乐观锁一定好嘛&…...
java流程控制12:流程控制练习
流程控制练习 打印三角型 package com.zheng.struct;public class TestDemo {public static void main(String[] args) {//打印三角形 5行for(int i1;i<5;i){for(int j5;j>i;j--){System.out.print(" ");}for(int j1;j<i;j){System.out.print("*&quo…...
JAVA:ByteBuddy 动态字节码操作库的技术指南
1、简述 ByteBuddy 是一个功能强大的 Java 字节码操作库,可以帮助开发者在运行时动态生成和修改类,而无需直接接触复杂的 ASM API。它被广泛应用于框架开发、AOP(面向切面编程)、代理类生成、性能监控等领域。 2、ByteBuddy 的优…...
C语言学习记录(13)自定义类型:结构体
一、结构体变量的声明、创建和初始化 1.结构体变量的声明 结构体变量我们学操作符的时候就顺带讲了一点了,因为当时讲了结构体成员变量访问操作符.。 结构体变量不像int、float这种内置类型的,一旦创建,系统就知道这是干啥的,结…...
rtthread 软件SPI驱动, 支持mode0~3,MSB,LSB
rtthread的软件模拟SPI用的上层PIN驱动写,由于经过层层封装,时钟频率并不会太高,200MHz的MCU跑不到1MHz的时钟频率。所以最好是在底层就模拟好,给上层用。 头文件 struct io_poSOFT {gpio_type *port;uint16_t pin; }; typedef …...
C++自学笔记——动态创建对象
动态创建对象 1. 什么是动态创建对象? 在学习之前的知识点时,我们知道有静态存储期和自动存储期。 静态存储期的对象在程序的整个生命周期内都存在,全局变量和static修饰的局部变量都属于这一类。自动存储期的对象,这些对象在函…...
35.[前端开发-JavaScript基础]Day12-for循环中变量-华为商城-商品列表-轮播图
for循环中监听函数中打印变量 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wi…...
详细描述以太坊的gas、gaslimit、gasPrice
目录 一、Gas 是什么? ✅ 简要定义: 🧠 举例理解: 二、Gas Limit 是什么? ✅ 简要定义: 分两种: 举例说明: 三、Gas Price 是什么? ✅ 简要定义: 为什么它重要? 示例: 四、 EIP-1559 后的新机制(伦敦升级) 三个要素: 五、额外技巧(开发实用) 本文…...
【Java】Maven
一、概念 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。 二、Maven坐标 <groupId>com.itheima</groupId><artifactId>maven-project01</artifactId>&…...
PageCache
目录 一、PageCache的具体过程 二、具体实现代码 一、PageCache的具体过程 页缓存主要解决的是内存外碎片问题,并且直接和系统调用打交道。 申请过程如下: 当中心缓存中没有内存时,会去页缓存申请一个span结构,要经过下面几步: (1…...
Vue3实战五、面包屑,收缩菜单,高亮暗黑主题切换,全屏功能实现
目录 面包屑,收缩菜单,黑夜白夜样式,全屏功能实现收缩菜单按钮结合pinia功能实现第一步、定义布局配置的数据类型第二步、创建布局状态管理文件第三步、使用布局配置状态第四步、进行展开/收起左侧菜单逻辑第五步、动态切换左侧菜单宽度样式第六步、动态…...
Linux内核设计——(二)进程调度
目录 一、进程调度简介 二、多任务 三、调度器 3.1 I/O消耗型和处理器消耗型进程 3.2 进程优先级 3.3 CFS算法 3.4 实时调度策略 3.5 SCHED_FIFO 3.6 SCHED_RR 3.7 调度器入口 四、上下文切换 4.1 睡眠和唤醒 4.2 need_resched标志 4.3 用户抢占 4.4 内核抢占 一…...
【C++初阶】--- string类模拟实现
1.基础函数 1.1成员函数 成员函数主要是_str、_size、_capacity这三个。npos是size_t 的最大值,用于当作后续成员函数的参数的缺省值。 class string { private:char* _str nullptr;//指向字符串的指针size_t _size 0;//字符串长度size_t _capacity 0;//空间大小static c…...
Pythia 使用说明
Pythia 是一个由非营利研究组织 EleutherAI 开发的开源语言模型套件,专注于透明性和可复现性。它是为了推动自然语言处理(NLP)领域的开放研究而设计,尤其在模型训练过程和性能分析方面提供了详尽的文档和数据。 Pythia 的核心特点…...
python:获取某路径下所有图片的名称
可以使用 Python 的 os 模块或者 pathlib 模块来获取指定路径下所有图片的名称。以下是使用这两种方法实现的代码示例: 使用 os 模块 import osdef get_image_names_os(path):image_extensions (.jpg, .jpeg, .png, .gif, .bmp)image_names []for root, dirs, f…...
一个开源的 VS Code 大模型聊天插件:Light-at
这篇文章是一个开发杂谈。对于有经验的开发者来说,可能这个项目并不算特别复杂或者高技术,只是对我个人来说算一个里程碑,因此写篇杂谈文章记录一下。也许也能给起步者一些参考。 项目地址:https://github.com/HiMeditator/light-…...
图论学习笔记2
请先阅读图论学习笔记 1。 在这篇文章里,我们将继续以前 tarjan 求解的强连通分量和双连通分量,讲解其缩点相关内容。 也会讲解一些特殊的图:基环树与仙人掌图、最小树形图。 缩点 我们知道,将强连通分量、双连通分量缩点之后…...
蓝桥杯备赛---真题训练之15届省赛产品360度展示
题目 介绍 在电子商务网站中,用户可以通过鼠标或手势交互实现 360 度全方位查看产品,提升用户体验。现在需要你设计一个 Pipeline 管道函数,用于控制 360 度展示产品的动画序列,通过管道连接各个动画步骤,使产品以流畅…...
图论:单源最短路(BF算法+迪杰斯特拉算法+spfa算法)
单源最短路 概念 dijkstra实现(解决不了负权值) P3371 【模板】单源最短路径(弱化版) - 洛谷 #include<iostream> #include<vector> #include<cstring> using namespace std;typedef pair<int, int> PII…...
嵌入式学习(35)-TTS语音模块FT-VBM-OS支持ModbusRTU
一、概述 FT-TTS-R-01 (下简简“模块”)是一款可将串口传入的文本信息转成语音播报的控制器。块”可下接收任意字 符或者汉字,并通过 TTS 语音合成功能,清晰、准确、自然的合成并播放音频。该块”还带有 1 路继电器输出࿰…...
【Vue-组件】学习笔记
目录 <<回到导览组件1.项目1.1.Vue Cli1.2.项目目录1.3.运行流程1.4.组件的组成1.5.注意事项 2.组件2.1.组件注册2.2.scoped样式冲突2.3.data是一个函数2.4.props详解2.5.data和prop的区别 3.组件通信3.1.父子通信3.1.1.父传子(props)3.1.2.子传父…...
Github上一些使用技巧(缩写、Issue的Highlight)自用
1. GIthub中的一些缩写 LGTM ! 最近经常看到一些迷之缩写,感觉挺有意思的,但是有时候看到一些没见过的缩写还是有点懵逼,不过缩写确实也是很方便去review,这里就记录汇总一下;顺便加了一些git的基操单词(加…...
【团体程序涉及天梯赛】L1~L2实战反思合集(C++)
实战反思汇总记录 仔细审题,想好再写 L1-104 九宫格 - 团体程序设计天梯赛-练习集 易忽略的错误:开始习惯性地看到n就以为是n*n数组了,实际上应该是9*9的固定大小数组,查了半天没查出来 L1-101 别再来这么多猫娘了!…...
ubuntu下的node.js的安装
安装 node-v22.14.0-linux-x64.tar.xz 的步骤如下: 1. 下载和解压 如果尚未下载文件,可以通过 wget 下载(替换为实际下载链接): wget https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz解压文件&…...
VMware-workstation-full-12.5.2 install OS X 10.11.1(15B42).cdr
手把手虚拟机安装苹果操作系统 VMware_workstation_full_12.5.2 unlocker208 Apple Max OS X(M)-CSDN博客 vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1180 FILE: FileCreateDirectoryRetry: Non-retriable error encountered (C:\ProgramData\VMware): Cann…...
Linux下创建svn库 和 svn安装与操作
1.介绍 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。适合中小公司的开发人员不多的项目使用,相比git管理工具更简单. 2.安装svn 2.1 国际惯例 首先看…...
React-04React组件状态(state),构造器初始化state以及数据读取,添加点击事件并更改state状态值
1.React组件状态(state) 组件可以拥有状态(state),它是组件数据的私有部分,可以用来管理动态数据。状态仅适用于类组件,或者使用 React 的 Hook 时可以在函数组件中使用。 注意 组件中render方…...
第3课:MCP协议接口定义与开发实践
MCP协议接口开发实战:从标准化设计到跨语言SDK落地 一、引言:为什么接口标准化是多智能体协作的“刚需” 在多智能体系统中,不同语言开发的智能体、异构服务之间的通信效率往往受制于接口兼容性问题。MCP(Model Context Protoco…...
Perl语言的WebAssembly
Perl语言的WebAssembly:将古老的语言带入新世纪 引言 在编程语言发展的历史长河中,Perl作为一门早期广泛使用的脚本语言,以其灵活性和丰富的文本处理能力而闻名。然而,随着互联网和Web技术的迅猛发展,许多开发者开始…...
[ISP] ISP 中的 GTM 与 LTM:原理、算法与与 Gamma 校正的对比详解
在现代图像信号处理(ISP)流水线中,图像增强是提升视觉质量的核心手段之一。尤其是在高动态范围(HDR)内容、弱光环境或复杂光照条件下,Tone Mapping(色调映射)技术的引入成为关键。To…...
健身管理小程序|基于java微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)
健身管理小程序目录 基于微信开发健身管理小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 小程序端: 后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码…...
批量将文本合并成单个文件,支持按文件夹合并文本文档
我们的文件夹中有零零碎碎的多个小的文本文件,这对我们存档记录是非常不方便,不友好的。如果我们能够将多个小的文本文件合并成一个完整的大的文本文件,那不管是在共享还是在存档起来都更加的方便。今天给大家介绍一下如何批量将多个文本文件…...
ROS云课三分钟-差动移动机器人巡逻报告如何撰写-中等报告
评语: 成绩中等(70/100),具体如下: 1. 摘要部分 问题描述: 内容空洞:摘要过于简短,仅简要概述了研究内容和实现方法,未突出研究的创新点或重要性。缺乏细节࿱…...
forms实现推箱子小游戏
说明: forms实现推箱子小游戏 效果图: step0:游戏规则 # 推箱子游戏规则说明## 🎯 游戏目标 - 通过控制角色移动,将所有**棕色箱子(3)**推到**红色目标点(4)**上 - 当所有箱子都变为**绿色(7)**时,即完成当前关卡 - 完成全部关…...
图的储存+图的遍历
图的存储 邻接矩阵 #include <iostream>#include <cstring>using namespace std;const int N 1010;int n, m;int edges[N][N];int main() {memset(edges, -1, sizeof edges);cin >> n >> m; // 读⼊结点个数以及边的个数 for(int i 1; i < m; i)…...
蓝桥杯—数字接龙(dfs+减枝)
一.题目 二.思路 一看就是迷宫问题的变种,从左上角到达右下角,要解决 1.8个方向的方向向量,用dx,dy数组代表方向向量 2.要按照一个规律的数值串进行搜索0,1,2,k-1,0,1…...
Solidity智能合约漏洞类型与解题思路指南
一、常见漏洞类型与通俗解释 1. 重入攻击(Reentrancy) 🌀 通俗解释:就像你去银行取钱,柜台人员先给你钱,然后再记账。你拿到钱后立即又要求取钱,由于账还没记,柜台又给你一次钱,这样循环下去你就能拿走银行所有的钱。 漏洞原理:合约在更新状态前调用外部合约,允许…...
临床 不等于 医学-《分析模式》漫谈52
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第4章“企业财务观察”有这么一句话: An important point about this model——a reflection of its clinical background 2004(机械…...
鸿蒙应用开发中的 Stack 布局模式
在鸿蒙(HarmonyOS)应用开发中,Stack 布局模式是一种非常灵活的布局方式,类似于其他开发框架中的 StackPanel 或 AbsoluteLayout。它允许子组件按照层级关系进行堆叠,后添加的组件会覆盖在先添加的组件之上。开发者可以通过设置组件的位置、大…...
仿modou库one thread one loop式并发服务器
源码:田某super/moduo 目录 SERVER模块: Buffer模块: Socket模块: Channel模块: Connection模块: Acceptor模块: TimerQueue模块: Poller模块: EventLoop模块&a…...
【AI学习】初步了解Gradio
Gradio 是一个开源的 Python 库,专注于快速构建交互式 Web 界面,特别适用于机器学习模型、数据科学项目或任意 Python 函数的演示与部署。它通过极简的代码实现前后端一体化,无需前端开发经验即可创建功能丰富的应用。以下是 Gradio 的核心特…...
C++11QT复习 (十四)
文章目录 Day9 数据结构学习笔记(2025.04.01)一、C基础快速回顾二、STL(标准模板库)三、常见容器及其对应的数据结构四、容器操作演示1. 基本容器使用2. 异构类型容器 五、迭代器详解特点示例用户自定义结构体访问成员 六、算法库…...
ThreadCache
目录 一、Freelist 二、ThreadCache 三、哈希桶映射规则 一、Freelist 在之前整体框架介绍的时候,我们曾说过ThreadCache是一个哈希桶的结构。每一个桶都要存同一个大小的对象块(即最小块的内存)。 那么我们使用FreeList来…...
c++中同步和异步,阻塞和非阻塞原理以及机制
在C中,同步与异步、阻塞与非阻塞是并发编程中的重要概念,它们描述了程序在执行任务时的行为模式。理解这些概念对于设计高效、响应良好的并发程序至关重要。下面我将详细介绍这些概念的原理和机制。 1. 同步与异步 同步(Synchronous&#x…...
Python项目打包指南:PyInstaller与SeleniumWire的兼容性挑战及解决方案
前言 前段时间做一个内网开发的需求,要求将selenium程序打包成.exe放在内网的win7上运行,在掘金搜了一圈也没有发现相关文章,因此将过程中踩到的坑记录分享一下。 本文涵盖了具体打包操作、不同模块和依赖项的兼容性解决方案,以…...
浅谈微信视频号推荐算法
这次可能会稍微有点干货,但保证不晦涩~ 一、算法推荐的本质:猜你喜欢 vs 社交绑架 视频号的推荐系统本质上在做两件事: 预测你的兴趣:通过你的浏览、点赞、评论、分享等行为,分析你的偏好。满足社交需求&…...