当前位置: 首页 > news >正文

操作MySQL数据库

【一】针对库的增删查改(文件夹)

【1】创建数据库

(1)语法

  • 创建一个存储数据表的文件夹。

  • 注意:mysql中的编码字符集中utf-8,要换成utf8mb4。SQL语句中的中括号部分表示可选。

create database [if not exists] 数据库名 [character set 编码字符集];

(2)示例

mysql> create database my_one;
Query OK, 1 row affected (0.00 sec)

【2】查看数据库

(1)语法

show databases;  -- 查看所有数据库
show databases like '%test%'; -- 查看名字中包含test的数据库
show create database 数据库名; -- 查看数据库的建库sql语句

(2)示例

# 查看所有库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_one             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)
​
# 查看指定库 
mysql> show create database my_one;
+----------+--------------------------------------------------------------------+
| Database | Create Database                                                    |
+----------+--------------------------------------------------------------------+
| my_one   | CREATE DATABASE `my_one` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

【3】修改数据库

(1)语法

alter database 数据库名 [character set 编码字符集];

(2)示例

mysql> alter database my_one charset='utf8';
Query OK, 1 row affected (0.00 sec)

【4】删库

(1)语法

drop database [if exists] 数据库名;

(2)示例

mysql> drop database my_one;
Query OK, 0 rows affected (0.01 sec)

【二】针对表的增删改查(文件)

在操作表的时候要指定所在的库

【1】查看当前所在库的名字

(1)语法

select database();  --  查看当前使用的数据库

(2)示例

mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

【2】切换到指定库

(1)语法

use 数据库名;        -- 切换数据库

(2)示例

  • 切换数据库 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换

mysql> use my_one
Database changed

【3】创建表

  • 数据表就相当于文件,文件有文件名,自然地,数据表也要有表名。

  • 同样道理,数据表中的一条记录就相当于文件的一行内容。

  • 只是不同的是,数据表需要定义表头(上图中的首行),称为表的字段名。

  • 而且因为数据库的存储数据更加科学、严谨,所以需要创建表时要给每一个字段设置数据类型以及字段约束(完整性约束条件)。

(1)语法

create table  [if not exists]  表名 (字段名1    数据类型[ ( 存储空间 )    字段约束 ],字段名2    数据类型[ ( 存储空间 )    字段约束 ],字段名3    数据类型[ ( 存储空间 )    字段约束 ],.....字段名n   数据类型[ ( 存储空间 )    字段约束 ],primary key(一个 或 多个 字段名)    -- 注意,最后一段定义语句,不能有英文逗号的出现,否则报错。
) [engine = 存储引擎 character set 字符集];
  • 注意:

    • 上面SQL语句中,小括号中的定义字段语句后面必须以英文逗号结尾,而最后一个字段的定义语句不能有英文逗号出现,否则报错。

    • 在同一张数据表中,字段名是不能相同,否则报错!

    • 创建数据表的SQL语句中,存储空间和字段约束是选填的,而字段名和数据类型则是必须填写的。

(2)示例

  • 创建表指定字段

-- mysql中创建数据表要以 create table `表名`
-- 表的字段信息必须写在 (  )  小括号里面
create table classes (-- 建议一行一个字段,id 就是字段名-- int 表示设置字段值要以整数的格式保存到硬盘中,-- auto_increment表示当前字段值在每次新增数据时自动+1作为值保存-- primary key,mysql中叫主键,表示用于区分一个数据表中不同行的数据的唯一性,同时还具备加快查询速度的作用-- 注意:auto_increment与primary key 一般是配合使用的,对应的字段名一般也叫id,而且在一个数据表中只有一个字段能使用auto_increment primary key进行设置。id int auto_increment primary key,-- 字段名:name-- varchar(10) 表示当前name这一列可以存储的数据是字符串格式,并且最多只能存10个字符name varchar(10),-- 字段名:address-- varchar(100) 表示adderss这一列可以存储的数据是字符串格式,并且最多只能存100个字符address varchar(100),-- 字段名:total-- int 表示当前total这一列的数据只能是整数,而且一个数据表中,整数的最大范围只能是42亿total int
);
  • 上面的SQL语句就相当于创建了一个表格

idnameaddresstotal

【4】查看当前库下面的所有表

(1)查看所有的表

  • 列出当前数据库中所有的数据表

# 语法
show tables;
# 示例
mysql> show tables;
+------------------+
| Tables_in_my_one |
+------------------+
| classes          |
| courses          |
| student          |
+------------------+
3 rows in set (0.00 sec)

(2)查看指定的表

# 语法
show create table 表名;
# 示例
mysql> show create table student;
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table|
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(10) DEFAULT NULL,`sex` int(11) DEFAULT '1',`classes` int(11) DEFAULT NULL,`age` int(11) DEFAULT NULL,`description` text,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(3)查看当前表的详细信息

  • 以表格形式列出当前数据表的结构信息

# 语法
describe 表名;
desc 表名;
mysql> desc student;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(10) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

(4)查看建表语句

show create table 表名 \G;

【5】修改表

(1)修改表的字段类型

  • modify(只能改类型不能改名字)

# 语法
alter table 表名 modify 字段名 字段类型(宽度);# 示例
# 修改之前name varchar(10)
mysql> desc student;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(10) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)mysql> alter table student modify name varchar(32);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0# 修改之后name varchar(32)
mysql> desc student;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(32) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
  • change(名字类型都可)

alter table 表名 change 字段名 字段类型(宽度);

(2)修改表的名字(重命名)

语法:

alter table 原表名 rename 新表名;

示例:

mysql> alter table student rename students-> ;
Query OK, 0 rows affected (0.01 sec)

(3)添加字段

  • 默认是尾部追加字段

语法:

alter table 表名 add 字段名 字段类型;

示例:

mysql> alter table students add a int;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc students;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(32) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
| a           | int(11)     | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
  • 指定追加位置

语法:

alter table 表名 add 字段名 字段类型 after 原字段名;

示例:

mysql> alter table students add b int after a;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc students;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(32) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
| a           | int(11)     | YES  |     | NULL    |                |
| b           | int(11)     | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
  • 指定头部添加字段

语法:

alter table 表名 add 字段名 字段类型 first;

示例:

mysql> alter table students add c int first;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc students;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| c           | int(11)     | YES  |     | NULL    |                |
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(32) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
| a           | int(11)     | YES  |     | NULL    |                |
| b           | int(11)     | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

(4)删除字段

语法:

alter table 表名 drop 字段名;

示例:

mysql> desc students;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| c           | int(11)     | YES  |     | NULL    |                |
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(32) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
| a           | int(11)     | YES  |     | NULL    |                |
| b           | int(11)     | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)mysql> alter table students drop c;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc students;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(32) | YES  |     | NULL    |                |
| sex         | int(11)     | YES  |     | 1       |                |
| classes     | int(11)     | YES  |     | NULL    |                |
| age         | int(11)     | YES  |     | NULL    |                |
| description | text        | YES  |     | NULL    |                |
| a           | int(11)     | YES  |     | NULL    |                |
| b           | int(11)     | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

(5)删除表

语法:

drop table 表名;

示例:

mysql> show tables;
+------------------+
| Tables_in_my_one |
+------------------+
| classes          |
| courses          |
| students         |
+------------------+
3 rows in set (0.00 sec)mysql> drop table courses;
Query OK, 0 rows affected (0.01 sec)mysql> show tables;
+------------------+
| Tables_in_my_one |
+------------------+
| classes          |
| students         |
+------------------+
2 rows in set (0.00 sec)

【三】针对数据的增删查改

# 新建表 添加数据
insert into 表名 (字段名,字段名) values(值,值);
INSERT [INTO] <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];
mysql> create table student(-> d varchar(32),-> e int-> );
Query OK, 0 rows affected (0.03 sec)mysql> show tables;
+------------------+
| Tables_in_my_one |
+------------------+
| classes          |
| student          |
| students         |
+------------------+
3 rows in set (0.00 sec)mysql> desc student-> ;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| d     | varchar(32) | YES  |     | NULL    |       |
| e     | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

(1)插入数据

mysql> insert into student (d,e) values('knight',22),('hyt',24);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

(2)查看数据

语法:

select * from 表名;

示例:

mysql> select * from student;
+--------+------+
| d      | e    |
+--------+------+
| knight |   22 |
| hyt    |   24 |
+--------+------+
2 rows in set (0.00 sec)

(3)更改数据

语法:

update 表名 set 字段名=字段值 where name="";

示例:

mysql> select * from student;
+--------+------+
| d      | e    |
+--------+------+
| knight |   22 |
| hyt    |   24 |
+--------+------+
2 rows in set (0.00 sec)mysql> update student set e=18 where d="hyt";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from student;
+--------+------+
| d      | e    |
+--------+------+
| knight |   22 |
| hyt    |   18 |
+--------+------+
2 rows in set (0.00 sec)

(4)删除数据

语法:

delete from 表名 where 字段名=字段值;

示例:

mysql> delete from student where d="knight";
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+------+------+
| d    | e    |
+------+------+
| hyt  |   18 |
+------+------+
1 row in set (0.00 sec)

注意:

  • 使用 DROP DATABASE/TABLE 命令时要非常谨慎,

  • 在执行该命令后,MySQL 不会给出任何提示确认信息。

  • DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。

  • 因此最好在删除数据库之前先将数据库进行备份。

相关文章:

操作MySQL数据库

【一】针对库的增删查改&#xff08;文件夹&#xff09; 【1】创建数据库 &#xff08;1&#xff09;语法 创建一个存储数据表的文件夹。 注意&#xff1a;mysql中的编码字符集中utf-8&#xff0c;要换成utf8mb4。SQL语句中的中括号部分表示可选。 create database [if no…...

Linux shell 文件生成文件脚本(模拟生成文件、生成大量文件)

文章目录 Linux shell 文件生成文件脚本 Linux shell 文件生成文件脚本 TARGET_DIR&#xff1a;生成文件路径 NUM_FILES&#xff1a;生成文件数量 FILE_SIZE&#xff1a;生成文件大小&#xff08;KB&#xff09; #!/bin/bashset -e set -u# Directory where files will be cr…...

theharvester一键收集域名信息(KALI工具系列十)

目录 1、KALI LINUX简介 2、theharvester工具简介 3、在KALI中使用theharvester 3.1 用搜索引擎扫描 3.2 扫描并输出结果 3.3 扫描某域名下的所有账号 3.4 使用所有的搜索引擎扫描 4、总结 1、KALI LINUX简介 Kali Linux 是一个功能强大、多才多艺的 Linux 发行版&…...

「动态规划」删除并获得点数

力扣原题链接&#xff0c;点击跳转。 给你一个整数数组nums。每次操作&#xff0c;可以删除任意一个值n&#xff0c;接着获得点数n&#xff0c;并同时删除所有的n-1和n1。你最多能获取多少点数&#xff1f; 这个问题的解法相当巧妙。我们可以把问题先转化一下。用类似计数排序…...

MongoDB CRUD操作:内嵌文档数组查询

MongoDB 内嵌文档数组查询 文章目录 MongoDB 内嵌文档数组查询查询数组内嵌文档为文档数组中的字段指定查询条件指定文档数组内嵌文档字段的查询条件使用数组索引查询内嵌文档的字段 为文档数组指定多个条件单个内嵌文档满足内嵌字段的多个查询条件符合标准的元素组合 使用 Mon…...

【C++】每日一题 50 Pow(x,n)

实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;x^n &#xff09;。 当需要计算x的n次幂时&#xff0c;可以使用递归或者迭代的方式来实现。 #include <iostream>double myPow(double x, int n) {if (n 0) {return 1.0;} else if (…...

HG/T 6088-2022 透水道路用涂料检测

透水混凝土是指由水泥、矿物掺合料、骨料、外加剂及水等主要材料经拌合形成的&#xff0c;具有透水功能的混凝土材料&#xff0c;用于其表面的涂料称为透水道路用涂料。 HG/T 6088-2022透水道路用涂料检测项目&#xff1a; 测试指标 测试方法 有害物质限量 GB 38468 在容器…...

linux定时清理docker日志脚本

Linux 定时清理 Docker 日志的脚本与配置指南 在使用 Docker 容器化应用程序时,日志文件可能会迅速增长,占用大量磁盘空间。为了保持系统的稳定性和高效运行,定期清理 Docker 日志文件是必要的。本文将介绍如何编写一个 Linux 脚本来清理 Docker 日志文件,并通过 cron 定时…...

ROS学习笔记(16):夹缝循迹

0.前言 在笔记的第15期对巡墙驾驶的原理进行了简单讲解&#xff0c;而这期我们来讲一下夹缝循迹&#xff0c;也常被叫follow the gap&#xff0c;也更新一些概念。 1.探索式路径规划与避障 1.概念 无预先建图的路径规划叫探索式路径规划&#xff0c;例如巡墙循迹和夹缝循迹&…...

【MySQL精通之路】SQL语句(3)-锁和事务语句

目录 1.START TRANSACTION、COMMIT和ROLLBACK语句 2.无法回滚的语句 3.导致隐含COMMIT的语句 4.SAVEPOINT、ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT语句 5.LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语句 6.LOCK TABLE和UNLOCK TABLES语句 6.1 表锁获取 6.2 表锁释放…...

211大学计算机专业不考408,新增的交叉专业却考408!南京农业大学计算机考研考情分析!

南京农业大学信息科技学院可追溯至1981年成立的计算中心和1985年筹建的农业图书情报专业。1987年设立了农业图书情报系&#xff0c;1993 年农业图书情报系更名为信息管理系&#xff0c;本科专业名称也于1999年更名为信息管理与信息系统专业。1994年计算中心开始招收计算机应用专…...

利用java8 的 CompletableFuture 优化 Flink 程序,性能提升 50%

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

香橙派 AIpro综合体验及AI样例运行

香橙派 AIpro综合体验及AI样例运行 环境&#xff1a; 香橙派版本&#xff1a; AIpro(8TOPSINT8) OS : Ubuntu 22.04.3 LTS(GNU/Linux 5.10.0 aarch64) (2024-03-18) 远程服务端1&#xff1a;OpenSSH 8.9p1 远程服务端2&#xff1a;TightVNC Server 1.3.10 远程客户端&#xf…...

通过域名接口申请免费的ssl多域名证书

来此加密已顺利接入阿里云的域名接口&#xff0c;用户只需一键调用&#xff0c;便可轻松完成域名验证&#xff0c;从而更高效地申请证书。接下来&#xff0c;让我们详细解读一下整个操作过程。 来此加密官网 免费申请SSL证书 免费SSL多域名证书&#xff0c;泛域名证书。 首先&a…...

【JAVA WEB实用与优化技巧】如何自己封装一个自定义UI的Swagger组件,包含Swagger如何处理JWT无状态鉴权自动TOKEN获取

目录 一、Swagger 简介1. 什么是 Swagger&#xff1f;2. 如何使用 Swagger3. Springboot 中swagger的使用示例1. maven 引入安装2. java配置 二、Swagger UI存在的缺点1.不够方便直观2.请求的参数没有缓存3.不够美观4.如果是JWT 无状态登录&#xff0c;Swagger使用起来就没有那…...

理解大语言模型(二)——从零开始实现GPT-2

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch11_llm/char_gpt.ipynb1 本文将讨论如何利用PyTorch从零开始搭建G…...

SSH远程登录时常见问题解决

SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 问题解决——SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 翻译过来就是 警告&#xff1a;远程主机标识已更改&#xff01; 此报错是由于远程的…...

工业级3D开发引擎HOOPS:创新与效率的融合!

在当今这个技术日新月异的时代&#xff0c;3D技术已成为推动各行各业发展的重要力量。从工程设计到游戏开发&#xff0c;从虚拟现实到增强现实&#xff0c;3D技术的应用无处不在&#xff0c;它极大地丰富了我们的生活和工作。而在这样的背景下&#xff0c;HOOPS作为一个强大的3…...

IDEA创建Spring Boot项目

1 打开新建项目界面 如图1&#xff0c;打开IDEA&#xff0c;点击菜单栏的File->New->Project&#xff0c;打开新建项目界面。 图1 新建项目 2 填写项目信息 在新建项目界面点击左侧工具栏的Spring Initializr选项&#xff0c;进行Spring Boot项目信息的填写&#xff…...

mysql实战——xtrabackup全量备份/增量备份及恢复

一、测试前准备 mysql数据库 端口3306数据文件目录 /data/mysql/3306/data 安装目录/usr/lcoal/mysql配置文件/etc/my.cnf 创建数据库 testXtra 创建备份目录 备份目录/data/backup/备份恢复数据文件目录/data/mysql/3307/data备份恢复配置文件/etc/my_3307.cnf 二、开始…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...