上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: System.out.println(2.0-1.1); //输出:0.89999999原因参考PDF。有人也可能这么尝试:System.out.println(2.0-0.1); //输出:1.9这有事什么原因?我分析是JAVA精确到一定位数之后,发现是1.900...,然后输出截取到了1.9 阅读全文
posted @ 2013-04-08 17:32 李秋 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个平面(编码范围是U-00000000~U-0000FFFD),称为BMP(Basic Multilingual Plane)或Plane 0,为了向后兼容,其中编号为0~256的字符和Latin-1相同。UCS编码通常用U-xxxxx 阅读全文
posted @ 2013-04-08 17:24 李秋 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 我想有很多朋友和我一样,想要了解APACHE NGINX的工作原理,最终能独立写一个服务器。我对C语言开发几乎一窍不通,看了网上的很多文章,都是先讲SOCKET编程等等几百页之后,才能讲到这里,学习起来很痛苦,经常思考是否可以另外一种方式,倒叙的方式让其他的人学习起来不那么痛苦。好吧废话少说,咱们开始吧~今天要做的工作目标:配置环境,浏览源代码。一、下载WEBSERVER程序(下载)二、安装。make三、启动服务器端服务。./shttpd[root@sysadmin webserver]# ./shttpd sHTTPD ListenPort: 8062 MaxClient: 4 ... 阅读全文
posted @ 2013-04-04 14:02 李秋 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 摘自:http://www.cnblogs.com/jeffwongishandsome/archive/2011/11/06/2238265.html链接memctelnet 127.0.0.1 11211退出命令:ctrl+] 并且 quit一、存储命令存储命令的格式:?12 参数说明如下:set/add/replace查找关键字客户机使用它存储关于键值对的额外信息该数据的存活时间,0表示永远存储字节数存储的数据块(可直接理解为key-value结构中的value)1、添加(1)、无论如何都存储的setset username 0 0 812345678STOREDget usern... 阅读全文
posted @ 2013-03-29 14:07 李秋 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 从网上找到一些问题是关于如何从MySQL中导出数据,以便用在本地或其它的数据库系统之上;以及 将现有数据导入MySQL数据库中。数据导出 数据导出主要有以下几种方法: 使用select into outfile "filename"语句 使用mysqldump实用程序 使用select into outfile "filename"语句 可以在mysql的命令行下或在php程序中执行它。我下面以在mysql命令行下为例。在php中使用时,将其改成相应的查询进行处理即可。不过在使用这个命令时,要求用户拥有file的权限。如我们有一个库为phptest,其中 阅读全文
posted @ 2013-03-28 15:48 李秋 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 昨天和同事讨论了一下这个函数,在网络上搜了一下,答案都是函数的基本概念,为什么是大端模式(big-endian),而没有解释为什么使用大端模式(big-endian)。首先说明一下概念uint16_t htons(uint16_t hostshort); htons的功能:将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian) 参数u_short hostshort: 16位无符号整数 返回值:TCP / IP网络字节顺序 htons 是把你机器上的整数转换成“网络字节序”, 网络字节序是 big-endian,也就是整数的高位字节存放在内存的低地址处。 而我们常用... 阅读全文
posted @ 2013-03-26 13:59 李秋 阅读(13981) 评论(0) 推荐(2) 编辑
摘要: 新建标签页使用:tabe命令和文件名参数,可以在新标签页中打开指定的文件。也可以使用:tabnew命令,在新标签页中编辑新的文件。命令:tab split将在新标签页中,打开当前缓冲区中的文件。命令:tabf允许你在当前目录搜索文件,并在新标签页中打开。比如我想打开当前目录下的img.txt文件,那么就可以使用:tabf img.*命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示你“文件名过多”,这时你需要给出更精确的搜索条件以打开文件。Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。列示标签页命令:tabs可以显示已打开标签页的 阅读全文
posted @ 2013-03-26 10:06 李秋 阅读(8887) 评论(0) 推荐(0) 编辑
摘要: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <errno.h> 4 #include <string.h> 5 #include <sys/types.h> 6 #include <netinet/in.h> 7 #include <sys/socket.h> 8 #include <sys/wait.h> 9 #include <unistd.h> 10 #include <arpa/inet.h> 11 in 阅读全文
posted @ 2013-03-25 19:34 李秋 阅读(472) 评论(0) 推荐(0) 编辑
摘要: CLIENT 1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <arpa/i... 阅读全文
posted @ 2013-03-25 19:20 李秋 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <arpa/inet.h>... 阅读全文
posted @ 2013-03-25 18:49 李秋 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <arpa/inet.h> 9 #include <unistd.h> 10 #define MAXBUF 10 11 int main(int ar 阅读全文
posted @ 2013-03-25 18:30 李秋 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <ar... 阅读全文
posted @ 2013-03-25 17:48 李秋 阅读(821) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <resolv.h>#include <stdlib.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#define MAXBUF 1024int main(int argc, char **argv){ int sockfd; st 阅读全文
posted @ 2013-03-25 13:28 李秋 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如:./a.out -a1234 -b432 -c -d程序会根据读取的参数执行相应的操作,在C语言中,这个功能一般是靠getopt()这个函数,结合switch语句来完成的,首先来看下面的代码:#include <stdio.h>#include <unistd.h>int main(int argc,char *argv[]){ int ch; opterr=0; while((ch=getopt(argc,argv,"a:b::cde"))!=-1) { print 阅读全文
posted @ 2013-03-19 09:41 李秋 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 静态模式最近看Makefile,正常依赖没什么问题,但是遇到一些特殊的符号就有点不明白了,例如:$(objects): %.o: %.c、$<之类的。最近看了篇文章写的不错,贴出来供大家分享。静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法:<targets ...>: <target-pattern>: <prereq-patterns ...> <commands>...如果我们的<target-parrtern>定义成“%.o”,意思是我们的<target> 阅读全文
posted @ 2013-03-15 15:25 李秋 阅读(9828) 评论(0) 推荐(3) 编辑
摘要: 一、Shell变量分为本地变量和环境变量。1、本地变量:在用户现有运行的脚本中使用a) 定义本地变量 格式: variable-name=valueb) 显示本地变量 格式: setc) 清除本地变量 格式:unset variable-name2、环境变量:在所有的子进程中使用 a) 定义环境变量 格式: export variable-name=value (与本地变量的定义相比,多了一个export关键字) b) 显示环境变量 格式: env (本地变量的显示使用set,环境变量的显示使用env) c) 清除环境变量 格式:unset variable-name (用法与本地变量相同,都 阅读全文
posted @ 2013-03-12 20:35 李秋 阅读(306) 评论(0) 推荐(0) 编辑
摘要: Linux 的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量。 本地变量,当前shell 中的变量,很显然本地变量中肯定包含环境变量。Linux 的本地变量的非环境变量不具备继承性。一、Linux 中环境变量的文件 当你进入系统的时候,linux 就会为你读入系统的环境变量,这些环境变量存放在什么地方,那就是环境变量的文件中。Linux 中有很多记载环境变量的文件,它们被系统读入是按照一定的顺序的。1. /et.. 阅读全文
posted @ 2013-03-12 15:11 李秋 阅读(306) 评论(0) 推荐(0) 编辑
摘要: gcc/g++在执行编译工作的时候,总共需要4步 (1) 预处理,生成.i的文件[预处理器cpp] (2) 将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] (3) 有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] (4) 连接目标代码,生成可执行程序[链接器ld][参数详解] 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。可以使用的... 阅读全文
posted @ 2013-03-09 18:19 李秋 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 在前面各章中,已多次使用过以“#”号开头的预处理命令。如包含命令# include,宏定义命令# define等。在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分。 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。 C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块... 阅读全文
posted @ 2013-03-09 00:34 李秋 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 最近学习了NGINX模块开发,由于只有大学时代了解过C语言,所以看起来很纠结,但是回过头来想想也可以更方便的掌握基本的方法。本文参阅@夜沨 的文章。代码下载链接,也有详细的模块开发事例一、设定一个目录,里面两个文件建立目录~/ngx_http_echo_module建立下面文件:~/ ngx_http_echo_module|--- ngx_http_echo_module.c|--- config二、编写ngx_http_echo_module.c文件/** Copyright (C) Eric Zhang*/#include #include #include /* Module conf 阅读全文
posted @ 2013-03-08 16:37 李秋 阅读(1359) 评论(0) 推荐(1) 编辑
摘要: 已经更新到官方文档:http://wiki.nginx.org/HttpLuaModule#ngx.location.capture语法:res = ngx.location.capture(uri, options?)环境: rewrite_by_lua*, access_by_lua*, content_by_lua*是一个同步非阻塞的NGINX子请求uriNGINX的子请求提供了一个非常强大的方式去实现非阻塞的内部请求,或者其他的C模块,比如ngx_proxy, ngx_fastcgi, ngx_memc, ngx_postgres, ngx_drizzle, 甚至ngx_lua自己等等 阅读全文
posted @ 2013-03-06 21:06 李秋 阅读(6536) 评论(0) 推荐(0) 编辑
摘要: [root@sysadmin study]# vim ~/.screenrc#termcapinfo rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007'#hardstatus string "screen (%n: %t)"source /etc/screenrcaltscreen offhardstatus none# hardstatus string '%{= kg}[ %H ][%{= kw}%= %?%-Lw%?%{R}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g} 阅读全文
posted @ 2013-03-05 17:23 李秋 阅读(2807) 评论(0) 推荐(0) 编辑
摘要: 1、sudo apt-get install eclipse2、sudo apt-get install openjdk-7-jdk3、修改eclipse.ini vim /usr/lib/eclipse/eclipse.ini 添加内容:-vm/usr/lib/jvm/java-6-sun-1.6.0.15/bin4、启动Eclipse之后,在菜单栏中选择Help,然后选择Install New Software…,接着你会看到一个Install对话框,点击Work with:字段边上的Add按钮,你会得到一个新的Add Repository对话框,在Name字段中输入m2e,Loc... 阅读全文
posted @ 2013-03-04 14:43 李秋 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 1.作用mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。2.格式mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir3.主要参数-h:显示辅助信息。-v:显示信息,通常和-f用来除错。-a:将/etc/fstab中定义的所有文件系统挂上。-F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。-f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。-t vfstyp 阅读全文
posted @ 2013-02-21 14:44 李秋 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 选择排序function select_2($_array){ for($i=0;$i<count($_array)-1;$i++) { $key = $i; for($j=$i+1;$j<count($_array);$j++) { if ($_array[$j]<$_array[$key]) { $key = $j; } } $tmp = $_array[$key]; $_array[$ke... 阅读全文
posted @ 2013-02-19 19:17 李秋 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 前两天看得是快速排序和冒泡排序,今天学习一下插入排序,可以说插入排序比前两种方便很多。/** * 插入排序 */function insert_sort2($_array){ for($i=0;$i<count($_array);$i++) { $key = $_array[$i]; for($j=$i;$j>0;$j--) { if ($key<$_array[$j-1]) { $_array[$j] = $_array[$j-1]; ... 阅读全文
posted @ 2013-02-18 10:31 李秋 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 上篇文章介绍了一下基本的冒泡排序,今天介绍一下快速排序。function QuickSort($_array){ if (count($_array)<=1) { return $_array; } $key = $_array[0]; $left_array = $right_array = array(); for ($i=1;$i<count($_array);$i++) { if ($_array[$i] > $key) { $right_array[]... 阅读全文
posted @ 2013-02-17 13:58 李秋 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 最近发现在网络上冒泡排序的程序不少,但是介绍基本原理的文章很少能找到,所以整理了一下,供大家参考。二、冒泡排序 性能分析 它是冒泡排序的改良,但它同样是一个对数据有序性非常敏感的排序算法,只适合于数据基本有序的排序,时间复杂度与冒泡排序相同。 还有一种继续改良的算法(一次下沉再一次上浮),最优情况和最坏情况同样与冒泡排序差不多,但是一般情况下它要好过冒泡排序,它一次下沉,再一次上浮,这样避免了因一个数的逆序,而造成巨大的比较。如(2,3,4,…,n-1,n,1),用冒泡排序需要n(n-1)/2次比较,而此排序只要3轮,共比较(n-1)+(n-2)+(n-3)次,第一轮1将上移一位,第... 阅读全文
posted @ 2013-02-16 22:10 李秋 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 以前一直介绍NGINX 和 PHP安装,今天安装NGINX+LUA,开始感觉挺难的,其实很容易!~1、安装各种包# sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl2、去下载春哥的openresty,下载地址:http://agentzh.org/misc/nginx/ngx_openresty-1.2.6.1.tar.gz3、安装./configure --prefix=/opt/openresty \ --with-luajit \ ... 阅读全文
posted @ 2013-02-01 14:53 李秋 阅读(648) 评论(0) 推荐(0) 编辑
摘要: 在Ubuntu 10.04下安装Google拼音输入法(其实就是scim的扩展),如下:A. 获取代码:(没有git的先安装git:sudo apt-get install git-core) $ git clone git://github.com/tchaikov/scim-googlepinyin.git $ cd scim-googlepinyinB. 编译前提: $ sudo apt-get install autotools-dev libgtk2.0-dev libscim-dev libtool automakeC. 编译: 记住系统必须先存在SCIM(没有的话 sud... 阅读全文
posted @ 2013-02-01 14:04 李秋 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 1. mysql的数据类型(1)数值型 数值是诸如32 或153.4 这样的值。mysql 支持科学表示法,科学表示法由整数或浮点数后跟“e”或“e”、一个符号(“+”或“-”)和一个整数指数来表示。1.24e+12 和23.47e-1 都是合法的科学表示法表示的数。而1.24e12 不是合法的,因为指数前的符号未给出。 浮点数由整数部分、一个小数点和小数部分组成。整数部分和小数部分可以分别为空,但不能同时为空。 数值前可放一个负号“-”以表示负值。(2)字符(串)型 字符型(也叫字符串型,简称串)是诸如“hello, world!”或“一个馒头引起的血案”这样的值,或者是电话号码87... 阅读全文
posted @ 2013-01-30 14:58 李秋 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 昨天发现MYSQL数据类型如果是DOUBLE的,并且数据比较大的情况下,使用科学计数法输出数据,类似:3.155e+13的形式,可是前台不希望看到这样的结果,后台使用MYSQL的CAST函数解决了这个问题。具体的语法如下:Cast(value astype)type不是都可以滴,可以转换的type如下:二进制,同带binary前缀的效果 : BINARY字符型,可带参数 : CHAR日期 : DATE时间: TIME日期时间型 : DATETIME浮点数 : DECIMAL整数 : SIGNED无符号整数 : UNSIGNED事例:SELECT CAST(bignum AS CHAR) FRO 阅读全文
posted @ 2013-01-30 14:30 李秋 阅读(1234) 评论(0) 推荐(0) 编辑
摘要: Debian是最早的Linux发行版之一。它能引起公众注意就因为它让安装与卸载软件非常简单。在其他发行版还陷在依赖性的泥潭里时,Debian用户因为有更好的包管理系统而免受这些困扰。所有基于Debian的发行都使用这个包管理系统。Deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。 用apt-get的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get就能搜索到我们想要的软件。/etc/apt/sources.list是存放这些地址列表的配置文件,其格式如下:###d... 阅读全文
posted @ 2013-01-29 15:02 李秋 阅读(515) 评论(0) 推荐(0) 编辑
摘要: git cat-file -t 15823a6 查看文件类型git ls-tree 90c2df8e3856a13c230e916291aadf970e300913 查看TREEgit cat-file blob df4089b1305091d2278f03ddc78cebfa09fd8716 查看文件内容git fsck 来检查仓库的错误git gc 用来完成一些琐碎的工作,比如重组或删减。git diff –cached 比较最近一次提交的代码与索引文件的区别git ls-files –-stage //此命令是用于查看index file的!!下载分支 git ... 阅读全文
posted @ 2013-01-20 18:02 李秋 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 假设大家都已经可以使用GIT,知道一些GIT命令。1.注册账户以及创建仓库要想使用github第一步当然是注册github账号了。链接地址:github.com2.安装客户端git这个就不罗嗦啦,去网络上搜索下载并安装吧3.配置Git首先在本地创建ssh key$ ssh-keygen -t rsa -C "your_email@youremail.com"后面的your_email@youremail.com改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。例如 阅读全文
posted @ 2013-01-20 17:15 李秋 阅读(743) 评论(0) 推荐(0) 编辑
摘要: 安装:curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3上面的链接经常变化,还是访问网站查看内容吧。http://beyondgrep.com/install/事例:(0) 在the_dir目录中ack预设的所有文件类型中查找并输出匹配结果:ack "AKara"(1) 在the_dir目录中的所有文件(包括二进制的)查找并输出匹配结果:ack -u "AKara"(2) 打印出the_dir中(包含子目录)所有的.lua文件名:a 阅读全文
posted @ 2013-01-13 12:46 李秋 阅读(1419) 评论(0) 推荐(0) 编辑
摘要: 当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table.maxn(tbtest) do XXX end 下面依次来讲讲四种遍历方式,首先来看for k,v in pairs(tbtest) do这种... 阅读全文
posted @ 2012-12-28 19:25 李秋 阅读(2511) 评论(0) 推荐(0) 编辑
摘要: Ctrl+a d 退出刚创建的窗口(回到进入screen前的环境)screen -ls 可以看所有的screen sessionsscreen -S sessionname 创建一个名称是sessionname的窗口screen -r sessionid 可以进sessionid指定的特定的s... 阅读全文
posted @ 2012-12-28 09:50 李秋 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()mysql> select current_timestamp, current_timestamp();+---------------------+---------------------+| current_timestamp | current_timestamp() |+---------------------+---------------------+| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |+-------- 阅读全文
posted @ 2012-12-26 16:37 李秋 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 替换全部::%s/vivian/sky/gvi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。:s/vivian/sky/ 替换当前行第一个 vivian 为 sky:s/vivian/sky/g 替换当前行所有 vivian 为 sky:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky:2,$s/vivian/sky/g 替换第 2 行开始到最后一行中每一行所有 vivian 为 skyn 为数字,若 n 为 ., 阅读全文
posted @ 2012-12-25 17:09 李秋 阅读(395) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 下一页