精华内容
下载资源
问答
  • 5.6 数据的并行存储/管理 99 5.7 元数据管理 99 5.8 语言接口 99 5.9 数据的高效装入 99 5.10 高效索引的利用 100 5.11 数据压缩 101 5.12 复合键码 101 5.13 变长数据 101 5.14 加锁管理 102 5.15 单独索引处理 102...
  • 变量属性与存储

    千次阅读 2016-08-14 19:46:01
    存储类就是存储类型,描述变量在哪里存放(堆,栈,代码段(.text),数据段(.data),bss段(ZI段)...),在哪里内存段中存储。 2).作用域: 描述一个变量起作用范围,一般是是当前代码块/文件作用域(注意...

    主要学习变量的各种属性,以及加深了变量与存储的关系。真的不太熟悉的就是链接属性吧。(存储类名字不熟悉)


    1.程序运行的基本概念:
    1).存储类:
    存储类就是存储类型,描述变量在哪里存放(堆,栈,代码段(.text),数据段(.data),bss段(ZI段)...),在哪里内存段中存储。
    2).作用域:
    描述一个变量起作用的范围,一般是是当前代码块/文件作用域(注意同名的全局变量和局部变量)
    3).生命周期:
    描述一个变量何时诞生(运行时分配空间给这个变量),何时消亡(运行时回收内存,以后不能访问这个地址或这个地址与变量无关)
    4).链接属性:
    源代码在编译成.o文件时,里面有符号和代码段、数据段、bss段等分段。符号是编程中的函数名,变量名;程序运行时能变量名,函数名能和内存联系起来,靠的就是符号
    做链接。

    链接时能把.o文件实际上就是把符号和相应的段链接起来。

    C语言中的符号有三种链接属性:外连接属性、内链接属性、无连接属性。

    2.linux下的内存映像:


    1).代码段,只读数据段:
    a.代码段对应程序中的代码(函数),在linux中又叫文本段(.text)
    b.只读数据段保存那些程序运行期间不能被写的数据(部分平台下的const)

    2).数据段,清零段(bss):
    a.数据段存:显示初始化非零的全局变量;显式初始化为非0的static局部变量
    b.bss段存:显式初始化为0或者未显式初始化的全局变量;显式初始化为0或未显式初始化的static局部变量

    3).堆

    4).文件映射区:
    进程打开文件后,从硬盘把文件的内容读到文件映射区,之后在内存中操作这个文件,事后把文件映射区的内容写回硬盘。

    5).栈:
    存放局部变量,函数调用传参也会用到栈;(栈脏,注意栈里的变量要是没初始化值是不定的)

    6).内核映射区:
    (1)内核映射区就是将操作系统内核程序映射到这个区域了。
        (2)利用虚拟技术,每个进程都认为0xc0000000以上区域是内核空间,其以下是自己的活动空间。每个进程的独享空间不同,但是内核空间是唯一的。

    补充:
    1.C语言程序运行时环境有一定要求,单独个人写的C语言程序没法直接在内存中运行,需要外部一定的协助,这段协助的代码叫加载运行代码(或者叫构建C运行时环境的代码,这一段代码在操作系统下是别人写好的,会自动添加到我们写的程序上,这段代码的主要作用是:给全局变量赋值、清bss段。),要是没OS就要我们自己写加载运行代码咯。

    2.数据段的全局变量或静态局部变量都是有非0的初值的,这些初值在main函数运行之前就已经被初始化了,是重定位期间完成的初始化。



    3.存储类相关的关键字:
    (1)auto:
    只能修饰局部变量(自然定义在栈上),我们平时其实用的就是auto,不过是省略了;

    (2)static:
    1).修饰局部变量:静态局部变量和普通局部变量只要是存储类不同
    2).修饰全局变量:静态全局变量和非静态全局变量主要是链接属性不同。
    静态局部变量和全局变量异同:
    同:存储类和生命周期
    异:作用域:静态局部变量和非静态局部变量一样;
    链接属性:静态局部变量是无连接,全局变量是外连接

    (3)register
    一般用来修饰全局变量,使其尽量放在寄存器中处理更快。(寄存器不够用就放不进去了)

    (4)extern(C编译是以单个.c源文件为单位)
    extern主要用来声明全局变量,使其可以跨文件使用。是在a.c中定义全局变量(int a=10;),而在b.c中使用该变量前需要声明它(extern int a;)。
    将来在链接的时候链接器会在别的.o文件中找到这个同名变量。

    (5)volatile:(英文意思:易变的,可变的)
    用来修饰变量,表示这个变量可以被编译器以外的(编译器没有预料的情况,自然不是代码造成的)东西改变。
    譬如在中断处理程序isr中更改了这个变量的值,譬如多线程中在别的线程更改了这个变量的值,譬如硬件自动更改了这个变量的值(一般这个变量是一个寄存器的值);
    编译器在一般情况下会优化,帮助提高效率;但在以上三种情况下编译器优化是预料不到会产生什么结结果,为了避免出错,用volatile告诉编译器不用优化。
    例子:
    int a,b,c;
    a=10;
    b=a;
        c=b;  
    正常情况下编译器会优化,只取一次值,写三次(三次都写10)这时若因为以上三种情况在2-3句a的值或者3-4句间b的值被改变,那么结果就错了。如果用
    volatile int a,b,c;那么不优化取三次写三次就不会出错了。

    (6)restrict:
    1)c99中才支持的,所以很多延续c89的编译器是不支持restrict关键字,gcc支持的。
    2)restrict只用来修饰指针,修饰普通变量就跟没用一样;restrict也是和编译器行为特征有关的(加上用来优化),加上这个说明指针指向的变量值只能用指针来改变;
    参考:http://blog.chinaunix.net/uid-22197900-id-359209.html

    (7)typedef
    。。。


    4.属性详解:
    (1).作用域:
    1).
    局部变量代码块作用域:

    a.一个局部变量可以被访问和使用的范围仅限于定义这个局部变量的代码块中定义式之后的部分

    b.全局变量和函数的文件作用域:
    函数和全局变量的作用域是定义所在的整个.c文件之内定义式之后的部分;(两个方法:在前面定义;在后面定义,前面声明)
    c.在c89标准的编译器中(现在很多编译器还延续使用c89标准),所有的局部变量必须先定义在最前面,在变量定义之前不能有一句执行代码。在c99标准的编译器中(gcc兼容c99标准)可以允许在代码块内任意地方定义变量。但是允许定义的变量还是只能使用在定义了之后,定义之前还是不能用的。

    2).同名变量掩蔽规则:
    作用域不重叠,重名没关系;重叠了,在交叠范围内作用域小的那个会掩盖掉作用域大的。

    (2).生命周期:
    栈变量:
    堆变量;
    数据段,bss段:定义的全局变量直至程序终结,期间一直占着内存;局部static的生命周期和全局变量一样,作用域和非静态局部变量一样;
    代码段,只读段;不关心


    (3).链接属性:
    1).编译是为了将函数/变量等变成.o二进制的机器码格式,链接是为了将各个独立分开的二进制的函数链接起来形成一个整体的二进制可执行程序

    2).编译以文件为单位、链接以工程为单位
    (1)编译器工作时是将所有源文件依次读进来,单个为单位进行编译的。
    (2)链接的时候实际上是把第一步编译生成个单个的.o文件整体的输入,然后处理链接成一个可执行程序。
    3).
    外连接:外部链接属性,也就是说这家伙可以在整个程序范围内(言下之意就是可以跨文件)进行链接,譬如普通的函数和全局变量属于外连接。
    内链接:(c文件内部)内部链接属性,也就是说这家伙可以在当前c文件内部范围内进行链接(言下之意就是不能在当前c文件外面的其他c文件中进行访问、链接)。static修饰的函数/全局变量属于内链接。

    无连接:这个符号本身不参与链接,它跟链接没关系。所有的局部变量(auto的、static的)都是无连接的

    4).static的第二种用法:修饰全局变量和函数(可以在一定程度上解决重名问题)
    普通的(非静态)的函数/全局变量,默认的链接属性是外部的
    static(静态)的函数/全局变量,链接属性是内部链接。



    展开全文
  • ITC数据挖掘项目 当前状态:这是一个正在进行项目。... 在哪里类型 细节 例子 most-popular [YYYYMM] most-popular 202001 most-read COUNTRYperiod most-read ILm new-releases genre new-re
  • Go中变量定义

    2016-07-04 10:44:00
    一个变量定义是指,告诉编译器在哪里,有多少创建存储变量。变量定义指定一个数据类型,并且包含类型,如下一个或多个变量列表: var variable_list optional_data_type; 在这里,optional_data_type...

    一个变量的定义是指,告诉编译器在哪里,有多少创建存储变量。变量定义指定一个数据类型,并且包含的该类型,如下的一个或多个变量的列表:

    var variable_list optional_data_type;
    

    在这里,optional_data_type可以包括字节,整型,float32,complex64,布尔或任何用户定义的对象等有效Go的数据类型,variable_list可以由用逗号分隔的一个或多个标识符名称。一些有效的声明如下所示:

    var    i, j, k int;
    var   c, ch byte;
    var  f, salary float32;
    d = 42;
    

    这一行var i, j, k; 既声明并定义了变量i,j和k;这指示编译器创建一个名为i,j和k的 int类型变量。

    变量可以初始化(分配初始值)在他们的声明。变量的类型是由编译器自动根据传递给它的值判断。初始化包括一个等号后跟一个常量表达式如下:

    variable_name = value;
    

    一些实例是:

    d = 3, f = 5;    // declaration of d and f. Here d and f are int 
    

    对于没有初始化定义:具有静态存储时间变量的隐含零初始化(所有字节的值为0);所有其它变量的初始值是它们的数据类型的零值。

    转载于:https://www.cnblogs.com/vper/p/5639749.html

    展开全文
  • 顺序存储的结构体类型 LNode *L; LNode *creat_L(); void out_L(LNode *L); void insert_L(LNode *L,int i,ElemType e); ElemType delete_L(LNode *L,int i); int locat_L(LNode *L,ElemType e); 主函数 void ...
  • 抽象数据类型: 树的存储结构: 利用顺序存储和链式存储的特点,完全可以实现对树的存储...也就是说,每个结点除了直到自己是谁外,还要直到自己的双亲在哪里。如图: 其中data就是数据域,存储结点的信息。而paren...

    抽象数据类型:

    在这里插入图片描述

    树的存储结构:

    利用顺序存储和链式存储的特点,完全可以实现对树的存储结构的表示。介绍三种不同的表示法:双亲表示法、孩子表示法、孩子兄弟表示法。

    1.双亲表示法

    我们假设以一段连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。也就是说,每个结点除了直到自己是谁外,还要直到自己的双亲在哪里。如图:
    在这里插入图片描述

    其中data就是数据域,存储结点的信息。而parent是指针域,存储该结点的双亲在数组中的下标。
    双亲表示法的结点结构定义代码:

    //树的双亲表示法结点结构定义
    #define MAX_TREE_SIZE 100
    typedef int TElemType;   //树结点的数据类型,目前暂定整形
    typedef struct PTNode{    //结点结构
    TElemType   data;  //结点数据域
    	int parent;              //双亲位置
    }PTNode;
    typedef struct{              //树结构
    	PTNode nodes[MAX_TREE_SIZE];    //结点数组
    	int  r,n;                     //根节点的位置和结点数
    }
    

    有了这样的结构定义,我们就可以实现双亲定义法了。由于跟结点没有双亲,所以我们约定根结点的位置域设置为-1,这就意味着,我们所有结点都直到他双亲的位置。如图的树结构和双亲表示法的图表。
    在这里插入图片描述

    在这里插入图片描述

    我们可以通过上面快速的找到结点的双亲。但是我们要知道结点的孩子怎么办?那就只有遍历整个结构了。
    我们能否改进一下?当然可以,我们可以给结点增加孩子域。

    2.孩子表示法

    换一种完全不同的想法。由于树中每个结点可能有很多的子树,可以考虑用多重链表,即每一个结点有多个指针域,其中每个指针指向一个子树的根节点,我们把这种方法叫做多重链表表示法。不过,树的每个结点的度,也就是它孩子个数是不同的。所以可以设计两种方案来解决。

    方案一

    指针域的个数等于树的度。(树的度是树各个结点度的最大值)。(结点拥有的子树称为结点的度)。
    在这里插入图片描述

    如图,data就是数据域,child1····是指针域,用来指向该结点的孩子结点。

    就像6-4-1的树一样,我们用这个方法来实现。如图。
    在这里插入图片描述
    我们可以看到。^这个符号就是代表当前这个指针域并没有用到。这样如果树的各结点的度差距过大的话,显然非常浪费空间。那我们为什么不按需分配空间呢?这样就有第二种方案了

    方案二

    每个结点指针域的个数等于该结点的度,我们专门来取一个位置来存储结点指针域的个数。如图。
    在这里插入图片描述

    如图,data就是数据域。degree是度域,也就是存在该结点的孩子结点数。child1····是指针域,用来指向该结点的孩子结点。

    那么对应的树图就应该是这样。
    在这里插入图片描述
    显然,方案二克服了浪费空间的缺点,但是由于各个结点的链表结构是不相同的,在加上要维护结点的度的数值,在运算上显然有损耗。
    能否有更好的方法?既可以减少浪费,又能使结点结构相同。
    我们把每一个结点放入顺序存储结构中是合理的,但是每个结点的孩子多少是不确定的,所以我们再对每个结点的孩子建立一个单链表来体现他们的关系。
    这就是我们的孩子表示法
    具体办法:把每个结点的孩子排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。然后n个头指针有组成一个线性表,采用顺序存储结构,存进一个一维数组。如图。
    在这里插入图片描述
    为此,设计两种结构,一个是孩子链表的孩子结点,如图。
    在这里插入图片描述

    child是数据域,存储某个结点在表头数组中的下标。next是指针域,用来存储某结点的下一孩子结点的指针。

    另一个是表头数组的表头结点。如图。
    在这里插入图片描述

    data是数据域,存储某结点的数据信息。firstchild是头指针域,存储该节点的孩子链表的头指针。

    以下是孩子表示法的结构定义代码。

    //树的孩子表示法结点结构定义
    #define MAX_TREE_SIZE 100
    typedef int TElemType;   //树结点的数据类型,目前暂定整形
    typedef struct CTNode{      //孩子结点
    	int child;          
    	struct CTNode * next;              
    }*ChildPtr;
    typedef struct{              //表头结构
    	TElemType data;
    	ChildPtr firstchild;                    
    }CTBox;
    typedef struct{              //树结构
    	CTBox nodes[MAX_TREE_SIZE];    //结点数组
    	int  r,n;                     //根节点的位置和结点数
    }
    

    我们可以改进一下。把双亲表示法和孩子表示法综合一下,加一个双亲域。如图。(双亲孩子表示法)
    在这里插入图片描述

    3.孩子兄弟表示法

    任何一棵树,它的结点的第一个孩子如果是唯一的,它的右兄弟如果存在也是唯一的,因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟。
    结点结构如图。
    在这里插入图片描述

    data是数据域,firstchild为指针域,存储第一个孩子结点的地址,rightsib是指针域,存储该结点的右兄弟的地址。

    结构定义代码如下.

    //树的孩子兄弟表示法结构定义
    typedef struct CSNode{
    	TElemType data;
    	struct CSNode *firstchild,*rightsib;
    }CSNode,*CSTree;
    

    对于6-4-1的树来说,这种方法实现的示意图如图。
    在这里插入图片描述
    这种方法给查找某结点的某个孩子带来了方便,只需要通过firstchild 找到此结点的左儿子,然后再通过左儿子找到二弟,一直下去,知道找到具体的孩子。当然,如果想要找到双亲,完全可以增加一个parent 指针域来解决。

    参考:
    大话数据结构/程杰 著.—北京:清华大学出版社,2011.6

    展开全文
  • 在哪里, <input_taxonomy> =输入分类法文件路径。 分类文件格式应与以下位置Google产品分类相似: : <training> =生成用于训练超类型分类器模型训练数据 要训​​练超类型分类器模型,请使用以下...
  • 神奇指针

    2020-07-22 16:28:40
    指针是一种数据类型,使用它可以用来定义指针变量,指针变量中存储的其实是整数,这种整数代表了内存编号。 == 为什么要使用指针:== 1、函数之间相独立,但有些时候需要共享变量。 传参是值传递 全局变量容易命名...

    神奇指针在哪里

    指针是一种数据类型,使用它可以用来定义指针变量,指针变量中存储的其实是整数,这种整数代表了内存的编号。

    == 为什么要使用指针:==
    1、函数之间相独立,但有些时候需要共享变量。
    传参是值传递
    全局变量容易命名冲突
    使用数组还需要传递长度
    命名空间是独立的,但地址空间是同一个,所有指针可以解决这个问题。
    2、由于函数之间传参是值传递(内存拷贝),对于字节数比较多的变量,值传递效率较低,如果传递变量的地址只需要传递4|8字节。
    3、堆内存无法取名字,它不能像data、bss、stack让变量名与内存建立联系,只能使用指针记录堆内存的地址来使用堆内存。

    如何使用指针:
    定义:类型* 变量名_p;
    1、指针变量与普通变量的用法有很大区别,建议在取名以p结尾加心区分。
    2、指针变量与普通变量一样默认值是随机的,一般初始为 NULL。
    3、指针的类型决定了它可以访问多少个字节。
    4、一个只能定义一个指针变量。
    int* p1,p2,p3;// 只有p1 是指针变量,p2,p3都是int类型变量
    int *p1,*p2,*p3; // p1 p2 p3都是指针变量
    赋值:变量名_p = 地址;
    指向栈内存:
    int* p = &num;
    指向堆内存:
    int* p = malloc(4);
    解引用:*p
    通过指针变量中记录的内存编号去访问内存,该过程可能产生段错误,原因是里面存储的内存编号是非法的。注意:访问的字节数由指针变量的类型决定。
    练习1、实现一个变量交换函数,调用它对一个数组进行排序。
    void swap(int* p1,int* p2);
    练习2、实现个函数计算两个整数的最大公约数,和最小公倍数,最大公约数用return返回,最小公倍数使用指针处理。
    3 6 3
    3 6 6

    使用指针要注意的问题:

    1. 空指针:值为NULL的指针变量叫空指针,如果进行解引用就会产生段错误。
      NULL也是一种错误标志,如果一个函数返回值是指针类型,当函数执行出错返回值就是NULL。
      如何避免空指针带来的段错误:使用来历不明的指针前做一判断。
      1、当函数的参数是指针,别人传给你的就有可能是空指针。
      2、从函数获取的返回值也可能是空指针。
      if(NULL == p)
      注意:NULL在绝大多数系统中是0,在个别系统中是1。
      2.野指针:指向不确定的内存空间。
      解引用野指针的后果:
      1、段错误
      2、脏数据
      3、一切正常
      野指针比空指针的危害更严重,因它无法判断出来,而且可能是隐藏型的错误短时间内不暴露出 来。
      所有的野指针都是程序员自己制造出来的,如何避免产生野指针:
      1、定义指针变量时一定初始化。
      2、函数不返回栈内存的地址。
      3、指针指向的内存释放后,指针变量要及时置空。

    指针的运算:
    指针变量中存储的是整数,理论上整型数据可以使用的运算符它都可以用,但大多数运算都无意义的。
    指针+n <=> 宽度n+指针 前面n个元素
    指针-n <=> 指针-宽度
    n 后退n个元素
    指针-指针 <=> (指针-指针)/宽度 计算出两个指针之间相隔多少个元素

    const与指针:
    const int* p; 指针所指向的内存不可修改。当我们为了提高传参的效率而使用指针时,传参的效率高了,但变量也有被修改的风险,这种写法可以保护指针所指向的内存.
    int const *p; 同上
    int * const p; 指针变量不可被修改
    const int* const p; 指针变量和指针所指向的内存都不可修改。
    int const * const p; 同上

    指针数组与数组指针:
    指针数组:就是由指针组成的数组,它的成员是指针变量。
    类型* arr[长度];
    数组指针:专门指针数组的指针。
    类型 (*arr)[长度];

    #include <stdio.h>
    int main(int argc,const char* argv[])
    {
       int arr[10] = {0,1,2,3,4};
       int* p = (int*)(&arr+1);
       printf("%d\n",*(p-1));
       int (*p1)[5] = &arr;//存放的是地址即指针
       printf("%p %p\n",p1,&arr);
       for(int i=0; i<5; i++)
       {
       	printf("%d\n",(*p1)[i]);
       }
    }
    

    指针与数组名:
    数组名是一种特殊的指针,它是常量,不能修改它的值,它与数组的内存是映射关系。
    数组名 == &数组名 数组的首地址
    指针变量有自己的存储空间,如果它存储是数组的首地址,指针可以当数组使用,数组名也可以当指针使用。
    数组名[i] == *(数组名+1)
    数组作为函数的参数时入脱变成了指针,所以长度丢失。得到的就是首地址

    #include<stdio.h>                                                           
     
    int main(int argc,const char*argv[])
     {   
        int  a[5]={1,2,3,4,5};
        int* p=((int*)(&a));
        //int* p=a;同上
        printf("%p %p %p %p\n",p,a,&a,&a[0]);
        //数组a就是首地址 &a地址 &a[0]地址
        printf("%d %d %d %d\n",*a,*p,a[0],*(&a[0]));
       *p=3;
         //解引用赋值 指向地址的地方赋值
         for(int i=0;i<5;i++)
         {
             printf("%d  ",*p+i);
         }
         for(int i=0;i<5;i++)
         {
             printf("%d  ",*(a+i));
         }
             printf("\n%d\n",(a+3)-(a+1));
             printf("%p %p\n",&a[5],&a[4]);
             printf("%p\n",&a+1);
     }
    //(自己的更好得观察指针数组的关系)
    0xbfa28130 0xbfa28130 0xbfa28130 0xbfa28130
    1 1 1 1
    3  4  5  6  7  3  2  3  4  5  
    2
    0xbfa28144 0xbfa28140
    0xbfa28144
    
    

    二级指针:
    二级指针就是指向指针的指针,里面存储的是指针变量的地址。
    定义:类型** 变量名_pp;
    赋值:变量名_pp = &指针;
    解引用:
    ·*变量名_pp <=> 指针
    **变量名_pp <=> *指针
    函数指针:
    函数名就个地址(整数),它代表函数在代码段中所处的位置。
    函数指针就是指向函数的指针,它里面存储是函数在代码段中所处位置(函数名);
    typedef 返回值 (*函数指针)(类型1 参数名1,类型2 参数名2…);
    函数指针 fp;
    > 指针以及数组之间的转换赋值,学的还是皮毛。上面所记录的也没有太深入的理解;在这里插入图片描述

    展开全文
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.21 “无符号保护”和“值保护”规则区别在哪里? 42 第4章 指针 45 基本指针应用 45 4.1 指针到底有什么好处? 45 4.2 我想声明一个指针并为它分配一些空间,但却不行。这些代码有什么问题呢?char ...
  • 3.21 “无符号保护”和“值保护”规则区别在哪里? 42 第4章 指针 45 基本指针应用 45 4.1 指针到底有什么好处? 45 4.2 我想声明一个指针并为它分配一些空间,但却不行。这些代码有什么问题呢?char ...
  • //ExcelData.cs 存储从Excel解析来类信息和数据 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExcelData : ScriptableObject { [SerializeField] ...
  • 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 ...
  • 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面的问题 15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建...
  • MYSQL中文手册

    2013-03-11 21:21:34
    10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 ...
  • 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面的问题 15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建...
  • 22、commit在哪里会运用 47 23、行转列、列换行怎么转 48 24、什么是PL/SQL? 49 25、序列作用 50 26、表和视图关系 50 27、oracle基本数据类型 50 28、drop、truncate、 delete区别 50 29、如何优化大数据...
  • 一条数据的HBase之旅,简明HBase入门教程————推荐一个HBase入门系列博客 博文 基于HBase实时数仓探索实践 HBase 读流程解析与优化的最佳实践 HBase优化 | 探索regionserver参数优化 服务平台化,知乎 HBase ...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例60 我位置在哪里 83  实例61 复制数组 85  实例62 插入新元素 86  实例63 数组合并 87  实例64 去除重复元素 88  实例65 数组求和计算 90  实例66 求最大值、最小值和平均值 91  5.2 二维...
  • 5.5 关于数据的问题 121 5.6 建立逻辑表达式 126 5.7 小结 136 第6章 SQL执行计划 137 6.1 解释计划 137 6.1.1 使用解释计划 137 6.1.2 理解解释计划可能达不到目的的方式 143 6.1.3 阅读计划 146 6.2 执行...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例60 我位置在哪里 83  实例61 复制数组 85  实例62 插入新元素 86  实例63 数组合并 87  实例64 去除重复元素 88  实例65 数组求和计算 90  实例66 求最大值、最小值和平均值 91  5.2...
  • java范例开发大全

    2013-03-08 20:06:54
    实例60 我位置在哪里 83 实例61 复制数组 85 实例62 插入新元素 86 实例63 数组合并 87 实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组...
  • 5.5 关于数据的问题 121 5.6 建立逻辑表达式 126 5.7 小结 136 第6章 SQL执行计划 137 6.1 解释计划 137 6.1.1 使用解释计划 137 6.1.2 理解解释计划可能达不到目的的方式 143 6.1.3 阅读计划 146 6.2 执行...
  • 设置数据的时候 <code>set</code> 这个函数可以被触发,但是,,,,,,,,,,,,,,,,,&#...
  • 人事管理系统

    2016-01-14 21:29:29
    3、人事档案中的头像照片,保存文件夹中,减少data数据库的存储空间。 4、导入导出,备份还原,权限分组控制,窗体中某些功能限制等 5、组合查询,且可导出查询的任意结果,以及打印任意查询结果;报表也可以一个...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例60 我位置在哪里 83 实例61 复制数组 85 实例62 插入新元素 86 实例63 数组合并 87 实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 ...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    Holtek的数据手册在哪里下载? 答:如果对HoltekIC感兴趣话,相应的数据手册可以到网站上http://www.holtek.com.cn/products/index.htm去选IC资料下载。 12. 8位机还能延续多久! 答:以现在MCU产品...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

数据的存储类型data在哪里