精华内容
下载资源
问答
  • tensorflow各个版本的CUDA以及Cudnn版本对应关系

    万次阅读 多人点赞 2019-04-08 14:50:34
      概述,需要注意以下几...一、tensorflow各个版本需要的CUDA版本以及Cudnn的对应关系 1.1 对应表格 相应的网址为: https://www.tensorflow.org/install/source#common_installation_problems ...

     

    概述,需要注意以下几个问题:

    (1)NVIDIA的显卡驱动程序和CUDA完全是两个不同的概念哦!CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。

    CUDA的本质是一个工具包(ToolKit);但是二者虽然不一样的。

    显卡驱动的安装:

    当我们使用一台电脑的时候默认的已经安装了NVIDIA的显卡驱动,因为没有显卡驱动根本用不了显卡嘛,但是这个时候我们是没有CUDA可以用的,我们可以更新我们的驱动,更新链接为:

    https://www.nvidia.com/Download/index.aspx?lang=en-us

    在这个里面可以根据自己的显卡类型选择最新的驱动程序。显卡驱动程序当前大小大概500多M。

    CUDA ToolKit的安装:

    CUDA的下载地址为:https://developer.nvidia.com/cuda-downloads

    我们可以选择两种安装方式,一种是在线安装(我还没用过),一中离线安装(我采用的)即本地安装,

    当我们选择离线安装,当我们选定相对应的版本之后,下载的时候发现这个地方的文件大小大概在2G左右,Linux系统下面我们选择runfile(local) 完整安装包从本地安装,或者是选择windows的本地安装。CUDA Toolkit本地安装包时内含特定版本Nvidia显卡驱动的,所以只选择下载CUDA Toolkit就足够了,如果想安装其他版本的显卡驱动就下载相应版本即可

    所以,NVIDIA显卡驱动和CUDA工具包本身是不具有捆绑关系的,也不是一一对应的关系,只不过是离线安装的CUDA工具包会默认携带与之匹配的最新的驱动程序。

    注意事项NVIDIA的显卡驱动器与CUDA并不是一一对应的哦,CUDA本质上只是一个工具包而已,所以我可以在同一个设备上安装很多个不同版本的CUDA工具包,比如我的电脑上同事安装了 CUDA 9.0、CUDA 9.2、CUDA 10.0三个版本。一般情况下,我只需要安装最新版本的显卡驱动,然后根据自己的选择选择不同CUDA工具包就可以了,但是由于使用离线的CUDA总是会捆绑CUDA和驱动程序,所以在使用多个CUDA的时候就不要选择离线安装的CUDA了,否则每次都会安装不同的显卡驱动,这不太好,我们直接安装一个最新版的显卡驱动,然后在线安装不同版本的CUDA即可。

    总结:CUDA和显卡驱动是没有一一对应的。

    (2)cuDNN是一个SDK,是一个专门用于神经网络的加速包,注意,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。

    总结:cuDNN与CUDA没有一一对应的关系

    (3)CUDA 工具包附带的 CUPTI

     CUPTI,即CUDA Profiling Tools Interface (CUPTI)。CUDA分析工具接口(CUPTI)能够分析和跟踪靶向CUDA应用程序的工具的创建。CUPTI提供以下API:

    • Activity API,
    • Callback API,
    • 事件API,
    • Metric API,和
    • Profiler API。

    使用这些API,您可以开发分析工具,深入了解CUDA应用程序的CPU和GPU行为。CUPTI作为CUDA支持的所有平台上的动态库提供。请参阅CUPTI文档。

    一、tensorflow各个版本需要的CUDA版本以及Cudnn的对应关系

    1.1 对应表格

    相应的网址为:

    https://www.tensorflow.org/install/source#common_installation_problems

    https://www.tensorflow.org/install/source_windows

    版本 Python 版本 编译器 编译工具 cuDNN CUDA
    tensorflow_gpu-2.0.0-alpha0 2.7、3.3-3.6 GCC 4.8 Bazel 0.19.2 7.4.1以及更高版本 CUDA 10.0 (需要 410.x 或更高版本)
    tensorflow_gpu-1.13.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.19.2 7.4 10.0
    tensorflow_gpu-1.12.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
    tensorflow_gpu-1.11.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
    tensorflow_gpu-1.10.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
    tensorflow_gpu-1.9.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.11.0 7 9
    tensorflow_gpu-1.8.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.10.0 7 9
    tensorflow_gpu-1.7.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
    tensorflow_gpu-1.6.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
    tensorflow_gpu-1.5.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.8.0 7 9
    tensorflow_gpu-1.4.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.5.4 6 8
    tensorflow_gpu-1.3.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.5 6 8
    tensorflow_gpu-1.2.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.5 5.1 8
    tensorflow_gpu-1.1.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8
    tensorflow_gpu-1.0.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8

    现在NVIDIA的显卡驱动程序已经更新到 10.1版本,最新的支持CUDA 10.1版本的cuDNN为7.5.0

    1.2 CUDA的命名规则

    下面以几个例子来说

    (1)CUDA 9.2

    CUDA  9.2.148

    (2)CUDA 10.0

    CUDA 10.0.130.411.31(后面的411.31对应更具体的版本号)

    (3)CUDA 10.1

    CUDA 10.1.105.418.96(后面的418.96对应更具体的版本号)

    更多详细的请参考如下官网:

    https://developer.nvidia.com/cuda-toolkit-archive

    1.3 如何查看自己所安装的CUDA的版本:

    (1)直接在NVIDIA的控制面板里面查看NVCUDA.DLL的版本。

    注意:这里网上有很多说法是错误的,这个版本并不能绝对说明自己所安装的CUDA工具包一定这个版本

    (2)通过命令查看:nvcc -V 或者是nvcc --version都可以,但前提是添加了环境变量

    (3)直接通过文件查看,这里分为Linux和windows两种情况

    在windows平台下,可以直接进入CUDA的安装目录,比如我的是:

    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2   里面有一个version.txt的文本文件,直接打开即可,也可以使用命令,即

    首先进入到安装目录,然后执行:type version.txt 即可查看

    在Linux平台下:

    同windows类似,进入到安装目录,然后执行  cat version.txt 命令

    1.4 如何查看自己的cuDNN的版本

    因为cuDNN本质上就是一个C语言的H头文件,

    (1)在windows平台下:

    直接进入安装目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include  之下,然后找到

    cudnn.h 的头文件,直接到开查看,在最开始的部分会有如下定义:

    #define CUDNN_MAJOR 7
    #define CUDNN_MINOR 5
    #define CUDNN_PATCHLEVEL 0
    
    #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

    即7500,也就是cudnn的版本为7.5.0版本;

    (2)在Linux下当然也可以直接查看,但是通过命令更简单,进入到安装目录,执行如下命令:

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2  即可查询

    即5005,即5.0.5版本的cudnn。

     二、CUDA与相对应的Cudnn对应关系

    Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0

    Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.2

    Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.0

    Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 10.0

    Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.2

    Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.0

    Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 10.0

    Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 9.2

    Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 9.0

    Download cuDNN v7.3.0 (Sept 19, 2018), for CUDA 10.0

    Download cuDNN v7.3.0 (Sept 19, 2018), for CUDA 9.0

    Download cuDNN v7.2.1 (August 7, 2018), for CUDA 9.2

    Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.2

    Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.0

    Download cuDNN v7.1.4 (May 16, 2018), for CUDA 8.0

    Download cuDNN v7.1.3 (April 17, 2018), for CUDA 9.1

    Download cuDNN v7.1.3 (April 17, 2018), for CUDA 9.0

    Download cuDNN v7.1.3 (April 17, 2018), for CUDA 8.0

    Download cuDNN v7.1.2 (Mar 21, 2018), for CUDA 9.1 & 9.2

    Download cuDNN v7.1.2 (Mar 21, 2018), for CUDA 9.0

    Download cuDNN v7.0.5 (Dec 11, 2017), for CUDA 9.1

    Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0

    Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 8.0

    Download cuDNN v7.0.4 (Nov 13, 2017), for CUDA 9.0

    Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0

    Download cuDNN v6.0 (April 27, 2017), for CUDA 7.5

    Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0

    Download cuDNN v5.1 (Jan 20, 2017), for CUDA 7.5

    Download cuDNN v5 (May 27, 2016), for CUDA 8.0

    Download cuDNN v5 (May 12, 2016), for CUDA 7.5

    Download cuDNN v4 (Feb 10, 2016), for CUDA 7.0 and later.

    Download cuDNN v3 (September 8, 2015), for CUDA 7.0 and later.

    Download cuDNN v2 (March 17,2015), for CUDA 6.5 and later.

    Download cuDNN v1 (cuDNN 6.5 R1)

    三、NVIDIA显卡以及对应的显卡驱动的对应关系

    由于NVIDIA存在多个系列的显卡类型,把这里仅仅显示出GeForce系列的显卡以及各个显卡的计算能力(compute capability),详情可以参考官网链接:

    https://developer.nvidia.com/cuda-gpus

    (1)GeForce Desktop Products

    GPU Compute Capability
    NVIDIA TITAN RTX 7.5
    Geforce RTX 2080 Ti 7.5
    Geforce RTX 2080 7.5
    Geforce RTX 2070 7.5
    Geforce RTX 2060 7.5
    NVIDIA TITAN V 7.0
    NVIDIA TITAN Xp 6.1
    NVIDIA TITAN X 6.1
    GeForce GTX 1080 Ti 6.1
    GeForce GTX 1080 6.1
    GeForce GTX 1070 6.1
    GeForce GTX 1060 6.1
    GeForce GTX 1050 6.1
    GeForce GTX TITAN X 5.2
    GeForce GTX TITAN Z 3.5
    GeForce GTX TITAN Black 3.5
    GeForce GTX TITAN 3.5
    GeForce GTX 980 Ti 5.2
    GeForce GTX 980 5.2
    GeForce GTX 970 5.2
    GeForce GTX 960 5.2
    GeForce GTX 950 5.2
    GeForce GTX 780 Ti 3.5
    GeForce GTX 780 3.5
    GeForce GTX 770 3.0
    GeForce GTX 760 3.0
    GeForce GTX 750 Ti 5.0
    GeForce GTX 750 5.0
    GeForce GTX 690 3.0
    GeForce GTX 680 3.0
    GeForce GTX 670 3.0
    GeForce GTX 660 Ti 3.0
    GeForce GTX 660 3.0
    GeForce GTX 650 Ti BOOST 3.0
    GeForce GTX 650 Ti 3.0
    GeForce GTX 650 3.0
    GeForce GTX 560 Ti 2.1
    GeForce GTX 550 Ti 2.1
    GeForce GTX 460 2.1
    GeForce GTS 450 2.1
    GeForce GTS 450* 2.1
    GeForce GTX 590 2.0
    GeForce GTX 580 2.0
    GeForce GTX 570 2.0
    GeForce GTX 480 2.0
    GeForce GTX 470 2.0
    GeForce GTX 465 2.0
    GeForce GT 740 3.0
    GeForce GT 730 3.5
    GeForce GT 730 DDR3,128bit 2.1
    GeForce GT 720 3.5
    GeForce GT 705* 3.5
    GeForce GT 640 (GDDR5) 3.5
    GeForce GT 640 (GDDR3) 2.1
    GeForce GT 630 2.1
    GeForce GT 620 2.1
    GeForce GT 610 2.1
    GeForce GT 520 2.1
    GeForce GT 440 2.1
    GeForce GT 440* 2.1
    GeForce GT 430 2.1
    GeForce GT 430* 2.1

    (2)GeForce Notebook Products(笔记本电脑)

    GPU Compute Capability
    Geforce RTX 2080 7.5
    Geforce RTX 2070 7.5
    Geforce RTX 2060 7.5
    GeForce GTX 1080 6.1
    GeForce GTX 1070 6.1
    GeForce GTX 1060 6.1
    GeForce GTX 980 5.2
    GeForce GTX 980M 5.2
    GeForce GTX 970M 5.2
    GeForce GTX 965M 5.2
    GeForce GTX 960M 5.0
    GeForce GTX 950M 5.0
    GeForce 940M 5.0
    GeForce 930M 5.0
    GeForce 920M 3.5
    GeForce 910M 5.2
    GeForce GTX 880M 3.0
    GeForce GTX 870M 3.0
    GeForce GTX 860M 3.0/5.0(**)
    GeForce GTX 850M 5.0
    GeForce 840M 5.0
    GeForce 830M 5.0
    GeForce 820M 2.1
    GeForce 800M 2.1
    GeForce GTX 780M 3.0
    GeForce GTX 770M 3.0
    GeForce GTX 765M 3.0
    GeForce GTX 760M 3.0
    GeForce GTX 680MX 3.0
    GeForce GTX 680M 3.0
    GeForce GTX 675MX 3.0
    GeForce GTX 675M 2.1
    GeForce GTX 670MX 3.0
    GeForce GTX 670M 2.1
    GeForce GTX 660M 3.0
    GeForce GT 755M 3.0
    GeForce GT 750M 3.0
    GeForce GT 650M 3.0
    GeForce GT 745M 3.0
    GeForce GT 645M 3.0
    GeForce GT 740M 3.0
    GeForce GT 730M 3.0
    GeForce GT 640M 3.0
    GeForce GT 640M LE 3.0
    GeForce GT 735M 3.0
    GeForce GT 635M 2.1
    GeForce GT 730M 3.0
    GeForce GT 630M 2.1
    GeForce GT 625M 2.1
    GeForce GT 720M 2.1
    GeForce GT 620M 2.1
    GeForce 710M 2.1
    GeForce 705M 2.1
    GeForce 610M 2.1
    GeForce GTX 580M 2.1
    GeForce GTX 570M 2.1
    GeForce GTX 560M 2.1
    GeForce GT 555M 2.1
    GeForce GT 550M 2.1
    GeForce GT 540M 2.1
    GeForce GT 525M 2.1
    GeForce GT 520MX 2.1
    GeForce GT 520M 2.1
    GeForce GTX 485M 2.1
    GeForce GTX 470M 2.1
    GeForce GTX 460M 2.1
    GeForce GT 445M 2.1
    GeForce GT 435M 2.1
    GeForce GT 420M 2.1
    GeForce GT 415M 2.1
    GeForce GTX 480M 2.0
    GeForce 710M 2.1
    GeForce 410M 2.1

     

    展开全文
  • anaconda python 版本对应关系

    万次阅读 多人点赞 2018-07-14 15:09:48
    举个例子,假设你想安装python2.7.14,在表格中找到它,它下方的两个个anaconda包(anaconda2-5.0.1、5.1.0)都包含python2.7.14; 假设你想安装python3.6.5,在表格中找到它,它下方的anaconda3-5.2.0就是你需要...

    2020.2.20 更新日志:

    • 本文的初衷是因为安装anaconda的时候你并不知道会包含哪个版本的python,因此我制作了下表
    • 如果你使用的主要的python版本能在下表中找到,那安装对应的anaconda当然更好
    • 但是如果你只是临时想用某个版本的python,或在下表中找不到对应的,你大可以直接安装最新的anaconda,然后用conda create来创建虚拟环境即可,不用非得找到对应的anaconda来装。
    • 最佳的策略是你的机器上只保留一个anaconda,其中包含着你最常用的python版本,然后其他的版本环境全都用虚拟环境来管理。
    • 创建虚拟环境的方法:

    例如你要建一个python3.5的虚拟环境(其中myenv是这个环境的名称,可以自定):

    conda create -n myenv python=3.5

    然后用以下命令进入该虚拟环境即可:

    activate myenv

     

    2019.11.18 更新日志:

    • 更新了今年的版本号
    • 在表格中用括号备注了包含的python版本号

     

    Release date conda python2.7 python3.4 python3.5 python3.6 python3.7 python3.8
    2015-02-25     3.4.3        
    2015-05-23   2.7.10          
    2015-09-13       3.5.0      
    2015-12-05   2.7.11          
    2015-12-07       3.5.1      
    2015-12-21     3.4.4        
    2016-03-29 conda 4.0.5 Anaconda2-4.0.0
    (python 2.7.11)
      Anaconda3-4.0.0
    (python 3.5.1)
         
    2016-06-28 conda 4.1.4 Anaconda2-4.1.0
    (python 2.7.11)
      Anaconda3-4.1.0
    (python 3.5.1)
         
    2016-06-25   2.7.12          
    2016-06-27     3.4.5 3.5.2      
    2016-07-08 conda 4.1.6 Anaconda2-4.1.1
    (python 2.7.12)
      Anaconda3-4.1.1
    (python 3.5.2)
         
    2016-09-28 conda 4.2.9 Anaconda2-4.2.0
    (python 2.7.12)
      Anaconda3-4.2.0
    (python 3.5.2)
         
    2016-12-17   2.7.13          
    2016-12-23         3.6.0    
    2017-01-17     3.4.6 3.5.3      
    2017-01-31 conda 4.3.8 Anaconda2-4.3.0
    (python 2.7.13)
        Anaconda3-4.3.0
    (python 3.6.0)
       
    2017-03-10 conda 4.3.14 Anaconda2-4.3.1
    (python 2.7.13)
        Anaconda3-4.3.1
    (python 3.6.0)
       
    2017-03-21         3.6.1    
    2017-05-31 conda 4.3.21 Anaconda2-4.4.0
    (python 2.7.13)
        Anaconda3-4.4.0
    (python 3.6.1)
       
    2017-07-17         3.6.2    
    2017-08-08       3.5.4      
    2017-08-09     3.4.7        
    2017-09-26 conda 4.3.27 Anaconda2-5.0.0
    (python 2.7.13)
        Anaconda3-5.0.0
    (python 3.6.2)
       
    2017-09-16   2.7.14          
    2017-10-03         3.6.3    
    2017-10-25 conda 4.3.30 Anaconda2-5.0.1
    (python 2.7.14)
        Anaconda3-5.0.1
    (python 3.6.3)
       
    2017-12-19         3.6.4    
    2018-02-05     3.4.8 3.5.5      
    2018-02-15 conda 4.4.10 Anaconda2-5.1.0
    (python 2.7.14)
        Anaconda3-5.1.0
    (python 3.6.4)
       
    2018-03-28         3.6.5    
    2018-05-01   2.7.15          
    2018-05-30 conda 4.5.4 Anaconda2-5.2.0
    (python 2.7.15)
        Anaconda3-5.2.0
    (python 3.6.5)
       
    2018-06-27         3.6.6 3.7.0  
    2018-08-02     3.4.9 3.5.6      
    2018-09-28 conda 4.5.11 Anaconda2-5.3.0
    (python 2.7.15)
          Anaconda3-5.3.0
    (python 3.7.0)
     
    2018-10-20         3.6.7 3.7.1  
    2018-12-21 conda 4.5.12 Anaconda2-2018.12
    (python 2.7.15)
          Anaconda3-2018.12
    (python 3.7.1)
     
    2018-12-24         3.6.8 3.7.2  
    2019-03-04   2.7.16          
    2019-03-18     3.4.10 3.5.7      
    2019-03-25           3.7.3  
    2019-04-04 conda 4.6.11 Anaconda2-2019.03
    (python 2.7.16)
          Anaconda3-2019.03
    (python 3.7.3)
     
    2019-07-02         3.6.9    
    2019-07-08           3.7.4  
    2019-07-24 conda 4.7.10 Anaconda2-2019.07
    (python 2.7.16)
          Anaconda3-2019.07
    (python 3.7.3)
     
    2019-10-14             3.8.0
    2019-10-15           3.7.5  
    2019-10-19   2.7.17          
    2019-10-29       3.5.8      
    2019-11-02       3.5.9      

     

    首先解释一下上表。 anaconda在每次发布新版本的时候都会给python2和python3都发布一个包,版本号是一样的(anaconda2-xxx和anaconda3-xxx),并且包含的conda版本号也是一样的(表中每一行的第一列)。

    表格中,python版本号下方的离它最近的anaconda包就是包含它的版本。

    举个例子,假设你想安装python2.7.14,在表格中找到它,它下方的两个个anaconda包(anaconda2-5.0.1、5.1.0)都包含python2.7.14;

    假设你想安装python3.6.5,在表格中找到它,它下方的anaconda3-5.2.0就是你需要下载的包;

    假设你想安装python3.7.0,在表格中找到它,它下方的anaconda3-5.3.0就是你需要下载的包;

    假如你想安装miniconda但是不知道该安装哪个版本,请点开下表的old package lists,它显示了每个anaconda版本包含什么版本的conda和什么版本的python,而miniconda的版本号与conda的版本号是一样的。

      anaconda miniconda
    镜像下载地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=N&O=D https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=N&O=D
    官方首页 https://www.anaconda.com/distribution/ https://docs.conda.io/en/latest/miniconda.html
    官方下载地址 https://repo.anaconda.com/archive/ https://repo.anaconda.com/miniconda/
    官方文档 https://docs.anaconda.com/anaconda/  
    old package lists https://docs.anaconda.com/anaconda/packages/oldpkglists/  
    release notes https://docs.anaconda.com/anaconda/reference/release-notes/  

     

    展开全文
  • 在SQL里最难理解的就是最前面的基础概念,万丈起于平原。本博文将所有的关系代数的sql里用到的,都用例子做到一一对应,希望大家都能体会明白概念的重要性。

    本博文源于中国人民大学《数据库系统概论(基础篇)》.博文包含以下内容
    关系模型、关系代数、关系演算

    关系模型

    关系数据结构

    基本概念

    域是一组具有相同数据类型的值的集合。

    笛卡尔积

    就是域的笛卡尔积空间,在这空间里做不同的运算。
    直接看例子就理解透了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    感觉像分布乘法。

    关系模式

    在这里插入图片描述
    就是描述关系与关系之间的状态,也是用集合的方式进行定义。

    关系完整性约束

    实体完整性

    就是主键不能为空,学术点,是这样子的
    在这里插入图片描述

    关系的引用

    在这里插入图片描述
    课程号就是被应用了。对于选修课表,如果课程号不是主键,但引用了外键,那么选修课里的“课程号”就是外码。

    参照完整性

    就是外码可以取空值或者非空值。

    用户定义的完整性

    用户在自己创建的时候,主键必须取值,其他也必须不能去空值。例如
    在这里插入图片描述

    关系代数

    传统的集合运算

    R∪S

    好像跟集合没什么区别,体会一下。
    在这里插入图片描述

    R-S

    在这里插入图片描述
    这些集合做运算,举个例子
    在这里插入图片描述

    R∩S

    集合的共有概念,体会一下例子
    在这里插入图片描述

    笛卡尔积

    两个集合分别元素相乘
    在这里插入图片描述

    专门的关系运算

    选择

    在这里插入图片描述
    说人话就是将符合条件的选择出来,直白点(来个例子):

    在这里插入图片描述
    在这里插入图片描述

    投影

    都知道一列是一个属性的概念,那么把一列抽取出来,那就是投影,举例子
    在这里插入图片描述
    完整的表在上方。

    连接

    在这里插入图片描述
    这个又作何理解呢,就是度相加,然后做笛卡尔乘积,用例子体会
    在这里插入图片描述

    等值连接

    在这里插入图片描述
    结合上面,又是怎么理解呢?因为等值就是两个元素集合个数相等,那就各个相加就行了

    自然连接

    在这里插入图片描述
    自然连接只要A的投影,b的度。

    外连接

    在这里插入图片描述
    在这里插入图片描述
    外连接值不对等所以,没有的都是空值

    左右外连接

    在这里插入图片描述
    左外连接是只照顾到关系R,右外连接只照顾到关系S,字体体会。

    除运算

    在这里插入图片描述
    在这里插入图片描述
    例子说明,现在R关系里找到含有关系S的,然后找最大公约数,取个交集就行了

    展开全文
  • matplotlib 合理设置colorbar和子图的对应关系

    万次阅读 多人点赞 2019-10-19 16:05:53
    matplotlib 合理设置colorbar和子图的对应关系 文章目录matplotlib 合理设置colorbar和子图的对应关系1. 介绍2 plt.contourf ()2.1 错误示范2.2 使用 norm实现颜色和数值之间的对应关系2.3 只显示最后一个的colorbar...

    matplotlib 合理设置colorbar和子图的对应关系

    1. 介绍

    在有些情况下,需要画同一个变量不同时刻的等值面图。考虑到不同时刻的数值有大小差异,因而生成的图的colorbar的标签范围也是不一样的。为了方便比较,最好多个时刻共享一个colorbar,方便比较。下面会依次使用 plt.contourf() 和 plt.imshow()函数进行画图介绍。

    2 plt.contourf ()

    2.1 错误示范

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    
    #生成一定整数范围内的随机数
    a1 = np.random.randint(1,10,size=(10,10))
    a2 = np.random.randint(1,13,size=(10,10))
    a3 = np.random.randint(1,16,size=(10,10))
    
    fig = plt.figure(figsize = (22,6))
    
    plt.subplot(1,3,1)
    h1 = plt.contourf(a1,cmap = plt.cm.coolwarm)
    c1 = plt.colorbar(h1)
    
    plt.subplot(1,3,2)
    h2 = plt.contourf(a2,cmap = plt.cm.coolwarm)
    c2 = plt.colorbar(h2)
    
    plt.subplot(1,3,3)
    h3 = plt.contourf(a3,cmap = plt.cm.coolwarm)
    c3 = plt.colorbar(h3) 
    
    plt.show()
    

    在这里插入图片描述
    如上图,每个图上的相同的颜色表示的数值不一样,不方便比较;

    2.2 使用 norm实现颜色和数值之间的对应关系

    a1 = np.random.randint(1,10,size=(10,10))
    a2 = np.random.randint(1,13,size=(10,10))
    a3 = np.random.randint(1,16,size=(10,10))
    
    fig = plt.figure(figsize = (22,6))
    
    #将颜色映射到 vmin~vmax 之间
    norm = matplotlib.colors.Normalize(vmin=0, vmax=15)
    
    plt.subplot(1,3,1)
    h1 = plt.contourf(a1,cmap = plt.cm.coolwarm,norm = norm)
    c1 = plt.colorbar(h1)
    
    plt.subplot(1,3,2)
    h2 = plt.contourf(a2,cmap = plt.cm.coolwarm,norm = norm)
    c2 = plt.colorbar(h2)
    
    plt.subplot(1,3,3)
    h3 = plt.contourf(a3,cmap = plt.cm.coolwarm,norm = norm)
    c3 = plt.colorbar(h3)
    
    plt.show()
    

    在这里插入图片描述
    如上图,可以实现相同数值大小对应相同的颜色;

    但是这样还是不太好看。最好是能够 每个子图的 colorbar的范围都一样(即从0-15);

    2.3 只显示最后一个的colorbar

    那有同学想,是否可以只显示最后一个子图的colorbar,作为全局colorbar呢;这个当然也是可以的。

    但是会带来一个问题,由于每个子图的大小(无论是否包含colorbar)是一样的,会使得图形大小看起来不一样,很不美观;

    如下图:
    在这里插入图片描述

    2.4 使用 levels 参数设置

    a1 = np.random.randint(1,10,size=(10,10))
    a2 = np.random.randint(1,13,size=(10,10))
    a3 = np.random.randint(1,16,size=(10,10))
    
    fig = plt.figure(figsize = (22,6))
    
    # norm = matplotlib.colors.Normalize(vmin=0, vmax=15)
    #设置固定显示的colorbar刻度
    levels = np.arange(0,17,2)
    
    plt.subplot(1,3,1)
    h1 = plt.contourf(a1,cmap = plt.cm.coolwarm,levels = levels)
    c1 = plt.colorbar(h1)
    
    plt.subplot(1,3,2)
    h2 = plt.contourf(a2,cmap = plt.cm.coolwarm,levels = levels)
    c2 = plt.colorbar(h2)
    
    plt.subplot(1,3,3)
    h3 = plt.contourf(a3,cmap = plt.cm.coolwarm,levels = levels)
    c3 = plt.colorbar(h3)
    
    plt.show()
    

    在这里插入图片描述

    3. 使用plt.imshow()

    上面虽然设置了 norm,但是使用plt.contourf还是达不到我们的要求。链接3 给了我们一个示例,使用plt.imshow() + norm可以解决这个问题。按照他的思路,我们重复上面的试验。

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    
    # matplotlib.rcParams['xtick.direction'] = 'out'
    # matplotlib.rcParams['ytick.direction'] = 'out'
    
    a1 = np.random.randint(1,10,size=(10,10))
    a2 = np.random.randint(1,13,size=(10,10))
    a3 = np.random.randint(1,16,size=(10,10))
    
    fig = plt.figure(figsize = (22,6),dpi=72, facecolor="white")
    
    #将横纵坐标都映射到(0,1)的范围内
    extent=(0,1,0,1)
    
    vmin=0
    vmax=15
    #将颜色映射到 vmin~vmax 之间
    norm = matplotlib.colors.Normalize(vmin=0, vmax=15)
    
    ax1 = plt.subplot(1,3,1)
    ax1.cla()
    h1 = plt.imshow(a1,extent = extent,origin='lower',cmap = plt.cm.coolwarm,norm = norm)
    c1 = plt.colorbar(h1)
    
    plt.subplot(1,3,2)
    h2 = plt.imshow(a2,extent = extent,origin='lower',cmap = plt.cm.coolwarm,norm = norm)
    c2 = plt.colorbar(h2)
    
    plt.subplot(1,3,3)
    h3 = plt.imshow(a3,extent = extent,origin='lower',cmap = plt.cm.coolwarm,norm = norm)
    c3 = plt.colorbar(h3)
    
    font = {'family' : 'serif',
            'color'  : 'darkred',
            'weight' : 'normal',
            'size'   : 16,
            }
    
    c3.set_label('$T_B(K)$',fontdict=font)
    c3.set_ticks(np.arange(vmin,vmax,2))
    c3.set_ticklabels(np.arange(vmin,vmax,2))
    
    plt.show()
    

    在这里插入图片描述

    如上图,虽然使用plt.imshow可以解决这个问题,但是用带来了一些新问题:

    • 在画子图的时候,colorbar的长度和子图的长度不一致;在单独画一个图的时候,并不存在这样的问题
    • plt.imshow()是逐像素画图的,相比plt.contourf,分辨率很低,并不适合科研上的等值线作图。

    4 单独设置colorbar

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    
    a1 = np.random.randint(1,10,size=(10,10))
    a2 = np.random.randint(1,13,size=(10,10))
    a3 = np.random.randint(1,16,size=(10,10))
    
    #也可以通过这样 levels 进行设置
    #h = plt.contourf(a1,levels = [0,1,2,3,4,5,6,7,8,9,10], cmap = plt.cm.coolwarm)
    
    fig = plt.figure(figsize = (22,6))
    
    norm = matplotlib.colors.Normalize(vmin=0, vmax=15)
    
    plt.subplot(1,3,1)
    h1 = plt.contourf(a1,cmap = plt.cm.coolwarm,norm = norm)
    # c1 = plt.colorbar(h1)
    
    plt.subplot(1,3,2)
    h2 = plt.contourf(a2,cmap = plt.cm.coolwarm,norm = norm)
    # c2 = plt.colorbar(h2)
    
    plt.subplot(1,3,3)
    h3 = plt.contourf(a3,cmap = plt.cm.coolwarm,norm = norm)
    # c3 = plt.colorbar(h3)
    # c3.set_clim(vmax = 15)
    
    #前面三个子图的总宽度 为 全部宽度的 0.9;剩下的0.1用来放置colorbar
    fig.subplots_adjust(right=0.9)
    
    #colorbar 左 下 宽 高 
    l = 0.92
    b = 0.12
    w = 0.015
    h = 1 - 2*b 
    
    #对应 l,b,w,h;设置colorbar位置;
    rect = [l,b,w,h] 
    cbar_ax = fig.add_axes(rect) 
    cb = plt.colorbar(h3, cax=cbar_ax)
    
    #设置colorbar标签字体等
    cb.ax.tick_params(labelsize=16)  #设置色标刻度字体大小。
    font = {'family' : 'serif',
    #       'color'  : 'darkred',
        'color'  : 'black',
        'weight' : 'normal',
        'size'   : 16,
        }
    cb.set_label('T' ,fontdict=font) #设置colorbar的标签字体及其大小
    
    plt.show()
    

    在这里插入图片描述
    如上,是不是很漂亮了。后续适当做一些 坐标、字体等的基本设置,就完成了一张科研图的绘制!

    4.1 方式一

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    
    a1 = np.random.randint(1,10,size=(10,10))
    a2 = np.random.randint(1,13,size=(10,10))
    a3 = np.random.randint(1,16,size=(10,10))
    
    #也可以通过这样 levels 进行设置
    #h = plt.contourf(a1,levels = [0,1,2,3,4,5,6,7,8,9,10], cmap = plt.cm.coolwarm)
    
    fig = plt.figure(figsize = (22,6))
    
    norm = matplotlib.colors.Normalize(vmin=0, vmax=15)
    
    plt.subplot(1,3,1)
    h1 = plt.contourf(a1,cmap = plt.cm.coolwarm,norm = norm)
    # c1 = plt.colorbar(h1)
    
    plt.subplot(1,3,2)
    h2 = plt.contourf(a2,cmap = plt.cm.coolwarm,norm = norm)
    # c2 = plt.colorbar(h2)
    
    plt.subplot(1,3,3)
    h3 = plt.contourf(a3,cmap = plt.cm.coolwarm,norm = norm)
    # c3 = plt.colorbar(h3)
    # c3.set_clim(vmax = 15)
    
    #前面三个子图的总宽度 为 全部宽度的 0.9;剩下的0.1用来放置colorbar
    fig.subplots_adjust(right=0.9)
    
    #colorbar 左 下 宽 高 
    l = 0.92
    b = 0.12
    w = 0.015
    h = 1 - 2*b 
    
    #对应 l,b,w,h;设置colorbar位置;
    rect = [l,b,w,h] 
    cbar_ax = fig.add_axes(rect) 
    cb = plt.colorbar(h3, cax=cbar_ax)
    
    #设置colorbar标签字体等
    cb.ax.tick_params(labelsize=16)  #设置色标刻度字体大小。
    font = {'family' : 'serif',
    #       'color'  : 'darkred',
        'color'  : 'black',
        'weight' : 'normal',
        'size'   : 16,
        }
    cb.set_label('T' ,fontdict=font) #设置colorbar的标签字体及其大小
    
    plt.show()
    

    在这里插入图片描述
    如上,是不是很漂亮了。后续适当做一些 坐标、字体等的基本设置,就完成了一张科研图的绘制!

    4.2 方式二

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    
    #设置子图个数 和 整个图片的大小
    fig, axes = plt.subplots(nrows=2, ncols=2,figsize = (12,10))
    
    a_list = [5,10,15,20]
    
    #设置colorbar的范围
    vmin = 0
    vmax = 20
    
    norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax)
    
    for a,ax in zip(a_list,axes.flat):
        
        #设置每个子图
        data = np.random.randint(0,a,size = (20,20))
        im = ax.contourf(data,norm = norm)
    
    #fig 的位置为[0,1],设置前面4个子图的占的位置为[0,0.8]
    fig.subplots_adjust(right=0.8)
    
    #在原fig上添加一个子图句柄为cbar_ax, 设置其位置为[0.85,0.15,0.05,0.7]
    #colorbar 左 下 宽 高 
    l = 0.85
    b = 0.12
    w = 0.05
    h = 1 - 2*b 
    #对应 l,b,w,h;设置colorbar位置;
    rect = [l,b,w,h] 
    cbar_ax = fig.add_axes(rect)
    
    cb = fig.colorbar(im, cax = cbar_ax) 
    
    #设置colorbar标签字体等
    cb.ax.tick_params(labelsize=16)  #设置色标刻度字体大小。
    font = {'family' : 'serif',
    #       'color'  : 'darkred',
        'color'  : 'black',
        'weight' : 'normal',
        'size'   : 16,
        }
    cb.set_label('T' ,fontdict=font) #设置colorbar的标签字体及其大小
    
    plt.show()
    

    在这里插入图片描述

    4.3 问题

    上述两种方式都存在一个潜在的问题。

    在这里插入图片描述

    ​ 在添加colorbar的时,是使用最后一个子图的所在的数值范围。我们来看几种情况。

    • 情况一:

      norm = [5,20], 对应colorbar上 5以下颜色一致。

    在这里插入图片描述

    在这里插入图片描述

    • 情况二:

      最后一张子图的数值范围为 [0,15),colorbar范围只能在15以内。

    在这里插入图片描述

    在这里插入图片描述

    结论:

    最后一张子图的数据范围决定了colorbar上显示的刻度的范围。

    norm范围决定了colorbar颜色变化范围。

    4.4 解决方法1:plt.contourf()

    为了保证colorbar能覆盖所有子图的范围,应该使得 norm范围与设置colorbar时对应的子图im 的数值范围一致,并且所有子图的数值范围应该都在norm范围之内。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bI7GRXmn-1582701105492)(matplotlib 合理设置colorbar和子图的对应关系.assets/image-20200226135804785.png)]

    因此有一个蠢办法:

    • 即另外建一个fig2 , 这个fig2对应的数据范围包括fig1的数据范围。

      import numpy as np
      import matplotlib.pyplot as plt
      import matplotlib
      
      #设置子图个数 和 整个图片的大小
      fig1, axes = plt.subplots(nrows=2, ncols=2,figsize = (10,8))
      
      a_list = [5,10,20,15]
      
      #设置colorbar的范围
      vmin = 0
      vmax = 20
      norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax)
      
      for a,ax in zip(a_list,axes.flat):
          
          #设置每个子图的数据范围
          data = np.random.randint(0,a,size = (20,20))
          im = ax.contourf(data,norm = norm)
      
      #fig1 的位置为[0,1],设置前面4个子图的占的位置为[0,0.8]
      fig1.subplots_adjust(right=0.8)
      
      #在原fig1上添加一个子图句柄为cbar_ax, 设置其位置为[0.85,0.15,0.05,0.7]
      #colorbar 左 下 宽 高 
      l = 0.85
      b = 0.12
      w = 0.05
      h = 1 - 2*b 
      #对应 l,b,w,h;设置colorbar位置;
      rect = [l,b,w,h] 
      cbar_ax = fig1.add_axes(rect)
      
      ##设置一个fig2,其数值范围涵括fig1所有子图的数值范围
      fig2 = plt.figure(figsize = (18,6))
      all_data = np.random.randint(vmin,vmax,size = (20,20))
      h4 = plt.contourf(all_data,norm = norm)
      
      #设置fig1的colorbar对应fig2的数据范围
      cb = fig1.colorbar(h4, cax = cbar_ax) 
      
      #设置colorbar标签字体等
      cb.ax.tick_params(labelsize=16)  #设置色标刻度字体大小。
      font = {'family' : 'serif',
      #       'color'  : 'darkred',
          'color'  : 'black',
          'weight' : 'normal',
          'size'   : 16,
          }
      cb.set_label('T' ,fontdict=font) #设置colorbar的标签字体及其大小
      
      plt.show()
      

    在这里插入图片描述

    对比上述情况2的图片,情况有所改善,但是吊了一个尾巴。

    4.5 解决办法2:plt.imshow()

    import numpy as np
    import matplotlib.pyplot as plt
    
    a_list = [5,10,20,15]
    
    #设置colorbar的范围
    vmin = 0
    vmax = 20
    norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax)
    
    fig, axes = plt.subplots(nrows=2, ncols=2)
    for a,ax in zip(a_list,axes.flat):
        
        #设置每个子图
        data = np.random.randint(0,a,size = (20,20))
        im = ax.imshow(data , vmin = vmin, vmax = vmax )
    
    fig.colorbar(im, ax=axes.ravel().tolist())
    
    plt.show()
    

    在这里插入图片描述

    使用这个方法可以解决上述情况2的问题,不需要吊个尾巴啦!

    至于使用plt.imshow 和 plt.contourf,看各自喜好!另外,建议多看看官网例子。

    参考链接

    [1] 解决python画图中colorbar设置刻度和标签字体大小

    [2] 使用matplotlib的示例:调整字体-设置刻度、坐标、colormap和colorbar等

    [3] matplotlib官网例子

    展开全文
  • hibernate七种对应关系映射

    千次阅读 2017-02-05 10:23:38
    hibernate框架七种对应关系映射(ORM)
  • 我们在用Arcgis Server发布服务时,会发布Mapserver的同时发布Wmsserver服务,但是,调用的图层的顺序却相反,本文从几个例子详细介绍下rest服务和wms服务的对应关系
  • 文章目录人体的基本五行 - 心肝脾肺肾,金木水火土 对应关系与基础解读1、对应关系2、重要性3、五行的相生相克关系4、五官5、情志6、一些解读7、一些案例 人体的基本五行 - 心肝脾肺肾,金木水火土 对应关系与基础...
  • Anaconda python 版本对应关系

    千次阅读 2019-03-06 17:58:14
    首先解释一下上表。 anaconda在每次发布新版本的时候都会给python3和python2都发布一个包,版本号是一样的。 表格中,python版本号下方的离它最近的anaconda包就是包含它...举个例子,假设你想安装python2.7.14,在...
  • Cache地址与主存地址对应关系

    千次阅读 热门讨论 2014-09-11 21:44:18
    但是对于经常使用的程序或文件,想想如果我们经常按照这个顺序读下来,举个极端点儿的例子,从硬盘读到内存要1000S,从内存读到cache要100s,从cache读到寄存器执行要1s,这是我们就应该想,对于常用的东西,为什么不...
  • 进程和端口对应关系

    千次阅读 2019-11-17 22:23:01
    从一些例子也可以看出,比如有时候你在服务器上执行netstat -ano可能会发现同一个应用程序在同一个端口上有多个监听,这是因为一些服务端应用程序可能会异常退出或者没有完全释放套接字,但是需要在重新启动时还能够...
  • 关于kafka中的timestamp与offset的对应关系@(KAFKA)[storm, kafka, 大数据]关于kafka中的timestamp与offset的对应关系 获取单个分区的情况 同时从所有分区获取消息的情况 结论 如何指定时间 出现...
  • 之所以在这里分享这个对应关系,是因为在C#基础知识系列的文章发布之后,有些初学者对.NET版本和C#语言特性之间的对应关系有点不清楚,有时候会弄混淆了。并且通过这个对应关系,也可以帮助大家对C#和.NET 类库有个...
  • anaconda 和python 版本对应关系

    千次阅读 2020-11-10 22:15:19
    可以自定): conda create -n myenv python=3.5 2)、然后用以下命令进入该虚拟环境即可: activate myenv 二、anaconda 和python 版本对应关系列表 在表格中用括号备注了包含的python版本号 lz使用的python 3.6.4,...
  • 安卓系统与内置Chrome浏览器对应的版本关系:...ios系统与浏览器的对应关系: https://blog.csdn.net/qq_33089275/article/details/98955139 资源转自国外,便于自己需要时查看。 3.2.2 - Mobile Sa...
  • 赤兔的 层抬升距离对应L3的底层进给率,其实是步进电机是速度。有次设置成2mm,结果电机爬的比蜗牛还慢。还以为死机了。下面的数据是为了区别各参数的关系,随便写的。 赤兔 L3 底层抬升距离 底层进给率 抬升距离...
  • UML类图关系对应代码

    千次阅读 热门讨论 2015-08-31 15:28:07
    UML图中五种关系的强弱关系:依赖  一 依赖关系 (一)·类图:(这些图都是EA画的,方便类图源码的生成)  (PS:fish类依赖于water类)(鱼依赖于水)  (二)生成源代码    通过代码,我们可以...
  • STM32外部中断与各通道对应关系

    万次阅读 2018-07-12 14:02:46
    一:外部中断使用配置过程:(1)配置时钟信号(2)引脚属性(3)NVIC配置(4)外部中断配置二:STM32外部中断与各通道对应关系
  • 单片机采集的MPU6050原始数据对应关系

    万次阅读 多人点赞 2017-04-08 15:00:04
    单片机采集的MPU6050原始数据对应关系1.陀螺仪如下图,陀螺仪的范围有±250、±500、±2000可选,而对应的精度分别是131LSB/(°/s)、65.5LSB/(°/s)、32.8LSB/(°/s)、16.4 LSB/(°/s)a.那么这个精度和范围的关系是...
  • 这个例子中就是因为谷歌浏览器用的是65的版本,chromedriver用的是2.33的版本,而对于谷歌...下面是谷歌浏览器与chromedriver的版本对应关系,供参考: ------------2019年兼容版本对照表----------- 注:支持chrom...
  • labview与C数据类型的对应关系

    千次阅读 2019-07-29 09:21:50
    labview与C数据类型的对应关系 labview宝典的数据类型对照表 布尔型 在输入时先把布尔值转化为数值,输出时把数值转化为布尔值。 数值型数组 labview只能支持c的数值型数组。在进行参数设置时注意,数据格式一栏...
  • 业务用例和用例的对应关系一般是1对1和1对多最为普遍,但是也可能出现多对1的形式,甚至一些用户业务间交叉过多的业务实现中还可能出现多对1的形式。比如下面这个例子就是2003年底在北航给软工硕士讲课期间产生的...
  • 在我们写代码的时候,避免不了和数据库打交道,那么就经常会遇到JAVA类型和数据库类型的映射关系。映射表如下:下面就举个例子来讲(JAVA插入MySql的datetime类型的简单的例子):看了映射表可知:我们可以以...
  • Anaconda Python 版本对应关系表(附所有版本下载)

    万次阅读 多人点赞 2019-06-05 09:33:49
    一、对应版本 首先解释一下上表。 anaconda在每次发布新版本的时候都会给python3和python2都发布一个包,版本号是一样的。 表格中,python版本号下方的离它最近的anaconda包就是包含它的版本。 举个例子,假设...
  • linux 线程id 与进程id对应关系

    千次阅读 2015-08-09 11:02:58
    linux 中的线程是基于进程实现的,每个线程都会有一个进程对应,通过gettid()可以获取到该进程id。 另外,通过pthread_self()获取到的是POSIX thread id。下面简单举个例子。#include #include #include #...
  • 也就是 A 表的一条记录对应 B 表的一条记录,为什么要这样的设计呢,不是增加了程度的复杂性吗,然而并不一定,举例说明: 1) 一个系统必然有 Employee(员工表)(包含字段:EmployeeId、姓名、性别、年龄、...
  • 在本例子中为Text B的Element,也就是StatelessElement。 Element _child; @override void mount(Element parent, dynamic newSlot) { super.mount(parent, newSlot); //创建子child Widget对应的...
  • Hive的数据类型复杂数据类型,Hive加载数据属于读模式,hive中库表与hdfs的对应关系

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 586,706
精华内容 234,682
关键字:

对应关系例子