《代码大全2》(英文限量珍藏版)《程序员修炼之道》《计算机程序的构造和解释》《C程序设计语言》《算法导论》《重构 改善既有代码的设计》《人月神话》《设计模式》(典藏版)《计算机程序设计艺术》《编译原理》《深入浅出设计模式》《代码整洁之道》《编程珠玑》《修改软件的艺术》《编码:隐匿在计算机软硬件背后的语言》《黑客与画家》《深入理解计算机系统》《HTTP权威指南》《重来》《集体智慧编程》《活着》《编程之美》《程序员思维修炼》《系统化思维导论》《大话数据结构》《UNIX网络编程》《高性能Linux服务器运维实战》《TCP/IP详解》《计算机网络:自顶向下方法》《UNIX环境高级编程》《程序员的自我修养》《数据密集型应用系统设计》《现代操作系统》《操作系统真象还原》《Windows核心编程》《深入理解LINUX内核》《传世经典书丛:UNIX编程艺术》《清醒思考的艺术》《C和指针》《C专家编程》《C 陷阱与缺陷》《C++ Primer Plus》《STL源码剖析》《Effective C++》《深度探索C++对象模型》《Java核心技术》《Effective Java中文版》《深入理解Java虚拟机》《Java并发编程实战》《轻量级Java Web整合开发》《精通Spring》《Java编程思想》《Java性能权威指南》《大话设计模式》《图解HTTP》《Redis实战》《Redis设计与实现》《高性能MySQL》《鸟哥的Linux私房菜》《Spring Cloud Alibaba微服务原理与实战》《第一本Docker书》《MySQL必知必会》《MySQL技术内幕:InnoDB存储引擎》《深入浅出MySQL》《SQL基础教程》《CSS权威指南》《CSS揭秘》《CSS世界》《Head First HTML与CSS》《零基础学HTML5+CSS3》《HTML5+CSS3+JavaScript从入门到精通》《JavaScript DOM编程艺术》《JavaScript高级程序设计》《JavaScript语言精粹》《你不知道的JavaScript 》《JavaScript设计模式与开发实践》《ES6标准入门》《深入理解ES6》《高性能JavaScript》《数据结构与算法JavaScript描述》《JavaScript ES6 函数式编程入门经典》《HTML5权威指南》《锋利的jQuery》《深入React技术栈》《React状态管理与同构实战》《React进阶之路》《React学习手册》《React Native移动开发实战》《React+Redux前端开发实战》《Spring Boot+Vue全栈开发实战》《Vue.js项目实战》《Vue.js入门与商城开发实战》《Vue.js 从入门到实战》《Vue.js实战》《深入浅出Node.js》《Node.js实战》《Node.js无服务器应用实战》《Node与Express开发》《编写可维护的JavaScript》《大型网站技术架构 核心原理与案例分析》《Web性能权威指南》《点石成金》

《传世经典书丛:UNIX编程艺术》

点击购买

编辑推荐

《传世经典书丛:UNIX编程艺术》内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。


内容简介

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


作者简介

  Eric S.Raymond,从1982年开始就是UNIX开发者。作为开源社区文化的倡导和呼吁者,他在《大教堂与市集》中写下了这场运动的宣言,同时他还是《新黑客词典》的编辑。


精彩书摘

  terminfo本身使用文件系统作为一个简单的层级数据库。这种偷懒相当具有建设性,符合经济性原则和透明性原则。这意味着对文件系统进行浏览、检查和修改的所有普通工具都可以用于对terminfo数据库进行浏览、检查和修改;无需编写和调试专用工具(用于打包和解包单个记录的tic(1)和infocmp(1)工具除外)。这也意味着要加速数据库的访问就得要加速文件系统本身,知道这一点可以使更多应用程序受益,而不仅仅是curses(3)的用户。
  这种结构还有另外一种优点,但在terminfo例子中没有展示出来:你开始使用Unix的授权机制而不用自己编写带来额外bu9的访问控制层。这也是采纳而不是对抗Unix“一切皆文件”基本原则的结果。
  terminfo目录的布局在大多数Unix文件系统上都很浪费空间。每条目长度通常在400~1400字节之间,但是文件系统通常为每一个非空磁盘文件至少分配4k的空间。出于选择压缩二进制格式的同一个原因,即为了把terminfo使用的程序的启动延时降到最小,设计者接受了这个代价。同一价格所能买到的磁盘容量已经猛增了一千倍,更能证明这个决定的正确。
  比较这种格式和Microcsoft Windows的注册表文件所用的格式很有启发意义。注册表是Windows本身及应用程序都使用的属性数据库。所有注册记录都存放在一个大文件中。注册记录既包含文本也包含二进制数据,需要专用的编辑工具。别的不说,这种“一个大文件”的方法还导致了臭名昭著的“注册表蠕变”现象;平均访问时间随着新记录的加入而无限上升。因为系统没有提供标准APl来编辑注册表,应用程序本身使用专用代码编辑注册表,使得注册表极易受损,甚至能够锁定整个系统。
  使用Unix文件系统作为数据库是一种策略,对数据库要求简单的其它应用程序可以效仿并从中受益。不这样做的充分理由通常与性能问题无关,更可能的情形是数据库关键字不太适合做文件名。无论如何,这是在原型设计时非常有用的一种很好的快速编程方法。
  6.1.7 实例分析:Freeciv数据文件
  Freeciv是一款受到Sid Meier经典的Civilization H启发而制作的开源策略游戏。在该游戏中,每个玩家从一群到处流浪的新石器游牧民开始缔造一个文明。玩家的文明可以探索并拓殖世界,参与战争,从事贸易和研究先进技术。有些玩家实际上可能是人工智能;和这些电脑玩家玩单机游戏很有挑战性。如果谁统治了整个世界,或者第一个研制出先进技术从而获得宇宙飞船飞往半人马座阿尔法星(Alpha Centauri),谁就是游戏的胜利者。源码和文档可以在处获得。


链接: https://www.fly63.com/course/26_1179