4.1.获得系统特定目录


-
4.1.获得系统特定目录
5.77MB
NetLimiter v4.1.6.0 网络流量监测控制软件
2021-02-26NetLimiter 是专为Windows设计的终极互联网流量控制和监控工具,您可以使用 NetLimiter 为应用程序甚至单个连接设置下载/上传传输速率限制,并监控其互联网流量,除了这一独特功能外,Netlimiter还提供全面的互联网统计工具,它包括实时流量测量和长期每应用程序的互联网流量统计。NetLimiter Pro可以为任何应用程序设置准确的下载/上传速度限制,或者给予它们更高的优先级,以确保它们始终获得所需的足够带宽,您不会错过连接到互联网的单个应用程序。您还将监控它从互联网传输的数据量。全部也显示在可自定义的图表中,使用这个简单且交互式的规则系统,您将可以指定哪些应用程序可以联网或禁止该软件联网,NetLimiter Pro 允许您为选定的应用程序/过滤器设置数据传输配额。如果达到配额 – 可以启用限制,阻止规则或其他规则。 功能: 网络流量监控 – 应用程序和网络连接的实时流量监控; 连接拦截 – 用户可以拦截所选应用程序连接到网络; 优先级 – 允许您优先选择所选应用的流量优先于其他应用; 配额设定 – 如果达到指定的数据传输配额,则阻止或限制应用程序; 流量统计 – 长期数据传输统计;限速范围 – 为计算机中运行的任何应用程序设置最大传输速度; 过滤器编辑 – 创建自定义过滤器以高度适用于自己的网络规则; 计划任务 – 指定自动启用或禁用特定规则「限制、优先级」的时间; 远程管理 – 支持使用 NetLimiter 远程控制其他计算机;用户权限 – 指定哪个用户可以控制或仅监控网络流量; 流量图表 – 显示所选应用程序或连接的下载/上载数据传输速度;信息视图 – 显示有关选择连接、应用程序或过滤器的各种信息; 规则编辑器 – 用于自定义 NetLimiter 行为的高级工具; 连接历史 – 它显示按 IP 地址和应用程序分组的流量统计信息;
3.62MB
Mave3详细教程(中英版、入门、中级、高级).rar
2010-11-14Maven权威指南 Authors Maven权威指南是一本关于Apache Maven的书。 Copyright 1. Creative Commons BY-ND-NC Foreword: Beta 0.16 Preface 1. How to Use this Book 2. Your Feedback 3. Font Conventions 4. Maven Writing Conventions 5. Acknowledgements 1. 介绍 Apache Maven 1.1. Maven... 它是什么? 1.2. 约定优于配置(Convention Over Configuration) 1.3. 一个一般的接口 1.4. 基于Maven插件的全局性重用 1.5. 一个“项目”的概念模型 1.6. Maven是Ant的另一种选择么? 1.7. 比较Maven和Ant 1.8. 总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或OpenBSD上安装Maven 2.4. 验证Maven安装 2.5. Maven安装细节 2.5.1. 用户相关配置和仓库 2.5.2. 升级Maven 2.6. 获得Maven帮助 2.7. 使用Maven Help插件 2.7.1. 描述一个Maven插件 2.8. 关于Apache软件许可证 I. Maven实战 3. 一个简单的Maven项目 3.1. 简介 3.1.1. 下载本章的例子 3.2. 创建一个简单的项目 3.3. 构建一个简单的项目 3.4. 简单的项目对象模型 (Project Object Model) 3.5. 核心概念 3.5.1. Maven插件和目标 (Plugins and Goals) 3.5.2. Maven生命周期 (Lifecycle) 3.5.3. Maven坐标 (Coordinates) 3.5.4. Maven仓库(Repositories) 3.5.5. Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1. Yahoo! Weather RSS 4.3. 创建Simple Weather项目 4.4. 定制项目信息 4.5. 添加新的依赖 4.6. Simple Weather源码 4.7. 添加资源 4.8. 运行Simple Weather项目 4.8.1. Maven Exec 插件 4.8.2. 浏览你的项目依赖 4.9. 编写单元测试 4.10. 添加测试范围依赖 4.11. 添加单元测试资源 4.12. 执行单元测试 4.12.1. 忽略测试失败 4.12.2. 跳过单元测试 4.13. 构建一个打包好的命令行应用程序 5. 一个简单的Web应用 5.1. 介绍 5.1.1. 下载本章样例 5.2. 定义这个简单的Web应用 5.3. 创建这个简单的Web应用 5.4. 配置Jetty插件 5.5. 添加一个简单的Servlet 5.6. 添加J2EE依赖 5.7. 小结 6. 一个多模块项目 6.1. 简介 6.1.1. 下载本章样例 6.2. simple-parent 项目 6.3. simple-weather 模块 6.4. simple-webapp 模块 6.5. 构建这个多模块项目 6.6. 运行Web应用 7. 多模块企业级项目 7.1. 简介 7.1.1. 下载本章样例 7.1.2. 多模块企业级项目 7.1.3. 本例中所用的技术 7.2. simple-parent项目 7.3. simple-model模块 7.4. simple-weather模块 7.5. simple-persist模块 7.6. simple-webapp模块 7.7. 运行这个Web应用 7.8. simple-command模块 7.9. 运行这个命令行程序 7.10. 小结 7.10.1. 编写接口项目程序 8. 优化和重构POM 8.1. 简介 8.2. POM清理 8.3. 优化依赖 8.4. 优化插件 8.5. 使用Maven Dependency插件进行优化 8.6. 最终的POM 8.7. 小结 II. Maven Reference 9. 项目对象模型 9.1. 简介 9.2. POM 9.2.1. 超级POM 9.2.2. 最简单的POM 9.2.3. 有效POM 9.2.4. 真正的POM 9.3. POM语法 9.3.1. 项目版本 9.3.1.1. 版本构建号 9.3.1.2. SNAPSHOT版本 9.3.1.3. LATEST 和 RELEASE 版本 9.3.2. 属性引用 9.4. 项目依赖 9.4.1. 依赖范围 9.4.2. 可选依赖 9.4.3. 依赖版本界限 9.4.4. 传递性依赖 9.4.4.1. 传递性依赖和范围 9.4.5. 冲突解决 9.4.6. 依赖管理 9.5. 项目关系 9.5.1. 坐标详解 9.5.2. 多模块项目 9.5.3. 项目继承 9.6. POM最佳实践 9.6.1. 依赖归类 9.6.2. 多模块 vs. 继承 9.6.2.1. 简单项目 9.6.2.2. 多模块企业级项目 9.6.2.3. 原型父项目 10. 构建生命周期 10.1. 简介 10.1.1. 清理生命周期 (clean) 10.1.2. 默认生命周期 (default) 10.1.3. 站点生命周期 (site) 10.2. 打包相关生命周期 10.2.1. JAR 10.2.2. POM 10.2.3. Maven Plugin 10.2.4. EJB 10.2.5. WAR 10.2.6. EAR 10.2.7. 其它打包类型 10.3. 通用生命周期目标 10.3.1. Process Resources 10.3.2. Compile 10.3.3. Process Test Resources 10.3.4. Test Compile 10.3.5. Test 10.3.6. Install 10.3.7. Deploy 11. 构建Profile 11.1. Profile是用来做什么的? 11.1.1. 什么是构建可移植性 11.1.1.1. 不可移植构建 11.1.1.2. 环境可移植性 11.1.1.3. 组织(内部)可移植性 11.1.1.4. 广泛(全局)可移植性 11.1.2. 选择一个适当级别的可移植性 11.2. 通过Maven Profiles实现可移植性 11.2.1. 覆盖一个项目对象模型 11.3. 激活Profile 11.3.1. 激活配置 11.3.2. 通过属性缺失激活 11.4. 外部Profile 11.5. Settings Profile 11.5.1. 全局Settings Profile 11.6. 列出活动的Profile 11.7. 提示和技巧 11.7.1. 常见的环境 11.7.2. 安全保护 11.7.3. 平台分类器 11.8. 小结 12. Maven Assemblies 12.1. Introduction 12.2. Assembly Basics 12.2.1. Predefined Assembly Descriptors 12.2.2. Building an Assembly 12.2.3. Assemblies as Dependencies 12.2.4. Assembling Assemblies via Assembly Dependencies 12.3. Overview of the Assembly Descriptor 12.4. The Assembly Descriptor 12.4.1. Property References in Assembly Descriptors 12.4.2. Required Assembly Information 12.5. Controlling the Contents of an Assembly 12.5.1. Files Section 12.5.2. FileSets Section 12.5.3. Default Exclusion Patterns for fileSets 12.5.4. dependencySets Section 12.5.4.1. Customizing Dependency Output Location 12.5.4.2. Interpolation of Properties in Dependency Output Location 12.5.4.3. Including and Excluding Dependencies by Scope 12.5.4.4. Fine Tuning: Dependency Includes and Excludes 12.5.4.5. Transitive Dependencies, Project Attachments, and Project Artifacts 12.5.4.6. Advanced Unpacking Options 12.5.4.7. Summarizing Dependency Sets 12.5.5. moduleSets Sections 12.5.5.1. Module Selection 12.5.5.2. Sources Section 12.5.5.3. Interpolation of outputDirectoryMapping in moduleSets 12.5.5.4. Binaries section 12.5.5.5. moduleSets, Parent POMs and the binaries Section 12.5.6. Repositories Section 12.5.7. Managing the Assembly’s Root Directory 12.5.8. componentDescriptors and containerDescriptorHandlers 12.6. Best Practices 12.6.1. Standard, Reusable Assembly Descriptors 12.6.2. Distribution (Aggregating) Assemblies 12.7. Summary 13. 属性和资源过滤 13.1. 简介 13.2. Maven属性 13.2.1. Maven项目的属性 13.2.2. Maven的Settings属性 13.2.3. 环境变量属性 13.2.4. Java系统属性 13.2.5. 用户定义的属性 13.3. 资源过滤 14. Maven和Eclipse: m2eclipse 14.1. 简介 14.2. m2eclipse 14.3. 安装 m2eclipse 插件 14.3.1. 安装前提条件 14.3.1.1. 安装 Subclipse 14.3.1.2. 安装 Mylyn 14.3.1.3. 安装 AspectJ Tools Platform (AJDT) 14.3.1.4. 安装 Web Tools Platform (WTP) 14.3.2. 安装 m2eclipse 14.4. 开启 Maven 控制台 14.5. 创建一个 Maven 项目 14.5.1. 从 SCM 签出一个 Maven 项目 14.5.2. 用Maven Archetype创建一个Maven项目 14.5.3. 创建一个 Maven 模块 14.6. 创建一个Maven POM文件 14.7. 导入Maven项目 14.7.1. 导入一个Maven项目 14.7.2. 具体化一个Maven项目 14.8. 运行Maven构建 14.9. 使用Maven进行工作 14.9.1. 添加及更新依赖或插件 14.9.2. 创建一个Maven模块 14.9.3. 下载源码 14.9.4. 打开项目页面 14.9.5. 解析依赖 14.10. 使用Maven仓库进行工作 14.10.1. 搜索 Maven 构件和 Java 类 14.10.2. 为Maven仓库编制索引 14.11. 使用基于表单的POM编辑器 14.12. 在m2eclipse中分析项目依赖 14.13. Maven 选项 14.14. 小结 15. 站点生成 15.1. 简介 15.2. 使用Maven构建项目站点 15.3. 自定义站点描述符 15.3.1. 自定义页面顶端图片 15.3.2. 自定义导航菜单 15.4. 站点目录结构 15.5. 编写项目文档 15.5.1. APT样例 15.5.2. FML样例 15.6. 部署你的项目web站点 15.6.1. 配置服务器认证 15.6.2. 配置文件和目录模式 15.7. 自定义站点外观 15.7.1. 自定义站点CSS 15.7.2. 创建自定义的站点模板 15.7.3. 可重用的web站点皮肤 15.7.4. 创建自定义的主题CSS 15.7.5. 在皮肤中自定义站点模板 15.8. 提示与技巧 15.8.1. 给HEAD嵌入XHTML 15.8.2. 在你站点logo下添加链接 15.8.3. 为你的站点添加导航链接 15.8.4. 添加项目版本 15.8.5. 修改发布日期格式和位置 15.8.6. 使用Doxia宏 16. 仓库管理器 16.1. 简介 16.1.1. Nexus历史 16.2. 安装Nexus 16.2.1. 从Sonatype下载Nexus 16.2.2. 安装Nexus 16.2.3. 运行Nexus 16.2.4. 安装后检查单 16.2.5. 为Redhat/Fedora/CentOS设置启动脚本 16.2.6. 升级Nexus版本 16.3. 使用Nexus 16.3.1. 浏览仓库 16.3.2. 浏览组 16.3.3. 搜索构件 16.3.4. 浏览系统RSS源 16.3.5. 浏览日志文件和配置 16.3.6. 更改你的密码 16.4. 配置Maven使用Nexus 16.4.1. 使用Nexus中央代理仓库 16.4.2. 使用Nexus作为快照仓库 16.4.3. 为缺少的依赖添加仓库 16.4.4. 添加一个新的仓库 16.4.5. 添加一个仓库至一个组 16.5. 配置Nexus 16.5.. 定制服务器配置 16.5.2. 管理仓库 16.5.3. 管理组 16.5.4. 管理路由 16.5.5. 网络配置 16.6. 维护仓库 16.7. 部署构件至Nexus 16.7.1. 部署发布版 16.7.2. 部署快照版 16.7.3. 部署第三方构件 17. Writing Plugins 17.1. Introduction 17.2. Programming Maven 17.2.1. What is Inversion of Control? 17.2.2. Introduction to Plexus 17.2.3. Why Plexus? 17.2.4. What is a Plugin? 17.3. Plugin Descriptor 17.3.1. Top-level Plugin Descriptor Elements 17.3.2. Mojo Configuration 17.3.3. Plugin Dependencies 17.4. Writing a Custom Plugin 17.4.1. Creating a Plugin Project 17.4.2. A Simple Java Mojo 17.4.3. Configuring a Plugin Prefix 17.4.4. Logging from a Plugin 17.4.5. Mojo Class Annotations 17.4.6. When a Mojo Fails 17.5. Mojo Parameters 17.5.1. Supplying Values for Mojo Parameters 17.5.2. Multi-valued Mojo Parameters 17.5.3. Depending on Plexus Components 17.5.4. Mojo Parameter Annotations 17.6. Plugins and the Maven Lifecycle 17.6.1. Executing a Parallel Lifecycle 17.6.2. Creating a Custom Lifecycle 17.6.3. Overriding the Default Lifecycle 18. Writing Plugins in Alternative Languages 18.1. Writing Plugins in Ant 18.2. Creating an Ant Plugin 18.3. Writing Plugins in JRuby 18.3.1. Creating a JRuby Plugin 18.3.2. Ruby Mojo Implementations 18.3.3. Logging from a Ruby Mojo 18.3.4. Raising a MojoError 18.3.5. Referencing Plexus Components from JRuby 18.4. Writing Plugins in Groovy 18.4.1. Creating a Groovy Plugin A. Appendix: Settings Details A.1. Quick Overview A.2. Settings Details A.2.1. Simple Values A.2.2. Servers A.2.3. Mirrors A.2.4. Proxies A.2.5. Profiles A.2.6. Activation A.2.7. Properties A.2.8. Repositories A.2.9. Plugin Repositories A.2.10. Active Profiles B. Appendix: Sun Specification Alternatives List of Figures 3.1. 一个插件包含一些目标 3.2. 一个生命周期是一些阶段的序列 3.3. 一个目标绑定到一个阶段 3.4. 被绑定的目标随着它们阶段的运行而运行 3.5. 一个Maven项目的坐标 3.6. Maven空间是项目的一个坐标系统 3.7. Maven处理传递性依赖 7.1. 多模块企业级应用的模块关系 7.2. 天气数据的简单对象模型 7.3. Spring MVC 控制器引用simple-weather和simple-persist中的组件 7.4. 引用 simple-weather 和 simple-persist 的命令行应用 7.5. 编写接口项目程序 9.1. 项目对象模型 9.2. 超级POM永远是最基础的父POM 9.3. 多模块项目关系 9.4. a-parent和project的项目继承关系 9.5. maven-book 多模块 vs. 继承 9.6. 企业级多模块 vs. 继承 9.7. 为特定的项目使用父项目作为“原型” 12.1. Assembly Descriptor Picture 14.1. 在Eclipse中开启Maven控制台 14.2. 使用m2eclipse向导来创建一个新项目 14.3. 从Subversion签出一个新的项目 14.4. 使用Maven Archetype创建一个Maven项目 14.5. 创建一个Maven模块 14.6. 为一个新的Maven模块选择一个父项目 14.7. 创建一个新的POM 14.8. 为新的POM添加依赖 14.9. 向中央仓库查询依赖 14.10. 导入一个Maven项目 14.11. 导入一个多模块的Maven项目 14.12. Materializing a Maven Project 14.13. 选择一个构件以具体化 14.14. 具体化Apache Camel 14.15. 通过Run As..运行一个Eclipse构建 14.16. 配置一个Maven构建作为一个运行配置 14.17. 可用的Maven特性 14.18. 手动给项目的POM添加一个依赖 14.19. 更新Maven依赖 14.20. 搜索依赖 14.21. 搜索构件和类 14.22. 搜索一个POM 14.23. 在仓库中搜索类 14.24. 打开Maven索引视图 14.25. Maven索引视图 14.26. 从索引视图定位一个POM 14.27. idiom-core的POM编辑器的Overview标签页 14.28. idiom父项目的POM编辑器的Overview标签页 14.29. idiom-core的有效POM 14.30. POM编辑器的Dependencies标签页 14.31. POM编辑器的Build标签页 14.32. POM编辑器的Dependency Tree标签页 14.33. 在依赖树中定位依赖 14.34. 以图的形式查看项目的依赖 14.35. 依赖图的放射状布局 14.36. Eclipse的Maven首选项 14.37. Maven目标对话框 14.38. Maven安装选项页面 14.39. 开启Maven版本装饰器 14.40. 没有Maven版本装饰器的包浏览器 14.41. 开启了Maven版本装饰器的包浏览器 15.1. 简单生成的Maven站点 15.2. 定制样例项目的web站点 16.1. Nexus登陆窗口(默认 用户名/密码 是 admin/admin123) 16.2. 匿名用户的Nexus界面 16.3. 浏览一个Nexus仓库 16.4. 浏览一个Nexus组 16.5. 关键词为"maven"的构件搜索结果 16.6. 浏览Nexus系统信息源 16.7. 浏览Nexus日志和配置文件 16.8. 更改你的Nexus密码 16.9. 添加一个Nexus仓库 16.10. 添加新的仓库至一个Nexus组 16.11. Nexus服务器配置 16.12. 代理仓库的配置页面 16.13. Nexus中的组配置页面 16.14. Nexus中的路由配置页面 List of Examples 1.1. 一个简单的 Ant build.xml 文件 1.2. 一个简单的 Maven pom.xml 3.1. Simple 项目的 pom.xml 文件 4.1. simple-wheather 项目的初始 POM 4.2. 为 pom.xml 添加组织,法律和开发人员信息 4.3. 添加 Dom4J, Jaxen, Velocity 和 Log4J 作为依赖 4.4. Simple Weather 的 Weather 模型对象 4.5. Simple Weather 的 Main 类 4.6. Simple Weather 的 YahooRetriever 类 4.7. Simple Weather 的 YahooParser 类 4.8. Simple Weather 的 WeatherFormatter 类 4.9. Simple Weather 的 Log4J 配置文件 4.10. Simple Weather 的 Output Velocity 模板 4.11. Simple Weather 的 YahooParserTest 单元测试 4.12. Simple Weather 的 WeatherFormatterTest 单元测试 4.13. 添加一个测试范围依赖 4.14. Simple Weather 的 WeatherFormatterTest 期望输出 4.15. Simple Weather 的 YahooParserTest XML 输入 4.16. 忽略单元测试失败 4.17. 插件参数表达式 4.18. 跳过单元测试 4.19. 配置 Maven 装配描述符 5.1. simple-web 项目的初始 POM 5.2. 配置 Jetty 插件 5.3. src/main/webapp/index.jsp 的内容 5.4. src/main/webapp/WEB-INF/web.xml 的内容 5.5. SimpleServlet 类 5.6. 匹配 Simple Servlet 5.7. 添加 Servlet 2.4 规格说明作为依赖 5.8. 添加 JSP 2.0 规格说明作为依赖 6.1. simple-parent 项目的 POM 6.2. simple-weather 模块的 POM 6.3. WeatherService 类 6.4. simple-webapp 模块的 POM 6.5. simple-webapp 的 WeatherServlet 6.6. simple-webapp 的 web.xml 7.1. simple-parent 项目的 POM 7.2. simple-model 的 pom.xml 7.3. 标注的Weather模型对象 7.4. simple-model 的 Condition 模型对象 7.5. simple-weather 模块的 POM 7.6. WeatherService 类 7.7. simple-weather模块的Spring Application Context 7.8. simple-persist 的 POM 7.9. simple-persist'的WeatherDAO类 7.10. simple-persist 的 Spring Application Context 7.11. simple-persist 的 hibernate.cfg.xml 7.12. simple-webapp的POM 7.13. simple-webapp WeatherController 7.14. 由 WeatherController 呈现的 weather.vm 模板 7.15. simple-web 的 HistoryController 7.16. 由 HistoryController 呈现的 history.vm 7.17. weather-servlet.xml 中的 Spring 控制器配置 7.18. simple-webapp 的 web.xml 7.19. simple-command 的 POM 7.20. simple-command 的 Main 类 7.21. WeatherFormatter 使用 Velocity 模板呈现天气数据 7.22. weather.vm Velocity 模板 7.23. history.vm Velocity 模板 8.1. simple-parent 的最终 POM 8.2. simple-command 的最终 POM 8.3. simple-model 的最终 POM 8.4. simple-persist 的最终 POM 8.5. simple-weather 的最终 POM 8.6. simple-webapp 的最终 POM 9.1. 超级POM 9.2. 最简单的POM 9.3. 项目依赖 9.4. 声明可选依赖 9.5. 指定一个依赖界限:JUnit 3.8 - JUnit 4.0 9.6. 指定一个依赖界限:JUnit <= 3.8.1 9.7. 排除一个传递性依赖 9.8. 排除并替换一个传递性依赖 9.9. 在一个顶层POM中定义依赖版本 9.10. top-group的modules元素 9.11. sub-group的modules元素 9.12. 项目继承 9.13. 在一个单独的POM项目中巩固依赖 9.14. 声明一个对于POM的依赖 10.1. 在pre-clean阶段触发一个目标 10.2. 自定义Clean插件的行为 10.3. 为Adobe Flex (SWF)定制打包类型 10.4. 在项目资源中使用属性 10.5. src/main/filters中的default.properties 10.6. 过滤资源 (替换属性) 10.7. 配置额外的资源目录 10.8. 过滤脚本资源 10.9. 为Compiler插件设置source和target版本 10.10. 覆盖默认的源码和输出目录 10.11. 覆盖测试源码和输出的位置 10.12. 配置Surefire忽略单元测试失败 11.1. 使用一个Maven Profile覆盖Compiler插件设置 11.2. Profile中允许出现的元素 11.3. 使用Profile激活动态包含子模块 11.4. Profile激活参数:JDK版本,操作系统参数,以及属性 11.5. 在属性缺失的情况下激活Profile 11.6. 将profile放到一个profiles.xml文件中 11.7. 定义用户特定的Setting Profile (~/.m2/settings.xml) 11.8. 定义激活的Settings Profile 11.9. ~/.m2/settings.xml 中定义一个设置了environment.type的默认profile, 11.10. 项目profile,当environment.type等于'dev'时被激活 11.11. 在用户特定Settings Profile中存储秘密信息 11.12. 使用由平台激活的Profile修饰构件 11.13. 使用由平台激活的Profile和变量替换修饰构件 11.14. 依赖于一个已修饰的构件 12.1. Assembly Descriptor for Executable JAR 12.2. Configuring the project assembly in top-level POM 12.3. Activating the Assembly Plugin Configuration in Child Projects 12.4. POM for the Assembly Bundling Project 12.5. Required Assembly Descriptor Elements 12.6. Including a JAR file in an Assembly using files 12.7. Including Files with fileSet 12.8. Definition of Default Exclusion Patterns from Plexus Utils 12.9. Defining Dependency Sets Using Scope 12.10. Using Dependency Excludes and Includes in dependencySets 12.11. Excluding Files from a Dependency Unpack 12.12. Includes and Excluding Modules with a moduleSet 12.13. Including JavaDoc from Modules in an Assembly 12.14. Including Module Artifacts and Dependencies in an Assembly 13.1. POM中的用户定义属性 13.2. POM的Profile中的用户定义属性 13.3. 在资源中引用Maven属性 13.4. 定义变量和激活资源过滤 15.1. 一个初始的站点描述符 15.2. 给站点描述符添加Banner Left和Banner Right 15.3. 在站点描述符中创建菜单项 15.4. 站点菜单添加链接 15.5. APT文档 15.6. FAQ标记语言文档 15.7. 配置站点部署 15.8. 在用户特定Settings中存储服务器认证信息 15.9. 在远程服务器上配置文件和目录模式 15.10. 在一个项目的POM中自定义页面模板 15.11. 给站点描述符添加一个菜单项 15.12. 在站点描述符中配置自定义站点皮肤 15.13. 给HEAD元素嵌入HTML 15.14. 在你的站点Logo下添加链接 15.15. 配置站点导航链接 15.16. 放置版本信息 15.17. 放置发布日期 15.18. 配置发布日期格式 15.19. XHTML中Snippet宏的输出 16.1. 为Nexus配置Maven Settings (~/.m2/settings.xml) 16.2. 配置Maven使其为发布版和快照版使用Nexus 16.3. ${NEXUS_HOME}/conf/plexus.properties的内容 16.4. 为部署配置发布版本仓库 16.5. 为部署配置快照版本仓库 16.6. Oracle JDBC JAR 依赖 17.1. Plugin Descriptor 17.2. A Plugin Project's POM 17.3. A Simple EchoMojo 17.4. Maven Metadata for the Maven Plugin Group 17.5. Customizing the Plugin Groups in Maven Settings 17.6. Configuring a Plugin Prefix 17.7. A Plugin with Multi-valued Parameters 17.8. Depending on a Plexus Component 17.9. Define a Custom Lifecycle in lifecycle.xml 17.10. Forking a Customer Lifecycle from a Mojo 17.11. Overriding the Default Lifecycle 17.12. Configuring a Plugin as an Extension 18.1. POM for an Ant Maven Plugin 18.2. Echo Ant Mojo 18.3. Echo Ant Mojo Descriptor 18.4. POM for a JRuby Maven Plugin 18.5. The Echo Ruby Mojo 18.6. Referencing a Maven Project from a Ruby Mojo 18.7. Raising a MojoError from a Ruby Mojo 18.8. Depending on a Plexus Component from a Ruby Mojo 18.9. POM for a Groovy Maven Plugin 18.10. A.1. Overview of top-level elements in settings.xml A.2. Simple top-level elements in settings.xml A.3. Server configuration in settings.xml A.4. Mirror configuration in settings.xml A.5. Proxy configuration in settings.xml A.6. Defining Activation Parameters in settings.xml A.7. Setting the ${user.install} property in settings.xml A.8. Repository Configuration in settings.xml A.9. Setting active profiles in settings.xml B.1. Adding JTA 1.0.1B to a Maven Project
866KB
Maven权威指南 很精典的学习教程,比ANT更好用
2009-02-09Maven权威指南 Authors Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.) , Juven Xu () Abstract Maven权威指南是一本关于Apache Maven的书。 Copyright 1. Creative Commons BY-ND-NC Foreword: Beta 0.16 Preface 1. How to Use this Book 2. Your Feedback 3. Font Conventions 4. Maven Writing Conventions 5. Acknowledgements 1. 介绍 Apache Maven 1.1. Maven... 它是什么? 1.2. 约定优于配置(Convention Over Configuration) 1.3. 一个一般的接口 1.4. 基于Maven插件的全局性重用 1.5. 一个“项目”的概念模型 1.6. Maven是Ant的另一种选择么? 1.7. 比较Maven和Ant 1.8. 总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或OpenBSD上安装Maven 2.4. 验证Maven安装 2.5. Maven安装细节 2.5.1. 用户相关配置和仓库 2.5.2. 升级Maven 2.6. 获得Maven帮助 2.7. 使用Maven Help插件 2.7.1. 描述一个Maven插件 2.8. 关于Apache软件许可证 I. Maven实战 3. 一个简单的Maven项目 3.1. 简介 3.1.1. 下载本章的例子 3.2. 创建一个简单的项目 3.3. 构建一个简单的项目 3.4. 简单的项目对象模型 (Project Object Model) 3.5. 核心概念 3.5.1. Maven插件和目标 (Plugins and Goals) 3.5.2. Maven生命周期 (Lifecycle) 3.5.3. Maven坐标 (Coordinates) 3.5.4. Maven仓库(Repositories) 3.5.5. Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1. Yahoo! Weather RSS 4.3. 创建Simple Weather项目 4.4. 定制项目信息 4.5. 添加新的依赖 4.6. Simple Weather源码 4.7. 添加资源 4.8. 运行Simple Weather项目 4.8.1. Maven Exec 插件 4.8.2. 浏览你的项目依赖 4.9. 编写单元测试 4.10. 添加测试范围依赖 4.11. 添加单元测试资源 4.12. 执行单元测试 4.12.1. 忽略测试失败 4.12.2. 跳过单元测试 4.13. 构建一个打包好的命令行应用程序 5. 一个简单的Web应用 5.1. 介绍 5.1.1. 下载本章样例 5.2. 定义这个简单的Web应用 5.3. 创建这个简单的Web应用 5.4. 配置Jetty插件 5.5. 添加一个简单的Servlet 5.6. 添加J2EE依赖 5.7. 小结 6. 一个多模块项目 6.1. 简介 6.1.1. 下载本章样例 6.2. simple-parent 项目 6.3. simple-weather 模块 6.4. simple-webapp 模块 6.5. 构建这个多模块项目 6.6. 运行Web应用 7. 多模块企业级项目 7.1. 简介 7.1.1. 下载本章样例 7.1.2. 多模块企业级项目 7.1.3. 本例中所用的技术 7.2. simple-parent项目 7.3. simple-model模块 7.4. simple-weather模块 7.5. simple-persist模块 7.6. simple-webapp模块 7.7. 运行这个Web应用 7.8. simple-command模块 7.9. 运行这个命令行程序 7.10. 小结 7.10.1. 编写接口项目程序 8. 优化和重构POM 8.1. 简介 8.2. POM清理 8.3. 优化依赖 8.4. 优化插件 8.5. 使用Maven Dependency插件进行优化 8.6. 最终的POM 8.7. 小结 II. Maven Reference 9. 项目对象模型 9.1. 简介 9.2. POM 9.2.1. 超级POM 9.2.2. 最简单的POM 9.2.3. 有效POM 9.2.4. 真正的POM 9.3. POM语法 9.3.1. 项目版本 9.3.1.1. 版本构建号 9.3.1.2. SNAPSHOT版本 9.3.1.3. LATEST 和 RELEASE 版本 9.3.2. 属性引用 9.4. 项目依赖 9.4.1. 依赖范围 9.4.2. 可选依赖 9.4.3. 依赖版本界限 9.4.4. 传递性依赖 9.4.4.1. 传递性依赖和范围 9.4.5. 冲突解决 9.4.6. 依赖管理 9.5. 项目关系 9.5.1. 坐标详解 9.5.2. 多模块项目 9.5.3. 项目继承 9.6. POM最佳实践 9.6.1. 依赖归类 9.6.2. 多模块 vs. 继承 9.6.2.1. 简单项目 9.6.2.2. 多模块企业级项目 9.6.2.3. 原型父项目 10. 构建生命周期 10.1. 简介 10.1.1. 清理生命周期 (clean) 10.1.2. 默认生命周期 (default) 10.1.3. 站点生命周期 (site) 10.2. 打包相关生命周期 10.2.1. JAR 10.2.2. POM 10.2.3. Maven Plugin 10.2.4. EJB 10.2.5. WAR 10.2.6. EAR 10.2.7. 其它打包类型 10.3. 通用生命周期目标 10.3.1. Process Resources 10.3.2. Compile 10.3.3. Process Test Resources 10.3.4. Test Compile 10.3.5. Test 10.3.6. Install 10.3.7. Deploy 11. 构建Profile 11.1. Profile是用来做什么的? 11.1.1. 什么是构建可移植性 11.1.1.1. 不可移植构建 11.1.1.2. 环境可移植性 11.1.1.3. 组织(内部)可移植性 11.1.1.4. 广泛(全局)可移植性 11.1.2. 选择一个适当级别的可移植性 11.2. 通过Maven Profiles实现可移植性 11.2.1. 覆盖一个项目对象模型 11.3. 激活Profile 11.3.1. 激活配置 11.3.2. 通过属性缺失激活 11.4. 外部Profile 11.5. Settings Profile 11.5.1. 全局Settings Profile 11.6. 列出活动的Profile 11.7. 提示和技巧 11.7.1. 常见的环境 11.7.2. 安全保护 11.7.3. 平台分类器 11.8. 小结 12. Maven Assemblies 12.1. Introduction 12.2. Assembly Basics 12.2.1. Predefined Assembly Descriptors 12.2.2. Building an Assembly 12.2.3. Assemblies as Dependencies 12.2.4. Assembling Assemblies via Assembly Dependencies 12.3. Overview of the Assembly Descriptor 12.4. The Assembly Descriptor 12.4.1. Property References in Assembly Descriptors 12.4.2. Required Assembly Information 12.5. Controlling the Contents of an Assembly 12.5.1. Files Section 12.5.2. FileSets Section 12.5.3. Default Exclusion Patterns for fileSets 12.5.4. dependencySets Section 12.5.4.1. Customizing Dependency Output Location 12.5.4.2. Interpolation of Properties in Dependency Output Location 12.5.4.3. Including and Excluding Dependencies by Scope 12.5.4.4. Fine Tuning: Dependency Includes and Excludes 12.5.4.5. Transitive Dependencies, Project Attachments, and Project Artifacts 12.5.4.6. Advanced Unpacking Options 12.5.4.7. Summarizing Dependency Sets 12.5.5. moduleSets Sections 12.5.5.1. Module Selection 12.5.5.2. Sources Section 12.5.5.3. Interpolation of outputDirectoryMapping in moduleSets 12.5.5.4. Binaries section 12.5.5.5. moduleSets, Parent POMs and the binaries Section 12.5.6. Repositories Section 12.5.7. Managing the Assembly’s Root Directory 12.5.8. componentDescriptors and containerDescriptorHandlers 12.6. Best Practices 12.6.1. Standard, Reusable Assembly Descriptors 12.6.2. Distribution (Aggregating) Assemblies 12.7. Summary 13. 属性和资源过滤 13.1. 简介 13.2. Maven属性 13.2.1. Maven项目的属性 13.2.2. Maven的Settings属性 13.2.3. 环境变量属性 13.2.4. Java系统属性 13.2.5. 用户定义的属性 13.3. 资源过滤 14. Maven和Eclipse: m2eclipse 14.1. 简介 14.2. m2eclipse 14.3. 安装 m2eclipse 插件 14.3.1. 安装前提条件 14.3.1.1. 安装 Subclipse 14.3.1.2. 安装 Mylyn 14.3.1.3. 安装 AspectJ Tools Platform (AJDT) 14.3.1.4. 安装 Web Tools Platform (WTP) 14.3.2. 安装 m2eclipse 14.4. 开启 Maven 控制台 14.5. 创建一个 Maven 项目 14.5.1. 从 SCM 签出一个 Maven 项目 14.5.2. 用Maven Archetype创建一个Maven项目 14.5.3. 创建一个 Maven 模块 14.6. 创建一个Maven POM文件 14.7. 导入Maven项目 14.7.1. 导入一个Maven项目 14.7.2. 具体化一个Maven项目 14.8. 运行Maven构建 14.9. 使用Maven进行工作 14.9.1. 添加及更新依赖或插件 14.9.2. 创建一个Maven模块 14.9.3. 下载源码 14.9.4. 打开项目页面 14.9.5. 解析依赖 14.10. 使用Maven仓库进行工作 14.10.1. 搜索 Maven 构件和 Java 类 14.10.2. 为Maven仓库编制索引 14.11. 使用基于表单的POM编辑器 14.12. 在m2eclipse中分析项目依赖 14.13. Maven 选项 14.14. 小结 15. 站点生成 15.1. 简介 15.2. 使用Maven构建项目站点 15.3. 自定义站点描述符 15.3.1. 自定义页面顶端图片 15.3.2. 自定义导航菜单 15.4. 站点目录结构 15.5. 编写项目文档 15.5.1. APT样例 15.5.2. FML样例 15.6. 部署你的项目web站点 15.6.1. 配置服务器认证 15.6.2. 配置文件和目录模式 15.7. 自定义站点外观 15.7.1. 自定义站点CSS 15.7.2. 创建自定义的站点模板 15.7.3. 可重用的web站点皮肤 15.7.4. 创建自定义的主题CSS 15.7.5. 在皮肤中自定义站点模板 15.8. 提示与技巧 15.8.1. 给HEAD嵌入XHTML 15.8.2. 在你站点logo下添加链接 15.8.3. 为你的站点添加导航链接 15.8.4. 添加项目版本 15.8.5. 修改发布日期格式和位置 15.8.6. 使用Doxia宏 16. 仓库管理器 16.1. 简介 16.1.1. Nexus历史 16.2. 安装Nexus 16.2.1. 从Sonatype下载Nexus 16.2.2. 安装Nexus 16.2.3. 运行Nexus 16.2.4. 安装后检查单 16.2.5. 为Redhat/Fedora/CentOS设置启动脚本 16.2.6. 升级Nexus版本 16.3. 使用Nexus 16.3.1. 浏览仓库 16.3.2. 浏览组 16.3.3. 搜索构件 16.3.4. 浏览系统RSS源 16.3.5. 浏览日志文件和配置 16.3.6. 更改你的密码 16.4. 配置Maven使用Nexus 16.4.1. 使用Nexus中央代理仓库 16.4.2. 使用Nexus作为快照仓库 16.4.3. 为缺少的依赖添加仓库 16.4.4. 添加一个新的仓库 16.4.5. 添加一个仓库至一个组 16.5. 配置Nexus 16.5.. 定制服务器配置 16.5.2. 管理仓库 16.5.3. 管理组 16.5.4. 管理路由 16.5.5. 网络配置 16.6. 维护仓库 16.7. 部署构件至Nexus 16.7.1. 部署发布版 16.7.2. 部署快照版 16.7.3. 部署第三方构件 17. Writing Plugins 17.1. Introduction 17.2. Programming Maven 17.2.1. What is Inversion of Control? 17.2.2. Introduction to Plexus 17.2.3. Why Plexus? 17.2.4. What is a Plugin? 17.3. Plugin Descriptor 17.3.1. Top-level Plugin Descriptor Elements 17.3.2. Mojo Configuration 17.3.3. Plugin Dependencies 17.4. Writing a Custom Plugin 17.4.1. Creating a Plugin Project 17.4.2. A Simple Java Mojo 17.4.3. Configuring a Plugin Prefix 17.4.4. Logging from a Plugin 17.4.5. Mojo Class Annotations 17.4.6. When a Mojo Fails 17.5. Mojo Parameters 17.5.1. Supplying Values for Mojo Parameters 17.5.2. Multi-valued Mojo Parameters 17.5.3. Depending on Plexus Components 17.5.4. Mojo Parameter Annotations 17.6. Plugins and the Maven Lifecycle 17.6.1. Executing a Parallel Lifecycle 17.6.2. Creating a Custom Lifecycle 17.6.3. Overriding the Default Lifecycle 18. Writing Plugins in Alternative Languages 18.1. Writing Plugins in Ant 18.2. Creating an Ant Plugin 18.3. Writing Plugins in JRuby 18.3.1. Creating a JRuby Plugin 18.3.2. Ruby Mojo Implementations 18.3.3. Logging from a Ruby Mojo 18.3.4. Raising a MojoError 18.3.5. Referencing Plexus Components from JRuby 18.4. Writing Plugins in Groovy 18.4.1. Creating a Groovy Plugin A. Appendix: Settings Details A.1. Quick Overview A.2. Settings Details A.2.1. Simple Values A.2.2. Servers A.2.3. Mirrors A.2.4. Proxies A.2.5. Profiles A.2.6. Activation A.2.7. Properties A.2.8. Repositories A.2.9. Plugin Repositories A.2.10. Active Profiles B. Appendix: Sun Specification Alternatives List of Figures 3.1. 一个插件包含一些目标 3.2. 一个生命周期是一些阶段的序列 3.3. 一个目标绑定到一个阶段 3.4. 被绑定的目标随着它们阶段的运行而运行 3.5. 一个Maven项目的坐标 3.6. Maven空间是项目的一个坐标系统 3.7. Maven处理传递性依赖 7.1. 多模块企业级应用的模块关系 7.2. 天气数据的简单对象模型 7.3. Spring MVC 控制器引用simple-weather和simple-persist中的组件 7.4. 引用 simple-weather 和 simple-persist 的命令行应用 7.5. 编写接口项目程序 9.1. 项目对象模型 9.2. 超级POM永远是最基础的父POM 9.3. 多模块项目关系 9.4. a-parent和project的项目继承关系 9.5. maven-book 多模块 vs. 继承 9.6. 企业级多模块 vs. 继承 9.7. 为特定的项目使用父项目作为“原型” 12.1. Assembly Descriptor Picture 14.1. 在Eclipse中开启Maven控制台 14.2. 使用m2eclipse向导来创建一个新项目 14.3. 从Subversion签出一个新的项目 14.4. 使用Maven Archetype创建一个Maven项目 14.5. 创建一个Maven模块 14.6. 为一个新的Maven模块选择一个父项目 14.7. 创建一个新的POM 14.8. 为新的POM添加依赖 14.9. 向中央仓库查询依赖 14.10. 导入一个Maven项目 14.11. 导入一个多模块的Maven项目 14.12. Materializing a Maven Project 14.13. 选择一个构件以具体化 14.14. 具体化Apache Camel 14.15. 通过Run As..运行一个Eclipse构建 14.16. 配置一个Maven构建作为一个运行配置 14.17. 可用的Maven特性 14.18. 手动给项目的POM添加一个依赖 14.19. 更新Maven依赖 14.20. 搜索依赖 14.21. 搜索构件和类 14.22. 搜索一个POM 14.23. 在仓库中搜索类 14.24. 打开Maven索引视图 14.25. Maven索引视图 14.26. 从索引视图定位一个POM 14.27. idiom-core的POM编辑器的Overview标签页 14.28. idiom父项目的POM编辑器的Overview标签页 14.29. idiom-core的有效POM 14.30. POM编辑器的Dependencies标签页 14.31. POM编辑器的Build标签页 14.32. POM编辑器的Dependency Tree标签页 14.33. 在依赖树中定位依赖 14.34. 以图的形式查看项目的依赖 14.35. 依赖图的放射状布局 14.36. Eclipse的Maven首选项 14.37. Maven目标对话框 14.38. Maven安装选项页面 14.39. 开启Maven版本装饰器 14.40. 没有Maven版本装饰器的包浏览器 14.41. 开启了Maven版本装饰器的包浏览器 15.1. 简单生成的Maven站点 15.2. 定制样例项目的web站点 16.1. Nexus登陆窗口(默认 用户名/密码 是 admin/admin123) 16.2. 匿名用户的Nexus界面 16.3. 浏览一个Nexus仓库 16.4. 浏览一个Nexus组 16.5. 关键词为"maven"的构件搜索结果 16.6. 浏览Nexus系统信息源 16.7. 浏览Nexus日志和配置文件 16.8. 更改你的Nexus密码 16.9. 添加一个Nexus仓库 16.10. 添加新的仓库至一个Nexus组 16.11. Nexus服务器配置 16.12. 代理仓库的配置页面 16.13. Nexus中的组配置页面 16.14. Nexus中的路由配置页面 List of Examples 1.1. 一个简单的 Ant build.xml 文件 1.2. 一个简单的 Maven pom.xml 3.1. Simple 项目的 pom.xml 文件 4.1. simple-wheather 项目的初始 POM 4.2. 为 pom.xml 添加组织,法律和开发人员信息 4.3. 添加 Dom4J, Jaxen, Velocity 和 Log4J 作为依赖 4.4. Simple Weather 的 Weather 模型对象 4.5. Simple Weather 的 Main 类 4.6. Simple Weather 的 YahooRetriever 类 4.7. Simple Weather 的 YahooParser 类 4.8. Simple Weather 的 WeatherFormatter 类 4.9. Simple Weather 的 Log4J 配置文件 4.10. Simple Weather 的 Output Velocity 模板 4.11. Simple Weather 的 YahooParserTest 单元测试 4.12. Simple Weather 的 WeatherFormatterTest 单元测试 4.13. 添加一个测试范围依赖 4.14. Simple Weather 的 WeatherFormatterTest 期望输出 4.15. Simple Weather 的 YahooParserTest XML 输入 4.16. 忽略单元测试失败 4.17. 插件参数表达式 4.18. 跳过单元测试 4.19. 配置 Maven 装配描述符 5.1. simple-web 项目的初始 POM 5.2. 配置 Jetty 插件 5.3. src/main/webapp/index.jsp 的内容 5.4. src/main/webapp/WEB-INF/web.xml 的内容 5.5. SimpleServlet 类 5.6. 匹配 Simple Servlet 5.7. 添加 Servlet 2.4 规格说明作为依赖 5.8. 添加 JSP 2.0 规格说明作为依赖 6.1. simple-parent 项目的 POM 6.2. simple-weather 模块的 POM 6.3. WeatherService 类 6.4. simple-webapp 模块的 POM 6.5. simple-webapp 的 WeatherServlet 6.6. simple-webapp 的 web.xml 7.1. simple-parent 项目的 POM 7.2. simple-model 的 pom.xml 7.3. 标注的Weather模型对象 7.4. simple-model 的 Condition 模型对象 7.5. simple-weather 模块的 POM 7.6. WeatherService 类 7.7. simple-weather模块的Spring Application Context 7.8. simple-persist 的 POM 7.9. simple-persist'的WeatherDAO类 7.10. simple-persist 的 Spring Application Context 7.11. simple-persist 的 hibernate.cfg.xml 7.12. simple-webapp的POM 7.13. simple-webapp WeatherController 7.14. 由 WeatherController 呈现的 weather.vm 模板 7.15. simple-web 的 HistoryController 7.16. 由 HistoryController 呈现的 history.vm 7.17. weather-servlet.xml 中的 Spring 控制器配置 7.18. simple-webapp 的 web.xml 7.19. simple-command 的 POM 7.20. simple-command 的 Main 类 7.21. WeatherFormatter 使用 Velocity 模板呈现天气数据 7.22. weather.vm Velocity 模板 7.23. history.vm Velocity 模板 8.1. simple-parent 的最终 POM 8.2. simple-command 的最终 POM 8.3. simple-model 的最终 POM 8.4. simple-persist 的最终 POM 8.5. simple-weather 的最终 POM 8.6. simple-webapp 的最终 POM 9.1. 超级POM 9.2. 最简单的POM 9.3. 项目依赖 9.4. 声明可选依赖 9.5. 指定一个依赖界限:JUnit 3.8 - JUnit 4.0 9.6. 指定一个依赖界限:JUnit <= 3.8.1 9.7. 排除一个传递性依赖 9.8. 排除并替换一个传递性依赖 9.9. 在一个顶层POM中定义依赖版本 9.10. top-group的modules元素 9.11. sub-group的modules元素 9.12. 项目继承 9.13. 在一个单独的POM项目中巩固依赖 9.14. 声明一个对于POM的依赖 10.1. 在pre-clean阶段触发一个目标 10.2. 自定义Clean插件的行为 10.3. 为Adobe Flex (SWF)定制打包类型 10.4. 在项目资源中使用属性 10.5. src/main/filters中的default.properties 10.6. 过滤资源 (替换属性) 10.7. 配置额外的资源目录 10.8. 过滤脚本资源 10.9. 为Compiler插件设置source和target版本 10.10. 覆盖默认的源码和输出目录 10.11. 覆盖测试源码和输出的位置 10.12. 配置Surefire忽略单元测试失败 11.1. 使用一个Maven Profile覆盖Compiler插件设置 11.2. Profile中允许出现的元素 11.3. 使用Profile激活动态包含子模块 11.4. Profile激活参数:JDK版本,操作系统参数,以及属性 11.5. 在属性缺失的情况下激活Profile 11.6. 将profile放到一个profiles.xml文件中 11.7. 定义用户特定的Setting Profile (~/.m2/settings.xml) 11.8. 定义激活的Settings Profile 11.9. ~/.m2/settings.xml 中定义一个设置了environment.type的默认profile, 11.10. 项目profile,当environment.type等于'dev'时被激活 11.11. 在用户特定Settings Profile中存储秘密信息 11.12. 使用由平台激活的Profile修饰构件 11.13. 使用由平台激活的Profile和变量替换修饰构件 11.14. 依赖于一个已修饰的构件 12.1. Assembly Descriptor for Executable JAR 12.2. Configuring the project assembly in top-level POM 12.3. Activating the Assembly Plugin Configuration in Child Projects 12.4. POM for the Assembly Bundling Project 12.5. Required Assembly Descriptor Elements 12.6. Including a JAR file in an Assembly using files 12.7. Including Files with fileSet 12.8. Definition of Default Exclusion Patterns from Plexus Utils 12.9. Defining Dependency Sets Using Scope 12.10. Using Dependency Excludes and Includes in dependencySets 12.11. Excluding Files from a Dependency Unpack 12.12. Includes and Excluding Modules with a moduleSet 12.13. Including JavaDoc from Modules in an Assembly 12.14. Including Module Artifacts and Dependencies in an Assembly 13.1. POM中的用户定义属性 13.2. POM的Profile中的用户定义属性 13.3. 在资源中引用Maven属性 13.4. 定义变量和激活资源过滤 15.1. 一个初始的站点描述符 15.2. 给站点描述符添加Banner Left和Banner Right 15.3. 在站点描述符中创建菜单项 15.4. 站点菜单添加链接 15.5. APT文档 15.6. FAQ标记语言文档 15.7. 配置站点部署 15.8. 在用户特定Settings中存储服务器认证信息 15.9. 在远程服务器上配置文件和目录模式 15.10. 在一个项目的POM中自定义页面模板 15.11. 给站点描述符添加一个菜单项 15.12. 在站点描述符中配置自定义站点皮肤 15.13. 给HEAD元素嵌入HTML 15.14. 在你的站点Logo下添加链接 15.15. 配置站点导航链接 15.16. 放置版本信息 15.17. 放置发布日期 15.18. 配置发布日期格式 15.19. XHTML中Snippet宏的输出 16.1. 为Nexus配置Maven Settings (~/.m2/settings.xml) 16.2. 配置Maven使其为发布版和快照版使用Nexus 16.3. ${NEXUS_HOME}/conf/plexus.properties的内容 16.4. 为部署配置发布版本仓库 16.5. 为部署配置快照版本仓库 16.6. Oracle JDBC JAR 依赖 17.1. Plugin Descriptor 17.2. A Plugin Project's POM 17.3. A Simple EchoMojo 17.4. Maven Metadata for the Maven Plugin Group 17.5. Customizing the Plugin Groups in Maven Settings 17.6. Configuring a Plugin Prefix 17.7. A Plugin with Multi-valued Parameters 17.8. Depending on a Plexus Component 17.9. Define a Custom Lifecycle in lifecycle.xml 17.10. Forking a Customer Lifecycle from a Mojo 17.11. Overriding the Default Lifecycle 17.12. Configuring a Plugin as an Extension 18.1. POM for an Ant Maven Plugin 18.2. Echo Ant Mojo 18.3. Echo Ant Mojo Descriptor 18.4. POM for a JRuby Maven Plugin 18.5. The Echo Ruby Mojo 18.6. Referencing a Maven Project from a Ruby Mojo 18.7. Raising a MojoError from a Ruby Mojo 18.8. Depending on a Plexus Component from a Ruby Mojo 18.9. POM for a Groovy Maven Plugin 18.10. A.1. Overview of top-level elements in settings.xml A.2. Simple top-level elements in settings.xml A.3. Server configuration in settings.xml A.4. Mirror configuration in settings.xml A.5. Proxy configuration in settings.xml A.6. Defining Activation Parameters in settings.xml A.7. Setting the ${user.install} property in settings.xml A.8. Repository Configuration in settings.xml A.9. Setting active profiles in settings.xml B.1. Adding JTA 1.0.1B to a Maven Project
777KB
linux_新手管理员手册(PDF)
1970-01-05目 录 第0 部分: 为什么需要Linux .......................................................... 1 0.1 为什么需要Linux? ........................................................ 1 0.2 Linux 对我会有用吗? ...................................................... 2 0.3 Linux 对新手来说太难了.................................................... 2 0.4 Linux 有什么好处? ........................................................ 2 0.5 Linux 和Unix 有什么不同? ................................................. 5 0.6 Linux 和微软的Windows 有什么不同? ........................................ 5 0.7 我不相信什么免费软件...................................................... 6 0.8 天底下根本没有免费的午餐.................................................. 7 0.9 我需要高的系统安全性。购买商业软件,如果出了问题可以告他们................ 7 0.10 我需要标准。大的软件公司提供标准........................................ 7 0.11 我需要用微软的Windows 才能读写Word 文档................................. 8 0.12 微软的Windows 的普及性能够保证长久的使用................................ 9 0.13 但是Linux 可能会被“肢解”成很多不同的系统.............................. 9 0.14 Linux 只是一个小帮派.................................................... 9 0.15 Linux 总体拥有费用(TCO)太高............................................ 10 0.16 Linux 只是一个理想的梦,统治这个世界由来已久的是商业................... 10 0.17 Linux 太滥了........................................................... 11 第1 部分: 安装Linux 之前.......................................................... 12 1.1 我应该选择哪个Linux 发行版本? ............................................ 12 1.2 LINUX 对硬件有什么要求? .................................................. 14 1.3 我的硬件支持Linux 吗? .................................................... 15 1.4 怎样从网上下载Linux? .................................................... 16 1.5 怎样获得Linux 安装光盘? .................................................. 16 1.6 我有RedHat 安装光盘,但没有安装软盘, 应怎么办? ............................ 17 1.7 安装前需要阅读哪些资料? .................................................. 18 1.8 我能在一部计算机上同时安装Windows 和Linux 吗? ............................ 18 1.9 应该怎样给硬盘分区? ................................................
1.46MB
C#程序开发范例宝典
2010-12-15第1章 窗体与界面设计....... 1 1.1 菜单应用实例...... 2 实例001 带历史信息的菜单...... 2 实例002 菜单动态合并...... 3 实例003 像开始菜单一样漂亮的菜单...... 4 实例004 任务栏托盘菜单...... 5 实例005 可以拉伸的菜单界面...... 5 实例006 菜级联菜单...... 7 1.2 工具栏设计...... 7 实例007 带背景的工具栏...... 7 实例008 浮动工具栏...... 8 实例009 带下拉菜单的工具栏...... 9 实例010 具有提示功能的工具栏...... 9 1.3 状态栏设计...... 10 实例011 在状态栏中显示检查框...... 10 实例012 带进度条的状态栏...... 11 实例013 状态栏中加入图标...... 12 1.4 导航菜单界面...... 12 实例014 OutLook界面...... 12 实例015 带导航菜单的主界面...... 14 实例016 图形化的导航界面...... 15 1.5 特色程序界面...... 17 实例017 类QQ的程序界面...... 17 实例018 类似Windows Xp的程序界面...... 18 实例019 以图形按钮显示的界面...... 20 实例020 以树形显示的程序界面...... 21 实例021 动态按钮的窗体界面...... 22 1.6 特殊形状的窗体...... 24 实例022 非矩形窗体...... 24 实例023 建立字体形状窗体...... 25 实例024 控件随窗体自动调整...... 26 实例025 带分隔栏的窗体...... 27 实例026 随机更换主界面背景...... 27 1.7 多媒体光盘...... 28 实例027 自动启动的多媒体光盘程序...... 28 实例028 为触摸屏程序添加虚拟键盘...... 29 1.8 窗体效果...... 30 实例029 半透明渐显窗体...... 31 实例030 窗口颜色的渐变...... 32 1.9 窗体动画...... 33 实例031 窗体中的滚动字幕...... 33 实例032 动画显示窗体...... 34 实例033 制作闪烁的窗体...... 35 实例034 直接在窗体上绘图...... 37 实例035 动画形式的程序界面...... 38 1.10 标题栏窗体...... 39 实例036 使窗体标题栏文字右对齐...... 39 实例037 没有标题栏但可以改变大小的窗口...... 39 1.11 设置窗体位置...... 40 实例038 设置窗体在屏幕中的位置...... 40 实例039 始终在最上面的窗体...... 41 1.12 设置窗体大小...... 42 实例040 限制窗体大小...... 42 实例041 获取桌面大小...... 42 实例042 在窗口间移动按钮...... 43 实例043 如何实现Office助手...... 44 1.13 窗体控制技术...... 45 实例044 在关闭窗口前加入确认对话框...... 45 实例045 使用任意组件拖动窗体...... 46 实例046 修改提示字体及颜色...... 47 1.14 其他技术...... 48 实例047 如何为MDI类型窗体设置背景图片...... 48 实例048 向提示框中添加图标...... 49 第2章 控件应用....... 51 2.1 TextBox控件应用...... 52 实例049 只允许输入数字的TextBox控件...... 52 实例050 限制用户名称长度及设置密码文本...... 54 实例051 自动删除非法字符...... 55 实例052 为TextBox控件添加列表选择框...... 57 2.2 Button控件应用...... 58 实例053 在Button按钮中显示图标...... 58 2.3 ComboBox控件应用...... 59 实例054 将数据表中的字段添加到ComboBox控件...... 59 实例055 带查询功能的ComboBox控件...... 61 2.4 RichTextBox控件应用...... 63 实例056 利用RichTextBox控件实现文档管理功能...... 63 实例057 利用RichTextBox控件实现文字定位与标识...... 65 实例058 用RichText
50.0MB
Eclipse权威开发指南2.pdf
1970-01-03第Ⅰ部分 使 用 Eclipse 第1章 引言 3 1.1 Eclipse作为应用程序开发 工具的宿主...... 4 1.2 不仅仅是工具的宿主,Eclipse 还作为客户端应用程序的 宿主...... 5 1.3 什么是Eclipse?...... 6 1.3.1 工具与应用程序的集成平台..... 6 1.3.2 Java开发环境..... 7 1.3.3 开源社区..... 8 1.3.4 Eclipse基金会的目标..... 9 1.3.5 作为用户和捐献者(contributor)参与社区..... 10 1.3.6 Eclipse许可证..... 10 1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述..... 18 2.1.5 首选项介绍..... 19 2.2 基本的Eclipse使用...... 20 2.2.1 在Eclipse中工作..... 21 2.2.2 了解Eclipse用户界面..... 22 2.2.3 任务、书签和问题..... 28 2.2.4 后台处理..... 29 2.2.5 Eclipse的帮助功能..... 30 2.3 资源管理...... 36 2.3.1 工作空间..... 36 2.3.2 有关项目的更多内容..... 42 2.3.3 资源的导入和导出..... 44 2.3.4 资源移动..... 46 2.3.5 文本编辑器..... 47 2.3.6 快速差别—— 实时变化通知..... 48 2.3.7 文件编码..... 48 2.3.8 打印..... 49 2.4 Eclipse定制...... 49 2.4.1 透视图..... 49 2.4.2 渐进显示..... 51 2.4.3 在Eclipse中运行多窗口和多工作空间..... 51 2.4.4 改变键盘快捷键..... 54 2.4.5 定制JRE... 55 2.4.6 在Eclipse中使用其他计算机程序..... 55 2.4.7 性能..... 60 2.5 练习概述...... 61 2.6 本章小结...... 61 2.7 参考文献...... 62 第3章 使用Java开发工具 63 3.1 JDT入门...... 64 3.1.1 JDT用户界面概述..... 64 3.1.2 JDT基础..... 65 3.1.3 使用JDT视图..... 68 3.1.4 搜索..... 69 3.2 编写Java代码...... 71 3.2.1 Java编辑器概述..... 71 3.2.2 键入辅助..... 76 3.2.3 代码辅助..... 77 3.2.4 代码生成..... 80 3.2.5 导航Java错误和警告..... 81 3.2.6 使用快速修正功能来修改Java错误..... 82 3.2.7 重构..... 83 3.2.8 使用代码模板..... 86 3.2.9 字符串外部化..... 87 3.2.10 生成Javadoc.. 88 3.2.11 在不同的JRE下编写 Java代码..... 90 3.2.12 编译代码..... 91 3.2.13 Eclipse与Ant的集成..... 92 3.3 Java元素的使用...... 94 3.3.1 文件夹..... 94 3.3.2 Java项目..... 94 3.3.3 类和接口..... 98 3.3.4 导入Java元素..... 98 3.3.5 Java元素的本地历史记录..... 98 3.4 调整JDT性能...... 99 3.5 JDT视图和首选项的 更多内容...... 100 3.5.1 视图内容过滤..... 100 3.5.2 Package Explorer视图..... 100 3.5.3 Hierarchy视图..... 101 3.5.4 Call Hierarchy视图..... 102 3.5.5 Outline视图..... 103 3.5.6 Problems视图..... 103 3.5.7 Search视
3.11MB
linux设备驱动程序第三版
2012-02-241. Linux 设备驱动第三版 .................................................................................................................... 5 2. 第 1 章 设备驱动简介 .............................................................................................................. 15 2.1 1.1. 驱动程序的角色 ......................................................................................................... 17 2.2 1.2. 划分内核 ..................................................................................................................... 17 2.3 1.3. 设备和模块的分类 ..................................................................................................... 20 2.4 1.4. 安全问题 ..................................................................................................................... 21 2.5 1.5. 版本编号 ..................................................................................................................... 23 2.6 1.6. 版权条款 ..................................................................................................................... 24 2.7 1.7. 加入内核开发社团 ..................................................................................................... 25 2.8 1.8. 本书的内容 ................................................................................................................. 25 3. 第 2 章 建立和运行模块 .......................................................................................................... 26 3.1 2.1. 设置你的测试系统 ..................................................................................................... 28 3.2 2.2. Hello World 模块 ......................................................................................................... 28 3.3 2.3. 内核模块相比于应用程序 ......................................................................................... 30 3.4 2.4. 编译和加载 ................................................................................................................. 34 3.5 2.5. 内核符号表 ................................................................................................................. 39 3.6 2.6. 预备知识 ..................................................................................................................... 40 3.7 2.7. 初始化和关停 ............................................................................................................. 41 3.8 2.8. 模块参数 ..................................................................................................................... 46 3.9 2.9. 在用户空间做 ............................................................................................................. 48 3.10 2.10. 快速参考 ................................................................................................................. 50 4. 第 3 章 字符驱动 ...................................................................................................................... 52 4.1 3.1. scull 的设计 ................................................................................................................. 54 4.2 3.2. 主次编号 ..................................................................................................................... 54 4.3 3.3. 一些重要数据结构 ..................................................................................................... 59 4.4 3.4. 字符设备注册 ............................................................................................................. 66 4.5 3.5. open 和 release .......................................................................................................... 69 4.6 3.6. scull 的内存使用 ......................................................................................................... 72 4.7 3.7. 读和写 ......................................................................................................................... 74 4.8 3.8. 使用新设备 ................................................................................................................. 82 4.9 3.9. 快速参考 ..................................................................................................................... 82 5. 第 4 章 调试技术 ...................................................................................................................... 84 5.1 4.1. 内核中的调试支持 ..................................................................................................... 87 5.2 4.2. 用打印调试 ................................................................................................................. 87 5.3 4.3. 用查询来调试 ............................................................................................................. 94 5.4 4.4. 使用观察来调试 ....................................................................................................... 103 5.5 4.5. 调试系统故障 ........................................................................................................... 105 5.6 4.6. 调试器和相关工具 ................................................................................................... 111 6. 第 5 章 并发和竞争情况 ........................................................................................................ 118 6.1 5.1. scull 中的缺陷 ........................................................................................................... 119 1 Linux 设备驱动 第三版 - [JJJ] 6.2 5.2. 并发和它的管理 ....................................................................................................... 119 6.3 5.3. 旗标和互斥体 ........................................................................................................... 121 6.4 5.4. Completions 机制 ...................................................................................................... 126 6.5 5.5. 自旋锁 ....................................................................................................................... 128 6.6 5.6. 锁陷阱 ....................................................................................................................... 133 6.7 5.7. 加锁的各种选择 ....................................................................................................... 135 6.8 5.8. 快速参考 ................................................................................................................... 142 7. 第 6 章 高级字符驱动操作 .................................................................................................... 146 7.1 6.1. ioctl 接口 ................................................................................................................... 159 7.2 6.2. 阻塞 I/O .................................................................................................................... 159 7.3 6.3. poll 和 select ............................................................................................................. 175 7.4 6.4. 异步通知 ................................................................................................................... 181 7.5 6.5. 移位一个设备 ........................................................................................................... 184 7.6 6.6. 在一个设备文件上的存取控制 ............................................................................... 186 7.7 6.7. 快速参考 ................................................................................................................... 193 8. 第 7 章 时间, 延时, 和延后工作 .......................................................................................... 196 8.1 7.1. 测量时间流失 ........................................................................................................... 202 8.2 7.2. 获知当前时间 ........................................................................................................... 202 8.3 7.3. 延后执行 ................................................................................................................... 204 8.4 7.4. 内核定时器 ............................................................................................................... 210 8.5 7.5. Tasklets 机制.............................................................................................................. 216 8.6 7.6. 工作队列 ................................................................................................................... 219 8.7 7.7. 快速参考 ................................................................................................................... 223 9. 第 8 章 分配内存 .................................................................................................................... 227 9.1 8.1. kmalloc 的真实故事 .................................................................................................. 232 9.2 8.2. 后备缓存 ................................................................................................................... 232 9.3 8.3. get_free_page 和其友 ............................................................................................... 237 9.4 8.4. 每-CPU 的变量 ......................................................................................................... 243 9.5 8.5. 获得大量缓冲 ........................................................................................................... 246 9.6 8.6. 快速参考 ................................................................................................................... 247 10. 第 9 章 与硬件通讯 .............................................................................................................. 250 10.1 9.1. I/O 端口和 I/O 内存 .............................................................................................. 254 10.2 9.2. 使用 I/O 端口 ........................................................................................................ 254 10.3 9.3. 一个 I/O 端口例子 ................................................................................................ 260 10.4 9.4. 使用 I/O 内存 ........................................................................................................ 264 10.5 9.5. 快速参考 ................................................................................................................. 271 11. 第 10 章 中断处理 ................................................................................................................ 273 11.1 10.1. 准备并口 ............................................................................................................... 275 11.2 10.2. 安装一个中断处理 ............................................................................................... 275 11.3 10.3. 前和后半部 ........................................................................................................... 291 11.4 10.4. 中断共享 ............................................................................................................... 294 11.5 10.5. 中断驱动 I/O ........................................................................................................ 297 11.6 10.6. 快速参考 ............................................................................................................... 302 12. 第 11 章 内核中的数据类型 ................................................................................................ 304 2 Linux 设备驱动 第三版 - [JJJ] 12.1 11.1. 标准 C 类型的使用 ............................................................................................. 306 12.2 11.2. 安排一个明确大小给数据项 ............................................................................... 306 12.3 11.3. 接口特定的类型 ................................................................................................... 307 12.4 11.4. 其他移植性问题 ................................................................................................... 308 12.5 11.5. 链表 ....................................................................................................................... 312 12.6 11.6. 快速参考 ............................................................................................................... 316 13. 第 12 章 PCI 驱动 ................................................................................................................. 318 13.1 12.1. PCI 接口 ................................................................................................................. 335 13.2 12.2. 回顾: ISA ................................................................................................................ 335 13.3 12.3. PC/104 和 PC/104+............................................................................................... 337 13.4 12.4. 其他的 PC 总线 ................................................................................................... 338 13.5 12.5. SBus ........................................................................................................................ 339 14. 15. 16. 17. 13.6 12.6. NuBus 总线............................................................................................................ 340 13.7 12.7. 外部总线 ............................................................................................................... 340 13.8 12.8. 快速参考 ............................................................................................................... 340 第 13 章 USB 驱动 ............................................................................................................... 342 14.1 13.1. USB 设备基础知识 ................................................................................................ 348 14.2 13.2. USB 和 sysfs .......................................................................................................... 348 14.3 13.3. USB 的 Urbs .......................................................................................................... 350 14.4 13.4. 编写一个 USB 驱动............................................................................................. 362 14.5 13.5. 无 urb 的 USB 传送 ........................................................................................... 373 14.6 13.6. 快速参考 ............................................................................................................... 377 第 14 章 Linux 设备模型...................................................................................................... 379 15.1 14.1. Kobjects, Ksets 和 Subsystems ............................................................................. 390 15.2 14.2. 低级 sysfs 操作.................................................................................................... 390 15.3 14.3. 热插拔事件产生 ................................................................................................... 394 15.4 14.4. 总线, 设备, 和驱动 ............................................................................................. 396 15.5 14.5. 类 ........................................................................................................................... 407 15.6 14.6. 集成起来 ............................................................................................................... 412 15.7 14.7. 热插拔 ................................................................................................................... 418 15.8 14.8. 处理固件 ............................................................................................................... 426 15.9 14.9. 快速参考 ............................................................................................................... 428 第 15 章 内存映射和 DMA .................................................................................................. 432 16.1 15.1. Linux 中的内存管理 .............................................................................................. 442 16.2 15.2. mmap 设备操作 .................................................................................................... 442 16.3 15.3. 进行直接 I/O ........................................................................................................ 455 16.4 15.4. 直接内存存取 ....................................................................................................... 461 16.5 15.5. 快速参考 ............................................................................................................... 480 第 16 章 块驱动 .................................................................................................................... 485 17.1 16.1. 注册 ....................................................................................................................... 492 17.2 16.2. 块设备操作 ........................................................................................................... 492 17.3 16.3. 请求处理 ............................................................................................................... 496 17.4 16.4. 一些其他的细节 ................................................................................................... 514 17.5 16.5. 快速参考 ............................................................................................................... 516 3 Linux 设备驱动 第三版 - [JJJ] 18. 第 17 章 网络驱动 ................................................................................................................ 520 18.1 17.1. snull 是如何设计的............................................................................................... 526 18.2 17.2. 连接到内核 ........................................................................................................... 529 18.3 17.3. net_device 结构的详情 ........................................................................................ 533 18.4 17.4. 打开与关闭 ........................................................................................................... 542 18.5 17.5. 报文传送 ............................................................................................................... 544 18.6 17.6. 报文接收 ............................................................................................................... 549 18.7 17.7. 中断处理 ............................................................................................................... 551 18.8 17.8. 接收中断缓解 ....................................................................................................... 553 18.9 17.9. 连接状态的改变 ................................................................................................... 556 18.10 17.10. Socket 缓存........................................................................................................ 557 18.11 17.11. MAC 地址解析 .................................................................................................. 561 18.12 17.12. 定制 ioctl 命令 ................................................................................................ 563 18.13 17.13. 统计信息 ........................................................................................................... 564 18.14 17.14. 多播 ................................................................................................................... 566 18.15 17.15. 几个其他细节 ................................................................................................... 569 18.16 17.16. 快速参考 ........................................................................................................... 571 19. 第 18 章 TTY 驱动 ................................................................................................................ 574 19.1 18.1. 一个小 TTY 驱动 ................................................................................................. 583 19.2 18.2. tty_driver 函数指针 .............................................................................................. 583 19.3 18.3. TTY 线路设置 ........................................................................................................ 590 19.4 18.4. ioctls 函数.............................................................................................................. 594 19.5 18.5. TTY 设备的 proc 和 sysfs 处理 .......................................................................... 598 19.6 18.6. tty_driver 结构的细节 .......................................................................................... 599 19.7 18.7. tty_operaions 结构的细节 .................................................................................... 601 19.8 18.8. tty_struct 结构的细节 .......................................................................................... 604 19.9 18.9. 快速参考 ............................................................................................................... 606
562KB
Sphinx中文参考手册.rar
2019-07-09Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)需要联系我们(Sphinxsearch.com)以获得商业授权。 一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。 当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)。 搜索API支持PHP、Python、Perl、Rudy和Java,并且也可以用作MySQL存储引擎。搜索API非常简单,可以在若干个小时之内移植到新的语言上。 Sphinx 是SQL Phrase Index的缩写,但不幸的和CMU的Sphinx 目录 1. 简介 1.1. 什么是 Sphinx 1.2. Sphinx 的特性 1.3. 如何获得 Sphinx 1.4. 许可协议 1.5. 作者和贡献者 1.6. 开发历史 2. 安装 2.1. 支持的操作系统 2.2. 依赖的工具 2.3. 安装 Sphinx 2.4. 已知的问题和解决方法 2.5. Sphinx 快速入门教程 3. 建立索引 3.1. 数据源 3.2. 属性 3.3. 多值属性 ( MVA : multi-valued attributes) 3.4. 索引 3.5. 数据源的限制 3.6. 字符集 , 大小写转换 , 和转换表 3.7. SQL 数据源 (MySQL, PostgreSQL) 3.8. xmlpipe 数据源 3.9. xmlpipe2 数据源 3.10. 实时索引 更新 3.11. 索引合并 4. 搜索 4.1. 匹配模式 4.2. 布尔查询 4.3. 扩展查询 4.4. 权值计算 4.5. 排序模式 4.6. 结果分组(聚类) 4.7. 分布式搜索 4.8. searchd 日志格式 5. API 参考 5.1. 通用 API 方法 5.1.1. GetLastError 5.1.2. GetLastWarning 5.1.3. SetServer 5.1.4. SetRetries 5.1.5. SetArrayResult 5.2. 通用搜索设置 5.2.1. SetLimits 5.2.2. SetMaxQueryTime 5.3. 全文搜索设置 5.3.1. SetMatchMode 5.3.2. SetRankingMode 5.3.3. SetSortMode 5.3.4. SetWeights 5.3.5. SetFieldWeights 5.3.6. SetIndexWeights 5.4. 结果集过滤设置 5.4.1. SetIDRange 5.4.2. SetFilter 5.4.3. SetFilterRange 5.4.4. SetFilterFloatRange 5.4.5. SetGeoAnchor 5.5. GROUP BY 设置 5.5.1. SetGroupBy 5.5.2. SetGroupDistinct 5.6. 搜索 5.6.1. Query 5.6.2. AddQuery 5.6.3. RunQueries 5.6.4. ResetFilters 5.6.5. ResetGroupBy 5.7. 额外的方法 5.7.1. BuildExcerpts 5.7.2. UpdateAttributes 6. MySQL 存储引擎 (SphinxSE) 6.1. SphinxSE 概览 6.2. 安装 SphinxSE 6.2.1. 在 MySQL 5.0.x 上 编译 SphinxSE 6.2.2. 在 MySQL 5.1.x 上编译 SphinxSE 6.2.3. SphinxSE 安装测试 6.3. 使用 SphinxSE 7. 报告 bugs 8. sphinx.conf 选项参考 8.1. Data source 配置选项 8.1.1. type 8.1.2. sql_host 8.1.3. sql_port 8.1.4. sql_user 8.1.5. sql_pass 8.1.6. sql_db 8.1.7. sql_sock 8.1.8. mysql_connect_flags 8.1.9. sql_query_pre 8.1.10. sql_query 8.1.11. sql_query_range 8.1.12. sql_range_step 8.1.13. sql_attr_uint 8.1.14. sql_attr_bool 8.1.15. sql_attr_timestamp 8.1.16. sql_attr_str2ordinal 8.1.17. sql_attr_float 8.1.18. sql_attr_multi 8.1.19. sql_query_post 8.1.20. sql_query_post_index 8.1.21. sql_ranged_throttle 8.1.22. sql_query_info 8.1.23. xmlpipe_command 8.1.24. xmlpipe_field 8.1.25. xmlpipe_attr_uint 8.1.26. xmlpipe_attr_bool 8.1.27. xmlpipe_attr_timestamp 8.1.28. xmlpipe_attr_str2ordinal 8.1.29. xmlpipe_attr_float 8.1.30. xmlpipe_attr_multi 8.2. 索引配置选项 8.2.1. type 8.2.2. source 8.2.3. path 8.2.4. docinfo 8.2.5. mlock 8.2.6. morphology 8.2.7. stopwords 8.2.8. wordforms 8.2.9. exceptions 8.2.10. min_word_len 8.2.11. charset_type 8.2.12. charset_table 8.2.13. ignore_chars 8.2.14. min_prefix_len 8.2.15. min_infix_len 8.2.16. prefix_fields 8.2.17. infix_fields 8.2.18. enable_star 8.2.19. ngram_len 8.2.20. ngram_chars 8.2.21. phrase_boundary 8.2.22. phrase_boundary_step 8.2.23. html_strip 8.2.24. html_index_attrs 8.2.25. html_remove_elements 8.2.26. local 8.2.27. agent 8.2.28. agent_connect_timeout 8.2.29. agent_query_timeout 8.2.30. preopen 8.2.31. charset_dictpath 8.3. indexer 程序配置选项 8.3.1. mem_limit 8.3.2. max_iops 8.3.3. max_iosize 8.4. searchd 程序配置选项
937KB
linux从入门到精通.chm
2010-05-17目录 0 前言 0.1 什么是Linux? 0.2 本手册概述 0.3 速查信息 0.4 从以前版本的Red Hat Linux升级 0.5 开发者的话 0.6 编者的话 1 Red Hat Linux 5.1新特性 1.1 安装性能的提高 1.1.1 改进的安装指南 1.1.2 网络性能的提高 1.1.3 简化的安装 1.1.4 启动盘的创建 1.1.5 国际化 1.1.6 'fstab editor'功能 1.1.7 恢复SMB安装模式 1.2 系统管理性能的提高 1.2.1 Linuxconf 1.2.1.1 提供基于Web的Linuxconf访问 1.2.2 改进了急救盘 1.2.3 Initscript档案 1.3 其他新特性 1.3.1 视窗管理性能的提高 1.3.2 新的编译技术egcs 1.3.3 替代xv的新工具 2 开始之前 2.1 取得说明书 2.2 取得正确的Red Hat Linux部件 2.2.1 盒装Red Hat Linux清单 2.2.1.1 安转指南 2.2.1.2 Alpha安装附录 2.2.1.3 CD1和2 2.2.1.4 Linux Vending Machine CD 2.2.1.5 启动软盘 2.2.1.6 许可证和注册信息 2.2.2 缺少东西吗? 2.2.3 没有盒装吗?没关系! 2.2.4 检查修改过的Diskette Images 2.3 你必须知道的事情 2.3.1 基本的硬件配置 2.3.1.1 用Windows® 95了解你的硬件 2.3.2 显示配置 2.3.3 关于网络的信息 2.4 安装的方式 2.4.1 安装过程中PCMCIA的支持 2.4.2 从CD-ROM安装 2.4.2.1 如何做 2.4.3 从FTP站点安装 2.4.3.1 如何做 2.4.4 从NFS服务器安装 2.4.4.1 如何做 2.4.5 从SMB共享卷安装 2.4.5.1 如何做 2.4.6 从硬盘安装 2.4.6.1 如何做 2.5 是否需要支持软盘? 2.6 硬盘分区 2.6.1 分区的命名设计 2.6.2 重新分区的策略 2.6.2.1 用未分区的空闲空间 2.6.2.2 用未使用分区的空间 2.6.2.3 用活跃分区的空闲空间 2.6.3 硬盘分区和其他操作系统 2.6.4 最后的技巧:使用LILO 2.6.4.1 BIOS相关的限制会影响LILO 2.6.5 多少分区? 2.7 关于内核驱动器 2.8 如果你有问题... 2.9 最后的注意点 3 开始安装 3.1 安装程序的用户界面 3.1.1 用键盘导航 3.1.2 关于虚拟控制台 3.2 开始安装程序 3.2.1 启动安装程序 3.3 开始安装 3.3.1 选择一种语言 3.3.2 选择一种键盘方式 3.3.3 PCMCIA支持 3.4 选择一种安装方式 3.4.1 从CD-ROM安装 3.4.2 通过NFS安装 3.4.3 网络驱动器设置 3.4.4 设置TCP/IP网络 3.4.5 NFS服务器信息 3.4.6 从硬盘安装 3.4.7 通过FTP安装 3.4.8 通过SMB安装 4 继续安装 4.1 升级或安装 4.1.1 安装 4.1.2 升级 4.2 SCSI支持 4.3 为Red Hat Linux创建分区 4.3.1 使用Disk Druid 4.3.1.1 'Current Disk Partitions'区域 4.3.1.2 'Drive Summaries'区域 4.3.1.3 Disk Druid的按钮 4.3.1.4 快捷键 4.3.1.5 增加一个分区 4.3.1.6 删除一个分区 4.3.1.7 编辑一个分区 4.3.1.8 增加一个NFS Mount 4.3.1.9 重新开始 4.3.1.10 结束之后... 4.3.2 使用fdisk 4.3.2.1 fdisk概述 4.3.2.2 修改分区表 4.3.3 文件系统配置 4.3.3.1 增加一个NFS Mount 4.4 初试化交换空间 4.5 仅对FTP安装... 4.6 仅对SMB安装... 4.7 仅对硬盘安装... 4.8 分区格式化 4.9 选择和安装包 4.9.1 选择部件 4.9.2 选择单独的包 4.9.2.1 取得关于包的信息 4.9.3 包的相关性 4.9.4 包的安装 5 结束安装 5.1 配置鼠标 5.2 配置X Windows 5.2.1 配置XFree86服务器 5.3 配置网络 5.3.1 网络配置对话 5.4 配置时钟 5.5 选择重启动时启动的Services 5.6 配置打印机 5.6.1 本地打印机 5.6.2 远程lpd打印机 5.6.3 LAN Manager打印机 5.6.4 结束打印机设置 5.7 设置启动口令 5.8 制作启动盘 5.9 安装LILO 5.9.1 为LILO启动命令行增加选项 5.9.2 LILO的替代者 5.10 完成... 6 现在干什么? 6.1 获取适合你的文档 6.1.1 针对Linux初学者的文档 6.1.2 针对更有经验的Linux用户的文档 6.1.3 针对Linux高手的文档 6.2 基本的系统任务 6.2.1 启动你的Red Hat Linux系统 6.2.2 登录和退出 6.2.2.1 登录 6.2.2.2 退出 6.2.3 帐号和口令 6.2.3.1 帐号 6.2.3.2 口令 6.2.3.3 su命令 6.2.4 关闭你的Red Hat Linux系统 6.3 X Window系统 6.3.1 如果你还没用安装X 6.3.1.1 XFree86配置 6.3.2 如果你已经安装X 6.3.2.1 手工启动X 6.3.2.2 自动启动X 6.3.2.3 改变你的桌面 6.3.2.4 基于X的快捷工具 6.4 为你的Red Hat Linux系统配置声音 6.4.1 模块化的声音驱动器 6.4.1.1 支持的声效卡 6.4.2 声效卡配置工具 6.5 鼠标配置 6.6 万维网 6.6.1 万维网浏览器 6.6.2 万维网服务器 7 寻找文档 7.1 在线帮助 7.1.1 Man Pages 7.1.1.1 如何阅读Man Page 7.1.2 包的文档 7.1.3 HOWTO和FAQ 7.1.4 'locate'命令 7.1.5 'info'页 7.2 从因特网得到帮助 7.2.1 Red Hat邮件列表 7.2.2 USENET新闻组 7.2.2.1 Red Hat特定的新闻组 8 用RPM进行软件包管理 8.1 RPM设计目标 8.2 使用RPM 8.2.1 安装 8.2.1.1 已经安装的包 8.2.1.2 文件冲突 8.2.1.3 未解决的依赖关系 8.2.2 卸载 8.2.3 升级 8.2.4 查询 8.2.5 验证 8.3 令人惊异的RPM 8.4 其他的RPM资源 9 控制面板 9.1 配置用户和用户组 9.2 配置文件系统 9.2.1 增加网络文件系统的安装 9.3 打印机配置 9.4 网络配置 9.4.1 操纵名字 9.4.2 操纵主机 9.4.3 增加网络接口设备 9.4.3.1 PPP接口 9.4.3.2 SLIP接口 9.4.3.3 PLIP接口 9.4.3.4 Ethernet, Arcnet, Token Ring和Pocket适配器接口 9.4.4 设置路由 9.5 时间和日期 9.6 内核守护进程配置 9.6.1 改变模组选项 9.6.2 改变模组 9.6.3 增加模组 9.6.4 重起动kerneld 10 Glint 10.1 启动glint 10.2 显示软件包 10.2.1 上下文相关菜单 10.2.2 选择软件包 10.2.3 查看可用软件包 10.3 配置 10.4 操纵软件包 10.4.1 查询软件包 10.4.2 校验软件包 10.4.3 安装新的软件包 10.4.3.1 升级软件包 10.4.4 卸载软件包 11 系统管理 11.1 用户,组和私有用户组 11.1.1 标准用户 11.1.2 标准用户组 11.1.3 私有用户组 11.1.3.1 私有用户组基本原理 11.2 基于PAM用户认证 11.2.1 PAM模块 11.2.2 服务 11.2.3 配置文件 11.2.4 影子口令 11.2.5 更为详尽的信息 11.3 影子工具 11.4 创建定制的核心 11.4.1 创建模组化的内核 11.4.2 创建initrd映相像 11.4.3 创建单一的核心 11.5 Sendmail 11.6 控制对服务的访问 11.7 匿名FTP 11.8 NFS配置 11.8.1 安装NFS文件系统 11.8.2 输出NFS文件系统 11.9 Boot, Init和Shutdown 过程的描述 11.9.1 有关Sysconfig的信息 11.9.1.1 /etc/sysconfig下面的文件 11.9.1.2 /etc/sysconfig/network-scripts中的文件 11.9.2 系统 V 的Init过程 11.9.3 Init Runlevels 11.9.4 Initscript工具 11.9.5 启动时运行级 11.9.6 关闭 11.10 紧急救护模式 11.10.1 通过LILO 11.10.2 应急Boot盘组 11.10.2.1 一个小窍门儿 A 取得技术支持 A.1 支持政策概述 A.2 取得支持 A.3 支持常见问题 B 制作安装软盘 B.1 在MS-DOS下制作软盘 B.2 在类Linux-like操作系统下制作软盘 C 包清单 C.1 应用 C.1.1 通讯 C.1.2 数据库 C.1.3 编辑器 C.1.4 模拟器 C.1.5 工程 C.1.6 图形 C.1.7 邮件 C.1.8 数学 C.1.9 网络 C.1.10 新闻 C.1.11 项目 C.1.12 出版 C.1.13 声音 C.2 基础 C.2.1 内核 C.3 管理 C.4 开发 C.4.1 创建 C.4.2 创建 C.4.3 调试 C.4.4 语言 C.4.5 库 C.4.6 工具 C.4.7 版本控制 C.5 文档 C.6 扩展 C.6.1 日语 C.7 游戏 C.8 库 C.9 网络 C.9.1 管理 C.9.2 工具 C.9.3 新闻 C.9.4 工具 C.10 外壳 C.11 工具 C.11.1 存档 C.11.2 控制台 C.11.3 文件 C.11.4 打印 C.11.5 系统 C.11.6 终端 C.11.7 文本 C.12 X11 C.12.1 娱乐 C.12.2 应用 C.12.3 游戏 C.12.4 库 C.12.5 外壳 C.12.6 工具 C.12.7 窗口管理 C.12.8 XFree86 C.12.9 gnome D 通用参数 D.1 CD-ROM参数 D.2 SCSI参数 D.3 Ethernet参数 E Red Hat Linux常见问题 E.1 介绍 E.2 勘误表 E.3 联系Red Hat Software E.4 一般资源列表 E.5 一般问题 E.5.1 我如何得到新版本的Red Hat? E.5.2 我如何报告错误? E.5.3 Red Hat Linux是否包含源代码? E.6 安装 E.6.1 我有一个空的硬盘, 并想安装DOS或Windows 95和Linux. 最好的方法是什么? E.6.2 我没有CD-ROM, 也不能从网上安装. 是否有其他方法? E.6.3 我想制作新的软盘, 该如何做? E.6.4 我有一个IDE系统, 而我不知道和DOS相比, Linux是如何设置硬盘的. 您能解释一下吗? E.6.5 我的cdu31a/33a CD-ROM不能被识别, 怎么办? E.6.6 我在笔记本电脑上安装Linux时遇到困难. E.6.7 我想把我的Red Hat系统升级到5.x, 但是它说它不能找到有效的RPM数据库. 我需要做什么? E.6.8 我有一个Adaptec 2920. 在安装时, 我没有看到可以选择它, 为什么? 我该怎么办. 或者我有一个Future Domain TMC-3260,但是我为它指定选项用来检测时, 它在安装时不能被发现. E.6.9 我有一个带aic7xxx芯片(2940, 2840, 2740, 3940, 等)的Adaptec卡. 它是很普通的, 为什么Red Hat Linux不能完全支持它? E.6.10 在安装时, 我得到致命信号 11 或 7. 这是什么意思? 我该做什么? E.6.11 在安装时, Linux无法工作在我的Ultra DMA IDE驱动器和主机板上, 怎么办? E.6.12 我的机器有一个PCI Ultra DMA 控制器. 我可以安装Linux吗? E.6.13 我有NT, 并想安装Linux, 但我听说启动多操作系统会出现问题. 我如何避免它? E.6.14 我不能在系统的1023柱面下安装Linux, 我该怎么办? E.6.15 我想把LILO从我的机器的MBR中移去, 如何做? E.6.16 我想把Linux从我的硬盘中删除. 我使用DOS的fdisk, 它显示出非DOS分区, 但不能删除. 怎么办? E.6.17 我安装Linux时没有遇到错误, 但是在重启动时, 我只能得到L, LI 和其他一个项目. 为什么? E.7 使用Red Hat Linux E.7.1 我不能运行我编译的任何程序, 因为 我得到一个"command not found"出错信息. 我在目录里看到了这个命令, 但不能运行. E.7.2 我在运行ls时, 为什么看不到彩色? E.8 X Windows E.8.1 我听说XFree86有新的版本, 我如何安装它? 或者, 我需要安装最新版本的XFree86, 因为旧版本不支持我的显示卡. 我如何安装它? E.8.2 当我用startx命令启动X时, 我得到一个出错信息说没有安装服务器, 并回到提示符. 哪里出错了? E.8.3 当我启动X时, 我只看到灰色的背景和一个X光标. E.8.4 我如何客户化X窗口管理器? E.8.5 我不喜欢想Windows 95那样的配置, 我如何改变它? E.8.6 我得到一个错误errno=111. 那是什么意思? 我该做什么? E.8.7 我的键盘对照在X中不能正确工作. 怎么办? E.8.8 我得到一个出错信息libX can't be opened. 或者, 我因为缺少库, 无法编译X程序. E.8.9 我有一个AGP显示卡. 它是否被支持? E.8.10 我的计算机有一个NeoMagic 显示卡芯片组, 我可以用X吗? E.8.11 我从4.1(或更早)升级, 现在启动X时, 机器在一个灰色屏幕上吊死. E.8.12 当我运行netscape, 色彩似乎不对, 或者得到关于色彩的出错信息. E.8.13 我有一个微软串口鼠标, Linux不能使用它. 怎么办? E.9 系统管理 E.9.1 当我用usercfg创建用户, 他们不能登录. E.9.2 什么是PAM? 为什么要用它? E.9.3 我如何在我的Linux系统上设置Secure Shell (SSH)? E.9.4 为什么Linux只能看到我的内存的一部分? E.9.5 我的奔腾或更高档的机器有超过64M的内存, 但是它似乎很迟钝. 如果我用mem=64M让Linux只用64M内存, 速度似乎加快了. 这是怎么回事? 我该做什么? E.9.6 我有Red Hat 5.0, 并且升级了erratal列出的ld.so包, 但是我的libc5应用仍然出错. 为什么? E.9.7 当我运行fstool时, 我得到一个信息说一个分区似乎已经被删除, 问我是否把它从/etc/fstab移去. E.9.8 我如何在Linux下配置我的Jaz drive ? E.9.9 我如何使用我的并口zip drive? E.9.10 我无法使我的IDE zip drive工作. E.9.11 我的一些旧的应用程序得到错误的时间. E.9.12 我已升级了所有安装的程序, 但我的程序仍然得到错误的时间. E.9.13 安装时, 没有要我使用第二个CD-ROM. 当我用它使用X程序glint时, 报告没有RPMS包, 但是我在目录里看到很多包, 怎么办? E.9.14 Linux认识我的CDROM, 但当我mount 它时, 我得到"mount failed", 怎么办? E.9.15 我把Linux安装在一个IDE硬盘, 但我需要从软盘启动. 我如何从安装软盘启动? E.9.16 我不能使即查即用设备工作. E.9.17 当系统启动时, 我看到一条信息说我有一个不认识的PCI硬件. 这是什么意思? E.9.18 现在系统启动时, LILO默认运行Linux. 我想启动其他操作系统. 我怎么做? E.9.19 我需要使用急救模式编辑一个文件. 编辑器说不知道窗口类型. 我如何编辑一个文件? E.10 网络管理 E.10.1 Linux不能识别我的NE2000兼容网卡. E.10.2 我安装了Linux, 它似乎能启动. 但是, 当我调用sendmail时机器似乎死机了. 发生了什么事? 我该怎么办? E.10.3 我升级到了5.0, 而sendmail不能想从前那样发送邮件了. 怎么回事? E.10.4 我安装了Linux, 重编译了内核, 现在网络出现没有找到net-pf模块的错误. 怎么办? E.10.5 我如何配置因特网PPP连接? E.10.6 我如何允许非root用户启动PPP连接? E.10.7 我的系统一直它的网关信息. E.11 打印机管理 E.11.1 我在设置打印机时遇到了问题. 我的打印机没有在打印机配置工具中列出. E.11.2 我有一台Canon BJC打印机, 它不能正常打印. E.11.3 当我打印时, 输出的行都切去了头. E.12 附录[sic] E.12.1 Red Hat FTP站非常慢. 是否有镜像站点? F Red Hat Linux/SPARC的特别信息 F.1 支持的硬件 F.2 安装概述 F.3 控制台命令 F.4 基于Ramdisk的安装标准 F.5 选择启动方式 F.6 选择安装方式 F.7 用一个串行终端安装 F.8 安装: 选择系统部件 F.9 SILO配置 F.10 分区 F.11 X 窗口 G.Linux服务社产品清单 Next UP Previous Contents Index
8.92MB
LINUX系统分析与高级编程技术
2010-09-17内容简介 -------------------------------------------------------------------------------- 本书介绍Linux环境下的编程方法,内容包括Linux系统命令、Shell脚本、编程语言、系统内核、安全体系、X Windows 等,内容丰富、论述全面,涵盖了Linux 系统的方方面面。本书附带光盘包括了Redhat Linux系统的最新版本,及安装方法,还包括了较全面的参考。 目录 -------------------------------------------------------------------------------- 第一部分 Linux系统介绍 第一章 Linux简介 1.1 Linux的起源 1.2 自由软件基金会的计划 1.3 Linux的发音 1.4 Linux的特点 1.5 基本硬件要求 1.6 如何获得Linux 1.6.1 从风上下载Linux 1.6.2 从不光盘获得Linux 1.7 涉及Linux的Web网址和新闻讨论组 1.8 Linux的不足之处 第二章 外壳及常用命令 2.1 登录和退出 2.2 Linux系统的外壳 2.3 外壳的常用命令 2.3.1 更改帐号密码 · · · · · · 第一部分 Linux系统介绍 第一章 Linux简介 1.1 Linux的起源 1.2 自由软件基金会的计划 1.3 Linux的发音 1.4 Linux的特点 1.5 基本硬件要求 1.6 如何获得Linux 1.6.1 从风上下载Linux 1.6.2 从不光盘获得Linux 1.7 涉及Linux的Web网址和新闻讨论组 1.8 Linux的不足之处 第二章 外壳及常用命令 2.1 登录和退出 2.2 Linux系统的外壳 2.3 外壳的常用命令 2.3.1 更改帐号密码 2.3.2 联机帮助 2.3.3 远程登录 2.3.4 文件或目录处理 2.3.5 改变工作目录 2.3.6 复制文件 2.3.7 移动或改文件、目录名称 2.3.8 建立新目录 2.3.9 删除目录 2.3.10 删除文件 2.3.11 列出当前所在的目录位置 2.3.12 查看文件内容 2.3.13 分页查看文件内容 2.3.14 查看目录所占磁盘容量 2.3.15 文件传输 2.3.16 文件权限的设定 2.3.17 查看自己所属工作组名称 2.3.18 改变文件或目录工作组所有权 2.3.19 改变文件或目录的最后修改时间 2.3.20 文件的链接 2.3.21 文件中字符串的查寻 2.3.22 查寻文件或命令的路径 2.3.23 比较文件或目录的内容 2.3.24 文件打印输出 2.3.25 一般文件的打印 2.3.26 troff文件的打印 2.3.27 打印机控制命令 2.3.28 进程控制 2.3.29 外壳变量 2.3.30 环境变量 2.3.31 别名 2.3.32 历史命令 2.3.33 文件的压缩 2.3.34 管理命令的使用 2.3.35 输入/输出控制 2.3.36 查看系统中的用户 2.3.37 改变用户名 2.3.38 查看用户名 2.3.39 查看当前系统上所有工作站的用户 2.3.40 与基本工作站上的用户交谈 2.3.41 检查远程系统是否正常 2.3.42 电子邮件的使用简介 第三章 Linux系统的网络功能 3.1 Linux支持的网络协议 3.1.1 TCP/IP 3.1.2 TCP/IP版本6 3.1.3 IPX/SPX 3.1.4 AppleTalk协议集 3.1.5 广域网 3.1.6 ISDN 3.1.7 PPP、SLIP及PLIP 3.1.8 业余无线电 3.1.9 ATM 3.2 Linux系统下的文件共享和打印共享 3.2.1 Machintosh环境 3.2.2 Windows 环境 3.2.3 Novell环境 3.2.4 UNIX环境 3.3 Linux 系统中的Interet/Intranet功能 3.3.1 邮件 3.3.2 Web服务器 3.3.3 Web浏览器 3.3.4 FTP服务器和客户机 3.3.5 新闻服务 3.3.6 域名系统 3.3.7 DHCP和bootp 3.3.8 NIS 3.4 Linux系统下应用程序的远程执行 3.4.1 Telnet 3.4.2 远程命令 3.4.3 X Window 3.5 Linux系统的网络互连功能 3.5.1 路由器 3.5.2 网桥 3.5.3 IP伪装 3.5.4 IP统计 3.5.5 IP别名 3.5.6 流量限制器 3.5.7 防火墙 3.5.8 端口下传 3.5.9 负载平衡 3.5.10 EQL 3.5.11 代理服务器 3.5.12 按需拨号 3.5.13 管道、移动IP和虚拟个人网络 3.6 Linux系统中的网络管理 3.6.1 Linux系统下的网络管理应用程序 3.6.2 SNMP 3.7 企业级Linux网络 3.7.1 高可用性 3.7.2 RAID 3.7.3 冗余网络 第四章 Linux系统管理简介 4.1 root帐号 4.2 启动和关闭系统 4.2.1 从软盘启动 4.2.2 使用LILO启动 4.2.3 关闭Linux系统 4.3 挂接文件系统 4.3.1 挂接软盘 4.3.2 创建新的文件系统 4.3.3 卸载文件系统 4.4 检查文件系统 4.5 使用文件作为交换区 4.6 系统和文件的备份 4.7 设置系统 4.7.1 设置系统名 4.7.2 使用维护磁盘 4.7.3 重新设置root帐号口令 4.7.4 设置登录信息 第二部分 Linux语言及管理编程 第二章 外壳编程 5.1 创建和运行外壳程序 5.1.1 创建外壳程序 5.1.2 运行外壳程序 5.2 使用外壳变量 5.2.1 给变量赋值 5.2.2 读取变量的值 5.2.3 位置变量和其他系统变量 5.2.4 引号的作用 5.3 数值运算命令 5.4 条件表达式 5.4.1 if表达式 5.4.2 Case表达式 5.5 循环语句 5.5.1 for语句 5.5.2 while语句 5.5.3 until语句 5.6 shift语句 5.7 select语句 5.8 repeat语句 5.9 子函数 第六章 gawk语言编程 6.1 gawk的主要功能 6.2 如何执行gawk程序 6.3 文件、记录和字段 6.4 模式和动作 6.5 比较运算和数值运算 6.6 内部函数 6.6.1 随机数和数学函数 6.6.2 字符串的内部函数 6.6.3 输入输出的内部函数 6.7 字符串和数字 6.8 格式化输出 6.9 改变字段分隔符 6.10 元字符 6.11 调用gawk程序 6.12 BEGIN和END 6.13 变量 6.14 内置变量 6.15 控制结构 6.15.1 if表达式 6.15.2 while循环 6.15.3 for 循环 6.15.4 next和exit 6.16 数组 6.17 用户自定义函数 6.18 几个实例 第七章 Perl语言编程 7.1 什么是Perl 7.2 Perl的现状 7.3 初试Perl 7.4 Perl变量 7.4.1 标题 7.4.2 数组 7.4.3 相关数组 7.5 文件句柄和文件操作 7.6 循环结构 7.6.1 foreach循环 7.6.2 判断运算 7.6.3 for 循环 7.6.4 while和until循环 7.7 条件结构 7.8 字符匹配 7.9 替换和翻译 7.9.1 替换 7.9.2 翻译 7.10 子过程 7.10.1 子过程的定义 7.10.2 参数 7.10.3 返回值 7.11 Perl程序的完整例子 第三部分 Linux系统内核分析 第八章 Linux内核简介 8.1 系统初始化 8.2 系统运行 8.3 内核提供的各种系统调用 8.3.1 进程的基本要领和系统的基本数据结构 8.3.2 创建和撤消进程 8.3.3 执行程序 8.4 存取文件系统 第九章 系统进程 9.1 什么是进程 9.2 进程的结构 9.3 进程调度 9.4 进程使用的文件 9.5 进程使用的虚拟内存 9.6 创建进程 9.7 进程的时间和计时器 9.7.1 实时时钟 9.7.2 虚拟时钟 9.7.3 形象时钟 9.8 程序的执行 9.8.1 ELF文件 9.8.2 脚本文件 第十章 内存管理 10.1 内存管理的作用 10.2 虚拟内存的抽象模型 10.3 按需装入页面 10.4 交换 10.5 共享虚拟内存 10.6 存取控制 10.7 高速缓存 10.7.1 缓冲区高速缓存 10.7.2 页面高速缓存 10.7.3 交换高速缓存 10.7.4 硬件高速缓存 10.8 系统页表 10.9 页面的分配和释放 10.9.1 页的分配 10.9.2 页的释放 10.10 内存映射 10.11 请示调页 10.12 页面高速缓存 10.13 内核交换守护进程 第十一章 进程间通信 11.1 信号机制 11.2 管理机制 11.3 System V IPC机制 11.3.1 信息队列 11.3.2 信号量 11.3.3 共享内存 第十二章 PCI 12.1 PCI系统 12.2 PCI地址空间 12.3 PCI设置头 12.4 PCI/I/O和PCI内存地址 12.5 PCI-ISA桥 12.6 PCI-PCI桥 12.7 PCI初始化 12.7.1 Linyux系统内核有关PCI的数据结构 12.7.2 PCI设备驱动程序 12.7.3 PCI BIOS函数 12.7.4 PCI Fixup 第十三章 中断和中断处理 13.1 中断 13.2 可编程中断控制器 13.3 实始化中断处理的数据结构 13.4 中断处理 第十四章 设备驱动程序 14.1 硬件设备的管理 14.2 轮询和中断 14.3 直接内存存取 14.4 内存 14.5 设备驱动程序和内核之间的接口 14.5.1 字符设备 14.5.2 块设备 14.6 硬盘 14.6.1 IDE硬盘 14.6.2 初始化IDE硬盘子系统 14.6.3 SCSI硬盘 14.6.4 初始化SCSI磁盘子系统 14.6.5 传递块设备请求 14.7 网络设备 14.7.1 网络设备文件名 14.7.2 总线信息 14.7.3 网络接口标记 14.7.4 协议信息 14.7.5 初始化网络设置 第十五章 文件系统 15.1 Linux文件系统概述 15.2 ext2文件系统 15.2.1 ext2的索引节点 15.2.2 ext2超级块 15.2.3 ext2数据块组描述符 15.2.4 ext2中的目录 15.2.5 在ext2文件系统中查找文件 15.2.6 改变ext2文件系统中文件的大小 15.3 VFS 15.3.1 VFS超级块 15.3.2 VFS索引节点 15.3.3 登记文件系统 15.3.4 挂接文件系统 15.3.5 在VFS中查找文件 15.3.6 撤消文件系统 15.3.7 VFS索引节点缓存 15.3.8 VFS目录缓存 15.4 缓冲区缓存 15.5 /proc文件系统 第十六章 网络系统 16.1 TCP/IP网络简介 16.2 TCP/IP网络的分层 16.3 BSD套接口 16.4 INET套接口层 16.4.1 创建BSD套接口 16.4.2 给INET BSD套接口指定地址 16.4.3 在INET BSD套接口上创建连接 16.4.4 监听INET BSD套接口 16.4.5 接收连接请求 16.5 IP层 16.5.1 套接口缓冲区 16.5.2 接收IP数据包 16.5.3 发送IP数据包 16.5.4 数据碎片 16.6 地址解析协议 第十七章 系统内核机制 17.1 Bottom Half处理 17.2 任务队列 17.3 计时器 17.4 等待队列 17.5 信号量 第四部分 Linux系统高级编程 第十八章 Linux内核模块编程 18.1 一个简单程序Hello World 18.2 设备文件 18.3 /proc文件系统 18.4 使用/proc输入 18.5 与设备文件通信 18.6 启动参数 18.7 系统调用 18.8 阻塞进程 18.9 替换printk 18.10 调度任务 第十九章 有关进程通信的编程 19.1 进程间的通信简介 19.2 半双工UNIX管道 19.2.1 基本概念 19.2.2 使用C语言创建管道 19.2.3 创建管道的简单方法 19.2.4 使用管道的自动操作 19.2.5 使用关双工管道时的注意事项 19.3 命名管道 19.3.1 基本概念 19.3.2 创建FIFO 19.3.3 FIFO操作 19.3.4 FIFO的阻塞 19.3.5 SIGPIPE信号 19.4 System V IPC 19.4.1 基本概念 19.4.2 消息2队列基本概念 19.4.3 系统调用msgget() 19.4.4 系统调用msgsnd() 19.4.5 系统调用msgctl() 19.4.6 一个msgtool的实例 19.5 使用信号量编号 19.5.1 基本概念 19.5.2 系统调用semget() 19.5.3 系统调用semop() 19.5.4 系统调用semctl() 19.5.5 使用信号量集的实例:Semtool 19.6 共享内存 19.6.1 基本概念 19.6.2 系统内部用户数据结构shmid_ds 19.6.3 系统调用shmget() 19.6.4 系统调用shmat() 19.6.5 系统调用shmctl() 19.6.6 系统调用shmdt() 19.6.7 使用共享内存的实例:shmtool 第二十章 高级线程编程 20.1 线程的概念和思想 20.2 一个简单的例子 20.3 线程同步 20.4 使用信号量协调程序 20.5 信号量的实现 20.5.1 Semaphore.h 20.5.2Semaphore.c 第二十一章 Linux系统网络编程 21.1 什么是套接口 21.2 两种类型的Internet套接口 21.3 网络协议分层 21.4 数据结构 21.5 IP地址和如何使用IP地址 21.5.1 socket() 21.5.2 bind() 21.5.3 connect() 21.5.4 listen() 21.5.5 accept() 21.5.6 send()和recv() 21.5.7 sendto()和recvfrom() 21.5.8 clse()和shutdown() 21.5.9 getpeername() 21.5.10 gethostname() 21.6 DNS 21.7 客户机/服务器模式 21.8 简单的数据流服务器程序 21.9 简单的数据流客户机程序 21.10 数据报套接口 21.11阻塞 第二十二章 Linux I/O端口编程 22.1 如何在C语言下使用I/O端口 22.1.1 一般的方法 22.1.2 另一个替代方法:/dev/prot 22.2 硬件中断与DMA存取 22.3 高精确的时间 22.3.1 延迟时间 22.3.2 时间的测量 22.4 使用其他程序语言 22.5 一些有用的I/O端口 22.5.1 并行端口 22.5.2 游戏端口 22.5.3 串行端口 第五部分 Linux系统安全分析 第二十三章 系统管理员安全 23.1 安装管理 23.2 超级用户 23.3 文件系统安全 23.3.1 Linux文件系统概述 23.3.2 设备文件 23.3.3 /etc/mknod命令 23.3.4 安全考虑 23.3.5 find命令 23.3.6 secure程序 23.3.7 ncheck命令 23.3.8 安装和拆卸文件系统 23.3.9 系统目录和文件 23.4 作为root运行的程序 23.4.1 启动系统 23.4.2 init进程 23.4.3 进入多用户 23.4.4 shutdown命令 23.4.5 系统V的cron程序 23.4.6 系统V版的2之后的cron程序 23.5 /etc/profile 23.5.1 /etc/passwd文件 23.5.2 口令时效 23.6 /etc/group文件 23.7 增加\删除和移走用户 23.7.1 增加用户 23.7.2 删除用户 23.7.3 将用户移到另一个系统 23.8 安全检查 23.8.1 记帐 23.8.2 其他检查命令 23.8.3 安全检查程序的问题 23.8.4 系统泄密衙怎么办 23.9 加限制的环境 23.9.1 加限制的外壳 23.9.2 用chroot()限制用户 23.10 小系统安全 23.11 物理安全 23.12 用户意识 23.13 系统管理员意识 23.13.1 保持系统管理员个人的登录安全 23.13.2 保持系统安全 第二十四章 系统程序员安全 24.1 系统子程序 24.1.1 I/O子程序 24.1.2 进程控制 24.1.3 文件属性 24.1.4 UID和GID的处理 24.2 标准C程序库 24.2.1 标准I/O 24.2.2 /etc/passwd的处理 24.2.3 .etc/group的处理 24.2.4 加密子程序 24.2.5 运行外壳 24.3 编写安全的C程序 24.3.1 需要考虑的安全问题 24.3.2 SUID/SGID程序指导准则 24.3.3 编译\安装SUID/SGID程序的方法 24.4 root用户程序的设计 第二十五章 Linux系统的网络安全 25.1 UUCP系统概述 25.1.1 UUCP命令 25.1.2 uux命令 25.1.3 uucico命令 25.1.4 uuxqt命令 25.2 UUCP的安全问题 25.2.1 USERFILE文件 25.2.2 L.cmds文件 25.2.3 uucp登录 25.2.4 uucp使用的文件和目录 25.3 HONEYDANBER UUCP 25.3.1 HONEYDANBER UUCP与老UUCP的差别 25.3.2 登录名规则 25.3.3 MACHINE规则 25.3.4 组合MACHINE和LOGNAME规则 25.3.5 uucheck命令 25.3.6 网关 25.3.7 登录文件检查 25.4 其他网络 25.4.1 远程作业登录 25.4.2 NSC网络系统 25.5 通信安全 25.5.1 物理安全 25.5.2 加密 25.5.3 用户身份鉴别 25.6 SUN OS系统的网络安全 25.6.1 确保NFS的安全 25.6.2 NFS安全性方面的缺陷 25.6.3 远程过程调用鉴别 25.6.4 Linux鉴别机制 25.6.5 DES鉴别系统 25.6.6 公共关键字的编码 25.6.7 网络实体的命名 25.6.8 DES鉴别系统的应用 25.6.9 遗留的安全问题 25.6.10 性能 25.6.11 启动和setuid程序引起的问题 25.6.12 小结 第二十六章 Linux系统的用户安全性 26.1 口令安全 26.2 文件许可权 26.3 目录许可 26.4 umask命令 26.5 设置用户ID和同组用户ID许可 26.6 cp mv ln和cpio命令 26.7 su和newgrp命令 26.7.1 su命令 26.7.2 newgrp命令 26.8 文件加密 26.9 其他安全问题 26.9.1 用户的profile文件 26.9.2 ls-a 26.9.3 .exrc文件 26.9.4 暂存文件和目录 26.9.5 UUCP和其他网络 26.9.6 特洛伊木马 26.9.7 诱骗 26.9.8 计算机病毒 26.9.9 要离开自己的登录的终端 26.9.10 智能终端 26.9.11 断开与系统的连接 26.9.12 cu命令 26.10 保持帐户安全的要点 第六部分 X Windows 系统的内部结构和使用 第二十七章 X Windows 系统的基本知识 27.1 X Windows 系统介绍 27.1.1 X的特点 27.1.2 什么是窗口系统 27.1.3 X发展的历史 27.1.4 X的产品 27.1.5 MIT发行的X 27.2 X的基本结构 27.2.1 X的基本元素 27.2.2 服务程序和客户程序如何交互通信 27.2.3 X的网络概况 27.3 从用户界面的角度概观X 27.3.1 管理界面:窗口管理器 27.3.2 应用程序界面和工具箱 27.3.3 其他系统角度 27.4 术语和符号 27.4.1 术语 27.4.2 符号 27.5 启动和关闭X 27.5.1 启动X 27.5.2 执行X程序的方式 27.5.3 关闭X 27.6 窗口管理器基础——uwm 27.6.1 什么是窗口管理器 27.6.2 启动uwm 27.6.3 基本窗口操作——uwm的菜单 27.6.4 移动窗口 27.6.5 重定窗口大小 27.6.6 建立新窗口 27.6.7 管理屏幕空间 27.6.8 中止应用程序窗口 27.6.9 激活uwm菜单的其他方式 27.7 使用X的网络设备 27.7.1 指定远程终端机——display选项 27.7.2 实际使用远程的显示器 27.7.3 控制存取显示器——xhost 27.8 终端机模拟器——详细介绍xterm 27.8.1 选择xterm功能——菜单与命令行选项 27.8.2 滚动xterm屏幕 27.8.3 记录与终端机的交互过程——写记录 27.8.4 剪贴文本 27.8.5 使用Tektronix模拟功能 27.8.6 使用不同的字体 27.8.7 使用颜色 27.8.8 其他xterm 选项 27.8.9 设定终端机键盘 第二十八章 实用程序和工具 28.1 实用程序 28.2 保存、显示和打印屏幕图像 28.3 使用X的应用程序 28.3.1 文字编辑器——Xedit 28.3.2 邮件/信息处理系统——xmh 28.4 示例和游戏程序 28.4.1 找出通过随机迷宫的路径——maze 28.4.2 担任鼠标指针的大眼睛xeyes 28.4.3 智慧盘游戏——puzzle 28.4.4 打印一个大X标志——xlogo 28.4.5 跳动的多页体——ico 28.4.6 动态几何图案——muncher与plaid 28.5 显示信息和状态的程序 28.5.1 列出X服务程序的特征——xdpyinfo 28.5.2 获取有关窗口的信息 28.5.3 观察X的事件——xev 第二十八章 定制X Windows 系统 29.1 使用X的字体和颜色 29.1.1 字体初步 29.1.2 字体命名 29.1.3 观察特定字体的内容——xfd 29.1.4 保存字体和位置 29.1.5 例子:在你的服务程序中增加新字体 29.1.6 使用X的颜色 29.2 定义和使用图形 29.2.1 系统图形程序库 29.2.2 交互编辑图形——bitmap 29.2.3 编辑图形的其他方法 29.2.4 定制根窗口——xsetroot 29.3 定义应用程序的缺省选项——Resources 29.3.1 什么是资源 29.3.2 XToolkit 29.3.3 管理资源——资源管理器 29.3.4 资源的类型——如何指定值 29.4 实际使用资源 29.4.1 在何处保存资源的缺省值 29.4.2 在服务程序上保存缺省值——xrdb 29.4.3 常见的错误和修正 29.5 定制键盘和鼠标 29.5.1 实际使用转换 29.5.2 转换——格式和规则 29.5.3 转换规范中常见的问题 29.6 键盘和鼠标——对应和参数 29.6.1 键盘和鼠标映射——xmodmap 29.6.2 键盘和鼠标参数设定——xset 29.7 进一步介绍和定制uwm 29.7.1 uwm的新特征 29.7.2 定制uwm 29.8 显示器管理器——xdm 29.8.1 需要做些什么 29.8.2 xdm 29.8.3 xdm的更多信息 29.8.4 uwm配置 附录A GCC命令介绍 附录B 安装X Windows 窗口系统 << 隐藏目录详情
8.92MB
LINUX系统分析与高级编程技术(文本PDF)
2009-11-14本书介绍Linux环境下的编程方法,内容包括Linux系统命令、 Shell脚本、编程语言(gawk、Perl)、系统内核、安全体系、X Window等,内容丰富、论述全面,涵盖了Linux系统的方方面面。 目 录 前言 第一篇 Linux系统介绍 第1章 Linux简介 …1 1.1 Linux 的起源 1 1.2 自由软件基金会的GNU计划 1 1.3 Linux 的发音 2 1.4 Linux 的特点 2 1.5 基本硬件要求 3 1.6 如何获得Linux 3 1.6.1 从网上下载Linux 3 1.6.2 从光盘获得Linux 3 1.7 涉及Linux 的Web 网址和新闻讨论组 6 1.8 Linux 的不足之处 7 第2章 外壳及常用命令 8 2.1 登录和退出 8 2.2 Linux 系统的外壳 8 2.3 外壳的常用命令 9 2.3.1 更改帐号密码 9 2.3.2 联机帮助 9 2.3.3 远程登录 9 2.3.4 文件或目录处理 9 2.3.5 改变工作目录 10 2.3.6 复制文件 10 2.3.7 移动或更改文件、目录名称 10 2.3.8 建立新目录 10 2.3.9 删除目录 11 2.3.10 删除文件 11 2.3.11 列出当前所在的目录位置 11 2.3.12 查看文件内容 11 2.3.13 分页查看文件内容 11 2.3.14 查看目录所占磁盘容量 11 2.3.15 文件传输 11 2.3.16 文件权限的设定 12 2.3.17 检查自己所属的工作组名称 13 2.3.18 改变文件或目录工作组所有权 13 2.3.19 改变文件或目录的最后修改时间 13 2.3.20 文件的链接 13 2.3.21 文件中字符串的查寻 14 2.3.22 查寻文件或命令的路径 14 2.3.23 比较文件或目录的内容 14 2.3.24 文件打印输出 14 2.3.25 一般文件的打印 14 2.3.26 troff 文件的打印 14 2.3.27 打印机控制命令 14 2.3.28 进程控制 15 2.3.29 外壳变量 16 2.3.30 环境变量 16 2.3.31 别名 16 2.3.32 历史命令 17 2.3.33 文件的压缩 17 2.3.34 管道命令的使用 17 2.3.35 输入/输出控制 18 2.3.36 查看系统中的用户 18 2.3.37 改变用户名 18 2.3.38 查看用户名 18 2.3.39 查看当前系统上所有工作站 的用户 19 2.3.40 与某工作站上的用户交谈 19 2.3.41 检查远程系统是否正常 19 2.3.42 电子邮件的使用简介 19 第3章 Linux系统的网络功能 21 3.1 Linux支持的网络协议 21 3.1.1 TCP/IP 21 3.1.2 TCP/IP 版本 6 21 3.1.3 IPX/SPX 21 3.1.4 AppleTalk 协议集 21 3.1.5 广域网 22 3.1.6 ISDN 22 3.1.7 PPP、SLIP及PLIP 22 3.1.8 业余无线电 22 3.1.9 ATM 22 3.2 Linux系统下的文件共享和打印共享 22 3.2.1 Machintosh 环境 22 3.2.2 Windows 环境 22 3.2.3 Novell 环境 23 3.2.4 UNIX 环境 23 3.3 Linux系统中的Internet/Intranet功能 23 3.3.1 邮件 23 3.3.2 Web 服务器 24 3.3.3 Web 浏览器 24 3.3.4 FTP 服务器和客户机 24 3.3.5 新闻服务 24 3.3.6 域名系统 24 3.3.7 DHCP和 bootp 24 3.3.8 NIS 24 3.4 Linux系统下应用程序的远程执行 24 3.4.1 Telnet 25 3.4.2 远程命令 25 3.4.3 X Window 25 3.5 Linux系统的网络互连功能 25 3.5.1 路由器 25 3.5.2 网桥 25 3.5.3 IP伪装 25 3.5.4 IP统计 26 3.5.5 IP 别名 26 3.5.6 流量限制器 26 3.5.7 防火墙 26 3.5.8 端口下传 26 3.5.9 负载平衡 26 3.5.10 EQL 27 3.5.11 代理服务器 27 3.5.12 按需拨号 27 3.5.13 管道、移动IP和虚拟个人网络 27 3.6 Linux系统中的网络管理 27 3.6.1 Linux系统下的网络管理应用程序 27 3.6.2 SNMP 28 3.7 企业级Linux网络 28 3.7.1 高可用性 28 3.7.2 RAID 28 3.7.3 冗余网络 28 第4章 Linux系统管理简介 29 4.1 root 帐号 29 4.2 启动和关闭系统 29 4.2.1 从软盘启动 29 4.2.2 使用LILO 启动 29 4.2.3 关闭Linux系统 30 4.3 挂接文件系统 30 4.3.1 挂接软盘 30 4.3.2 创建新的文件系统 30 4.3.3 卸载文件系统 31 4.4 检查文件系统 31 4.5 使用文件作为交换区 31 4.6 系统和文件的备份 32 4.7 设置系统 33 4.7.1 设置系统名 33 4.7.2 使用维护磁盘 33 4.7.3 重新设置root 帐号口令 33 4.7.4 设置登录信息 33 第二篇 Linux高级语言及管理编程 第5章 外壳编程 35 5.1 创建和运行外壳程序 35 5.1.1 创建外壳程序 35 5.1.2 运行外壳程序 35 5.2 使用外壳变量 36 5.2.1 给变量赋值 36 5.2.2 读取变量的值 37 5.2.3 位置变量和其他系统变量 37 5.2.4 引号的作用 37 5.3 数值运算命令 38 5.4 条件表达式 40 5.4.1 if 表达式 40 5.4.2 case 表达式 41 5.5 循环语句 42 5.5.1 for 语句 43 5.5.2 while 语句 43 5.5.3 until 语句 44 5.6 shift 命令 44 5.7 select 语句 45 5.8 repeat 语句 46 5.9 子函数 46 第6章 gawk语言编程 48 6.1 gawk的主要功能 48 6.2 如何执行gawk程序 48 6.3 文件、记录和字段 48 6.4 模式和动作 49 6.5 比较运算和数值运算 50 6.6 内部函数 50 6.6.1 随机数和数学函数 51 6.6.2 字符串的内部函数 51 6.6.3 输入输出的内部函数 52 6.7 字符串和数字 52 6.8 格式化输出 52 6.9 改变字段分隔符 54 6.10 元字符 54 6.11 调用gawk程序 55 6.12 BEGIN和END 55 6.13 变量 56 6.14 内置变量 56 6.15 控制结构 57 6.15.1 if 表达式 57 6.15.2 while 循环 57 6.15.3 for 循环 58 6.15.4 next 和 exit 58 6.16 数组 58 6.17 用户自定义函数 58 6.18 几个实例 59 第7章 Perl语言编程 60 7.1 什么是Perl 60 7.2 Perl的现状 60 7.3 初试Perl 60 7.4 Perl变量 60 7.4.1 标量 60 7.4.2 数组 63 7.4.3 相关数组 65 7.5 文件句柄和文件操作 65 7.6 循环结构 66 7.6.1 foreach循环 66 7.6.2 判断运算 66 7.6.3 for循环 67 7.6.4 while 和 until循环 67 7.7 条件结构 67 7.8 字符匹配 68 7.9 替换和翻译 69 7.9.1 替换 69 7.9.2 翻译 70 7.10 子过程 70 7.10.1 子过程的定义 70 7.10.2 参数 70 7.10.3 返回值 70 7.11 Perl程序的完整例子 71 第三篇 Linux系统内核分析 第8章 Linux内核简介 73 8.1 系统初始化 73 8.2 系统运行 73 8.3 内核提供的各种系统调用 74 8.3.1 进程的基本概念和系统 的基本数据结构 74 8.3.2 创建和撤消进程 74 8.3.3 执行程序 74 8.4 存取文件系统 75 第9章 系统进程 76 9.1 什么是进程 76 9.2 进程的结构 76 9.3 进程调度 78 9.4 进程使用的文件 79 9.5 进程使用的虚拟内存 80 9.6 创建进程 81 9.7 进程的时间和计时器 81 9.7.1 实时时钟 81 9.7.2 虚拟时钟 81 9.7.3 形象时钟 81 9.8 程序的执行 82 9.8.1 ELF文件 82 9.8.2 脚本文件 82 第10章 内存管理 83 10.1 内存管理的作用 83 10.2 虚拟内存的抽象模型 83 10.3 按需装入页面 84 10.4 交换 85 10.5 共享虚拟内存 85 10.6 存取控制 85 10.7 高速缓存 86 10.7.1 缓冲区高速缓存 86 10.7.2 页面高速缓存 86 10.7.3 交换高速缓存 86 10.7.4 硬件高速缓存 86 10.8 系统页面表 86 10.9 页面的分配和释放 87 10.9.1 页面的分配 88 10.9.2 页面的释放 88 10.10 内存映射 88 10.11 请求调页 89 10.12 页面高速缓存 89 10.13 内核交换守护进程 90 第11章 进程间通信 91 11.1 信号机制 91 11.2 管道机制 92 11.3 System V IPC 机制 93 11.3.1 信息队列 93 11.3.2 信号量 94 11.3.3 共享内存 96 第12章 PCI 98 12.1 PCI 系统 98 12.2 PCI地址空间 98 12.3 PCI设置头 99 12.4 PCI I/O 和 PCI 内存地址 100 12.5 PCI-ISA桥 100 12.6 PCI-PCI 桥 100 12.7 PCI初始化 101 12.7.1 Linux系统内核有关PCI的 数据结构 101 12.7.2 PCI 设备驱动程序 102 12.7.3 PCI BIOS 函数 105 12.7.4 PCI Fixup 105 第13章 中断和中断处理 106 13.1 中断 106 13.2 可编程中断控制器 106 13.3 初始化中断处理的数据结构 107 13.4 中断处理 108 第14章 设备驱动程序 109 14.1 硬件设备的管理 109 14.2 轮询和中断 110 14.3 直接内存存取 110 14.4 内存 111 14.5 设备驱动程序和内核之间的接口 111 14.5.1 字符设备 112 14.5.2 块设备 113 14.6 硬盘 113 14.6.1 IDE 硬盘 115 14.6.2 初始化IDE 硬盘子系统 115 14.6.3 SCSI 硬盘 115 14.6.4 初始化 SCSI 磁盘子系统 116 14.6.5 传递块设备请求 118 14.7 网络设备 118 14.7.1 网络设备文件名 118 14.7.2 总线信息 118 14.7.3 网络接口标记 119 14.7.4 协议信息 119 14.7.5 初始化网络设备 119 第15章 文件系统 121 15.1 Linux文件系统概述 121 15.2 ext2文件系统 122 15.2.1 ext2的索引节点 122 15.2.2 ext2超级块 124 15.2.3 ext2 数据块组描述符 124 15.2.4 ext2 中的目录 125 15.2.5 在ext2 文件系统中查找文件 125 15.2.6 改变ext2 文件系统中文件 的大小 126 15.3 VFS 127 15.3.1 VFS 超级块 128 15.3.2 VFS 索引节点 129 15.3.3 登记文件系统 129 15.3.4 挂接文件系统 130 15.3.5 在VFS中查找文件 131 15.3.6 撤消文件系统 131 15.3.7 VFS 索引节点缓存 132 15.3.8 VFS目录缓存 132 15.4 缓冲区缓存 133 15.5 /proc 文件系统 135 第16章 网络系统 136 16.1 TCP/IP 网络简介 136 16.2 TCP/IP网络的分层 137 16.3 BSD 套接口 138 16.4 INET套接口层 140 16.4.1 创建BSD 套接口 141 16.4.2 给INET BSD 套接口指定地址 141 16.4.3 在INET BSD套接口上创建连接 142 16.4.4 监听INET BSD 套接口 142 16.4.5 接收连接请求 143 16.5 IP 层 143 16.5.1 套接口缓冲区 143 16.5.2 接收IP数据包 144 16.5.3 发送IP数据包 144 16.5.4 数据碎片 144 16.6 地址解析协议 145 第17章 系统内核机制 147 17.1 Bottom Half处理 147 17.2 任务队列 148 17.3 计时器 149 17.4 等待队列 149 17.5 信号量 150 第四篇 Linux系统高级编程 第18章 Linux内核模块编程 151 18.1 一个简单程序Hello World 151 18.2 设备文件 152 18.3 /proc文件系统 156 18.4 使用/proc输入 158 18.5 与设备文件通信 162 18.6 启动参数 169 18.7 系统调用 170 18.8 阻塞进程 172 18.9 替换printk 177 18.10 调度任务 178 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用半双工管道时的注意事项 188 19.3 命名管道 188 19.3.1 基本概念 188 19.3.2 创建FIFO 188 19.3.3 FIFO操作 189 19.3.4 FIFO的阻塞 190 19.3.5 SIGPIPE信号 190 19.4 System V IPC 190 19.4.1 基本概念 190 19.4.2 消息队列基本概念 191 19.4.3 系统调用msgget() 194 19.4.4 系统调用msgsnd() 195 19.4.5 系统调用msgctl() 197 19.4.6 一个msgtool的实例 199 19.5 使用信号量编程 201 19.5.1 基本概念 201 19.5.2 系统调用semget() 202 19.5.3 系统调用semop() 203 19.5.4 系统调用semctl() 204 19.5.5 使用信号量集的实例:semtool 205 19.6 共享内存 209 19.6.1 基本概念 209 19.6.2 系统内部用户数据结构 shmid_ds 209 19.6.3 系统调用shmget() 210 19.6.4 系统调用shmat() 211 19.6.5 系统调用shmctl() 211 19.6.6 系统调用shmdt() 212 19.6.7 使用共享内存的实例:shmtool 212 第20章 高级线程编程 215 20.1 线程的概念和用途 215 20.2 一个简单的例子 215 20.3 线程同步 217 20.4 使用信号量协调程序 218 20.5 信号量的实现 220 20.5.1 Semaphore.h 220 20.5.2 Semaphore.c 221 第21章 Linux系统网络编程 225 21.1 什么是套接口 225 21.2 两种类型的Internet套接口 225 21.3 网络协议分层 225 21.4 数据结构 225 21.5 IP地址和如何使用IP地址 226 21.5.1 socket() 226 21.5.2 bind() 226 21.5.3 connect() 227 21.5.4 listen() 228 21.5.5 accept() 228 21.5.6 send() 和 recv() 229 21.5.7 sendto() 和 recvfrom() 230 21.5.8 close() 和 shutdown() 230 21.5.9 getpeername() 231 21.5.10 gethostname() 231 21.6 DNS 231 21.7 客户机/服务器模式 232 21.8 简单的数据流服务器程序 232 21.9 简单的数据流客户机程序 234 21.10 数据报套接口 235 21.11 阻塞 237 第22章 Linux I/O端口编程 240 22.1 如何在 C 语言下使用I/O端口 240 22.1.1 一般的方法 240 22.1.2 另一个替代方法: /dev/port 241 22.2 硬件中断 与 DMA 存取 241 22.3 高精确的时间 241 22.3.1 延迟时间 241 22.3.2 时间的量测 243 22.4 使用其他程序语言 243 22.5 一些有用的 I/O 端口 243 22.5.1 并行端口 243 22.5.2 游戏端口 244 22.5.3 串行端口 245 第五篇 Linux系统安全分析 第23章 系统管理员安全 247 23.1 安全管理 247 23.2 超级用户 247 23.3 文件系统安全 247 23.3.1 Linux文件系统概述 247 23.3.2 设备文件 248 23.3.3 /etc/mknod命令 249 23.3.4 安全考虑 249 23.3.5 find命令 250 23.3.6 secure程序 250 23.3.7 ncheck命令 250 23.3.8 安装和拆卸文件系统 250 23.3.9 系统目录和文件 251 23.4 作为root运行的程序 251 23.4.1 启动系统 251 23.4.2 init进程 251 23.4.3 进入多用户 252 23.4.4 shutdown命令 252 23.4.5 系统V的cron程序 252 23.4.6 系统V版本2之后的cron程序 252 23.4.7 /etc/profile 253 23.5 /etc/passwd文件 253 23.5.1 口令时效 253 23.5.2 UID和GID 254 23.6 /etc/group文件 254 23.7 增加、删除和移走用户 254 23.7.1 增加用户 254 23.7.2 删除用户 255 23.7.3 将用户移到另一个系统 255 23.8 安全检查 255 23.8.1 记帐 255 23.8.2 其他检查命令 256 23.8.3 安全检查程序的问题 256 23.8.4 系统泄密后怎么办 257 23.9 加限制的环境 258 23.9.1 加限制的外壳 258 23.9.2 用chroot()限制用户 258 23.10 小系统安全 259 23.11 物理安全 259 23.12 用户意识 260 23.13 系统管理员意识 261 23.13.1 保持系统管理员个人的 登录安全 261 23.13.2 保持系统安全 261 第24章 系统程序员安全 263 24.1 系统子程序 263 24.1.1 I/O子程序 263 24.1.2 进程控制 263 24.1.3 文件属性 264 24.1.4 UID和GID的处理 265 24.2 标准C程序库 265 24.2.1 标准I/O 265 24.2.2 /etc/passwd的处理 266 24.2.3 /etc/group的处理 267 24.2.4 加密子程序 268 24.2.5 运行外壳 268 24.3 编写安全的C程序 268 24.3.1 需要考虑的安全问题 268 24.3.2 SUID/SGID程序指导准则 269 24.3.3 编译、安装SUID/SGID程序 的方法 269 24.4 root用户程序的设计 270 第25章 Linux系统的网络安全 272 25.1 UUCP系统概述 272 25.1.1 UUCP命令 272 25.1.2 uux命令 272 25.1.3 uucico程序 273 25.1.4 uuxqt程序 273 25.2 UUCP的安全问题 273 25.2.1 USERFILE文件 273 25.2.2 L.cmds文件 274 25.2.3 uucp登录 274 25.2.4 uucp使用的文件和目录 274 25.3 HONEYDANBER UUCP 275 25.3.1 HONEYDANBER UUCP与 老UUCP的差别 275 25.3.2 登录名规则 276 25.3.3 MACHINE规则 277 25.3.4 组合MACHINE和LOGNAME 规则 278 25.3.5 uucheck命令 278 25.3.6 网关 278 25.3.7 登录文件检查 279 25.4 其他网络 279 25.4.1 远程作业登录 279 25.4.2 NSC网络系统 280 25.5 通信安全 280 25.5.1 物理安全 280 25.5.2 加密 281 25.5.3 用户身份鉴别 282 25.6 SUN OS系统的网络安全 283 25.6.1 确保NFS的安全 283 25.6.2 NFS安全性方面的缺陷 284 25.6.3 远程过程调用鉴别 284 25.6.4 Linux鉴别机制 284 25.6.5 DES鉴别系统 285 25.6.6 公共关键字的编码 286 25.6.7 网络实体的命名 286 25.6.8 DES鉴别系统的应用 287 25.6.9 遗留的安全问题 287 25.6.10 性能 288 25.6.11 启动和setuid程序引起的问题 288 25.6.12 小结 289 第26章 Linux系统的用户安全性 290 26.1 口令安全 290 26.2 文件许可权 290 26.3 目录许可 291 26.4 umask命令 291 26.5 设置用户ID和同组用户ID许可 291 26.6 cp mv ln和cpio命令 291 26.7 su和newgrp命令 292 26.7.1 su命令 292 26.7.2 newgrp命令 292 26.8 文件加密 292 26.9 其他安全问题 293 26.9.1 用户的.profile文件 293 26.9.2 ls -a 293 26.9.3 .exrc文件 293 26.9.4 暂存文件和目录 293 26.9.5 UUCP和其他网络 293 26.9.6 特洛伊木马 294 26.9.7 诱骗 294 26.9.8 计算机病毒 294 26.9.9 要离开自己已登录的终端 294 26.9.10 智能终端 294 26.9.11 断开与系统的连接 294 26.9.12 cu命令 295 26.10 保持帐户安全的要点 295 第六篇 X window系统的内部结构和使用 第27章 X Window系统的基本知识 297 27.1 X Window系统介绍 297 27.1.1 X的特点 297 27.1.2 什么是窗口系统 298 27.1.3 X发展的历史 299 27.1.4 X的产品 299 27.1.5 MIT发行的X 299 27.2 X的基本结构 302 27.2.1 X 的基本元素 303 27.2.2 服务程序和客户程序如何 交互通信 304 27.2.3 X 的网络概况 306 27.3 从用户界面的角度概观X 307 27.3.1 管理界面:窗口管理器 307 27.3.2 应用程序界面和工具箱 309 27.3.3 其他系统角度 309 27.4 术语和符号 310 27.4.1 术语 310 27.4.2 符号 311 27.5 启动和关闭X 312 27.5.1 启动X 312 27.5.2 执行X程序的方式 313 27.5.3 关闭X 314 27.6 窗口管理器基础—uwm 315 27.6.1 什么是窗口管理器 315 27.6.2 启动uwm 315 27.6.3 基本窗口操作 —uwm 的菜单 315 27.6.4 移动窗口 316 27.6.5 重定窗口大小 316 27.6.6 建立新窗口 316 27.6.7 管理屏幕空间 318 27.6.8 中止应用程序窗口 320 27.6.9 激活uwm菜单的其他方式 320 27.7 使用 x的网络设备 320 27.7.1 指定远程终端机—display 选项 321 27.7.2 实际使用远程的显示器 322 27.7.3 控制存取显示器—xhost 322 27.8 终端机模拟器—详细介绍xterm 323 27.8.1 选择xterm功能—菜单与 命令行选项 323 27.8.2 滚动xterm屏幕 324 27.8.3 记录与终端机的交互过程—写 记录 325 27.8.4 剪贴文本 325 27.8.5 使用Tektronix模拟功能 326 27.8.6 使用不同的字体 327 27.8.7 使用颜色 327 27.8.8 其他xterm选项 327 27.8.9 设定终端机键盘 328 第28章 实用程序和工具 329 28.1 实用程序 329 28.2 保存、显示和打印屏幕图像 330 28.3 使用X的应用程序 332 28.3.1 文字编辑器—Xedit 333 28.3.2 邮件/信息处理系统—xmh 336 28.4 示例和游戏程序 336 28.4.1 找出通过随机迷宫的 路径—maze 336 28.4.2 担任鼠标指针的大眼睛— xeyes 336 28.4.3 智慧盘游戏—puzzle 337 28.4.4 打印一个大X标志—xlogo 337 28.4.5 跳动的多面体—ico 337 28.4.6 动态几何图案—muncher与 plaid 337 28.7 显示信息和状态的程序 337 28.7.1 列出X服务程序的特征— xdpyinfo 338 28.7.2 获取有关窗口的信息 338 28.7.3 观察X的事件—xev 340 第29章 定制X Window系统 341 29.1 使用X的字体和颜色 341 29.1.1 字体初步 341 29.1.2 字体命名 342 29.1.3 观察特定字体的内容—xfd 343 29.1.4 保存字体和位置 343 29.1.5 例子:在你的服务程序中 增加新字体 345 29.1.6 使用X的颜色 346 29.2 定义和使用图形 347 29.2.1 系统图形程序库 347 29.2.2 交互编辑图形—bitmap 347 29.2.3 编辑图形的其他方法 349 29.2.4 定制根窗口—xsetroot 349 29.3 定义应用程序的缺省选项— Resources 350 29.3.1 什么是资源 350 29.3.2 XToolkit 351 29.3.3 管理资源—资源管理器 353 29.3.4 资源的类型—如何指定值 358 29.4 实际使用资源 359 29.4.1 在何处保存资源的缺省值 359 29.4.2 在服务程序上保存缺省值— xrdb 363 29.4.3 常见的错误和修正 366 29.5 定制键盘和鼠标 367 29.5.1 实际使用转换 368 29.5.2 转换—格式和规则 374 29.5.3 转换规范中常见的问题 377 29.6 键盘和鼠标—对应和参数 379 29.6.1 键盘和鼠标映射—xmodmap 379 29.6.2 键盘和鼠标参数设定—xset 382 29.7 进一步介绍和定制uwm 384 29.7.1 uwm的新特征 384 29.7.2 定制uwm 386 29.8 显示器管理器—xdm 390 29.8.1 需要做些什么 390 29.8.2 xdm 391 29.8.3 xdm的更多信息 392 29.8.4 uwm配置 395 附录A Gcc使用介绍 396 附录B 安装X Window窗口系统 410
8.92MB
LINUX系统分析与高级编程技术.rar
2009-05-20目 录 前言 第一篇 Linux系统介绍 第1章 Linux简介 …1 1.1 Linux 的起源 1 1.2 自由软件基金会的GNU计划 1 1.3 Linux 的发音 2 1.4 Linux 的特点 2 1.5 基本硬件要求 3 1.6 如何获得Linux 3 1.6.1 从网上下载Linux 3 1.6.2 从光盘获得Linux 3 1.7 涉及Linux 的Web 网址和新闻讨论组 6 1.8 Linux 的不足之处 7 第2章 外壳及常用命令 8 2.1 登录和退出 8 2.2 Linux 系统的外壳 8 2.3 外壳的常用命令 9 2.3.1 更改帐号密码 9 2.3.2 联机帮助 9 2.3.3 远程登录 9 2.3.4 文件或目录处理 9 2.3.5 改变工作目录 10 2.3.6 复制文件 10 2.3.7 移动或更改文件、目录名称 10 2.3.8 建立新目录 10 2.3.9 删除目录 11 2.3.10 删除文件 11 2.3.11 列出当前所在的目录位置 11 2.3.12 查看文件内容 11 2.3.13 分页查看文件内容 11 2.3.14 查看目录所占磁盘容量 11 2.3.15 文件传输 11 2.3.16 文件权限的设定 12 2.3.17 检查自己所属的工作组名称 13 2.3.18 改变文件或目录工作组所有权 13 2.3.19 改变文件或目录的最后修改时间 13 2.3.20 文件的链接 13 2.3.21 文件中字符串的查寻 14 2.3.22 查寻文件或命令的路径 14 2.3.23 比较文件或目录的内容 14 2.3.24 文件打印输出 14 2.3.25 一般文件的打印 14 2.3.26 troff 文件的打印 14 2.3.27 打印机控制命令 14 2.3.28 进程控制 15 2.3.29 外壳变量 16 2.3.30 环境变量 16 2.3.31 别名 16 2.3.32 历史命令 17 2.3.33 文件的压缩 17 2.3.34 管道命令的使用 17 2.3.35 输入/输出控制 18 2.3.36 查看系统中的用户 18 2.3.37 改变用户名 18 2.3.38 查看用户名 18 2.3.39 查看当前系统上所有工作站 的用户 19 2.3.40 与某工作站上的用户交谈 19 2.3.41 检查远程系统是否正常 19 2.3.42 电子邮件的使用简介 19 第3章 Linux系统的网络功能 21 3.1 Linux支持的网络协议 21 3.1.1 TCP/IP 21 3.1.2 TCP/IP 版本 6 21 3.1.3 IPX/SPX 21 3.1.4 AppleTalk 协议集 21 3.1.5 广域网 22 3.1.6 ISDN 22 3.1.7 PPP、SLIP及PLIP 22 3.1.8 业余无线电 22 3.1.9 ATM 22 3.2 Linux系统下的文件共享和打印共享 22 3.2.1 Machintosh 环境 22 3.2.2 Windows 环境 22 3.2.3 Novell 环境 23 3.2.4 UNIX 环境 23 3.3 Linux系统中的Internet/Intranet功能 23 3.3.1 邮件 23 3.3.2 Web 服务器 24 3.3.3 Web 浏览器 24 3.3.4 FTP 服务器和客户机 24 3.3.5 新闻服务 24 3.3.6 域名系统 24 3.3.7 DHCP和 bootp 24 3.3.8 NIS 24 3.4 Linux系统下应用程序的远程执行 24 3.4.1 Telnet 25 3.4.2 远程命令 25 3.4.3 X Window 25 3.5 Linux系统的网络互连功能 25 3.5.1 路由器 25 3.5.2 网桥 25 3.5.3 IP伪装 25 3.5.4 IP统计 26 3.5.5 IP 别名 26 3.5.6 流量限制器 26 3.5.7 防火墙 26 3.5.8 端口下传 26 3.5.9 负载平衡 26 3.5.10 EQL 27 3.5.11 代理服务器 27 3.5.12 按需拨号 27 3.5.13 管道、移动IP和虚拟个人网络 27 3.6 Linux系统中的网络管理 27 3.6.1 Linux系统下的网络管理应用程序 27 3.6.2 SNMP 28 3.7 企业级Linux网络 28 3.7.1 高可用性 28 3.7.2 RAID 28 3.7.3 冗余网络 28 第4章 Linux系统管理简介 29 4.1 root 帐号 29 4.2 启动和关闭系统 29 4.2.1 从软盘启动 29 4.2.2 使用LILO 启动 29 4.2.3 关闭Linux系统 30 4.3 挂接文件系统 30 4.3.1 挂接软盘 30 4.3.2 创建新的文件系统 30 4.3.3 卸载文件系统 31 4.4 检查文件系统 31 4.5 使用文件作为交换区 31 4.6 系统和文件的备份 32 4.7 设置系统 33 4.7.1 设置系统名 33 4.7.2 使用维护磁盘 33 4.7.3 重新设置root 帐号口令 33 4.7.4 设置登录信息 33 第二篇 Linux高级语言及管理编程 第5章 外壳编程 35 5.1 创建和运行外壳程序 35 5.1.1 创建外壳程序 35 5.1.2 运行外壳程序 35 5.2 使用外壳变量 36 5.2.1 给变量赋值 36 5.2.2 读取变量的值 37 5.2.3 位置变量和其他系统变量 37 5.2.4 引号的作用 37 5.3 数值运算命令 38 5.4 条件表达式 40 5.4.1 if 表达式 40 5.4.2 case 表达式 41 5.5 循环语句 42 5.5.1 for 语句 43 5.5.2 while 语句 43 5.5.3 until 语句 44 5.6 shift 命令 44 5.7 select 语句 45 5.8 repeat 语句 46 5.9 子函数 46 第6章 gawk语言编程 48 6.1 gawk的主要功能 48 6.2 如何执行gawk程序 48 6.3 文件、记录和字段 48 6.4 模式和动作 49 6.5 比较运算和数值运算 50 6.6 内部函数 50 6.6.1 随机数和数学函数 51 6.6.2 字符串的内部函数 51 6.6.3 输入输出的内部函数 52 6.7 字符串和数字 52 6.8 格式化输出 52 6.9 改变字段分隔符 54 6.10 元字符 54 6.11 调用gawk程序 55 6.12 BEGIN和END 55 6.13 变量 56 6.14 内置变量 56 6.15 控制结构 57 6.15.1 if 表达式 57 6.15.2 while 循环 57 6.15.3 for 循环 58 6.15.4 next 和 exit 58 6.16 数组 58 6.17 用户自定义函数 58 6.18 几个实例 59 第7章 Perl语言编程 60 7.1 什么是Perl 60 7.2 Perl的现状 60 7.3 初试Perl 60 7.4 Perl变量 60 7.4.1 标量 60 7.4.2 数组 63 7.4.3 相关数组 65 7.5 文件句柄和文件操作 65 7.6 循环结构 66 7.6.1 foreach循环 66 7.6.2 判断运算 66 7.6.3 for循环 67 7.6.4 while 和 until循环 67 7.7 条件结构 67 7.8 字符匹配 68 7.9 替换和翻译 69 7.9.1 替换 69 7.9.2 翻译 70 7.10 子过程 70 7.10.1 子过程的定义 70 7.10.2 参数 70 7.10.3 返回值 70 7.11 Perl程序的完整例子 71 第三篇 Linux系统内核分析 第8章 Linux内核简介 73 8.1 系统初始化 73 8.2 系统运行 73 8.3 内核提供的各种系统调用 74 8.3.1 进程的基本概念和系统 的基本数据结构 74 8.3.2 创建和撤消进程 74 8.3.3 执行程序 74 8.4 存取文件系统 75 第9章 系统进程 76 9.1 什么是进程 76 9.2 进程的结构 76 9.3 进程调度 78 9.4 进程使用的文件 79 9.5 进程使用的虚拟内存 80 9.6 创建进程 81 9.7 进程的时间和计时器 81 9.7.1 实时时钟 81 9.7.2 虚拟时钟 81 9.7.3 形象时钟 81 9.8 程序的执行 82 9.8.1 ELF文件 82 9.8.2 脚本文件 82 第10章 内存管理 83 10.1 内存管理的作用 83 10.2 虚拟内存的抽象模型 83 10.3 按需装入页面 84 10.4 交换 85 10.5 共享虚拟内存 85 10.6 存取控制 85 10.7 高速缓存 86 10.7.1 缓冲区高速缓存 86 10.7.2 页面高速缓存 86 10.7.3 交换高速缓存 86 10.7.4 硬件高速缓存 86 10.8 系统页面表 86 10.9 页面的分配和释放 87 10.9.1 页面的分配 88 10.9.2 页面的释放 88 10.10 内存映射 88 10.11 请求调页 89 10.12 页面高速缓存 89 10.13 内核交换守护进程 90 第11章 进程间通信 91 11.1 信号机制 91 11.2 管道机制 92 11.3 System V IPC 机制 93 11.3.1 信息队列 93 11.3.2 信号量 94 11.3.3 共享内存 96 第12章 PCI 98 12.1 PCI 系统 98 12.2 PCI地址空间 98 12.3 PCI设置头 99 12.4 PCI I/O 和 PCI 内存地址 100 12.5 PCI-ISA桥 100 12.6 PCI-PCI 桥 100 12.7 PCI初始化 101 12.7.1 Linux系统内核有关PCI的 数据结构 101 12.7.2 PCI 设备驱动程序 102 12.7.3 PCI BIOS 函数 105 12.7.4 PCI Fixup 105 第13章 中断和中断处理 106 13.1 中断 106 13.2 可编程中断控制器 106 13.3 初始化中断处理的数据结构 107 13.4 中断处理 108 第14章 设备驱动程序 109 14.1 硬件设备的管理 109 14.2 轮询和中断 110 14.3 直接内存存取 110 14.4 内存 111 14.5 设备驱动程序和内核之间的接口 111 14.5.1 字符设备 112 14.5.2 块设备 113 14.6 硬盘 113 14.6.1 IDE 硬盘 115 14.6.2 初始化IDE 硬盘子系统 115 14.6.3 SCSI 硬盘 115 14.6.4 初始化 SCSI 磁盘子系统 116 14.6.5 传递块设备请求 118 14.7 网络设备 118 14.7.1 网络设备文件名 118 14.7.2 总线信息 118 14.7.3 网络接口标记 119 14.7.4 协议信息 119 14.7.5 初始化网络设备 119 第15章 文件系统 121 15.1 Linux文件系统概述 121 15.2 ext2文件系统 122 15.2.1 ext2的索引节点 122 15.2.2 ext2超级块 124 15.2.3 ext2 数据块组描述符 124 15.2.4 ext2 中的目录 125 15.2.5 在ext2 文件系统中查找文件 125 15.2.6 改变ext2 文件系统中文件 的大小 126 15.3 VFS 127 15.3.1 VFS 超级块 128 15.3.2 VFS 索引节点 129 15.3.3 登记文件系统 129 15.3.4 挂接文件系统 130 15.3.5 在VFS中查找文件 131 15.3.6 撤消文件系统 131 15.3.7 VFS 索引节点缓存 132 15.3.8 VFS目录缓存 132 15.4 缓冲区缓存 133 15.5 /proc 文件系统 135 第16章 网络系统 136 16.1 TCP/IP 网络简介 136 16.2 TCP/IP网络的分层 137 16.3 BSD 套接口 138 16.4 INET套接口层 140 16.4.1 创建BSD 套接口 141 16.4.2 给INET BSD 套接口指定地址 141 16.4.3 在INET BSD套接口上创建连接 142 16.4.4 监听INET BSD 套接口 142 16.4.5 接收连接请求 143 16.5 IP 层 143 16.5.1 套接口缓冲区 143 16.5.2 接收IP数据包 144 16.5.3 发送IP数据包 144 16.5.4 数据碎片 144 16.6 地址解析协议 145 第17章 系统内核机制 147 17.1 Bottom Half处理 147 17.2 任务队列 148 17.3 计时器 149 17.4 等待队列 149 17.5 信号量 150 第四篇 Linux系统高级编程 第18章 Linux内核模块编程 151 18.1 一个简单程序Hello World 151 18.2 设备文件 152 18.3 /proc文件系统 156 18.4 使用/proc输入 158 18.5 与设备文件通信 162 18.6 启动参数 169 18.7 系统调用 170 18.8 阻塞进程 172 18.9 替换printk 177 18.10 调度任务 178 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用半双工管道时的注意事项 188 19.3 命名管道 188 19.3.1 基本概念 188 19.3.2 创建FIFO 188 19.3.3 FIFO操作 189 19.3.4 FIFO的阻塞 190 19.3.5 SIGPIPE信号 190 19.4 System V IPC 190 19.4.1 基本概念 190 19.4.2 消息队列基本概念 191 19.4.3 系统调用msgget() 194 19.4.4 系统调用msgsnd() 195 19.4.5 系统调用msgctl() 197 19.4.6 一个msgtool的实例 199 19.5 使用信号量编程 201 19.5.1 基本概念 201 19.5.2 系统调用semget() 202 19.5.3 系统调用semop() 203 19.5.4 系统调用semctl() 204 19.5.5 使用信号量集的实例:semtool 205 19.6 共享内存 209 19.6.1 基本概念 209 19.6.2 系统内部用户数据结构 shmid_ds 209 19.6.3 系统调用shmget() 210 19.6.4 系统调用shmat() 211 19.6.5 系统调用shmctl() 211 19.6.6 系统调用shmdt() 212 19.6.7 使用共享内存的实例:shmtool 212 第20章 高级线程编程 215 20.1 线程的概念和用途 215 20.2 一个简单的例子 215 20.3 线程同步 217 20.4 使用信号量协调程序 218 20.5 信号量的实现 220 20.5.1 Semaphore.h 220 20.5.2 Semaphore.c 221 第21章 Linux系统网络编程 225 21.1 什么是套接口 225 21.2 两种类型的Internet套接口 225 21.3 网络协议分层 225 21.4 数据结构 225 21.5 IP地址和如何使用IP地址 226 21.5.1 socket() 226 21.5.2 bind() 226 21.5.3 connect() 227 21.5.4 listen() 228 21.5.5 accept() 228 21.5.6 send() 和 recv() 229 21.5.7 sendto() 和 recvfrom() 230 21.5.8 close() 和 shutdown() 230 21.5.9 getpeername() 231 21.5.10 gethostname() 231 21.6 DNS 231 21.7 客户机/服务器模式 232 21.8 简单的数据流服务器程序 232 21.9 简单的数据流客户机程序 234 21.10 数据报套接口 235 21.11 阻塞 237 第22章 Linux I/O端口编程 240 22.1 如何在 C 语言下使用I/O端口 240 22.1.1 一般的方法 240 22.1.2 另一个替代方法: /dev/port 241 22.2 硬件中断 与 DMA 存取 241 22.3 高精确的时间 241 22.3.1 延迟时间 241 22.3.2 时间的量测 243 22.4 使用其他程序语言 243 22.5 一些有用的 I/O 端口 243 22.5.1 并行端口 243 22.5.2 游戏端口 244 22.5.3 串行端口 245 第五篇 Linux系统安全分析 第23章 系统管理员安全 247 23.1 安全管理 247 23.2 超级用户 247 23.3 文件系统安全 247 23.3.1 Linux文件系统概述 247 23.3.2 设备文件 248 23.3.3 /etc/mknod命令 249 23.3.4 安全考虑 249 23.3.5 find命令 250 23.3.6 secure程序 250 23.3.7 ncheck命令 250 23.3.8 安装和拆卸文件系统 250 23.3.9 系统目录和文件 251 23.4 作为root运行的程序 251 23.4.1 启动系统 251 23.4.2 init进程 251 23.4.3 进入多用户 252 23.4.4 shutdown命令 252 23.4.5 系统V的cron程序 252 23.4.6 系统V版本2之后的cron程序 252 23.4.7 /etc/profile 253 23.5 /etc/passwd文件 253 23.5.1 口令时效 253 23.5.2 UID和GID 254 23.6 /etc/group文件 254 23.7 增加、删除和移走用户 254 23.7.1 增加用户 254 23.7.2 删除用户 255 23.7.3 将用户移到另一个系统 255 23.8 安全检查 255 23.8.1 记帐 255 23.8.2 其他检查命令 256 23.8.3 安全检查程序的问题 256 23.8.4 系统泄密后怎么办 257 23.9 加限制的环境 258 23.9.1 加限制的外壳 258 23.9.2 用chroot()限制用户 258 23.10 小系统安全 259 23.11 物理安全 259 23.12 用户意识 260 23.13 系统管理员意识 261 23.13.1 保持系统管理员个人的 登录安全 261 23.13.2 保持系统安全 261 第24章 系统程序员安全 263 24.1 系统子程序 263 24.1.1 I/O子程序 263 24.1.2 进程控制 263 24.1.3 文件属性 264 24.1.4 UID和GID的处理 265 24.2 标准C程序库 265 24.2.1 标准I/O 265 24.2.2 /etc/passwd的处理 266 24.2.3 /etc/group的处理 267 24.2.4 加密子程序 268 24.2.5 运行外壳 268 24.3 编写安全的C程序 268 24.3.1 需要考虑的安全问题 268 24.3.2 SUID/SGID程序指导准则 269 24.3.3 编译、安装SUID/SGID程序 的方法 269 24.4 root用户程序的设计 270 第25章 Linux系统的网络安全 272 25.1 UUCP系统概述 272 25.1.1 UUCP命令 272 25.1.2 uux命令 272 25.1.3 uucico程序 273 25.1.4 uuxqt程序 273 25.2 UUCP的安全问题 273 25.2.1 USERFILE文件 273 25.2.2 L.cmds文件 274 25.2.3 uucp登录 274 25.2.4 uucp使用的文件和目录 274 25.3 HONEYDANBER UUCP 275 25.3.1 HONEYDANBER UUCP与 老UUCP的差别 275 25.3.2 登录名规则 276 25.3.3 MACHINE规则 277 25.3.4 组合MACHINE和LOGNAME 规则 278 25.3.5 uucheck命令 278 25.3.6 网关 278 25.3.7 登录文件检查 279 25.4 其他网络 279 25.4.1 远程作业登录 279 25.4.2 NSC网络系统 280 25.5 通信安全 280 25.5.1 物理安全 280 25.5.2 加密 281 25.5.3 用户身份鉴别 282 25.6 SUN OS系统的网络安全 283 25.6.1 确保NFS的安全 283 25.6.2 NFS安全性方面的缺陷 284 25.6.3 远程过程调用鉴别 284 25.6.4 Linux鉴别机制 284 25.6.5 DES鉴别系统 285 25.6.6 公共关键字的编码 286 25.6.7 网络实体的命名 286 25.6.8 DES鉴别系统的应用 287 25.6.9 遗留的安全问题 287 25.6.10 性能 288 25.6.11 启动和setuid程序引起的问题 288 25.6.12 小结 289 第26章 Linux系统的用户安全性 290 26.1 口令安全 290 26.2 文件许可权 290 26.3 目录许可 291 26.4 umask命令 291 26.5 设置用户ID和同组用户ID许可 291 26.6 cp mv ln和cpio命令 291 26.7 su和newgrp命令 292 26.7.1 su命令 292 26.7.2 newgrp命令 292 26.8 文件加密 292 26.9 其他安全问题 293 26.9.1 用户的.profile文件 293 26.9.2 ls -a 293 26.9.3 .exrc文件 293 26.9.4 暂存文件和目录 293 26.9.5 UUCP和其他网络 293 26.9.6 特洛伊木马 294 26.9.7 诱骗 294 26.9.8 计算机病毒 294 26.9.9 要离开自己已登录的终端 294 26.9.10 智能终端 294 26.9.11 断开与系统的连接 294 26.9.12 cu命令 295 26.10 保持帐户安全的要点 295 第六篇 X window系统的内部结构和使用 第27章 X Window系统的基本知识 297 27.1 X Window系统介绍 297 27.1.1 X的特点 297 27.1.2 什么是窗口系统 298 27.1.3 X发展的历史 299 27.1.4 X的产品 299 27.1.5 MIT发行的X 299 27.2 X的基本结构 302 27.2.1 X 的基本元素 303 27.2.2 服务程序和客户程序如何 交互通信 304 27.2.3 X 的网络概况 306 27.3 从用户界面的角度概观X 307 27.3.1 管理界面:窗口管理器 307 27.3.2 应用程序界面和工具箱 309 27.3.3 其他系统角度 309 27.4 术语和符号 310 27.4.1 术语 310 27.4.2 符号 311 27.5 启动和关闭X 312 27.5.1 启动X 312 27.5.2 执行X程序的方式 313 27.5.3 关闭X 314 27.6 窗口管理器基础—uwm 315 27.6.1 什么是窗口管理器 315 27.6.2 启动uwm 315 27.6.3 基本窗口操作 —uwm 的菜单 315 27.6.4 移动窗口 316 27.6.5 重定窗口大小 316 27.6.6 建立新窗口 316 27.6.7 管理屏幕空间 318 27.6.8 中止应用程序窗口 320 27.6.9 激活uwm菜单的其他方式 320 27.7 使用 x的网络设备 320 27.7.1 指定远程终端机—display 选项 321 27.7.2 实际使用远程的显示器 322 27.7.3 控制存取显示器—xhost 322 27.8 终端机模拟器—详细介绍xterm 323 27.8.1 选择xterm功能—菜单与 命令行选项 323 27.8.2 滚动xterm屏幕 324 27.8.3 记录与终端机的交互过程—写 记录 325 27.8.4 剪贴文本 325 27.8.5 使用Tektronix模拟功能 326 27.8.6 使用不同的字体 327 27.8.7 使用颜色 327 27.8.8 其他xterm选项 327 27.8.9 设定终端机键盘 328 第28章 实用程序和工具 329 28.1 实用程序 329 28.2 保存、显示和打印屏幕图像 330 28.3 使用X的应用程序 332 28.3.1 文字编辑器—Xedit 333 28.3.2 邮件/信息处理系统—xmh 336 28.4 示例和游戏程序 336 28.4.1 找出通过随机迷宫的 路径—maze 336 28.4.2 担任鼠标指针的大眼睛— xeyes 336 28.4.3 智慧盘游戏—puzzle 337 28.4.4 打印一个大X标志—xlogo 337 28.4.5 跳动的多面体—ico 337 28.4.6 动态几何图案—muncher与 plaid 337 28.7 显示信息和状态的程序 337 28.7.1 列出X服务程序的特征— xdpyinfo 338 28.7.2 获取有关窗口的信息 338 28.7.3 观察X的事件—xev 340 第29章 定制X Window系统 341 29.1 使用X的字体和颜色 341 29.1.1 字体初步 341 29.1.2 字体命名 342 29.1.3 观察特定字体的内容—xfd 343 29.1.4 保存字体和位置 343 29.1.5 例子:在你的服务程序中 增加新字体 345 29.1.6 使用X的颜色 346 29.2 定义和使用图形 347 29.2.1 系统图形程序库 347 29.2.2 交互编辑图形—bitmap 347 29.2.3 编辑图形的其他方法 349 29.2.4 定制根窗口—xsetroot 349 29.3 定义应用程序的缺省选项— Resources 350 29.3.1 什么是资源 350 29.3.2 XToolkit 351 29.3.3 管理资源—资源管理器 353 29.3.4 资源的类型—如何指定值 358 29.4 实际使用资源 359 29.4.1 在何处保存资源的缺省值 359 29.4.2 在服务程序上保存缺省值— xrdb 363 29.4.3 常见的错误和修正 366 29.5 定制键盘和鼠标 367 29.5.1 实际使用转换 368 29.5.2 转换—格式和规则 374 29.5.3 转换规范中常见的问题 377 29.6 键盘和鼠标—对应和参数 379 29.6.1 键盘和鼠标映射—xmodmap 379 29.6.2 键盘和鼠标参数设定—xset 382 29.7 进一步介绍和定制uwm 384 29.7.1 uwm的新特征 384 29.7.2 定制uwm 386 29.8 显示器管理器—xdm 390 29.8.1 需要做些什么 390 29.8.2 xdm 391 29.8.3 xdm的更多信息 392 29.8.4 uwm配置 395 附录A Gcc使用介绍 396 附录B 安装X Window窗口系统 410
220KB
.net报表C# 源码
2009-08-22WEB程序报表C# 源码 WEB程序报表C# 源码
949KB
《Linux从入门到精通》
2008-09-04Linux操作系统入门书,比较全面 目录 0 前言 0.1 什么是Linux? 0.2 本手册概述 0.3 速查信息 0.4 从以前版本的Red Hat Linux升级 0.5 开发者的话 0.6 编者的话 1 Red Hat Linux 5.1新特性 1.1 安装性能的提高 1.1.1 改进的安装指南 1.1.2 网络性能的提高 1.1.3 简化的安装 1.1.4 启动盘的创建 1.1.5 国际化 1.1.6 'fstab editor'功能 1.1.7 恢复SMB安装模式 1.2 系统管理性能的提高 1.2.1 Linuxconf 1.2.1.1 提供基于Web的Linuxconf访问 1.2.2 改进了急救盘 1.2.3 Initscript档案 1.3 其他新特性 1.3.1 视窗管理性能的提高 1.3.2 新的编译技术egcs 1.3.3 替代xv的新工具 2 开始之前 2.1 取得说明书 2.2 取得正确的Red Hat Linux部件 2.2.1 盒装Red Hat Linux清单 2.2.1.1 安转指南 2.2.1.2 Alpha安装附录 2.2.1.3 CD1和2 2.2.1.4 Linux Vending Machine CD 2.2.1.5 启动软盘 2.2.1.6 许可证和注册信息 2.2.2 缺少东西吗? 2.2.3 没有盒装吗?没关系! 2.2.4 检查修改过的Diskette Images 2.3 你必须知道的事情 2.3.1 基本的硬件配置 2.3.1.1 用Windows® 95了解你的硬件 2.3.2 显示配置 2.3.3 关于网络的信息 2.4 安装的方式 2.4.1 安装过程中PCMCIA的支持 2.4.2 从CD-ROM安装 2.4.2.1 如何做 2.4.3 从FTP站点安装 2.4.3.1 如何做 2.4.4 从NFS服务器安装 2.4.4.1 如何做 2.4.5 从SMB共享卷安装 2.4.5.1 如何做 2.4.6 从硬盘安装 2.4.6.1 如何做 2.5 是否需要支持软盘? 2.6 硬盘分区 2.6.1 分区的命名设计 2.6.2 重新分区的策略 2.6.2.1 用未分区的空闲空间 2.6.2.2 用未使用分区的空间 2.6.2.3 用活跃分区的空闲空间 2.6.3 硬盘分区和其他操作系统 2.6.4 最后的技巧:使用LILO 2.6.4.1 BIOS相关的限制会影响LILO 2.6.5 多少分区? 2.7 关于内核驱动器 2.8 如果你有问题... 2.9 最后的注意点 3 开始安装 3.1 安装程序的用户界面 3.1.1 用键盘导航 3.1.2 关于虚拟控制台 3.2 开始安装程序 3.2.1 启动安装程序 3.3 开始安装 3.3.1 选择一种语言 3.3.2 选择一种键盘方式 3.3.3 PCMCIA支持 3.4 选择一种安装方式 3.4.1 从CD-ROM安装 3.4.2 通过NFS安装 3.4.3 网络驱动器设置 3.4.4 设置TCP/IP网络 3.4.5 NFS服务器信息 3.4.6 从硬盘安装 3.4.7 通过FTP安装 3.4.8 通过SMB安装 4 继续安装 4.1 升级或安装 4.1.1 安装 4.1.2 升级 4.2 SCSI支持 4.3 为Red Hat Linux创建分区 4.3.1 使用Disk Druid 4.3.1.1 'Current Disk Partitions'区域 4.3.1.2 'Drive Summaries'区域 4.3.1.3 Disk Druid的按钮 4.3.1.4 快捷键 4.3.1.5 增加一个分区 4.3.1.6 删除一个分区 4.3.1.7 编辑一个分区 4.3.1.8 增加一个NFS Mount 4.3.1.9 重新开始 4.3.1.10 结束之后... 4.3.2 使用fdisk 4.3.2.1 fdisk概述 4.3.2.2 修改分区表 4.3.3 文件系统配置 4.3.3.1 增加一个NFS Mount 4.4 初试化交换空间 4.5 仅对FTP安装... 4.6 仅对SMB安装... 4.7 仅对硬盘安装... 4.8 分区格式化 4.9 选择和安装包 4.9.1 选择部件 4.9.2 选择单独的包 4.9.2.1 取得关于包的信息 4.9.3 包的相关性 4.9.4 包的安装 5 结束安装 5.1 配置鼠标 5.2 配置X Windows 5.2.1 配置XFree86服务器 5.3 配置网络 5.3.1 网络配置对话 5.4 配置时钟 5.5 选择重启动时启动的Services 5.6 配置打印机 5.6.1 本地打印机 5.6.2 远程lpd打印机 5.6.3 LAN Manager打印机 5.6.4 结束打印机设置 5.7 设置启动口令 5.8 制作启动盘 5.9 安装LILO 5.9.1 为LILO启动命令行增加选项 5.9.2 LILO的替代者 5.10 完成... 6 现在干什么? 6.1 获取适合你的文档 6.1.1 针对Linux初学者的文档 6.1.2 针对更有经验的Linux用户的文档 6.1.3 针对Linux高手的文档 6.2 基本的系统任务 6.2.1 启动你的Red Hat Linux系统 6.2.2 登录和退出 6.2.2.1 登录 6.2.2.2 退出 6.2.3 帐号和口令 6.2.3.1 帐号 6.2.3.2 口令 6.2.3.3 su命令 6.2.4 关闭你的Red Hat Linux系统 6.3 X Window系统 6.3.1 如果你还没用安装X 6.3.1.1 XFree86配置 6.3.2 如果你已经安装X 6.3.2.1 手工启动X 6.3.2.2 自动启动X 6.3.2.3 改变你的桌面 6.3.2.4 基于X的快捷工具 6.4 为你的Red Hat Linux系统配置声音 6.4.1 模块化的声音驱动器 6.4.1.1 支持的声效卡 6.4.2 声效卡配置工具 6.5 鼠标配置 6.6 万维网 6.6.1 万维网浏览器 6.6.2 万维网服务器 7 寻找文档 7.1 在线帮助 7.1.1 Man Pages 7.1.1.1 如何阅读Man Page 7.1.2 包的文档 7.1.3 HOWTO和FAQ 7.1.4 'locate'命令 7.1.5 'info'页 7.2 从因特网得到帮助 7.2.1 Red Hat邮件列表 7.2.2 USENET新闻组 7.2.2.1 Red Hat特定的新闻组 8 用RPM进行软件包管理 8.1 RPM设计目标 8.2 使用RPM 8.2.1 安装 8.2.1.1 已经安装的包 8.2.1.2 文件冲突 8.2.1.3 未解决的依赖关系 8.2.2 卸载 8.2.3 升级 8.2.4 查询 8.2.5 验证 8.3 令人惊异的RPM 8.4 其他的RPM资源 9 控制面板 9.1 配置用户和用户组 9.2 配置文件系统 9.2.1 增加网络文件系统的安装 9.3 打印机配置 9.4 网络配置 9.4.1 操纵名字 9.4.2 操纵主机 9.4.3 增加网络接口设备 9.4.3.1 PPP接口 9.4.3.2 SLIP接口 9.4.3.3 PLIP接口 9.4.3.4 Ethernet, Arcnet, Token Ring和Pocket适配器接口 9.4.4 设置路由 9.5 时间和日期 9.6 内核守护进程配置 9.6.1 改变模组选项 9.6.2 改变模组 9.6.3 增加模组 9.6.4 重起动kerneld 10 Glint 10.1 启动glint 10.2 显示软件包 10.2.1 上下文相关菜单 10.2.2 选择软件包 10.2.3 查看可用软件包 10.3 配置 10.4 操纵软件包 10.4.1 查询软件包 10.4.2 校验软件包 10.4.3 安装新的软件包 10.4.3.1 升级软件包 10.4.4 卸载软件包 11 系统管理 11.1 用户,组和私有用户组 11.1.1 标准用户 11.1.2 标准用户组 11.1.3 私有用户组 11.1.3.1 私有用户组基本原理 11.2 基于PAM用户认证 11.2.1 PAM模块 11.2.2 服务 11.2.3 配置文件 11.2.4 影子口令 11.2.5 更为详尽的信息 11.3 影子工具 11.4 创建定制的核心 11.4.1 创建模组化的内核 11.4.2 创建initrd映相像 11.4.3 创建单一的核心 11.5 Sendmail 11.6 控制对服务的访问 11.7 匿名FTP 11.8 NFS配置 11.8.1 安装NFS文件系统 11.8.2 输出NFS文件系统 11.9 Boot, Init和Shutdown 过程的描述 11.9.1 有关Sysconfig的信息 11.9.1.1 /etc/sysconfig下面的文件 11.9.1.2 /etc/sysconfig/network-scripts中的文件 11.9.2 系统 V 的Init过程 11.9.3 Init Runlevels 11.9.4 Initscript工具 11.9.5 启动时运行级 11.9.6 关闭 11.10 紧急救护模式 11.10.1 通过LILO 11.10.2 应急Boot盘组 11.10.2.1 一个小窍门儿 A 取得技术支持 A.1 支持政策概述 A.2 取得支持 A.3 支持常见问题 B 制作安装软盘 B.1 在MS-DOS下制作软盘 B.2 在类Linux-like操作系统下制作软盘 C 包清单 C.1 应用 C.1.1 通讯 C.1.2 数据库 C.1.3 编辑器 C.1.4 模拟器 C.1.5 工程 C.1.6 图形 C.1.7 邮件 C.1.8 数学 C.1.9 网络 C.1.10 新闻 C.1.11 项目 C.1.12 出版 C.1.13 声音 C.2 基础 C.2.1 内核 C.3 管理 C.4 开发 C.4.1 创建 C.4.2 创建 C.4.3 调试 C.4.4 语言 C.4.5 库 C.4.6 工具 C.4.7 版本控制 C.5 文档 C.6 扩展 C.6.1 日语 C.7 游戏 C.8 库 C.9 网络 C.9.1 管理 C.9.2 工具 C.9.3 新闻 C.9.4 工具 C.10 外壳 C.11 工具 C.11.1 存档 C.11.2 控制台 C.11.3 文件 C.11.4 打印 C.11.5 系统 C.11.6 终端 C.11.7 文本 C.12 X11 C.12.1 娱乐 C.12.2 应用 C.12.3 游戏 C.12.4 库 C.12.5 外壳 C.12.6 工具 C.12.7 窗口管理 C.12.8 XFree86 C.12.9 gnome D 通用参数 D.1 CD-ROM参数 D.2 SCSI参数 D.3 Ethernet参数 E Red Hat Linux常见问题 E.1 介绍 E.2 勘误表 E.3 联系Red Hat Software E.4 一般资源列表 E.5 一般问题 E.5.1 我如何得到新版本的Red Hat? E.5.2 我如何报告错误? E.5.3 Red Hat Linux是否包含源代码? E.6 安装 E.6.1 我有一个空的硬盘, 并想安装DOS或Windows 95和Linux. 最好的方法是什么? E.6.2 我没有CD-ROM, 也不能从网上安装. 是否有其他方法? E.6.3 我想制作新的软盘, 该如何做? E.6.4 我有一个IDE系统, 而我不知道和DOS相比, Linux是如何设置硬盘的. 您能解释一下吗? E.6.5 我的cdu31a/33a CD-ROM不能被识别, 怎么办? E.6.6 我在笔记本电脑上安装Linux时遇到困难. E.6.7 我想把我的Red Hat系统升级到5.x, 但是它说它不能找到有效的RPM数据库. 我需要做什么? E.6.8 我有一个Adaptec 2920. 在安装时, 我没有看到可以选择它, 为什么? 我该怎么办. 或者我有一个Future Domain TMC-3260,但是我为它指定选项用来检测时, 它在安装时不能被发现. E.6.9 我有一个带aic7xxx芯片(2940, 2840, 2740, 3940, 等)的Adaptec卡. 它是很普通的, 为什么Red Hat Linux不能完全支持它? E.6.10 在安装时, 我得到致命信号 11 或 7. 这是什么意思? 我该做什么? E.6.11 在安装时, Linux无法工作在我的Ultra DMA IDE驱动器和主机板上, 怎么办? E.6.12 我的机器有一个PCI Ultra DMA 控制器. 我可以安装Linux吗? E.6.13 我有NT, 并想安装Linux, 但我听说启动多操作系统会出现问题. 我如何避免它? E.6.14 我不能在系统的1023柱面下安装Linux, 我该怎么办? E.6.15 我想把LILO从我的机器的MBR中移去, 如何做? E.6.16 我想把Linux从我的硬盘中删除. 我使用DOS的fdisk, 它显示出非DOS分区, 但不能删除. 怎么办? E.6.17 我安装Linux时没有遇到错误, 但是在重启动时, 我只能得到L, LI 和其他一个项目. 为什么? E.7 使用Red Hat Linux E.7.1 我不能运行我编译的任何程序, 因为 我得到一个"command not found"出错信息. 我在目录里看到了这个命令, 但不能运行. E.7.2 我在运行ls时, 为什么看不到彩色? E.8 X Windows E.8.1 我听说XFree86有新的版本, 我如何安装它? 或者, 我需要安装最新版本的XFree86, 因为旧版本不支持我的显示卡. 我如何安装它? E.8.2 当我用startx命令启动X时, 我得到一个出错信息说没有安装服务器, 并回到提示符. 哪里出错了? E.8.3 当我启动X时, 我只看到灰色的背景和一个X光标. E.8.4 我如何客户化X窗口管理器? E.8.5 我不喜欢想Windows 95那样的配置, 我如何改变它? E.8.6 我得到一个错误errno=111. 那是什么意思? 我该做什么? E.8.7 我的键盘对照在X中不能正确工作. 怎么办? E.8.8 我得到一个出错信息libX can't be opened. 或者, 我因为缺少库, 无法编译X程序. E.8.9 我有一个AGP显示卡. 它是否被支持? E.8.10 我的计算机有一个NeoMagic 显示卡芯片组, 我可以用X吗? E.8.11 我从4.1(或更早)升级, 现在启动X时, 机器在一个灰色屏幕上吊死. E.8.12 当我运行netscape, 色彩似乎不对, 或者得到关于色彩的出错信息. E.8.13 我有一个微软串口鼠标, Linux不能使用它. 怎么办? E.9 系统管理 E.9.1 当我用usercfg创建用户, 他们不能登录. E.9.2 什么是PAM? 为什么要用它? E.9.3 我如何在我的Linux系统上设置Secure Shell (SSH)? E.9.4 为什么Linux只能看到我的内存的一部分? E.9.5 我的奔腾或更高档的机器有超过64M的内存, 但是它似乎很迟钝. 如果我用mem=64M让Linux只用64M内存, 速度似乎加快了. 这是怎么回事? 我该做什么? E.9.6 我有Red Hat 5.0, 并且升级了erratal列出的ld.so包, 但是我的libc5应用仍然出错. 为什么? E.9.7 当我运行fstool时, 我得到一个信息说一个分区似乎已经被删除, 问我是否把它从/etc/fstab移去. E.9.8 我如何在Linux下配置我的Jaz drive ? E.9.9 我如何使用我的并口zip drive? E.9.10 我无法使我的IDE zip drive工作. E.9.11 我的一些旧的应用程序得到错误的时间. E.9.12 我已升级了所有安装的程序, 但我的程序仍然得到错误的时间. E.9.13 安装时, 没有要我使用第二个CD-ROM. 当我用它使用X程序glint时, 报告没有RPMS包, 但是我在目录里看到很多包, 怎么办? E.9.14 Linux认识我的CDROM, 但当我mount 它时, 我得到"mount failed", 怎么办? E.9.15 我把Linux安装在一个IDE硬盘, 但我需要从软盘启动. 我如何从安装软盘启动? E.9.16 我不能使即查即用设备工作. E.9.17 当系统启动时, 我看到一条信息说我有一个不认识的PCI硬件. 这是什么意思? E.9.18 现在系统启动时, LILO默认运行Linux. 我想启动其他操作系统. 我怎么做? E.9.19 我需要使用急救模式编辑一个文件. 编辑器说不知道窗口类型. 我如何编辑一个文件? E.10 网络管理 E.10.1 Linux不能识别我的NE2000兼容网卡. E.10.2 我安装了Linux, 它似乎能启动. 但是, 当我调用sendmail时机器似乎死机了. 发生了什么事? 我该怎么办? E.10.3 我升级到了5.0, 而sendmail不能想从前那样发送邮件了. 怎么回事? E.10.4 我安装了Linux, 重编译了内核, 现在网络出现没有找到net-pf模块的错误. 怎么办? E.10.5 我如何配置因特网PPP连接? E.10.6 我如何允许非root用户启动PPP连接? E.10.7 我的系统一直它的网关信息. E.11 打印机管理 E.11.1 我在设置打印机时遇到了问题. 我的打印机没有在打印机配置工具中列出. E.11.2 我有一台Canon BJC打印机, 它不能正常打印. E.11.3 当我打印时, 输出的行都切去了头. E.12 附录[sic] E.12.1 Red Hat FTP站非常慢. 是否有镜像站点? F Red Hat Linux/SPARC的特别信息 F.1 支持的硬件 F.2 安装概述 F.3 控制台命令 F.4 基于Ramdisk的安装标准 F.5 选择启动方式 F.6 选择安装方式 F.7 用一个串行终端安装 F.8 安装: 选择系统部件 F.9 SILO配置 F.10 分区 F.11 X 窗口 G.Linux服务社产品清单
12.87MB
C#高级编程第3版
2012-07-27中文、高清晰、完整版本 C#经典名著!也是Wrox红皮书中最畅销的品种之一,从第一版开始就名满天下;其第3版被中华读书报、CSDN、《程序员》等机构评选为2005年最权威的十大IT图书之一(第2名);在中国版协、中国出版科学研究所、《出版参考》杂志组织的“2005年度输出版、引进版优秀图书”评选活动中获得“2005年度引进版科技类优秀图书”奖。 第1章 .NET体系结构.... 1 1.1 C#与.NET的关系...... 1 1.2 公共语言运行库...... 1 1.3 中间语言...... 4 1.3.1 面向对象和接口的支持..... 5 1.3.2 值类型和引用类型..... 6 1.3.3 强数据类型..... 6 1.3.4 通过异常处理错误..... 12 1.3.5 特性的使用..... 12 1.4 程序集...... 12 1.4.1 私有程序集..... 13 1.4.2 共享程序集..... 14 1.4.3 反射..... 14 1.5 .NET Framework类...... 14 1.6 用C#创建.NET应用程序...... 16 1.6.1 创建ASP.NET应用程序..... 16 1.6.2 创建Windows窗体..... 18 1.6.3 Windows服务..... 18 1.7 C#在.NET企业体系结构中的作用...... 18 1.8 小结...... 20 第2章 C#基础.... 21 2.1 引言...... 21 2.2 第一个C#程序...... 22 2.2.1 代码..... 22 2.2.2 编译并运行程序..... 22 2.2.3 详细介绍..... 23 2.3 变量...... 25 2.3.1 变量的初始化..... 26 2.3.2 变量的作用域..... 26 2.3.3 常量..... 29 2.4 预定义数据类型...... 30 2.4.1 值类型和引用类型..... 30 2.4.2 CTS类型..... 31 2.4.3 预定义的值类型..... 32 2.4.4 预定义的引用类型..... 35 2.5 流控制...... 37 2.5.1 条件语句..... 37 2.5.2 循环..... 41 2.5.3 跳转语句..... 44 2.6 枚举...... 45 2.7 数组...... 47 2.8 命名空间...... 48 2.8.1 using语句..... 49 2.8.2 命名空间的别名..... 50 2.9 Main()方法...... 51 2.9.1 多个Main()方法..... 51 2.9.2 给Main()方法传送参数..... 52 2.10 有关编译C#文件的更多内容...... 53 2.11 控制台I/O.... 55 2.12 使用注释...... 57 2.12.1 源文件中的内部注释..... 57 2.12.2 XML文档说明..... 57 2.13 C#预处理器指令...... 59 2.13.1 #define和 #undef. 60 2.13.2 #if, #elif, #else和 #endif. 60 2.13.3 #warning和 # error. 61 2.13.4 #region和#endregion.. 62 2.13.5 #line.. 62 2.14 C#编程规则...... 62 2.14.1 用于标识符的规则..... 63 2.14.2 用法约定..... 64 2.15 小结...... 69 第3章 对象和类型.... 70 3.1 类和结构...... 70 3.2 类成员...... 71 3.2.1 数据成员..... 71 3.2.2 函数成员..... 72 3.2.3 只读字段..... 86 3.3 结构...... 87 3.3.1 结构是值类型..... 88 3.3.2 结构和继承..... 89 3.3.3 结构的构造函数..... 89 3.4 Object类...... 90 3.4.1 System.Object方法..... 90 3.4.2 ToString()方法..... 91 3.5 小结...... 93 第4章 继承.... 94 4.1 继承的类型...... 94 4.1.1 实现继承和接口继承..... 94 4.1.2 多重继承..... 95 4.1.3 结构和类..... 95 4.2 实现的继承...... 95 4.2.1 虚方法..... 96 4.2.2 隐藏方法..... 97 4.2.3 调用函数的基础版本..... 98 4.2.4 抽象类和抽象函数..... 99 4.2.5 密封类和密封方法..... 100 4.2.6 派生类的构造函数..... 101 4.3 修饰符...... 105 4.3.1 可见性修饰符..... 105 4.3.2 其他修饰符..... 106 4.4 接口...... 107 4.4.1 定义和实现接口..... 108 4.4.2 派生的接口..... 112 4.5 小结...... 114 第5章 运算符和类型强制转换.... 115 5.1 运算符...... 115 5.1.1 运算符的简化操作..... 116 5.1.2 三元运算符..... 117 5.1.3 checked和 unchecked运算符..... 118 5.1.4 is运算符..... 119 5.1.5 as运算符..... 119 5.1.6 sizeof运算符..... 119 5.1.7 typeof运算符..... 119 5.1.8 运算符的优先级..... 120 5.2 类型的安全性...... 120 5.2.1 类型转换..... 121 5.2.2 装箱和取消装箱..... 124 5.3 对象的相等比较...... 125 5.3.1 引用类型的相等比较..... 125 5.3.2 ReferenceEquals()方法..... 125 5.3.3 虚拟的Equals()方法..... 125 5.3.4 静态的Equals()方法..... 125 5.3.5 比较运算符==..... 126 5.3.6 值类型的相等比较..... 126 5.4 运算符重载...... 126 5.4.1 运算符的工作方式..... 127 5.4.2 运算符重载的示例:Vector结构..... 128 5.5 用户定义的数据类型转换...... 135 5.5.1 执行用户定义的类型转换..... 137 5.5.2 多重数据类型转换..... 143 5.6 小结...... 147 第6章 委托和事件.... 148 6.1 委托...... 148 6.1.1 在C#中使用委托..... 149 6.1.2 简单的委托示例..... 153 6.1.3 BubbleSorter示例..... 154 6.1.4 多播委托..... 157 6.2 事件...... 160 6.2.1 从客户的角度讨论事件..... 160 6.2.2 生成事件..... 162 6.3 小结...... 166 第7章 内存管理和指针.... 167 7.1 后台内存管理...... 167 7.1.1 值数据类型..... 167 7.1.2 引用数据类型..... 169 7.1.3 垃圾收集..... 171 7.2 释放未托管的资源...... 172 7.2.1 析构函数..... 172 7.2.2 IDisposable接口..... 173 7.2.3 实现IDisposable接口和析构函数..... 175 7.3 不安全的代码...... 176 7.3.1 指针..... 176 7.3.2 使用指针优化性能..... 191 7.4 小结...... 194 第8章 字符串和正则表达式.... 195 8.1 System.String类...... 195 8.1.1 创建字符串..... 196 8.1.2 格式化字符串..... 200 8.2 正则表达式...... 206 8.2.1 正则表达式概述..... 206 8.2.2 RegularExpressionsPlayaround示例..... 207 8.2.3 显示结果..... 209 8.2.4 匹配、组合和捕获..... 211 8.3 小结...... 212 第9章 集合.... 213 9.1 对象组...... 213 9.1.1 数组列表..... 213 9.1.2 集合..... 215 9.1.3 字典..... 219 9.2 小结...... 228 第10章 反射.... 229 10.1 定制特性...... 229 10.1.1 编写定制特性..... 230 10.1.2 定制特性示例WhatsNewAttributes.. 233 10.2 反射...... 237 10.2.1 System.Type类..... 237 10.2.2 TypeView示例..... 239 10.2.3 Assembly类..... 241 10.2.4 完成WhatsNewAttributes示例..... 243 10.3 小结...... 247 第11章 错误和异常.... 248 11.1 错误和异常处理...... 248 11.1.1 异常类..... 248 11.1.2 捕获异常..... 250 11.1.3 用户定义的异常类..... 259 11.2 小结...... 267 第12章 Visual Studio .NET.. 268 12.1 使用Visual Studio .NET 2003... 268 12.1.1 创建项目..... 271 12.1.2 解决方案和项目..... 276 12.1.3 Windows应用程序代码..... 279 12.1.4 读取Visual Studio 6项目..... 279 12.1.5 项目的浏览和编码..... 280 12.1.6 生成项目..... 289 12.1.7 调试..... 293 12.2 其他.NET工具...... 295 12.2.1 ASP.NET Web Matrix Project. 295 12.2.2 WinCV... 296 12.3 小结...... 297 第13章 程序集.... 298 13.1 程序集的含义...... 298 13.1.1 DLL-Hell的解决方案..... 299 13.1.2 程序集的特性..... 299 13.1.3 应用程序域和程序集..... 300 13.2 程序集的结构...... 303 13.2.1 程序集的清单..... 303 13.2.2 命名空间、程序集和组件..... 304 13.2.3 私有程序集和共享程序集..... 304 13.2.4 查看程序集..... 304 13.2.5 构建程序集..... 305 13.3 跨语言支持...... 309 13.3.1 CTS和CLS.. 310 13.3.2 语言无关性..... 311 13.3.3 CLS要求..... 320 13.4 全局程序集缓存...... 321 13.4.1 本机图像生成器..... 322 13.4.2 全局程序集缓存查看器..... 322 13.4.3 全局程序集缓存工具(gacutil.exe). 324 13.5 创建共享程序集...... 324 13.5.1 共享程序集名..... 324 13.5.2 创建共享程序集..... 326 13.6 配置...... 331 13.6.1 配置类别..... 331 13.6.2 版本问题..... 332 13.6.3 配置目录..... 341 13.7 小结...... 343 第14章 .NET的安全性.... 344 14.1 代码访问的安全性...... 344 14.1.1 代码组..... 345 14.1.2 代码访问权限和权限集..... 351 14.1.3 策略的级别:Machine、User和Enterprise.. 355 14.2 对Framework中安全性的支持...... 357 14.2.1 要求权限..... 358 14.2.2 请求权限..... 359 14.2.3 隐式的权限..... 361 14.2.4 拒绝权限..... 362 14.2.5 断言权限..... 363 14.2.6 创建代码访问权限..... 365 14.2.7 声明的安全性..... 365 14.3 基于角色的安全性...... 366 14.3.1 Principal. 366 14.3.2 Windows Principal. 367 14.3.3 角色..... 368 14.3.4 声明基于角色的安全性..... 369 14.4 安全策略的管理...... 370 14.4.1 安全配置文件..... 370 14.4.2 代码组和权限的管理..... 373 14.4.3 安全性的启用和禁用..... 374 14.4.4 重置安全策略..... 374 14.4.5 代码组的创建..... 374 14.4.6 代码组的删除..... 375 14.4.7 代码组权限的更改..... 375 14.4.8 权限集的创建和应用..... 376 14.4.9 使用强名称发布代码..... 378 14.4.10 使用证书发布代码..... 381 14.4.11 区域的管理..... 386 14.5 小结...... 387 第15章 线程.... 389 15.1 线程...... 389 15.2 多线程应用程序...... 390 15.3 线程的处理...... 391 15.4 ThreadPlayaround示例...... 393 15.5 线程的优先级...... 397 15.6 同步...... 398 15.6.1 同步的含义..... 398 15.6.2 同步问题..... 399 15.7 小结...... 402 第16章 使用.NET Remoting的分布式应用程序.... 403 16.1 .NET Remoting的含义...... 404 16.1.1 应用程序类型和协议..... 404 16.1.2 CLR Object Remoting.. 405 16.2 .NET Remoting概述...... 405 16.3 环境...... 407 16.3.1 激活..... 408 16.3.2 特性和属性..... 408 16.3.3 环境之间的通信..... 409 16.4 远程对象、客户机和服务器...... 409 16.4.1 远程对象..... 409 16.4.2 简单的服务器..... 410 16.4.3 简单的客户机..... 411 16.5 .NET Remoting体系结构...... 413 16.5.1 信道..... 413 16.5.2 格式标识符..... 416 16.5.3 ChannelServices和RemotingConfiguration.. 417 16.5.4 对象的激活..... 418 16.5.5 消息接收器..... 422 16.5.6 在远程方法中传递对象..... 423 16.5.7 生存期管理..... 427 16.6 .NET Remoting的其他特性...... 430 16.6.1 配置文件..... 430 16.6.2 驻留应用程序..... 440 16.6.3 类、接口和Soapsuds.. 441 16.6.4 异步远程调用..... 443 16.6.5 远程调用和事件..... 445 16.6.6 调用环境..... 451 16.7 小结...... 453 第17章 本地化.... 454 17.1 System.Globalization命名空间...... 454 17.1.1 Unicode问题..... 454 17.1.2 文化和区域..... 455 17.1.3 使用文化..... 459 17.1.4 排序..... 464 17.2 资源...... 465 17.2.1 创建资源文件..... 466 17.2.2 ResGen.. 466 17.2.3 ResourceWriter. 466 17.2.4 使用资源文件..... 467 17.2.5 System.Resources命名空间..... 470 17.3 使用Visual Studio .NET的本地化示例...... 470 17.3.1 外包翻译..... 476 17.3.2 编程修改文化..... 476 17.3.3 使用二进制资源文件..... 478 17.3.4 使用XML资源文件..... 479 17.3.5 资源的自动回退..... 480 17.4 ASP.NET应用程序的国际化和本地化...... 481 17.5 定制的资源读取器...... 482 17.5.1 创建DatabaseResourceReader类..... 483 17.5.2 创建DatabaseResourceSet类..... 484 17.5.3 创建DatabaseResourceManager类..... 485 17.5.4 DatabaseResourceReader的客户应用程序..... 486 17.6 小结...... 486 第18章 部署.... 487 18.1 部署的设计...... 487 18.2 部署选项...... 487 18.2.1 xcopy实用工具..... 487 18.2.2 复制项目..... 488 18.2.3 部署项目..... 488 18.3 部署的要求...... 488 18.4 简单的部署...... 489 18.4.1 xcopy部署..... 489 18.4.2 xcopy部置和Web应用程序..... 490 18.4.3 复制项目..... 491 18.5 Installer项目...... 492 18.5.1 Windows Installer. 493 18.5.2 创建安装程序..... 493 18.5.3 高级选项..... 502 18.6 小结...... 508 第19章 Windows窗体.... 509 19.1 创建Windows窗体应用程序...... 509 19.2 Control类...... 515 19.2.1 大小和位置..... 516 19.2.2 外观..... 516 19.2.3 用户交互操作..... 516 19.2.4 Windows功能..... 517 19.2.5 杂项功能..... 518 19.2.6 类层次结构..... 518 19.3 标准控件和组件...... 519 19.3.1 Button控件..... 520 19.3.2 CheckBox控件..... 521 19.3.3 ComboBox控件与ListBox控件..... 521 19.3.4 DateTimePicker控件..... 522 19.3.5 ErrorProvider组件..... 522 19.3.6 HelpProvider组件..... 524 19.3.7 ImageList组件..... 524 19.3.8 Label控件..... 524 19.3.9 ListView控件..... 525 19.3.10 Panel控件..... 527 19.3.11 PictureBox控件..... 527 19.3.12 ProgressBar控件..... 527 19.3.13 RadioButton控件..... 528 19.3.14 TextBox控件与RichTextBox控件..... 528 19.3.15 Splitter控件..... 529 19.3.16 StatusBar控件..... 529 19.3.17 TabControl控件和TabPages控件..... 530 19.3.18 Menu控件..... 530 19.3.19 ToolBar控件..... 532 19.4 窗体...... 534 19.4.1 Form类..... 534 19.4.2 多文档界面..... 542 19.4.3 定制控件..... 545 19.5 小结...... 557 第20章 使用GDI+绘图.... 558 20.1 理解绘图规则...... 558 20.1.1 GDI和GDI+... 558 20.1.2 绘制图形..... 560 20.1.3 使用OnPaint()绘制图形..... 563 20.1.4 使用剪切区域..... 564 20.2 测量坐标和区域...... 565 20.2.1 Point和PointF结构..... 566 20.2.2 Size和SizeF结构..... 567 20.2.3 Rectangle和RectangleF结构..... 568 20.2.4 Region.. 569 20.3 调试须知...... 570 20.4 绘制可滚动的窗口...... 571 20.5 颜色...... 577 20.5.1 红绿蓝(RGB)值..... 577 20.5.2 命名的颜色..... 578 20.5.3 图形显示模式和安全的调色板..... 578 20.5.4 安全调色板..... 579 20.6 画笔和钢笔...... 579 20.6.1 画笔..... 580 20.6.2 钢笔..... 580 20.7 绘制图形和线条...... 581 20.8 显示图像...... 583 20.9 绘制文本...... 586 20.10 字体和字体系列...... 588 20.11 示例:枚举字体系列...... 590 20.12 编辑文本文档:CapsEditor示例...... 592 20.12.1 Invalidate()方法..... 596 20.12.2 计算项和文档的大小..... 597 20.12.3 OnPaint(). 599 20.12.4 坐标转换..... 600 20.12.5 响应用户的输入..... 602 20.13 打印...... 605 20.14 小结...... 610 第21章 .NET数据访问.... 612 21.1 ADO.NET概述...... 612 21.1.1 命名空间..... 613 21.1.2 共享类..... 613 21.1.3 数据库特定的类..... 613 21.2 使用数据库连接...... 614 21.2.1 高效地使用连接..... 615 21.2.2 事务处理..... 618 21.3 命令...... 619 21.3.1 执行命令..... 620 21.3.2 调用存储过程..... 624 21.4 快速数据访问:数据读取器...... 627 21.5 管理数据和关系:DataSet类...... 630 21.5.1 数据表..... 630 21.5.2 数据列..... 631 21.5.3 数据关系..... 636 21.5.4 数据约束..... 638 21.6 XML模式...... 640 21.7 填充数据集...... 647 21.7.1 用数据适配器来填充 DataSet. 647 21.7.2 从XML中给数据集填充数据..... 649 21.8 保存对数据集的修改...... 649 21.8.1 通过数据适配器进行更新..... 649 21.8.2 写入XML输出结果..... 652 21.9 使用ADO.NET.... 654 21.9.1 分层开发..... 654 21.9.2 SQL Server的键生成..... 655 21.9.3 命名约定..... 657 21.10 小结...... 658 第22章 查看.NET数据.... 660 22.1 DataGrid控件...... 660 22.1.1 显示列表数据..... 660 22.1.2 数据源..... 662 22.1.3 DataGrid类的层次结构..... 669 22.2 数据绑定...... 673 22.2.1 简单的绑定..... 673 22.2.2 数据绑定对象..... 674 22.3 Visual Studio .NET和数据访问...... 679 22.3.1 创建一个连接..... 679 22.3.2 选择数据..... 681 22.3.3 生成DataSet. 683 22.3.4 更新数据源..... 684 22.3.5 构建模式..... 686 22.3.6 其他常见的要求..... 691 22.4 小结...... 700 第23章 处理XML.. 701 23.1 .NET支持的XML标准...... 701 23.2 System.Xml命名空间...... 702 23.3 在.NET中使用MSXML... 703 23.4 使用System.Xml类...... 705 23.5 读写流格式的XML... 706 23.5.1 使用 XmlTextReader类..... 706 23.5.2 使用XmlValidatingReader类..... 710 23.5.3 使用XmlTextWriter类..... 713 23.6 在.NET中使用DOM..... 714 23.7 在NET中使用XPath和XSLT.... 721 23.7.1 System.Xml.XPath命名空间..... 721 23.7.2 System.Xml.Xsl命名空间..... 725 23.8 XML和ADO.NET.... 730 23.8.1 将ADO.NET数据转换为XML文档..... 730 23.8.2 把XML文档转换为 ADO.NET数据..... 739 23.8.3 读写DiffGram.... 741 23.9 在XML中串行化对象...... 744 23.10 小结...... 756 第24章 使用Active Directory. 757 24.1 Active Directory的体系结构...... 757 24.1.1 特性..... 758 24.1.2 Active Directory的概念..... 758 24.1.3 Active Directory数据的特性..... 762 24.1.4 模式..... 762 24.2 Active Directory的管理工具...... 763 24.2.1 Active Directory Users and Computers工具..... 764 24.2.2 ADSI Edit工具..... 765 24.3 Active Directory Service Interfaces.. 766 24.4 Active Directory编程...... 766 24.4.1 System.DirectoryServices命名空间中的类..... 767 24.4.2 绑定..... 767 24.4.3 获取目录项..... 771 24.4.4 对象集合..... 773 24.4.5 缓存..... 774 24.4.6 创建新对象..... 774 24.4.7 更新目录项..... 775 24.4.8 访问内部的ADSI对象..... 776 24.4.9 在Active Directory中搜索..... 777 24.5 搜索用户对象...... 781 24.5.1 用户界面..... 781 24.5.2 获取模式命名环境..... 782 24.5.3 获取User类的属性名..... 783 24.5.4 搜索用户对象..... 784 24.6 小结...... 786 第25章 ASP.NET页面.... 787 25.1 ASP.NET概述...... 787 25.2 ASP.NET Web窗体...... 788 25.3 ADO.NET和数据绑定...... 805 25.3.1 更新会议登记应用程序..... 805 25.3.2 数据绑定的更多内容..... 813 25.4 应用程序配置...... 819 25.5 小结...... 820 第26章 Web服务.... 821 26.1 SOAP... 821 26.2 WSDL... 823 26.3 Web服务...... 824 26.3.1 创建Web服务..... 824 26.3.2 使用Web服务..... 828 26.4 扩充会议登记示例...... 830 26.4.1 会议登记 Web服务..... 830 26.4.2 会议登记客户程序..... 834 26.5 使用SOAP标题交换数据...... 836 26.6 小结...... 841 第27章 用户控件和定制控件.... 842 27.1 用户控件...... 842 27.2 定制控件...... 849 27.2.1 定制控件的项目配置..... 850 27.2.2 基本的定制控件..... 853 27.2.3 创建合成的定制控件..... 858 27.3 测验民意的投票控件...... 860 27.3.1 Candidate 控件..... 862 27.3.2 StrawPoll控件构建器..... 864 27.3.3 测试民意的投票类型..... 865 27.3.4 测试民意的投票控件..... 865 27.4 小结...... 872 第28章 COM的互操作性.... 873 28.1 .NET和COM..... 873 28.1.1 元数据..... 874 28.1.2 释放内存..... 874 28.1.3 接口..... 874 28.1.4 方法绑定..... 876 28.1.5 数据类型..... 876 28.1.6 注册..... 876 28.1.7 线程..... 876 28.1.8 错误处理..... 878 28.1.9 事件处理..... 878 28.2 编组...... 879 28.3 在.NET客户程序中使用COM组件...... 879 28.3.1 创建COM组件..... 880 28.3.2 创建Runtime Callable Wrapper. 884 28.3.3 线程问题..... 886 28.3.4 添加连接点..... 886 28.3.5 在Windows窗体中使用ActiveX控件..... 888 28.3.6 在ASP.NET中使用COM对象..... 891 28.4 在COM客户程序中使用.NET组件...... 892 28.4.1 COM Callable Wrapper. 892 28.4.2 创建.NET组件..... 892 28.4.3 创建类型库..... 893 28.4.4 COM互操作特性..... 896 28.4.5 COM注册..... 899 28.4.6 创建COM客户程序..... 900 28.4.7 添加连接点..... 901 28.4.8 用sink对象创建客户..... 902 28.4.9 在Internet Explorer中运行Windows窗体控件..... 903 28.5 小结...... 904 第29章 Enterprise Services. 905 29.1 概述...... 905 29.1.1 Enterprise Services简史..... 905 29.1.2 使用Enterprise Services的场合..... 905 29.1.3 环境..... 906 29.1.4 自动的事务处理..... 906 29.1.5 分布式事务处理..... 907 29.1.6 对象池..... 907 29.1.7 基于角色的安全性..... 907 29.1.8 排队的组件..... 907 29.1.9 松散藕合的事件..... 907 29.2 创建简单的COM+应用程序...... 908 29.2.1 类ServicedComponent. 908 29.2.2 应用程序属性..... 908 29.2.3 创建组件..... 909 29.3 部署...... 910 29.3.1 自动部署..... 910 29.3.2 手工部署..... 910 29.4 组件服务管理工具...... 911 29.5 客户应用程序...... 913 29.6 事务处理...... 913 29.6.1 ACID属性..... 914 29.6.2 事务处理的属性..... 914 29.6.3 事务处理的结果..... 915 29.6.4 示例应用程序..... 915 29.7 小结...... 926 第30章 文件和注册表操作.... 927 30.1 管理文件系统...... 927 30.1.1 表示文件和文件夹的.NET类..... 928 30.1.2 Path类..... 930 30.1.3 示例:文件浏览器..... 931 30.2 移动、复制和删除文件...... 936 30.3 读写文件...... 941 30.3.1 流..... 941 30.3.2 读写二进制文件..... 942 30.3.3 读写文本文件..... 948 30.4 读写注册表...... 954 30.4.1 注册表..... 954 30.4.2 .NET注册表类..... 956 30.4.3 SelfPlacingWindow示例..... 958 30.5 小结...... 964 第31章 访问Internet 965 31.1 WebClient类...... 965 31.1.1 下载文件..... 966 31.1.2 基本的Web客户示例..... 966 31.1.3 上传文件..... 967 31.2 WebRequest类和WebResponse类...... 968 31.3 把输出结果显示为HTML页面...... 971 31.4 实用工具类...... 974 31.4.1 URI. 974 31.4.2 IP地址和DNS名称..... 976 31.5 较低层的协议...... 978 31.6 小结...... 985 第32章 Windows服务.... 986 32.1 Windows服务...... 986 32.2 Windows服务的体系结构...... 987 32.2.1 服务程序..... 987 32.2.2 服务控制程序..... 989 32.2.3 服务配置程序..... 989 32.3 System.ServiceProcess命名空间...... 989 32.4 创建Windows服务...... 989 32.4.1 使用套接字的类库..... 990 32.4.2 TcpClient示例..... 994 32.4.3 Windows服务项目..... 996 32.4.4 线程和服务..... 1001 32.4.5 服务的安装..... 1001 32.4.6 安装程序..... 1001 32.5 服务的监视和控制...... 1006 32.5.1 MMC计算机管理..... 1006 32.5.2 net.exe.. 1007 32.5.3 sc.exe.. 1008 32.5.4 Visual Studio .NET Server Explorer. 1009 32.5.5 ServiceController类..... 1009 32.6 故障排除...... 1015 32.6.1 交互式服务..... 1015 32.6.2 事件日志..... 1016 32.6.3 性能监视..... 1022 32.7 电源事件...... 1027 32.8 小结...... 1027
4.76MB
Linux系统分析part1
2008-10-29目 录 前言 第一篇 Linux系统介绍 第1章 Linux简介 …1 1.1 Linux 的起源 1 1.2 自由软件基金会的GNU计划 1 1.3 Linux 的发音 2 1.4 Linux 的特点 2 1.5 基本硬件要求 3 1.6 如何获得Linux 3 1.6.1 从网上下载Linux 3 1.6.2 从光盘获得Linux 3 1.7 涉及Linux 的Web 网址和新闻讨论组 6 1.8 Linux 的不足之处 7 第2章 外壳及常用命令 8 2.1 登录和退出 8 2.2 Linux 系统的外壳 8 2.3 外壳的常用命令 9 2.3.1 更改帐号密码 9 2.3.2 联机帮助 9 2.3.3 远程登录 9 2.3.4 文件或目录处理 9 2.3.5 改变工作目录 10 2.3.6 复制文件 10 2.3.7 移动或更改文件、目录名称 10 2.3.8 建立新目录 10 2.3.9 删除目录 11 2.3.10 删除文件 11 2.3.11 列出当前所在的目录位置 11 2.3.12 查看文件内容 11 2.3.13 分页查看文件内容 11 2.3.14 查看目录所占磁盘容量 11 2.3.15 文件传输 11 2.3.16 文件权限的设定 12 2.3.17 检查自己所属的工作组名称 13 2.3.18 改变文件或目录工作组所有权 13 2.3.19 改变文件或目录的最后修改时间 13 2.3.20 文件的链接 13 2.3.21 文件中字符串的查寻 14 2.3.22 查寻文件或命令的路径 14 2.3.23 比较文件或目录的内容 14 2.3.24 文件打印输出 14 2.3.25 一般文件的打印 14 2.3.26 troff 文件的打印 14 2.3.27 打印机控制命令 14 2.3.28 进程控制 15 2.3.29 外壳变量 16 2.3.30 环境变量 16 2.3.31 别名 16 2.3.32 历史命令 17 2.3.33 文件的压缩 17 2.3.34 管道命令的使用 17 2.3.35 输入/输出控制 18 2.3.36 查看系统中的用户 18 2.3.37 改变用户名 18 2.3.38 查看用户名 18 2.3.39 查看当前系统上所有工作站 的用户 19 2.3.40 与某工作站上的用户交谈 19 2.3.41 检查远程系统是否正常 19 2.3.42 电子邮件的使用简介 19 第3章 Linux系统的网络功能 21 3.1 Linux支持的网络协议 21 3.1.1 TCP/IP 21 3.1.2 TCP/IP 版本 6 21 3.1.3 IPX/SPX 21 3.1.4 AppleTalk 协议集 21 3.1.5 广域网 22 3.1.6 ISDN 22 3.1.7 PPP、SLIP及PLIP 22 3.1.8 业余无线电 22 3.1.9 ATM 22 3.2 Linux系统下的文件共享和打印共享 22 3.2.1 Machintosh 环境 22 3.2.2 Windows 环境 22 3.2.3 Novell 环境 23 3.2.4 UNIX 环境 23 3.3 Linux系统中的Internet/Intranet功能 23 3.3.1 邮件 23 3.3.2 Web 服务器 24 3.3.3 Web 浏览器 24 3.3.4 FTP 服务器和客户机 24 3.3.5 新闻服务 24 3.3.6 域名系统 24 3.3.7 DHCP和 bootp 24 3.3.8 NIS 24 3.4 Linux系统下应用程序的远程执行 24 3.4.1 Telnet 25 3.4.2 远程命令 25 3.4.3 X Window 25 3.5 Linux系统的网络互连功能 25 3.5.1 路由器 25 3.5.2 网桥 25 3.5.3 IP伪装 25 3.5.4 IP统计 26 3.5.5 IP 别名 26 3.5.6 流量限制器 26 3.5.7 防火墙 26 3.5.8 端口下传 26 3.5.9 负载平衡 26 3.5.10 EQL 27 3.5.11 代理服务器 27 3.5.12 按需拨号 27 3.5.13 管道、移动IP和虚拟个人网络 27 3.6 Linux系统中的网络管理 27 3.6.1 Linux系统下的网络管理应用程序 27 3.6.2 SNMP 28 3.7 企业级Linux网络 28 3.7.1 高可用性 28 3.7.2 RAID 28 3.7.3 冗余网络 28 第4章 Linux系统管理简介 29 4.1 root 帐号 29 4.2 启动和关闭系统 29 4.2.1 从软盘启动 29 4.2.2 使用LILO 启动 29 4.2.3 关闭Linux系统 30 4.3 挂接文件系统 30 4.3.1 挂接软盘 30 4.3.2 创建新的文件系统 30 4.3.3 卸载文件系统 31 4.4 检查文件系统 31 4.5 使用文件作为交换区 31 4.6 系统和文件的备份 32 4.7 设置系统 33 4.7.1 设置系统名 33 4.7.2 使用维护磁盘 33 4.7.3 重新设置root 帐号口令 33 4.7.4 设置登录信息 33 第二篇 Linux高级语言及管理编程 第5章 外壳编程 35 5.1 创建和运行外壳程序 35 5.1.1 创建外壳程序 35 5.1.2 运行外壳程序 35 5.2 使用外壳变量 36 5.2.1 给变量赋值 36 5.2.2 读取变量的值 37 5.2.3 位置变量和其他系统变量 37 5.2.4 引号的作用 37 5.3 数值运算命令 38 5.4 条件表达式 40 5.4.1 if 表达式 40 5.4.2 case 表达式 41 5.5 循环语句 42 5.5.1 for 语句 43 5.5.2 while 语句 43 5.5.3 until 语句 44 5.6 shift 命令 44 5.7 select 语句 45 5.8 repeat 语句 46 5.9 子函数 46 第6章 gawk语言编程 48 6.1 gawk的主要功能 48 6.2 如何执行gawk程序 48 6.3 文件、记录和字段 48 6.4 模式和动作 49 6.5 比较运算和数值运算 50 6.6 内部函数 50 6.6.1 随机数和数学函数 51 6.6.2 字符串的内部函数 51 6.6.3 输入输出的内部函数 52 6.7 字符串和数字 52 6.8 格式化输出 52 6.9 改变字段分隔符 54 6.10 元字符 54 6.11 调用gawk程序 55 6.12 BEGIN和END 55 6.13 变量 56 6.14 内置变量 56 6.15 控制结构 57 6.15.1 if 表达式 57 6.15.2 while 循环 57 6.15.3 for 循环 58 6.15.4 next 和 exit 58 6.16 数组 58 6.17 用户自定义函数 58 6.18 几个实例 59 第7章 Perl语言编程 60 7.1 什么是Perl 60 7.2 Perl的现状 60 7.3 初试Perl 60 7.4 Perl变量 60 7.4.1 标量 60 7.4.2 数组 63 7.4.3 相关数组 65 7.5 文件句柄和文件操作 65 7.6 循环结构 66 7.6.1 foreach循环 66 7.6.2 判断运算 66 7.6.3 for循环 67 7.6.4 while 和 until循环 67 7.7 条件结构 67 7.8 字符匹配 68 7.9 替换和翻译 69 7.9.1 替换 69 7.9.2 翻译 70 7.10 子过程 70 7.10.1 子过程的定义 70 7.10.2 参数 70 7.10.3 返回值 70 7.11 Perl程序的完整例子 71 第三篇 Linux系统内核分析 第8章 Linux内核简介 73 8.1 系统初始化 73 8.2 系统运行 73 8.3 内核提供的各种系统调用 74 8.3.1 进程的基本概念和系统 的基本数据结构 74 8.3.2 创建和撤消进程 74 8.3.3 执行程序 74 8.4 存取文件系统 75 第9章 系统进程 76 9.1 什么是进程 76 9.2 进程的结构 76 9.3 进程调度 78 9.4 进程使用的文件 79 9.5 进程使用的虚拟内存 80 9.6 创建进程 81 9.7 进程的时间和计时器 81 9.7.1 实时时钟 81 9.7.2 虚拟时钟 81 9.7.3 形象时钟 81 9.8 程序的执行 82 9.8.1 ELF文件 82 9.8.2 脚本文件 82 第10章 内存管理 83 10.1 内存管理的作用 83 10.2 虚拟内存的抽象模型 83 10.3 按需装入页面 84 10.4 交换 85 10.5 共享虚拟内存 85 10.6 存取控制 85 10.7 高速缓存 86 10.7.1 缓冲区高速缓存 86 10.7.2 页面高速缓存 86 10.7.3 交换高速缓存 86 10.7.4 硬件高速缓存 86 10.8 系统页面表 86 10.9 页面的分配和释放 87 10.9.1 页面的分配 88 10.9.2 页面的释放 88 10.10 内存映射 88 10.11 请求调页 89 10.12 页面高速缓存 89 10.13 内核交换守护进程 90 第11章 进程间通信 91 11.1 信号机制 91 11.2 管道机制 92 11.3 System V IPC 机制 93 11.3.1 信息队列 93 11.3.2 信号量 94 11.3.3 共享内存 96 第12章 PCI 98 12.1 PCI 系统 98 12.2 PCI地址空间 98 12.3 PCI设置头 99 12.4 PCI I/O 和 PCI 内存地址 100 12.5 PCI-ISA桥 100 12.6 PCI-PCI 桥 100 12.7 PCI初始化 101 12.7.1 Linux系统内核有关PCI的 数据结构 101 12.7.2 PCI 设备驱动程序 102 12.7.3 PCI BIOS 函数 105 12.7.4 PCI Fixup 105 第13章 中断和中断处理 106 13.1 中断 106 13.2 可编程中断控制器 106 13.3 初始化中断处理的数据结构 107 13.4 中断处理 108 第14章 设备驱动程序 109 14.1 硬件设备的管理 109 14.2 轮询和中断 110 14.3 直接内存存取 110 14.4 内存 111 14.5 设备驱动程序和内核之间的接口 111 14.5.1 字符设备 112 14.5.2 块设备 113 14.6 硬盘 113 14.6.1 IDE 硬盘 115 14.6.2 初始化IDE 硬盘子系统 115 14.6.3 SCSI 硬盘 115 14.6.4 初始化 SCSI 磁盘子系统 116 14.6.5 传递块设备请求 118 14.7 网络设备 118 14.7.1 网络设备文件名 118 14.7.2 总线信息 118 14.7.3 网络接口标记 119 14.7.4 协议信息 119 14.7.5 初始化网络设备 119 第15章 文件系统 121 15.1 Linux文件系统概述 121 15.2 ext2文件系统 122 15.2.1 ext2的索引节点 122 15.2.2 ext2超级块 124 15.2.3 ext2 数据块组描述符 124 15.2.4 ext2 中的目录 125 15.2.5 在ext2 文件系统中查找文件 125 15.2.6 改变ext2 文件系统中文件 的大小 126 15.3 VFS 127 15.3.1 VFS 超级块 128 15.3.2 VFS 索引节点 129 15.3.3 登记文件系统 129 15.3.4 挂接文件系统 130 15.3.5 在VFS中查找文件 131 15.3.6 撤消文件系统 131 15.3.7 VFS 索引节点缓存 132 15.3.8 VFS目录缓存 132 15.4 缓冲区缓存 133 15.5 /proc 文件系统 135 第16章 网络系统 136 16.1 TCP/IP 网络简介 136 16.2 TCP/IP网络的分层 137 16.3 BSD 套接口 138 16.4 INET套接口层 140 16.4.1 创建BSD 套接口 141 16.4.2 给INET BSD 套接口指定地址 141 16.4.3 在INET BSD套接口上创建连接 142 16.4.4 监听INET BSD 套接口 142 16.4.5 接收连接请求 143 16.5 IP 层 143 16.5.1 套接口缓冲区 143 16.5.2 接收IP数据包 144 16.5.3 发送IP数据包 144 16.5.4 数据碎片 144 16.6 地址解析协议 145 第17章 系统内核机制 147 17.1 Bottom Half处理 147 17.2 任务队列 148 17.3 计时器 149 17.4 等待队列 149 17.5 信号量 150 第四篇 Linux系统高级编程 第18章 Linux内核模块编程 151 18.1 一个简单程序Hello World 151 18.2 设备文件 152 18.3 /proc文件系统 156 18.4 使用/proc输入 158 18.5 与设备文件通信 162 18.6 启动参数 169 18.7 系统调用 170 18.8 阻塞进程 172 18.9 替换printk 177 18.10 调度任务 178 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用半双工管道时的注意事项 188 19.3 命名管道 188 19.3.1 基本概念 188 19.3.2 创建FIFO 188 19.3.3 FIFO操作 189 19.3.4 FIFO的阻塞 190 19.3.5 SIGPIPE信号 190 19.4 System V IPC 190 19.4.1 基本概念 190 19.4.2 消息队列基本概念 191 19.4.3 系统调用msgget() 194 19.4.4 系统调用msgsnd() 195 19.4.5 系统调用msgctl() 197 19.4.6 一个msgtool的实例 199 19.5 使用信号量编程 201 19.5.1 基本概念 201 19.5.2 系统调用semget() 202 19.5.3 系统调用semop() 203 19.5.4 系统调用semctl() 204 19.5.5 使用信号量集的实例:semtool 205 19.6 共享内存 209 19.6.1 基本概念 209 19.6.2 系统内部用户数据结构 shmid_ds 209 19.6.3 系统调用shmget() 210 19.6.4 系统调用shmat() 211 19.6.5 系统调用shmctl() 211 19.6.6 系统调用shmdt() 212 19.6.7 使用共享内存的实例:shmtool 212 第20章 高级线程编程 215 20.1 线程的概念和用途 215 20.2 一个简单的例子 215 20.3 线程同步 217 20.4 使用信号量协调程序 218 20.5 信号量的实现 220 20.5.1 Semaphore.h 220 20.5.2 Semaphore.c 221 第21章 Linux系统网络编程 225 21.1 什么是套接口 225 21.2 两种类型的Internet套接口 225 21.3 网络协议分层 225 21.4 数据结构 225 21.5 IP地址和如何使用IP地址 226 21.5.1 socket() 226 21.5.2 bind() 226 21.5.3 connect() 227 21.5.4 listen() 228 21.5.5 accept() 228 21.5.6 send() 和 recv() 229 21.5.7 sendto() 和 recvfrom() 230 21.5.8 close() 和 shutdown() 230 21.5.9 getpeername() 231 21.5.10 gethostname() 231 21.6 DNS 231 21.7 客户机/服务器模式 232 21.8 简单的数据流服务器程序 232 21.9 简单的数据流客户机程序 234 21.10 数据报套接口 235 21.11 阻塞 237 第22章 Linux I/O端口编程 240 22.1 如何在 C 语言下使用I/O端口 240 22.1.1 一般的方法 240 22.1.2 另一个替代方法: /dev/port 241 22.2 硬件中断 与 DMA 存取 241 22.3 高精确的时间 241 22.3.1 延迟时间 241 22.3.2 时间的量测 243 22.4 使用其他程序语言 243 22.5 一些有用的 I/O 端口 243 22.5.1 并行端口 243 22.5.2 游戏端口 244 22.5.3 串行端口 245 第五篇 Linux系统安全分析 第23章 系统管理员安全 247 23.1 安全管理 247 23.2 超级用户 247 23.3 文件系统安全 247 23.3.1 Linux文件系统概述 247 23.3.2 设备文件 248 23.3.3 /etc/mknod命令 249 23.3.4 安全考虑 249 23.3.5 find命令 250 23.3.6 secure程序 250 23.3.7 ncheck命令 250 23.3.8 安装和拆卸文件系统 250 23.3.9 系统目录和文件 251 23.4 作为root运行的程序 251 23.4.1 启动系统 251 23.4.2 init进程 251 23.4.3 进入多用户 252 23.4.4 shutdown命令 252 23.4.5 系统V的cron程序 252 23.4.6 系统V版本2之后的cron程序 252 23.4.7 /etc/profile 253 23.5 /etc/passwd文件 253 23.5.1 口令时效 253 23.5.2 UID和GID 254 23.6 /etc/group文件 254 23.7 增加、删除和移走用户 254 23.7.1 增加用户 254 23.7.2 删除用户 255 23.7.3 将用户移到另一个系统 255 23.8 安全检查 255 23.8.1 记帐 255 23.8.2 其他检查命令 256 23.8.3 安全检查程序的问题 256 23.8.4 系统泄密后怎么办 257 23.9 加限制的环境 258 23.9.1 加限制的外壳 258 23.9.2 用chroot()限制用户 258 23.10 小系统安全 259 23.11 物理安全 259 23.12 用户意识 260 23.13 系统管理员意识 261 23.13.1 保持系统管理员个人的 登录安全 261 23.13.2 保持系统安全 261 第24章 系统程序员安全 263 24.1 系统子程序 263 24.1.1 I/O子程序 263 24.1.2 进程控制 263 24.1.3 文件属性 264 24.1.4 UID和GID的处理 265 24.2 标准C程序库 265 24.2.1 标准I/O 265 24.2.2 /etc/passwd的处理 266 24.2.3 /etc/group的处理 267 24.2.4 加密子程序 268 24.2.5 运行外壳 268 24.3 编写安全的C程序 268 24.3.1 需要考虑的安全问题 268 24.3.2 SUID/SGID程序指导准则 269 24.3.3 编译、安装SUID/SGID程序 的方法 269 24.4 root用户程序的设计 270 第25章 Linux系统的网络安全 272 25.1 UUCP系统概述 272 25.1.1 UUCP命令 272 25.1.2 uux命令 272 25.1.3 uucico程序 273 25.1.4 uuxqt程序 273 25.2 UUCP的安全问题 273 25.2.1 USERFILE文件 273 25.2.2 L.cmds文件 274 25.2.3 uucp登录 274 25.2.4 uucp使用的文件和目录 274 25.3 HONEYDANBER UUCP 275 25.3.1 HONEYDANBER UUCP与 老UUCP的差别 275 25.3.2 登录名规则 276 25.3.3 MACHINE规则 277 25.3.4 组合MACHINE和LOGNAME 规则 278 25.3.5 uucheck命令 278 25.3.6 网关 278 25.3.7 登录文件检查 279 25.4 其他网络 279 25.4.1 远程作业登录 279 25.4.2 NSC网络系统 280 25.5 通信安全 280 25.5.1 物理安全 280 25.5.2 加密 281 25.5.3 用户身份鉴别 282 25.6 SUN OS系统的网络安全 283 25.6.1 确保NFS的安全 283 25.6.2 NFS安全性方面的缺陷 284 25.6.3 远程过程调用鉴别 284 25.6.4 Linux鉴别机制 284 25.6.5 DES鉴别系统 285 25.6.6 公共关键字的编码 286 25.6.7 网络实体的命名 286 25.6.8 DES鉴别系统的应用 287 25.6.9 遗留的安全问题 287 25.6.10 性能 288 25.6.11 启动和setuid程序引起的问题 288 25.6.12 小结 289 第26章 Linux系统的用户安全性 290 26.1 口令安全 290 26.2 文件许可权 290 26.3 目录许可 291 26.4 umask命令 291 26.5 设置用户ID和同组用户ID许可 291 26.6 cp mv ln和cpio命令 291 26.7 su和newgrp命令 292 26.7.1 su命令 292 26.7.2 newgrp命令 292 26.8 文件加密 292 26.9 其他安全问题 293 26.9.1 用户的.profile文件 293 26.9.2 ls -a 293 26.9.3 .exrc文件 293 26.9.4 暂存文件和目录 293 26.9.5 UUCP和其他网络 293 26.9.6 特洛伊木马 294 26.9.7 诱骗 294 26.9.8 计算机病毒 294 26.9.9 要离开自己已登录的终端 294 26.9.10 智能终端 294 26.9.11 断开与系统的连接 294 26.9.12 cu命令 295 26.10 保持帐户安全的要点 295 第六篇 X window系统的内部结构和使用 第27章 X Window系统的基本知识 297 27.1 X Window系统介绍 297 27.1.1 X的特点 297 27.1.2 什么是窗口系统 298 27.1.3 X发展的历史 299 27.1.4 X的产品 299 27.1.5 MIT发行的X 299 27.2 X的基本结构 302 27.2.1 X 的基本元素 303 27.2.2 服务程序和客户程序如何 交互通信 304 27.2.3 X 的网络概况 306 27.3 从用户界面的角度概观X 307 27.3.1 管理界面:窗口管理器 307 27.3.2 应用程序界面和工具箱 309 27.3.3 其他系统角度 309 27.4 术语和符号 310 27.4.1 术语 310 27.4.2 符号 311 27.5 启动和关闭X 312 27.5.1 启动X 312 27.5.2 执行X程序的方式 313 27.5.3 关闭X 314 27.6 窗口管理器基础—uwm 315 27.6.1 什么是窗口管理器 315 27.6.2 启动uwm 315 27.6.3 基本窗口操作 —uwm 的菜单 315 27.6.4 移动窗口 316 27.6.5 重定窗口大小 316 27.6.6 建立新窗口 316 27.6.7 管理屏幕空间 318 27.6.8 中止应用程序窗口 320 27.6.9 激活uwm菜单的其他方式 320 27.7 使用 x的网络设备 320 27.7.1 指定远程终端机—display 选项 321 27.7.2 实际使用远程的显示器 322 27.7.3 控制存取显示器—xhost 322 27.8 终端机模拟器—详细介绍xterm 323 27.8.1 选择xterm功能—菜单与 命令行选项 323 27.8.2 滚动xterm屏幕 324 27.8.3 记录与终端机的交互过程—写 记录 325 27.8.4 剪贴文本 325 27.8.5 使用Tektronix模拟功能 326 27.8.6 使用不同的字体 327 27.8.7 使用颜色 327 27.8.8 其他xterm选项 327 27.8.9 设定终端机键盘 328 第28章 实用程序和工具 329 28.1 实用程序 329 28.2 保存、显示和打印屏幕图像 330 28.3 使用X的应用程序 332 28.3.1 文字编辑器—Xedit 333 28.3.2 邮件/信息处理系统—xmh 336 28.4 示例和游戏程序 336 28.4.1 找出通过随机迷宫的 路径—maze 336 28.4.2 担任鼠标指针的大眼睛— xeyes 336 28.4.3 智慧盘游戏—puzzle 337 28.4.4 打印一个大X标志—xlogo 337 28.4.5 跳动的多面体—ico 337 28.4.6 动态几何图案—muncher与 plaid 337 28.7 显示信息和状态的程序 337 28.7.1 列出X服务程序的特征— xdpyinfo 338 28.7.2 获取有关窗口的信息 338 28.7.3 观察X的事件—xev 340 第29章 定制X Window系统 341 29.1 使用X的字体和颜色 341 29.1.1 字体初步 341 29.1.2 字体命名 342 29.1.3 观察特定字体的内容—xfd 343 29.1.4 保存字体和位置 343 29.1.5 例子:在你的服务程序中 增加新字体 345 29.1.6 使用X的颜色 346 29.2 定义和使用图形 347 29.2.1 系统图形程序库 347 29.2.2 交互编辑图形—bitmap 347 29.2.3 编辑图形的其他方法 349 29.2.4 定制根窗口—xsetroot 349 29.3 定义应用程序的缺省选项— Resources 350 29.3.1 什么是资源 350 29.3.2 XToolkit 351 29.3.3 管理资源—资源管理器 353 29.3.4 资源的类型—如何指定值 358 29.4 实际使用资源 359 29.4.1 在何处保存资源的缺省值 359 29.4.2 在服务程序上保存缺省值— xrdb 363 29.4.3 常见的错误和修正 366 29.5 定制键盘和鼠标 367 29.5.1 实际使用转换 368 29.5.2 转换—格式和规则 374 29.5.3 转换规范中常见的问题 377 29.6 键盘和鼠标—对应和参数 379 29.6.1 键盘和鼠标映射—xmodmap 379 29.6.2 键盘和鼠标参数设定—xset 382 29.7 进一步介绍和定制uwm 384 29.7.1 uwm的新特征 384 29.7.2 定制uwm 386 29.8 显示器管理器—xdm 390 29.8.1 需要做些什么 390 29.8.2 xdm 391 29.8.3 xdm的更多信息 392 29.8.4 uwm配置 395 附录A Gcc使用介绍 396 附录B 安装X Window窗口系统 410
4.15MB
Linux系统分析part2
2008-10-29目 录 前言 第一篇 Linux系统介绍 第1章 Linux简介 …1 1.1 Linux 的起源 1 1.2 自由软件基金会的GNU计划 1 1.3 Linux 的发音 2 1.4 Linux 的特点 2 1.5 基本硬件要求 3 1.6 如何获得Linux 3 1.6.1 从网上下载Linux 3 1.6.2 从光盘获得Linux 3 1.7 涉及Linux 的Web 网址和新闻讨论组 6 1.8 Linux 的不足之处 7 第2章 外壳及常用命令 8 2.1 登录和退出 8 2.2 Linux 系统的外壳 8 2.3 外壳的常用命令 9 2.3.1 更改帐号密码 9 2.3.2 联机帮助 9 2.3.3 远程登录 9 2.3.4 文件或目录处理 9 2.3.5 改变工作目录 10 2.3.6 复制文件 10 2.3.7 移动或更改文件、目录名称 10 2.3.8 建立新目录 10 2.3.9 删除目录 11 2.3.10 删除文件 11 2.3.11 列出当前所在的目录位置 11 2.3.12 查看文件内容 11 2.3.13 分页查看文件内容 11 2.3.14 查看目录所占磁盘容量 11 2.3.15 文件传输 11 2.3.16 文件权限的设定 12 2.3.17 检查自己所属的工作组名称 13 2.3.18 改变文件或目录工作组所有权 13 2.3.19 改变文件或目录的最后修改时间 13 2.3.20 文件的链接 13 2.3.21 文件中字符串的查寻 14 2.3.22 查寻文件或命令的路径 14 2.3.23 比较文件或目录的内容 14 2.3.24 文件打印输出 14 2.3.25 一般文件的打印 14 2.3.26 troff 文件的打印 14 2.3.27 打印机控制命令 14 2.3.28 进程控制 15 2.3.29 外壳变量 16 2.3.30 环境变量 16 2.3.31 别名 16 2.3.32 历史命令 17 2.3.33 文件的压缩 17 2.3.34 管道命令的使用 17 2.3.35 输入/输出控制 18 2.3.36 查看系统中的用户 18 2.3.37 改变用户名 18 2.3.38 查看用户名 18 2.3.39 查看当前系统上所有工作站 的用户 19 2.3.40 与某工作站上的用户交谈 19 2.3.41 检查远程系统是否正常 19 2.3.42 电子邮件的使用简介 19 第3章 Linux系统的网络功能 21 3.1 Linux支持的网络协议 21 3.1.1 TCP/IP 21 3.1.2 TCP/IP 版本 6 21 3.1.3 IPX/SPX 21 3.1.4 AppleTalk 协议集 21 3.1.5 广域网 22 3.1.6 ISDN 22 3.1.7 PPP、SLIP及PLIP 22 3.1.8 业余无线电 22 3.1.9 ATM 22 3.2 Linux系统下的文件共享和打印共享 22 3.2.1 Machintosh 环境 22 3.2.2 Windows 环境 22 3.2.3 Novell 环境 23 3.2.4 UNIX 环境 23 3.3 Linux系统中的Internet/Intranet功能 23 3.3.1 邮件 23 3.3.2 Web 服务器 24 3.3.3 Web 浏览器 24 3.3.4 FTP 服务器和客户机 24 3.3.5 新闻服务 24 3.3.6 域名系统 24 3.3.7 DHCP和 bootp 24 3.3.8 NIS 24 3.4 Linux系统下应用程序的远程执行 24 3.4.1 Telnet 25 3.4.2 远程命令 25 3.4.3 X Window 25 3.5 Linux系统的网络互连功能 25 3.5.1 路由器 25 3.5.2 网桥 25 3.5.3 IP伪装 25 3.5.4 IP统计 26 3.5.5 IP 别名 26 3.5.6 流量限制器 26 3.5.7 防火墙 26 3.5.8 端口下传 26 3.5.9 负载平衡 26 3.5.10 EQL 27 3.5.11 代理服务器 27 3.5.12 按需拨号 27 3.5.13 管道、移动IP和虚拟个人网络 27 3.6 Linux系统中的网络管理 27 3.6.1 Linux系统下的网络管理应用程序 27 3.6.2 SNMP 28 3.7 企业级Linux网络 28 3.7.1 高可用性 28 3.7.2 RAID 28 3.7.3 冗余网络 28 第4章 Linux系统管理简介 29 4.1 root 帐号 29 4.2 启动和关闭系统 29 4.2.1 从软盘启动 29 4.2.2 使用LILO 启动 29 4.2.3 关闭Linux系统 30 4.3 挂接文件系统 30 4.3.1 挂接软盘 30 4.3.2 创建新的文件系统 30 4.3.3 卸载文件系统 31 4.4 检查文件系统 31 4.5 使用文件作为交换区 31 4.6 系统和文件的备份 32 4.7 设置系统 33 4.7.1 设置系统名 33 4.7.2 使用维护磁盘 33 4.7.3 重新设置root 帐号口令 33 4.7.4 设置登录信息 33 第二篇 Linux高级语言及管理编程 第5章 外壳编程 35 5.1 创建和运行外壳程序 35 5.1.1 创建外壳程序 35 5.1.2 运行外壳程序 35 5.2 使用外壳变量 36 5.2.1 给变量赋值 36 5.2.2 读取变量的值 37 5.2.3 位置变量和其他系统变量 37 5.2.4 引号的作用 37 5.3 数值运算命令 38 5.4 条件表达式 40 5.4.1 if 表达式 40 5.4.2 case 表达式 41 5.5 循环语句 42 5.5.1 for 语句 43 5.5.2 while 语句 43 5.5.3 until 语句 44 5.6 shift 命令 44 5.7 select 语句 45 5.8 repeat 语句 46 5.9 子函数 46 第6章 gawk语言编程 48 6.1 gawk的主要功能 48 6.2 如何执行gawk程序 48 6.3 文件、记录和字段 48 6.4 模式和动作 49 6.5 比较运算和数值运算 50 6.6 内部函数 50 6.6.1 随机数和数学函数 51 6.6.2 字符串的内部函数 51 6.6.3 输入输出的内部函数 52 6.7 字符串和数字 52 6.8 格式化输出 52 6.9 改变字段分隔符 54 6.10 元字符 54 6.11 调用gawk程序 55 6.12 BEGIN和END 55 6.13 变量 56 6.14 内置变量 56 6.15 控制结构 57 6.15.1 if 表达式 57 6.15.2 while 循环 57 6.15.3 for 循环 58 6.15.4 next 和 exit 58 6.16 数组 58 6.17 用户自定义函数 58 6.18 几个实例 59 第7章 Perl语言编程 60 7.1 什么是Perl 60 7.2 Perl的现状 60 7.3 初试Perl 60 7.4 Perl变量 60 7.4.1 标量 60 7.4.2 数组 63 7.4.3 相关数组 65 7.5 文件句柄和文件操作 65 7.6 循环结构 66 7.6.1 foreach循环 66 7.6.2 判断运算 66 7.6.3 for循环 67 7.6.4 while 和 until循环 67 7.7 条件结构 67 7.8 字符匹配 68 7.9 替换和翻译 69 7.9.1 替换 69 7.9.2 翻译 70 7.10 子过程 70 7.10.1 子过程的定义 70 7.10.2 参数 70 7.10.3 返回值 70 7.11 Perl程序的完整例子 71 第三篇 Linux系统内核分析 第8章 Linux内核简介 73 8.1 系统初始化 73 8.2 系统运行 73 8.3 内核提供的各种系统调用 74 8.3.1 进程的基本概念和系统 的基本数据结构 74 8.3.2 创建和撤消进程 74 8.3.3 执行程序 74 8.4 存取文件系统 75 第9章 系统进程 76 9.1 什么是进程 76 9.2 进程的结构 76 9.3 进程调度 78 9.4 进程使用的文件 79 9.5 进程使用的虚拟内存 80 9.6 创建进程 81 9.7 进程的时间和计时器 81 9.7.1 实时时钟 81 9.7.2 虚拟时钟 81 9.7.3 形象时钟 81 9.8 程序的执行 82 9.8.1 ELF文件 82 9.8.2 脚本文件 82 第10章 内存管理 83 10.1 内存管理的作用 83 10.2 虚拟内存的抽象模型 83 10.3 按需装入页面 84 10.4 交换 85 10.5 共享虚拟内存 85 10.6 存取控制 85 10.7 高速缓存 86 10.7.1 缓冲区高速缓存 86 10.7.2 页面高速缓存 86 10.7.3 交换高速缓存 86 10.7.4 硬件高速缓存 86 10.8 系统页面表 86 10.9 页面的分配和释放 87 10.9.1 页面的分配 88 10.9.2 页面的释放 88 10.10 内存映射 88 10.11 请求调页 89 10.12 页面高速缓存 89 10.13 内核交换守护进程 90 第11章 进程间通信 91 11.1 信号机制 91 11.2 管道机制 92 11.3 System V IPC 机制 93 11.3.1 信息队列 93 11.3.2 信号量 94 11.3.3 共享内存 96 第12章 PCI 98 12.1 PCI 系统 98 12.2 PCI地址空间 98 12.3 PCI设置头 99 12.4 PCI I/O 和 PCI 内存地址 100 12.5 PCI-ISA桥 100 12.6 PCI-PCI 桥 100 12.7 PCI初始化 101 12.7.1 Linux系统内核有关PCI的 数据结构 101 12.7.2 PCI 设备驱动程序 102 12.7.3 PCI BIOS 函数 105 12.7.4 PCI Fixup 105 第13章 中断和中断处理 106 13.1 中断 106 13.2 可编程中断控制器 106 13.3 初始化中断处理的数据结构 107 13.4 中断处理 108 第14章 设备驱动程序 109 14.1 硬件设备的管理 109 14.2 轮询和中断 110 14.3 直接内存存取 110 14.4 内存 111 14.5 设备驱动程序和内核之间的接口 111 14.5.1 字符设备 112 14.5.2 块设备 113 14.6 硬盘 113 14.6.1 IDE 硬盘 115 14.6.2 初始化IDE 硬盘子系统 115 14.6.3 SCSI 硬盘 115 14.6.4 初始化 SCSI 磁盘子系统 116 14.6.5 传递块设备请求 118 14.7 网络设备 118 14.7.1 网络设备文件名 118 14.7.2 总线信息 118 14.7.3 网络接口标记 119 14.7.4 协议信息 119 14.7.5 初始化网络设备 119 第15章 文件系统 121 15.1 Linux文件系统概述 121 15.2 ext2文件系统 122 15.2.1 ext2的索引节点 122 15.2.2 ext2超级块 124 15.2.3 ext2 数据块组描述符 124 15.2.4 ext2 中的目录 125 15.2.5 在ext2 文件系统中查找文件 125 15.2.6 改变ext2 文件系统中文件 的大小 126 15.3 VFS 127 15.3.1 VFS 超级块 128 15.3.2 VFS 索引节点 129 15.3.3 登记文件系统 129 15.3.4 挂接文件系统 130 15.3.5 在VFS中查找文件 131 15.3.6 撤消文件系统 131 15.3.7 VFS 索引节点缓存 132 15.3.8 VFS目录缓存 132 15.4 缓冲区缓存 133 15.5 /proc 文件系统 135 第16章 网络系统 136 16.1 TCP/IP 网络简介 136 16.2 TCP/IP网络的分层 137 16.3 BSD 套接口 138 16.4 INET套接口层 140 16.4.1 创建BSD 套接口 141 16.4.2 给INET BSD 套接口指定地址 141 16.4.3 在INET BSD套接口上创建连接 142 16.4.4 监听INET BSD 套接口 142 16.4.5 接收连接请求 143 16.5 IP 层 143 16.5.1 套接口缓冲区 143 16.5.2 接收IP数据包 144 16.5.3 发送IP数据包 144 16.5.4 数据碎片 144 16.6 地址解析协议 145 第17章 系统内核机制 147 17.1 Bottom Half处理 147 17.2 任务队列 148 17.3 计时器 149 17.4 等待队列 149 17.5 信号量 150 第四篇 Linux系统高级编程 第18章 Linux内核模块编程 151 18.1 一个简单程序Hello World 151 18.2 设备文件 152 18.3 /proc文件系统 156 18.4 使用/proc输入 158 18.5 与设备文件通信 162 18.6 启动参数 169 18.7 系统调用 170 18.8 阻塞进程 172 18.9 替换printk 177 18.10 调度任务 178 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用半双工管道时的注意事项 188 19.3 命名管道 188 19.3.1 基本概念 188 19.3.2 创建FIFO 188 19.3.3 FIFO操作 189 19.3.4 FIFO的阻塞 190 19.3.5 SIGPIPE信号 190 19.4 System V IPC 190 19.4.1 基本概念 190 19.4.2 消息队列基本概念 191 19.4.3 系统调用msgget() 194 19.4.4 系统调用msgsnd() 195 19.4.5 系统调用msgctl() 197 19.4.6 一个msgtool的实例 199 19.5 使用信号量编程 201 19.5.1 基本概念 201 19.5.2 系统调用semget() 202 19.5.3 系统调用semop() 203 19.5.4 系统调用semctl() 204 19.5.5 使用信号量集的实例:semtool 205 19.6 共享内存 209 19.6.1 基本概念 209 19.6.2 系统内部用户数据结构 shmid_ds 209 19.6.3 系统调用shmget() 210 19.6.4 系统调用shmat() 211 19.6.5 系统调用shmctl() 211 19.6.6 系统调用shmdt() 212 19.6.7 使用共享内存的实例:shmtool 212 第20章 高级线程编程 215 20.1 线程的概念和用途 215 20.2 一个简单的例子 215 20.3 线程同步 217 20.4 使用信号量协调程序 218 20.5 信号量的实现 220 20.5.1 Semaphore.h 220 20.5.2 Semaphore.c 221 第21章 Linux系统网络编程 225 21.1 什么是套接口 225 21.2 两种类型的Internet套接口 225 21.3 网络协议分层 225 21.4 数据结构 225 21.5 IP地址和如何使用IP地址 226 21.5.1 socket() 226 21.5.2 bind() 226 21.5.3 connect() 227 21.5.4 listen() 228 21.5.5 accept() 228 21.5.6 send() 和 recv() 229 21.5.7 sendto() 和 recvfrom() 230 21.5.8 close() 和 shutdown() 230 21.5.9 getpeername() 231 21.5.10 gethostname() 231 21.6 DNS 231 21.7 客户机/服务器模式 232 21.8 简单的数据流服务器程序 232 21.9 简单的数据流客户机程序 234 21.10 数据报套接口 235 21.11 阻塞 237 第22章 Linux I/O端口编程 240 22.1 如何在 C 语言下使用I/O端口 240 22.1.1 一般的方法 240 22.1.2 另一个替代方法: /dev/port 241 22.2 硬件中断 与 DMA 存取 241 22.3 高精确的时间 241 22.3.1 延迟时间 241 22.3.2 时间的量测 243 22.4 使用其他程序语言 243 22.5 一些有用的 I/O 端口 243 22.5.1 并行端口 243 22.5.2 游戏端口 244 22.5.3 串行端口 245 第五篇 Linux系统安全分析 第23章 系统管理员安全 247 23.1 安全管理 247 23.2 超级用户 247 23.3 文件系统安全 247 23.3.1 Linux文件系统概述 247 23.3.2 设备文件 248 23.3.3 /etc/mknod命令 249 23.3.4 安全考虑 249 23.3.5 find命令 250 23.3.6 secure程序 250 23.3.7 ncheck命令 250 23.3.8 安装和拆卸文件系统 250 23.3.9 系统目录和文件 251 23.4 作为root运行的程序 251 23.4.1 启动系统 251 23.4.2 init进程 251 23.4.3 进入多用户 252 23.4.4 shutdown命令 252 23.4.5 系统V的cron程序 252 23.4.6 系统V版本2之后的cron程序 252 23.4.7 /etc/profile 253 23.5 /etc/passwd文件 253 23.5.1 口令时效 253 23.5.2 UID和GID 254 23.6 /etc/group文件 254 23.7 增加、删除和移走用户 254 23.7.1 增加用户 254 23.7.2 删除用户 255 23.7.3 将用户移到另一个系统 255 23.8 安全检查 255 23.8.1 记帐 255 23.8.2 其他检查命令 256 23.8.3 安全检查程序的问题 256 23.8.4 系统泄密后怎么办 257 23.9 加限制的环境 258 23.9.1 加限制的外壳 258 23.9.2 用chroot()限制用户 258 23.10 小系统安全 259 23.11 物理安全 259 23.12 用户意识 260 23.13 系统管理员意识 261 23.13.1 保持系统管理员个人的 登录安全 261 23.13.2 保持系统安全 261 第24章 系统程序员安全 263 24.1 系统子程序 263 24.1.1 I/O子程序 263 24.1.2 进程控制 263 24.1.3 文件属性 264 24.1.4 UID和GID的处理 265 24.2 标准C程序库 265 24.2.1 标准I/O 265 24.2.2 /etc/passwd的处理 266 24.2.3 /etc/group的处理 267 24.2.4 加密子程序 268 24.2.5 运行外壳 268 24.3 编写安全的C程序 268 24.3.1 需要考虑的安全问题 268 24.3.2 SUID/SGID程序指导准则 269 24.3.3 编译、安装SUID/SGID程序 的方法 269 24.4 root用户程序的设计 270 第25章 Linux系统的网络安全 272 25.1 UUCP系统概述 272 25.1.1 UUCP命令 272 25.1.2 uux命令 272 25.1.3 uucico程序 273 25.1.4 uuxqt程序 273 25.2 UUCP的安全问题 273 25.2.1 USERFILE文件 273 25.2.2 L.cmds文件 274 25.2.3 uucp登录 274 25.2.4 uucp使用的文件和目录 274 25.3 HONEYDANBER UUCP 275 25.3.1 HONEYDANBER UUCP与 老UUCP的差别 275 25.3.2 登录名规则 276 25.3.3 MACHINE规则 277 25.3.4 组合MACHINE和LOGNAME 规则 278 25.3.5 uucheck命令 278 25.3.6 网关 278 25.3.7 登录文件检查 279 25.4 其他网络 279 25.4.1 远程作业登录 279 25.4.2 NSC网络系统 280 25.5 通信安全 280 25.5.1 物理安全 280 25.5.2 加密 281 25.5.3 用户身份鉴别 282 25.6 SUN OS系统的网络安全 283 25.6.1 确保NFS的安全 283 25.6.2 NFS安全性方面的缺陷 284 25.6.3 远程过程调用鉴别 284 25.6.4 Linux鉴别机制 284 25.6.5 DES鉴别系统 285 25.6.6 公共关键字的编码 286 25.6.7 网络实体的命名 286 25.6.8 DES鉴别系统的应用 287 25.6.9 遗留的安全问题 287 25.6.10 性能 288 25.6.11 启动和setuid程序引起的问题 288 25.6.12 小结 289 第26章 Linux系统的用户安全性 290 26.1 口令安全 290 26.2 文件许可权 290 26.3 目录许可 291 26.4 umask命令 291 26.5 设置用户ID和同组用户ID许可 291 26.6 cp mv ln和cpio命令 291 26.7 su和newgrp命令 292 26.7.1 su命令 292 26.7.2 newgrp命令 292 26.8 文件加密 292 26.9 其他安全问题 293 26.9.1 用户的.profile文件 293 26.9.2 ls -a 293 26.9.3 .exrc文件 293 26.9.4 暂存文件和目录 293 26.9.5 UUCP和其他网络 293 26.9.6 特洛伊木马 294 26.9.7 诱骗 294 26.9.8 计算机病毒 294 26.9.9 要离开自己已登录的终端 294 26.9.10 智能终端 294 26.9.11 断开与系统的连接 294 26.9.12 cu命令 295 26.10 保持帐户安全的要点 295 第六篇 X window系统的内部结构和使用 第27章 X Window系统的基本知识 297 27.1 X Window系统介绍 297 27.1.1 X的特点 297 27.1.2 什么是窗口系统 298 27.1.3 X发展的历史 299 27.1.4 X的产品 299 27.1.5 MIT发行的X 299 27.2 X的基本结构 302 27.2.1 X 的基本元素 303 27.2.2 服务程序和客户程序如何 交互通信 304 27.2.3 X 的网络概况 306 27.3 从用户界面的角度概观X 307 27.3.1 管理界面:窗口管理器 307 27.3.2 应用程序界面和工具箱 309 27.3.3 其他系统角度 309 27.4 术语和符号 310 27.4.1 术语 310 27.4.2 符号 311 27.5 启动和关闭X 312 27.5.1 启动X 312 27.5.2 执行X程序的方式 313 27.5.3 关闭X 314 27.6 窗口管理器基础—uwm 315 27.6.1 什么是窗口管理器 315 27.6.2 启动uwm 315 27.6.3 基本窗口操作 —uwm 的菜单 315 27.6.4 移动窗口 316 27.6.5 重定窗口大小 316 27.6.6 建立新窗口 316 27.6.7 管理屏幕空间 318 27.6.8 中止应用程序窗口 320 27.6.9 激活uwm菜单的其他方式 320 27.7 使用 x的网络设备 320 27.7.1 指定远程终端机—display 选项 321 27.7.2 实际使用远程的显示器 322 27.7.3 控制存取显示器—xhost 322 27.8 终端机模拟器—详细介绍xterm 323 27.8.1 选择xterm功能—菜单与 命令行选项 323 27.8.2 滚动xterm屏幕 324 27.8.3 记录与终端机的交互过程—写 记录 325 27.8.4 剪贴文本 325 27.8.5 使用Tektronix模拟功能 326 27.8.6 使用不同的字体 327 27.8.7 使用颜色 327 27.8.8 其他xterm选项 327 27.8.9 设定终端机键盘 328 第28章 实用程序和工具 329 28.1 实用程序 329 28.2 保存、显示和打印屏幕图像 330 28.3 使用X的应用程序 332 28.3.1 文字编辑器—Xedit 333 28.3.2 邮件/信息处理系统—xmh 336 28.4 示例和游戏程序 336 28.4.1 找出通过随机迷宫的 路径—maze 336 28.4.2 担任鼠标指针的大眼睛— xeyes 336 28.4.3 智慧盘游戏—puzzle 337 28.4.4 打印一个大X标志—xlogo 337 28.4.5 跳动的多面体—ico 337 28.4.6 动态几何图案—muncher与 plaid 337 28.7 显示信息和状态的程序 337 28.7.1 列出X服务程序的特征— xdpyinfo 338 28.7.2 获取有关窗口的信息 338 28.7.3 观察X的事件—xev 340 第29章 定制X Window系统 341 29.1 使用X的字体和颜色 341 29.1.1 字体初步 341 29.1.2 字体命名 342 29.1.3 观察特定字体的内容—xfd 343 29.1.4 保存字体和位置 343 29.1.5 例子:在你的服务程序中 增加新字体 345 29.1.6 使用X的颜色 346 29.2 定义和使用图形 347 29.2.1 系统图形程序库 347 29.2.2 交互编辑图形—bitmap 347 29.2.3 编辑图形的其他方法 349 29.2.4 定制根窗口—xsetroot 349 29.3 定义应用程序的缺省选项— Resources 350 29.3.1 什么是资源 350 29.3.2 XToolkit 351 29.3.3 管理资源—资源管理器 353 29.3.4 资源的类型—如何指定值 358 29.4 实际使用资源 359 29.4.1 在何处保存资源的缺省值 359 29.4.2 在服务程序上保存缺省值— xrdb 363 29.4.3 常见的错误和修正 366 29.5 定制键盘和鼠标 367 29.5.1 实际使用转换 368 29.5.2 转换—格式和规则 374 29.5.3 转换规范中常见的问题 377 29.6 键盘和鼠标—对应和参数 379 29.6.1 键盘和鼠标映射—xmodmap 379 29.6.2 键盘和鼠标参数设定—xset 382 29.7 进一步介绍和定制uwm 384 29.7.1 uwm的新特征 384 29.7.2 定制uwm 386 29.8 显示器管理器—xdm 390 29.8.1 需要做些什么 390 29.8.2 xdm 391 29.8.3 xdm的更多信息 392 29.8.4 uwm配置 395 附录A Gcc使用介绍 396 附录B 安装X Window窗口系统 410
-
下载
bianmayima.m
bianmayima.m
-
下载
Java精品源码项目第44期医院药品管理系统.zip
Java精品源码项目第44期医院药品管理系统.zip
-
下载
PIXHAWK2.4.8原理图.pdf
PIXHAWK2.4.8原理图.pdf
-
下载
有源晶振EMC设计标准电路.pdf
有源晶振EMC设计标准电路.pdf
-
下载
labview调试EXE程序.pdf
labview调试EXE程序.pdf
-
下载
日期对应天数问题(C语言搬运工)
日期对应天数问题(C语言搬运工)
-
下载
wow_helper.exe
wow_helper.exe
-
下载
Java精品项目源码第49期企业人事管理系统.zip
Java精品项目源码第49期企业人事管理系统.zip
-
下载
无源晶振EMC设计标准电路.pdf
无源晶振EMC设计标准电路.pdf
-
下载
EMC和EMI测试实践经验之谈.pdf
EMC和EMI测试实践经验之谈.pdf
