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

网站开发意见书如何查询企业电话号码

网站开发意见书,如何查询企业电话号码,建设部网站首页督办案件,国内设计网站公司网站1.什么是当前路径 exe - /home/lin/Desktop/Linux_learn/fork_learn/test 当前进程执行是磁盘路径下的哪一个程序 cwd - /home/lin/Desktop/Linux_learn/fork_learn 当前进程的工作目录------》当前进程 1.1当前路径这个地址能改吗#xff1f; 可以#xff0c;使…1.什么是当前路径 exe - /home/lin/Desktop/Linux_learn/fork_learn/test 当前进程执行是磁盘路径下的哪一个程序 cwd - /home/lin/Desktop/Linux_learn/fork_learn 当前进程的工作目录------》当前进程 1.1当前路径这个地址能改吗 可以使用函数chdir() chdir(/home/lin);//这个路径一定要存在 2.重谈文件 1.空文件也要占磁盘空间 2.文件的内容加属性 3.文件操作对内容对属性or内容和属性 4.标定一个文件的时候必须使用文件路径文家名唯一性 5.如果没有指定文件路径默认时在当前路径下进程当前路径进行文件访问。 6.当我们把fopen,fclose,fread,fwrite等接口写完之后代码编译之后形成的二进制程序之后但是没有运行文件对应的操作做了没有没有------》对文件的操作是进程对文件的操作。 7.一个文件没有被打开可以直接进行文件访问吗不可以。一个文件要被访问一定要被打开(并不是所有文件都被打开)。-------》用户进程OS 所以文件分类1.被打开的文件 2.没被打开的文件 结论文件操作的本质是进程和被打开文件的关系 文件在磁盘上硬件只有OS有资格访问文件--------所有人访问文件都绕不过OS----使用OS提供的接口--------提供文件级别的系统调用接口--------》可以操作系统的只有一个。》所以1.上层高级语言如何变化库函数底层 必须 调用系统接口 2.库函数可以千变万化但底层不变----》如何降低学习成本呢学习不变的东西。 3.重谈文件操作 3.1C语言上的文件操作 文件使用方式 含义 如果指定文件不存在 “r”只读 为了输入数据打开一个已经存在的文本文件 出错 “w”只写 为了输出数据打开一个文本文件 建立一个新的文件 “a”追加 向文本文件尾添加数据 建立一个新的文件 “rb”只读 为了输入数据打开一个二进制文件 出错 “wb”只写 为了输出数据打开一个二进制文件 建立一个新的文件 “ab”追加 向一个二进制文件尾添加数据 建立一个新的文件 “r”读写 为了读和写打开一个文本文件 出错 “w”读写 为了读和写建议一个新的文件 建立一个新的文件 “a”读写 打开一个文件在文件尾进行读写 建立一个新的文件 “rb”读写 为了读和写打开一个二进制文件 出错 “wb”读写 为了读和写新建一个新的二进制文件 建立一个新的文件 “ab”读写 打开一个二进制文件在文件尾进行读和写 建立一个新的文件 3.2hello.c写文件 #include string.h #include stdio.h int main() {FILE *fp fopen(myfile, w);if(!fp){printf(fopen error!\n);}const char *msg hello bit!\n;int count 5;while(count--){fwrite(msg, strlen(msg), 1, fp);}fclose(fp);return 0; } 3.3hello.c读文件 #include stdio.h #include string.h int main() {FILE *fp fopen(myfile, r);if(!fp){printf(fopen error!\n);}char buf[1024];const char *msg hello bit!\n;while(1){//注意返回值和参数,此处有坑,仔细查看man手册关于该函数的说明size_t s fread(buf, 1, strlen(msg), fp);if(s 0){buf[s] 0;printf(%s, buf);}if(feof(fp)){break;}}fclose(fp);return 0; } 4.系统调用文件接口 4.0open 返回值文件描述符整数或-1 参数mode就是权限 flags选项全大写宏 在C语言中我们会给函数中传一个标记位C90没有bool类型用标记位表示某一个事情发生了或者将标记位作为返回值把结果拿出去。C传标记位一个int----》只传一个标记位》当要传多个呢一个int有32个bit位这样我们就可以使用比特位来传递选项。 O_TRUNC选项对文件作清空O_APPEND追加 int fd open(FILE_NAME,O_WRONLY | O_CREAT | O_TRUNC ,0666);//对应c语言的w int fd open(FILE_NAME,O_WRONLY | O_CREAT | O_APPEND ,0666);//对应c语言的a int fd open(FILE_NAME,O_RDONLY); //对应c语言的r pathname: 要打开或创建的目标文件 flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。 参数: O_RDONLY: 只读打开 O_WRONLY: 只写打开 O_RDWR: 读,写打开 O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限 O_APPEND: 追加写 返回值: 成功:新打开的文件描述符 失败:-1 mode_t理解:直接 man 手册 4.1如何使用比特位传递选项 //标记位每一个宏标记的数值只有一个比特位且是1彼此位置不重叠 //好的写法是#define ONE (10) #define ONE 0X1 //0001 #define TWO 0X2 //0010 #define THREE 0X4 // 0100 #define EIGHT 0x8 //1000void show(int flags) {if(flagsONE) {printf(one\n);}if(flagsTWO) {printf(two\n);}if(flagsTHREE) {printf(three\n);}if(flagsEIGHT) {printf(eight\n);} }int main() {//像打谁传谁show(ONE);show(ONE | TWO);show(ONE | TWO | THREE);show(TWO);} 我们再回头卡看这个open函数的标记位 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); //没有该文件的时候用下面这个函数这个文件权限0666 O_RDONLY(只读), O_WRONLY(只写), or O_CRAT(没有创建).这就是宏对应着标志位。 #includestdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include assert.h #define FILE_NAME log.txt int main() {int fd open(FILE_NAME,O_WRONLY | O_CREAT ,0666);if(fd 0){perror(open);}(void)fd;close(fd);return 0; } 当我们不想用系统给的umask创建文件的时候权限由我们设置 #includestdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include assert.h #define FILE_NAME log.txt int main() {umask(0);//改的是子进程的umaskint fd open(FILE_NAME,O_WRONLY | O_CREAT ,0666);if(fd 0){perror(open);}(void)fd;close(fd);return 0; } 0666的文件权限 4.2文件描述符 #includestdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include assert.h #define FILE_NAME log.txt int main() {umask(0);//改的是子进程的umaskint fd open(FILE_NAME,O_WRONLY | O_CREAT ,0666);if(fd 0){perror(open);}printf(%d\n,fd);(void)fd;close(fd);return 0; } 从3开始为什么从3开始012呢 printf(stdin-fd:%d\n,stdin-_fileno); printf(stdout-fd:%d\n,stdout-_fileno); printf(stderr-fd:%d\n,stderr-_fileno); 三个标准输入输出流 stdin键盘stdout显示器stderr显示器 FILE *fp fopen() FILE是啥 是一个结构体----------》底层系统调用管理文件的是文件描述符------》所以这个结构体必定有一个字段文件描述符 文件描述符的本质是啥 地址下标 文件描述符的分配规则 先关闭0和2文件再分配两个文件就是0和2close(0),close(2); 文件log.txt在磁盘中存储当加载到内存时OS为了管理为其创建结构体struct file结构体包含了文件的属性。这时进程为了管理这些文件就会创建一个struct files_struct *file的多文件管理结构体指针他通过指向多文件管理结构体struct files_struct来找到要管理的文件在这个struct files_struct结构体中有一个结构体数组struct file* fd_arry[],这个结构体数组就存储着struct file,对内存中的文件进行管理。这样进程与被打开的文件就关联了起来。 #include stdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcnt.h int main() {close(1);int fd open(log.txt,O_WRONLY | O_CREAT | O_TRUNC, 0666);if(fd 0){perror(open);return 1;}printf(%d\n,fd);fflaush(stdout); //加上刷新close(fd);return 0; } 当0关闭的时候这时候从文件描述符表的表里面找一个位置放按从小到大按照顺序找到最小的且没有被占用的fd-----------这就是文件描述符的分配规则 关闭0和2的时候没有问题这时候如果关闭1printf(%d,fd)就会出现不显示输出了因为1为比标准输出当1被关闭的时候就不会有输出了。 printf就是向stdout打的stdout是向显示器fd1中打的所以现在的fd1为文件log.txt最终的printf(%d,fd)就会输出到文件中。但是文件没有这是因为向显示器打印的缓冲区的刷新策略和向普通文件打印的缓冲区的刷新策略不一样。 上面的情况本来应该到显示器上但是到了文件里这种现象就称为重定向。本质上层的fd不变内核更改fd对应的struct file* 的地址 输出重定向 追加重定向   输入重定向 系统给我们做了关于重定向的接口 4.3dup重定向函数系统接口(dup2) int dup2(int oldfd, int newfd);//newfd是oldfd的拷贝。newfd必须和oldfd一样。 在两个文件描述符之间的拷贝。把file * fd_arry[]数组对应的file*对应文件的内容进行拷贝。fd为文件的标识符1为显示器文件的标识符要想把内容输出到文件中就要把fd的内容拷贝的1。让1为fd的文件标识符。也就是把fd的内容拷贝到1。 这时fd的内容和1的内容都以fd为主了。这时候fd就是oldfd,1就是newfd。 这样上面的代码我们就可以写成 #include stdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcnt.hint main() {int fd open(log.txt,O_WRONLY | O_CREAT | O_TRUNC, 0666);if(fd 0){perror(open);return 1;}dup2(fd,1); //fd为oldfd,1就是newfd。printf(%d\n,fd);fflush(stdout);close(fd);return 0; } 输出重定向 int fd open(log.txt,O_WRONLY | O_CREAT | O_TRUNC, 0666); dup2(fd,1); //fd为oldfd,1就是newfd。 追加重定向 int fd open(log.txt,O_WRONLY | O_CREAT | O_APPEND, 0666); dup2(fd,1); //fd为oldfd,1就是newfd。 const char*msg hello world; write(1,msg,strlen(msg)); 输入重定向 int fd open(log.txt,O_RDONLY); char line[64]; du2p(fd,0); //输入重定向 //fd--0从文件中输入。 while(1) { printf(); if(gets(line,sizeof(line),stdin) NULL),break; printf(%s,line); } dup2(fd,1); //fd为oldfd,1就是newfd。 4.4 write文件写入(向文件描述符中写入) ssize_t write(int fd, const void *buf, size_t count); 参数 fd:文件描述符 buf:对应缓冲区数据在哪(void*) count:缓冲区字节个数 返回值: 写了几个字节 文件读写分类C语言提供的 ASCLL类文本类二进制类 这里用的是const void *bufvoid*操作系统看来都是二进制。 #includestdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include assert.h#define FILE_NAME log.txtint main() {umask(0);int fd open(FILE_NAME,O_WRONLY | O_CREAT ,0666);if(fd 0){perror(open);}char outBuffer[64];int cnt 5;while(cnt);{sprintf(outBuffer,%s:%d\n,hello lin,cnt--);//C语言规定\0结尾跟系统没有关系write(fd,outBuffer,strlen(outBuffer));//所以向文件中写入字符串不用加1除非你就想把\0写进去}//printf(%d\n,fd);//(void)fd;close(fd);return 0; } 4.5read文件读取(向文件描述符中读取) #includestdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include assert.h #include string.h#define FILE_NAME log.txtint main() {int fd open(FILE_NAME,O_RDONLY);if(fd 0){perror(open);return 1;}char RBuffer[1024];ssize_t num read(fd,RBuffer,sizeof(RBuffer)-1);if(num0){RBuffer[num] 0; // 0,\0,NULL---0printf(%s,RBuffer);}(void)fd;close(fd);return 0; } 4.6lseek #include unistd.h off_t lseek(int fd, off_t offset, int whence); fd: 文件描述符指向已经打开的文件。offset: 要设置的偏移量根据 whence 参数来解释。whence: 指定偏移量的基准位置取值如下 SEEK_SET: 文件开头。SEEK_CUR: 当前文件位置。SEEK_END: 文件末尾。 返回值 返回新的文件偏移量以字节为单位。如果失败返回 -1并设置 errno 以指示错误原因。 5.库函数接口与系统调用接口 库函数接口(封装了系统调用的接口) fopen/fclose/fwrite/fread/fseek 系统调用接口 open/close/write/read/lseek 6.被打开的文件与进程 文件操作的本质进程和被打文件的关系。 进程可以打开多个文件-------》系统中一定存在大量被打开的文件-------》被打开的文件要被OS管理起来------》先描述再组织------》操作系统为了管理对应的文件必定要位文件创建相应的内核结构标识文件------》struct_file{}------包含了文件的大部分的属性。 文件log.txt在磁盘中存储当加载到内存时OS为了管理为其创建结构体struct file结构体包含了文件的属性。这时进程为了管理这些文件就会创建一个struct files_struct file的多文件管理结构体指针他通过指向多文件管理结构体struct files_struct来找到要管理的文件在这个struct files_struct结构体中有一个结构体数组struct file fd_arry[],这个结构体数组就存储着struct file,对内存中的文件进行管理。这样进程与被打开的文件就关联了起来。 6.1Linux系统下一切皆文件 每一个硬件都有对应的结构体。 键盘有对应的struct keyboard{} 显示器有对应的struct tty{} 键盘有对应的struct disk{} 网卡有对应的struct netcard{} 这些都有对应的IO函数。 例如键盘 int keyboardRead(){} //向键盘中读 int keyboardWrite(){NULL} //向键盘中写有但是方法为空 显示器 int ttyRead(){NULL} //显示器中读有但是方法为空 int ttyWrite(){} //向显示器中写 其中这些读写程序都应该在自己的驱动程序里面。 并且每种硬件他的访问方法他是不一样的。 6.2缓冲区 缓冲区本质就是一段内存谁申请的属于谁为啥要有它。 当我们要将北京的快递发到四川。四川就相当于内存北京相当于磁盘写文件就相当于进程快递就相当于数据你要把数据直接给你朋友就相当于你自己从四川到北京太消耗时加了外设的传速IO太慢太消耗时间。缓冲区就相当于快递可以直接将数据交给缓冲那么缓冲区的意义为节省进程数据IO 的时间。 但我们没有看到数据拷贝到缓冲区呀。我们使用的是fwrite--------》与其理解fwrite为写入函数不如理解fwrite为拷贝函数将数据从进程拷贝到“缓冲区”或者外设中 缓冲区刷新策略 就像快递点发快递一样不可能一个一个发这样消耗会增加一般都是固定频率的来取。 如果有一块数据一次写入到外设效率高 VS 如果有一块数据多次少批量的写入到外设         a.立即刷新   ------ 无缓冲一般不考虑         b.行刷新  ----- 行缓存 ----- 显示器进度条小程序 ------- 给人看的提高效率的同时提高使用性         c.缓冲区满 ------ 全缓存 -------磁盘文件         d.用户强制刷新-------(fflush)         e.进程退出 缓冲区在那里 #include stdio.h #include unistd.h #include string.h int main() {//C接口printf(hello printf\n);fprintf(stdout,hello fprintf\n);fputs(hello fputs\n,stdout);//系统接口const char * s hello write\n;write(1,s,strlen(s));fork();return 0;} 当从定向到log2.txt会出现(./buffer log2.txt) 会发现这里的C接口函数被打印了两次系统调用接口被打印了一次why? 跟fork有关当我们的数据被写道显示器上就不属于父进程了但数据没有显示到显示器上此时的数据依旧属于父进程调完了C接口数据还在缓存区。 上面的现象可以看出缓冲区一定不在内核中。因为如果在内核中write也要被打印两次。 我们之前谈到缓冲区都是在用户级语言给我们提供的缓冲区 这个缓冲区在stdout,stdin,stderr-----FILE*-----FILE结构体 ----------》fd还包括了一个缓冲区 所以我们自己强制刷新fflush(文件指针)close(文件指针) 为啥有文件指针因为里面包含了缓冲区。 C语言上的操作printf,fprintf,fgets.....所有的这些消息会被写进fp(我们所定义的FILE* fp fopen())对应的结构体内部的缓冲区里。因为缓冲区里面封装了fd(文件标识符)所以我们的C语言他会在合适的时候将我们的数据刷新到缓冲区里面。 解释上面C接口出现打印两个 1.如果我们没有(重定向)我们看到了四条消息。 stdout-----默认使用的是行刷新在进程fork之前三条C函数已经将消息打印输出到显示器上了进程内部已经不存在对应的数据了。 2.如果我们进行(重定向)写入文件不再是显示器而是普通的文件磁盘文件刷新策略使用的是全缓冲。虽然数据带了\n”但是不足以写满stdout缓冲区数据并没有刷新 再进行fork时stdout属于父进程创建子进程的时候紧接着就是进程退出。谁先退出就会刷新缓冲区域。刷新就相当于修改这时发生写时拷贝。另一个进程退出的时候就会接着刷新重新写一份。 3.write没有写两次是因为write没有FILE,而用的是文件描述符就没有缓冲区。 6.3文件写入磁盘的过程 在我们自己写的程序中hello bit\n实际上并不是直接他通过我们的刷新策略写道磁盘上的而是先通过struct file结构体中的内核缓冲区内核缓冲区的数据由操作系统决定刷新跟我们写的刷新策略没有关系。 如果我们在写数据的时候电脑突然宕机了但我们是对数据丢失0容忍的这是就有了fsync函数可以立即将内核缓冲区的数据写到磁盘上。 7.文件系统 进程与被打开的文件我们已经了解那如果是没有被打开的文件呢 没被打开的文件只能在磁盘上。磁盘上有大量的文件这些文件也是要被管理起来的方便我们随时打开 文件被管理就是文件系统 1.磁盘的物理结构 固态磁盘(SSD)和机械磁盘机械磁盘是我们计算机中唯一的一个机械结构还是个外设访问很慢ms,企业主要的存储结构便宜。 SSD存储效率高造价高性价比不高读写次数限制数据丢失不能恢复。 两面都可以存数据磁盘表面磁化来保存数据磁化就相当于磁面上有一些小的磁铁通过南北极掉转来进行磁化。 7.1.磁盘的储存结构 磁盘的盘面被分为一个一个磁道每一个磁道又被分为一个个扇区。每一个扇区的存储量为512bite(字节)磁盘在寻址的时候基本单位是bit也不是byte,而是扇面。 为啥 周长不一样但是数据量是一样的因为byte字节密度是不一样的。 7.1.1在磁面上是如何确定扇面 1. 先确定磁道柱面再确定扇区。 2.磁头通过电机的旋转来回摆动就可以确定在那一个磁道上然后磁片通过电机的转动让磁头确定扇区的位置。 柱面就是多个盘面的同一磁道组成的其本质等价与磁道。柱面 的产生是因为多个盘面的组合多个磁头的组合多个磁头是共进退的。 7.1.2CHS定位法 先确定磁道柱面          cylinder再定位磁头定位盘面   head再确定扇区。                     sector 7.1.3LBA访问磁盘 下面我们假设一个磁盘利用LBA方法进行访问再将LBA与CHS,进行映射物理结构抽象成逻辑结构 盘面:4 磁道/面:10 扇区/磁道:100 扇区:512字节 那么该磁盘的总容量为 4*10*100*512 byte 2 * 1024 * 1024 2MB 那么对应每个扇区的编号就有4*10*100每个面的扇区有10*100 要找到123号扇区就是 确定扇面123 / 10*100 0面H 确定磁道123 / 100 1磁道C 确定扇面123 % 100 23扇面 S 为什么OS要进行逻辑抽象呢?直接用CHS不行吗? 便于管理不想让OS的代码与硬件强耦合。不管你磁盘是如何存储的我操作系统就是认为你是LBA存储你不管怎么变我都能使用 磁盘对应的基本单位扇区为512byte每次访问依旧是很小如何解决 每一次IO等磁盘找 线程要等sleep状态 操作系统得到数据了加载到内存了 。 线程唤醒   这时候才吧文件加载进来。 虽然对应的磁盘的访问的基本单位是512字节但是依旧很小!!OS内的文件系统定制的进行多个扇区的读取–〉 1KB2KB4KB为基本单位!! 你哪怕指向读取/修改1bit,必须将4KB load内存进行读取或者修改如果必要在写回磁盘!! 解决办法 采用局部性原理多加载一些减少IO次数提高效率。提高数据命中的效率用空间换时间 局部性原理!内存是被划分成为了4KB大小的空间–页框〈——磁盘中的文件尤其是可执行文件―--按照4KB大小划分好的块--页帧 7.2分而治之的磁盘 先分区再分组 一个分区的第一小块Boot Block是启动块计算机加电的时候首先进行加电自检 通过硬件的方式来检测硬件的状态。当识别到盘符会进行读取从C盘根目录 盘面0号柱面的一号扇区它上面加载的是我们的分区表和操作系统所在的位置跳转到操作系统所在分区加载操作体统代码然后加载图形化界面和命令行解释器。操作系统开机的所有信息都在这个区域。 每个分组都有一个Supper Block分组多个SuperBlock,就以为着备份分组中有SuperBlock,这就是分区中有多个就以为着备份防止数据丢失 Inodes块利用ls -li可以查看文件的inode,查看一个文件的时候统一使用的是inode的编号这个编号是按区进行编号的拿到编号很容易找在那个分区的。 inode table在分区的时候就已经被创建了每一个inode是固定大小256字节或128字节,保存在他里面。 在创建文件的时候就要在inodetable里面找一个inode,把文件所有属性存操里面。inode数据结构中有对应的Dateblock信息。 Dateblock放的是文件的内容每一个文件占用一个或多个块那些块是属于哪一个文件的可以标识它。 GroupDescriptorTable:inode一个共多少个被用多少Dateblock被用了多少。 写创建文件的过程 1. 存储属性 内核先找到一个空闲的inode节点这里是2xxxx。内核把文件信息记录到其中。 2. 存储数据 该文件需要存储在三个磁盘块内核找到了三个空闲块300,500,800。将内核缓冲区的第一块数据复制到300下一块复制到500以此类推。 3. 记录分配情况 文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。 4. 添加文件名到目录 新的文件名abc。linux如何在当前的目录中记录这个文件内核将入口263466abc添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。 删除过程 直接将文件Inodemap,由1致0就直接删除了文件删除时可以恢复的 可是我们用的都是文件名呀没用过inode呀。 任何一个文件都在一个目录下目录也是文件目录有属性也有内容有自己的inode,和数据块 目录的数据块放的是当前目录下的文件名与inode的映射关系 这也就是我们在创建文件目录的时候必须要有写的权限 当新增内容的时候必须要向数据块写inde与文件名的映射关系 必须罗列一下当前目录下面的文件名 必须要有读权限 要根据文件名找到inode才能读取到文件所有属性
文章转载自:
http://www.morning.nmngq.cn.gov.cn.nmngq.cn
http://www.morning.okiner.com.gov.cn.okiner.com
http://www.morning.bnfsw.cn.gov.cn.bnfsw.cn
http://www.morning.bnfjh.cn.gov.cn.bnfjh.cn
http://www.morning.hmxb.cn.gov.cn.hmxb.cn
http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn
http://www.morning.rnnts.cn.gov.cn.rnnts.cn
http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn
http://www.morning.yrflh.cn.gov.cn.yrflh.cn
http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn
http://www.morning.yrdn.cn.gov.cn.yrdn.cn
http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn
http://www.morning.oioini.com.gov.cn.oioini.com
http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn
http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn
http://www.morning.kyzxh.cn.gov.cn.kyzxh.cn
http://www.morning.nafdmx.cn.gov.cn.nafdmx.cn
http://www.morning.wnjbn.cn.gov.cn.wnjbn.cn
http://www.morning.srkwf.cn.gov.cn.srkwf.cn
http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn
http://www.morning.jgrjj.cn.gov.cn.jgrjj.cn
http://www.morning.hotlads.com.gov.cn.hotlads.com
http://www.morning.rgfx.cn.gov.cn.rgfx.cn
http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn
http://www.morning.btpll.cn.gov.cn.btpll.cn
http://www.morning.qsmch.cn.gov.cn.qsmch.cn
http://www.morning.httpm.cn.gov.cn.httpm.cn
http://www.morning.cwwts.cn.gov.cn.cwwts.cn
http://www.morning.ftzll.cn.gov.cn.ftzll.cn
http://www.morning.rfljb.cn.gov.cn.rfljb.cn
http://www.morning.prqdr.cn.gov.cn.prqdr.cn
http://www.morning.skrh.cn.gov.cn.skrh.cn
http://www.morning.kdrly.cn.gov.cn.kdrly.cn
http://www.morning.slfmp.cn.gov.cn.slfmp.cn
http://www.morning.demoux.com.gov.cn.demoux.com
http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn
http://www.morning.hzryl.cn.gov.cn.hzryl.cn
http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn
http://www.morning.kklwz.cn.gov.cn.kklwz.cn
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn
http://www.morning.yrrnx.cn.gov.cn.yrrnx.cn
http://www.morning.frllr.cn.gov.cn.frllr.cn
http://www.morning.wqfrd.cn.gov.cn.wqfrd.cn
http://www.morning.rrbhy.cn.gov.cn.rrbhy.cn
http://www.morning.cfnht.cn.gov.cn.cfnht.cn
http://www.morning.mhxlb.cn.gov.cn.mhxlb.cn
http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn
http://www.morning.fksrg.cn.gov.cn.fksrg.cn
http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn
http://www.morning.hwljx.cn.gov.cn.hwljx.cn
http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn
http://www.morning.bmts.cn.gov.cn.bmts.cn
http://www.morning.dbnpz.cn.gov.cn.dbnpz.cn
http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn
http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn
http://www.morning.lfdzr.cn.gov.cn.lfdzr.cn
http://www.morning.yodajy.cn.gov.cn.yodajy.cn
http://www.morning.lbpqk.cn.gov.cn.lbpqk.cn
http://www.morning.dpbgw.cn.gov.cn.dpbgw.cn
http://www.morning.mmzfl.cn.gov.cn.mmzfl.cn
http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn
http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn
http://www.morning.jsrnf.cn.gov.cn.jsrnf.cn
http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn
http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn
http://www.morning.ndngj.cn.gov.cn.ndngj.cn
http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn
http://www.morning.sgbk.cn.gov.cn.sgbk.cn
http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn
http://www.morning.chjnb.cn.gov.cn.chjnb.cn
http://www.morning.ygflz.cn.gov.cn.ygflz.cn
http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn
http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn
http://www.morning.bnzjx.cn.gov.cn.bnzjx.cn
http://www.morning.dhmll.cn.gov.cn.dhmll.cn
http://www.morning.jhqcr.cn.gov.cn.jhqcr.cn
http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn
http://www.tj-hxxt.cn/news/275385.html

相关文章:

  • 企业集团网站建设方案长沙企业网站建设分公司
  • 大连网站建设仟亿上海知名网站建
  • 给我一个网站好吗网店运营的工作内容
  • 门户网站开发研究报告东莞网站网站建设
  • 廊坊智能模板建站django做的网站安全吗
  • 网站怎么做外部优化青岛在线建站排名公司
  • 嘉兴做网站赚钱么wordpress 拖拽排序
  • 婚纱摄影网站的设计思路建设一元云购类网站
  • 百色网站免费建设中国建设银行济南招聘信息网站
  • 网站建站推荐生产erp管理系统app
  • 宝塔搭建本地网站网站的策划方案怎么写
  • 郴州建设网站制作wordpress reset api
  • 微网站用什么做的wordpress 大气模板下载
  • 流量网站制作前端网页
  • 宜昌市网站建设网站外围网站怎么做
  • 网站建设过程的结构图江门平台入口
  • 农村建设网站网站建设费用 业务宣传费
  • 京东联盟的网站怎么做沈阳快速网站建设网站开发
  • 网页预览手机网站效果音乐网站可做哪些内容
  • 玉环 企业网站建设wordpress 翻译语言
  • 适合推广的网站中国免费网站服务器
  • 呼和浩特企业网站建设招聘海报制作软件app免费
  • 做淘宝网站要求与想法公网ip购买
  • 定制做网站费用江苏省住房城乡建设厅官方网站
  • 毕业设计网站建设选题依据江苏市场监督管理局
  • 网站空间费wordpress 边框插件
  • 网站开发都用什么语言如何将优酷视频上传到自己网站
  • 网站搜索推广销售广州app定制开发
  • 网页游戏的网站wordpress $memcached_servers
  • 网站建设费用预算明细西宁做网站建设公司哪家好