读SQL学习指南(第3版)笔记10_元数据与大数据

news2024/11/25 20:47:22

1. 元数据

1.1. metadata

1.2. 关于数据的数据

1.3. 数据字典

1.3.1. ⒅与外键关联的数据表/列

1.3.2. ⒄外键列

1.3.3. ⒃外键名

1.3.4. ⒂存储索引的信息

1.3.5. ⒁索引列的排序(升序或降序)

1.3.6. ⒀已索引的列

1.3.7. ⑿索引类型(B树、位图)

1.3.8. ⑾索引名

1.3.9. ⑩主键索引名

1.3.10. ⑨主键名

1.3.11. ⑧主键列

1.3.12. ⑦not null列约束

1.3.13. ⑥列名

1.3.14. ⑤列数据类型

1.3.15. ④列的默认值

1.3.16. ③存储引擎

1.3.17. ②存储数据表的信息(数据表空间、初始大小等)

1.3.18. ①数据表名

1.3.19. 系统编目

1.3.19.1. system catalog

2. information_schema数据库

2.1. 所有可用对象都是视图

2.2. information_schema的特殊模式,在每个数据库中自动提供

2.3. 为了遵循ANSI SQL:2003标准,MySQL 和SQL Server都提供这个接口

2.4. information_schema数据库中的视图是可以被查询的

2.5. information_schema.tables

2.5.1. mysql

-> SELECT table_name, table_type
    -> FROM information_schema.tables
    -> WHERE table_schema = 'sakila'
    -> ORDER BY 1;

2.5.2. 包含了数据表和视图

2.6. information_schema.views

2.6.1. mysql

-> SELECT table_name, is_updatable
    -> FROM information_schema.views
    -> WHERE table_schema = 'sakila'
    -> ORDER BY 1;

2.7. information_schema.columns

2.7.1. mysql

-> SELECT column_name, data_type,
    ->   character_maximum_length char_max_len,
    ->   numeric_precision num_prcsn, numeric_scale num_scale
    -> FROM information_schema.columns
    -> WHERE table_schema = 'sakila' AND table_name = 'film'
    -> ORDER BY ordinal_position;

2.8. information_schema.statistics

2.8.1. mysql

-> SELECT index_name, non_unique, seq_in_index, column_name
    -> FROM information_schema.statistics
    -> WHERE table_schema = 'sakila' AND table_name = 'rental'
    -> ORDER BY 1, 3;

2.8.2. 检索关于数据表的索引信息

2.9. information_schema.table_constraints

2.9.1. mysql

-> SELECT constraint_name, table_name, constraint_type
    -> FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila'
    -> ORDER BY 3,1;

2.9.2. 检索已创建的不同类型的约束(外键、主键、唯一)

3. 使用元数据

3.1. 模式生成脚本

3.1.1. mysql

 -> SELECT 'CREATE TABLE category (' create_table_statement
    -> UNION ALL
    -> SELECT cols.txt
    -> FROM
    ->  (SELECT concat(' ',column_name, ' ', column_type,
    ->    CASE
    ->      WHEN is_nullable = 'NO' THEN ' not null'
    ->      ELSE ''
    ->    END,
    ->    CASE
    ->      WHEN extra IS NOT NULL AND extra LIKE 'DEFAULT_GENERATED%'
    ->        THEN concat(' DEFAULT ',column_default,substr(extra,18))
    ->      WHEN extra IS NOT NULL THEN concat(' ', extra)
    ->      ELSE ''
    ->    END,
    ->    ',') txt
    ->   FROM information_schema.columns
    ->   WHERE table_schema = 'sakila' AND table_name = 'category'
    ->   ORDER BY ordinal_position
    ->  ) cols
    -> UNION ALL
    -> SELECT concat(' constraint primary key (')
    -> FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila' AND table_name = 'category'
    ->   AND constraint_type = 'PRIMARY KEY'
    -> UNION ALL
    -> SELECT cols.txt
    -> FROM
    ->  (SELECT concat(CASE WHEN ordinal_position > 1 THEN ' ,'
    ->     ELSE ' ' END, column_name) txt
    ->   FROM information_schema.key_column_usage
    ->   WHERE table_schema = 'sakila' AND table_name = 'category'
    ->     AND constraint_name = 'PRIMARY'
    ->   ORDER BY ordinal_position
    ->  ) cols
    -> UNION ALL
    -> SELECT ' )'
    -> UNION ALL
    -> SELECT ')';

3.1.2. mysql

-> CREATE TABLE category2 (
    ->   category_id tinyint(3) unsigned not null auto_increment,
    ->   name varchar(25) not null ,
    ->   last_update timestamp not null DEFAULT CURRENT_TIMESTAMP
    ->     on update CURRENT_TIMESTAMP,
    ->   constraint primary key (
    ->     category_id
    ->   )
    -> );

3.2. 验证部署

3.2.1. 查询返回Sakila模式中每个数据表的列数、索引数以及主键约束(0或1)数

3.2.2. mysql

-> SELECT tbl.table_name,
    -> (SELECT count(*) FROM information_schema.columns clm
    ->  WHERE clm.table_schema = tbl.table_schema
    ->    AND clm.table_name = tbl.table_name) num_columns,
    -> (SELECT count(*) FROM information_schema.statistics sta
    ->  WHERE sta.table_schema = tbl.table_schema
    ->    AND sta.table_name = tbl.table_name) num_indexes,
    -> (SELECT count(*) FROM information_schema.table_constraints tc
    ->  WHERE tc.table_schema = tbl.table_schema
    ->    AND tc.table_name = tbl.table_name
    ->    AND tc.constraint_type = 'PRIMARY KEY') num_primary_keys
    -> FROM information_schema.tables tbl
    -> WHERE tbl.table_schema = 'sakila' AND tbl.table_type = 'BASE TABLE'
    -> ORDER BY 1;

3.3. 动态SQL生成

3.3.1. mysql

-> SELECT concat('SELECT ',
    ->   concat_ws(',', cols.col1, cols.col2, cols.col3, cols.col4,
    ->     cols.col5, cols.col6, cols.col7, cols.col8, cols.col9),
    ->   ' FROM customer WHERE customer_id = ?')
    -> INTO @qry
    -> FROM
    ->  (SELECT
    ->     max(CASE WHEN ordinal_position = 1 THEN column_name
    ->       ELSE NULL END) col1,
    ->     max(CASE WHEN ordinal_position = 2 THEN column_name
    ->       ELSE NULL END) col2,
    ->     max(CASE WHEN ordinal_position = 3 THEN column_name
    ->       ELSE NULL END) col3,
    ->     max(CASE WHEN ordinal_position = 4 THEN column_name
    ->       ELSE NULL END) col4,
    ->     max(CASE WHEN ordinal_position = 5 THEN column_name
    ->       ELSE NULL END) col5,
    ->     max(CASE WHEN ordinal_position = 6 THEN column_name
    ->       ELSE NULL END) col6,
    ->     max(CASE WHEN ordinal_position = 7 THEN column_name
    ->       ELSE NULL END) col7,
    ->     max(CASE WHEN ordinal_position = 8 THEN column_name
    ->       ELSE NULL END) col8,
    ->     max(CASE WHEN ordinal_position = 9 THEN column_name
    ->       ELSE NULL END) col9
    ->  FROM information_schema.columns
    ->  WHERE table_schema = 'sakila' AND table_name = 'customer'
    ->  GROUP BY table_name
    -> ) cols;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT @qry;
+--------------------------------------------------------------------+
| @qry                                                               |
+--------------------------------------------------------------------+
| SELECT customer_id,store_id,first_name,last_name,email,
    address_id,active,create_date,last_update
  FROM customer WHERE customer_id = ? |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> PREPARE dynsql3 FROM @qry;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> SET @custid = 45;
Query OK, 0 rows affected (0.00 sec)
mysql> EXECUTE dynsql3 USING @custid;

3.3.2. 使用包含循环结构的过程化语言(比如Java、PL/SQL、Transact-SQL或MySQL的存储过程语言)生成查询的做法更佳

4. 大型数据库

4.1. 现代磁盘阵列可以存储超过4PB的数据

4.2. 云端存储量基本上是无限的

4.2.1. 将服务托管在云端所带来的最大好处之一是即时可扩展性,允许快速提高或降低运行服务所需的计算能力

4.3. 通过分区、集群、分片等策略,企业可以通过将数据分散在多个存储层和服务器上来继续使用关系型数据库

4.4. 在视图中,用户与作为接口而不是实际数据表的模式对象进行交互

5. 分区

5.1. 数据表分区最初是在20世纪90年代后期由Oracle引入的

5.2. 当数据表增长至超过数百万行时,会变得愈加困难和/或耗时的任务

5.2.1. 需要全表扫描的查询

5.2.2. 索引创建/重建

5.2.3. 数据归档/删除

5.2.4. 生成数据表/统计索引信息

5.2.5. 数据表重定位(例如,移动到不同的表空间)

5.2.6. 数据库备份

5.3. 数据表被分区后,会创建出两个或更多的数据表分区

5.4. 每个分区的定义完全相同,但具有不重叠的数据子集

5.5. 一旦数据表被分区,数据表本身就变成了一个虚拟的概念

5.6. 分区保存数据,任何索引都建立在分区数据之上

5.7. 优势

5.7.1. 只需要与一个分区交互,而不再与整个数据表交互

5.7.2. 分区修剪(partition pruning)

5.7.2.1. 服务器会检查数据表的元数据,以确定实际需要包含哪些分区

5.7.3. 分区连接(partitionwise join)

5.7.3.1. 只有那些包含查询所需数据的分区才会被包含在内

5.7.4. 能够快速删除不再需要的数据

5.7.4.1. 财务数据可能需要在线保存7年,如果数据表已根据事务日期进行分区,就可以撤销数据保存时长超过7年的分区

5.7.5. 能够同时更新多个分区,这可以大大减少数据表中每行所需的处理时间

5.8. 管理特性

5.8.1. 分区可以存储在不同的表空间中,表空间可以位于不同的物理存储层

5.8.2. 可以使用不同的压缩方案来压缩分区

5.8.3. 可以撤销某些分区的本地索引

5.8.4. 可以在某些分区上冻结数据表的统计信息,同时在其他分区上定期刷新

5.8.5. 单个分区可以固定在内存中或存储在数据库的闪存存储层中

5.9. 数据表分区

5.9.1. 水平分区

5.9.1.1. 将整行分配给一个分区

5.9.2. 垂直分区

5.9.2.1. 将列集分配给不同的分区,但必须手动完成

5.10. 索引分区

5.10.1. 全局索引

5.10.1.1. 如果经过分区的数据表有索引,可以选择特定的索引保持原样

5.10.1.2. 跨越数据表的所有分区,对于没有指定分区键值的查询很有用

5.10.2. 局部索引

5.10.2.1. 划分成几个部分,使每个分区有自己的索引

5.11. 分区方法

5.11.1. 范围分区

5.11.1.1. range partitioning

5.11.1.2. 第一种被实现的分区方法

5.11.1.3. 使用最广泛的方法

5.11.1.4. 允许一个maxvalue分区捕获任何没有映射到其他分区的行

5.11.1.5. mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY RANGE (yearweek(sale_date))
    ->  (PARTITION s1 VALUES LESS THAN (202002),
    ->   PARTITION s2 VALUES LESS THAN (202003),
    ->   PARTITION s3 VALUES LESS THAN (202004),
    ->   PARTITION s4 VALUES LESS THAN (202005),
    ->   PARTITION s5 VALUES LESS THAN (202006),
    ->   PARTITION s999 VALUES LESS THAN (MAXVALUE)
    ->  );

5.11.1.6. sql

ALTER TABLE sales REORGANIZE PARTITION s999 INTO
 (PARTITION s6 VALUES LESS THAN (202007),
  PARTITION s7 VALUES LESS THAN (202008),
  PARTITION s999 VALUES LESS THAN (MAXVALUE)
 );

5.11.1.7. 使用information_schema数据库中的partitions数据表

5.11.1.8. mysql

-> SELECT partition_name, partition_method, partition_expression
    -> FROM information_schema.partitions
    -> WHERE table_name = 'sales'
    -> ORDER BY partition_ordinal_position;

5.11.2. 列表分区

5.11.2.1. 选择作为分区键的列包含州编码(例如CA、TX、VA等)、货币(例如USD、EUR、JPY等)或其他一些枚举值集

5.11.2.2. 它允许指定将哪些值分配给各个分区

5.11.2.3. 不提供溢出分区(spillover partition)

5.11.2.3.1. 添加另一个列值,就得修改分区定义,然后才能将包含新值的行添加到数据表中

5.11.2.4. mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   geo_region_cd VARCHAR(6) NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY LIST COLUMNS (geo_region_cd)
    ->  (PARTITION NORTHAMERICA VALUES IN ('US_NE','US_SE','US_MW',
    ->                                     'US_NW','US_SW','CAN','MEX'),
    ->   PARTITION EUROPE VALUES IN ('EUR_E','EUR_W'),
    ->   PARTITION ASIA VALUES IN ('CHN','JPN','IND')
    -> );

5.11.2.5. mysql

-> ALTER TABLE sales REORGANIZE PARTITION ASIA INTO
    -> (PARTITION ASIA VALUES IN ('CHN','JPN','IND', 'KOR'));

5.11.3. 哈希分区

5.11.3.1. hash partition

5.11.3.2. 尽力将行均匀地分布在一组分区中

5.11.3.3. 不同于列表分区(选择作为分区键的列应该包含少量值),哈希分区的分区键列在包含大量不同值时效果最佳

5.11.3.4. mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY HASH (cust_id)
    ->   PARTITIONS 4
    ->    (PARTITION H1,
    ->     PARTITION H2,
    ->     PARTITION H3,
    ->     PARTITION H4
    ->    );

5.11.4. 复合分区

5.11.4.1. composite partition

5.11.4.2. 允许对同一个数据表使用两种不同类型的分区

5.11.4.2.1. 第一种分区方法定义了分区
5.11.4.2.2. 第二种分区方法定义了子分区

5.11.4.3. mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY RANGE (yearweek(sale_date))
    -> SUBPARTITION Y HASH (cust_id)
    ->  (PARTITION s1 VALUES LESS THAN (202002)
    ->     (SUBPARTITION s1_h1,
    ->      SUBPARTITION s1_h2,
    ->      SUBPARTITION s1_h3,
    ->      SUBPARTITION s1_h4),
    ->   PARTITION s2 VALUES LESS THAN (202003)
    ->     (SUBPARTITION s2_h1,
    ->      SUBPARTITION s2_h2,
    ->      SUBPARTITION s2_h3,
    ->      SUBPARTITION s2_h4),
    ->   PARTITION s3 VALUES LESS THAN (202004)
    ->     (SUBPARTITION s3_h1,
    ->      SUBPARTITION s3_h2,
    ->      SUBPARTITION s3_h3,
    ->      SUBPARTITION s3_h4),
    ->   PARTITION s4 VALUES LESS THAN (202005)
    ->     (SUBPARTITION s4_h1,
    ->      SUBPARTITION s4_h2,
    ->      SUBPARTITION s4_h3,
    ->      SUBPARTITION s4_h4),
    ->   PARTITION s5 VALUES LESS THAN (202006)
    ->     (SUBPARTITION s5_h1,
    ->      SUBPARTITION s5_h2,
    ->      SUBPARTITION s5_h3,
    ->      SUBPARTITION s5_h4),
    ->   PARTITION s999 VALUES LESS THAN (MAXVALUE)
    ->     (SUBPARTITION s999_h1,
    ->      SUBPARTITION s999_h2,
    ->      SUBPARTITION s999_h3,
    ->      SUBPARTITION s999_h4)
    ->  );

6. 集群

6.1. clustering

6.2. 允许将多个服务器用作单个数据库

6.3. 共享磁盘/共享缓存的配置

6.3.1. shared-disk/shared-cache configuration

6.3.2. 集群中的每个服务器都可以访问所有磁盘,缓存在一个服务器中的数据可以被集群中的其他服务器访问

6.4. Oracle Exadata平台托管可供数千个并发用户访问的超大型数据库

6.4.1. 该平台仍无法满足更大型公司的需求,这导致Google、Facebook、Amazon等公司另辟新径

7. 分片

7.1. 对单个数据表和整个数据库进行分区

7.2. 跨多个数据库对数据进行分区,类似于数据表分区,但规模更大,复杂性也高得多

7.3. 需要选择一个分片键,用于决定连接到哪个数据库

7.4. 单独的行分配给单个分片,但较小的参考表可能需要复制到所有分片上,同时还要定义相应的策略,以决定如何修改参考数据并将改动传播给所有分片

7.5. 如果单个分片变得过大(例如社交媒体公司现在拥有了20亿用户),就需要计划添加更多的分片并将数据重新分布在分片中

7.6. 当需要变更模式时,要定义相应的策略,用于在所有分片上部署变更,以便模式保持同步

7.7. 如果应用程序逻辑需要访问存储在多个分片中的数据,要定义相应的策略,以决定如何跨数据库查询以及如何实现跨数据库事务

8. 大数据

8.1. 容量(Volume)

8.1.1. 常意味着数十亿或数万亿数据点

8.2. 速度(Velocity)

8.2.1. 对数据到达速度的一种衡量

8.3. 多样性(Variety)

8.3.1. 文档数据库属于所谓的NoSQL数据库的子集,通常使用简单的“键-值”机制存储数据

8.3.2. MongoDB是用于文档存储的一种比较流行的NoSQL平台

8.4. Hadoop分布式文件系统

8.4.1. Hadoop Distributed File System,HDFS

8.4.2. HDFS允许跨很多个服务器管理文件

8.5. MapReduce

8.5.1. 该技术通过将任务分解为可以在多个服务器上并行运行的许多细小部分来处理大量结构化数据和非结构化数据

8.6. YARN

8.6.1. 用于HDFS的资源管理器和作业调度器

8.7. 允许像单一逻辑系统那样在数百甚至数千台服务器上存储和处理文件

8.8. Hive

8.8.1. 允许用户查询存储在Hadoop中数据的初期尝试之一

8.9. Spark SQL

8.9.1. 一个库,用于查询以各种格式存储在Spark中的数据

9. Presto

10. Toad Data Point

11. Apache Drill

11.1. 初现于2015年

11.2. 更像是一个抽象层,促进了跨各种数据库平台的数据分析

11.3. 特性

11.3.1. 促进跨多种数据格式的查询,包括分隔数据、JSON、Parquet和日志文件

11.3.2. 连接到关系型数据库、Hadoop、NoSQL、HBase、Kafka,以及PCAP、BlockChain等专用数据格式

11.3.3. 允许创建自定义插件,以连接到大多数其他数据存储

11.3.4. 不需要前期的模式定义

11.3.5. 支持SQL:2003标准

11.3.6. 可与Tableau、Apache Superset等流行的商业智能(business intelligence,BI)工具配合使用

11.3.7. 可以连接到任意数量的数据源进行查询,无须先设置元数据仓库

11.4. 查询文件

11.4.1. sql

apache drill> SELECT file_name, is_directory, is_file, permission
. . . . . . > FROM information_schema.`files`
. . . . . . > WHERE schema_name = 'dfs.data';

11.5. 查询MySQL

11.5.1. apache drill (information_schema)> use mysql.sakila;

11.5.2. apache drill (mysql.sakila)> show tables;

11.5.3. apache drill (mysql.sakila)

)> SELECT a.address_id, a.address, ct.city
)> FROM address a
)>   INNER JOIN city ct
)>   ON a.city_id = ct.city_id
)> WHERE a.district = 'California';

11.6. 查询MongoDB

11.6.1. apache drill (mongo.sakila)

)> SELECT Rating, Actors
)> FROM films
)> WHERE Rating IN ('G','PG');

11.7. 处理多个数据源

11.7.1. 在同一个查询中组合多个来源的数据,而无须将一个来源的数据转换并加载到另一个来源

11.7.2. apache drill (mongo.sakila)

)> SELECT first_name, last_name,
)>   sum(cast(cust_payments.payment_data.Amount
)>         as decimal(4,2))) tot_payments
)> FROM
)>  (SELECT cust_data.first_name,
)>     cust_data.last_name,
)>     f.Rating,
)>     flatten(cust_data.rental_data.Payments)
)>       payment_data
)>   FROM mysql.sakila.film f
)>     INNER JOIN
)>    (SELECT c.`First Name` first_name,
)>       c.`Last Name` last_name,
)>       flatten(c.Rentals) rental_data
)>     FROM mongo.sakila.customers c
)>    ) cust_data
)>     ON f.film_id =
)>       cast(cust_data.rental_data.filmID as integer)
)>   WHERE f.rating IN ('G','PG')
)>  ) cust_payments
)> GROUP BY first_name, last_name
)> HAVING
)>   sum(cast(cust_payments.payment_data.Amount
)>         as decimal(4,2))) > 80;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/969927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSDN的好处

社区交流:CSDN是一个广大的程序员社区,有很多技术大牛和优秀开发者,可以在这里进行技术交流和讨论,获取最新的技术动态和资源。 学习资源:CSDN上有很多高质量的技术文章、教程和视频资源,可以帮助程序员不…

2023-9-3 筛质数

题目链接&#xff1a;筛质数 埃氏筛法 #include <iostream>using namespace std;const int N 1000010;int cnt; bool st[N];bool get_primes(int n) {for(int i 2; i < n; i ){if(!st[i]){cnt ;for(int j i i; j < n; j i) st[j] true;}} }int main() {int …

linux深入理解多进程间通信

1.进程间通信 1.1 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件…

AUTOSAR规范与ECU软件开发(实践篇)7.11 MCAL配置验证与代码生成

在配置完所需MCAL模块之后&#xff0c; 就可以进行配置验证与代码生成。MCAL配置工具的工具栏如图7.64所示。 其中&#xff0c; 右起第二个按钮为“Verify selected project”&#xff0c; 点击之后将进行配置验证。 右起第一个按钮为“Generate Code for the currently select…

小小一个设置程序高级感拉满

手动设置 结果如下 代码设置&#xff1a; procedure TForm1.Button1Click(Sender: TObject); begin TStyleManager.TrySetStyle(cbxVclStyles.Text); end;procedure TForm1.FormCreate(Sender: TObject); var StyleName:string; begin for StyleName in TStyleManager.StyleNa…

查询优化器内核剖析之从一个实例看执行计划

学习查询优化器不是我们的目的&#xff0c;而是通过 它&#xff0c;我们掌握 SQL Server 是如何处理我们的 SQL 的&#xff0c;掌握执行计划&#xff0c;掌握为什么产生 I/O 问题&#xff0c; 为什么 CPU 使用老高&#xff0c;为什么你的索引加了不起作用... 如果&#xff0c;…

数学建模--整数规划匈牙利算法的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 #整数规划模型--匈牙利算法求解 """ 整数规划模型及概念&#xff1a;规划问题的数学模型一般由三个因素构成 决策变量 目标函数 约束条件&#xff1b;线性规划即以线性函数为目标函数&a…

Python开源项目月排行 2023年8月

#2023年8月2023年9月2日1facechain一款可以用于打造个人数字形象的深度学习模型工具。用户只需提供最低三张照片即可获得独属于自己的个人形象数字替身。FaceChain 支持在梯度的界面中使用模型训练和推理能力&#xff0c;也支持资深开发者使用 python 脚本进行训练推理。2Qwen-…

CXL寄存器介绍(3)- CXL MMIO

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

【SpringSecurity】六、基于数据库的认证与授权

文章目录 1、数据库表设计2、测试代码准备3、新建安全用户类4、实现UserDetailsService接口5、授权 1、数据库表设计 接下来基于数据库里的用户信息进行登录认证&#xff0c;以RBAC设计表&#xff0c;分别为&#xff1a; 用户表sys_user &#xff1a;除了基本信息外&#xff…

pytorch(b站小土堆学习笔记P1-P15)

P3. Python学习中的两大法宝函数&#xff08;当然也可以用在PyTorch&#xff09; import torch#查看pytorch有哪些指令 print(dir(torch)) print(dir(torch.cuda)) #查看每条指令怎么用 help(torch.cuda.is_available) P4. PyCharm及Jupyter使用及对比 P5 dataset和dataloade…

肖sir__设计测试用例方法之场景法04_(黑盒测试)

设计测试用例方法之场景法 1、场景法主要是针对测试场景类型的&#xff0c;顾也称场景流程分析法。 2、流程分析是将软件系统的某个流程看成路径&#xff0c;用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合&#xff0c;使得流程的各个分支能走到。 举例说明&…

Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(区间dp)

题目 给定长为n(n<1e4)的数组&#xff0c;第i个数为ai(0<ai<2的60次方) 初始时&#xff0c;区间为[1,n]&#xff0c;也即l1&#xff0c;rn&#xff0c; 你可以在[l,r)中指定一个k&#xff0c;将区间分成左半边[l,k]、右半边[k1,r] 1. 如果左半边异或和与异或和的异…

肖sir__设计测试用例方法之判定表06_(黑盒测试)

设计测试用例方法之判定表 1、判定表&#xff1a;是一种表达逻辑判断的工具。 2、判定表&#xff1a;包含四部分 1&#xff09;条件桩&#xff08;condition stub&#xff09;:列出问题的 所有条件&#xff08;通常条件次序无关紧要&#xff09;。 2&#xff09;条件项&#x…

面试官:介绍一下CSS定位?absolute和relative分别依据什么定位?

能说服一个人的&#xff0c;从来不是道理&#xff0c;而是南墙。 一、position属性介绍 取值名称效果static静态定位(默认值)元素按照标准流布局 (不脱标) , top、bottom、left 、right等属性不起作用relative相对定位元素按照标准流布局 (不脱标) &#xff0c;可以通过top、b…

Medium:做AB test需要多少时间?

文章链接&#xff1a;https://medium.com/alfredcamera/%E5%81%9A-ab-test-%E9%9C%80%E8%A6%81%E5%A4%9A%E5%B0%91%E6%99%82%E9%96%93-c401fbe00eb0 其中&#xff0c;最关键的是确定&#xff1a;总共需要多少样本数量。由以下2个指标决定&#xff1a; 由工具得到&#xff1a; 特…

监听器Listener -,钝化,活化,利用监听器实现简易版 统计网站在线用户功能

监听绑定到HttpSession域中某个对象状态 1.HttpSessionBindingListener 实体类 package com.etime.enetity;import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener;//此处需要实现HttpSessionBindingListener接口&…

使用MDK5的一些偏僻使用方法和谋个功能的作用

程序下载后无法运行 需要勾选如下库&#xff0c;是优化后的库&#xff1b; MicroLib和标准C库之间的主要区别是: 1、MicroLib是专为深度嵌入式应用程序而设计的。 2、MicroLib经过优化&#xff0c;比使用ARM标准库使用更少的代码和数据内存。 3、MicroLib被设计成在没有操作…

科技成果鉴定之鉴定测试报告

鉴定测试 由于软件类科技成果的复杂、内部结构难以鉴别等特点&#xff0c;我们提供了软件类科技成果鉴定测试服务。软件类科技成果鉴定测试是依据其科研项目计划任务书或技术合同书&#xff0c;参照相应的国家标准对要申请鉴定的软件类科技成果进行的一种符合性测试&#xff0…

【100天精通Python】Day51:Python 数据分析_数据分析入门基础与Anaconda 环境搭建

目录 1 科学计算和数据分析概述 2. 数据收集和准备 2.1 数据收集 2.1.1 文件导入&#xff1a; 2.1.2 数据库连接&#xff1a; 2.1.3 API请求&#xff1a; 2.1.4 网络爬虫&#xff1a; 2.2 数据清洗 2.2.1 处理缺失值&#xff1a; 2.2.2 去除重复值&#xff1a; 2.2…