最新帖子 精华区 社区服务 会员列表 统计排行
主题 : unix编程艺术介绍及pdf下载
admin 离线
级别: 管理员
UID: 1
精华: 1
发帖: 995
金币: 526 个
银元: 488 个
铜钱: 7843 个
技术分: 601 个
在线时间: 736(时)
注册时间: 2010-04-21
最后登录: 2018-02-24
楼主  发表于: 2010-04-26   

unix编程艺术介绍及pdf下载


经典指数:
难度指数:

  本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。

作者简介   · · · · · · 

  姜宏,软件工程师,目前从事协同应用平台之设计与开发。技术兴趣包括Windows 驱动程序开发﹑泛型编程。和侯捷、荣耀共同翻译了《C++ Templates 中文版》。

目录

Contents
序 xxv
第一篇 1
1 哲学 3
1.1 文化?什么文化? 3
1.2 Unix的生命力 4
1.3 反对学习Unix文化的理由 5
1.4 Unix之失 6
1.5 Unix之得 7
1.5.1 开源软件 7
1.5.2 跨平台可移植性和开放标准 8
1.5.3 Internet和万维网 8
1.5.4 开源社区 9
1.5.5 从头到脚的灵活性 9
1.5.6 Unix Hack之趣 10
1.5.7 Unix的经验别处也可适用 11
1.6 Unix哲学基础 11
1.6.1 模块原则:使用简洁的接口拼合简单的部件 14
1.6.2 清晰原则: 清晰胜于机巧 14
1.6.3 组合原则:设计时考虑拼接组合 15
1.6.4 分离原则: 策略同机制分离,接口同引擎分离。 16
1.6.5 简洁原则:设计要简洁,复杂度能低则低 17

1.6.6 吝啬原则: 除非确无它法,不要编写庞大的程序。 18
1.6.7 透明性原则:设计要可见,以便审查和调试 18
1.6.8 健壮原则: 健壮源于透明与简洁。 18
1.6.9 表示原则: 把知识叠入数据以求逻辑质朴而健壮 19
1.6.10 通俗原则:接口设计避免标新立异 20
1.6.11 缄默原则:如果一个程序没什么好说的,就保持沉默 20
1.6.12 补救原则: 出现异常时,马上退出并给出足量错误信息 21
1.6.13 经济原则: 宁花机器一分,不花程序员一秒 22
1.6.14 生成原则: 避免手工hack,尽量编写程序去生成程序 22
1.6.15 优化原则: 雕琢前先得有原型,跑之前先学会走 23
1.6.16 多样原则:决不相信所谓“不二法门”的断言。 24
1.6.17 扩展原则: 设计着眼未来,未来总比预想快。 24
1.7 Unix哲学之一言以蔽之 25
1.8 应用Unix哲学 26
1.9 态度也要紧 26
2 历史——双流记 29
2.1 Unix的起源及历史,1969-1995 29
2.1.1 创世纪:1969-1971 30
2.1.2 出埃及记:1971-1980 32
2.1.3 TCP/IP 和Unix内战:1980-1990 35
2.1.4 反击帝国:1991-1995 41
2.2 黑客的起源和历史:1961-1995 43
2.2.1 游戏在校园的林间:1961-1980 44
2.2.2 互联网大融合与自由软件运动:1981-1991 45
2.2.3 Linux 和实用主义者的应对:1991-1998 48
2.3 开源运动:1998年及之后 49
2.4 Unix的历史教训 51
3 对比: Unix哲学同其他哲学的比较 53
3.1 操作系统的风格元素 53
3.1.1 什么是Unix操作系统的统一性理念? 54
3.1.2 多任务能力 54
3.1.3 协作进程 55
3.1.4 内部边界 57
3.1.5 文件属性和记录结构 57
3.1.6 二进制文件格式 58
3.1.7 首选用户界面风格 58
3.1.8 目标受众 59
3.1.9 开发的门坎 60
3.2 操作系统的比较 61
3.2.1 VMS 62
3.2.2 MacOS 64
3.2.3 OS/2 65
3.2.4 Windows NT 68
3.2.5 BeOS 71
3.2.6 MVS 72
3.2.7 VM/CMS 74
3.2.8 Linux 76
3.3 种什么籽,得什么果 78
第二篇 81
4 模块性:保持清晰,保持简洁 83
4.1 封装和最佳模块大小 85
4.2 紧凑性和正交性 87
4.2.1 紧凑性 87
4.2.2 正交性 89
4.2.3 SPOT原则 91
4.2.4 紧凑性和强单一中心 92
4.2.5 分离的价值 94
4.3 软件是多层的 95
4.3.1 自顶向下和自底向上 95
4.3.2 胶合层 97
4.3.3 实例分析:被视为薄胶合层的C语言 98
4.4 程序库 99
4.4.1 实例分析:GIMP插件 100
4.5 Unix和面向对象语言 101
4.6 模块式编码 103
5 文本化:好协议产生好实践 105
5.1 文本化的重要性 107
5.1.1 实例分析:Unix口令文件格式 109
5.1.2 实例分析:.newsrc格式 110
5.1.3 实例分析:PNG图形文件格式 111
5.2 数据文件元格式 112
5.2.1 DSV 风格 113
5.2.2 RFC 822 格式 114
5.2.3 Cookie-Jar格式 115
5.2.4 Record-Jar格式 116
5.2.5 XML 117
5.2.6 Windows INI 格式 119
5.2.7 Unix文本文件格式的约定 120
5.2.8 文件压缩的利弊 122
5.3 应用协议设计 123
5.3.1 实例分析:SMTP,一个简单的套接字协议 124
5.3.2 实例分析:POP3,邮局协议 124
5.3.3 实例分析:IMAP,互联网消息访问协议 126
5.4 应用协议元格式 127
5.4.1 经典的互联网应用元协议 127
5.4.2 作为通用应用协议的HTTP 128
5.4.2.1 实例分析:CDDB/freedb.org数据库 129
5.4.2.2 实例分析:互联网打印协议 129
5.4.3 BEEP:块可扩展交换协议 130
5.4.4 XML-RPC,SOAP和Jabber 131
6 透明性:来点儿光 133
6.1 研究实例 135
6.1.1 实例分析:audacity 135
6.1.2 实例分析:fetchmail的–v选项 136
6.1.3 实例分析:GCC 139
6.1.4 实例分析:kmail 140
6.1.5 实例分析:SNG 142
6.1.6 实例分析:Terminfo数据库 144
6.1.7 实例分析:Freeciv数据文件 146
6.2 为透明性和可显性而设计 148
6.2.1 透明性中的之禅 149
6.2.2 为透明性和可显性而编码 150
6.2.3 透明性和避免过度保护 151
6.2.4 透明性和可编辑的表现形式表达 152
6.2.5 透明性、故障诊断和故障恢复 153
6.3 为可维护性而设计 154
7 多道程序设计: 分离进程为独立的功能 157
7.1 从性能调整中分离复杂度控制 159
7.2 Unix IPC 方法的分类 160
7.2.1 把任务转给专门程序 160
7.2.2 管道、重定向和过滤器 161
7.2.3 包装器 166
7.2.4 安全性包装器和Bernstein链 167
7.2.5 从进程 168
7.2.6 对等进程间通信 169
7.3 要避免的问题和方法 176
7.3.1 废弃的Unix IPC方法 176
7.3.2 远程过程调用 178
7.3.3 线程——恐吓或威胁? 180
7.4 在设计层次上的进程划分 181
8 微型语言:寻找歌唱的乐符 183
8.1 理解语言分类法 185
8.2 应用微型语言 187
8.2.1 案例分析:sng 187
8.2.2 案例分析:正则表达式 188
8.2.3 案例分析:Glade 191
8.2.4 案例分析:m4 193
8.2.5 案例分析:XSLT 194
8.2.6 案例分析:The Documenter's Workbench Tools 195
8.2.7 案例分析:fetchmail的运行控制语法 199
8.2.8 案例分析:awk 200
8.2.9 案例分析:PostScript 202
8.2.10 案例分析:bc和dc 203
8.2.11 案例分析:Emacs Lisp 205
8.2.12 案例分析:java script 205
8.3 设计微型语言 206
8.3.1 选择正确的复杂度 207
8.3.2 扩展和嵌入语言 209
8.3.3 编写自定义语法 210
8.3.4 宏—慎用! 210
8.3.5 语言还是应用协议? 212
9 生成:提升规格说明的层次 215
9.1 数据驱动编程 216
9.1.1 实例分析:ascii 217
9.1.2 实例分析:统计学的垃圾邮件统计 218
9.1.3 实例分析:fetchmailconf中的元类改动 219
9.2 专用代码的生成 225
9.2.1 实例分析:生成ascii显示的代码 225
9.2.2 实例分析:为列表生成HTML代码 227
10 配置:迈出正确的第一步 231
10.1 什么应是可配置的? 231
10.2 配置在哪里 233
10.3 运行控制文件 234
10.3.1 实例分析:.netrc文件 236
10.3.2 到其它操作系统的可移植性 238
10.4 环境变量 238
10.4.1 系统环境变量 238
10.4.2 用户环境变量 240
10.4.3 何时使用环境变量 240
10.4.4 到其它操作系统的可移植性 242
10.5 命令行选项 242
10.5.1 从–a到–z的命令行选项 243
10.5.2 到其它操作系统的可移植性 248
10.6 如何挑选方法 248
10.6.1 实例分析:fetchmail 249
10.6.2 实例分析:XFree86服务器 251
10.7 论打破规则 252
11 接口:Unix环境下的用户接口设计模式 253
11.1 最小立异原则的应用 254
11.2 Unix接口设计的历史 256
11.3 接口设计评估 257
11.4 CLI和可视接口之间的权衡 259
11.4.1 实例分析:编写计算器程序的两种方式 262
11.5 透明度、表现力和可配置性 264
11.6 Unix接口设计模式 266
11.6.1 过滤器模式 266
11.6.2 Cantrip模式 268
11.6.3 源模式 268
11.6.4 接收器模式 269
11.6.5 编译器模式 269
1 270
1.6.6 ed模式 270
11.6.7 Roguelike 模式 270
11.6.8 “引擎和接口分离”模式 273
11.6.9 CLI服务器模式 278
11.7 应用Unix接口设计模式 280
11.8 网页浏览器作为通用前端 281
11.9 沉默是金 284
12 优化 287
12.1 什么也别做,就站在那儿! 287
12.2 先估量,后优化 288
12.3 非定域性之害 290
12.4 吞吐量和延迟 291
12.4.1 批操作 292
12.4.2 重叠操作 293
12.4.3 缓存操作结果 293
13 295
13.1 谈谈复杂度 296
13.1.1 复杂度的三个来源 296
13.1.2 接口复杂度和实现复杂度的折衷 298
13.1.3 必然的、可能的和偶然的复杂度 299
13.1.4 映射复杂度 300
13.1.5 当简洁性不能胜任 302
13.2 五个编辑器的故事 302
13.2.1 ed 304
13.2.2 vi 305
13.2.3 Sam 306
13.2.4 Emacs 307
13.2.5 Wily 308
13.3 编辑器的适当规模 309
13.3.1 甄别复杂度问题 309
13.3.2 折衷无用 312
13.3.3 Emacs是个反Unix传统的论据吗? 314
13.4 软件的适度规模 316
第一篇 319
14 语言:C还是非C? 321
14.1 Unix下语言的丰饶 321
14.2 为什么不是C? 323
14.3 解释型语言和混合策略 325
14.4 语言评估 325
14.4.1 C 326
14.4.2 C++ 327
14.4.3 Shell 330
14.4.4 Perl 332
14.4.5 Tcl 334
14.4.6 Python 336
14.4.7 Java 339
14.4.8 Emacs Lisp 342
14.5 未来趋势 344
14.6 选择X工具包 346
15 工具:开发的战术 349
15.1 开发者友好的操作系统 349
15.2 编辑器选择 350
15.2.1 了解vi 351
15.2.2 了解Emacs 351
15.2.3 非虔诚的选择:两者兼用 352
15.3 专用代码生成器 352
15.3.1 yacc和lex 353
15.3.1 实例分析:fetchmailrc的语法。 356
15.3.2 实例分析:Glade 356
15.4 make:自动化编译 357
15.4.1 make的基本理论 357
15.4.2 非C/C++开发中的make 359
15.4.3 通用生成目标 359
15.4.4 生成Makefile 362
15.5 版本控制系统 364
15.5.1 为什么需要版本控制? 364
15.5.2 手工版本控制 365
15.5.3 自动化的版本控制 366
15.5.4 Unix的版本控制工具 367
15.6 运行期调试 369
15.7 性能分析 370
15.8 使用Emacs整合工具 370
15.8.1 Emacs和make 371
15.8.2 Emacs和运行期调试 371
15.8.3 Emacs和版本控制 371
15.8.4 Emacs和Profiling 372
15.8.5 像IDE一样,但更强 373
16 重用:论不要重新发明轮子 375
——《道德经》 375
16.1 猪小兵的故事 376
16.2 透明性是重用的关键 379
16.3 从重用到开源 380
16.4 生命中最美好的就是“开放” 381
16.5 何处找? 384
16.6 使用开源软件的问题 385
16.7 许可证问题 386
16.7.1 开放源码的资格 386
16.7.2 标准开放源码许可证 388
16.7.3 何时需要律师 390
第一篇 391
17 可移植性:软件可移植性 与遵循标准 393
17.1 C语言的演化 394
17.1.1 早期的C语言 395
17.2.1 C 语言标准 396
17.2 Unix 标准 398
17.2.1 标准和Unix之战 398
17.2.2 庆功宴上的幽灵 401
17.2.3 开源世界的Unix标准 402
17.3 IETF和RFC标准化过程 403
17.4 规格DNA,代码RNA 405
17.5 可移植性编程 408
17.5.1 可移植性和编程语言选择 409
17.5.2 避免系统依赖性 412
17.5.3 移植工具 413
17.6 国际化 413
17.7 可移植性、开放标准以及开放源码 414
18 文档:向网络的世界阐释代码 417
18.1 文档概念 418
18.2 Unix风格 420
18.2.1 大文档偏爱 420
18.2.2 文化风格 421
18.3 各种Unix文档格式 422
18.3.1 troff和Documenter's Workbench Tools 422
18.3.2 TEX 424
18.3.3 Texinfo 425
18.3.4 POD 425
18.3.5 HTML 426
18.3.6 DocBook 426
18.4 当前的混乱和可能的出路 426
18.5 DocBook 427
18.5.1 文档类型定义 427
18.5.2 其它DTD 428
18.5.3 DocBook 工具链 429
18.5.4 移植工具 431
GNU Texinfo 432
POD 432
LATEX 432
18.5.5 编辑工具 432
18.5.6 相关标准和实践 433
18.5.7 SGML 433
18.5.8 XML-DocBook 参考书籍 433
18.6 编写Unix文档的最佳实践 434
19 开放源码:在Unix新社区 中编程 437
19.1 Unix和开放源码 438
19.2 与开源开发者协同工作的最佳实践 440
19.2.1 良好的修补实践 440
19.2.2 良好的项目、档案文件命名实践 444
19.2.3 良好的开发实践 447
19.2.4 良好的发行制作实践 450
19.2.5 良好的交流实践 454
19.3 许可证的逻辑:如何挑选 456
19.4 为什么应使用某个标准许可证 457
19.5 各种开源许可证 457
19.5.1 MIT或者X Consortium许可证 457
19.5.2 经典BSD许可证 457
19.5.3 Artistic许可证 458
19.5.4 通用公共许可证 458
19.5.5 Mozilla 公共许可证 459
20 未来:危机与机遇 461
20.1 Unix传统中的必然和偶然 461
20.2 Plan 9:未来之路 464
20.3 Unix设计中的问题 466
20.3.1 Unix文件就是一大袋字节 466
20.3.2 Unix对GUI的支持孱弱 467
20.3.3 文件删除不可撤销 468
20.3.4 Unix假定文件系统是静态的 469
20.3.5 作业控制设计拙劣 469
20.3.6 Unix API 没有使用异常 470
20.3.7 ioctl(2)和fcntl(2)是个尴尬 471
20.3.8 Unix安全模型可能太过原始 471
20.3.9 Unix名字种类太多 472
20.3.10 文件系统可能有害论 472
20.3.11 朝向全局互联网地址空间 472
20.4 Unix的环境问题 473
20.5 Unix文化中的问题 475
20.6 信任的理由 478
附录A 缩写词表 479
附录C 贡献者 495
附录D 无根的根:无名师的Unix心传 499
索引 495


书评:
     贯穿始终的 KISS 原则,很多年前就被谆谆教导过了。它被我无时无刻的都拿出来警告自己的设计过程。读完这本书,让我对 KISS 又有了一次升华。其实,这本书对我几个月来设计游戏服务器架构的影响是满大的。坚定了我每写一个程序做好一件事的决心。让我更确信用多进程的设计取代多线程的决定是正确的;我们坚持的二进制模块复用的模型是切合 SPOT 原则的。 
  回顾自己对 C++ ,逐步的敬而远之,并非因为读了这本书。这本书基本没谈 C++ ,但是只言片语却深合我心。书中对 C++ 的不屑,于我看来并非如我曾经读过的某些书评所述:来源于作者对 C++ 了解的肤浅。 
  我自己仍旧对 C++ 充满兴趣,并继续努力对 C++ 做最大的理解,其实正是为了可以压抑住在项目中使用它的念头。这是我最近一年来编程思想最大的转变。同时,身边的人也受到了这种影响并慢慢接受。我相信,我们的方向是正确的。 -云风
。。。。
 作为一个多年的开源(Open Source)拥趸,像《UNIX编程艺术》(The Art of Unix Programming)这样的好书自然不能错过。大约一周前我无意中在公司书柜中发现了它,立刻开始投入阅读。现在,我已经开始边读第二遍边作读书笔记了。 
   
  开篇的译序很有趣,第一句话就写道: 
   
   “大多数译序是给作者说好话,顺便带动以下译本销量的,本篇是一个例外。” 
   
  这是我见过的最棒的序言开头之一,在表明了自己独特的观点和立场的同时,译者还有效地激起了读者的好奇心。我记得看到这儿当场就笑了。 
   
  中间还有一段是这样的: 
   
   “本书翻译历经一年多的时间,之前我曾经约略翻过纸版,偶尔见到一些合我胃口的言论,于是心有灵犀认为这书不错;然而等到译到中途,便发现ESR实在是美国愤青,这便是课外读物合工本教程给读者的不同感受了。翻译的过程对译者是精读的过程,但希望读者能用它来打发堵车、候机、等人时的无聊时间,这书适合从任何一篇翻起。” 
   
  ESR指的是原作者Eric S. Raymond。“美国愤青”这词难为译者如何想来,让人忍俊不禁!最后一句话让人深切地感受到三位译者(姜宏、何源和蔡晓俊)的谦逊和诙谐。 
   
  说完了译者序,再看看作者序。其中前两段话是我感同身受、极为赞赏的: 
   
   “知识和专能差异巨大,凭借知识可以推断出该做什么,而专能让你甚至在无意之间,条件反射似的把事情做好。 
   
   这本书确实有关‘知识’,但更着眼于‘专能’。你将学到那些Unix专家们都不自知的Unix开发知识。少一点技术,多一些共享文化:显见和隐微的,直观和潜流的-这是本书和大多数Unix书籍不同的地方-不止于方法,更重乎理念。” 
   
   “工程和设计的每个分支都有自己的技术文化。在大多数工程领域重,就一个专业人员的素养组成来说,有些不成文的行业素养具有与标准手册及教科书同等重要的地位(并且随着专业人员经验的日积月累,这些经验常常会比书本更重要)。资深工程师们在工作中会积累大量的隐形知识,他们用类似禅宗‘教外别传’的方式,通过言传身教传授给后辈。” 
。。。。
这本书买的比较晚,却是赶在其他书之前最先读完。前前后后估计读了三个月有余,当然因为中途有好看的小说插队,以至于耽搁了不少。 
   
  这个标题很容易让人以为和那部旷世巨作一样,还好通过评论,已经知道是一种思想的阐述。所以刚才,当我把书放回书架的时候,犹豫了一下,还是放在《代码大全》的旁边,毕竟总的来说,他们是同一类型的,只是《代码大全》关注的是细节,而《Unix编程艺术》是一种大的宏观的实践,至于是否最佳实践,当然是仁者见仁的问题了。 
   
  感受了KISS原则,像追星一样这段时间把msn的签名都改成Keep !t S!mple and Stupid 。毕竟这个原则深得我心,因为我也是一个程序员的缘故吧。 
   
  工作需要,有时候在linux或者unix上操作,那些小巧实用的工具让工作轻松不已。但是开发机毕竟还是windows的机器,时常会想去寻找unix工具的替代版本,比如说tail,那时候很是感慨的和一个做.net的同学宣扬这些工具的好处,宣扬linux系统多么的善解人意。 
   
  虽然自己不是unix程序员,但是unix的好多理念其实早就脱离unix本身,这一点也是感受颇深的,尤其在opensource领域。所以当读到后期,真的是有种废寝忘食的感觉了。凌晨一点才依依不舍的放下书本,熄灯睡觉,早上8点还坐在沙发上捧着该书。 
   
  从上不难看出,我对本书的推崇,不过好玩的是,当我读完最后一部分《无根之根》的时候,合上书本,心里却在想,是不是要把它当作二手书卖掉?读过了,领会了,其实一切都那么简单,在合适的时候去贯彻就行了,至少对我而言不会像其他书一样去反复翻阅——书架上待读的书实在太多了

本书下载地址:http://ishare.iask.sina.com.cn/f/10468232.html
admin 离线
级别: 管理员
UID: 1
精华: 1
发帖: 995
金币: 526 个
银元: 488 个
铜钱: 7843 个
技术分: 601 个
在线时间: 736(时)
注册时间: 2010-04-21
最后登录: 2018-02-24
沙发  发表于: 2010-11-10   
大家下载了觉得好,就回复一下吧,算对我的支持了。。学习这本书的时候,也来这里多讨论啊,呵呵!!
云栖隐者 离线
级别: 菜鸟
UID: 228
精华: 0
发帖: 9
金币: 0 个
银元: 40 个
铜钱: 75 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2010-11-11
最后登录: 2014-06-11
板凳  发表于: 2010-11-11   
感谢楼主啊~~~~~~~~
dortmund 离线
级别: 菜鸟
UID: 241
精华: 0
发帖: 76
金币: 0 个
银元: 25 个
铜钱: 0 个
技术分: 0 个
在线时间: 14(时)
注册时间: 2010-11-11
最后登录: 2016-09-06
地板  发表于: 2010-11-11   
感谢啊
zfuke 离线
级别: 菜鸟
UID: 120
精华: 0
发帖: 8
金币: 0 个
银元: 10 个
铜钱: 29 个
技术分: 0 个
在线时间: 5(时)
注册时间: 2010-11-06
最后登录: 2010-12-13
4楼  发表于: 2010-11-12   
感谢楼主
jfool 离线
级别: 菜鸟
UID: 435
精华: 0
发帖: 4
金币: 0 个
银元: 10 个
铜钱: 70 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2010-11-20
最后登录: 2010-11-20
5楼  发表于: 2010-11-20   
上帝都见证了楼主的伟大 发自肺腑!~
wjk343977868 离线
级别: 菜鸟
UID: 994
精华: 0
发帖: 7
金币: 0 个
银元: 10 个
铜钱: 75 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2011-01-09
最后登录: 2011-01-09
6楼  发表于: 2011-01-09   
感谢楼主,就是下载没速度啊。能不能麻烦你发我QQ:343977868 一份,谢谢!
wjk343977868 离线
级别: 菜鸟
UID: 994
精华: 0
发帖: 7
金币: 0 个
银元: 10 个
铜钱: 75 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2011-01-09
最后登录: 2011-01-09
7楼  发表于: 2011-01-09   
下下来了,嘿嘿。楼主不用发了。
yixufeng 离线
级别: 菜鸟
UID: 480
精华: 0
发帖: 6
金币: 0 个
银元: 25 个
铜钱: 10 个
技术分: 0 个
在线时间: 5(时)
注册时间: 2010-11-23
最后登录: 2011-04-28
8楼  发表于: 2011-01-11   
楼主,为何下不了了,搜索不到资源啊,谁有能帮忙发一份到我的邮箱不junyi2007@yahoo.cn
级别: 菜鸟
UID: 1141
精华: 0
发帖: 3
金币: 0 个
银元: 25 个
铜钱: 15 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2011-01-13
最后登录: 2011-01-13
9楼  发表于: 2011-01-13   
回 楼主(admin) 的帖子
感谢楼主啊
描述
快速回复

批量上传需要先选择文件,再选择上传
认证码:

验证问题:
printf("%d", 23)
按"Ctrl+Enter"直接提交