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

MySQL数据库概述

MySQL数据库概述

1 SQL

SQL语句大小写不敏感。
SQL语句末尾应该使用分号结束。

1.1 SQL语句及相关操作示例

  • DDL:数据定义语言,负责数据库定义、数据库对象定义,由CREATE、ALTER与DROP三个语法所组成
  • DML:数据操作语言,负责对数据库对象的操作,CRUD:create、read、update、delete增查、改、删
  • DCL:数据控制语言,负责数据库权限访问控制,由GRANT和REVOKE两个指令组成
  • TCL:事务控制语言,负责处理ACID事务,支持commit、rollback指令
    创建表示例
# GRANT授权、REVOKE撤销:
grant all on crashsource.* to 'test_user'@'%' identified by 'cli*963.';  -- 在所有主机上,对test_user用户,授权操作数据库crashsource中的所有表。 .*表示所有表, '%'通配符revoke all on *.* from test_use; -- 撤销test_user用户对所有表的配置权限。# 删除用户
drop user test_user; -- 删除用户test_user,慎用。# 创建数据库
create database if not exists gogs character set utf8mb4 collate utf8mb4_general_ci;  -- 创建数据库# 删除数据库
drop database if exists gogs; -- 如果数据库gogs存在,则删除。# 创建表
CREATE TABLE `reg` (`loginname` varchar(48) NOT NULL,`name` varchar(64) NOT NULL,`password` varchar(255) NOT NULL,KEY `ln` (`loginname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;  -- 创建表,反引号标注的名称,被认为是非关键字。# DESC查看列信息
desc products;  -- 查看列信息
desc products '%name'; -- 查看以name结尾的列信息

1.2 主键PRIMARY KEY *

主键PRIMARY KEY,表中一列或多列(一个字段或多个字段)组成组成唯一的key,通过这个key能唯一的标识一条记录。主键的列不能使用空值NULL。主键往往设置为整型、长整型,(字符串、日期型都可以,但是开发中一般不这么做,因为存在性能上的问题);通过自增AUTO_INCREMENT来保证主键的唯一性。通常实践结果表明,也不怎么使用多列组合来组成主键。

自增AUTO_INCREMENT:自己管理一个数字,每增加一行,数字+1,删除一行这个数字不变。数字绝不回头。

表中也可以没有主键,但不符合惯例。


1.3 索引INDEX *

索引可以看做是一本大字典的目录,为了快速检索用的。空间换时间,显著提高查询效率(同时会带来插入、删除、修改的效率问题,比如要修改某一个字段,可能需要同时去更新索引)。

可以对一列或多列设定索引。

**主键索引:**主键会自动建立主键索引,主键本身就是为了快速定位唯一记录的。
**唯一索引:**表中的索引列组成的索引必须唯一,但可以为空,非空值必须唯一。 主键索引和唯一索引的显著差异,就是主键不可以为NULL,唯一键可以为NULL。
**普通索引:**没有唯一性的要求,就是建立了一个字典的目录而已。


1.4 约束Constraint *

unique约束(唯一键约束):定义了唯一键索引,就定义了唯一键约束。唯一约束就是不允许重复,但是可以为NULL,为NULL只允许某一行的一个字段为NULL。

primary key约束:定义了主键,就定义了主键约束。主键约束就是不允许为NULL,而且不允许重复。

外键约束Foreign Key
**外键:**在表B中的列,关联表A中的主键,表B中的列就是外键。

1、如果在表B插入一条数据,B的外键列插入了一个值,这个值必须是表A中存在的主键值。
2、修改表B的外键值,同样要在表A中存在。
3、如果表A要删除一条记录,那么就等于删除了一个主键,那么如果表B中引用了这个主键,就必须先删除表B中引用这个主键的记录,然后才能删除表A的记录,否则删除失败。
4、修改表A的主键,由于主键的唯一性,修改的主键相当于插入新的主键,那么表B引用过这个主键,将组织表A的主键修改,必须删除表B的相关记录后,才能修改表A的主键。

外键约束,为了保证数据完整性、一致性,杜绝数据冗余、数据讹误。


1.5 视图

视图,也称续表,看起来像表。它是由查询语句生成的。可以通过视图进行CRUD增删改查操作。

视图的作用:

  • 简化操作,将复杂的SQL查询语句定义为视图,可以简化查询。
  • 数据安全,视图可以只显示真实表的部分列,或计算后的结果,隐藏真实表的数据。
# 创建视图示例
create view ProductCustomers AS select cust_name, cust_contact, prod_id FROM customers, orders, orderitems WHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num; 

2 MySQL数据类型 *

下列常用的数据类型必须牢记:

类型含义
tinyint1字节,带符号的范围是128到127。无符号的范围是0到255。bool或boolean,就是tinyint,0表示假,非0表示真
smallint2字节,带符号的范围是-32768到32767。无符号的范围是0到65535
int整型,4字节,同Integer,带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295
bigint长整型,8字节,带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615
float单精度浮点数精确到大约7位小数位
double双精度浮点数精确到大约15位小数位
DATE日期。支持的范围为1000-01-019999-12-31
DATETIME支持的范围是1000-01-0100:00:009999-12-3123:59:59
TIMESTAMP时间戳。范围是1970-01-0100:00:00到2037年
char(M)固定长度,右边填充空格以达到长度要求。M为长度,范围为0~255。M指的是字符个数
varchar(M)变长字符串。M表示最大列长度。M的范围是0到65535。但不能突破行最大字节数65535
text大文本。最大长度为65535(2^16-1)个字符
BLOB大字节。最大长度为65535(2^16-1)字节的BLOB列

LENGTH函数:返回字节数。而char和varchar定义的M是字符数限制。

char可以将字符串变成等长的,空间换时间,效率略高(查询、存储效率)
varchar变长,省了空间。但是会带来效率问题。因为存的数据参差不齐,带来读取的问题,比如存了一百万条记录,单要对前面的数据进行修改,而这个数据恰恰引起了长度的变化,导致整个IO开始变动,上百万条整体挪动。。。

所以到底用什么,要根据实际项目评估。比如数据库经常修改,还不如用char呢。但是用char,一个主从、多从的数据库架构,那要浪费多少磁盘空间啊。。。


2.1 使用Navicat设计表示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uAF2gcKc-1692374636464)(设计表示例.jpg)]
保存后生成的SQL语句:

CREATE TABLE `reg` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`loginname` varchar(48) NOT NULL,`name` varchar(64) NOT NULL,`password` varchar(255) NOT NULL,`reserved1` varchar(255) DEFAULT NULL,`reserved2` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `ln` (`loginname`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2.2 使用Navicat创建视图示例

  1. 点击视图-> 新建视图
    在这里插入图片描述

  2. 点击视图创建工具 -> 拖拽需要创建视图的表salariesemployees到窗口,勾选需要查看的字段first_name、last_name、salary、emp_no -> 构建:

  3. 预览:
    在这里插入图片描述

  4. 点击保存,然后双击打开保存的视图,新建视图查询语句-> 点击运行:
    在这里插入图片描述
    在这里插入图片描述


3 关系操作

关系:在关系型数据库中,关系就是二维表。关系操作就是对表的操作。

  • 选择:selection,又称为限制,是从关系中选择出满足给定条件的元组。
  • 投影:projection,在关系上投影就是从选择出若干属性列组成新的关系。
  • 连接,join,将不同的两个关系连接成一个关系。

3.1 DML

CRUD:增create、查read、改update、删delete。

3.1.1 Insert语句

INSERT INTOcustomers (cust_name, cust_address, cust_city, cust_country, cust_contact, cust_email)
VALUES ('Li Ming', 'JIN NIU', 'ChengDU', 'China', '02811111', 'test@email.com');  -- 基本的insert语句。主键自动递增可以不指定。INSERT INTOorders (order_date, cust_id)
VALUES (database(), 123)
ON DUPLICATE KEYUPDATE order_date=database();  -- 如果主键冲突、唯一键冲突就执行Upgdate后的设置。主键不在新增记录,主键存在更新部分字段。INSERT IGNORE INTOvendors (vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES ('Huawei', 'PIDU', 'CHENGDU', 'SICHUAN', 123454, 'CHINA'); -- 如果主键冲突、唯一建冲突就忽略错误,返回一个告警。

3.1.2 Update语句

UPDATE IGNORE vendors SET vend_address='Pi DU', vend_city='CHENG DU' where vend_name='Huawei';  -- 要有where语句,否则就会更新所有行。ignore同上

3.1.3 DELETE语句

DELETE IGNORE FROM vendors WHERE vend_name='HUAWEI'; -- 删除符合条件的记录; 没有where子句将删除所有行,可以通过日志恢复。delete不会删除表本身。

truncate语句
作用是清空表或者说是截断表,只能作用于表。truncate的语法很简单,后面直接跟表名即可 truncate是DDL语句。

TRUNCATE vendors -- 不记录数据的变动,可以通过日志恢复

truncate与drop,delete的对比
truncate与delete,drop很相似,其实这三者还是与很大的不同的,下面简单对比下三者的异同。

  • truncate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。
  • truncate只能作用于表;delete,drop可作用于表、视图等。
  • truncate会清空表中的所有行,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。
  • truncate会重置表的自增值;delete不会。
  • truncate不会激活与表有关的删除触发器;delete可以。
  • truncate后会使表和索引所占用的空间会恢复到初始大小;delete操作不会减少表或索引所占用的空间,drop语句将表所占用的空间全释放掉。

3.1.4 select语句

查询的结果称为结果集record set。

/*SELECT[DISTINCT]select_expr,...[FROM table_references[WHERE where_definition][GROUP BY {col_name | expr | position}[ASC | DESC],... [WITH ROLLUP]][HAVING where_definition][ORDER BY {col_name I expr I position][ASC I DESC],..][LIMIT ([offset,] row count I row_count OFFSET offset}][FOR UPDATE | LOCK IN SHARE MODE]]*/

for update 会把进行写锁定,这是排他锁。

SELECTDISTINCTvend_name, vend_address
FROM vendors
WHERE vend_country IN('USA', 'ENGLISH', 'CHINA')
GROUP BY vend_country DESC
HAVING vend_country IN('USA', 'ENGLISH', 'CHINA')
ORDER BY vend_country
LIMIT 5 OFFSET 2
FOR UPDATE;SELECT 1;
-- 最简单的查询
SELECT * FROM vendors;-- 字符串合并
SELECT vend_id, vend_name + vend_address FROM vendors;
SELECT vend_id, COUNT(vend_name, ' ', vend_address, ' ', vend_city) FROM vendors;
-- as 定义别名
SELECT vend_id, COUNT(vend_name, ' ', vend_address, ' ', vend_city) as vend_info FROM vendors;-- limit子句
SELECT * FROM orders LIMIT 5;  -- 提取前5行
SELECT * FROM orders LIMIT 5 OFFSET 4; -- 提取5条记录,偏移4条。偏移可以用作分页读取;比如每次偏移20,读取20条记录,每读取一次偏移增加20.
SELECT * FROM orders LIMIT 4, 5; -- 上条语句的另外一种写法。

– where子句
where子句涉及的运算符:

运算符描述
=等于
<>不等于
>,<,>=,<=大于、小于、大于等于、小于等于
BETWEEN在某个范围之内,between a andb等价于[a,b]
LIKE字符串模式匹配,%表示任意多个字符,表示一个字符
IN指定针对某个列的多个可能值
AND
OR

**注意:**如果很多表达式需要使用AND、OR计算逻辑表示式的值的时候,由于结合律问题,可以使用小括号来避免错误。

-- 条件查询
SELECT * FROM vendors WHERE vend_id<1006 and vend_city in ('New York', 'Pairs', 'London') and vend_name like 'J%';
SELECT * FROM vendors WHERE vend_id BETWEEN 1000 AND 1005 AND vend_name LIKE 'J%';
SELECT * FROM vendors WHERE vend_id IN (1003, 1004, 1005);-- order by子句
# 对查询结果进行排序,可以升序ASC、降序DESC
-- 降序
SELECT * FROM vendors WHERE vend_id IN (1003, 1004, 1005) ORDER BY vend_id DESC;-- DISTINCT
# 不返回重复记录
SELECT DISTINCT vend_id FROM vendors;
SELECT DISTINCT vend_id, vend_city FROM vendors;

聚合函数

函数描述
COUNT(expr)返回记录中记录的数目,如果指定列,则返回非NULL值的行数
COUNT(DISTINCT expr,[expr..)返回不重复的非NULL值的行数
AVG(IDISTINCT]expr)返回平均值,返回不同值的平均值
MIN(expr), MAX(expr)最小值,最大值
SUM(IDISTINCT]expr)求和,Distinct返回不同值求和
-- 聚合函数
SELECT COUNT(*), AVG(quantity), SUM(quantity), MIN(quantity), MAX(quantity) FROM orderitems;

分组查询
使用group by子句,如果有条件,使用HAVING子句过滤分组、聚合过滤后的结果。

-- 聚合所有
SELECT SUM(item_price), AVG(item_price), COUNT(order_item) FROM orderitems;
-- 聚合被选择的记录
SELECT order_item, SUM(quantity), AVG(item_price), COUNT(order_item) FROM orderitems WHERE order_item=1;
-- 按照不同的order_item分组,分组分别聚合
SELECT order_item, SUM(quantity), AVG(item_price), COUNT(order_item) FROM orderitems WHERE item_price<10 GROUP BY order_item;
-- HAVING子句对分组结果过滤
SELECT order_item, SUM(quantity), AVG(item_price), COUNT(order_item) FROM orderitems GROUP BY order_item HAVING AVG(quantity)>3;
-- 使用别名
SELECT order_item, SUM(quantity), AVG(item_price) as avg_q FROM orderitems GROUP BY order_item HAVING AVG(quantity)>3;
-- 最后对分组过滤后的结果进行排序
SELECT order_item, SUM(quantity), AVG(item_price) as avg_q FROM orderitems GROUP BY order_item HAVING AVG(quantity)>3 ORDER BY avg_q;

子查询
查询语句可以嵌套,内部查询就是子查询。子查询必须在一组小括号中。子查询不能使用order by

SELECT * 
FROM orderitems 
where item_price IN (SELECT item_price FROM orderitems WHERE item_price<10) 
ORDER BY item_price 
DESC;SELECT order_item 
FROM (SELECT * FROM orderitems WHERE item_price<10) as ord_items 
where item_price<9 
ORDER BY order_item 
DESC;

子查询存在性能问题,建议少用,改用join


连接join

在联结两个表时,实际要做的是将第一个表中的每一行与第二个表中的每一行配对。WHERE子句作为过滤条件,只包含那些匹配给定条件(这里是联结条件)的行。
没有WHERE子句,第一个表中的每一行将与第二个表中的每一行配对,而不管它们逻辑上是否能配在一起,这种联结就是笛卡尔联结。

内联结:

  • 没有where限定的内联结,就是笛卡尔联结,又称叉联结。有的说法,叉联结是叉联结,使用CROSS JOIN;内联结是内联结,使用INNER JOIN;只是两种联结的语法相同。
SELECT vend_name, prod_name, prod_price FROM vendors, products;
SELECT vend_name, prod_name, prod_price FROM vendors CROSS JOIN products; -- 叉联结,使用CROSS JOIN
SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products; -- 内联结,使用INNER JOIN,因为没有where限定,得出的结果也是叉联结的结果。
  • 等值联结,有where限定的内联结

在联结两个表时,实际要做的是将第一个表中的每一行与第二个表中的每一行配对。WHERE 子句作为过滤条件,只包含那些匹配给定条件(这里是联结条件)的行。
没有 WHERE子句,第一个表中的每一行将与第二个表中的每一行配对,而不管它们逻辑上是否能配在一起。

SELECT vend_name, prod_name, prod_price FROM vendors, products WHERE vendors.vend_id = products.vend_id;
SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;  -- 更推荐使用inner join... on... 语法
-- 自联结,特殊的等值联结
-- 找出与Mr Wang在同一个国家的所有顾客,然后给他们发邮件。先使用子查询
SELECT cust_id, cust_name, cust_email
FROM Customers
WHERE cust_country = (SELECT cust_countryFROM CustomersWHERE cust_contact = 'Mr Wang');
-- 使用自联结
SELECT a.cust_id, a.cust_name, a.cust_email
FROM customers AS a INNER JOIN customers AS b ON a.cust_country = b.cust_country AND b.cust_name='Mr Wang';-- 自然联结:等值连接中,若干个联结的表,会产生重复的列。自然联结就是没有重复的列,是一种特殊的等值连接。
-- 没有内置的DBMS语法支持自然联结,需要用户自己实现。一般通过对一个表使用通配符(SELECT *),而对其他表的列使用明确的子集来完成
SELECT C.*, O.order_num, O.order_date,OI.prod_id, OI.quantity, OI.item_price
FROM Customers AS C, Orders AS O,OrderItems AS OI
WHERE C.cust_id = O.cust_id
AND OI.order_num = O.order_num
AND prod_id = 'RGAN01';
  • 外联结:分为左外联结,右外联结

许多联结将一个表中的行与另一个表中的行相关联,但有时候需要包含没有关联行的那些行。
例如,对每个顾客下的订单进行计数,包括那些至今尚未下订单的顾客;列出所有产品以及订购数量,包括没有人订购的产品。

-- 使用 LEFT OUTER JOIN 从 FROM 子句左边的表(Customers 表)中选择所有行.检索包括没有订单顾客在内的所有顾客
SELECT customers.cust_id, orders.order_num FROM customers LEFT OUTER JOIN orders ON customers.cust_id = orders.cust_id;
-- 使用 RIGHT OUTER JOIN 从 FROM 子句右边的表(Customers 表)中选择所有行.检索包括没有订单顾客在内的所有顾客
SELECT customers.cust_id, orders.order_num FROM orders RIGHT OUTER JOIN customers ON customers.cust_id = orders.cust_id;-- 带聚集函数的联结
SELECT Customers.cust_id, COUNT(Orders.order_num) AS num_ord
FROM Customers
INNER JOIN Orders ON Customers.cust_id = Orders.cust_id
GROUP BY Customers.cust_id; -- 先执行INNER JOIN... ON...,将两张表关联;然后按顾客ID分组;最后通过聚集函数,统计出每个顾客的订单数。-- 联结多个表
-- 使用子查询
SELECT cust_name, cust_contact
FROM Customers
WHERE cust_id IN (SELECT cust_id FROM Orders WHERE order_num IN (SELECT order_num FROM OrderItems WHERE prod_id = 'RGAN01'));
-- 使用联结
SELECT cust_name, cust_contact
FROM Customers, Orders, OrderItems
WHERE Customers.cust_id = Orders.cust_id
AND OrderItems.order_num = Orders.order_num
AND prod_id = 'RGAN01';

相关文章:

MySQL数据库概述

MySQL数据库概述 1 SQL SQL语句大小写不敏感。 SQL语句末尾应该使用分号结束。 1.1 SQL语句及相关操作示例 DDL&#xff1a;数据定义语言&#xff0c;负责数据库定义、数据库对象定义&#xff0c;由CREATE、ALTER与DROP三个语法所组成DML&#xff1a;数据操作语言&#xff…...

2023年国赛数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…...

怎么借助ChatGPT处理数据结构的问题

目录 使用ChatGPT进行数据格式化转换 代码示例 ChatGPT格式化数据提示语 代码示例 批量格式化数据提示语 代码示例 ChatGPT生成的格式化批处理代码 使用ChatGPT合并不同数据源的数据 合并数据提示语 自动合并数据提示语 ChatGPT生成的自动合并代码 结论 数据合并是…...

Docker容器无法启动 Cannot find /usr/local/tomcat/bin/setclasspath.sh

报错信息如下 解决办法 权限不够 加上--privileged 获取最大权限 docker run --privileged --name lenglianerqi -p 9266:8080 -v /opt/docker/lenglianerqi/webapps:/usr/local/tomcat/webapps/ -v /opt/docker/lenglianerqi/webapps/userfile:/usr/local/tomcat/webapps/u…...

Pytorch-day08-模型进阶训练技巧-checkpoint

PyTorch 模型进阶训练技巧 自定义损失函数动态调整学习率 典型案例&#xff1a;loss上下震荡 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BndMyRX0-1692613806232)(attachment:image-2.png)] 1、自定义损失函数 1、PyTorch已经提供了很多常用…...

【ArcGIS Pro二次开发】(61):样式(Style)和符号(Symbol)

在 ArcGIS Pro SDK 中&#xff0c;地图要素符号&#xff08;Symbol&#xff09;和符号样式&#xff08;Style&#xff09;是2个很重要的概念。 【Symbol】是用于表示地图上不同类型的要素&#xff08;如点、线、面&#xff09;的图形化表示。 在地图中&#xff0c;各种要素都…...

深入理解 HTTP/2:提升 Web 性能的秘密

HTTP/2 是一项重大的网络协议升级&#xff0c;旨在提升 Web 页面加载速度和性能。在这篇博客中&#xff0c;我们将深入探讨 HTTP/2 的核心概念以及如何使用它来加速网站。 什么是 HTTP/2&#xff1f; HTTP/2 是 HTTP 协议的下一个版本&#xff0c;旨在解决 HTTP/1.1 中的性能…...

800V高压电驱动系统架构分析

需要电驱竞品样件请联&#xff1a;shbinzer &#xff08;拆车邦&#xff09; 过去一年是新能源汽车市场爆发的一年&#xff0c;据中汽协数据&#xff0c;2021年新能源汽车销售352万辆&#xff0c;同比大幅增长157.5%。新能源汽车技术发展迅速&#xff0c;畅销车辆在动力性能…...

Camunda_3:主动撤回

貌似国际主流认知工作流通常不支持撤回/驳回&#xff0c;流程只能向前进行。而撤回/驳回算是一种中国特色吧。 因此Camunda对于流程修改也仅仅提供了runtimeService.createProcessInstanceModification(instanceId)来修改流程。对于撤回/驳回这种操作得自己想办法。通常的撤回/…...

ClickHouse(二十三):Java Spark读写ClickHouse API

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…...

Linux下的GPIO基本概念指南

一、什么是GPIO 在Linux中&#xff0c;GPIO(General Purpose Input/Output&#xff0c;通用输入输出)是一种用于控制外部设备和传感器的通用接口。它允许你通过软件控制数字信号&#xff0c;从而实现各种硬件设备的交互&#xff0c;如LED、按钮、传感器、马达等。 每个GPIO引脚…...

快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持

跨域问题 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin Issue&#xff09;的存在是因为浏览器的安全限制&#xff0c;它防止恶意网站利用跨域请求来获取用户的敏感信息或执行恶意操作。浏览器通过实施同源策略来限制网页在不同源之间进行资源访问或交互的情况。当一…...

【【萌新的STM32学习-13之GPIO寄存器的用法】】

萌新的STM32学习-13之GPIO寄存器的用法 从外部来看我们有很多个GPIO 分为ABCDEF等等 每个GPIO都有&#xff11;&#xff16;个引脚 每个引脚的名字是PA&#xff10;到PA&#xff11;&#xff15; 这是外部的看法 对于内部 引脚自然会有引脚的功能传入的模式 状态 频率 等…...

Android开发基础知识总结(一)初识安卓Android Studio

一.基础理论知识 1.Linux相当于是地基。 MIUI&#xff0c;EMUI等操作系统&#xff0c;是基于安卓的改版——且裁掉了一部分Google的服务。 &#xff08;鸿蒙虽然是改版&#xff0c;但和安卓的架构基本上一致&#xff09; 2.Kotlin和Java都是JVM语言&#xff0c;必须先复习好…...

常见的网络设备有哪些?分别有什么作用?

个人主页&#xff1a;insist--个人主页​​​​​​ 本文专栏&#xff1a;网络基础——带你走进网络世界 本专栏会持续更新网络基础知识&#xff0c;希望大家多多支持&#xff0c;让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络设备的概述 二、常见的网络设备 1、…...

斗鱼财报盈利的背后:左手艳舞、右手擦边

本月14日&#xff0c;直播平台斗鱼发布了其第二季度财报&#xff0c;面对“看起来还不错的数据”&#xff0c;其对外着重强调了“连续两个季度实现盈利”&#xff0c;并称“斗鱼收入结构持续优化”“斗鱼盈利能力提升”“斗鱼稳健增长可期”“督导提升了内容审核能力”。 财报…...

布隆过滤器

思考一个问题&#xff1a;如果我想判断一个元素是否存在某个集合里面怎么做&#xff1f; 一般的解决方案是先把所有元素保存起来&#xff0c;然后通过循环比较来确定。 但是如果我们有几千万甚至上亿的数据的时候&#xff5d;&#xff0c;虽然可以通过不同的数据结构来优化数据…...

element-ui中二次封装一个带select的form组件

带select的form组件 样式 代码 <template><el-form-item label"是否有" class"append" prop"tag"><el-form-itemprop"isShare"><el-select v-model"query.tag"><el-option v-for"(item, …...

07.利用Redis实现点赞排行榜功能

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redisson实现点赞排行榜功能&#xff0c;按照时间顺序 当用户给某一篇文章点赞后&#xff0c;会再数据库中存储一条数据&#xff0c;并且在Redis中存储一条数据为当前博客的点赞用户标识&#xff0c;来区分哪个用户对文章进…...

【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

一、工具的选择 近期想将vuejselementUI的项目升级为vue3tselementUI plus&#xff0c;以获得更好的开发体验&#xff0c;并且vue3也显著提高了性能&#xff0c;所以在此记录一下升级的过程对于一个正在使用的项目手工替换肯定不是个可实现的解决方案&#xff0c;更优方案是基于…...

多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测。 模型描…...

go-test

单元测试 基本用法 Go语言测试 常用reflect.DeepEqual()对slice进行比较 跳过某些测试用例 func TestTimeConsuming(t *testing.T) {if testing.Short() {t.Skip("short模式下会跳过该测试用例")}... }当执行go test -short时就不会执行上面的TestTimeConsuming测…...

假设你新换了电脑,如何不用U盘的情况下实现软件文件转移?

要将笔记本和台式机连接到同一个局域网&#xff0c;并实现文件共享或使用文件传输协议进行文件传输&#xff0c;您可以按照以下步骤操作&#xff1a; 设置局域网连接共享文件夹使用文件传输协议 Step 1: 设置局域网连接 确保笔记本和台式机连接到同一个局域网。有几种常见的…...

聊聊 Docker

聊聊 Docker Docker 是什么&#xff1f; 定义 Docker 是一款 开源的应用容器引擎。 简单来说&#xff0c;就是 以容器虚拟化技术为基础的软件。可以把应用程序和所依赖的包一起打包到一个可移植的镜像中&#xff0c;发布到 Linux 或者 Windows 上运行。&#xff08;代码 运…...

运行软件mfc140u.dll丢失怎么办?mfc140u.dll的三个修复方法

最近我在使用一款软件时遇到了一个问题&#xff0c;提示缺少mfc140u.dll文件。。这个文件是我在使用某个应用程序时所需要的&#xff0c;但是由于某种原因&#xff0c;它变得无法正常使用了。经过一番搜索和了解&#xff0c;我了解到mfc140u.dll是Microsoft Visual Studio 2015…...

神经网络基础-神经网络补充概念-54-softmax回归

概念 Softmax回归&#xff08;Softmax Regression&#xff09;是一种用于多分类任务的机器学习算法&#xff0c;特别是在神经网络中常用于输出层来进行分类。它是Logistic回归在多分类问题上的推广。 原理 Softmax回归的主要思想是将原始的线性分数&#xff08;得分&#xf…...

米尔瑞萨RZ/G2L开发板-02 ffmpeg的使用和RTMP直播

最近不知道是不是熬夜太多&#xff0c;然后记忆力减退了&#xff1f; 因为板子回来以后我就迫不及待的试了一下板子&#xff0c;然后发现板子有SSH&#xff0c;但是并没有ffmpeg&#xff0c;最近总是在玩&#xff0c;然后今天说是把板子还原一下哇&#xff0c;然后把官方的固件…...

基于swing的在线考试系统java jsp线上试卷问答mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的在线考试系统 系统有2权限&#xff1a;管…...

C# 读取pcd点云文件数据

pcd文件有ascii 和二进制格式&#xff0c;ascii可以直接记事本打开&#xff0c;C#可以一行行读。但二进制格式的打开是乱码&#xff0c;如果尝试程序中读取&#xff0c;对比下看了数据也对不上。 这里可以使用pcl里的函数来读取pcd&#xff0c;无论二进制或ascii都可以正确读取…...

.NET CORE Api 上传excel解析并生成错误excel下载

写在前面的话&#xff1a; 【对外承接app API开发、网站建设、系统开发&#xff0c;有偿提供帮助&#xff0c;联系方式于文章最下方 】 因业务调整&#xff0c;不再需要生成错误无excel下载&#xff0c;所以先保存代码&#xff0c;回头再重新编辑 #region Excel校验部分if (f…...

软件开发办公/seo网络推广招聘

保证有且仅有三个任务列表&#xff1a; 一个 To Do List 一个 Watch List 一个 Later List 你越喜欢罗列任务列表&#xff0c;这件事对你来说就越重要。 To Do List 里放上所有你“必须”做的事&#xff0c;按照时间排序。 Watch List 里放上所有你遇到的需要不断 follow 的事情…...

网站建设和优化/青岛网站排名推广

grub目录误删或被删修复1、进入救援模式2、选择默认OK3、选择默认OK4、选择NO&#xff0c;不创建网络。5、选择Continue继续6、选择默认OK7、选择默认OK8、选择开启shell Start shell OK9、使用chroot /mnt/sysp_w_picpath/ 切换到根目录在使用grub-install安装到/dev/sda目录下…...

开发者模式有什么危害/网站页面优化方案

# 带入需要使用的包from urllib import request, parseimport os# 基础知识# 变量赋值# 字符串赋值 爬取的关键字kw lol# 数值赋值 爬取的页数范围start 1end 4# 输出# print(kw, start, end)# 声明需要爬取的连接base_url https://tieba.baidu.com/f?# 创建文件夹 存放…...

wordpress知更鸟打赏/深圳网络营销和推广方案

本文已经过原作者 Tania Rascia 授权翻译。webpack 对我来说曾经是一个怪物般存在一样&#xff0c;因为它有太多太多的配置项&#xff0c;相反&#xff0c;使用像create-react-app脚手架可以很轻松创建项目&#xff0c;所以有一段时间内&#xff0c;我会尽量避免使用 webpack&a…...

网站建设最新技术/seo品牌优化百度资源网站推广关键词排名

NoSQL&#xff0c;指的是非关系型的数据库。NoSQL&#xff0c;意即反SQL运动&#xff0c;是一项全新的数据库革命性运动&#xff0c;早期就有人提出&#xff0c;发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储&#xff0c;相对于目前铺天盖地的关系型数…...

公司门户网站该怎么做/短视频培训机构排名

文章目录 docker 入门使用refDocker baseDocker build、pull、run三条路线Docker启动与停止修改镜像源image操作container操作DockerfilerefDockerfile组成docker 入门使用 ref...