一个多月前,Kernel.org公布了自己遭受的安全攻击,并将网站下线。现在,Kernel.org网站重新上线。

在8月份,Kernel.org声明自己的服务器被恶意网站攻破,这引发了Linux社区的剧烈反应。Kernel.org是Linux源代码的发布点,同时托管其他项目,包括Git。当时,主服务器“hera”被攻破,可能是通过另一台被攻破的Linux服务器完成。

Kernel的邮件列表和主页的链接中建议,开发人员要考虑自己的服务器有被潜在感染的可能,并且推荐他们重新生成自己所有的GnuPG密钥。由于GnuPG一来开发人员之间的web-of-trust工具(而不是根证书的已知列表,该列表被发现存在问题,比如导致Diginotar最近的崩溃),这需要Kernel开发人员在现实世界中碰面,以互相签名他们的新密钥。其他建议推荐使用root检测器(包括Chrootkit、ossec-rootcheck和rkhunter)。如果还有问题,一次干净的重新安装系统将会验证任何流氓系统,还会从LiveCD启动,并执行包扫描,比如rpm –verify all操作。

幸运的是,Kernel的源代码并没有被攻破,这些代码保存在Git库中。由于Git存储的内容由其SHA-1哈希识别,任何文件发生改变,这将会马上展现出文件的不同版本。不管是推送还是拉动等变更,都可以检测到这些不一致,并容易发出通知。此外,Git库的复制方式,意味着互联网上有多份拷贝,每一份都有同样的哈希,因此,任何开发人员如果想计算最近签出的库的正确性,去验证已知的正确值都是可能的。

预计不久就会有对本次安全漏洞的全面阐述。

查看英文原文:InfoQ: Kernel.org Back After Security Breach

nux 系统文件 /proc/{$pid}/status 会记录某个进程的运行状态,里面的 VmRSS 字段记录了该进程使用的常驻物理内存(Residence),这个就是该进程实际占用的物理内存了,用这个数据比较靠谱,在程序里面提取这个值也很容易
ps:虽然垃圾回收让php开发者在内存管理上无需担心了,但也有极端的反例:php界著名的包管理工具composer曾因加入一行gc_disable();性能得到极大提升。
两步:
1)Top查看进程PID。
2)查看进程的内存大小:

VmSize(KB) 任务虚拟地址空间的大小
VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)

3)将KB换为G或M看:
https://www.wntool.com/filesize/
5020236 kb = 4.787670135498047GB

常用ps命令参数:最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
p
pid
进程ID
u
user
用户名
x 显示没有控制终端的进程。

可以使用u选项来查看进程所有者及其他一些详细信息,如下所示:
ps aux|grep dio_open_usb2|grep -v grep
root     10952  0.0  0.2  37436  8848 pts/0    S+   14:50   0:00 php dio_open_usb2.php
从上面可以得到信息如下:
还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。
即:该程序占用内存8848,我们只看内存,也也以这样看内存,10952是它的PID号,则这样看:



该文件里面有很多项的,如下:
cat /proc/10952/status
Name:   php
State:  S (sleeping)
Tgid:   10952
Pid:    10952
......
VmSize:    37436 kB
VmRSS:      8848 kB
......

解释:
VmSize(KB) 任务虚拟地址空间的大小
VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)






参考来源:
http://apps.hi.baidu.com/share/detail/17897258
http://enterparse.blog.163.com/blog/static/11713797420096921232931/
steven jobs总算是走了,但蛮怀恋他老人家啊,尽管到目前我也买不起个苹果的本本上网什么的,但最近在同事的aire机上提前体验了下苹果的笔记本本,体验上创意上确实不错,于是也就立即逛逛他的苹果网站,发现也是用PHP+APache+Oracle做的,激发了我的兴趣,发现是用PHP连接Oracle的Apache架构实现,抓包发现服务器确实是:Apache/2.2.3 (Oracle),我不太明白ORacle这块,但同时看网上有这样的问题的提出,老大们,你们的php连oracle难道没有连接池问题吗?稍多几个人访问web那oracle可怜的百十个连接就用完了,你们是怎么解决的?沿着这个问题做了下简单的分析和查找资料,也就是如何解决这个贴纸儿的问题:http://blog.fabrichina.net/archives/250,

抓包看看再说,URL:
http://www.apple.com/global/nav/scripts/shortcuts.php?q=ja&section=global&geo=us&transport=js


于是找了网站上的两篇文章,说明为什么能用PHP连接Oracle并不用在乎它的连接数,Oracle自己采用了连接池的中间件技术:
http://martincarstenbach.wordpress.com/2010/05/11/compiling-php-5-3-2-for-oracle-11-2-and-apache-2-2-3/
http://archimedes.bitfine.com/dms/building-php-for-oracle.html

同时还发现有其它这样的server在苹果网站上得到初步证实:
获得的包返回情况如下,这个Server :Omniture DC/2.0.0,估计是:数据库驻留连接池 (DRCP) 的缩写。
标识补充:Oracle 数据库 11g 包含一个专门针对需要高可扩展性的应用程序的新特性:数据库驻留连接池 (DRCP)。通过 DRCP,我们可以在不同应用程序进程间共享数据库连接,从而更高效地使用服务器资源并全面提升吞吐量。Zend Server 随附的 PHP OCI8 扩展(目前为 V1.3.5)包含对 DRCP 的即用支持,使开发人员可以立即在其 PHP 应用程序中使用该特性。来源:http://blog.fabrichina.net/archives/250,再次查了下这方面网上关于ZendServe支持Oracle和Apache架构方面的r相关的文章,URL摘录如下:
(1)使用Zend Server 和Oracle 构建企业级PHP 应用:
http://www.zendchina.net/?action-viewnews-itemid-621
(2)11g新特性:常驻连接池DRCP(转):
http://space.itpub.net/23754390/viewspace-687268
(3)Oracle DRCP与PHP实际应用的区别:
http://database.51cto.com/art/201004/196170.htm

尝试访问苹果的URL如下,主要是证明这个Omniture Dc/2.0.0服务器的存在:
http://metrics.apple.com/b/ss/appleglobal,applestoreww,applestoreus,applestoreusconsum,applestoreamr,applestoreamrconsum/1/H.20.3/s9545065233069?AQB=1&ndh=1&t=6/9/2011%2023%3A28%3A57%204%20-480&ce=UTF-8&pageName=AOS%3A%20home%20-%20Return&g=http%3A//store.apple.com/us%3Fmco%3DNzc1MjMwNA&r=http%3A//store.apple.com/us&cc=USD&ch=AOS%3A%20home&server=a50028560&v1=AOS%3A%20TopNavigation%20%7C%20Store&h1=home&c2=AOS%3A%20US%20Consumer&v3=AOS%3A%20US%20Consumer&v4=AOS%3A%20home&c6=%3A%20AOS%3A%20home%20-%20Return&c8=AOS%3A%20home&c19=AOS%3A%20US%20Consumer%3A%20home&v19=AOS%3A%20US%20Consumer%3A%20home&c20=AOS%3A%20US%20Consumer&s=1400x1050&c=24&j=1.7&v=N&k=Y&bw=1400&bh=409&p=IE%20Tab%20Plug-in%3BAlipay%20security%20control%3BJava%20Deployment%20Toolkit%206.0.260.3%3BAliWangWang%20Plug-In%20For%20Firefox%20and%20Netscape%3BShockwave%20Flash%3BThunder%20DapCtrl%20NPAPI%20Plugin%3B&pid=AOS%3A%20home%20-%20First&pidt=1&oid=Nzc1MjMwNA&oidt=1&ot=A&oi=1&AQE=1

对该URL抓包返回头如下:


最后,只能模糊判断苹果网站的架构是基于这篇PPT来实现PHP和Oracle进行通信的,这个过程得到了学习,苹果在自己网站上采用的技术也很独特,佩服佩服啊:
  我似乎不应该向出租车司机提起腾讯。车窗外,一幢幢高楼沿着深南大道逐个晃过去。出租车司机因为那幢“马化腾的大楼”触发了谈兴。他一边有腔有调地讲述深圳人眼中的马化腾,一边顺道得瑟起他的QQ泡妞故事。

转载请注意来自http://www.chaoren.com
阅读全文
一直很困惑,技术人员拥有技术,但创业成功者寥寥无几。上周拜访客户,接触了几家公司后,才真正明白为什么技术人员当不好老板的原因。

有些人认为技术人员当不好老板,往往是技术人员性格比较怪,比较孤僻,不爱结交,只喜欢摆弄自己的技术,这些固然是有一些原因,但不是深层次原因,毕竟还是有很多技术人员的性格是很好的。

当然,我这儿说的技术人员,指在自己的领域能够深入,有自己独到的见解的那种,而不是那些搞了几年,还只是三脚猫功夫的,这类本质上谈不行是技术人员,只能讲是技术工人。

技术人员的工作:阅读全文
方法1:
在传入system()的参数字符串结尾加'&'字符,要求在后台运行

方法2:
先fork()出子进程,然后在子进程中调用system()函数

http://zhidao.baidu.com/question/43141259.html
curl c/c++ api接口使用例程

来源:http://bbs.chinaunix.net/viewthread.php?tid=586014
前两天看到有人求客户端socket 发HTTP包的代码,受flw版主启发找了一些perl的资料,不过对perl 还是不太熟悉。也没有深入的 研究。无意中发现了libcurl.so 这个库。去google上搜索发现它是处理客户端发送HTTP请求的库 以及可以处理web服务器回送回来的 包。研究了两天将研究的成果,共享出来给大家一起研究。
参考:http://curl.haxx.se/  这是curl开发者的首页。
利用libcurl.so库 我们能轻松的连接某个web站点。获得某个首页的html代码 或者是http 请求的头部。 还可以提交表单,
此外它还支持ftp,https,
/usr/include/curl/curl.h 中。
1 CURLcode curl_global_init(long flags);
描述:
这个函数只能用一次。(其实在调用curl_global_cleanup 函数后仍然可再用)
如果这个函数在curl_easy_init函数调用时还没调用,它讲由libcurl库自动完成。
参数:flags
CURL_GLOBAL_ALL    //初始化所有的可能的调用。
CURL_GLOBAL_SSL    //初始化支持 安全套接字层。
CURL_GLOBAL_WIN32  //初始化win32套接字库。
CURL_GLOBAL_NOTHING     //没有额外的初始化。
2 void curl_global_cleanup(void);
描述:在结束libcurl使用的时候,用来对curl_global_init做的工作清理。类似于close的函数。
3 char *curl_version( );
描述: 打印当前libcurl库的版本。
4 CURL *curl_easy_init( );
描述:
curl_easy_init用来初始化一个CURL的指针(有些像返回FILE类型的指针一样). 相应的在调用结束时要用curl_easy_cleanup函数清理.
一般curl_easy_init意味着一个会话的开始. 它的返回值一般都用在easy系列的函数中.
5  void curl_easy_cleanup(CURL *handle);
描述:
这个调用用来结束一个会话.与curl_easy_init配合着用.  
参数:
CURL类型的指针.
6  CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
描述: 这个函数最重要了.几乎所有的curl 程序都要频繁的使用它.
它告诉curl库.程序将有如何的行为. 比如要查看一个网页的html代码等.
(这个函数有些像ioctl函数)
参数:
1 CURL类型的指针
2 各种CURLoption类型的选项.(都在curl.h库里有定义,man 也可以查看到)
3 parameter 这个参数 既可以是个函数的指针,也可以是某个对象的指针,也可以是个long型的变量.它用什么这取决于第二个参数.
CURLoption 这个参数的取值很多.具体的可以查看man手册.
7 CURLcode curl_easy_perform(CURL *handle);
描述:这个函数在初始化CURL类型的指针 以及curl_easy_setopt完成后调用. 就像字面的意思所说perform就像是个舞台.让我们设置的
option 运作起来.
参数:
CURL类型的指针.
下面来看一个简单的例子:
用来获得某个主页的html代码
#include <stdio.h>;
#include <curl/curl.h>;
#include <stdlib.h>;
int main(int argc, char *argv[])
{
    CURL *curl;   //定义CURL类型的指针
    CURLcode res;  //定义CURLcode类型的变量
    if(argc!=2)
    {
        printf("Usage : file <url>;\n");
        exit(1);
    }
    curl = curl_easy_init(); //初始化一个CURL类型的指针
    if(curl!=NULL)
    {
//设置curl选项. 其中CURLOPT_URL是让用户指定url. argv[1]中存放的命令行传进来的网址
        curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
//调用curl_easy_perform 执行我们的设置.并进行相关的操作. 在这里只在屏幕上显示出来.
        res = curl_easy_perform(curl);
//清除curl操作.
        curl_easy_cleanup(curl);
    }
    return 0;
}
编译: gcc -o 001 -Wall 001.c -lcurl
我们来获得www.chinaunix.net 主页的html代码
./001 www.chinaunix.net阅读全文
find命令:

查找当前目录下递归本层所有的文件夹,按评论说的作了下改动:

就是列出当前所有的文件夹,这样可以对一个满是Linux安装文件包并解压后的包含:tar.gz 目录等,做统计和删除,很有用。
注意:
-maxdepth   1       (其中‘1’为你本层目录里面查找,要是为‘2’的话就是两层目录下面的文件查找)

其实我是想删除这个目录下所有给解压的目录,只留下安装包,命令如下:
jQuery

主页:http://jquery.com/
设计思想
简洁的思想:几乎所有操作都是以选择DOM元素(有强大的Selector)开始,然后是对其的操作(Chaining等特性)。

优点
小,压缩后代码只有20多k(无压缩代码94k)。
Selector和DOM操作的方便


Chaining:总是返回一个jQuery对象,可以连续操作。
文档的完整,易用性(每个API都有完整的例子,这是其它框架现在不能比的),而且网上还有很多其它的文档,书籍。
应用的广泛,包括google code也使用了jQuery。

使用jQuery的站点:http://docs.jquery.com/Sites_Using_jQuery
核心的开发团队和核心人员:John Resig等。
简洁和简短的语法,容易记。
可扩展性:有大量用户开发的插件可供使用(http://jquery.com/plugins/)
jQuery UI(http://jquery.com/plugins/,基于jQuery,但和核心的jQuery是独立的),不断发展中。
友好和活跃的社区:google groups: http://docs.jquery.com/Discussion
事件处理有很多方便的方法,如click,而不是单一的addEvent之类的。

缺点
由于设计思想是追求高效和简洁,没有面向对象的扩展。设计思路和Mootools不一样。
CSS Selector的速度稍微有些慢(但是现在速度已经大幅提高)

Ext JS
主页:http://extjs.com/

设计思想
组件化,推进RIA(Rich Internet Application)的应用。

优点
强大的UI,而且性能不错,这是其最大的优点。
速度快,管是UI还是其它模块。
100%面向对象和组件化的思想,一致的语法,全局的命名空间。
文档的完整,规范,方便。
核心的开发团队,Jack Slocum等。
活跃的社区,迅速增加的用户量。
模块化实现,可扩展性强。
所有的组件(widgets)都可直接使用,而无需进行设置(当然,用户可以选择重新配置)。

缺点
稍复杂。
为重量级的框架(包含大量UI),体积大。如果导入ext-all.js,压缩后也有近500k。

ExtJs与jQuery比较

1.EXT体积大,jQuery更专注于简化最基础的开发工作.所以使用起来,也就感觉更像是使用原始的js进行开发一样

2.EXT界面美观,jQuery一般

3.EXT代码复用性强

4.EXT兼容性还是有点小问题,jQuery兼容性良好

5.EXT不易调试,

6.Ext使页面是只留下body,搜索引擎无法收录这样,不利于SEO排名

7.jQuery的事件绑定更强

Ext简化了很多工作,让开发更简洁,更方便,但也带来了很多麻烦,给我们留下了更小的选择空间,局域网里面我们可以使用EXT,但是在互联网上请优先jQuery
我想很多人想知道 64bit 和 32bit 到底区别有多大,在买了VPS后,不知道是装 64bit 的还是装 32bit 的,不知道装 CentOS 还是 Debian

现在以我的实际使用经验来告诉你怎么选择

装 CentOS 还是 Debian ?
首要因素是要看你习惯使用哪一个,就装哪一个,至于资源占用,都差不多的

32bit 和 64bit 实际使用时,差别在哪里?

1. 内存占用的区别
CentOS 32bit 装好系统后的内存占用12MB,64bit 内存占用 19MB
再装 Nginx + PHP + MySQL 并启动后,内存占用相差100多MB
我配置的几个主要参数
Nginx 4 进程
php-fpm 10 进程
apc 64M
MySQL key_buffer 128M

2. 性能区别
CentOS 64bit 的性能要快于 32bit,性能相差大约 30%-50%,这里我说的性能差别指的是从客户端发起请求到接收所花费的时间,包括 php 脚本的执行时间,mysql 的查询时间,nginx 的输出时间

另外,64bit 不仅在性能上要好于 32bit,系统平均负载也要比 32bit 低,我试验了同样的站点,同样的VPS,同样的并发数,32bit 的系统平均负载为 0.9-1.2,而 64bit 的系统平均负载为 0.4-0.7

于此同时,站点运行时,32bit 内存占用 370-400MB, 而 64bit 内存占用 520-580MB

本文作者:http://www.21andy.com/
本文Url:http://www.21andy.com/blog/20101019/1982.html

3. 总结
如果你的 VPS 或服务器,内存大于等于1G,我强烈建议你安装 CentOS 64bit
512MB VPS 是比较尴尬的, 一般是 512MB 保证,超过这个内存范围,商家不保证你能稳定
如果你使用 64bit 内存不超,应该选 64bit
512MB 以下的,不用考虑,就 32bit
平时我们取得location的search的时候,往往都是要用location.search,然后根据取回的结果集再处理
1、先判断第一位是否是“?”,如果是则从?开始往后面处理
2、写程序以&开始分隔,当然得先用unescape,或者用那个urldecode(具体的名字不记得了)处理一下,把&amp;之类的处理一下
3、以=分隔,这样才能可以取得一一对应的值。
现在方便了。jQuery有这样的插件了。。。。
原文来自:http://www.cssrain.cn/article.asp?id=1204
内容如下:
例如 当前你的URL是:
http://www.cssrain.cn/index.php?test=1&kk=2
如果想获取test,则可以引入插件后,
用如下方法获取:
var test = $.query.get('test');
如果参数有多个相同的名称 ,则可以这样:
var arr = $.query.get('testy');
输出:  [ 值1 ,  值2,  值3...]
如果要获取多个相同名称中的某一个,可以这样:
var arrayElement = $.query.get('testy[1]');
此插件不仅能获取参数,也能设置参数。
设置一个参数:
var newUrl = $.query.set("section", 5).toString();
输出  : "?section=5"
设置两个参数:
var newUrl = $.query.set("section", 5).set("action", "do").toString();
输出 :  "?action=do&section=5"

删除一个参数:
var oldQueryAgain = $.query.REMOVE("type");
清空所有参数:
var emptyQuery = $.query.empty();
复制所有参数:
var stillTheSame = $.query.copy();

插件地址:
http://plugins.jquery.com/project/query-object
http://plugins.jquery.com/files/jquery.query-2.1.7.js.txt
打包下载:

(一)普通三角形的形状如下(它是1,3,5,7,9):

顺便对比下杨辉三角如下(它是1,2,3,4,5):


阅读全文
我本地 有NEWS.JS这个文件,,服务器上也有一个,,本地版本库跟服务器 版本库一样的情况下 有人改了服务器上的NEWS.JS这个文件,,同时 你也改了 NEWS.JS 这个文件,,你们两个提交的时候 版本库都会自动加以个版本,,也就是 你们两个的版本一致了但是文件内容不一致导致的:
问题是确实有服务器的改动,但是改动并没提交,本地确实在此时改动,那请问怎么样才知道是哪些文件有这样的改动呢,我好删除,有命令么?
1)svn stat查看有无冲突:
svn stat .
看没有conflict啊:
svn stat .|grep conflict

2)对服务器中因中间临时修改时的文件予以强制回退到svn版本中,如下:希望恢复一整个目录的文件,可以使用--depth=infinity选项
[root@localhost cntv_mytv]# cd application/
[root@localhost application]# svn revert --depth=infinity .  
Reverted 'models/app.php'
————————————————————————————————
平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:阅读全文
xdebug.max_nesting_level=30 //这个值不能太少,尤其是核心Core.php(特别指:框架核心),30较为靠谱,否则出现如下:
PHP Fatal error:  Maximum function nesting level of '10' reached, aborting! in /data/htdocs/jackxiang.com/libraries/core.php on line 315

vi +315 /data/htdocs/jackxiang.com/libraries/core.php
313     public static function autoload ($class)
314     {
315         if (class_exists($class, FALSE))





shell_exec/proc_open 两函数得打开:
+-----------------------------------------------------------+
|                       ! ERROR !                           |
| The test-suite requires that proc_open() is available.    |
| Please check if you disabled it in php.ini.               |
+-----------------------------------------------------------+
shell_exec() has been disabled for security reasons in /home/test/rpmbuild/BUILD/xdebug-2.7.0alpha1/run-tests.php on line 306
阅读全文
自己安装了一个,得到CentOs6.0的内核版本号:



刻录需要超刻的方法:
打开Nero文件-选项-高级 启动DVD超刻 前面打勾,然后确定。数度选择4X,最后,提示刻录失败,其实已经好了。
Last:
自己刻录,自己安装,果然Ok啊,哈哈。
================================================================
centos 6.0已经正式发布了,做为一个大版本的第一个版本肯定有很多问题,RHEL 6.1早发布修补了很多问题,当然还有增强(或增加)了一些功能,所以真正重要生产服务器还是期待centos 6.1的发布,估计下个月底就会发布。
http://qaweb.dev.centos.org/qa/dashboard 预计下周会正式发布下载,且centos 5.7 发布也一样
2011-08-26
centos 5.7官方最新消息称最快7-10天内发布
centos 6.1不太顺利,估计要比5.7晚点
2011-09-01
centos 5.7已经发布了,开始同步外部镜像,估计这两天就可以下载
现在已经有部份镜像点有下载了:
http://ftp.twaren.net/Linux/CentOS/5.7/isos
http://centos.mirror.nexicom.net/5.7/isos/
更多的见:http://www.centos.org/modules/tinycontent/index.php?id=30
按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。centos。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,centos ftp,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。centos和rhel。
centos 6.1预15天左右可供下载,可能还得等,官方更新build包日志:http://qaweb.dev.centos.org/qa/blog ,感谢CentOS团队无私的奉献。
在centos 6.1发布之前,centos临时发布了CentOS 6.0 CR Repo,有需要的可以下载用于CENTOS 6.0,同时也说明centos 6.1可能会再次跳票(大家都习惯了吧!)
# yum install centos-release-cr
# yum update
详见:
https://www.centos.org/modules/newbb/viewtopic.php?topic_id=33458&forum=53
http://www.h-online.com/open/news/item/Advance-updates-for-CentOS-6-1-1350302.html
Linus 大神早前已经说了 Linux 内核的版本号太长了,在 2.6.39 内核后直接跳上了 3.0 内核,并且已经发布了新的版本。但是 Fedora 某部分维护者似乎有所不甘。



不甘的原因是他们不想 Fedora 15 整个生命周期都只能使用 2.6.38 内核,而无法享受 3.0 内核带来的。但是如果直接使用 3.0 内核,因为版本号的问题可能会出现兼容性问题,而且工程量大。于是维护者们就把 3.0 内核的版本号更改为 2.6.40 内核。本质上 2.6.40 内核和 3.0 内核没有任何区别。

2.6.40 内核暂时还有一小部分兼容性的 Bug,稍后会逐一解决。短期内将会推送到 updates-testing 以供测试。此内核只会特供 Fedora 15 使用。Fedora 16 和已经指向至 Fedora 17 的 Rawhide 将会使用 3.x 内核。
来源:http://www.oschina.net/news/20189/fedora-15-linux-kernel-2-6-40
分页: 114/272 第一页 上页 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 下页 最后页 [ 显示模式: 摘要 | 列表 ]