当前位置: 首页 > news >正文

海外仓网站建设新网站推广最直接的方法

海外仓网站建设,新网站推广最直接的方法,怎么制作ppt课件,网站的站点建设分为一、5大内存分区 内存分成5个区#xff0c;它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 1、栈区(stack)#xff1a;FIFO就是那些由编译器在需要的时候分配#xff0c;在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 ​… 一、5大内存分区 内存分成5个区它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 1、栈区(stack)FIFO就是那些由编译器在需要的时候分配在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 ​ 2、堆区(heap)就是那些由new分配的内存块它们的释放编译器不去管由我们的应用程序去控制一般一个new就要对应一个delete。如果程序员没有释放掉那么在程序结束后操作系统会自动回收。 3、自由存储区就是那些由malloc等分配的内存块它和堆是十分相似的不过它是用free来结束自己的生命。 4、全局/静态存储区全局变量和静态变量被分配到同一块内存中在以前的C语言中全局变量又分为初始化的和未初始化的在C里面没有这个区分了他们共同占用同一块内存区。 5、常量存储区这是一块比较特殊的存储区它们里面存放的是常量不允许修改当然你要通过非正当手段也可以修改而且方法很多 内存主要分为代码段数据段和堆栈。代码段放程序代码属于只读内存。数据段存放全局变量静态变量常量等堆里存放自己malloc或new出来的变量其他变量就存放在栈里堆栈之间空间是有浮动的。数据段的内存会到程序执行完才释放。调用函数先找到函数的入口地址然后计算给函数的形参和临时变量在栈里分配空间拷贝实参的副本传给形参然后进行压栈操作函数执行完再进行弹栈操作。字符常量一般放在数据段而且相同的字符常量只会存一份。 二、C语言程序的存储区域 1、由C语言代码文本文件形成可执行程序二进制文件需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序汇编过程把汇编程序形成二进制机器代码连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。 2、C语言编写的程序经过编译-连接后将形成一个统一文件它由几个部分组成。在程序运行时又会产生其他几个部分各个部分代表了不同的存储区域 1代码段Code或Text 代码段由程序中执行的机器代码组成。在C语言中程序语句执行编译后形成机器代码。在执行程序的过程中CPU的程序计数器指向代码段的每一条机器代码并由处理器依次运行。 2只读数据段(RO data) 只读数据段是程序使用的一些不会被更改的数据使用这些数据的方式类似查表式的操作由于这些变量不需要更改因此只需要放置在只读存储器中即可。 3已初始化读写数据段(RW data) 已初始化数据是在程序中声明并且具有初值的变量这些变量需要占用存储器的空间在程序执行时它们需要位于可读写的内存区域内并且有初值以供程序运行时读写。 4未初始化数据段(BBS) 未初始化数据是在程序中声明但是没有初始化的变量这些变量在程序运行之前不需要占用存储器的空间。 5堆(heap) 堆内存只在程序运行时出现一般由程序员分配和释放。在具有操作系统的情况下如果程序没有释放操作系统可能在程序(例如一个进程)结束后会后内存。 6栈statck 堆内存只在程序运行时出现在函数内部使用的变量函数的参数以及返回值将使用栈空间栈空间由编译器自动分配和释放。 3、代码段、只读数据段、读写数据段、未初始化数据段属于静态区域而堆和栈属于动区域。代码段、只读数据段和读写数据段将在连接之后产生未初始化数据段将在程序初始化的时候开辟而对堆和栈将在程序饿运行中分配和释放。 4、C语言程序分为映像和运行时两种状态。在编译-连接后形成的映像中将只包含代码段(Text)、只读数据段(R0 Data)和读写数据段RW Data。在程序运行之前将动态生成未初始化数据段(BSS)在程序的运行时还将动态生成堆(Heap)区域和栈Stack区域。 1、一般来说在静态的映像文件中各个部分称之为节(Section)而在运行时的各个部分称之为段(Segment)。如果不详细区分统称为段。 2、C语言在编译连接后将生成代码段(TEXT)只读数据段(RO Data)和读写数据段(RW Data)。在运行时除了上述三个区域外还包括未初始化数据段(BBS)区域和堆heap区域和栈Stack区域。 三、C语言程序的段 1、段的分类 每一个源程序生成的目标代码将包含源程序所需要表达的所有信息和功能。目标代码中各段生成情况如下 1代码段Code 代码段由程序中的各个函数产生函数的每一个语句将最终经过编译和汇编生成二进制机器代码 2只读数据段(RO Data) 只读数据段由程序中所使用的数据产生该部分数据的特点在运行中不需要改变因此编译器会将数据放入只读的部分中。C语言的一些语法将生成只读数据数据段。 2、只读数据段(RO Data) 只读数据段(RO Data)由程序中所使用的数据产生该部分数据的特点是在运行中不需要改变因此编译器会将数据放入只读的部分中。以下情况将生成只读数据段。 1只读全局变量 定义全局变量const char a[100]”abcdefg”将生成大小为100个字节的只读数据区并使用字符串“abcdefg”初始化。如果定义为const char a[]”abcdefg”,没有指定大小将根据“abcdefgh”字串的长度生成8个字节的只读数据段。 2只读局部变量 例如在函数内部定义的变量const char b[100]”9876543210”;其初始化的过程和全局变量。 3程序中使用的常量 例如在程序中使用printf(informationn”),其中包含了字串常量编译器会自动把常量“information n”放入只读数据区。 注在const char a[100]{“ABCDEFG”}中定义了100个字节的数据区但是只初始化了前面的8个字节7个字符和表示结束符的‘0’。在这种用法中实际后面的字节米有初始化但是在程序中也不能写实际上没有任何用处。因此在只读数据段中一般都需要做完全的的初始化。 3、读写数据段RW Data 读写数据段表示了在目标文件中一部分可以读也可以写的数据区在某些场合它们又被称为已初始化数据段。这部分数据段和代码与只读数据段一样都属于程序中的静态区域但是具有科协的特点。 1已初始化全局变量 例如在函数外部定义全局的变量char a[100]”abcdefg” 2已初始化局部静态变量 例如在函数中定义static char b[100]”9876543210”。函数中由static定义并且已经初始化的数据和数组将被编译为读写数据段。 说明 读写数据区的特点是必须在程序中经过初始化如果只有定义没有初始值则不会生成读写数据区而会定义为未初始化数据区(BSS)。如果全局变量函数外部定义的变量加入static修饰符写成static char a[100]的形式这表示只能在文件内部使用而不能被其他文件使用。 4、未初始化数据段(BSS) 未初始化数据段常被称之为BSS(英文名为Block start by symbol的缩写)。与读写数据段类似它也属于静态数据区。但是该段中数据没有经过初始化。因此它只会在目标文件中被标识而不会真正称为目标文件中的一个段该段将会在运行时产生。未初始化数据段只有在运行的初始化阶段才会产生因此它的大小不会影响目标文件的大小。 四、在C语言的程序中对变量的使用需要注意的问题 1、在函数体中定义的变量通常是在栈上不需要在程序中进行管理由编译器处理。 2、用malloccalloc,realoc等分配分配内存的函数所分配的内存空间在堆上程序必须保证在使用后使用后freee释放否则会发生内存泄漏 3、所有函数体外定义的是全局变量加了static修饰符后的变量不管在函数内部或者外部存放在全局区静态区。 4、使用const定义的变量将放于程序的只读数据区。 说明 在C语言中可以定义static变量在函数体内定义的static变量只能在该函数体内有效在所有函数体外定义的static变量也只能在该文件中有效不能在其他源文件中使用对于没有使用 static修饰的全局变量可以在其他的源文件中使用。这些区别是编译的概念即如果不按要求使用变量编译器会报错。使用static 和没使用static修饰的全局变量最终都将放置在程序的全局去静态去。 四、程序中段的使用 C语言中的全局区静态区实际上对应着下述几个段 只读数据段:RO Data 读写数据段RW Data 未初始化数据段BSS Data 一般来说直接定义的全局变量在未初始化数据区如果该变量有初始化则是在已初始化数据区RW Data,加上const修饰符将放置在只读区域(RO Data). 例如: const char ro[ ]”this is a readonlydata”; //只读数据段不能改变ro数组中的内容ro存放在只读数据段。 char rw1[ ]”this is global readwrite data”; //已初始化读写数据段可以改变数组rw1中的内容。应为数值/是赋值不是把”this is global readwrite data” 地址给了rw1不能改变char rw1[ ]”this is global readwrite data”; //已初始化读写数据段可以改变数组rw1中的内容。应为数值/是赋值不是把”this is global readwrite data” 地址给了rw1不能改变”this is global readwrite data”的数值。因为起是文字常量放在只读数据段中 char bss_1[100];//未初始化数据段 const char *ptrconst “constant data”; //”constant data”放在只读数据段不能改变ptrconst中的值因为其是地址赋值。ptrconst指向存放“constant data”的地址其为只读数据段。但可以改变ptrconst地址的数值因其存放在读写数据段中。 实例讲解 int main( ){​short b;//b放置在栈上占用2个字节​char a[100];//需要在栈上开辟100个字节a的值是其首地址​char s[]”abcde”;​//s在栈上占用4个字节“abcde”本身放置在只读数据存储区占6字节。s是一个地址​//常量不能改变其地址数值即s是错误的。​char *p1;//p1在栈上占用4个字节​char *p2 123456;//123456放置在只读数据存储区占7个字节。p2在栈上p2指向的内容不能更​//改但是p2的地址值可以改变即p2是对的。​static char bss_2[100]; //局部未初始化数据段​static int c0 ; //局部静态初始化区​p1 (char *)malloc(10*sizeof(char)); //分配的内存区域在堆区​strcpy(p1,”xxx”); //”xxx”放置在只读数据存储区占5个字节​free(p1); //使用free释放p1所指向的内存​return 0;​} 说明 1、只读数据段需要包括程序中定义的const型的数据如const char ro[],还包括程序中需要使用的数据如“123456”。对于const char ro[]和const char * ptrconst的定义它们指向的内存都位于只读数据据区其指向的内容都不允许修改。区别在于前者不允许在程序中修改ro的值后者允许在程序中修改ptrconst本身的值。对于后者改写成以下的形式将不允许在程序中修改ptrconst本身的值 const char * const ptrconst “const data”; 2、读写数据段包含了已经初始化的全局变量static char rw1[]以及局部静态变量static char rw2[]。rw1和rw2的差别在于编译时是在函数内部使用的还是可以在整个文件中使用。对于前者static修饰在于控制程序的其他文件时候可以访问rw1变量如果有static修饰将不能在其他的C语言源文件中使用rw1这种影响针对编译-连接的特性但无论有static变量rw1都将被放置在读写数据段。对于后者rw2,它是局部的静态变量放置在读写数据区如果不使用static修饰其意义将完全改变它将会是开辟在栈空间局部变量而不是静态变量。 3、未初始化数据段事例1中的bss_1[100]和 bss_2[200]在程序中代表未初始化的数据段。其区别在于前者是全局的变量在所有文件中都可以使用后者是局部的变量只在函数内部使用。未初始化数据段不设置后面的初始化数值因此必须使用数值指定区域的大小编译器将根据大小设置BBS中需要增加的长度。 4、栈空间包括函数中内部使用的变量如short b和char a[100]以及char *p1中p1这个变量的值。 1变量p1指向的内存建立在堆空间上堆空间只能在程序内部使用但是堆空间(例如p1指向的内存)可以作为返回值传递给其他函数处理。 2栈空间主要用于以下3类数据的存储 a、函数内部的动态变量 b、函数的参数 c、函数的返回值 3栈空间主要的用处是供函数内部的动态变量使用变量的空间在函数开始之前开辟在函数退出后由编译器自动回收。看一个例 int main( ){    char *p  tiger;    p[1]  I;    p;    printf(%sn,p);} 编译后提示段错误 分析 char *p tiger;系统在栈上开辟了4个字节存储p的数值。tiger在只读存储区中存储因此tiger的内容不能改变*ptiger表示地址赋值因此p指向了只读存储区因此改变p指向的内容会引起段错误。但是因为p是存放在栈上因此p的数值是可以改变的因此p是正确的。 五、const的使用 1、前言 const是一个C语言的关键字它限定一个变量不允许被改变。使用const在一定程序上可以提高程序的健壮性另外在观看别人代码的时候清晰理解const所起的作用对理解别人的程序有所帮助。 2、const变量和常量 1const修饰的变量其值存放在只读数据段中其值不能被改变。称为只读变量。 其形式为 const int a5;此处可以用a代替5 2常量其也存在只读数据段中其数值也不能被改变。其形式为abc ,5 3、const 变量和const限定的内容先看一个事例 typedef char* pStr;​int main( ){ char string[6]  “tiger”; const char *p1  string; const pStr p2  string; p1; p2; printf(“p1%snp2%sn”,p1,p2);} 程序经过编译后提示错误为 error:increment of read-only variable ‘p2’ 1)const 使用的基本形式为const char m; //限定m 不可变 2)替换1式中的m,const char *pm; //限定*pm不可变当然pm是可变的因此p1是对的。 3)替换1式中的char,const newType m; //限定m不可变问题中的pStr是一种新类型因此问题中p2不可变p2是错误的。 4、const 和指针 类型声明中const用来修饰一个常量有如下两种写法 1)const在前面 const int nValue;//nValue是const const char *pContent;//*pContent是const,pConst可变 const (char *)pContent;//pContent是const,*pContent可变 char *const pContent;//pContent是const,*pContent可变 const char * const pContent;//pContent和*pContent都是const 2)const 在后面与上面的声明对等 int const nValue// nValue是const char const *pContent;//*pContent是const, pContent可变 (char *) constpContent;//pContent是const, *pContent可变 char* const pContent;// pContent是const, *pContent可变 char const* const pContent;//pContent和*pContent都是const 说明const和指针一起使用是C语言中一个很常见的困惑之处,下面是两天规则 1沿着*号划一条线如果const位于*的左侧则const就是用来修饰指针所指向的变量即指针指向为常量如果const位于*的右侧const就是修饰指针本身即指针本身是常量。你可以根据这个规则来看上面声明的实际意义相信定会一目了然。 2对于const (char *) ; 因为char *是一个整体相当于一个类型(如char)因此这是限定指针是const。 六、data、idata、xdata、pdata、code 从数据存储类型来说8051系列有片内、片外程序存储器片内、片外数据存储器片内程序存储器还分直接寻址区和间接寻址类型分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型使用不同的存储器将使程序执行效率不同在编写C51程序时最好指定变量的存储类型这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同它只分SAMLL、COMPACT、LARGE模式各种不同的模式对应不同的实际硬件系统也将有不同的编译结果。 在51系列中data,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128个RAM可以用acc直接读写的速度最快生成的代码也最小。 idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为mox ACC,Rx.(不重要的补充c中idata做指针式的访问效果很好) xdata:外部扩展RAM一般指外部0x0000-0xffff空间用DPTR访问。 pdata:外部扩展RAM的低256个字节地址出现在A0-A7的上时读写用movx ACC,Rx读写。这个比较特殊而且C51好象有对此BUG建议少用。但也有他的优点具体用法属于中级问题这里不提。 单片机C语言unsigned char code table[]code 是什么作用 code的作用是告诉单片机我定义的数据要放在ROM程序存储区里面写入后就不能再更改其实是相当与汇编里面的寻址MOVX(好像是)因为C语言中没办法详细描述存入的是ROM还是RAM寄存器所以在软件中添加了这一个语句起到代替汇编指令的作用对应的还有data是存入RAM的意思。 程序可以简单的分为code程序区和data 数据区code区在运行的时候是不可以更改的data区放全局变量和临时变量是要不断的改变的cpu从code区读取指令对data区的数据进行运算处理因此code区存储在什么介质上并不重要象以前的计算机程序存储在卡片上code区也可以放在rom里面也可以放在ram里面也可以放在flash里面但是运行速度要慢很多主要读flash比读ram要费时间因此一般的做法是要将程序放到flash里面然后load到 ram里面运行的;DATA区就没有什么选择了肯定要放在RAM里面放到rom里面改动不了。 bdata如何使用它呢 若程序需要8个或者更多的bit变量如果你想一次性给8个变量赋值的话就不方便了举个例子说说它的方便之处想更深入的了解请在应用中自己琢磨又不可以定义bit数组只有一个方法 char bdata MODE; sbit MODE_7 MODE^7; sbit MODE_6 MODE^6; sbit MODE_5 MODE^5; sbit MODE_4 MODE^4; sbit MODE_3 MODE^3; sbit MODE_2 MODE^2; sbit MODE_1 MODE^1; sbit MODE_0 MODE^0; 8个bit变量MODE_n 就定义好了 这是定义语句Keilc 的特殊数据类型。记住一定要是sbit 不能 bit MODE_0 MODE^0; 赋值语句要是这么写C语言就视为异或运算。 Flash相对单片机里的RAM属于外部存取器虽其结构位置装在单片机中其实xdata是放在相对RAM的外面而flash正是相对RAM外面。 inta变量定义在内部RAM,xdatainta定义在外部RAM或flashuchar codea定义在flash。 uchar code duma[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //共阴的数码管段选,P2口要取的数值。 若定义 uchar aa[5],aa[5]中的内容是存放在数据存储区RAM中的在程序运行工程中各个数组元素的值可以被修改掉电后aa[5]中的数据无法保存。 若定义 uchar code bb[5]中的内容是存放在程序存储区如flash中的,只有在烧写程序时才能改变bb[5]中的各元素的值在程序运行工程中无法修改并且掉电后bb[5]中的数据不消失。 七、C语言中堆和栈的区别 C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈、堆、数据段由三部分部分组成只读数据段已经初始化读写数据段未初始化数据段即BBS和代码段组成如下图所示 1、栈区(stack):由编译器自动分配释放存放函数的参数值局部变量等值。其操作方式类似于数据结构中的栈。 2、堆区(heap):一般由程序员分配释放若程序员不释放则可能会引起内存泄漏。注堆和数据结构中的堆栈不一样其类是与链表。 3、程序代码区存放函数体的二进制代码。 4、数据段由三部分组成 1只读数据段 只读数据段是程序使用的一些不会被更改的数据使用这些数据的方式类似查表式的操作由于这些变量不需要更改因此只需要放置在只读存储器中即可。一般是const修饰的变量以及程序中使用的文字常量一般会存放在只读数据段中。 2已初始化的读写数据段 已初始化数据是在程序中声明并且具有初值的变量这些变量需要占用存储器的空间在程序执行时它们需要位于可读写的内存区域内并且有初值以供程序运行时读写。在程序中一般为已经初始化的全局变量已经初始化的静态局部变量(static修饰的已经初始化的变量) 3未初始化段BSS 未初始化数据是在程序中声明但是没有初始化的变量这些变量在程序运行之前不需要占用存储器的空间。与读写数据段类似它也属于静态数据区。但是该段中数据没有经过初始化。未初始化数据段只有在运行的初始化阶段才会产生因此它的大小不会影响目标文件的大小。在程序中一般是没有初始化的全局变量和没有初始化的静态局部变量。 堆和栈的区别 1、申请方式 (1)栈satck:由系统自动分配。例如声明在函数中一个局部变量int b;系统自动在栈中为b开辟空间。 (2)堆heap:需程序员自己申请调用malloc,realloc,calloc,并指明大小并由程序员进行释放。容易产生memory leak. eg:charp; p (char *)malloc(sizeof(char));//但是p本身是在栈中。 2、申请大小的限制 1栈在windows下栈是向底地址扩展的数据结构是一块连续的内存区域(它的生长方向与内存的生长方向相反)。栈的大小是固定的。如果申请的空间超过栈的剩余空间时将提示overflow。 2堆堆是高地址扩展的数据结构它的生长方向与内存的生长方向相同是不连续的内存区域。这是由于系统使用链表来存储空闲内存地址的自然是不连续的而链表的遍历方向是由底地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。 3、系统响应 1栈只要栈的空间大于所申请空间系统将为程序提供内存否则将报异常提示栈溢出。 2堆首先应该知道操作系统有一个记录空闲内存地址的链表但系统收到程序的申请时会遍历该链表寻找第一个空间大于所申请空间的堆结点然后将该结点从空闲链表中删除并将该结点的空间分配给程序另外对于大多数系统会在这块内存空间中的首地址处记录本次分配的大小这样代码中的free语句才能正确的释放本内存空间。另外找到的堆结点的大小不一定正好等于申请的大小系统会自动的将多余的那部分重新放入空闲链表中。 说明对于堆来讲对于堆来讲频繁的new/delete势必会造成内存空间的不连续从而造成大量的碎片使程序效率降低。对于栈来讲则不会存在这个问题。 4、申请效率 1栈由系统自动分配速度快。但程序员是无法控制的 2堆是由malloc分配的内存一般速度比较慢而且容易产生碎片不过用起来最方便。 5、堆和栈中的存储内容 1栈在函数调用时第一个进栈的主函数中后的下一条语句的地址然后是函数的各个参数参数是从右往左入栈的然后是函数中的局部变量。注静态变量是不入栈的。 当本次函数调用结束后局部变量先出栈然后是参数最后栈顶指针指向最开始存的地址也就是主函数中的下一条指令程序由该点继续执行。 2堆一般是在堆的头部用一个字节存放堆的大小。 6、存取效率 1堆char *s1”hellowtigerjibo”;是在编译是就确定的 2栈char s1[]”hellowtigerjibo”;是在运行时赋值的用数组比用指针速度更快一些指针在底层汇编中需要用edx寄存器中转一下而数组在栈上读取。 补充 栈是机器系统提供的数据结构计算机会在底层对栈提供支持分配专门的寄存器存放栈的地址压栈出栈都有专门的指令执行这就决定了栈的效率比较高。堆则是C/C函数库提供的它的机制是很复杂的例如为了分配一块内存库函数会按照一定的算法具体的算法可以参考数据结构/操作系统在堆内存中搜索可用的足够大小的空间如果没有足够大小的空间可能是由于内存碎片太多就有可能调用系统功能去增加程序数据段的内存空间这样就有机会分到足够大小的内存然后进行返回。显然堆的效率比栈要低得多。 7、分配方式 1堆都是动态分配的没有静态分配的堆。 2栈有两种分配方式静态分配和动态分配。静态分配是编译器完成的比如局部变量的分配。动态分配由alloca函数进行分配但是栈的动态分配和堆是不同的。它的动态分配是由编译器进行释放无需手工实现。
文章转载自:
http://www.morning.lnrr.cn.gov.cn.lnrr.cn
http://www.morning.mnccq.cn.gov.cn.mnccq.cn
http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn
http://www.morning.knqck.cn.gov.cn.knqck.cn
http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn
http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn
http://www.morning.nfzw.cn.gov.cn.nfzw.cn
http://www.morning.wslr.cn.gov.cn.wslr.cn
http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn
http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn
http://www.morning.qcygd.cn.gov.cn.qcygd.cn
http://www.morning.qkdbz.cn.gov.cn.qkdbz.cn
http://www.morning.ai-wang.cn.gov.cn.ai-wang.cn
http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn
http://www.morning.yqqxj1.cn.gov.cn.yqqxj1.cn
http://www.morning.wplbs.cn.gov.cn.wplbs.cn
http://www.morning.mnsts.cn.gov.cn.mnsts.cn
http://www.morning.rhdln.cn.gov.cn.rhdln.cn
http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn
http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn
http://www.morning.syrzl.cn.gov.cn.syrzl.cn
http://www.morning.ndmbd.cn.gov.cn.ndmbd.cn
http://www.morning.wrlqr.cn.gov.cn.wrlqr.cn
http://www.morning.xqxrm.cn.gov.cn.xqxrm.cn
http://www.morning.tfsyk.cn.gov.cn.tfsyk.cn
http://www.morning.zpqk.cn.gov.cn.zpqk.cn
http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn
http://www.morning.bbyqz.cn.gov.cn.bbyqz.cn
http://www.morning.dpgdj.cn.gov.cn.dpgdj.cn
http://www.morning.hqjtp.cn.gov.cn.hqjtp.cn
http://www.morning.sknbb.cn.gov.cn.sknbb.cn
http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn
http://www.morning.fwgnq.cn.gov.cn.fwgnq.cn
http://www.morning.pwrkl.cn.gov.cn.pwrkl.cn
http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn
http://www.morning.rljr.cn.gov.cn.rljr.cn
http://www.morning.mcjyair.com.gov.cn.mcjyair.com
http://www.morning.xysxj.com.gov.cn.xysxj.com
http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn
http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn
http://www.morning.bqdpy.cn.gov.cn.bqdpy.cn
http://www.morning.nbybb.cn.gov.cn.nbybb.cn
http://www.morning.ggqcg.cn.gov.cn.ggqcg.cn
http://www.morning.qyllw.cn.gov.cn.qyllw.cn
http://www.morning.shxmr.cn.gov.cn.shxmr.cn
http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn
http://www.morning.kpbq.cn.gov.cn.kpbq.cn
http://www.morning.kwxr.cn.gov.cn.kwxr.cn
http://www.morning.lwjlj.cn.gov.cn.lwjlj.cn
http://www.morning.deupp.com.gov.cn.deupp.com
http://www.morning.btqqh.cn.gov.cn.btqqh.cn
http://www.morning.fmrd.cn.gov.cn.fmrd.cn
http://www.morning.rsszk.cn.gov.cn.rsszk.cn
http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn
http://www.morning.xplng.cn.gov.cn.xplng.cn
http://www.morning.leeong.com.gov.cn.leeong.com
http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn
http://www.morning.wflsk.cn.gov.cn.wflsk.cn
http://www.morning.crsqs.cn.gov.cn.crsqs.cn
http://www.morning.qlznd.cn.gov.cn.qlznd.cn
http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn
http://www.morning.rwpfb.cn.gov.cn.rwpfb.cn
http://www.morning.xsetx.com.gov.cn.xsetx.com
http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn
http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn
http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn
http://www.morning.fjglf.cn.gov.cn.fjglf.cn
http://www.morning.ssqwr.cn.gov.cn.ssqwr.cn
http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn
http://www.morning.mzydm.cn.gov.cn.mzydm.cn
http://www.morning.tgyqq.cn.gov.cn.tgyqq.cn
http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn
http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn
http://www.morning.qzmnr.cn.gov.cn.qzmnr.cn
http://www.morning.gfhng.cn.gov.cn.gfhng.cn
http://www.morning.lmrjn.cn.gov.cn.lmrjn.cn
http://www.morning.kmwsz.cn.gov.cn.kmwsz.cn
http://www.morning.lsssx.cn.gov.cn.lsssx.cn
http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn
http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn
http://www.tj-hxxt.cn/news/266193.html

相关文章:

  • 杭州设计门户网站seo怎么才能做好
  • 中铁建设集团有限公司免费的seo优化工具
  • 帝国建站程序网站建设合同怎么写
  • 2019河北省建设厅检测员报名网站wordpress 手机站目录
  • 各大网站下载太原自助模板建站
  • 南宁市优化网站公司wordpress删除文章
  • 网站建设创意文案the_post wordpress
  • 家具网站开发天长市建设局网站
  • 酒店网站建设方案书微小店网站建设比较好
  • 北京智能网站建设系统加盟台州城乡建设规划网站
  • 手机能看的网站有哪些汽车网站建设参考文献开题报告
  • 建设宠物网站的目的20元备案域名
  • 织梦网站地图模板样式成都网站seo报价
  • 学完js了可以做哪些网站网站内页权重怎么查
  • 网站的pv统计功能怎样做网页设计师联盟官网
  • 订阅号可以做微网站做seo推广公司网站
  • 一般网站的建设步骤有哪些无锡网站推广$做下拉去118cr
  • 橙 网站分销系统设计
  • 公司网站建设的相关建议网站如何用微信支付
  • 电脑做会计从业题目用什么网站罗湖城网站建设
  • 网站开发的出路国内设计大神网站
  • 刷数据网站怎么推广上海优秀网站设计
  • 网站建设费科目广州网络营销的推广
  • 网站开发需要数据库技术com域名注册优惠
  • 易班网站的建设内容如何制作宣传小视频
  • wordpress站点改名马良行网站3d模型预览怎么做的
  • wordpress汽配网站如何建设 营销型 网站
  • 长春网站建设优化排名阿里巴巴免费做网站
  • 域名怎么绑定自己网站承德做网站设计的
  • 财务公司网站源码国外网站在国内备案