MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 10
第10章_创建和管理表
DDL:数据定义语言。CREATE \ALTER\ DROP \RENAME TRUNCATE
DML:数据操作语言。INSERT \DELETE \UPDATE \SELECT(重中之重)
DCL:数据控制语言。COMMIT \ROLLBACK SAVEPOINT \GRANT \REVOKE
前面讲的都是DML ,即数据操作语言,现在讲一讲DDL .
存储数据是处理数据的第一步。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只 能是一团乱麻,无从下手。 那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢? 在 MySQL 中, 一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。
标识符命名规则 看看就好
- 数据库名、表名不得超过30个字符,变量名限制为29个
- 必须只能包含 A–Z, a–z, 0–9, _共63个字符
- 数据库名、表名、字段名等对象名中间不要包含空格
- 一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
- 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使 用`(着重号)引起来
- 保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据 类型在一个表里是整数,那在另一个表里可就别变成字符型了
2. 创建和管理数据库
- 方式1:创建数据库 CREATE DATABASE 数据库名;
- 方式2:创建数据库并指定字符集 CREATE DATABASE 数据库名 CHARACTER SET 字符集;
- 方式3:判断数据库是否已经存在,不存在则创建数据库( CREATE DATABASE IF NOT EXISTS 数据库名; 推荐)
如果MySQL中已经存在相关的数据库,则忽略创建语句,不再创建数据库。 注意:DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删旧库完成的。
首先你得有一个
CREATE DATABASE mytest1;
SHOW DATABASES;会出现一个很长的栏,叫做"create database"里面阐述的数据库使用了什么性质格式
默认的字符集是character_set_server这个参数决定的. character_set_database这个参数在不同的客户端软件跑出来的结果是不一致的,但是character_set_server是一致的
方式2:语句显式指定数据库的字符集为 gbk
CREATE DATABASE mytest2 CHARACTER SET 'gbk';
SHOW CREATE DATABASE mytest2;方式3 (推荐):如果数据库已经存在则不会重复创建 ,但是不会报错
CREATE DATABASE IF NOT EXISTS mytest2 CHARACTER SET 'utf8';
SHOW DATABASES;
2.2 管理数据库
查看当前所有的数据库
#1.2 管理数据库
#查看当前连接中的数据库都有哪些
SHOW DATABASES;#切换数据库
USE atguigudb;#查看当前数据库中保存的数据表
SHOW TABLES;#查看当前使用的数据库
SELECT DATABASE() FROM DUAL;#查看指定数据库下保存的数据表
SHOW TABLES FROM mysql;
2.3 修改数据库
DATABASE 不能改名。
更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如:gbk、utf8等举例:
SHOW CREATE DATABASE mytest2;ALTER DATABASE mytest2 CHARACTER SET 'utf8';
2.4 删除数据库
方式1:删除指定的数据库 DROP DATABASE 数据库名;
方式2:删除指定的数据库( 推荐) DROP DATABASE IF EXISTS 数据库名;
#方式1:如果要删除的数据库存在,则删除成功。如果不存在,则报错
DROP DATABASE mytest1;SHOW DATABASES;#方式2:推荐。如果要删除的数据库存在,则删除成功。如果不存在,则默默结束,不会报错。
DROP DATABASE IF EXISTS mytest1;DROP DATABASE IF EXISTS mytest2;
| 整数类型 | TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT |
| 浮点类型 | FLOAT、DOUBLE |
| 定点数类型 | DECIMAL |
| 位类型 | BIT |
| 日期时间类型 | YEAR、TIME、DATE、DATETIME、TIMESTAMP |
| 文本字符串类型 | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
| 枚举类型 | ENUM |
| 集合类型 | SET |
| 二进制字符串类 型 | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB |
| JSON类型 | JSON对象、JSON数组 |
| 空间数据类型 | 单值:GEOMETRY、POINT、LINESTRING、POLYGON; 集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、 GEOMETRYCOLLECTION |
3. 创建表
#2. 如何创建数据表
USE atguigudb;SHOW CREATE DATABASE atguigudb; 默认是utf8SHOW TABLES;#方式1:
CREATE TABLE IF NOT EXISTS myemp1 ( # 需要用户具备创建表的权限。id INT,emp_name VARCHAR(15), #使用VARCHAR来定义字符串,必须在使用VARCHAR时指明其长度。hire_date DATE
);
#查看表结构
DESC myemp1;
#查看创建表的语句结构
SHOW CREATE TABLE myemp1; #如果创建表时没有指明使用的字符集,则默认使用表所在的数据库的字符集。
#查看表数据
SELECT * FROM myemp1;#方式2:基于现有的表,同时导入数据
CREATE TABLE myemp2
AS
SELECT employee_id,last_name,salary
FROM employees;DESC myemp2;
DESC employees;SELECT *
FROM myemp2;
CREATE TABLE myemp3
AS
SELECT e.employee_id emp_id, e.last_name lname, d.department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id;图中的SQL代码创建了一个新的表myemp3,其内容是两个现有表employees和departments通过JOIN操
作合并后的结果。具体来说,这条SQL语句执行了以下操作:
使用CREATE TABLE myemp3 AS语句创建一个新表myemp3。
使用SELECT语句从employees表和departments表中选择数据。
使用JOIN操作根据department_id字段将employees表和departments表连接起来,这意味着只有当
两个表中的department_id相匹配时,相应的行才会被选中。
选择employees表中的employee_id字段,并将其重命名为emp_id。
选择employees表中的last_name字段,并将其重命名为lname。
选择departments表中的department_name字段。
最终,这条语句创建了一个包含员工ID、员工姓氏和部门名称的新表myemp3,其中每个员工都与其所属的
部门关联起来。这个新表可以用于进一步的查询和分析,例如查找特定部门的所有员工或特定员工的部门
信息。
SELECT *
FROM myemp3;
通过上面两句查询一下,发现就是原数据库中的内容因此有
#说明1:查询语句中字段的别名,可以作为新创建的表的字段的名称。
#说明2:此时的查询语句可以结构比较丰富,使用前面章节讲过的各种SELECT
#练习1:创建一个表employees_copy,实现对employees表的复制,包括表数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees;SELECT * FROM employees_copy;#练习2:创建一个表employees_blank,实现对employees表的复制,不包括表数据
CREATE TABLE employees_blank
AS
SELECT *
FROM employees
#where department_id > 10000;
WHERE 1 = 2; #山无陵,天地合,乃敢与君绝。
#这里就是找一个不可能的条件,从而隔绝所有的内容只留SELECT * FROM employees_blank;
4. 修改表--------------alter table
DESC myemp1;# 3.1 添加一个字段
ALTER TABLE myemp1
ADD salary DOUBLE(10,2); #默认添加到表中的最后一个字段的位置ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST; #第一位ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name;
# 3.2 修改一个字段:数据类型、长度、默认值(略)
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25) ;ALTER TABLE myemp1
MODIFY emp_name VARCHAR(35) DEFAULT 'aaa';
# 3.3 重命名一个字段
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);ALTER TABLE myemp1
CHANGE email my_email VARCHAR(50);
# 3.4 删除一个字段
ALTER TABLE myemp1
DROP COLUMN my_email;
#4. 重命名表
#方式1:
RENAME TABLE myemp1
TO myemp11;DESC myemp11;#方式2:
ALTER TABLE myemp2
RENAME TO myemp12;DESC myemp12;
#5. 删除表 无法回滚
#不光将表结构删除掉,同时表中的数据也删除掉,释放表空间
DROP TABLE IF EXISTS myemp2;DROP TABLE IF EXISTS myemp12;
IF EXISTS 的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。
#6. 清空表#清空表,表示清空表中的所有数据,但是表结构保留。执行了commit就是永久的保存了数据,
数据就已经保存到了数据库中,不能回滚SELECT * FROM employees_copy;TRUNCATE TABLE employees_copy;SELECT * FROM employees_copy;DESC employees_copy;
【参考】TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无 事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。
说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。
7 . DCL 中 COMMIT 和 ROLLBACK
# COMMIT:提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚
# ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后
#8. 对比 TRUNCATE TABLE 和 DELETE FROM
# 相同点:都可以实现对表中所有数据的删除,同时保留表结构。
# 不同点:
#TRUNCATE TABLE:一旦执行此操作,表数据全部清除。同时,数据是不可以回滚的
#DELETE FROM:一旦执行此操作,表数据可以全部清除(不带WHERE)。同时,数据是可以实现回滚的
9. DDL 和 DML 的说明
① DDL的操作一旦执行,就不可回滚。指令SET autocommit = FALSE对DDL操作失效。(因为在执行完DDL 操作之后,一定会执行一次COMMIT。而此COMMIT操作不受SET autocommit = FALSE影响的。)
② DML的操作默认情况,一旦执行,也是不可回滚的。但是,如果在执行DML之前,执行了
SET autocommit = FALSE,则执行的DML操作就可以实现回滚。
接下来进入演示环节,控制变量法,选择不同选项来
# 演示:DELETE FROM
#1)
COMMIT;#2)
SELECT *
FROM myemp3;#3)
SET autocommit = FALSE;#4)
DELETE FROM myemp3;#5)
SELECT *
FROM myemp3;#6)
ROLLBACK;#7)
SELECT *
FROM myemp3;
阿里开发规范:
【参考】TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。
说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。
53-阿里MySQL命名规范及MySQL8DDL的原子化_哔哩哔哩_bilibili 


课后练习
第一部分
#1. 创建数据库test01_office, 指明字符集为utf8。并在此数据库下执行下述操作#2. 创建表dept01
/*
字段 类型
id INT(7)
NAME VARCHAR(25)
*/#3. 将表departments中的数据插入新表dept02中#4. 创建表emp01
/*
字段 类型
id INT(7)
first_name VARCHAR (25)
last_name VARCHAR(25)
dept_id INT(7)
*/#5. 将列last_name的长度增加到50#6. 根据表employees创建emp02#7. 删除表emp01#8. 将表emp02重命名为emp01#9. 在表dept02和emp01中添加新列test_column,并检查所作的操作#10. 直接删除表emp01中的列 department_id
#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';
USE test01_office;
#2. 创建表dept01
/*
字段 类型
id INT(7)
NAME VARCHAR(25)
*/CREATE TABLE dept01(id INT(7),NAME VARCHAR(25));
#3. 将表departments中的数据插入新表dept02中
CREATE TABLE dept02
AS
SELECT *
FROM atguigudb.departments;
#4. 创建表emp01
/*
字段 类型
id INT(7)
first_name VARCHAR (25)
last_name VARCHAR(25)
dept_id INT(7)
*/CREATE TABLE emp01(
id INT(7),
first_name VARCHAR(25),
last_name VARCHAR(25),
dept_id INT(7)
);
#5. 将列last_name的长度增加到50DESC emp01;ALTER TABLE emp01MODIFY last_name VARCHAR(50);
#6. 根据表employees创建emp02CREATE TABLE emp02ASSELECT *FROM atguigudb.`employees`;SHOW TABLES FROM test01_office;
#7. 删除表emp01DROP TABLE IF EXISTS emp01;#8. 将表emp02重命名为emp01#ALTER TABLE emp02 RENAME TO emp01;RENAME TABLE emp02 TO emp01;#9. 在表dept02和emp01中添加新列test_column,并检查所作的操作ALTER TABLE emp01 ADD test_column VARCHAR(10);DESC emp01;ALTER TABLE dept02 ADD test_column VARCHAR(10);DESC dept02;#10.直接删除表emp01中的列 department_idALTER TABLE emp01DROP COLUMN department_id;
第二部分

#1、创建数据库 test02_marketCREATE DATABASE IF NOT EXISTS test02_market CHARACTER SET 'utf8';#指定对哪个数据库进行操作
USE test02_market;#2、创建数据表 customersCREATE TABLE customers(c_num INT ,c_name VARCHAR(50),c_contact VARCHAR(50),
c_city VARCHAR(50),c_birth DATE);#3、将c_contact字段插入到c_birth字段后面
ALTER TABLE customers MODIFY c_contact VARCHAR(50) AFTER c_birth;#4、将c_name字段数据类型改为 varchar(70)ALTER TABLE customers MODIFY c_name VARCHAR(70);#5、将c_contact字段改名为c_phoneALTER TABLE customers CHANGE c_contact c_phone VARCHAR(50);#6、增加c_gender字段到c_name后面,数据类型为char(1)ALTER TABLE customers ADD c_gender CHAR(1) AFTER c_name;#7、将表名改为customers_infoRENAME TABLE customers TO customers_info;#ALTER TABLE customers RENAME TO customers_info;#8、删除字段c_cityALTER TABLE customers_info DROP COLUMN c_city ;
第三部分


#1. 创建数据库test03_company
CREATE DATABASE IF NOT EXISTS test03_company CHARACTER SET 'utf8';#指定使用哪个数据库,即下面的sql语句是针对哪个数据库的
USE test03_company;# 2. 创建表offices
CREATE TABLE offices (officeCode INT,city VARCHAR(30),address VARCHAR(50),country VARCHAR(50),postalCode VARCHAR(25)
);# 3. 创建表employees
CREATE TABLE IF NOT EXISTS employees (empNum INT,lastName VARCHAR(50),firstName VARCHAR(50),mobile VARCHAR(25),`code` INT ,jobTitle VARCHAR(50),birth DATE,note VARCHAR(255),sex VARCHAR(5)
);# 4. 将表employees的mobile字段修改到code字段后面
ALTER TABLE employees
MODIFY mobile VARCHAR(20) AFTER `code`;# 5. 将表employees的birth字段改名为birthday
ALTER TABLE employees CHANGE birth birthday DATE;# 6. 修改sex字段,数据类型为char(1)
ALTER TABLE employees MODIFY sex CHAR(1);# 7. 删除字段note
ALTER TABLE employees DROP COLUMN note;# 8. 增加字段名favorite_activity, 数据类型为varchar(100)
ALTER TABLE employees ADD COLUMN favorite_activity VARCHAR(100);# 9. 将表employees的名称修改为 employees_info
RENAME TABLE employees TO employees_info;DESC employees_info;
相关文章:
MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 10
第10章_创建和管理表 DDL:数据定义语言。CREATE \ALTER\ DROP \RENAME TRUNCATE DML:数据操作语言。INSERT \DELETE \UPDATE \SELECT(重中之重) DCL:数据控制语言。COMMIT \…...
react项目引入tailwindcss不生效解决方案
根据tailwindcss官网的操作步骤下来,样式未生效,且未报错,看了挺多的资料,还是并未解决。 后面在另一个项目尝试时,报了下面的问题: Error: PostCSS plugin tailwindcss requires PostCSS 8 根据这个链接…...
Expo运行模拟器失败错误解决(xcrun simctl )
根据你的描述,问题主要涉及两个方面:xcrun simctl 错误和 Expo 依赖版本不兼容。以下是针对这两个问题的解决方案: 解决 xcrun simctl 错误 错误代码 72 通常表明 simctl 工具未正确配置或路径未正确设置。以下是解决步骤: 确保 …...
【系统架构设计师】体系结构文档化
目录 1. 说明2. 重要性3. 主要内容4. 编写原则5. 实践建议6. 例题6.1 例题1 1. 说明 1.绝大多数的体系结构都是抽象的,由一些概念上的构建组成。2.层的概念在任何程序设计语言中都不存在。3.要让系统分析员和程序员去实现体系结构,还必须将体系结构进行…...
【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行
文章目录 1. 给定 db 是否有其他 backend 正在运行1.1 获取 allPgXact[] 索引1.1.1 MyProc 中 databaseId 初始化实现1.2 allProcs[] 中各 databaseId 判断1. 给定 db 是否有其他 backend 正在运行 CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 …...
前端如何判断浏览器 AdBlock/AdBlock Plus(最新版)广告屏蔽插件已开启拦截
2个月前AdBlock/AdBlock Plus疑似升级了一次 因为自己主要负责面对海外的用户项目,发现以前的检测AdBlock/AdBlock Plus开启状态方法已失效了,于是专门研究了一下。并尝试了很多方法。 已失效的老方法 // 定义一个检测 AdBlock 的函数 function chec…...
微信小程序(第一集)
app.json {// 定义小程序的所有页面路径,数组中的第一个页面是首页"pages": ["pages/index/index", // 首页"pages/logs/logs" // 日志页面],// 设置小程序的全局窗口外观(比如导航栏和背景颜色)"wind…...
flutter ListView Item复用源码解析
Flutter 的 ListView 的 Item 复用机制是其高性能列表渲染的核心,底层实现依赖于 Flutter 的渲染管线、Element 树和 Widget 树的协调机制。以下是 ListView 复用机制的源码级解析,结合关键类和核心逻辑进行分析。 1. ListView 的底层结构 ListView 的复…...
《Operating System Concepts》阅读笔记:p9-p12
《Operating System Concepts》学习第 3 天,p9-p12 总结,总计 4 页。 一、技术总结 1.interrupt interrupt具有优先级(priority)。 2.storage 指令只能在 memory 上执行,所以要执行程序,那么就要加载到内存上。 (1)RAM Gen…...
html文件怎么转换成pdf文件,2025最新教程
将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…...
【SpringBoot实现全局API限频】 最佳实践
在 Spring Boot 中实现全局 API 限频(Rate Limiting)可以通过多种方式实现,这里推荐一个结合 拦截器 Redis 的分布式解决方案,适用于生产环境且具备良好的扩展性。 方案设计思路 核心目标:基于客户端标识(…...
科技查新过不了怎么办
“科技查新过不了怎么办?” “科技查新不通过的原因是什么?” 想必这些问题一直困扰着各位科研和学术的朋友们,尤其是对于查新经验不够多的小伙伴,在历经千难万险,从选择查新机构、填写线上委托单到付费,…...
设计模式-结构型-外观模式
在软件开发中,随着功能的不断迭代,系统会变得越来越复杂,模块之间的依赖关系也会越来越深。这种复杂性会导致代码难以理解、维护和扩展。而外观模式(Facade Pattern)正是为了解决这一问题而生的。 一、外观模式简介 …...
超详细的数据结构3(初阶C语言版)栈和队列。
文章目录 栈和队列1.栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 总结 栈和队列 1.栈 1.1 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进行插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另…...
centos 7 关于引用stdatomic.h的问题
问题:/tmp/tmp4usxmdso/main.c:6:23: fatal error: stdatomic.h: No such file or directory #include <stdatomic.h> 解决步骤: 1.这个错误是因为缺少C编译器的标准原子操作头文件 stdatomic.h。在Linux系统中,我们需要安装开发工具…...
Unity WebGL包体压缩
最近在开发webgl,踩了很多坑,先来说下包体的问题。 开发完之后发现unity将文件都合并到一个文件了,一共有接近100m。 这对网页端的体验来说是可怕的,因为玩家必须要加载完所有的文件才能进入,这样体验特别差。 于是想…...
【对比测评】 .NET 应用的 Web 视图控件:DotNetBrowser 或 EO.WebBrowser
您是否需要 .NET 应用的 Web 视图控件?.NET 生态系统提供了很多东西,有免费的 Web 视图控件,既有开源的,也有专有的。还有一些商业 Web 视图 控件,也是企业经常选择的一种选项。 在这篇博文中,我们比较了商…...
5.实时推荐系统的设计与实现
接下来我们将学习实时推荐系统的设计与实现。实时推荐系统需要处理大规模数据,并在用户交互时提供即时的推荐结果。这一课我们将介绍以下内容: 实时推荐系统的基本概念实时推荐系统的架构设计实时推荐系统的关键技术实践示例 1. 实时推荐系统的基本概念…...
Redis 数据类型 String 字符串
Redis 中的 String 数据类型 是最基础且使用最广泛的数据类型之一。它本质上是一个字节序列,可以存储各种类型的数据,如字符串、整数、浮点数等,其字符串类型的值包含⼀般格式的字符串或者类似 JSON、XML 格式的字符串;还可以存储…...
查询语句来提取 detail 字段中包含 xxx 的 URL 里的 commodity/ 后面的数字串
您可以使用以下 SQL 查询语句来提取 detail 字段中包含 oss.kxlist.com 的 URL 里的 commodity/ 后面的数字串: <p><img style"max-width:100%;" src"https://oss.kxlist.com//8a989a0c55e4a7900155e7fd7971000b/commodity/20170925/20170…...
为什么我用Python控制仪器比C#慢很多?如何优化性能?
在自动化测试、实验室仪器控制等领域,Python、C# 和 C 是常见的编程语言选择。最近,我在使用 Python 控制仪器时,发现其交互速度明显比 C# 慢很多。这让我感到困惑,毕竟 Python 以其简洁和高效著称,为什么会出现这种情…...
业务开发 | 基础知识 | Maven 快速入门
Maven 快速入门 1.Maven 全面概述 Apache Maven 是一种软件项目管理和理解工具。基于项目对象模型的概念(POM),Maven 可以从中央信息中管理项目的构建,报告和文档。 2.Maven 基本功能 因此实际上 Maven 的基本功能就是作为 Ja…...
机器学习 - 词袋模型(Bag of Words)实现文本情感分类的详细示例
为了简单直观的理解模型训练,我这里搜集了两个简单的实现文本情感分类的例子,第一个例子基于朴素贝叶斯分类器,第二个例子基于逻辑回归,通过这两个例子,掌握词袋模型(Bag of Words)实现文本情感…...
自制游戏——斗罗大陆
很简陋,没有图,请见谅 // mine[0] 级数 // mine[1] 战力 //mine[2] 1 白虎 //mine[2] 2 昊天锤 //mine[2] 3 蓝银草 #include <bits/stdc.h> using namespace std; int mine[100],live3, dou 1, luo 1, da 1, bag[1000], huan 0, lia…...
【Android开发】Android Studio汉化
前言 该插件是官方支持插件,未对任何软件进行修改和破解 Android Studio 是基于 IntelliJ IDEA 社区版开发的集成开发环境(IDE),专门用于Android应用程序的开发。以下是为什么 Android Studio 能使用 IntelliJ IDEA 插件的原因&am…...
PRC框架-Dubbo
RPC框架 RPC(Remote Procedure Call,远程过程调用)框架是一种允许客户端通过网络调用服务器端程序的技术。以下是常见的RPC框架及其特点: 1. 基于HTTP/REST的RPC框架 特点:简单易用,与Web开发无缝集成&am…...
冒泡排序
目录 冒泡排序: 代码实现: 思路分析: 冒泡排序优化: 冒泡排序(稳定): 想要数据从小到大排序。 代码实现: public static void bubbleSort(int[] arr) {//趟数for (int i 0; i < arr.length - 1; i) {…...
单例模式几种实现
静态内部类holder实现(推荐) public class UniqueIdGenerator {public static final UniqueIdGenerator INSTANCE Holder.INSTANCE;// Private holder class for lazy initializationprivate static class Holder {static final UniqueIdGenerator INS…...
XZ_Mac电脑上本地化部署DeepSeek的详细步骤
根据您的需求,以下是Mac电脑上本地化部署DeepSeek的详细步骤: 一、下载并安装Ollama 访问Ollama官网: 打开浏览器,访问 Ollama官网。 下载Ollama: 在官网中找到并点击“Download”按钮,选择适合Mac系统的…...
如果依赖项是一个对象,useMemo 如何处理?
在使用 useMemo 时,如果依赖项是一个对象,需要特别注意,因为对象的引用在每次渲染时都会发生变化(即使对象的内容没有变化)。这可能导致 useMemo 的缓存失效,因为它会认为依赖项已改变。 处理对象依赖项的策略 使用 useMemo 创建对象: 如果你需要将对象作为依赖项,可以…...
