MySQL-----视图与索引
目录
视图
1.视图
2.操作
11.索引
1.定义
2.优缺点:
3.分类
4.索引的设计原则
5.索引的使用
作业
视图
1.视图
❓如果需要在原表中隐藏部分字段时,怎么办? 视图 📖视图:
是一个没有存储任何数据的表,可以对其CRUD视图所有的数据来源都来自于底层表是一个数据对象删除视图时,原数据不会变化操作视图数据时,源数据会发生变化,因为视图数据来自于原表
📘视图设计原则:
视图必须有唯一命名在mysql中视图的数量没有限制创建视图必须从管理员那里获得必要的权限视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的ORDER BY。视图不能索引,也不能关联触发器或默认值视图可以和表同时使用
2.操作
1.创建视图
mysql> create view employee_v_1
-> as
-> select id,number,name,job from employee;
Query OK, 0 rows affected (0.01 sec)mysql> show tables;
+-------------------+
| Tables_in_dml_lls |
+-------------------+
| department |
| employee |
| employee_v_1 |
| user |
+-------------------+
4 rows in set (0.00 sec)2.视图没有索引
mysql> desc employee_v_1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | bigint(20) | NO | | 0 | |
| number | varchar(20) | NO | | NULL | |
| name | varchar(50) | YES | | NULL | |
| job | varchar(50) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)3.查询视图数据
mysql> select * from employee_v_1;
+----+-------------+-----------+-----------------+
| id | number | name | job |
+----+-------------+-----------+-----------------+
| 1 | E2018010001 | 吴所为 | 总经理 |
| 2 | E2018070003 | 韩金龙 | 总经理 |
| 3 | E2018060002 | 王黎明 | 总经理 |
| 4 | E2018020002 | 龚爱国 | 总经理 |
| 5 | E2019050001 | 马金花 | 财务总监 |
| 6 | E2019050018 | 李昌贵 | 财务专员 |
| 7 | E2019100011 | 王建国 | 网络管理员 |
| 8 | E2019110004 | 黎锦熙 | 网络管理员 |
| 9 | E2020020023 | 繁茂森 | 销售专员 |
| 10 | E2019060005 | 张善民 | 销售经理 |
| 11 | E2019060009 | 廖云龙 | 技术总监 |
| 12 | E2019120021 | 刘盛会 | 研发工程师 |
| 13 | E2019020001 | 马明全 | 高级工程师 |
| 14 | E2019120015 | 李意 | 行政专员 |
| 15 | E2019020017 | 刘六一 | 财务总监 |
| 16 | E2020020012 | 陈超 | 研发工程师 |
+----+-------------+-----------+-----------------+
16 rows in set (0.00 sec)4.更改视图数据
mysql> insert into employee_v_1 values(null,"202222222","张三","程序员");
Query OK, 1 row affected (0.00 sec)5.原表数据也会发生变化
mysql> select * from employee;
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| id | number | name | job | leader_NO | hire_date |salary | bonus | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| 1 | E2018010001 | 吴所为 | 总经理 | NULL | 2018-01-01 |3000.00 | 4000.00 | 9 | D2019060001 |
| 2 | E2018070003 | 韩金龙 | 总经理 | NULL | 2018-07-01 |2800.00 | 4000.00 | 8 | D2019090001 |
| 3 | E2018060002 | 王黎明 | 总经理 | NULL | 2018-06-01 |2800.00 | 4000.00 | 8 | D2019060002 |
| 4 | E2018020002 | 龚爱国 | 总经理 | NULL | 2018-02-01 |2800.00 | 4000.00 | 8 | D2020010001 |
| 5 | E2019050001 | 马金花 | 财务总监 | E2018010001 | 2019-01-01 |3800.00 | 500.00 | 6 | D2019060011 |
| 6 | E2019050018 | 李昌贵 | 财务专员 | E2019050001 | 2019-04-21 |2800.00 | 800.00 | 4 | D2019060011 |
| 7 | E2019100011 | 王建国 | 网络管理员 | E2018010001 | 2019-10-01 |3200.00 | NULL | 5 | D2019060013 |
| 8 | E2019110004 | 黎锦熙 | 网络管理员 | E2019100011 | 2019-11-01 |3200.00 | NULL | 5 | D2019060013 |
| 9 | E2020020023 | 繁茂森 | 销售专员 | E2019060005 | 2020-02-01 |2800.00 | 0.00 | 4 | D2019060014 |
| 10 | E2019060005 | 张善民 | 销售经理 | E2018010001 | 2019-06-01 |2800.00 | 500.00 | 6 | D2019060014 |
| 11 | E2019060009 | 廖云龙 | 技术总监 | E2018010001 | 2019-06-01 |4800.00 | 2000.00 | 7 | D2019060012 |
| 12 | E2019120021 | 刘盛会 | 研发工程师 | E2019060009 | 2019-12-11 |4800.00 | 500.00 | 5 | D2019060012 |
| 13 | E2019020001 | 马明全 | 高级工程师 | E2019060009 | 2019-02-01 |4800.00 | 1000.00 | 6 | D2019060012 |
| 14 | E2019120015 | 李意 | 行政专员 | E2018070003 | 2019-12-20 |2800.00 | 500.00 | 4 | D2019090001 |
| 15 | E2019020017 | 刘六一 | 财务总监 | E2018070003 | 2019-02-16 |3800.00 | 1000.00 | 6 | D2019090011 |
| 16 | E2020020012 | 陈超 | 研发工程师 | E2019060009 | 2020-02-18 |4200.00 | 500.00 | 5 | D2019060012 |
| 17 | 202222222 | 张三 | 程序员 | NULL | NULL |NULL | NULL | 0 | NULL |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
17 rows in set (0.00 sec)6.删除张三
mysql> delete from employee_v_1 where name = "张三";
Query OK, 1 row affected (0.00 sec)7.修改视图--起别名
mysql> alter view employee_v_1 (id,员工号,姓名,工作) as select id,number,name,job from employee;
Query OK, 0 rows affected (0.01 sec)mysql> show tables;
+-------------------+
| Tables_in_dml_lls |
+-------------------+
| department |
| employee |
| employee_v_1 |
| user |
+-------------------+
4 rows in set (0.00 sec)mysql> select * from employee_v_1;
+----+-------------+-----------+-----------------+
| id | 员工号 | 姓名 | 工作 |
+----+-------------+-----------+-----------------+
| 1 | E2018010001 | 吴所为 | 总经理 |
| 2 | E2018070003 | 韩金龙 | 总经理 |
| 3 | E2018060002 | 王黎明 | 总经理 |
| 4 | E2018020002 | 龚爱国 | 总经理 |
| 5 | E2019050001 | 马金花 | 财务总监 |
| 6 | E2019050018 | 李昌贵 | 财务专员 |
| 7 | E2019100011 | 王建国 | 网络管理员 |
| 8 | E2019110004 | 黎锦熙 | 网络管理员 |
| 9 | E2020020023 | 繁茂森 | 销售专员 |
| 10 | E2019060005 | 张善民 | 销售经理 |
| 11 | E2019060009 | 廖云龙 | 技术总监 |
| 12 | E2019120021 | 刘盛会 | 研发工程师 |
| 13 | E2019020001 | 马明全 | 高级工程师 |
| 14 | E2019120015 | 李意 | 行政专员 |
| 15 | E2019020017 | 刘六一 | 财务总监 |
| 16 | E2020020012 | 陈超 | 研发工程师 |
+----+-------------+-----------+-----------------+
16 rows in set (0.00 sec)8.替换/修改视图
mysql> create or replace view employee_v_1 (id,员工号,姓名,职位,入职日期) as select id,number,name,job,hire_date from employee where name = "陈超";
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+-------------------+
| Tables_in_dml_lls |
+-------------------+
| department |
| employee |
| employee_v_1 |
| user |
+-------------------+
4 rows in set (0.00 sec)mysql> select * from employee_v_1;
+----+-------------+--------+-----------------+--------------+
| id | 员工号 | 姓名 | 职位 | 入职日期 |
+----+-------------+--------+-----------------+--------------+
| 16 | E2020020012 | 陈超 | 研发工程师 | 2020-02-18 |
+----+-------------+--------+-----------------+--------------+
1 row in set (0.00 sec)9.删除视图
mysql> drop view employee_v_1
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+-------------------+
| Tables_in_dml_lls |
+-------------------+
| department |
| employee |
| user |
+-------------------+
3 rows in set (0.00 sec)10.删除视图,原表不发生变化
mysql> select * from employee;
+----+-------------+-----------+-----------------+-------------+------------+--
-------+---------+-------+---------------+
| id | number | name | job | leader_NO | hire_date |
salary | bonus | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+--
-------+---------+-------+---------------+
| 1 | E2018010001 | 吴所为 | 总经理 | NULL | 2018-01-01 |3000.00 | 4000.00 | 9 | D2019060001 |
| 2 | E2018070003 | 韩金龙 | 总经理 | NULL | 2018-07-01 |2800.00 | 4000.00 | 8 | D2019090001 |
| 3 | E2018060002 | 王黎明 | 总经理 | NULL | 2018-06-01 |2800.00 | 4000.00 | 8 | D2019060002 |
| 4 | E2018020002 | 龚爱国 | 总经理 | NULL | 2018-02-01 |2800.00 | 4000.00 | 8 | D2020010001 |
| 5 | E2019050001 | 马金花 | 财务总监 | E2018010001 | 2019-01-01 |3800.00 | 500.00 | 6 | D2019060011 |
| 6 | E2019050018 | 李昌贵 | 财务专员 | E2019050001 | 2019-04-21 |2800.00 | 800.00 | 4 | D2019060011 |
| 7 | E2019100011 | 王建国 | 网络管理员 | E2018010001 | 2019-10-01 |3200.00 | NULL | 5 | D2019060013 |
| 8 | E2019110004 | 黎锦熙 | 网络管理员 | E2019100011 | 2019-11-01 |3200.00 | NULL | 5 | D2019060013 |
| 9 | E2020020023 | 繁茂森 | 销售专员 | E2019060005 | 2020-02-01 |2800.00 | 0.00 | 4 | D2019060014 |
| 10 | E2019060005 | 张善民 | 销售经理 | E2018010001 | 2019-06-01 |2800.00 | 500.00 | 6 | D2019060014 |
| 11 | E2019060009 | 廖云龙 | 技术总监 | E2018010001 | 2019-06-01 |4800.00 | 2000.00 | 7 | D2019060012 |
| 12 | E2019120021 | 刘盛会 | 研发工程师 | E2019060009 | 2019-12-11 |4800.00 | 500.00 | 5 | D2019060012 |
| 13 | E2019020001 | 马明全 | 高级工程师 | E2019060009 | 2019-02-01 |4800.00 | 1000.00 | 6 | D2019060012 |
| 14 | E2019120015 | 李意 | 行政专员 | E2018070003 | 2019-12-20 |2800.00 | 500.00 | 4 | D2019090001 |
| 15 | E2019020017 | 刘六一 | 财务总监 | E2018070003 | 2019-02-16 |3800.00 | 1000.00 | 6 | D2019090011 |
| 16 | E2020020012 | 陈超 | 研发工程师 | E2019060009 | 2020-02-18 |4200.00 | 500.00 | 5 | D2019060012 |
+----+-------------+-----------+-----------------+-------------+------------+--
-------+---------+-------+---------------+
16 rows in set (0.00 sec)
11.索引
1.定义
什么是索引?
索引是对数据库一列或者多列的值进行排序的一种结构。索引的建立会大大提高mysql的检索速度。如果想高效的使用mysql,而且数据量大时,需要花费事件去设计索引,建立优秀的索引规则,或优化sql
语句
2.优缺点:
优点:
索引减少了服务器需要扫描的数据量,加快了检索的速度,这就是使用索引的主要原因通过创建唯一索引,可以保证数据表中每一行数据的唯一性索引可以帮助服务器避免排序和创建临时表
缺点:
创建索引和维护索引,需要成本,随着数据量的增加成本需要增加。它会占用物理空间,除了数据表占用的空间外,每一个索引都需要占用一定的物理空间,特别是聚簇索引,更会占用大量空间对数据表数据操作(删除、修改、增加)时,索引需要动态维护,降低了整个维护速度如果具备大量重复数据时,没有建立索引的必要了。对于非常小的表,没有必要!!mysql 5.5及之后的版本,默认使用innodb引擎,因此默认会添加主键索引,底层为B+Tree
3.分类
1.根据底层: 聚簇索引(主键)和非聚簇索引(其他索引)----后续面试时,一定要冲刺这部分聚簇索引按照数据存放的物理位置为顺序---多行检索快非聚簇索引对单行的检索特别快2.根据作用点: 主键索引、唯一索引、单列索引、多列索引、全文索引等等
4.索引的设计原则
1.选择惟一性索引2.为经常需要排序、分组和联合操作的字段建立索引3.为常作为查询条件的字段建立索引4.限制索引的数目5.尽量使用数据量少的索引6.尽量使用前缀来索引7.删除不再使用或者很少使用的索引
5.索引的使用
1. 查询索引
show index from 表名
show index from 表名\G --- 竖着显示详细信息2. 创建索引
create index 索引名 on 表名(字段名) -- 1.创建普通索引 -单列索引
create unique index 索引名 on 表名(字段名) -- 2.创建唯一索引
create index 索引名 on 表名(字段1,字段n) -- 3.多列索引
create fulltext index 索引名 on 表名(字段名(只能为char\varchar\text)) -- 4.全文索引
Create table index6( -- 5.空间索引
Id int,
Space geometry not null,
Spatial index index6_sp(space)
)engine=myisam;
建空间索引时,表的存储引擎必须是myisam类型,而且索引字段必须有非空约束。空间数据类型包括geometry,point,linestring和polygon类型等。平时很少用到。3. 删除索引
drop index 索引名 on 表名4. 执行计划--看索引是否命中
explain 查询sql
EXPLAIN分析结果的含义:
table:这是表的名字。
type:连接操作的类型,ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)
possible_keys:可能可以利用的索引的名字
Key:它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引。
key_len:索引中被使用部分的长度,以字节计。
ref:它显示的是列的名字(或单词“const”),MySQL将根据这些列来选择行
rows:MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1
Extra:这里可能出现许多不同的选项,其中大多数将对查询产生负面影响
1.查看索引
mysql> show index from employee;
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation |Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| employee | 0 | PRIMARY | 1 | id | A |16 | NULL | NULL | | BTREE | | |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)2.查看主键索引的执行计划
mysql> explain select * from employee where id = 10;
+----+-------------+----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key |key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| 1 | SIMPLE | employee | NULL | const | PRIMARY | PRIMARY | 8| const | 1 | 100.00 | NULL |
+----+-------------+----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)3.竖着展示详细信息
mysql> show index from employee\G;
*************************** 1. row ***************************
Table: employee
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 16
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.00 sec)4.创建索引-为name字段
mysql> create index name_index on employee(name);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show index from employee;
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation |Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment
|+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| employee | 0 | PRIMARY | 1 | id | A |16 | NULL | NULL | | BTREE | | |
| employee | 1 | name_index | 1 | name | A |16 | NULL | NULL | YES | BTREE | | |
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)5.查询命中情况
mysql> explain select * from employee where name = "陈超";
+----+-------------+----------+------------+------+---------------+------------
+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key |key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+---------------+------------+---------+-------+------+----------+-------+
| 1 | SIMPLE | employee | NULL | ref | name_index | name_index |203 | const | 1 | 100.00 | NULL |
+----+-------------+----------+------------+------+---------------+------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)6.对比非索引的字段查询情况
mysql> explain select * from employee where job = "研发工程师";
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key |key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+---------------+------+------
---+------+------+----------+-------------+
| 1 | SIMPLE | employee | NULL | ALL | NULL | NULL | NULL| NULL | 17 | 10.00 | Using where |
+----+-------------+----------+------------+------+---------------+------+------
---+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)mysql> show index from employee\G:
*************************** 1. row ***************************
Table: employee
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 16
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: employee
Non_unique: 1
Key_name: name_index
Seq_in_index: 1
Column_name: name
Collation: A
Cardinality: 16
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.00 sec)7.删除索引
mysql> drop index name_index on employee;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
相关文章:
MySQL-----视图与索引
目录 视图 1.视图 2.操作 11.索引 1.定义 2.优缺点: 3.分类 4.索引的设计原则 5.索引的使用 作业 视图 1.视图 ❓如果需要在原表中隐藏部分字段时,怎么办? 视图 📖视图: 是一个没有存储任何数据的表,可以对其CRUD视图…...
【差分隐私相关概念】约束下的列联表边缘分布计算方法
列联表及其边缘分布的详细解释 一、列联表的定义 列联表(Contingency Table) 是一种用于表示 多个分类变量联合分布 的表格。其核心是通过多维数组记录不同属性组合的频次。以下是关键点: 分类属性: 设有 k k k 个分类属性 A …...
解决IDEA中maven找不到依赖项的问题
直接去官网找到对应的依赖项jar包,并且下载到本地,然后安装到本地厂库中。 Maven官网:https://mvnrepository.com/ 一、使用mvn install:install-file命令 Maven提供了install:install-file插件,用于手动将jar包安装到本地仓库…...
pyside6的QGraphicsView体系,当鼠标位于不同的物体,显示不同的右键菜单
代码: # 设置样本图片的QGraphicsView模型 from PySide6.QtCore import Qt, QRectF, QObject from PySide6.QtGui import QPainter, QPen, QColor, QAction, QMouseEvent from PySide6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGra…...
Python自动化测试 之 DrissionPage 的下载、安装、基本使用详解
Python自动化测试 之 DrissionPage 使用详解 🏡前言:一、☀️DrissionPage的基本概述二、 🗺️环境安装2.1 ✅️️运行环境2.2 ✅️️一键安装 三、🗺️快速入门3.1 页面类🛰️ChromiumPage🛫 SessionPage&…...
Java替换jar包中class文件
在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件,重新启动服务即可: 1、将jar包和将要替换的cl…...
unix网络编程
unix网络编程 AI出来以后,软件不可能找到工作的,就算找到了也在走下坡路。再过几年,机器人发展起来,连流水线都找不到。人为什么整体不值钱,每个部位却很值钱。你说我初中辍学就去开直播结局会不会比现在好。 更新in…...
常考计算机操作系统面试习题(一下)
目录 操作系统基本类型 操作系统的功能 操作系统的主要任务 进程与线程 进程状态转变 内存管理 文件系统与文件管理 虚拟存储器 设备管理 磁盘调度 死锁 信号量机制 文件打开与管理 进程与线程的互斥与同步 进程同步 进程调度 文件分配磁盘块的方法 程序执行…...
2025_0321_生活记录
刚刚写完待会儿早上要汇报的文档,看了一眼时间,现在已经是凌晨2点多了。一直说要早睡,但是一直都没做到。。。算了,不苛求自己了。 昨天是春分,春分秋分,昼夜平分。不知不觉就到春天了,但房间里…...
三层网络 (服务器1 和 服务器2 在不同网段)
服务器1 和 服务器2 在不同网段,并且通过三层交换机实现通信 1. 网络拓扑 假设网络拓扑如下: 服务器1: mac0:IP 地址 192.168.1.10/24,网关 192.168.1.1 mac1:IP 地址 10.0.1.10/24,网关 10.0…...
AI Tokenization
AI Tokenization 人工智能分词初步了解 类似现在这个,一格子 一格子,拼接出来的,一行或者一句,像不像,我们人类思考的时候组装出来的话,并用嘴说出来了呢。...
关于大数据的基础知识(四)——大数据的意义与趋势
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(四&a…...
某视频的解密下载
下面讲一下怎么爬取视频,这个还是比小白的稍微有一点绕的 首先打开网址:aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA 首页 看一下: 有一个标题和一个href,href只是一个片段,待会肯定要拼接, 先找一…...
Day20-前端Web案例——部门管理
目录 部门管理1. 前后端分离开发2. 准备工作2.1 创建Vue项目2.2 安装依赖2.3 精简项目 3. 页面布局3.1 介绍3.2 整体布局3.3 左侧菜单 4. Vue Router4.1 介绍4.2 入门4.3 案例4.4 首页制作 5. 部门管理5.1部门列表5.1.1. 基本布局5.1.2 加载数据5.1.3 程序优化 5.2 新增部门5.3…...
从切图仔到鸿蒙开发01-文本样式
从切图仔到鸿蒙开发01-文本样式 本系列教程适合 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。 本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。 页面结构 HTML 与 ArkUI 在 Web 开发中,HTML 文档结…...
菱形虚拟继承的原理
一 :菱形继承的问题 普通的菱形继承存在数据冗余和二义性的问题 ,如下代码: class Person { public:string _name; //姓名 };class Student : public Person { protected:int _num; //学号 };class Teacher : public Person { protected:int…...
【数据结构】C语言实现树和森林的遍历
C语言实现树和森林的遍历 导读一、树的遍历二、森林的遍历2.1 为什么森林没有后序遍历?2.2 森林中存不存在层序遍历?三、C语言实现3.1 准备工作3.2 数据结构的选择3.3 树与森林的创建3.4 树与森林的遍历3.4.1 先根遍历3.4.2 后根遍历3.4.3 森林的遍历3.5 树与森林的销毁3.6 算…...
第四天 开始Unity Shader的学习之旅之Unity中的基础光照
Unity Shader的学习笔记 第四天 开始Unity Shader的学习之旅之Unity中的基础光照 文章目录 Unity Shader的学习笔记前言一、我们是如何看到这个世界的1. 光源2.吸收和散射3.着色 二、标准光照模型1. 自发光2. 高光反射① Phong模型② Blinn-Phong模型 3.漫反射4.环境光 总结 前…...
基于SpringBoot的“社区居民诊疗健康管理系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“社区居民诊疗健康管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统模块功能结构图 局部E-R图 系统首…...
React Native集成到现有原生Android应用
使用React Native(以下简称RN)从头开始制作一个新的应用会是一个非常好的选择。但如果只想给现有的原生应用中添加一两个视图或是业务流程,RN也同样不在话下。只需简单几步,就可以给原有应用加上新的基于RN的特性、画面和视图等。 一、核心概念 把 React Native 组件集成…...
Java-空链基础入门
经过调研和细致观察,我们发现空链对于初次接触或是对Stream和Optional不太熟悉的人来说,确实存在一定的上手难度,宛如开启了“地狱模式”。为了降低这一门槛,我们决定通过一系列由简入深的案例演示,来逐步引导大家掌握…...
【江协科技STM32】Unix时间戳BKP备份寄存器RTC实时时钟(学习笔记)
Unix时间戳 Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量世界上所有时区的秒计数器相同,不同时区通过…...
PCDN网络设备
PCDN(Peer-to-Peer Content Delivery Network,点对点内容分发网络)是一种基于P2P技术的内容分发网络。它利用用户终端设备之间的直接数据传输来减少中心服务器的压力,并提高内容交付的速度和效率。 PCDN的工作原理 节点共享&…...
3.17-3.23 Web3 游戏周报:Pixudi 双榜领跑,The Forgotten Runiverse 登陆三大主机平台
回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【3.17–3.23】Web3 游戏行业动态 Ronin 将与 Alpha Growth 等合作推出 1300 万美元增长计划,以向 DeFi 扩张Notcoin 开发工作室 Open Builders 宣布推出 Not Games …...
AppInventor2生成3位数的水仙花数
生成3位水仙花数(每位数字的立方之和刚好等于这个数字)的代码,如下: 来源:【生成Python】AppInventor2中文网已支持代码块转换Python源码! - App Inventor 2 中文网 - 清泛IT社区,为创新赋能&…...
【聚类算法解析系列02】经典聚类算法(上)——K-Means与层次聚类
【聚类算法解析系列02】经典聚类算法(上)——K-Means与层次聚类 引言:算法背后的认知革命 K-Means与层次聚类,这两个诞生于1960年代的算法,至今仍是工业界使用率最高的聚类工具。它们分别代表了两种根本性的世界观&am…...
shadcn如何给dialog增加关闭按钮和隐藏右上角关闭按钮
增加关闭按钮: <DialogFooter><DialogClose asChild><button className"rounded-sm bg-black/100 px-3 py-2 text-xs font-semibold text-white shadow-xs hover:bg-black/90" >Close</button></DialogClose> </DialogF…...
华为机试牛客刷题之HJ59 找出字符串中第一个只出现一次的字符
HJ59 找出字符串中第一个只出现一次的字符 描述 对于给定的字符串,找出第一个只出现一次的字符。如果不存在,则输出 −1。 输入描述: 在一行上输入一个长度为 1≦len(s)≦10^3 、仅由小写字母构成的字符串 s。 输出描述: 如果存…...
C# 中实现一个线程持续读取,另一个线程负责写入,且写入时读取线程暂停
实现思路 暂停信号:通过 ManualResetEventSlim 通知读取线程暂停。 暂停确认:读取线程收到暂停信号后,发送确认信号。 原子性控制:确保写入操作执行期间,读取线程处于完全暂停状态。 恢复机制:写入完成后…...
[Effective C++]条款22:将成员变量声明为private
. 在C中,将成员变量声明为private而不是public,主要是为了遵循面向对象编程(OOP)的封装原则。他有助于隐藏对象的内部实现细节,提供更好地控制,安全性和可维护性。 1、数据隐藏与封装 将成员变量声明为pr…...
