- 浏览: 562922 次
- 性别:
- 来自: 北京
最新评论
-
anqinghaozi:
请问 你这weblogic jms 如何部署到tomcat上去 ...
Spring+weblogic接收JMS消息 -
cjliang:
1456746014@qq.com 我也要
jqGrid学习 ----------------- 第一个实例 -
Moy_Yeung:
Moy_Yeung 写道 您好 我最近在学习使用这个插件 能麻 ...
jqGrid学习 ----------------- 第一个实例 -
Moy_Yeung:
您好 我最近在学习使用这个插件 能麻烦博主发份demo吗 谢 ...
jqGrid学习 ----------------- 第一个实例 -
十叶木竹:
最近在自学这个插件,麻烦博主,发一份源码,以供学习,谢谢博主啦 ...
jqGrid学习 ----------------- 第一个实例
一般情况下,nested loop驱动行源应该选择小表,或者行数少的行源,但有时候也不一定。我们来看一个使用大表做驱动行源的例子。
1. 创建测试环境
大表test_big,小表test_small,二者通过test_big.object_id=test_small.object_id来关联。其中大表的object_id中会有重复记录,而小表中的object_id是唯一的,两个列上都有索引。
C:\Documents and Settings\yuechao.tianyc>sqlplus test/test
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 3月 29 22:37:13 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create table test_big as select * from dba_objects;
表已创建。
SQL> insert into test_big select * from test_big;
已创建50000行。
SQL> /
已创建100000行。
...
SQL> /
已创建6400000行。
SQL> commit;
提交完成。
SQL> create table test_small as select * from dba_objects where rownum < 5001;
表已创建。
SQL> create index ind_test_big on test_big(object_id);
索引已创建。
SQL> create index ind_test_small on test_small(object_id);
索引已创建。
2. 获取执行计划
分别使用大表和小表作为驱动行源,先看一下它们的执行计划:
-- 1. 使用test_big作为驱动行源
-- 执行步骤:(1)全表扫描test_big,得到行源A;(2)将A作为驱动行源,嵌套循环连接索引ind_test_small,得到行源B;(3)将行源B通过索引ind_test_small与表test_small关联,得到结果集。
SQL> explain plan for
2 select/*+ordered use_nl(test_big,test_small)*/ count(test_big.object_name||test_small.object_name)
3 from test_big, test_small where test_big.object_id = test_small.object_id;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Plan hash value: 3591390207
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 158 | 15M (1)| 53:19:22 |
| 1 | SORT AGGREGATE | | 1 | 158 | | |
| 2 | TABLE ACCESS BY INDEX ROWID| TEST_SMALL | 1 | 79 | 2 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 1247K| 187M| 15M (1)| 53:19:22 |
| 4 | TABLE ACCESS FULL | TEST_BIG | 14M| 1106M| 39134 (2)| 00:07:50 |
|* 5 | INDEX RANGE SCAN | IND_TEST_SMALL | 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("test_big"."OBJECT_ID"="test_small"."OBJECT_ID")
Note
-----
- dynamic sampling used for this statement
已选择21行。
-- 2. 使用test_small作为驱动行源
-- 执行步骤:(1)全表扫描test_small,得到行源A;(2)将A作为驱动行源,嵌套循环连接索引ind_test_big,得到行源B;(3)将行源B通过索引ind_test_big与表test_big关联,得到结果集。
SQL> explain plan for
2 select/*+ordered use_nl(test_big,test_small)*/ count(test_big.object_name||test_small.object_name)
3 from test_small, test_big where test_big.object_id = test_small.object_id;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Plan hash value: 1952886871
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 158 | 1098K (1)| 03:39:42 |
| 1 | SORT AGGREGATE | | 1 | 158 | | |
| 2 | TABLE ACCESS BY INDEX ROWID| TEST_BIG | 257 | 20303 | 226 (0)| 00:00:03 |
| 3 | NESTED LOOPS | | 1247K| 187M| 1098K (1)| 03:39:42 |
| 4 | TABLE ACCESS FULL | TEST_SMALL | 4854 | 374K| 17 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | IND_TEST_BIG | 257 | | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("test_big"."OBJECT_ID"="test_small"."OBJECT_ID")
Note
-----
- dynamic sampling used for this statement
已选择21行。
3. 比较执行时间
比较上面两个不同的执行计划。看起来使用表test_small作为驱动行源更合理一些,它只有50001行,而表test_big有12800000行数据。而实际却不是这样,我们看一下他们各自的执行时间:
SQL> set timing on
-- 使用大表作为驱动行源
SQL> select/*+ordered use_nl(test_big,test_small)*/ count(test_big.object_name||test_small.object_name)
2 from test_big, test_small where test_big.object_id = test_small.object_id;
COUNT(TEST1.OBJECT_NAME||TEST2.OBJECT_NAME)
-------------------------------------------
12800000
已用时间: 00: 00: 36.70
-- 使用小表作为驱动行源
SQL> select/*+ordered use_nl(test1,test2)*/ count(test1.object_name||test2.object_name)
2 from test2, test1 where test1.object_id = test2.object_id;
COUNT(TEST1.OBJECT_NAME||TEST2.OBJECT_NAME)
-------------------------------------------
12800000
已用时间: 00: 02: 42.89
我们看到,使用大表作为驱动行源,耗时约36.7秒;而使用小表作为驱动行源,耗时达到2分42.89秒!
4. 原因
其实原因就在与大表的列object_id中有很多重复记录,当使用小表作为驱动行源时,全表扫描test_small的时间虽然很快,但对于test_small中的每一条记录,都对应test_big中的若干条记录,那么就需要根据查到的这些rowid,进行若干次的磁盘I/O来获得大表对应的数据。这里频繁的磁盘I/O就是问题的原因。因为test_big数据量很大,数据不可能存储在内存中。
而当使用大表作为驱动行源时,全表扫描test_big的时间虽然比较长,但每条记录都对应test_small中的一条记录,而且表test_small比较小,其数据及索引数据可以从内存中直接找到。这样耗费的时间就主要是全表扫描test_big的时间了,而这耗费不了太多的时间。在下面的测试中,只耗费了26.14秒:
SQL> select count(*) from test_big;
COUNT(*)
----------
12800000
已用时间: 00: 00: 26.14
SQL> set timing off
SQL> explain plan for
2 select count(*) from test_big;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Plan hash value: 3224830981
-----------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 38982 (2)| 00:07:48 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| TEST_BIG | 14M| 38982 (2)| 00:07:48 |
-----------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
已选择13行。
5. 备注
这里只是一个小测试,来说明nested loop中,驱动行源的选择要根据实际情况而定,不是一成不变的。其实这个SQL使用hash join是最快的:
SQL> explain plan for
2 select count(test_big.object_name||test_small.object_name)
3 from test_big, test_small where test_big.object_id = test_small.object_id;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Plan hash value: 1810242240
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 158 | 39404 (3)| 00:07:53 |
| 1 | SORT AGGREGATE | | 1 | 158 | | |
|* 2 | HASH JOIN | | 1247K| 187M| 39404 (3)| 00:07:53 |
| 3 | TABLE ACCESS FULL| TEST_SMALL | 4854 | 374K| 17 (0)| 00:00:01 |
| 4 | TABLE ACCESS FULL| TEST_BIG | 14M| 1106M| 39134 (2)| 00:07:50 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("TEST_BIG"."OBJECT_ID"="TEST_SMALL"."OBJECT_ID")
Note
-----
- dynamic sampling used for this statement
已选择20行。
SQL> set timing on
SQL> select count(test_big.object_name||test_small.object_name)
2 from test_big, test_small where test_big.object_id = test_small.object_id;
COUNT(TEST_BIG.OBJECT_NAME||TEST_SMALL.OBJECT_NAME)
---------------------------------------------------
1280000
已用时间: 00: 00: 21.42
1. 创建测试环境
大表test_big,小表test_small,二者通过test_big.object_id=test_small.object_id来关联。其中大表的object_id中会有重复记录,而小表中的object_id是唯一的,两个列上都有索引。
C:\Documents and Settings\yuechao.tianyc>sqlplus test/test
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 3月 29 22:37:13 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create table test_big as select * from dba_objects;
表已创建。
SQL> insert into test_big select * from test_big;
已创建50000行。
SQL> /
已创建100000行。
...
SQL> /
已创建6400000行。
SQL> commit;
提交完成。
SQL> create table test_small as select * from dba_objects where rownum < 5001;
表已创建。
SQL> create index ind_test_big on test_big(object_id);
索引已创建。
SQL> create index ind_test_small on test_small(object_id);
索引已创建。
2. 获取执行计划
分别使用大表和小表作为驱动行源,先看一下它们的执行计划:
-- 1. 使用test_big作为驱动行源
-- 执行步骤:(1)全表扫描test_big,得到行源A;(2)将A作为驱动行源,嵌套循环连接索引ind_test_small,得到行源B;(3)将行源B通过索引ind_test_small与表test_small关联,得到结果集。
SQL> explain plan for
2 select/*+ordered use_nl(test_big,test_small)*/ count(test_big.object_name||test_small.object_name)
3 from test_big, test_small where test_big.object_id = test_small.object_id;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Plan hash value: 3591390207
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 158 | 15M (1)| 53:19:22 |
| 1 | SORT AGGREGATE | | 1 | 158 | | |
| 2 | TABLE ACCESS BY INDEX ROWID| TEST_SMALL | 1 | 79 | 2 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 1247K| 187M| 15M (1)| 53:19:22 |
| 4 | TABLE ACCESS FULL | TEST_BIG | 14M| 1106M| 39134 (2)| 00:07:50 |
|* 5 | INDEX RANGE SCAN | IND_TEST_SMALL | 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("test_big"."OBJECT_ID"="test_small"."OBJECT_ID")
Note
-----
- dynamic sampling used for this statement
已选择21行。
-- 2. 使用test_small作为驱动行源
-- 执行步骤:(1)全表扫描test_small,得到行源A;(2)将A作为驱动行源,嵌套循环连接索引ind_test_big,得到行源B;(3)将行源B通过索引ind_test_big与表test_big关联,得到结果集。
SQL> explain plan for
2 select/*+ordered use_nl(test_big,test_small)*/ count(test_big.object_name||test_small.object_name)
3 from test_small, test_big where test_big.object_id = test_small.object_id;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Plan hash value: 1952886871
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 158 | 1098K (1)| 03:39:42 |
| 1 | SORT AGGREGATE | | 1 | 158 | | |
| 2 | TABLE ACCESS BY INDEX ROWID| TEST_BIG | 257 | 20303 | 226 (0)| 00:00:03 |
| 3 | NESTED LOOPS | | 1247K| 187M| 1098K (1)| 03:39:42 |
| 4 | TABLE ACCESS FULL | TEST_SMALL | 4854 | 374K| 17 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | IND_TEST_BIG | 257 | | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("test_big"."OBJECT_ID"="test_small"."OBJECT_ID")
Note
-----
- dynamic sampling used for this statement
已选择21行。
3. 比较执行时间
比较上面两个不同的执行计划。看起来使用表test_small作为驱动行源更合理一些,它只有50001行,而表test_big有12800000行数据。而实际却不是这样,我们看一下他们各自的执行时间:
SQL> set timing on
-- 使用大表作为驱动行源
SQL> select/*+ordered use_nl(test_big,test_small)*/ count(test_big.object_name||test_small.object_name)
2 from test_big, test_small where test_big.object_id = test_small.object_id;
COUNT(TEST1.OBJECT_NAME||TEST2.OBJECT_NAME)
-------------------------------------------
12800000
已用时间: 00: 00: 36.70
-- 使用小表作为驱动行源
SQL> select/*+ordered use_nl(test1,test2)*/ count(test1.object_name||test2.object_name)
2 from test2, test1 where test1.object_id = test2.object_id;
COUNT(TEST1.OBJECT_NAME||TEST2.OBJECT_NAME)
-------------------------------------------
12800000
已用时间: 00: 02: 42.89
我们看到,使用大表作为驱动行源,耗时约36.7秒;而使用小表作为驱动行源,耗时达到2分42.89秒!
4. 原因
其实原因就在与大表的列object_id中有很多重复记录,当使用小表作为驱动行源时,全表扫描test_small的时间虽然很快,但对于test_small中的每一条记录,都对应test_big中的若干条记录,那么就需要根据查到的这些rowid,进行若干次的磁盘I/O来获得大表对应的数据。这里频繁的磁盘I/O就是问题的原因。因为test_big数据量很大,数据不可能存储在内存中。
而当使用大表作为驱动行源时,全表扫描test_big的时间虽然比较长,但每条记录都对应test_small中的一条记录,而且表test_small比较小,其数据及索引数据可以从内存中直接找到。这样耗费的时间就主要是全表扫描test_big的时间了,而这耗费不了太多的时间。在下面的测试中,只耗费了26.14秒:
SQL> select count(*) from test_big;
COUNT(*)
----------
12800000
已用时间: 00: 00: 26.14
SQL> set timing off
SQL> explain plan for
2 select count(*) from test_big;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Plan hash value: 3224830981
-----------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 38982 (2)| 00:07:48 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| TEST_BIG | 14M| 38982 (2)| 00:07:48 |
-----------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
已选择13行。
5. 备注
这里只是一个小测试,来说明nested loop中,驱动行源的选择要根据实际情况而定,不是一成不变的。其实这个SQL使用hash join是最快的:
SQL> explain plan for
2 select count(test_big.object_name||test_small.object_name)
3 from test_big, test_small where test_big.object_id = test_small.object_id;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Plan hash value: 1810242240
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 158 | 39404 (3)| 00:07:53 |
| 1 | SORT AGGREGATE | | 1 | 158 | | |
|* 2 | HASH JOIN | | 1247K| 187M| 39404 (3)| 00:07:53 |
| 3 | TABLE ACCESS FULL| TEST_SMALL | 4854 | 374K| 17 (0)| 00:00:01 |
| 4 | TABLE ACCESS FULL| TEST_BIG | 14M| 1106M| 39134 (2)| 00:07:50 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("TEST_BIG"."OBJECT_ID"="TEST_SMALL"."OBJECT_ID")
Note
-----
- dynamic sampling used for this statement
已选择20行。
SQL> set timing on
SQL> select count(test_big.object_name||test_small.object_name)
2 from test_big, test_small where test_big.object_id = test_small.object_id;
COUNT(TEST_BIG.OBJECT_NAME||TEST_SMALL.OBJECT_NAME)
---------------------------------------------------
1280000
已用时间: 00: 00: 21.42
发表评论
-
python学习摘要
2011-04-18 15:27 1409学习一门脚本语言是很 ... -
tmux快捷键
2011-04-16 07:39 1558摘要 http://rainbird.blog.51cto.c ... -
eclipse subclipse javahl 库加载错误
2011-04-13 17:31 2387网上搜集 http://islandlinux.org/how ... -
使用Msmtp mutt shell发邮件 (转)
2010-11-26 09:32 2842原文地址:http://fdsazi.blog.51cto.c ... -
Ubuntu10.0.4 Maven环境变量设置
2010-08-15 14:02 34711. 下载并解压缩apache-maven-2.2.1-bin ... -
Ubuntu10.0.4 Java环境变量设置
2010-08-15 14:00 4069Ubuntu10.0.4 下手工安装jdk及其环境变量设置 ... -
Managing Hierarchical Data in MySQL(转)
2010-07-09 10:01 1186http://dev.mysql.com/tech-resou ... -
JS的encode跟decode
2010-05-21 16:03 10639网上看到的,感觉能用得到,收藏下吧 /** * * URL ... -
Apache ActiveMQ
2009-12-25 15:46 3434一、特点 支持各种语言和协议的客户端。如:Java、C、C++ ... -
mysql数据的备份恢复命令
2009-12-14 15:37 1323记录下命令,害怕忘记! 导出整个数据库命令: D:\mys ... -
Struts2.18 的 interceptor
2009-12-08 08:20 3036首先定义我们自己的Interceptor package ... -
修改非安装版本mysql字符集
2009-12-08 08:08 1918如果我们的msyql是免安装版本,在windows系统下,my ... -
jqGrid学习 --------------自定义搜索
2009-12-06 15:45 15315定义自己的查询 <div id="myse ... -
jqGrid学习 -------------- 搜索工具栏
2009-12-06 15:13 13096搜索工具栏只是在列标题下面构造一个输入框。且使用表格的url进 ... -
jqGrid学习 -------------- 搜索
2009-12-06 13:32 9419表格中所有的列都可以作为搜索条件。 所用到的语言包文件 $ ... -
jqGrid学习 -------------- 自定义格式化类型
2009-12-06 13:04 8675<script> jQuery(" ... -
jqGrid学习 -------------- 格式化
2009-12-06 11:29 12479jqGrid的格式化是定义在 ... -
jqGrid学习 -------------- 自定义按钮
2009-12-06 11:14 16086用法: <script> ... jQue ... -
jqGrid学习 -------------- 翻页(2)
2009-12-06 10:32 8054jqGrid的翻页导航是一个方法,你可以事先定义一些其他操作, ... -
jqGrid学习 -------------- 翻页
2009-12-05 21:45 5376jqGrid的翻页要定义在html里,通常是在grid的下面, ...
相关推荐
功能说明: (a) 管理员;进入系统可以实现主页、个人中心、用户管理、医生管理、美容师管理、项目部门管理、项目类型管理、产品分类管理、产品信息管理、医美项目管理、美容项目管理、预约美容管理、预约医美管理、系统管理等功能。 (b) 用户;进入系统可以实现主页、个人中心、 预约美容管理、预约医美管理等功能。 (c) 医生;进入系统可以实现主页、个人中心、医美项目管理、预约医美管理等功能。 (d) 美容师;进入系统可以实现主页、个人中心、美容项目管理、预约美容管理等功能。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
PartSegCore_compiled_backend-0.12.0a0-cp36-cp36m-win_amd64.whl.rar
中国劳动统计年鉴面板数据(2000-2020年)-就业、工资、消费等.zip
论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
redis7.4镜像docker包
施乐四代3375 24c08八角数据
OPENCV 常用XML 内涵17个常用XML,包括人脸检测,微笑检测,人眼检测,用于学习模型训练和使用
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
中国区域经济统计年鉴(2005-2014年).zip
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
官网亦可下载,不喜勿喷!