首页 >> szping11>> 9i中文版入门与提高资源CSDN下载
img
Oracle 9i中文版入门与提高

Oracle 9i中文版入门与提高,新手入门很快提高。

img
oracle 9i中文版入门与提高

oracle 9i中文版入门与提高 下载特定的阅读器--超星阅读器才能看

img
Oracle 9i中文版入门与提高.pdf

Oracle 9i中文版入门与提高 是我收藏了很久的。 比较适用。

img
Oracle 9i中文版入门与提高.part3.rar

Oracle 9i中文版入门与提高第三部分

img
Oracle 9i中文版入门与提高.part2.rar

Oracle 9i中文版入门与提高第二部分

img
Oracle 9i中文版入门与提高.part4.rar

Oracle 9i中文版入门与提高第4部分

img
Oracle 9i中文版入门与提高.part1.rar

Oracle 9i中文版入门与提高,pdg格式,含数字证书在里面,讲得很全面.因为有30多M,所以分为5个部分上传,只有第1部分需要资源分,快来下吧

img
Oracle 9i中文版入门与提高.part5.rar

Oracle i中文版入门与提高第5部分,pdg格式,含数字证书在里面,讲得很全面.因为有30多M,所以分为5个部分上传,只有第1部分需要资源分,快来下吧

img
Oracle9i入门与提高(中文版)

附件为一整体PDF书籍,此书籍是本人从网上下载整理的,看后受益无穷,在此为大家共享学习。版权归原作所有。

img
Java 2从入门到精通 中文pdf扫描

这是一本全面介绍Java 2编程语言的综合性书籍。 全书共分三大部分。第一部分:Java基础,介绍Java的历史、语言和编程环境。第二部分:应用标准Java类,介绍Java库(软件包)的内涵。主要内容涉及Java的基本动画功能,2D功能,窗口软件包,与用户交互的不同对象,通过事件处理完成交互操作,应用程序间传输信息的机制,Java中处理集合的数据结构支持类,通过Java的流进行I/O编程等。第三部分:高级课题,是为需要更多地了解Java、希望把Java程序提到新的高度的读者编写的。 本书适合于想学习、掌握和提高Java编程方法和技巧的各级技术人员。 欢迎使用《Java 2从入门到精通》第一版,这是一本介绍Java编程语言的综合性书籍。通过学习本书中的基础知识直到中级、高级课题,可帮助你成为高水平的Java编程人员。    导游图    本书适合你吗?尽管本书是按一定逻辑顺序编写的,但大多数读者不会拿起来顺序从封面看到封底。根据你的特定背景,可以按下面介绍找到最适合你的个人需要的阅读方法。    对非C/C++编程人员    如果你不熟悉Java和C/C++风格的编程,则需要阅读全文。有些概念与其他语言相似,但为了掌握Java工作的方法,需要阅读全文。为了充分掌握提出的概念,应当亲自做每一个例子。每一节之间可能要停几个小时或几天,以便消化吸收前面的内容。    对C/C++编程人员    由于C/C++与Java的相似性,C/C++编程人员可以快速翻过本书的部分章节。C编程人员可以跳过第4章、第6章的大部分,而C++编程员还可以跳过第3章、第5章关于类的部分以及第7章(如果参与过异常处理)。尽管这些章节值得温习,但并不需要象对待书中其它部分那样仔细琢磨。    对Java编程人员    如果你自己用过Java,想找一本书来帮助提高,第一部分的大部分可能都是复习。扫过一遍看看有什么过去遗漏的东西,特别注意第7章和第8章,分别介绍异常处理和多线程。如果你不熟悉Java1.1,请一定要看看第5章内部类的介绍;如果不熟悉Java 2,请一定要看看第8章线程局部变量部分。    对所有读者    一旦有所了解,可以用目录表寻找最让你感兴趣的部分。第 10章和第11章一起介绍Java动画和图形编程。第12章至第15章是放在一起的,它们涉及建立和使用Java窗体,有些人也许觉得先看第13章再看第12章更自然。如果你对网络编程(第20章)有较大兴趣,首先要了解I/O(第19章),因为它是建立在输入和输出流(stream)之上的。了解网络对了解第23章的小服务程序有帮助,了解序列化(第19章)对了解第25章的RMI有帮助。其它章节可以按任何顺序阅读。    每一章提供的例子帮助解释概念,复习程序提供对专题的更好理解。所有源程序代码都在本书选配光盘上,所以不必输入例子。    本书的特点和结构    本书的目的很简单:让你尽快有效地使用Java。本书内容丰富,目录和索引能帮你找到感兴趣的内容。下面简要介绍本书的内容及所在章节。    第一部分:Java基础    本书第一部分介绍Java的历史、语言和编程概念。第1章介绍什么是Java,Java的由来;第2章开始使用Java开发环境;第3章介绍面向对象的编程基础;第4章介绍Java语言的语法;第5章通过学习类、接口和软件包开始建立Java的概念;第6章介绍Java如何处理数组和流控制语句;第7章介绍的Java的异常处理机制;最后,第8章介绍如何在Java中建立多线程程序。    第二部分:应用标准Java类    下一部分挖掘Java库(用Java的话来说就是软件包)的内涵。第9章简单概述不同Java软件包及其零件;第10章介绍Java的基本动画功能;第11章介绍更高级的2D功能;第12章介绍窗口软件包,介绍如何在屏幕上定位对象;第13章介绍与用户交互作用的不同对象;第14是介绍通过事件处理完成交互操作;第15章概述用户可以交互的更高级对象;第16章介绍应用程序间传输信息的机制;第17章介绍Java中处理集会的数据结构支持类;第18章将前面四章的技术组合到一起介绍高级编程技术;第19章介绍通过Java的流进行I/O编程;最后,第20章   介绍如何使程序变成Internet实用知识。    第三部分:高级主题 .   第三部分是为需要更多地了解Java、希望把Java程序提到新的高度的读者编写的。    第21章介绍访问SQL数据库的Java数据库互联(JDBC);第22章讨论JavaBeans API及其如何扩大软件开发预算。第23章介绍Java Web服务器并通过小服务程序扩展Web服务器;第24章描述Java安全机制如何保护敏感操作;第25章阐述在异构Java环境中分布式计算的远程方法调用(RMI);最后,第26章介绍异构计算环境中进行分布式计算的Java和CORBA联机    在本书的Web站点http://www.sybex.com/cgi-bin/rd_bookpg.pl?2180back.html中,有补充的材料。这个站点提供了其它Web站点的链接,可以下载第三方工具的演示版本。此外,词汇表提供了与Java编程有关术语的定义。Sun公司还在http://java.sun.com/products/jdk/2/docs/api/deprecated-list.html提供了作废API清单,包含Java 2库中作废的类和方法清单。 Java 1.1发布时,Sun认为旧的方法名不够好,许多方法都已更名,采用不同的设计模式。到了Java 2,作废的就更多了。作废API清单提供了新旧名称对照。尽管目前可以继续使用旧名称,但编译器会产生警告消息。 目录 第一部分 java基础 第1章 java简介 java简史 java与web java结构 java与其它工具一起使用 java 1.1的新特性 java 2的新特性 小结 第2章 小程序、应用程序与java开发工具库 小程序与应用程序 java开发工具(jdk) 用jdk建立应用程序 用jdk建立小程序 用java运行环境(jre)发布应用程序 jdk 2中的新东西 小结 第3章 使用java对象 面向对象编程简介 构造器和结束器 .小结 第4章 数据类型、修饰符和表达式 使用java语法 java固有数据类型 范围规则 java的内部类 java的数据类型和函数修饰符(modifiers) 小结 第5章 java类、接口和包 数据类型的强制类型转换 对成员和构造器引用使用this和super 对象内存模型 java接口 java包(packages) 小结 第6章 数组与流程控制语句 数组 流控制语句概述 一个例子:日最高温度 小结 第7章 异常处理 异常处理概述 异常处理的结构 生成自己的异常类 举例:年龄异常 小结 第8章 线程与多线程 多线程简介 线程基础 高级多线程 小结 第二部分 采用标准java类 第9章 标准java包 java包与类层次结构 java.lang包--主要语言支持 java.util包--实用语言支持 java.io包--文件与流i/o服务 java.awt包--层次结构的核心 com.sun.java.swing包 java.net包--internet、web与html支持 java.applet包--html嵌入小程序 其它java包 小结 第10章 动画与图象 java基本绘图工具 动画基础 图形处理 小结 第11章 二维图形与图象 图形处理 文本处理 图象处理 图形设备挂钩 颜色管理 小结 第12章 gui布局管理器 java的gui方法 awt环境:小程序和应用程序 用布局管理器设计java gui 布局管理器内幕:接口布局管理器 小结 第13章 swing gui组件 awt gui类的上级类: component gui类的swing上级类 在gui中加进组件 使用菜单系统组件 小结 第14章 事件处理 事件处理编程 java事件委托模型 java事件类型 小结 第15章 高级swing功能 高级swing事件处理 使用对话框 模型/视图/控制器结构 复杂swing组件 客户机属性 小结 第16章 数据传输 可传输对象 剪贴板 拖放法 小结 第17章 java集合 复习数组 向量、堆栈和枚举 字典、散列表与属性 位组 集合与迭代器 集 清单与listiterator 变换表 同步化与可读性 算法与排序 小结 第18章 高级小程序编程 纯粹gui驱动小程序 多线程小程序 最小化小程序装入时间 小结 第19章 流与输入/输出编程 i/o软件层 java的文件管理方法 java i/o流操作方法 小结 第20章 网络编程 java的网络协议:tcp/ip internet寻址 与远程系统通信 编写服务器系统 java.net工厂和工厂设计模式 小结 第三部分 高级课题 第21章 java数据库互联(jdbc) java作为数据库前台 数据库客户机/服务器方法论 双层数据库设计 三层数据库设计 jdbc api jdbc数据库举例 jdbc驱动程序 jdbc-odbc桥 当前jdbc驱动程序 其它连接方法 小结 第22章 javabeans javabean组件模型 java的bean bean内省和定置 beans开发工具库(bdk) 集成beans与其它技术 小结 第23章 java小服务程序 cgi的局限 引入小程序与java web服务器 小服务程序开发设置 小服务程序api 小服务程序配置 小服务程序的完整例子 服务器方包括(ssi) 小服务程序间通信 多线程小服务程序 小结 第24章 安全性 安全性概念 控制程序功能 jdk 2中的授权 验证用户 加密api 小结 第25章 远程方法调用 rmi概述 rmi结构 高级rmi 小结 第26章 java与corba 异构系统的存在 corba简介 corba如何工作 java语言映射基础 corba与遗留应用程序 corba的未来 小结

img
黑+马2018Python入门教程完整(懂中文就能学会)...

├─01linux基础视频 │ ├─1-30 │ │ 01-课程安排 │ │ 02-励志公式和python体验 │ │ 03-什么是操作系统 │ │ 04-不同领域的主流操作系统-01-桌面操作系统 │ │ 05-不同领域的主流操作系统-02-服务器操作系统 │ │ 06-不同领域的主流操作系统-03-嵌入式操作系统 │ │ 07-虚拟机简介 │ │ 08-操作系统发展简史 │ │ 09-Linux的内核版和发行版 │ │ 10-Linux系统下的文件目录结构 │ │ 11-Ubuntu系统目录结构演示和简介 │ │ 12-Ubuntu图形界面基本使用 │ │ 13-Linux命令-01-明确学习目标 │ │ 14-Linux命令-02-放大缩小终端窗口字体 │ │ 15-Linux命令-03-明确6个常见终端命令的操作效果 │ │ 16-Linux命令-04-6个常见终端命令简单演练 │ │ 17-Linux命令-05-终端命令格式 │ │ 18-Linux命令-06-查阅终端命令帮助信息 │ │ 19-文件和目录命令-01-明确命令分类和学习目标 │ │ 20-文件和目录命令-02-分享自动补全和命令选择技巧 │ │ 21-文件和目录命令-03-查看隐藏文件和返回上一级目录 │ │ 22-文件和目录命令-04-ls的列表和文件大小选项 │ │ 23-文件和目录命令-05-ls和通配符的联合使用 │ │ 24-文件和目录命令-06-通配符的字符组 │ │ 25-文件和目录命令-07-cd命令的常用参数 │ │ 26-文件和目录命令-08-相对路径和绝对路径 │ │ 27-文件和目录命令-09-touch和mkdir命令的扩展 │ │ 28-文件和目录命令-10-rm命令的扩展 │ │ 29-拷贝和移动命令-01-目标确定和图形界面演示 │ │ 30-拷贝和移动命令-02-tree以树状图查看目录结构 │ │ │ ├─31-60 │ │ 31-拷贝和移动命令-03-cp命令复制文件 │ │ 32-拷贝和移动命令-04-cp命令-i选项覆盖前提示 │ │ 33-拷贝和移动命令-05-cp命令-r选项复制目录 │ │ 34-拷贝和移动命令-06-mv命令移动文件或者目录 │ │ 35-拷贝和移动命令-07-mv命令给文件或者目录重命名 │ │ 36-文件内容命令-01-cat和more的基本使用和对比 │ │ 37-文件内容命令-02-cat命令的-b和-n选项输出行号 │ │ 38-文件内容命令-03-grep查找文件内容 │ │ 39-文件内容命令-04-grep行首/行尾的模式查找 │ │ 40-其他命令-01-echo和重定向 │ │ 41-其他命令-02-管道的概念和基本使用 │ │ 42-远程管理命令-01-关机和重启 │ │ 43-远程管理命令-02-网卡和IP地址的概念 │ │ 44-远程管理命令-03-ifconfig和ping作用的介绍 │ │ 45-远程管理命令-04-ifconfig查询网卡信息 │ │ 46-远程管理命令-05-ping测试网络连接 │ │ 47-远程管理命令-06-SSH工作方式简介 │ │ 48-远程管理命令-07-域名和端口号的概念 │ │ 49-远程管理命令-08-ssh命令格式介绍和演练目标确定 │ │ 50-远程管理命令-09-Mac电脑使用ssh连接ubuntu │ │ 51-远程管理命令-10-PuTTY的安装和exit退出登录 │ │ 52-远程管理命令-11-XShell的安装-免费和设置语言 │ │ 53-远程管理命令-12-scp作用以及命令格式 │ │ 54-远程管理命令-13-scp在Mac终端中的演示 │ │ 55-远程管理命令-14-FileZilla在Windows下文件传输 │ │ 56-SSH高级-01-确定目标/认识.ssh目录 │ │ 57-SSH高级-02-免密码登录设置步骤 │ │ 58-SSH高级-03-免密码登录工作原理 │ │ 59-SSH高级-04-配置远程计算机的别名 │ │ 60-用户权限-01-学习目标 │ │ │ └─61-100 │ 100-软件安装-03-设置软件源 │ 61-用户权限-02-用户/权限/组的基本概念 │ 62-用户权限-03-ls -l输出信息介绍 │ 63-用户权限-03-ls -l硬链接数含义的扩展 │ 64-用户权限-04-chmod修改文件权限 │ 65-用户权限-05-chmod修改目录权限 │ 66-用户权限-06-超级用户介绍 │ 67-组管理-01-添加组/删除组/确认组信息 │ 68-组管理-02-群组演练目标确定 │ 69-组管理-03-chgrp修改目录所属组的演练 │ 70-用户管理-01-新建用户useradd和passwd │ 71-用户管理-02--m选项的作用以及删除用户userdel │ 72-用户管理-03-id查看UID和GID以及passwd文件介绍 │ 73-用户管理-04-who和whoami │ 74-用户管理-05-usermod设置主组和附加组 │ 75-用户管理-06-usermod指定用户登录shell │ 76-用户管理-07-which查看命令所在位置 │ 77-用户管理-08-su切换用户 │ 78-用户管理-09-权限命令介绍和chown/chgrp演练 │ 79-用户管理-10-chmod的数字表示法介绍 │ 80-用户管理-11-chmod演练-R递归修改目录权限 │ 81-系统信息-01-学习目标 │ 82-系统信息-02-date和cal查看系统时间 │ 83-系统信息-03-df和du查看磁盘和目录空间占用 │ 84-系统信息-04-进程概念介绍 │ 85-系统信息-05-ps命令基本使用 │ 86-系统信息-06-top命令基本使用 │ 87-系统信息-07-kill命令基本使用 │ 88-其他命令-01-学习目标以及find命令的基本使用 │ 89-其他命令-02-文件软链接的概念介绍 │ 90-其他命令-03-文件软链接的演练步骤确定 │ 91-其他命令-04-文件软链接的演练实现 │ 92-其他命令-05-文件硬链接演练 │ 93-其他命令-06-文件软硬链接工作方式简介 │ 94-打包压缩-01-tar包简介和命令格式介绍 │ 95-打包压缩-02-打包和解包演练 │ 96-打包压缩-03-gzip压缩和解压缩介绍和演练 │ 97-打包压缩-04-bzip2压缩和解压缩介绍和演练 │ 98-软件安装-01-apt简介及命令格式介绍 │ 99-软件安装-02-apt软件安装演练 │ ├─02python基础 │ ├─day01 │ │ 001-Ptyhon简介-01-Python的起源 │ │ 002-Ptyhon简介-02-编译型语言和解释型语言 │ │ 003-Ptyhon简介-03-Python的设计目标 │ │ 004-Ptyhon简介-04-Python的设计哲学 │ │ 005-Ptyhon简介-05-为什么选择Python? │ │ 006-Ptyhon简介-06-Python的特点和面相对象基本概念 │ │ 007-Ptyhon简介-07-Python的优缺点 │ │ 008-第一个程序-01-目标确定 │ │ 009-第一个程序-02-python程序的格式以及扩展名 │ │ 010-第一个程序-03-Hello Python程序演练 │ │ 011-第一个程序错误排查-01-程序开发中的错误及原因 │ │ 012-第一个程序错误排查-02-手误错误 │ │ 013-第一个程序错误排查-03-一行代码不要做多件事情 │ │ 014-第一个程序错误排查-04-缩进错误 │ │ 015-第一个程序错误排查-05-Python2默认不支持中文 │ │ 016-Python2和Python3的介绍 │ │ 017-执行Python的方式-01-解释器运行及其他几种解释器简介 │ │ 018-执行Python的方式-02-官方解释器交互式运行程序 │ │ 019-执行Python的方式-03-IPython │ │ 020-执行Python的方式-04-集成开发环境IDE简介 │ │ 021-执行Python的方式-05-PyCharm简介 │ │ 022-执行Python的方式-06-PyCharm快速体验 │ │ 023-PyCharm初始设置-01-目标确定 │ │ 024-PyCharm初始设置-02-恢复初始设置 │ │ 025-PyCharm初始设置-03-第一次启动PyCharm │ │ 026-PyCharm初始设置-04-项目简介/明确目录的作用 │ │ 027-PyCharm初始设置-05-打开认识Python项目 │ │ 028-PyCharm初始设置-06-设置解释器版本 │ │ 029-PyCharm初始设置-07-项目和文件名的命名规则 │ │ 030-PyCharm初始设置-08-新建项目演练 │ │ 031-PyCharm初始设置-09-设置编辑区域和控制台的字体显示 │ │ 032-PyCharm初始设置-10-PyCharm专业版的安装和启动 │ │ 033-PyCharm初始设置-11-设置PyCharm专业版的启动图标 │ │ 034-PyCharm初始设置-12-程序安装过程及文件目录介绍 │ │ 035-PyCharm初始设置-13-卸载之前版本的PyCharm │ │ 036-PyCharm初始设置-14-PyCharm教育版的安装和启动 │ │ 037-PyCharm初始设置-15-确定课程演练的PyCharm版本 │ │ │ ├─day02 │ │ 038-多文件项目演练 │ │ 039-程序的注释-01-注释的作用 │ │ 040-程序的注释-02-单行注释 │ │ 041-程序的注释-03-解释器不会解释#右侧的内容 │ │ 042-程序的注释-04-在代码末尾增加单行注释 │ │ 043-程序的注释-05-多行注释 │ │ 044-程序的注释-06-注释的使用以及代码规范文档 │ │ 045-算数运算符 │ │ 046-程序执行原理-01-明确目标 │ │ 047-程序执行原理-02-计算机中的三大件 │ │ 048-程序执行原理-03-计算机三大件特点的问答 │ │ 049-程序执行原理-04-程序执行原理简介 │ │ 050-程序执行原理-05-Python程序执行原理 │ │ 051-程序执行原理-06-明确程序的作用 │ │ 052-程序执行原理-07-明确变量负责保存数据 │ │ 053-变量的使用-01-明确目标和变量定义 │ │ 054-变量的使用-02-使用PyCharm定义QQ变量 │ │ 055-变量的使用-03-超市买苹果 │ │ 056-变量的使用-04-PyCharm单步执行查看变量值 │ │ 057-变量的使用-05-超市买苹果变量的定义和使用 │ │ 058-变量的类型-01-明确演练需求/项目文件准备 │ │ 059-变量的类型-02-个人信息案例演练 │ │ 060-变量的类型-03-[扩展]PyCharm的调试细节-调试之前先继续执行程序 │ │ 061-变量的类型-04-Python中的变量类型 │ │ 062-变量的类型-05-type函数查看变量类型 │ │ 063-变量的类型-06-Python2.x区分int和long │ │ 064-变量间的计算-01-数字型变量可以直接计算 │ │ 065-变量间的计算-02-拼接字符串的两种方式 │ │ 066-变量的输入输出-01-输入和函数的概念 │ │ 067-变量的输入输出-02-input函数的基本使用 │ │ 068-变量的输入输出-03-类型转换函数介绍 │ │ 069-变量的输入输出-04-买苹果增强版演练 │ │ 070-变量的输入输出-05-提出问题—从控制台输入数字需要两个变量处理 │ │ 071-变量的输入输出-06-单步执行确认变量数量 │ │ 072-变量的输入输出-07-买苹果案例改进 │ │ 073-变量的输入输出-08-格式化输出语法介绍 │ │ 074-变量的输入输出-09-格式化输出字符串变量 │ │ 075-变量的输入输出-10-格式化输出整数变量 │ │ 076-变量的输入输出-11-格式化输出浮点型变量 │ │ 077-变量的输入输出-12-格式化输出%及小结 │ │ 077-变量的输入输出-12-格式化输出及小结 │ │ │ ├─day03 │ │ 078-变量的命名-01-标识符的概念及命名要求 │ │ 079-变量的命名-02-关键字的概念和查看关键字列表 │ │ 080-变量的命名-03-Python中的变量命名规则 │ │ 081-判断语句-01-判断在生活中的应用场景 │ │ 082-if基础-01-if语句基本语法介绍 │ │ 083-if基础-02-判断年龄演练 │ │ 084-if基础-03-比较运算符简介 │ │ 085-if基础-04-if语句和缩进部分是一个完整的代码块 │ │ 086-if基础-05-PyCharm代码块及光标位置提示 │ │ 087-if基础-06-else的语法格式 │ │ 088-if基础-07-判断年龄改进版 │ │ 089-if基础-08-由控制台输入年龄-不同类型不能直接比较 │ │ 090-if基础-09-if else可以看成一个完整的代码块 │ │ 091-逻辑运算-01-逻辑运算符简介 │ │ 092-逻辑运算-02-案例1判断年龄 │ │ 093-逻辑运算-03-案例2考试成绩 │ │ 094-逻辑运算-04-案例3非公勿入 │ │ 095-elif-01-语法介绍及应用场景 │ │ 096-elif-02-女友的节日案例 │ │ 097-if嵌套-01-if嵌套的应用场景 │ │ 098-if嵌套-02-if嵌套的语法 │ │ 099-if嵌套-03-火车站安检-检查车票 │ │ 100-if嵌套-04-[扩展]PyCharm使用Tab统一增加缩进 │ │ 101-if嵌套-05-火车站安检-检查刀的长度 │ │ 102-石头剪刀布-01-明确目标和需求 │ │ 103-石头剪刀布-02-玩家和电脑出拳 │ │ 104-石头剪刀布-03-判断胜负 │ │ 105-石头剪刀布-04-[扩展]增加换行调整条件判断代码格式 │ │ 106-石头剪刀布-05-随机数的使用 │ │ 107-石头剪刀布-06-电脑随机出拳 │ │ 108-循环-01-目标确定 │ │ 109-循环-02-三大流程介绍 │ │ 110-循环基础-01-基础语法介绍和常用的应用场景 │ │ 111-循环基础-02-第一个while循环 │ │ 112-循环基础-03-单步调试while循环 │ │ 113-循环基础-04-死循环的概念及解决方法 │ │ 114-循环基础-05-Python中的赋值运算符 │ │ 115-循环基础-06-程序计数从0开始 │ │ │ ├─day04 │ │ 116-循环计算-01-思路分析 │ │ 117-循环计算-02-0到100数字累加 │ │ 118-循环计算-03-偶数求和-准备偶数 │ │ 119-循环计算-04-偶数求和-计算结果 │ │ 120-break和continue-01-break关键字的应用场景 │ │ 121-break和continue-02-break代码演练 │ │ 122-break和continue-03-continue关键字的应用场景 │ │ 123-break和continue-04-continue代码演练 │ │ 124-循环嵌套-01-基本语法 │ │ 125-循环嵌套-02-使用字符串运算直接输出小星星 │ │ 126-循环嵌套-03-[扩展]print函数的结尾处理 │ │ 127-循环嵌套小星星-01-输出行并且确定思路 │ │ 128-循环嵌套小星星-02-嵌套循环完成案例 │ │ 129-九九乘法表-01-明确思路和步骤 │ │ 130-九九乘法表-02-打印9行小星星 │ │ 131-九九乘法表-03-九九乘法表数据输出 │ │ 132-九九乘法表-04-使用转义字符调整格式 │ │ 133-函数-01-明确学习目标 │ │ 134-函数-02-函数的概念以及作用 │ │ 135-函数-03-函数的快速体验 │ │ 136-函数基本使用-01-函数定义语法 │ │ 137-函数基本使用-02-第一个函数演练 │ │ 138-函数基本使用-03-函数的定义以及调用执行线路图 │ │ 139-函数基本使用-04-应该先定义函数再调用函数 │ │ 140-函数基本使用-05-[扩展]单步越过和单步进入 │ │ 141-函数基本使用-06-函数的文档注释 │ │ 142-函数参数-01-没有参数的函数过于死板 │ │ 143-函数参数-02-函数参数的使用以及作用 │ │ 144-函数参数-03-形参和实参 │ │ 145-函数的返回值-01-返回值的应用场景和格式 │ │ 146-函数的返回值-02-改造求和函数 │ │ 147-函数的返回值-03-retrun关键字的注意事项 │ │ 148-函数的嵌套调用-01-函数嵌套调用的执行线路图 │ │ 149-函数的嵌套调用-02-[扩展]用百度网站举例说明函数的调用线路 │ │ 150-分隔线演练-01-利用参数增加分隔线的灵活度 │ │ 151-分隔线演练-02-打印多条分隔线 │ │ 152-分隔线演练-03-增加多行分隔线函数的参数 │ │ 153-分隔线演练-04-[扩展]PyCharm给函数增加文档注释 │ │ │ ├─day05 │ │ 154-模块-01-概念介绍 │ │ 155-模块-02-使用模块演练 │ │ 156-模块-03-模块名也是一个标识符 │ │ 157-模块-04-[科普]pyc文件可以提高程序执行速度 │ │ 158-高级变量-01-学习目标确定 │ │ 159-列表-01-作用和定义方式 │ │ 160-列表-02-存储数据的方式以及从列表中取值 │ │ 161-列表-03-确认列表常用操作的方法 │ │ 162-列表-04-从列表中取值和取索引 │ │ 163-列表-05-修改指定位置的数据 │ │ 164-列表-06-向列表增加数据 │ │ 165-列表-07-从列表删除数据 │ │ 166-列表-08-使用del关键字从列表删除数据 │ │ 167-列表-09-列表统计及删除方法扩展 │ │ 168-列表-10-列表的排序和反转 │ │ 169-列表-11-关键字、函数和方法的特点和区别 │ │ 170-列表-12-迭代遍历 │ │ 171-列表-13-列表的应用场景 │ │ 172-元组-01-特点以及和列表的区别 │ │ 173-元组-02-元组变量的定义 │ │ 174-元组-03-元组变量的常用操作 │ │ 175-元组-04-元组变量的循环遍历 │ │ 176-元组-05-元组的应用场景 │ │ 177-元组-06-元组和格式化字符串 │ │ 178-元组-07-元组和列表之间的转换 │ │ 179-字典-01-字典的定义格式以及键值对的概念 │ │ 180-字典-02-变量的定义以及应用场景 │ │ 181-字典-03-字典的增删改查常用操作 │ │ 182-字典-04-字典的统计、合并、清空操作 │ │ 183-字典-05-字典的循环遍历 │ │ 184-字典-06-字典和列表组合的应用场景 │ │ 185-字符串-01-定义和基本使用 │ │ 186-字符串-02-长度、计数、位置方法演练 │ │ 187-字符串-03-常用方法总览和分类 │ │ 188-字符串-04-判断空白字符以及学习方法分享 │ │ 189-字符串-05-判断数字的三个方法 │ │ │ ├─day06 │ │ 190-字符串-06-字符串的查找和替换 │ │ 191-字符串-07-文本对齐方法演练 │ │ 192-字符串-08-去除空白字符 │ │ 193-字符串-09-拆分和拼接字符串 │ │ 194-字符串-10-切片概念和语法以及倒序索引 │ │ 195-字符串-11-字符串切片演练 │ │ 196-公共方法-01-内置函数长度、删除、最大、最小、比较 │ │ 197-公共方法-02-切片 │ │ 198-公共方法-03-算数运算符及对比列表追加方法 │ │ 199-公共方法-04-成员运算符 │ │ 200-公共方法-05-完整的for循环-for else │ │ 201-公共方法-06-利用for else搜索字典列表-for else │ │ 202-名片管理-01-明确目标及备课代码演示 │ │ 203-框架搭建-01-框架介绍及系统架构分析 │ │ 204-框架搭建-02-新建项目准备文件 │ │ 205-框架搭建-03-用户输入判断和pass关键字 │ │ 206-框架搭建-04-无限循环保证用户能够重复选择操作 │ │ 207-框架搭建-05-if嵌套判断用户的具体操作预留代码位置 │ │ 208-框架搭建-06-cards_main知识点小结 │ │ 209-框架搭建-07-[扩展]TODO注释及格式 │ │ 210-框架搭建-08-显示欢迎界面及功能菜单 │ │ 211-框架搭建-09-准备名片操作函数修改主文件中函数调用 │ │ 212-数据结构确定-01-确定名片管理系统的数据结构 │ │ 213-新增名片-01-新增名片功能实现 │ │ 214-新增名片-02-[扩展]PyCharm技巧重命名变量名 │ │ 215-显示全部-01-遍历列表显示字典明细 │ │ 216-显示全部-02-判断列表数量,没有名片直接返回 │ │ 217-查询名片-01-查询功能实现 │ │ 218-查询名片-02-准备处理名片函数 │ │ 219-处理名片-01-增加分支判断用户操作类型 │ │ 220-处理名片-02-删除名片 │ │ 221-处理名片-03-修改名片 │ │ 222-处理名片-04-明确细化修改名片的思路,准备新的输入函数 │ │ 223-处理名片-05-实现修改名片输入函数 │ │ 224-处理名片-06-增加文档注释、删除TODO标记 │ │ 225-运行程序-01-增加Shebang符号直接运行Python程序 │ │ │ └─day07 │ 226-变量的引用-01-变量的引用概念 │ 227-变量的引用-02-调用函数传递实参的引用 │ 228-变量的引用-03-函数返回值传递引用 │ 229-可变类型和不可变类型-01-基本概念 │ 230-可变类型和不可变类型-02-列表、字典的修改和赋值 │ 231-可变类型和不可变类型-03-字典的key不能是可变类型 │ 232-局部变量和全局变量-01-基本概念和区别 │ 233-局部变量-01-代码演练 │ 234-局部变量-02-变量的生命周期 │ 235-局部变量-03-不同函数内的同名局部变量 │ 236-全局变量-01-基本代码演练 │ 237-全局变量-02-[扩展]PyCharm的单步跟踪技巧 │ 238-全局变量-03-函数内部不允许修改局部变量的值 │ 239-全局变量-04-单步调试确认局部变量的定义 │ 240-全局变量-05-global关键字修改全局变量 │ 241-全局变量-06-全局变量定义的位置及代码结构 │ 242-全局变量-07-全局变量命名的建议 │ 243-函数参数和返回值的作用 │ 244-函数的返回值-01-利用元组返回多个值 │ 245-函数的返回值-02-接收返回元组函数的方式 │ 246-函数的返回值-03-交换两个变量的值 │ 247-函数的参数-01-在函数内部针对参数赋值不会影响外部实参 │ 248-函数的参数-02-在函数内部使用方法修改可变参数会影响外部实参 │ 249-函数的参数-04-列表使用+=本质上是调用extend方法 │ 250-缺省参数-01-回顾列表的排序方法明确缺省参数的概念及作用 │ 251-缺省参数-02-指定函数缺省参数的默认值 │ 252-缺省参数-03-缺省参数的注意事项 │ 253-多值参数-01-定义及作用 │ 254-多值参数-02-数字累加案例演练 │ 255-多值参数-03-元组和字典的拆包 │ 256-递归-01-递归的特点及基本代码演练 │ 257-递归-02-递归演练代码的执行流程图 │ 258-递归-03-递归实现数字累加 │ 259-递归-04-数字累加的执行流程图 │ ├─03面向对象 │ ├─day01 │ │ 001-面向对象-01-基本概念 │ │ 002-面向对象-02-类和对象基本概念 │ │ 003-面向对象-03-设计类的三要素和名词提炼法 │ │ 004-面向对象-04-内置的dir函数查询对象的方法列表 │ │ 005-定义简单类-01-基本语法 │ │ 006-定义简单类-02-案例演练 │ │ 007-定义简单类-03-接收对象的变量同样是对对象的引用 │ │ 008-定义简单类-04-创建多个猫对象 │ │ 009-self-01-在类的外部给对象增加属性 │ │ 010-self-02-利用self在类封装的方法中输出对象属性 │ │ 011-初始化方法-01-在类的外部给对象增加属性的隐患 │ │ 012-初始化方法-02-创建对象时自动调用初始化方法 │ │ 013-初始化方法-03-在初始化方法中定义属性 │ │ 014-初始化方法-04-使用参数设置属性初始值 │ │ 015-内置方法-01-del方法和对象的生命周期 │ │ 016-内置方法-02-str方法定制变量输出信息 │ │ 017-小明爱跑步-01-封装特性和需求分析 │ │ 018-小明爱跑步-02-案例完成 │ │ 019-小明爱跑步-03-扩展-多个对象属性之间互不干扰 │ │ 020-摆放家具-01-需求分析-被使用的类应该先开发 │ │ 021-摆放家具-02-家具类以及创建家具对象 │ │ 022-摆放家具-03-定义房子类 │ │ 023-摆放家具-04-完成添加家具方法 │ │ 024-封装案例-01-需求分析-属性可以是另外一个类创建的对象 │ │ 025-封装案例-02-创建(qiang)类 │ │ 026-封装案例-03-创建士兵类-完成初始化方法 │ │ 027-封装案例-04-完成开火方法 │ │ 028-封装案例-05-身份运算符-判断None应该使用 is │ │ 029-私有属性和方法-01-应用场景、定义方式和演练 │ │ 030-私有属性和方法-02-伪私有属性和方法 │ │ │ ├─day02 │ │ 031-单继承-01-问题的抛出-单纯封装可能会出现重复的代码 │ │ 032-单继承-02-继承的概念和语法 │ │ 033-单继承-03-继承相关的术语-继承和派生 │ │ 034-单继承-04-继承的传递性 │ │ 035-单继承-05-继承传递性的注意事项 │ │ 036-方法的重写-01-覆盖父类方法,重写子类方法实现 │ │ 037-方法的重写-02-扩展父类方法,super对象调用父类方法 │ │ 038-方法的重写-03-使用父类名调用父类方法 │ │ 039-私有属性和方法-01-子类对象不能直接访问 │ │ 040-私有属性和方法-02-通过父类方法间接访问 │ │ 041-多继承-01-概念、语法和基本演练 │ │ 042-多继承-02-注意父类之间注意不要有重名方法或属性 │ │ 043-多继承-03-MRO方法搜索顺序 │ │ 044-多继承-04-新式类和经典类 │ │ 045-多态-01-基本概念 │ │ 046-多态-02-案例演练 │ │ 047-类属性-01-创建对象的过程以及实例的概念 │ │ 048-类属性-02-类是一个特殊的对象 │ │ 049-类属性-03-类属性的定义及使用 │ │ 050-类属性-04-属性查找机制-向上查找 │ │ 051-类属性-05-使用对象名+类属性赋值语句会创建实例属性 │ │ 052-类方法-01-基本语法 │ │ 053-类方法-02-案例演练 │ │ 054-静态方法-01-应用场景和定义方式 │ │ 055-方法综合-01-案例分析 │ │ 056-方法综合-02-案例演练 │ │ 057-方法综合-03-确定方法类型的套路 │ │ 058-单例-01-设计模式和单例设计模式概念 │ │ 059-单例-02-new方法的作用 │ │ 060-单例-03-重写new方法 │ │ 061-单例-04-单例设计模式思路分析 │ │ 062-单例-05-单例设计模式代码实现 │ │ 063-单例-06-初始化动作只执行一次 │ │ │ └─day03 │ 064-异常-01-异常的概念以及抛出异常的原因 │ 065-异常-02-简单的异常捕获 │ 066-异常-03-根据错误类型捕获异常 │ 067-异常-04-捕获未知错误 │ 068-异常-05-异常捕获的完整语法 │ 069-异常-06-异常的传递性 │ 070-异常-07-主动抛出异常的应用场景 │ 071-异常-08-主动抛出异常案例演练 │ 072-模块-01-基本概念和import导入复习 │ 073-模块-02-import导入时指定别名 │ 074-模块-03-from import局部导入 │ 075-模块-04-from import导入同名工具 │ 076-模块-05-from import导入所有工具 │ 077-模块-06-模块搜索顺序 │ 078-模块-07-开发原则以及导入文件时会执行没有缩进的代码 │ 079-模块-08-__name__属性兼顾测试和导入两种模式 │ 080-包-01-包的概念以及建立包的方式 │ 081-包-02-封装模块、设置__init__和外界导入包 │ 082-制作模块-01-明确目的和介绍步骤 │ 083-制作模块-02-制作模块压缩包 │ 084-制作模块-03-安装模块压缩包 │ 085-制作模块-04-卸载已经安装过的模块 │ 086-pip-使用pip安装pygame模块 │ 087-文件-文件概念以及文本文件和二进制文件的区别 │ 088-文件操作-01-文件操作套路以及Python中的对应函数和方法 │ 089-文件操作-02-读取文件内容 │ 090-文件操作-03-读取文件后文件指针会发生变化 │ 091-文件操作-04-打开文件方式以及写入和追加数据 │ 092-文件操作-05-使用readline分行读取大文件 │ 093-文件操作-06-小文件复制 │ 094-文件操作-07-大文件复制 │ 095-导入os模块,执行文件和目录管理操作 │ 096-文本编码-01-文本文件的编码方式ASCII和UTF8 │ 097-文本编码-02-怎么样在Python2.x中使用中文 │ 098-文本编码-03-Python2.x处理中文字符串 │ 099-eval-01-基本使用 │ 100-eval-02-[扩展]不要直接转换input结果 │ ├─04 项目实战视频 │ ├─day01 │ │ 001-项目实战-01-明确目标和实战步骤 │ │ 002-项目实战-02-确认pygame模块正确安装 │ │ 003-快速体验-01-项目准备及游戏的第一印象 │ │ 004-游戏窗口-01-游戏的初始化和退出 │ │ 005-游戏窗口-02-pygame的坐标系 │ │ 006-游戏窗口-03-pygame.Rect描述矩形区域 │ │ 007-游戏窗口-04-创建游戏窗口和游戏循环 │ │ 008-绘制图像-01-绘制图像的三个步骤 │ │ 009-绘制图像-02-绘制英雄和透明图像 │ │ 010-绘制图像-03-update方法的作用 │ │ 011-介绍计算机中的动画实现原理 │ │ 012-游戏循环-01-基本概念明确下一步目标 │ │ 013-游戏循环-02-利用时钟设置游戏循环的刷新帧率 │ │ 014-游戏循环-03-英雄动画效果实现 │ │ 015-游戏循环-04-英雄循环飞行以及作业 │ │ 016-事件监听-01-基本概念和event模块的get方法 │ │ 017-事件监听-02-监听退出事件并且退出游戏 │ │ 018-精灵和精灵组-01-基本概念 │ │ 019-精灵和精灵组-02-自定义精灵子类需求分析 │ │ 020-精灵和精灵组-03-派生精灵子类代码实现 │ │ 021-精灵和精灵组-04-创建敌机并且实现敌机动画 │ │ 022-框架搭建-01-明确飞机游戏类的设计 │ │ 023-框架搭建-02-明确文件职责准备主游戏类 │ │ 024-框架搭建-03-游戏初始化 │ │ 025-框架搭建-04-使用常量定义游戏窗口大小 │ │ 026-框架搭建-05-搭建启动游戏方法结构 │ │ │ └─day02 │ 027-背景图像-01-交替滚动实现思路分析 │ 028-背景图像-02-背景类的设计与基本实现 │ 029-背景图像-03-背景图像的交替滚动实现 │ 030-背景图像-04-利用初始化方法简化背景精灵的创建 │ 031-敌机-01-定时器语法介绍 │ 032-敌机-02-定义并且监听创建敌机的定时器事件 │ 033-敌机-03-设计并准备敌机类 │ 034-敌机-04-定时创建并显示敌机精灵 │ 035-敌机-05-随机位置以及随机速度 │ 036-敌机-06-销毁飞出屏幕的敌机 │ 037-英雄-01-需求分析和类设计 │ 038-英雄-02-准备英雄类 │ 039-英雄-03-绘制英雄 │ 040-英雄-04-两种按键方式对比 │ 041-英雄-05-控制英雄左右移动 │ 042-英雄-06-英雄边界控制 │ 043-发射子弹-01-添加并监听英雄发射子弹事件 │ 044-发射子弹-02-定义子弹类 │ 045-发射子弹-03-发射子弹 │ 046-发射子弹-04-一次发射三枚子弹 │ 047-碰撞检测-01-子弹摧毁敌机 │ 048-碰撞检测-02-敌机撞毁英雄 │ └─05 vi视频 └─1-30 001-vi简介-01-学习vi的目的 002-vi简介-02-vi和vim以及vi的特点 003-打开文件-01-打开或者新建文件 004-打开文件-02-打开文件并且定义指定行 005-打开文件-03-删除交换文件 006-工作模式-01-职责以及切换方式 007-工作模式-02-工作模式切换演练 008-vi命令-01-学习线路图 009-移动命令-01-方向和行内移动 010-移动命令-02-行数跳转和上下翻页 011-移动命令-03-段落切换和括号切换 012-移动命令-04-利用标记返回之前需要编辑的代码位置 013-选中命令-01-三种选择文本的方式 014-撤销和删除-01-撤销和恢复命令介绍 015-撤销和删除-02-删除命令演练 016-撤销和删除-03-撤销和恢复撤销 017-复制和粘贴-01-复制和粘贴演练 018-复制和粘贴-02-系统剪切板的内容不能使用p粘贴 019-替换命令 020-缩排以及重复执行 021-查找字符串或者单词 022-查找并替换-01-全局替换 023-查找并替换-02-替换可视区域 024-查找并替换-03-确认替换 025-进入编辑模式的6个命令 026-编辑命令演练-01-和数字的连用 027-编辑命令演练-02-利用可视块给多行代码增加注释 028-分屏命令-01-末行命令扩展 029-分屏命令-02-w命令阶段性备份代码 030-分屏命令-03-分屏命令演练

img
代码大全中文版

著者:Steve McConnell 翻译:天奥 近年来,关于软件开发的研究,进展是非常迅速的,但是开发实践却并非如此。许多程序仍然是错误百出,充斥着过时的技术,从而无法满足用户需要。软件工业界和学术界的研究者们,基本上已经解决了七十年代和八十年代在编程中遇到的问题,并发展了相应的技术。但是直到现在,这些技术中的大部分仍然没有在软件编程中广泛采用,其主要原因是这些研究成果主要发表在高度专业性的学术刊物中,普通的程序员们无心顾及。Sridhar Raghavan 和 Donald Chand(1989)的研究表明,一项新技术从诞生到被工业界广泛采用大约需要 5 到15 年的时间。本书的目的就是希望能够缩短新技术推广周期,使广大的程序员们可以迅速地获得软件开发的最新方法与手段。 本书所面向的对象 本书中所收集的研究和编程经验,将有助于你编写出高质量的软件,并且使得开发周期缩短。通过阅读本书,你将会对自己过去所犯过的错误有更深刻的理解,并懂得今后如何避免它们。同时,书中所收集的丰富的编程经验也将使你在控制大规模项目和按要求对软件进行修改和维护时感到得心应手。下面是适合阅读本书的几类人: 经验丰富的程序员 本书适合于想要得到一本全面易用的软件设计指南的那些资深程序员们阅读。由于本书的中心内容是广大程序员们所熟知的实现过程,因此,无论是受过正规训练而已经验丰富的程序员,还是完全靠自学成长起来的程序员,都能容易读懂本书所论述的先进技术和方法。 自学成才的程序员  本书尤其适合于很少受过正式专业训练的程序员阅读。1988 年有 100,000 人加入了程序员大军,但其中只有 40,000 人是从计算机专业毕业的本科生,其余则几乎全是靠自学成才的。同时,还有不计其数的其他各行各业的人员需要在工作中自己动手编一些程序。无论你所受到的正规计算机专业训练多或少,本书都将使你对有效的编程方法和技巧有更深刻的理解。学生  本书不仅适于实践经验丰富但理论基础薄弱的自学者阅读,同时也适于那些理论基础较好但几乎不懂得什么编程诀窍的毕业生们阅读。新程序员们的某些实践经验来自于经验丰富的同事.但主要还是靠自己──吃一堑,长一智──获得的,这往往是一个艰苦而缓慢的过程。通过本书,可以使你在短时期内获得大量的经验和技巧,从而脱颖而出,所以,不妨一试。本书的主要特点 完备的软件创建参考 本书从质量和编程思想等方面论述了软件构造问题。几乎囊括了生成子程序、数据的输入输出与控制结构、调试、代码调整策略与技术等各方面的细节。在使用本书时不必逐页阅读每一个细节,只要在需要时查阅你所感兴趣的章节即可。请把本书作为手册而不是作为教科书来使用。  方便而实用的检查表 书中附有用于检查软件的结构设计、设计方法、模块和子程序等质量的检查表,以供评估软件质量之用。同时,关于变量名、控制结构、方案布置、测试用例等等检查表也将使你获益匪浅。 紧跟潮流的新技术 书中论述了许多目前最先进的技术,其中许多还只是刚刚投入应用。由于本书取材于实践经验和最新研究成果两个方面,因此书中所提供的技术在相当长的时间内都不会过时。 高屋建瓴的观点 阅读本书将使你跳出日常琐碎工作的圈子,对软件开发有一个总体上的把握与认识。繁杂的日常工作往往使程序员们穷于应付而无暇阅读浩如烟海的书籍与资料,本书丰富而翔实的第一手资料将弥补这一缺憾,使你对软件开发的策略作出正确决策而不致陷入旷日持久的消耗战中。 通用的概念 无论你用的是 Pascal、C、C++、Ada、Basic、Fotran 还是 COBOL,都可以从本书所论述的概念、方法和技巧中获得教益。  丰富而典型性的程序示例 书中含有大约 500 多个正反两方面的程序示例。之所以引入这么多的示例,是因为笔者就是从各种例程中吸取了大部分的知识、经验与诀窍,因此笔者认为最好的学习方法是多看例程。例程是用多种语言写成的,因为对于程序员来说,掌握多种语言是其必不可少的基本素质之一。而且,只有掌握了不受语法规则限制的编程准则,才能真正有效地提高你的编程效率和质量。 为了减轻由于使用多种语言所带来的额外负担,在例程中除非确有必要,尽量避开了各个语言过于独特的部分。事实上,如果你真正注意每个例程所要说明的问题的话,那么不必详细理解每个程序段,你也可以清楚地懂得程序的意义。同时,为了进一步减轻读者的负担,对程序中有意义的部分作了标记。本书的独特内容 本书关于创建活动的内容是从多个渠道获得的。有关创建活动的资料不仅分布得非常分散,而且往往没有成文资料,事实上,卓有成效的优秀程序员们所使用的技术并不神秘,但由于日常事务的繁重和工作任务的重压,程序员们很少有互相交流切磋的时间,因而,他们往往缺乏有关编程技巧的有效信息来源。 本书中所论述的技术不仅填补了初级与高级编程课本之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。比如当你读过 C 语言初级教程之后,你可以再读 C 语言高级教程,然后再去读 C 语言高级的高级教程,但读完这些书后,你还能再读什么书呢?你可以再去读关于 PC、Macintosh 或 UNIX 等硬件或操作系统的书或者其它有关编程细节的书——因为你如果不了解实现环境详情的话是无法充分有效地使用语言和程序的。但这只是讨论了编程的一个方面,最有效的编程技术是那些不受实现环境及语言限制的技术。其它书往往忽略了这一点,但这恰恰是本书的重点。写作本书的目的 需要一本关于软件开发有效技术的书,是软件工程界所公认的。由计算机科学技术委员会所发表的一份报告认为,提高程序质量和生产效率的最有效途径是出版一本关于软件开发有效技术的书,而且这本书应该以手册的形式来组织。  同时,计算机编程技术的发展史也证明急需一本这方面的书,本书正是出于这个目的才出版的。 创建活动未受到应有的重视 在一段时期内,软件开发与编码被当作是一回事,但随着软件开发周期中的其它活动被认识,这一领域内的主要努力全部集中到了项目管理、需求分析、设计和测试等方面,创建活动成了被遗忘的角落。 与这种现象相对应的思想是认为创建活动是软件开发中无关紧要的部分。于是,刚入门的程序员被派去进行创建工作,为那些已经由上一阶段设计好的子程序编码。工作几年之后,他可能会被提升至需求分析或项目管理部门。于是,这位程序员也会自豪地感到他不必再去编码了。 创建活动是非常重要的 创建活动被忽视的另一个原因是:研究者和程序员们错误地认为与其它开发活动相比,创建活动是一相对来说比较机械的活动,没有什么值得改进的。没有什么比这种想法离事实更远了。 在小规模项目中,创建活动约占工作量的 80%,在中型项目中也要占 50%的工作量,而发生在创建活动中的错误则占总错误的 50%到 75%。一项会产生 50%到 75%错误的工作是有许多待改进之处的。 一些人认为,虽然创建时的错误占到总错误的 50%到75%,但修改它们的费用与分析、设计错误相比要少得多。的确,创建时的错误修改费用与前期工作错误修改费用相比是要少一些,但是绝对数并不少。 Gerald Weinbers曾在 1983 年报道过三个错误,每个错误的修改费用都高达数百万美元,而每个错误都是一行编码层次上的代码错误。因此,绝不能以修改费用相对少为理由来忽视创建活动。 具有讽刺意味的是,被忽视的创建活动事实上是唯一任何规模项目都必不可少的活动。需求可以进行猜想而不必分析;结构可以被省略而不必设计。系统测试也可以不进行。但是,如果你想有一个程序的话,你就不得不进行创建活动。本书的独特性   如果创建活动的重要性是非常明显的话,那么本书恐怕就没有出版的必要了。但事实上几乎没有什么书详细论述了这一主题。只有 15 年前出版过一本类似内容的书,讲述的是 ALGOL、PL/I、Ratfor 等早已过时的语言中的具体问题。其它偶尔也有几本这方面的书,但却是教授们针对教学用的演示性项目而写的,没有涉及到真正的工程问题。有些则偏激地推崇新技术而不恰当地贬低了一些非常实用的成熟技术。总之,就内容的新颖、翔实、丰富和实用来看,目前似乎还没有与本书相匹敌的关于创建活动的书。

img
HTTP权威指南完整版(中文版与英文原版对照阅读)...

本资源包含两个 PDF 电子书,一个《中文版HTTP权威指南完整版.pdf》和一个英文版《HTTP The Definitive Guide2.pdf》。分别介绍如下: 《HTTP权威指南》,英文名《HTTP:The Definitive Guide》,作者:[美]David Gourley、[美]Brian Totty、[美]Marjorie Sayer 、[美]Sailu Reddy、[美]Ansbu Aggarwal ,翻译:陈涓、赵振平,出版社:人民邮电出版社,ISBN:9787115281487。PDF 格式,高清影音版,大小 87 MB,本 PDF 带有书签,方便读者朋友阅读。 《HTTP权威指南》内容简介: 《http权威指南》是http 及其相关核心web 技术方面的权威著作,主要介绍了web 应用程序是如何工作的,核心的因特网协议如何与架构构建块交互,如何正确实现因特网客户和服务器等。    《http权威指南》适合所有想了解http 和web 底层结构的人阅读。 《HTTP权威指南》目录: 《http权威指南》 第一部分  http:web 的基础 第1章  http 概述  3 1.1  http——因特网的多媒体信使    4 1.2  web 客户端和服务器 4 1.3  资源   5 1.3.1  媒体类型    6 1.3.2  uri    7 1.3.3  url  7 1.3.4  urn  8 1.4  事务   9 1.4.1  方法  9 1.4.2  状态码    10 1.4.3  web 页面中可以包含多个对象 10 1.5  报文  11 1.6  连接  13 1.6.1  tcp/ip    13 1.6.2  连接、ip 地址及端口号    14 1.6.3  使用telnet 实例    16 1.7  协议版本  18 .1.8  web 的结构组件    19 1.8.1  代理    19 1.8.2  缓存    20 1.8.3  网关    20 1.8.4  隧道    21 1.8.5  agent 代理    21 1.9  起始部分的结束语    22 1.10  更多信息  22 1.10.1  http 协议信息 22 1.10.2  历史透视    23 1.10.3  其他万维网信息    23 第2章 url 与资源    25 2.1  浏览因特网资源    26 2.2  url 的语法    28 2.2.1  方案——使用什么协议    29 2.2.2  主机与端口    30 2.2.3  用户名和密码    30 2.2.4  路径    31 2.2.5  参数    31 2.2.6  查询字符串    32 2.2.7  片段    33 2.3  url 快捷方式    34 2.3.1  相对url 34 2.3.2  自动扩展url 37 2.4  各种令人头疼的字符    38 2.4.1  url 字符集 38 2.4.2  编码机制 38 2.4.3  字符限制 39 2.4.4  另外一点说明    40 2.5  方案的世界  40 2.6  未来展望  42 2.7  更多信息  44 第3章  http 报文    45 3.1  报文流    46 3.1.1  报文流入源端服务器    46 3.1.2  报文向下游流动    47 3.2  报文的组成部分    47 3.2.1  报文的语法    48 3.2.2  起始行    50 3.2.3  首部    53 3.2.4  实体的主体部分    55 3.2.5  版本0.9 的报文    55 3.3  方法  56 3.3.1  安全方法 56 3.3.2  get  56 3.3.3  head    57 3.3.4  put  57 3.3.5  post    58 3.3.6  trace    58 3.3.7  options 60 3.3.8  delete    60 3.3.9  扩展方法 61 3.4  状态码    62 3.4.1  100 ~ 199——信息性状态码    62 3.4.2  200 ~ 299——成功状态码    63 3.4.3  300 ~ 399——重定向状态码    64 3.4.4  400 ~ 499——客户端错误状态码    68 3.4.5  500 ~ 599——服务器错误状态码    69 3.5  首部  70 3.5.1  通用首部 71 3.5.2  请求首部 72 3.5.3  响应首部 74 3.5.4  实体首部 75 3.6  更多信息  77 第4章  连接管理    79 4.1  tcp 连接    80 4.1.1  tcp 的可靠数据管道    80 4.1.2  tcp 流是分段的、由ip 分组传送 81 4.1.3  保持tcp 连接的正确运行    82 4.1.4  用tcp 套接字编程 84 4.2  对tcp 性能的考虑 85 4.2.1  http 事务的时延    86 4.2.2  性能聚焦区域    87 4.2.3  tcp 连接的握手时延    87 4.2.4  延迟确认 88 4.2.5  tcp 慢启动    89 4.2.6  nagle 算法与tcp_nodelay    89 4.2.7  time_wait 累积与端口耗尽    90 4.3  http 连接的处理    91 4.3.1  常被误解的connection 首部 91 4.3.2  串行事务处理时延    92 4.4  并行连接  94 4.4.1  并行连接可能会提高页面的加载速度    94 4.4.2  并行连接不一定更快    95 4.4.3  并行连接可能让人“感觉”更快一些    95 4.5  持久连接  96 4.5.1  持久以及并行连接    96 4.5.2  http/1.0+ keep-alive 连接    97 4.5.3  keep-alive 操作    98 4.5.4  keep-alive 选项    98 4.5.5  keep-alive 连接的限制和规则    99 4.5.6  keep-alive 和哑代理 100 4.5.7  插入proxy-connection 102 4.5.8  http/1.1 持久连接    104 4.5.9  持久连接的限制和规则 104 4.6  管道化连接    105 4.7  关闭连接的奥秘 106 4.7.1 “ 任意”解除连接 106 4.7.2  content-length 及截尾操作    107 4.7.3  连接关闭容限、重试以及幂等性 107 4.7.4  正常关闭连接 108 4.8  更多信息  110 4.8.1  http 连接 110 4.8.2  http 性能问题 110 4.8.3  tcp/ip  111 第二部分  http 结构 第5章  web 服务器 115 5.1  各种形状和尺寸的web 服务器 116 5.1.1  web 服务器的实现 116 5.1.2  通用软件web 服务器    117 5.1.3  web 服务器设备 117 5.1.4  嵌入式web 服务器    118 5.2  最小的perl web 服务器 118 5.3  实际的web 服务器会做些什么 120 5.4  第一步——接受客户端连接 121 5.4.1  处理新连接 121 5.4.2  客户端主机名识别 122 5.4.3  通过ident 确定客户端用户 122 5.5  第二步——接收请求报文 123 5.5.1  报文的内部表示法 124 5.5.2  连接的输入/ 输出处理结构    125 5.6  第三步——处理请求 126 5.7  第四步——对资源的映射及访问    126 5.7.1  docroot    127 5.7.2  目录列表    129 5.7.3  动态内容资源的映射 130 5.7.4  服务器端包含项 131 5.7.5  访问控制    131 5.8  第五步——构建响应 131 5.8.1  响应实体    131 5.8.2  mime 类型 132 5.8.3  重定向    133 5.9  第六步——发送响应 134 5.10  第七步——记录日志    134 5.11  更多信息  134 第6章  代理    135 6.1  web 的中间实体 136 6.1.1  私有和共享代理 136 6.1.2  代理与网关的对比 137 6.2  为什么使用代理 138 6.3  代理会去往何处 143 6.3.1  代理服务器的部署 144 6.3.2  代理的层次结构 144 6.3.3  代理是如何获取流量的 147 6.4  客户端的代理设置 148 6.4.1  客户端的代理配置:手工配置    149 6.4.2  客户端代理配置:pac 文件    149 6.4.3  客户端代理配置:wpad    150 6.5  与代理请求有关的一些棘手问题    151 6.5.1  代理uri 与服务器uri 的不同    151 6.5.2  与虚拟主机一样的问题 152 6.5.3  拦截代理会收到部分uri 153 6.5.4  代理既可以处理代理请求,也可以处理服务器请求    154 6.5.5  转发过程中对uri 的修改 154 6.5.6  uri 的客户端自动扩展和主机名解析 155 6.5.7  没有代理时uri 的解析 155 6.5.8  有显式代理时uri 的解析 156 6.5.9  有拦截代理时uri 的解析 157 6.6  追踪报文  158 6.6.1  via 首部 158 6.6.2  trace 方法    162 6.7  代理认证  164 6 | 目录 6.8  代理的互操作性 165 6.8.1  处理代理不支持的首部和方法    166 6.8.2  options:发现对可选特性的支持 166 6.8.3  allow 首部 167 6.9  更多信息  167 第7章  缓存    169 7.1  冗余的数据传输 170 7.2  带宽瓶颈  170 7.3  瞬间拥塞  171 7.4  距离时延  172 7.5  命中和未命中的 173 7.5.1  再验证    173 7.5.2  命中率    175 7.5.3  字节命中率 176 7.5.4  区分命中和未命中的情况    176 7.6  缓存的拓扑结构 177 7.6.1  私有缓存    177 7.6.2  公有代理缓存 177 7.6.3  代理缓存的层次结构 179 7.6.4  网状缓存、内容路由以及对等缓存    180 7.7  缓存的处理步骤 181 7.7.1  第一步——接收 181 7.7.2  第二步——解析 182 7.7.3  第三步——查找 182 7.7.4  第四步——新鲜度检测 182 7.7.5  第五步——创建响应 182 7.7.6  第六步——发送 183 7.7.7  第七步——日志 183 7.7.8  缓存处理流程图 183 7.8  保持副本的新鲜 183 7.8.1  文档过期    184 7.8.2  过期日期和使用期 185 7.8.3  服务器再验证 185 7.8.4  用条件方法进行再验证 186 7.8.5  if-modified-since:date 再验证    187 7.8.6  if-none-match:实体标签再验证    189 7.8.7  强弱验证器 190 7.8.8  什么时候应该使用实体标签和最近修改日期    190 7.9  控制缓存的能力 191 7.9.1  no-store 与no-cache 响应首部  191 7.9.2  max-age 响应首部    192 7.9.3  expires 响应首部    192 7.9.4  must-revalidate 响应首部 192 7.9.5  试探性过期 193 7.9.6  客户端的新鲜度限制 194 7.9.7  注意事项    194 7.10  设置缓存控制    195 7.10.1  控制apache 的http 首部    195 7.10.2  通过http-equiv 控制html 缓存    196 7.11  详细算法  197 7.11.1  使用期和新鲜生存期    198 7.11.2  使用期的计算    198 7.11.3  完整的使用期计算算法    201 7.11.4  新鲜生存期计算    202 7.11.5  完整的服务器——新鲜度算法    202 7.12  缓存和广告    204 7.12.1  发布广告者的两难处境    204 7.12.2  发布者的响应    204 7.12.3  日志迁移    205 7.12.4  命中计数和使用限制    205 7.13  更多信息  205 第8章  集成点:网关、隧道及中继    207 8.1  网关  208 8.2  协议网关  210 8.2.1  http/*:服务器端web 网关 211 8.2.2  http/https:服务器端安全网关  212 8.2.3  https/http 客户端安全加速器网关    212 8.3  资源网关  213 8.3.1  cgi 215 8.3.2  服务器扩展api 215 8.4  应用程序接口和web 服务 216 8.5  隧道  217 8.5.1  用connect 建立http 隧道 217 8.5.2  数据隧道、定时及连接管理    219 8.5.3  ssl 隧道 219 8.5.4  ssl 隧道与http/https 网关的对比 220 8.5.5  隧道认证    221 8.5.6  隧道的安全性考虑 221 8.6  中继  222 8.7  更多信息  224 第9章  web 机器人 225 9.1  爬虫及爬行方式 226 9.1.1  从哪儿开始:根集 226 9.1.2  链接的提取以及相对链接的标准化    227 9.1.3  避免环路的出现 228 9.1.4  循环与复制 228 9.1.5  面包屑留下的痕迹 229 9.1.6  别名与机器人环路 230 9.1.7  规范化url    230 9.1.8  文件系统连接环路 231 9.1.9  动态虚拟web 空间    232 9.1.10  避免循环和重复    233 9.2  机器人的http 236 9.2.1  识别请求首部 236 9.2.2  虚拟主机    236 9.2.3  条件请求    237 9.2.4  对响应的处理 238 9.2.5  user-agent 导向 239 9.3  行为不当的机器人 239 9.4  拒绝机器人访问 240 9.4.1  拒绝机器人访问标准 241 9.4.2  web 站点和robots.txt 文件 242 9.4.3  robots.txt 文件的格式 243 9.4.4  其他有关robots.txt 的知识 246 9.4.5  缓存和robots.txt 的过期    246 9.4.6  拒绝机器人访问的perl 代码    246 9.4.7  html 的robot-control 元标签    249 9.5  机器人的规范    251 9.6  搜索引擎  254 9.6.1  大格局    255 9.6.2  现代搜索引擎结构 255 9.6.3  全文索引    255 9.6.4  发布查询请求 257 9.6.5  对结果进行排序,并提供查询结果    258 9.6.6  欺诈  258 9.7  更多信息  258 第10章  http-ng    261 10.1  http 发展中存在的问题 262 10.2  http-ng 的活动 263 10.3  模块化及功能增强 263 10.4  分布式对象    264 10.5  第一层——报文传输    264 10.6  第二层——远程调用    265 10.7  第三层——web 应用    265 10.8  webmux    265 10.9  二进制连接协议    266 10.10  当前的状态    267 10.11  更多信息    267 第三部分  识别、认证与安全 第11章  客户端识别与COOKIE 机制    271 11.1  个性化接触    272 11.2  http 首部  273 11.3  客户端ip 地址 274 11.4  用户登录  275 11.5  胖url  277 11.6  COOKIE    278 11.6.1  COOKIE 的类型 278 11.6.2  COOKIE 是如何工作的 279 11.6.3  COOKIE 罐:客户端的状态    280 11.6.4  不同站点使用不同的COOKIE 282 11.6.5  COOKIE 成分 283 11.6.6  COOKIEs 版本0(netscape)    284 11.6.7  COOKIEs 版本1(rfc 2965) 285 11.6.8  COOKIE 与会话跟踪 288 11.6.9  COOKIE 与缓存 290 11.6.10  COOKIE、安全性和隐私    291 11.7  更多信息  292 第12章  基本认证机制 293 12.1  认证    294 12.1.1  http 的质询/ 响应认证框架    294 12.1.2  认证协议与首部 295 12.1.3  安全域 296 12.2  基本认证  297 12.2.1  基本认证实例 298 12.2.2  base-64 用户名/ 密码编码    298 12.2.3  代理认证 299 12.3  基本认证的安全缺陷    300 12.4  更多信息  301 第13章  摘要认证    303 13.1  摘要认证的改进    304 13.1.1  用摘要保护密码 304 13.1.2  单向摘要 306 13.1.3  用随机数防止重放攻击    307 13.1.4  摘要认证的握手机制 307 13.2  摘要的计算    308 13.2.1  摘要算法的输入数据 308 13.2.2  算法h(d) 和kd(s,d) 310 13.2.3  与安全性相关的数据(a1) 310 13.2.4  与报文有关的数据(a2) 310 13.2.5  摘要算法总述    311 13.2.6  摘要认证会话 312 13.2.7  预授权 312 13.2.8  随机数的选择 315 13.2.9  对称认证 315 13.3  增强保护质量    316 13.3.1  报文完整性保护 316 13.3.2  摘要认证首部 317 13.4  应该考虑的实际问题    317 13.4.1  多重质询 318 13.4.2  差错处理 318 13.4.3  保护空间 318 13.4.4  重写uri 319 13.4.5  缓存    319 13.5  安全性考虑    320 13.5.1  首部篡改 320 13.5.2  重放攻击 320 13.5.3  多重认证机制 320 13.5.4  词典攻击 321 13.5.5  恶意代理攻击和中间人攻击 321 13.5.6  选择明文攻击 321 13.5.7  存储密码 322 13.6  更多信息  322 第14章  安全http 323 14.1  保护http 的安全    324 14.2  数字加密  326 14.2.1  密码编制的机制与技巧    326 14.2.2  密码    327 14.2.3  密码机 328 14.2.4  使用了密钥的密码 328 14.2.5  数字密码 328 14.3  对称密钥加密技术    330 14.3.1  密钥长度与枚举攻击 330 14.3.2  建立共享密钥 332 14.4  公开密钥加密技术    332 14.4.1  rsa    333 14.4.2  混合加密系统和会话密钥    334 14.5  数字签名  334 14.6  数字证书  336 14.6.1  证书的主要内容 336 14.6.2  x.509 v3 证书 337 14.6.3  用证书对服务器进行认证    338 14.7  https——细节介绍    339 14.7.1  https 概述 339 14.7.2  https 方案 340 14.7.3  建立安全传输 341 14.7.4  ssl 握手 341 14.7.5  服务器证书 343 14.7.6  站点证书的有效性 344 14.7.7  虚拟主机与证书 345 14.8  https 客户端实例    345 14.8.1  openssl 346 14.8.2  简单的https 客户端    347 14.8.3  执行openssl 客户端    350 14.9  通过代理以隧道形式传输安全流量    351 14.10  更多信息    353 14.10.1  http 安全性    353 14.10.2  ssl 与tls 353 14.10.3  公开密钥基础设施 354 14.10.4  数字密码 354 第四部分  实体、编码和国际化 第15章  实体和编码 357 15.1  报文是箱子,实体是货物    359 15.2  content-length: 实体的大小 361 15.2.1  检测截尾 361 15.2.2  错误的content-length    362 15.2.3  content-length 与持久连接 362 15.2.4  内容编码 362 15.2.5  确定实体主体长度的规则    362 15.3  实体摘要  364 15.4  媒体类型和字符集    364 15.4.1  文本的字符编码 365 15.4.2  多部分媒体类型 365 15.4.3  多部分表格提交 366 15.4.4  多部分范围响应 367 15.5  内容编码  368 15.5.1  内容编码过程 368 15.5.2  内容编码类型 369 15.5.3  accept-encoding 首部    369 15.6  传输编码和分块编码    371 15.6.1  可靠传输 371 15.6.2  transfer-encoding 首部 372 15.6.3  分块编码 373 15.6.4  内容编码与传输编码的结合 375 15.6.5  传输编码的规则 375 15.7  随时间变化的实例    375 15.8  验证码和新鲜度    376 15.8.1  新鲜度 377 15.8.2  有条件的请求与验证码    378 15.9  范围请求  380 15.10  差异编码    382 15.11  更多信息    385 第16章  国际化    387 16.1  http 对国际性内容的支持 388 16.2  字符集与http    389 16.2.1  字符集是把字符转换为二进制码的编码  389 16.2.2  字符集和编码如何工作    390 16.2.3  字符集不对,字符就不对    391 16.2.4  标准化的mime charset 值    391 16.2.5  content-type 首部和charset 首部以及meta 标志    393 16.2.6  accept-charset 首部    393 16.3  多语言字符编码入门    394 16.3.1  字符集术语 394 16.3.2  字符集的命名很糟糕 395 16.3.3  字符    396 16.3.4  字形、连笔以及表示形式    396 16.3.5  编码后的字符集 397 16.3.6  字符编码方案 399 16.4  语言标记与http 402 16.4.1  content-language 首部    402 16.4.2  accept-language 首部    403 16.4.3  语言标记的类型 404 16.4.4  子标记 404 16.4.5  大小写 405 16.4.6  iana 语言标记注册    405 16.4.7  第一个子标记——名字空间 405 16.4.8  第二个子标记——名字空间 406 16.4.9  其余子标记——名字空间    407 16.4.10  配置和语言有关的首选项    407 16.4.11  语言标记参考表    407 16.5  国际化的uri    408 16.5.1  全球性的可转抄能力与有意义的字符的较量    408 16.5.2  uri 字符集合 408 16.5.3  转义和反转义 409 16.5.4  转义国际化字符 409 16.5.5  uri 中的模态切换 410 16.6  其他需要考虑的地方    410 16.6.1  首部和不合规范的数据    410 16.6.2  日期    411 16.6.3  域名    411 16.7  更多信息  411 16.7.1  附录    411 16.7.2  互联网的国际化 411 16.7.3  国际标准 412 第17章  内容协商与转码 413 17.1  内容协商技术    414 17.2  客户端驱动的协商    415 17.3  服务器驱动的协商    415 17.3.1  内容协商首部集 416 17.3.2  内容协商首部中的质量值    417 17.3.3  随其他首部集而变化 417 17.3.4  apache 中的内容协商 417 17.3.5  服务器端扩展 418 17.4  透明协商  419 17.4.1  进行缓存与备用候选 419 17.4.2  vary 首部    420 17.5  转码    422 17.5.1  格式转换 422 17.5.2  信息综合 423 17.5.3  内容注入 423 17.5.4  转码与静态预生成的对比    423 17.6  下一步计划    424 17.7  更多信息  424 第五部分  内容发布与分发 第18章  web 主机托管    429 18.1  主机托管服务    430 18.2  虚拟主机托管    431 18.2.1  虚拟服务器请求缺乏主机信息    432 18.2.2  设法让虚拟主机托管正常工作    433 18.2.3  http/1.1 的host 首部    437 18.3  使网站更可靠    438 18.3.1  镜像的服务器集群 438 18.3.2  内容分发网络 440 18.3.3  cdn 中的反向代理缓存 440 18.3.4  cdn 中的代理缓存    440 18.4  让网站更快    441 18.5  更多信息  441 第19章  发布系统    443 19.1  frontpage 为支持发布而做的服务器扩展  444 19.1.1  frontpage 服务器扩展    444 19.1.2  frontpage 术语表    445 19.1.3  frontpage 的rpc 协议    445 19.1.4  frontpage 的安全模型    448 19.2  webdav 与协作写作    449 19.2.1  webdav 的方法 449 19.2.2  webdav 与xml    450 19.2.3  webdav 首部集 451 19.2.4  webdav 的锁定与防止覆写 452 19.2.5  lock 方法 453 19.2.6  unlock 方法    456 19.2.7  属性和元数据 456 19.2.8  propfind 方法 457 19.2.9  proppatch 方法    459 19.2.10  集合与名字空间管理    460 19.2.11  mkcol 方法 460 19.2.12  delete 方法    461 19.2.13  copy 与move 方法    462 19.2.14  增强的http/1.1 方法    465 19.2.15  webdav 中的版本管理 466 19.2.16  webdav 的未来发展 466 19.3  更多信息  467 第20章  重定向与负载均衡    469 20.1  为什么要重定向    470 20.2  重定向到何地    471 20.3  重定向协议概览    471 20.4  通用的重定向方法    474 20.4.1  http 重定向    474 20.4.2  dns 重定向 475 20.4.3  任播寻址 480 20.4.4  ip mac 转发    481 20.4.5  ip 地址转发 482 20.4.6  网元控制协议 484 20.5  代理的重定向方法    485 20.5.1  显式浏览器配置 485 20.5.2  代理自动配置 485 20.5.3  web 代理自动发现协议    487 20.6  缓存重定向方法    492 20.7  因特网缓存协议    496 20.8  缓存阵列路由协议    497 20.9  超文本缓存协议    500 20.9.1  htcp 认证    502 20.9.2  设置缓存策略 503 20.10  更多信息    504 第21章  日志记录与使用情况跟踪    505 21.1  记录内容  506 21.2  日志格式  507 21.2.1  常见日志格式 507 21.2.2  组合日志格式 508 21.2.3  网景扩展日志格式 509 21.2.4  网景扩展2 日志格式 510 21.2.5  squid 代理日志格式    512 21.3  命中率测量    515 21.3.1  概述    515 21.3.2  meter 首部 516 21.4  关于隐私的考虑    517 21.5  更多信息  518 第六部分  附  录 附录a  uri 方案  521 附录b  http 状态码    529 附录c  http 首部参考    533 附录d  mime 类型    557 附录e  base-64 编码    603 附录f  摘要认证    607 附录g  语言标记  615 附录h  mime 字符集注册表 641 索引  661 《HTTP The Definitive Guide.pdf》,大小 6MB,ISBN:978-1565925090。简介: "I think this book is an extremely useful, very comprehensive and clearly-written reference to all aspects of the internals of the Web going well beyond just the bare mechanics of HTTP. Even where its huge detail does stop on a topic, there are extensive and useful references for further reading on each topic covered given at the end of nearly every chapter." - John Collins, News@UK, March 2003

img
[完整][中文][VB][Visual.Basic.2010.从入门到精通]....

[完整][中文][VB][Visual.Basic.2010.从入门到精通].[微软技术丛书].pdf 作  者:(美)哈尔弗森 著,张丽蘋,汤涌涛,曹丹阳 译 出 版 社:清华大学出版社 出版时间:2011-1-1 版  次:1页  数:430字  数:675000印刷时间:2011-1-1开  本:16开纸  张:胶版纸印  次:1I S B N:9787302244868 内容简介 本书全面介绍了visual basic 2010的编程思想及特色,主要包括如何使用控件创建简单的应用程序,如何编写条件分支结构和循环结构、调试程序以及更正程序中的错误,如何设计用户界面、实现数据库和web编程等。   本书从最基础的知识讲起,结合丰富的示例,由浅入深,内容翔实,是掌握visual basic 2010编程的经典图书,非常适合初学者迅速入门并获得提高,也适用于有经验的编程人员快速掌握visual studio编程的核心技术。木书是各级程序员学习visual basic 2010编程技术必备的参考书。

img
网管教程 从入门到精通软件篇.txt

网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot   向系统分区写入新的分区引导扇区。只有在使用故障恢复控制台时,才能使用 fixboot 命令。   fixboot [drive]   参数  驱动器   将要写入引导扇区的驱动器。它将替代默认的驱动器(即用户登录的系统分区)。例如,驱动器:D:   范例   下列命令范例向驱动器 D: 的系统分区写入新的分区引导扇区:   fixboot d:   注意: 如果不带任何参数,fixboot 命令将向用户登录的系统分区写入新的分区引导扇区。   Fixmbr   修复启动磁盘的 主启动记录。fixmbr 命令仅在使用故障恢复控制台时才可用。   fixmbr [ device_name]   参数   device_name   要写入新的主引导记录的设备(驱动器)。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   范例   下列命令示例向指定设备写入一个新的主引导记录:   fixmbr DeviceHardDisk0   注意 如果不指定 device_name,新的主引导记录将被写入引导设备,即装载主系统的驱动器。 如果系统检测到无效或非标准分区表标记,将提示用户是否继续执行该命令。除非您访问驱动器有问题,否则不要继续进行。向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。   format   将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 format 命令。   format [ drive:] [ /fs:file-system]   参数   drive:   指定要格式化的驱动器。不能从故障恢复控制台格式化软盘。   /q   对驱动器进行快速格式化。不扫描驱动器看是否有坏区域,因此只应对以前格式化过的驱动器使用该参数。   /fs:file-system   指定要使用的文件系统:FAT、FAT32 或 NTFS 。如果未指定文件系统,将使用现有的文件系统格式。   Map   显示驱动器号与物理设备名称的映射。该信息在运行 fixboot 和 fixmbr 命令时非常有用。   map 命令仅在使用故障恢复控制台时才可用。   Map [ arc]   参数   arc   指示 map 命令显示高级 RISC 计算 (ARC)设备名称而不是设备名称。以下是 ARC 设备名称的范例:   multi(0)disk(0)rdisk(0)partition(1)   等价的设备名称是:   DeviceHardDisk0Partition1   范例   下例将物理设备名映射为使用 ARC 设备名称的驱动器号:   map arc   注意 如果不使用 arc 参数,则 map 命令显示设备名称。 map 命令还显示文件系统的类型和每个磁盘的大小(MB)。 二。★★★常见文件扩展名和它们的说明 常见文件扩展名和它们的说明 A ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 ANI:Windows系统中的动画光标 ARC:LH ARC的压缩档案文件 ARJ:Robert Jung ARJ压缩包文件 ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件 ASF:Microsoft高级流媒体格式文件 ASM:汇编语言源文件,Pro/E装配文件 ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件 AST:Astound多媒体文件;ClarisWorks“助手”文件 Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh未打包文件 A3W,A4W,A5W:未打包的Authorware Windows文件 B BAK:备份文件 BAS:BASIC源文件 BAT:批处理文件 BIN:二进制文件 BINHex:苹果的一种编码格式 BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音捆绑文件(一种MIDI程序) C C0l:台风波形文件 CAB:Microsoft压缩档案文件 CAD:Softdek的Drafix CAD文件 CAM:Casio照相机格式 CAP:压缩音乐文件格式 CAS:逗号分开的ASCⅡ文件 CCB:Visual Basic动态按钮配置文件 CCH:Corel图表文件 CCO:CyberChat数据文件 CCT:Macromedia Director Shockwave投影 CDA:CD音频轨道 CDF:Microsoft频道定义格式文件 CDI:Philip的高密盘交互格式 CDM:Visual dBASE自定义数据模块文件 CDR:CorelDRAW绘图文件;原始音频CD数据文件 CDT:CorelDRAW模板 CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件 CFG:配置文件 CGI:公共网关接口脚本文件 CGM:计算机图形元文件 CH:OS/2配置文件 CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片 CHM:编译过的HTML文件 CHP:Ventura Publisher章节文件 CHR:字符集(字体文件) CHT:ChartViem文件;Harvard Graphics矢量文件 CIF:Adaptec CD 创建器 CD映像文件 CIL:Clip Gallery下载包 CIM:SimCity 2000文件 CIN:OS/2改变控制文件用于跟踪INI文件中的变化 CLASS:Java类文件 CLP:Windows 剪贴板文件 CLL:Crick Software Clicker文件 CLS:Visual Basic类文件 CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件 CPI:Microsoft MS-DOS代码页信息文件 CPL:控制面板扩展名,Corel颜色板 CPP:C++代码文件 CPR:Corel提供说明书文件 CPT:Corel 照片-绘画图像 CST:Macromedia Director Cast文件 CUR:Windows光标文件 D DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件 DBX:DataBearn图像;Microsoft Visual FoxPro表格文件 DCT:Microsoft Visual FoxPro数据库容器 DCU:Delphi编译单元文件 DCX:Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏 DIR:MacromediaDirector文件 DLL:动态链接库 DOC:FrameMaker或FrameBuilder文档;Word Star文档、Word Perfect文档、Microsoft:Word文档;DisplayWrite文档 DOT:Microsoft Word文档模板 DPL:Borland Delph 3压缩库 DRV:驱动程序 DRW:Micrografx Designer/Draw;Pro/E绘画文件 DSF:Micrografx Designer VFX文件 DSG:DOOM保存的文件 DSM:Dynamic Studio音乐模块(MOD)文件 DSP:Microsoft Developer Studio工程文件 DSQ:Corel QUERY(查询)文件 DST:刺绣机图形文件 DSW:Microsoft Developer Studio工作区文件 DTA:World Bank(世界银行)的STARS数据文件 DTD:SGML文档类型定义(DTD)文件 DTED:地面高度数字数据(图形的数据格式)文件 DTF:Symantec Q&A相关的数据库数据文件 DTM:DigiTrakker模块文件 DUN:Microsoft拔号网络导出文件 DV:数字视频文件(MIME) DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式 DXR:Macromedia Director受保护(不可编辑)电影文件 E EDA:Ensoniq ASR磁盘映像 EDD:元素定义文档(FrameMaker+SGML文档) EDE:Ensoniq EPS磁盘映像 EDK:Ensoniq KT磁盘映像 EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像 EDS:Ensoniq SQ80磁盘映像 EDV:Ensoniq VFX-SD磁盘映像 EFA:Ensoniq ASR文件 EFE:Ensoniq EPS文件 EFK:Ensoniq KT文件 EFQ:Ensoniq SQ1/SQ2/Ks32文件 EFS:Ensoniq SQ80文件 EFV:Ensoniq VFX-SD文件 EMD:ABT扩展模块 EMF:Windows增强元文件 EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件 EXE:可执行文件(程序) F FAV:Microsoft Outlook导航条 FAX:传真类型图像 FCD:虚拟CD-ROM FDF:Adobe Acrobat表单文档文件 FLA:Macromedia Flash电影 FND:Microsoft Explorer保存的搜索文件(Find applet) FON:系统字体 FRT:Microsoft FoxPro报表文件 FRX:Visual Basic表单文本;Microsoft FoxPro报表文件 FXP:经Microsoft FoxPro编译的源文件 G GDM:铃声、口哨声和声音板模块格式 GetRight:GetRight未完成的下载文件 GHO:Norton 克隆磁盘映像 GID:Windows 95全局索引文件(包括帮助状态) GIF:CompuServe位图文件 GL:动画格式 GRP:程序管理组 H HEX:Macintosh BinHex2.0文件 HLP:帮助文件;Date CAD Windows帮助文件 HPP:C++程序头文件 HQX:Macintosh BinHex 4.0文件 HT:HyperTerminal(超级终端) HTM,HTML:超文本文档 HTT:Microsoft超文本模板 HTX:扩展HTML模板 I ICO:Windows图标 IDX:Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook Express文件 IMG:GEM映像 INF:信息文件 INI:初始化文件;Mwave DSP Synth的“nwsynth.ini” GMS安装;Cravis Ultrasound bank安装 INP:Oracle 3.0版或早期版本的表单源代码 INRS:INRS远程通信声频 INS:InstallShield安装脚本;X-Internet签字文件;Ensoniq EPS字簇设备;Cell/ⅡMAC/PC抽样设备 INT:中间代码,当一个源程序经过语法检查后编译产生一个可执行代码 IOF:Findit文档 IQY:Microsoft Internet查询文件 ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件 ISP:X-Internet签字文件 IST:数字跟踪设备文件 ISU:InstallShield卸装脚本 IT:脉冲跟踪系统音乐模块(MOD)文件 ITI:脉冲跟踪系统设备 ITS:脉冲跟踪系统抽样,Internet文档位置 IV:Open Inventor中使用的文件格式 IVD:超过20/20微观数据维数或变量等级文件 IVP:超过20/20的用户子集配置文件 IVT:超过20/20表或集合数据文件 IVX:超过20/20微数据目录文件 IW:Idlewild屏幕保护程序 IWC:Install Watch文档 J J62:Ricoh照相机格式 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JFF,JFIF,JIF:JPEG文件 JPE,JPEG,JPG:JPEG图形文件 JS:Javascript源文件 JSP:HTML网页,其中包含有对一个Java servlet的参考 K KAR:卡拉OK MIDI文件(文本+MIDI) L LAB:Visual dBASE标签文件 LBT,LBX:Microsoft FoxPro标签文件 LDB:Microsoft Access加锁文件 LHA:LZH更换文件后缀 LOG:日志文件 LZH:LH ARC压缩档案 M M1V:MPEG相关文件(MIME"mpeg"类型) M3D:Corel Motion 3D动画文件 M3U:MPEG URL(MIME声音文件) MAM:Microsoft Access宏 MAQ:Microsoft Access查询文件 MAR:Microsoft Access报表文件 MBX:Microsoft Outlook保存email格式;Eudora邮箱 MCW:Microsoft Word的Macintosh文档 MDB:Microsoft Access数据库 MDN:Microsoft Access空数据库模板 MDW:Microsoft Access工作组文件 MID:MIDI音乐 MMM:Microsoft多媒体电影 MOV:QuickTime for Windows电影 MP2:第二层MPEG音频文件 MP3:第三层MPEG音频文件 MPA:MPEG相关文件,MIME“mpeg类型” MPE,MPEG,MPG:MPEG动画文件 MPP:Microsoft工程文件;CAD绘图文件格式 MPR:Microsoft FoxPro菜单(已编译) MSI:Windows 安装器包 MSN:Microsoft 网络文档;Descent Mission文件 O OBD:Microsoft Office活页夹 OBJ:对象文件 OBZ:Microsoft Office活页夹向导 OCX:Microsoft对象链接与嵌入定制控件 ODS:Microsoft Outlook Express邮箱文件 OFT:Microsoft Outlook模板 OPX:OPL扩展DLL(动态链接库) OSS:Microsoft Office查找文件 OST:Microsoft Exchange / Outlook 离线文件 P PAL:压缩文件 PART:Go!Zilla部分下载文件 PAS:Pascal源代码 PCS:PICS动画文件 PDF:Adobe Acrobat 可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件 PHP,PHP3:包含有PHP脚本的HTML网页 PHTML:包含有PHP脚本的HTML网页;由Perl分析解释的HTML PM5:Pagemaker 5.0文件 PM6:Pagemaker 6.0文件 PPS:Microsoft Powerpoint幻灯片放映 PPT:Microsoft Powerpoint演示文稿 PRF:Windows系统文件,Macromedia导演设置文件 PSD:Adobe photoshop位图文件 PSM:Protracker Studio模型格式;Epic游戏的源数据文件 PST:Microsoft Outlook个人文件夹文件 PWL:Windows 95口令列表文件 Q QIF:QuickTime相关图像(MIME);Quicken导入文件 QT,QTM:QuickTime电影 QTI,QTIF:QuickTime相关图像 QTP:QuickTime优先文件 QTS:Mac PICT图像文件;QuickTime相关图像 QTX:QuickTime相关图像 R RA:RealAudio声音文件 RAM:RealAudio元文件 RAR:RAR压缩档案(Eugene Roshall格式) REC:录音机宏;RapidComm声音文件 REG:注册表文件 REP:Visual dBASE报表文件 RES:Microsoft Visual C++资源文件 RM:RealAudio视频文件 RMF:Rich Map格式(3D游戏编辑器使用它来保存图) ROM:基于盒式磁带的家庭游戏仿真器文件(来自Atari 2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改) Rxx:多卷档案上的RAR压缩文件(xx=1~99间的一个数字) S SAV:游戏保存文件 SB:原始带符号字节(8位)数据 SBK:Creative Labs的Soundfont 1.0 Bank文件;(Soundb laster)/EMU SonndFont v1.x Bank文件 SBL:Shockwave Flash对象文件 SCF:Windows Explorer命令文件 SCH:Microsoft Schedule+1 SCP:拨号网络脚本文件 SCR:Windows屏幕保护;传真图像;脚本文件 SFX:RAR自解压档案 SHTML:含有服务器端包括(SSI)的HTML文件 SPL:Shockwave Flash对象;DigiTrakker抽样 SQL:Informix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名 STM:.shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件 STR:屏幕保护文件 SWA:在Macromedia导演文件(MP3文件)中的Shockwave声音文件 SWF:Shockwave Flash对象 SYS:系统文件 T T64:Commodore 64仿真器磁带映像文件 THEME:Windows 95桌面主题文件 TIF,TIFF:标签图像文件格式(TIFF)位图 TMP:Windows临时文件 TRM:终端文件 TXT:ASCⅡ文本格式的声音数据 TZ:老的压缩格式文件 V VBA:VBase文件 VBP:Microsoft Visual Basic工程文件 VBW:Microsoft Visual Basic工作区文件 VBX:Microsoft Visual Basic用户定制控件 VQE,VQL:Yamaha Sound-VQ定位器文件 VQF:Yamaha Sound-VQ文件(可能出现标准) VRF:Oracle 7配置文件 VSL:下载列表文件(GetRight) W WAB:Microsoft Outlook文件 WAD:包含有视频、玩家水平和其他信息的DOOM游戏的大文件 WAL:Quake 2正文文件 WAV:Windows波形声形 WBK:Microsoft Word备份文件 WFM:Visual dBASE Windows表单 WFN:在CorelDRAW中使用的符号 WIZ:Microsoft Word向导 WRL:虚拟现实模型 WWL:Microsoft Word内插器文件 X XLK:Microsoft Excel备份 XLL:Microsoft Excel内插器文件 XLM:Microsoft Excel宏 XLS:Microsoft Excel工作单 XLT:Microsoft Excel模板 XLV:Microsoft Excel VBA模块 XLW:Microsoft Excel工作簿/工作区 Z ZAP:Windows软件安装配置文件 ZIP:Zip文件 000-999:用于为老版本(或备份)文件编号(比如:被安装程序改变的CONFIG.SYS文件);又可用于为小范围的PC应用程序的多个用户相关数据文件编号 12M:Lotus 1-2-3 97 SmartMaster文件 123:Lotus 1-2-3 97文件 2D:VersaCAD的2维绘画文件 2GR,3GR:在Windows之下的VGA图形驱动程序/配置文件 386:在386或更高级处理器上使用的文件 3D:VersaCAD的3维绘画文件 3DM:3D NURBS建模器,Rhino 3DS:3D Studio(DOS下)格式文件 386:在386或更高级处理器上使用的文件 4GE:Informix 4GL编译后代码 4GL:Informix 4GL源代码 669:Composer 669;UNIX Composer音乐模型文件;669磁道模块 #01 及更高的号:为计算机演示而扫描的一系列电影的图片文件编号方法 ???:OS/2用来跟踪档案文件 @@@:用于安装过程中的屏幕文件和用于Microsoft Code view for C这样的应用程序的指导文件 [color=#6b6b6b] [/color] 三。★★★GHOST怎么用? 系统备份 使用Ghost进行系统备份,有整个硬盘(Disk)和分区硬盘(Partition)两种方式。在菜单中点击Local(本地)项,在右面弹出的菜单中有3个子项,其中Disk表示备份整个硬盘(即克隆)、Partition表示备份硬盘的单个分区、Check表示检查硬盘或备份的文件,查看是否可能因分区、硬盘被破坏等造成备份或还原失败。分区备份作为个人用户来保存系统数据,特别是在恢复和复制系统分区时具有实用价值。 选Local→Partition→To Image菜单,弹出硬盘选择窗口,开始分区备份操作。点击该窗口中白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(若没有鼠标,可用键盘进行操作:TAB键进行切换,回车键进行确认,方向键进行选择)。 在弹出的窗口中选择备份储存的目录路径并输入备份文件名称,注意备份文件的名称带有GHO的后缀名。 接下来,程序会询问是否压缩备份数据,并给出3个选择:No表示不压缩,Fast表示压缩比例小而执行备份速度较快,High就是压缩比例高但执行备份速度相当慢。最后选择Yes按钮即开始进行分区硬盘的备份。Ghost备份的速度相当快,不用久等就可以完成,备份的文件以GHO后缀名储存在设定的目录中。 系统克隆 硬盘的克隆就是对整个硬盘的备份和还原。选择菜单Local→Disk→To Disk,在弹出的窗口中选择源硬盘(第一个硬盘),然后选择要复制到的目标硬盘(第二个硬盘)。注意,可以设置目标硬盘各个分区的大小,Ghost可以自动对目标硬盘按设定的分区数值进行分区和格式化。选择Yes开始执行。 Ghost能将目标硬盘复制得与源硬盘几乎完全一样,并实现分区、格式化、复制系统和文件一步完成。只是要注意目标硬盘不能太小,必须能将源硬盘的数据内容装下。 Ghost还提供了一项硬盘备份功能,就是将整个硬盘的数据备份成一个文件保存在硬盘上(菜单Local→Disk→To Image),然后就可以随时还原到其他硬盘或源硬盘上,这对安装多个系统很方便。使用方法与分区备份相似。 系统还原 如果硬盘中备份的分区数据受到损坏,用一般数据修复方法不能修复,以及系统被破坏后不能启动,都可以用备份的数据进行完全的复原而无须重新安装程序或系统。当然,也可以将备份还原到另一个硬盘上。 要恢复备份的分区,就在界面中选择菜单Local→Partition→From Image,在弹出窗口中选择还原的备份文件,再选择还原的硬盘和分区,点击Yes按钮即可。 软件特性 存贮介质 Ghost 支持的存储介质超出了我们的想象,它支持对等LPT接口、对等USB接口、对等TCP/IP接口、SCSI磁带机、便携式设备(JAZ、ZIP、MO等)、光盘刻录机(CDR、CDRW)等。而这些特性不需要任何外带的驱动程序和软件,只需一张软盘就可以做到!特别是对光盘刻录机的支持,如今的刻录机和空白光盘都十分便宜,非常适合作备份的用途。 兼容性 Ghost 对现有的操作系统都有良好的支持,包括FAT16、FAT32、NTFS、HPFS、UNIX、NOVELL等文件存储格式。同以前版本不同的是,Ghost 2001加入了对Linux EX2的支持(FIFO文件存储格式),这也就意味着Linux的用户也可以用Ghost来备份系统了。 配套软件支持 Ghost浏览器:在以前的Ghost版本中,我们只能对系统进行简单的备份、复制、还原,要恢复单个的文件和文件夹还要使用外带的GhostEXP软件。现在,Symantec公司已经将Ghost浏览器整合在软件中。Ghost浏览器采用类似于资源管理器的界面,通过它,我们可以方便迅速地在备份包中找出我们想要的文件和文件夹并还原。 Gdisk:Gdisk是一个新加入的实用工具,它彻底取代了FDisk和format: * 快速格式化。 * 隐藏和显示分区的能力。此功能允许一个以上的主DOS分区,并且每个分区上的操作系统有不同的版本。隐藏分区的能力使计算机习惯于引导到选定的可引导分区,忽略其他隐藏分区中相同操作系统的安装。 * 全面的分区报告。 * 高度安全的磁盘擦除。提供符合美国国防部标准和更高安全标准的磁盘擦除选项。 和使用交互式菜单的FDisk不同,GDisk是由命令行驱动的。这提供了更快的配置磁盘分区和在批处理文件中定义GDisk操作的能力。但与此同时,几十个参数会令普通用户头疼,因此笔者不推荐一般用户使用,Symantec公司也应该推出相应的GUI(图形用户界面)控制台以方便用户使用。具体的参数说明可以用命令行gdisk/?了解。 Live Update Live Update是Symantec公司软件的一个通用升级程序,它能够检查当前系统中已安装的Symantec软件,并且通过英特网对软件进行在线升级。 在安装Ghost 2001时,安装程序自动升级了Live Update程序的版本。 Ghost 的进阶篇 附加的命令行参数:(限Ghost的无人备份/恢复/复制) 其实Ghost 2001的功能远远不止它主程序中显示的那些,Ghost可以在其启动的命令行中添加众多参数以实现更多的功能。命令行参数在使用时颇为复杂,不过我们可以制作批处理文件,从而“一劳永逸”(类似于无人安装Windows 98和Windows 2000)现在让我们来了解一些常用的参数(了解更加详细的参数介绍可查看Ghost的帮助文件)。 1.-rb 本次Ghost操作结束退出时自动重启。这样,在复制系统时就可以放心离开了。 2.-fx 本次Ghost操作结束退出时自动回到DOS提示符。 3.-sure 对所有要求确认的提示或警告一律回答“Yes”。此参数有一定危险性,只建议高级用户使用。 4.-fro 如果源分区发现坏簇,则略过提示强制拷贝。此参数可用于试着挽救硬盘坏道中的数据。 [email=5.@filename][color=#0000ff]5.@filename[/color][/email] 在filename中指定txt文件。txt文件中为Ghost的附加参数,这样做可以不受DOS命令行150个字符的限制。 6.-f32 将源FAT16分区拷贝后转换成FAT32(前提是目标分区不小于2G)。WinNT 4和Windows95、97用户慎用。 7.-bootcd 当直接向光盘中备份文件时,此选项可以使光盘变成可引导。此过程需要放入启动盘。 8.-fatlimit 将NT的FAT16分区限制在2G。此参数在复制Windows NT分区,且不想使用64k/簇的FAT16时非常有用。 9.-span 分卷参数。当空间不足时提示复制到另一个分区的另一个备份包。 10.-auto 分卷拷贝时不提示就自动赋予一个文件名继续执行。 11.-crcignore 忽略备份包中的CRC ERROR。除非需要抢救备份包中的数据,否则不要使用此参数,以防数据错误。 12.-ia 全部映像。Ghost会对硬盘上所有的分区逐个进行备份。 13.-ial 全部映像,类似于-ia参数,对Linux分区逐个进行备份。 14.-id 全部映像。类似于-ia参数,但包含分区的引导信息。 15.-quiet 操作过程中禁止状态更新和用户干预。 16.-script 可以执行多个Ghost命令行。命令行存放在指定的文件中。 17.-span 启用映像文件的跨卷功能。 18.-split=x 将备份包划分成多个分卷,每个分卷的大小为x兆。这个功能非常实用,用于大型备份包复制到移动式存储设备上,例如将一个1.9G的备份包复制到3张刻录盘上。 19.-z 将磁盘或分区上的内容保存到映像文件时进行压缩。-z或-z1为低压缩率(快速);-z2为高压缩率(中速);-z3至-z9压缩率依次增大(速度依次减慢)。 20.-clone 这是实现Ghost无人备份/恢复的核心参数。使用语法为: -clone,MODE=(operation),SRC=(source),DST=(destination),[SZE(size),SZE(size)......] 此参数行较为复杂,且各参数之间不能含有空格。   其中operation意为操作类型,值可取:copy:磁盘到磁盘;load:文件到磁盘;dump:磁盘到文件;pcopy:分区到分区;pload:文件到分区;pdump:分区到文件。 Source意为操作源,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径。 Destination意为目标位置,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径;@CDx,刻录机,x表示刻录机的驱动器号,从1开始。 下面举例说明 命令行参数:ghostpe.exe -clone,mode=copy,src=1,dst=2 完成操作:将本地磁盘1复制到本地磁盘2。 命令行参数:ghostpe.exe -clone,mode=pcopy,src=1:2,dst=2:1 完成操作:将本地磁盘1上的第二分区复制到本地磁盘2的第一分区。 命令行参数:ghostpe.exe-clone,mode=load,src=g:Λprtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M 完成操作:从映像文件装载磁盘1,并将第一个分区的大小调整为450MB,第二个调整为1599MB,第三个调整为2047MB。 命令行参数:ghostpe.exe -clone,mode=pdump,src2:1:4:6,dst=d:prt246.gho 完成操作:创建仅具有选定分区的映像文件。从磁盘2上选择分区1、4、6。 了解了这些参数后,我们就可以轻松地实现Ghost的无人备份/复制/恢复了。冲杯咖啡吧。 一些示例 ghost.exe -clone,mode=copy,src=1,dst=2 -sure 硬盘对拷 ghost.exe -clone,mode=pcopy,src=1:2,dst=2:1 -sure 将一号硬盘的第二个分区复制到二号硬盘的第一个分区 ghost.exe -clone,mode=pdump,src=1:2,dst=g:bac.gho 将一号硬盘的第二个分区做成映像文件放到g分区中 ghost.exe -clone,mode=pload,src=g:bac.gh2,dst=1:2 从内部存有两个分区的映像文件中,把第二个分区还原到硬盘的第二个分区 ghost.exe -clone,mode=pload,src=g:bac.gho,dst=1:1 -fx -sure -rb 用g盘的bac.gho文件还原c盘。完成后不显示任何信息,直接启动。 ghost.exe -clone,mode=load,src=g:bac.gho,dst=2,SZE1=60P,SZE2=40P 将映像文件还原到第二个硬盘,并将分区大小比例修改成60:40 还原磁盘 首先做一个启动盘,包含Config.sys,Autoexec.bat,Command.com,Io.sys,Ghost.exe文件(可以用windows做启动盘的程序完成)。 Autoexec.bat可以包含以下命令: Ghost.exe -clone,mode=pload,src=d:bac.gho,dst=1:1 -fx -sure -rb 利用在d盘的文件自动还原,结束以后自动跳出ghost并且重新启动。 开机自动做C区的备份,在D区生成备份文件bac.gho。 ghost.exe -clone,mode=pdump,src=1:1,dst=d:bac.gho -fx -sure -rb 还原光盘 包含文件:Config.sys,Autoexec.bat,Mscdex.exe(CDROM执行程序),Oakcdrom.sys(ATAPI CDROM兼容驱动程序),Ghost.exe Config.sys内容为: DEVICE=OAKCDROM.SYS /D:IDECD001 Autoexec.bat内容为: MSCDEX.EXE /D:IDECE001 /L:Z Ghost -clone,mode=load,src=z:bac.gho,dst=1:1 -sure -rb 可以根据下面的具体说明修改实例 -clone 在使用时必须加入参数,它同时也是所有的switch{batch switch}里最实用的一种,下面是clone所定义的参数 -clone, mode={copy|load|dump|pcopy|pload|pdump}, src={drive|file|driveartition}, dst={drive|file|driveartition} mode指定要使用哪种clone所提供的命令 copy 硬盘到硬盘的复制(disk to disk copy) load 文件还原到硬盘(file to disk load) dump 将硬盘做成映像文件(disk to file dump) pcopy 分区到分区的复制(partition to partition copy) pload 文件还原到分区(file to partition load) pdump 分区备份成映像文件(partition to file dump) src指定了ghost运行时使用的源分区的位置模式及其意义: mode命令 对应mode命令src所使用参数 例子 COPY/DUMP 源硬盘号。 以1代表第一号硬盘 LOAD 映像文件名 g:/back98/setup98.gho 或装置名称(drive) PCOPY/PDUMP 源分区号。 1:2代表的是硬盘1的第二个分区 PLOAD 分区映像文件名加上分区号或是驱动器名加上分区号。 g:back98setup98.gh2,代表映像文件里的第二个分区 dst运行Ghost时使用的目标位置模式及其意义: mode命令 对应mode命令dst所使用参数 例子 COPY/DUMP 目的硬盘号。 2代表第二号硬盘 LOAD 硬盘映像文件名。 例g:back98setup98.gho PCOPY/PLOAD 目的分区号。 2:2 代表的是,硬盘2的第二个分区 PDUMP 分区映像文件名加分区号。 g:back98setup98.gh2 SZEn指定所使用目的分区的大小 n=xxxxM 指定第n目的分区的大小为xxxxMB SZE2=800M表示分区2的大小为800MB n=mmP 指定地n的目的分区的大小为整个硬盘的mm个百分比。 其他参数 -fxo 当源物件出现坏块时,强迫复制继续进行 -fx 当ghost完成新系统的工作后不显示"press ctrl-alt-del to reboot"直接回到DOS下 -ia 完全执行扇区到扇区的复制。当由一个映像文件或由另一个硬盘为来源,复制一个分区时,Ghost将首先检查来源分区,再决定是要复制文件和目录结构还是要做映像复制(扇区到扇区)。预设是这种形式。但是有的时候,硬盘里特定的位置可能会放一些隐藏的与系统安全有关的文件。只有用扇区到扇区复制的方法才能正确复制 -pwd and -pwd=x 给映像文件加密 -rb 在还原或复制完成以后,让系统重新启动 -sure 可以和clone合用。Ghost不会显示"proceed with disk clone-destination drive will be overwritten?"提示信息 注意事项 1. 在备份系统时,单个的备份文件最好不要超过2GB。 2.在备份系统前,最好将一些无用的文件删除以减少Ghost文件的体积。通常无用的文件有:Windows的临时文件夹、IE临时文件夹、Windows的内存交换文件。这些文件通常要占去100多兆硬盘空间。 3.在备份系统前,整理目标盘和源盘,以加快备份速度。 4.在备份系统前及恢复系统前,最好检查一下目标盘和源盘,纠正磁盘错误。 5.在恢复系统时,最好先检查一下要恢复的目标盘是否有重要的文件还未转移,千万不要等硬盘信息被覆盖后才后悔莫及啊。 6.在选择压缩率时,建议不要选择最高压缩率,因为最高压缩率非常耗时,而压缩率又没有明显的提高。 7.在新安装了软件和硬件后,最好重新制作映像文件,否则很可能在恢复后出现一些莫名其妙的错误。 ------------------------------------------------------------------------------- Ghostpe.exe菜单选项介绍 Norton Ghost的帮助文件中要求Ghostpe.exe在纯DOS下运行,其实它在WINDOWS的MS-DOS中运行也是可以的,同样可以对系统进行备份和还原。 开机进入DOS,键入Ghostpe.exe所在的目录路径名,比如:E:Ghostpe.exe 回车,程序即开始运行。首先出现的是Ghost版本介绍窗口,回车后进入主界面。菜单选项有:   (一)“Local”(本地的)   1、Disk(磁盘) (1) To Disk(硬盘到硬盘的复制) (2)To Image(硬盘内容备份为镜像) (3)From Image(从镜像文件恢复至硬盘)  2、Partition(分区)   (1)To Partition(分区到分区的复制)   (2)To Image(分区内容备份为镜像)   (3)From Image(从镜像文件恢复至分区)  3、Check(检查) (1) Image File(镜像文件) (2)Disk(磁盘)   (二)Option(设置项,一般情况下使用默认值即可)   (三)Quit(退出) Norton ghost――克隆硬盘的魅影 我们能用Ghost做什么   ●可以创建硬盘镜像备份文件   ●可以将备份恢复到原硬盘上   ●磁盘备份可以在各种不同的存储系统间进行   ●支持FAT16/32、NTFS、OS/2等多种分区的硬盘备份   ●支持Win9X、NT、UNIX、Novell等系统下的硬盘备份   ●可以将备份复制(克隆)到别的硬盘上   ●在复制(克隆)过程中自动分区并格式化目的硬盘 Ghost是最著名的硬盘复制备份工具,因为它可以将一个硬盘中的数据完全相同地复制到另一个硬盘中,因此大家就将Ghost这个软件称为硬盘“克隆”工具。实际上,Ghost不但有硬盘到硬盘的克隆功能,还附带有硬盘分区、硬盘备份、系统安装、网络安装、升级系统等功能。1998年6月,出品Ghost的Binary公司被著名的Symantec公司购并,因此该软件的后续版本就改称为Norton Ghost,成为Nordon系列工具软件中的一员。1999年2月,Symantec公司发布了Norton Ghost的5.1C版本,该版本包含了多个硬盘工具,并且在功能上作了较大的改进,使之成为了一个真正的商业软件。 安装 本公司为使各位客户的机器万无一失,早已经为您的机器中装入了GHOST软件,并在您取走机器前为您做好备份,免去您的后顾之忧。此软件不需安装,复制即可使用。 Ghost硬盘克隆 Ghost就是克隆硬盘的程序,该程序在DOS下、Windows9.X下都可执行,所以要进行硬盘的克隆,请先进入到Ghost子目录,运行Ghost.exe程序,需要注意的是,如果是在DOS下运行该程序时,在运行该程序前最好启动DOS的鼠标驱动程序,因为Ghost的操作画面是仿窗口画面,使用鼠标点击来选择会方便一些――虽然也可以用键盘来操作。另外在备份或克隆硬盘前最好清理一下硬盘――删除不用文件、清空回收站、碎片整理等。 1. 分区备份 使用Ghost复制备份,有整个硬盘(Disk)和分区硬盘(Partition)两种备份方式。在菜单中点击“Local”(本地)项,在右面弹出的菜单中有三个子项,其中“Disk”表示整个硬盘备份(也就是克隆),“Partition”表示单个分区硬盘备份以及硬盘检查“Check”。“Check”项的功能是检查硬盘或备份的文件,看是否可能因分区、硬盘被破坏等造成备份或还原失败。而分区备份作为个人用户来保存系统数据,特别是在恢复和复制系统分区具有实用价值。 选“Local/Partition/To Image”菜单,弹出硬盘选择窗口,开始分区备份操作。点击该窗口中白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(用鼠标点击)。 然后在弹出的窗口中选择备份储存的目录路径并输入备份文件名称,注意备份文件的名称带有GHO的后缀名。 接下来,程序会询问是否压缩备份数据,并给出三个选择。“No”表示不压缩,“Fast”表示小比例压缩而备份执行速度较快,“High”就是高比例压缩但备份执行速度较慢。最后,选择“Yes”按钮即开始进行分区硬盘的备份。Ghost备份的速度相当快,不用久等就可以完成备份,备份的文件以GHO后缀名储存在设定的目录中。 2. 分区备份的还原 如果硬盘中备份的分区数据受到损坏,用一般磁盘数据修复方法不能修复,以及系统被破坏后不能启动,都可以用备份的数据进行完全的复原,无须重新安装程序或系统。当然,也可以将备份还原到另一个硬盘上。 要恢复备份的分区,就在界面中选择菜单“Local/Partition/From Image”,在弹出窗口中选择还原的备份文件,再选择还原的硬盘和分区,点击“Yes”按钮即可。 恢复还原时要注意的是,硬盘分区的备份还原是要将原来的分区一成不变地还原出来,包括分区的类型、数据的空间排列等。 3. 硬盘的克隆 硬盘的克隆就是对整个硬盘的备份和还原,选择菜单“Local/Disk/To Disk”,在弹出的窗口中选择源硬盘(第一个硬盘),然后选择要复制到的目的硬盘(第二个硬盘)。注意,可以设置目的硬盘各个分区的大小,Ghost可以自动对目的硬盘按设定的分区数值进行分区和格式化。选择“Yes”开始执行。 Ghost能将目的硬盘复制得与源硬盘几乎完全一样,并实现分区、格式化、复制系统和文件一步完成。只是要注意目的硬盘不能太小,必须能将源硬盘的内容装下。   Ghost还提供了一项硬盘备份功能,就是将整个硬盘的数据备份成一个文件保存在硬盘上(菜单“Local/Disk/To Image”),然后就可以随时还原到其它硬盘或原硬盘上。这对要安装多个系统硬盘很方便。使用方法与分区备份相似。要注意的是,备份成的文件不能大于2GB。 [table=96%][tr][td][align=right][color=#6b6b6b]网管联盟.[/color][/align][color=#6b6b6b]四。★★★如何防范恶意网站 知己知彼   如何判断自己是遇到了恶意网站的攻击,症状多种多样:   1. 开机自动登录网站。   2. 启动IE,自动登录网站,无法修复主页设置。   3. IE不断打开窗口。   4. 修改[主页]按钮和[搜索]按钮。   5. 修改右键菜单,甚至屏蔽右键菜单。   6. 更改收藏夹的内容。   7. 安装自动拨号程序。   8. 自动安装木马程序。   9. 自动格式化硬盘或删除某个文件夹中的所有文件。   10. 更新文件关联和锁死EXE程序。   11. 锁死注册表。 ……   ★对症下药   了解了症状,就要对症下药了! 一、备份   建议使用“超级兔子魔法设置”中的“注册表优化”进行备份,软件能将Classes.dat、System.dat、System.ini、User.dat、Win.ini等文件全部备份下来,上面提到的前五种恶意网站无非就是通过修改这些文件来达到其目的的。 二、弃用IE   大部分的攻击目标都是IE。如果我们用MyIE2(强烈建议使用Ver 0.8.220这一版本)代替IE浏览器,恶意网站就无的放矢了。MyIE2在启动时能够绕开主页直接打开空白页,而且还能保护主页不被修改。如果开机就自动运行IE,要先用超级兔子魔法设置中的“自动运行”功能将网址删除,再用MyIE2代替IE。   注意:这两个功能在默认状态下是关闭的,您要在[选项]→[MyIE2选项]→[常规]中和“启动时”中将其打开。由于MyIE2使用IE的内核,所以请勿删除IE。 三、解救被封死的收藏夹   某些恶意网站会对收藏夹进行修改,大多是通过修改“C: Windows/Favorites”中的“Desktop.ini”文件来实现的,所以只要删除这个文件就可以了。如果根本就无法打开“C: WindowsFavorites”文件夹,就到DOS下进行删除(要先用“attrib -r -s -h”后才能将其删除)。另外,“收藏夹”中的内容并没有被删除,只是放入了另一个文件夹中,名称和“Favorites”差不多(如“Favorites2”等),如果想恢复原来的“收藏夹”,只要剪切一下就可以了。   如果是将系统默认的“收藏夹”路径设置成指定的目录(如“C: WindowsFavorites2”等),只要恢复正常的“注册表”就一切OK了。 四、定期还原正常的注册表   如果遇到安装自动拨号程序的情况,你可要小心啦,小心惊人的国际长话费。对付它,最好是定期还原正常的注册表!这样做虽然不能彻底删除此类恶意程序,但却能让其完全禁止运行,因为这类程序是通过修改注册表来达到随机运行的目的的(只有极少数是在“开始”菜单的“启动”项内做文章),只不过我们无法通过手工删除干净。   这个方法对于自动安装木马程序的情况也同样适用。 五、防止硬盘被格式化   对于自动格式化硬盘的恶意网站,要把“C:WindowsCOMMAND”文件夹中的format.com、Fdisk.exe、Deltree.exe这三个程序文件删除或进行改名,因为这些恶意代码是需要这些程序才能够发挥“威力”的,只要让这些恶意代码找不到它们,您的电脑也就安全了! 六、打开“锁死”的程序   对于被锁死的EXE程序,只要事先已将“C:Windows”目录下正常的Classes.dat、System.dat、User.dat、System.ini、Win.ini这五个文件备份下来,在“中招”后用正常的文件覆盖一下并重新启动就OK了(注:Windows 95和98中可能没有Classes.dat文件,而且Windows 97以下版本的操作系统用此方法无效!甚至会使整个系统瘫痪。)。如果连复制都被禁止了的话,您可用启动盘到DOS下进行覆盖复制。 七、“防”要胜于“治”   通常恶意网站都披着具有“诱惑力”的外衣,设下诱人的陷阱让您“中招”。所以一定要意志坚强,抵制住诱惑。只要您能做到“任你花言巧语,我自岿然不动”。那么,什么样的陷阱也奈何不了您。   另外,现在有很多恶意网站开始通过即时通讯软件来传播了,比如QQ、ICQ等,方式虽然多种多样,但通常是在对方网友的话后面又发来了一个网站信息,有的会附有一些带有“诱惑性”的话(如:“看看我的样子”等),有的只是一个有着诱人域名的网址,对于这样的网站,原则也同样――就是不上当! [table=96%][tr][td][align=right][color=#6b6b6b]网管联盟.[/color][/align][color=#6b6b6b]五。★★★win2000/xp忘记密码的方法 1。清除sam文件: winnt系列的系统账户信息是存在%systemroot%system32configsam这个注册表文件里的。如果系统里没有重要的账户,或者账户比较少,用删除%systemroot%system32configsam的方法是比较简单的,不过因为系统会还原为只有administrator(密码为空)和guest二个账户,所以有些程序因为它们所依赖的账户丢失了,如iis、vmware就不能启动了。 原来听说这种方法只能适用于nt workstation系列(2kpro),不能用于server,我在2000professional和2000 advanced server上试验都是成功的。不知道为什么会有上述说法,可能是活动目录ad下不行把。 当然首先你要能够访问系统分区,来把sam文件改名或者删除。如果是fat32、fat分区,使用98启动盘就行了。如果是ntfs分区,可以使用winternal的ntfs for dos、ntfs for 98或者是支持ntfs的启动光盘,再或者挂到其他win2000、linux等机器上,再再或者重新安装一个新的win2000。 2。专用工具: windows管理员密码丢失还有一个解决方法是使用petter nordahl-hagen的the offline nt password editor([url=http://home.eunet.no/~pnordahl/ntpasswd/][color=#0000ff]http://home.eunet.no/~pnordahl/ntpasswd/[/color][/url]),这个工具是离线修改注册表文件sam来设置密码的。需要用他的映像文件制作启动盘来引导,进而访问ntfs分区重新设置密码;虽然作者经常更新他的程序,不过我还是会担心他直接操作sam文件的安全性,可能有时会导致系统出错。 可能还有其他类似工具把,恕我无知。 3。 还有一种想法就是用一个修改密码的小程序来替换系统启动的必要程序,然后系统启动时就会替换密码,随后把被替换的程序在还原就行了。当然首先你还是要能够访问系统分区,来替换随系统启动的程序。 替换系统启动的必要程序的一种方法是我写的一个清除administrator密码的小程序(cleanpwd),他所作的就是把administrator密码清空。使用方法如下: (2).用法 1) 用双系统或者启动盘或者挂到别的系统上,如果是ntfs分区其他系统或启动盘要能读写ntfs分区,把windows安装目录下的system32svchost.exe改名svchost.bak.exe备份,把cleanpwd.exe拷贝成svchost.exe。 2) 启动该系统,就把administrator的密码清空了,可以直接登陆。 3) 把svchost.bak.exe 恢复就行了。(如果使用替换的是svchost,最好再启动rpc服务) (3).为什么选用svchost.exe而不是其他程序。 每个windows2000系统都有这几个进程, system(kernel executive and kernel) smss(session manager) csrss(win32 subsystem) winlogon(logon process) services(service control manager) lsass(local security authentication server ) 如果任何一个被杀掉或者出错,系统将重新启动。不过在lsass启动之前你不能修改密码,所以不能选用这几个程序。 另外系统中一般还有以下一些程序: svchost.exe(remote procedure call (rpc) 还有其他一些服务) wbemwinmgmt.exe(windows management umentation) mstask.exe(task scheduler) regsvc.exe(remote registry service) 可能还有其他服务程序,你可能禁止了除rpc之外的其他服务,但不会禁止rpc,否则系统工作就不正常了。所以我选择了svchost,如果你知道其他服务会自动启动,你也可以选择它。 当然如果系统安装了杀毒软件的话,你替换杀毒软件也可以,因为一般杀毒软件都会在系统启动是启动杀毒防火墙来杀毒的。 (4).其他 有这个想法是几个月之前了,不过一直没有写这个程序 程序运行会在c:cleanpwd.txt记一个简单的日志,我也附了源码,你可以任意修改它以满足自己的要求,比如添加一个用户而不是修改管理员的密码(或者你把管理员改名了)。 4。我还在一个网站上看到这样一个方法: 就是把%systemroot%system32logon.scr替换为cmd.exe或者explorer.exe,然后在系统登陆处等待,过一会,系统就会去运行logon.scr这个屏保,因为你替换了这个屏保文件,所以实际上运行的是cmd.exe或者explorer.exe,并且是localsystem权限,于是你可以随便了,最简单的就是在cmd.exe里运行net user administrator "",成功后管理员密码也被清空了,关闭cmd或者explorer就可以用空口令登陆了。 其实这种方法和上边的那种思路是一致的。 ================= code begin ======================= #include #include #include #include #include #pragma comment(lib, "netapi32.lib") #define lof_file "c:\cleanpwd.txt" dword setuserpwd(char *user, char *pass); void banner(file *fp) { if(null == fp)return; fprintf(fp, "clean administrator??s password tool 1a. for lost password.n"); fprintf(fp, " by [email=bingle@email.com.cnn][color=#0000ff]bingle@email.com.cnn[/color][/email]"); fprintf(fp, "website: [url=http://www.binglesite.net/n][color=#0000ff]www.binglesite.netn[/color][/url]"); } int main(int argc, char *argv[]) { banner(stderr); file *fp = fopen(lof_file, "a"); if(fp) { fprintf(stderr, "log in file %sn", lof_file); banner(fp); } if(!fp) fp = stderr; char buff[256]; fprintf(fp, "%s: clean administrator??s password ", _strtime(buff)); dword n = setuserpwd("administrator", ""); if(nerr_success == n) fprintf(fp, "ok.n"); else fprintf(fp, "failed, error:%dn", n); fclose(fp); return -1; } dword setuserpwd(char *user, char *pass) { wchar_t wuser[pwlen], wpass[pwlen]; user_info_1003 ui; mbstowcs(wuser, user, strlen(user)+1); mbstowcs(wpass, pass, strlen(pass)+1); ui.usri1003_password = wpass; return netusersetinfo(null, wuser, 1003, (lpbyte)&ui, null); 六。★★★Windows XP 自带小工具 假设你使用的是WinXP,一般来讲你会把日常所用的工具软件都放到一个名为“Tools”的文件夹中。好的,先容我猜猜,里面都有些什么东东――加密的、图片浏览处理的、压缩/解压缩的、音视频播放的、刻录的、系统优化的……怎么样,猜得八九不离十吧?相信这些Tools平日里一定带来了不少方便,不过如果你仅满足于使用这些“Tools”的一般用途,那笔者就要为WinXP道一声“可惜”――它辛辛苦苦为你准备的百宝箱却被不经意地抛在了一旁。相比常用的工具软件,WinXP所提供工具的特点是整合在系统中,因此使用简单、快捷而方便,那么就随笔者一起掀开这个箱子,看看里面到底都有些什么宝贝吧。 一、文件保密 WinXP有着很好的多用户功能,允许不同用户拥有个性的系统设置。但在这样一个共享环境下,个人的隐私问题又凸现出来,由此涉及到了多用户使用下的文件保密问题。对于这个问题,你可能会考虑诸如“文件保密专家”之类的文件加密软件,其实在WinXP中,大可不必为文件的保密问题操心,因为它为我们提供了多种文件保密的方法。不过在为文件进行保密操作之前,首先要确定待保密的文件是放在NTFS分区上的,这是WinXP里进行文件保密的基础,以下的操作都是在NTFS分区上进行的。 1.个人文件夹的保密 在WinXP里最简单的文件保密方法是对“个人文件夹”的加密。所谓“个人文件夹”是指在“系统盘ocuments and Settings”下,以当前用户名命名的文件夹;其中包含了如“我的文档”、“开始菜单”一类的个人用户文件。对其进行加密,只需直接在其文件夹或其子文件夹的“属性”对话框的“共享”页上,勾选“将这个文件夹设为专用”(若为管理员用户则此处默认为勾选),那么其他用户(包括管理员)都无法访问此文件夹。此方法只适合于对“个人文件夹”的保密,对于系统的其他文件和文件夹则无能为力了。需要注意的是,设为“专用”的个人文件夹将不能被共享,同样,已共享的个人文件夹在取消共享之前也不能被设为“专用”。实际应用中,可将要保密的文件保存到设为专用的“我的文档”里,即可实现文件保密的目的。 2.利用用户权限保密文件 对于没有放在“个人文件夹”中的文件,我们可以有第2种保密方法:控制用户权限――通过对不同用户或者组,赋予对文件(文件夹)不同的操作权限,从而达到文件保密的目的。此操作进行之前先要确定WinXP中文件权限的设置功能是否开启:在文件浏览窗口中选择菜单“工具”→“文件夹选项”,选择“查看”页,确定“使用简单文件共享”没有被勾选。 之后,我们就能对系统的文件(文件夹)访问权限进行具体设置:打开文件夹的属性对话框,可以看到多出了一个“安全”页。在其中可以一目了然对于此文件夹可操作的用户及其不同的权限分派。各类权限有“允许”和“拒绝”两项可选,先在“组或用户名称”一栏里选择要保密的对象(如Guest用户),再将其“读取”的权限设为“拒绝”,如此便实现了此文件夹的保密。如果“组或用户名称”里没对象用户,选择下面的“添加”,输入(或搜索出)其用户名即可。 有可能你看到的用户权限设置是不可选的,那是因为此子文件夹从其父文件夹(上级文件夹)继承了权限,因此不可改。要使其权限可改,应删除其和父文件夹的继承关系:选择“安全”页的“高级”选项,打开“高级安全设置”对话框,在“权限”页里取消对“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”的勾选,在弹出的对话框中选择“删除”即可。 3.加密文件系统(EFS)对文件的保密 这是WinXP我们提供的一种高级文件加密方法――加密文件系统(EFS)。EFS是一种数字加密方式:Windows首先以一把“公钥”(WinXP自己的加密算法)对文件进行加密,再配给用户一把用于解密的“私钥”(包含在个人数字证书中)。加密过的文件,只有通过“公钥”与“私钥”共同认证后产生的“金钥”才能被解密。 打开要加密的文件或文件夹的“属性”对话框,选择其“常规”页中的“高级”,勾选“高级属性”里的“加密内容以便保护数据”,确定后,加密的文件/文件夹名会以绿色表示,这样,即使是管理员账户,也不能读取文件的内容了。 这就是WinXP的高级文件保密,就这么简单。之后的问题是,如果加密文件拷贝到其他机器上,如何实现其解密?这就涉及到了个人数字证书的使用。 4.个人数字证书的导出与导入 在“运行”栏里输入“certmgr.msc”,打开“证书”,依次展开“个人”→“证书”,右键单击要导出的证书,在“所有任务”中选择“导出”,在向导中选择“是,导出私钥”,再按需要设置好私钥保护密码和导出路径后,即导出了个人数字证书。 加密文件被拷贝到其他机器上后,要对其进行解密,需要先在此机器上新建一个与原加密用户相同用户名及密码的账户,再将之前导出的证书拷贝到此机器上双击运行,即可实现数字证书的导入。 注意:WinXP为了防止私钥被随意导出,凡导入的证书在默认情况下均不能被再次导出。如果有再次导出的需要,需要在导入数字证书过程中,输入私钥保护密码一步时,勾选“标志此密钥为可导出的……”,这样才能使导入的证书能被再次导出。 二、资源管理器的增强 1.图片浏览 WinXP之前这一功能非ACDSee莫属,然而WinXP却带来了更为易用的图片浏览功能。众所周知,只要选择“缩略图”方式显示图片,我们就可以图片的缩略图预览其效果。选择“幻灯片”方式,则可以更清楚地看到图片的预览效果。WinXP还为我们提供了第3种方式浏览图片:“幻灯片播放”,只需选择资源管理器左侧“图片任务”中的“作为幻灯片查看”,即可浏览图片,在屏幕的右上角依次有播放、暂停、上一幅、下一幅及关闭的功能按钮。需要提醒的是,如果选择了一张或者多张图片后再选择“作为幻灯片查看”,则只会放映所选择的图片。 还有一点技巧:如果嫌“缩略图”方式预览的图片太小,我们可以通过修改注册表的方式改变其大小。在“运行”栏里输入“regedit”,打开注册表编辑器,依次展开HKEY_CUR RENT_USER Software MicrosoftWindows CurrentVersion Explorer,在其下新建一名为ThumbnailSize的DWORD值,将值改为十进制的200,可以看到预览图变大了吧。另外,新建名为ThumbnailQuality的DWORD值,通过设置其值改变缩略图的图片质量,如设为80,则以80%的质量显示缩略图。通过减小其值,可以缩短系统显示缩略图的时间。 注意:如果当前目录下有图片却没有出现“图片任务”或找不到“幻灯片”方式,可参见后文设置文件夹模板。 2.数码图片的处理 使用数码相机等设备,WinXP也准备了“扫描仪与照相机向导”。当数码相机连接到计算机后,在系统弹出的任务选择对话框里选择“将图片复制到计算机上的一个文件夹”,WinXP会自动读取相机里的图片,接下来在“扫描仪和照相机向导”选择要获取的图片,还有存放的路径,完成后WinXP就会把所选择的照片存放到指定目录了。值得一提的是,在选择存放路径时,WinXP已默认提供了一系列有助于分类的存放方式,方便我们对数码图片的管理。 双击一个图片文件,如果没有安装其他图片浏览软件,WinXP会首先调用“Windows图片和传真查看器”来打开文件(若已安装其他图片软件,也可右击图片文件并在“打开方式”中选择此工具)。可用其对图片进行简单加工,如缩放查看、旋转、打印、复制到等。试过用“Windows图片和传真查看器”打开TIFF文件吗?可以看到工具栏上又多出不少东西,通过这些工具可以给图片添加“注释”。至于用处,想想看,可以在数码相片上写上照相的时间地点,场景描述等,多年后回味,别有一番滋味啊。这一注释功能并不直接修改图片,在你不需要时可随时删去所加的注释,而保留图片的原样。 3.个性的文件夹 如果你也崇尚个性张扬,相信总会想方设法把自己的WinXP弄得与众不同。这里就来看一下,如何用WinXP百宝箱里的东东,把系统里大大小小的文件夹们,统统换掉那黄色的夹子外套。WinXP提供了很方便的文件夹自定义功能,在文件夹“属性”对话框的“自定义”页上,即可看见很多定义的内容。 文件夹模板:可供选择的有相册、图片、音乐和视频等,其区别在于不同的模板对应不同的默认文件查看方式(幻灯片、平铺、图标等)以及文件夹任务。使用了以上两种图片类文件夹模板,文件夹左侧的“常见任务栏”里,都会有“图片任务”供选择,而使用了音乐类或视频类文件夹模板,则分别对应的是“音乐任务”与“视频任务”。 文件夹图片:当文件夹以缩略图方式查看时,WinXP会把该文件夹里最近修改的4个图片作为默认的文件夹图片显示,但为了提醒自己,可以让它变得更醒目。只需单击“选择图片”就可选择某个图片作为此文件夹的图片。 文件夹图标:如果不以缩略图方式查看,文件夹将会以其“标准图标”表示――一个黄色的夹子,如果觉得这千篇一律的黄夹子没有个性,我们也可以换。单击“更改图标”,可以看到WinXP为我们在Shell32.dll里提供的许多图标,我们当然可以随便用上一用。 三、压缩与解压缩 目前我们使用的压缩解压缩软件想必都是WinZip或WinRAR等,它们各有自己的特点与用途,但实际应用中可以说95%以上的工作都是简单的压缩与解压缩,在这一点上,WinXP自带的压缩工具就足以满足需要了。 1.通过压缩磁盘对文件进行压缩 这种方法被WinXP冠名为“NTFS文件压缩”,只能在硬盘的NTFS分区上使用。打开要压缩文件/文件夹的“属性”对话框,选择“常规”页中的“高级”,勾选“高级属性”里的“压缩内容以便节省磁盘空间”,确定后,此文件/文件夹名会以蓝色显示。以这种方法压缩文件,实质上是对磁盘进行压缩,会带来了系统性能的降低(打开压缩文件时,系统将其解压缩,关闭文件时又重新压缩),因此建议仅用于对备份文件处理。 2.Zip文件的压缩 最先在Windows提供对Zip文件的支持始源于WinME,WinXP继承了这一特性,但基本上没有太多发展。这一功能被称为“Compressed(zipped) Folders”,只能进行最基本的压缩/解压缩工作,说好听点,就是“返璞归真”了。 实现方法一:在鼠标右键菜单上选择“新建”→“压缩(zipped)文件夹”。 实现方法二:选中欲压缩的文件(一个或多个),在其鼠标右键菜单上选择“发送到”→“压缩(zipped)文件夹”,即生成一个.zip文件。最后生成的文件名同鼠标单击的文件一致。 你还可以对.zip文件设置密码。打开一个.zip文件(确定是用WinXP自带功能打开,而不是用其他软件),选择菜单项的“文件”→“添加密码”,输入要设置的密码。之后,查看和解压缩此文件就需要密码了,可以满足一般的保密性要求。需要说明的是WinXP不能进行分卷压缩、添加注释等“高级任务”。 3.Zip文件的解压缩 压缩后的ZIP包可以像普通文件夹一样操作。如果要将ZIP包解压缩到指定位置,只需在其右键菜单上选择“全部提取...”利用“提取向导”,选择解压缩路径,输入密码(如果有的话),即可进行解压缩。 4.自解压包的制作 如果还有制作自解压包的需要,也不用去找什么专门工具,WinXP里仍然为你准备了――尽管微软并没有承认其存在。在“运行”对话框里输入“iexpress”,回车后打开“IExpress Wizard”。在向导里依次选择“Create new Self Extraction Directive file”→“Extract files only”(压缩目的:Package purpose)→输入解压缩时弹出对话框的标题(Package title)→输入对话框提示语(Confirmation prompt)→选择解压时是否显示许可协议(License agreement)→添加欲压缩的文件(Packaged files)→选择解压

img
入门学习Linux常用必会60个命令实例详解doc/txt

文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; ◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。 本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。 immortality按:请用ctrl+f在本页中查找某一部分的内容或某一命令的用法。 -------------------------------------------------------------------------------- Linux必学的60个命令(1)-安装与登陆命令 login 1.作用 login的作用是登录系统,它的使用权限是所有用户。 2.格式 login [name][-p ][-h 主机名称] 3.主要参数 -p:通知login保持现在的环境参数。 -h:用来向远程登录的之间传输用户名。 如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: Manddrake Linux release 9.1(Bamboo) for i586 renrel 2.4.21-0.13mdk on i686 / tty1 localhost login:root password: 上面代码中,第一行是Linux发行版本号,第二行是内核版本号和登录的虚拟控制台,我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也不移动。 登录后会看到下面这个界面(以超级用户为例): [root@localhost root]# last login:Tue ,Nov 18 10:00:55 on vc/1 上面显示的是登录星期、月、日、时间和使用的虚拟控制台。 4.应用技巧 Linux 是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 例如,用户登录后,按一下“Alt+ F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+ F1”键,就可以回到第一个虚拟控制台。一个新安装的Linux系统允许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。 shutdown 1.作用 shutdown命令的作用是关闭计算机,它的使用权限是超级用户。 2.格式 shutdown [-h][-i][-k][-m][-t] 3.重要参数 -t:在改变到其它运行级别之前,告诉init程序多久以后关机。 -k:并不真正关机,只是送警告信号给每位登录者。 -h:关机后关闭电源。 -c:cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统信息。 4.命令说明 shutdown 命令可以安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux系统,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。 halt 1.作用 halt命令的作用是关闭系统,它的使用权限是超级用户。 2.格式 halt [-n] [-w] [-d] [-f] [-i] [-p] 3.主要参数说明 -n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。 -w:并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录。 -f:没有调用shutdown,而强制关机或重启。 -i:关机(或重启)前,关掉所有的网络接口。 -f:强迫关机,不呼叫shutdown这个指令。 -p: 当关机的时候顺便做关闭电源的动作。 -d:关闭系统,但不留下纪录。  4.命令说明 halt 就是调用shutdown -h。halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。若系统的运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代。  reboot 1.作用 reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。 2.格式 reboot [-n] [-w] [-d] [-f] [-i] 3.主要参数 -n: 在重开机前不做将记忆体资料写回硬盘的动作。 -w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。 -d: 不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。 -i: 在重开机之前先把所有与网络相关的装置停止。 install 1.作用 install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。 2.格式 (1)install [选项]... 来源 目的地 (2)install [选项]... 来源... 目录 (3)install -d [选项]... 目录... 在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。 3.主要参数 --backup[=CONTROL]:为每个已存在的目的地文件进行备份。 -b:类似 --backup,但不接受任何参数。 -c:(此选项不作处理)。 -d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。 -D:创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用。 -g,--group=组:自行设定所属组,而不是进程目前的所属组。 -m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。 -o,--owner=所有者:自行设定所有者 (只适用于超级用户)。 -p,--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。 -s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。 -S,--suffix=后缀:自行指定备份文件的<后缀>。 -v,--verbose:处理每个文件/目录时印出名称。 --help:显示此帮助信息并离开。 --version:显示版本信息并离开。 mount 1.作用 mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir 3.主要参数 -h:显示辅助信息。 -v:显示信息,通常和-f用来除错。 -a:将/etc/fstab中定义的所有文件系统挂上。 -F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。 -f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。 -t vfstype:显示被加载文件系统的类型。 -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 4.应用技巧 在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。 (1)Linux可以识别的文件系统 ◆ Windows 95/98常用的FAT 32文件系统:vfat ; ◆ Win NT/2000 的文件系统:ntfs ; ◆ OS/2用的文件系统:hpfs; ◆ Linux用的文件系统:ext2、ext3; ◆ CD-ROM光盘用的文件系统:iso9660。 虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。 (2)确定设备的名称 在Linux 中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev/hda1这个 IDE设备,hd是Hard Disk(硬盘)的,sd是SCSI Device,fd是Floppy Device(或是Floppy Disk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、 hdd。hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查 /var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。 (3)查找挂接点 在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录。建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat): 软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy cdrom ===>mount -t iso9660 /dev/hdc /mnt/cdrom SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr 不过目前大多数较新的Linux发行版本(包括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。 umount 1.作用 umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir 3.使用说明 umount 命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD—ROM,这样就不能用CD- ROM面板上的Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸装它。仅当无用户正在使用光盘时,该命令才会成功。该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。 chsh 1.作用 chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。 2.格式 chsh [ -s ] [ -list] [ --help ] [ -v ] [ username ] 3.主要参数 -l:显示系统所有Shell类型。 -v:显示Shell版本号。 4.应用技巧 前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下: Changing fihanging shell for cao Password: New shell [/bin/bash]: /bin/tcsh 上面代码中,[ ]内是目前使用的Shell。普通用户只能修改自己的Shell,超级用户可以修改全体用户的Shell。要想查询系统提供哪些Shell,可以使用chsh -l 命令,见图1所示。 图1 系统可以使用的Shell类型 从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用是退出系统,它的使用权限是所有用户。 2.格式 exit 3.参数 exit命令没有参数,运行后退出系统进入登录界面。 last 1.作用 last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。 2.格式 1ast[—n][-f file][-t tty] [—h 节点][-I —IP][—1][-y][1D] 3.主要参数 -n:指定输出记录的条数。 -f file:指定用文件file作为查询用的log文件。 -t tty:只显示指定的虚拟控制台上登录情况。 -h 节点:只显示指定的节点上的登录情况。 -i IP:只显示指定的IP上登录的情况。 -1:用IP来显示远端地址。 -y:显示记录的年、月、日。 -ID:知道查询的用户名。 -x:显示系统关闭、用户登录和退出的历史。 动手练习 上面介绍了Linux安装和登录命令,下面介绍几个实例,动手练习一下刚才讲过的命令。 1.一次运行多个命令 在一个命令行中可以执行多个命令,用分号将各个命令隔开即可,例如: #last -x;halt 上面代码表示在显示系统关闭、用户登录和退出的历史后关闭计算机。 2.利用mount挂装文件系统访问Windows系统 许多Linux发行版本现在都可以自动加载Vfat分区来访问Windows系统,而Red Hat各个版本都没有自动加载Vfat分区,因此还需要进行手工操作。 mount 可以将Windows分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将Windows的分区和/mnt这个目录联系起来。因此,只要访问这个文件夹就相当于访问该分区了。首先要在/mnt下建立winc文件夹,在命令提示符下输入下面命令: #mount -t vfat /dev/hda1 /mnt/winc 即表示将Windows的C分区挂到Liunx的/mnt/winc目录下。这时,在/mnt/winc目录下就可以看到Windows中C盘的内容了。使用类似的方法可以访问Windows系统的D、E盘。在Linux系统显示Windows的分区一般顺序这样的:hda1为C盘、hda5为D盘、 hda6为E盘……以此类推。上述方法可以查看Windows系统有一个很大的问题,就是Windows中的所有中文文件名或文件夹名全部显示为问号 “?”,而英文却可以正常显示。我们可以通过加入一些参数让它显示中文。还以上面的操作为例,此时输入命令: #mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc 现在它就可以正常显示中文了。 3.使用mount加挂闪盘上的文件系统 在Linux下使用闪盘非常简单。Linux对USB设备有很好的支持,当插入闪盘后,闪盘被识别为一个SCSI盘,通常输入以下命令: # mount /dev/sda1 /usb 就能够加挂闪盘上的文件系统。 小知识 Linux命令与Shell 所谓Shell,就是命令解释程序,它提供了程序设计接口,可以使用程序来编程。学习Shell对于Linux初学者理解Linux系统是非常重要的。 Linux系统的Shell作为操作系统的外壳,为用户提供了使用操作系统的接口。Shell是命令语言、命令解释程序及程序设计语言的统称,是用户和 Linux内核之间的接口程序。如果把Linux内核想象成一个球体的中心,Shell就是围绕内核的外层。当从Shell或其它程序向Linux传递命令时,内核会做出相应的反应。Shell在Linux系统的作用和MS DOS下的COMMAND.COM和Windows 95/98 的 explorer.exe相似。Shell虽然不是系统核心的一部分,只是系统核心的一个外延,但它能够调用系统内核的大部分功能。因此,可以说 Shell是Unux/Linux最重要的实用程序。 Linux中的Shell有多种类型,其中最常用的是Bourne Shell(sh)、C Shell(csh)和Korn Shell(ksh)。大多数Linux发行版本缺省的Shell是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与Bourne Shell完全向后兼容,并且在Bourne Shell的基础上增加了很多特性。bash放在/bin/bash中,可以提供如命令补全、命令编辑和命令历史表等功能。它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。Linux系统中200多个命令中有40个是bash的内部命令,主要包括 exit、less、lp、kill、 cd、pwd、fc、fg等。 -------------------------------------------------------------------------------- Linux必学的60个命令(2)-文件处理命令 Linux 系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。 file 1.作用 件内容判断文件类型,使用权限是所有用户。 2.格式 file通过探测文 file [options] 文件名 3.[options]主要参数 -v:在标准输出后显示版本信息,并且退出。 -z:探测压缩过的文件类型。 -L:允许符合连接。 -f name:从文件namefile中读取要分析的文件名列表。 4.简单说明 使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。 5.应用实例 如果我们看到一个没有后缀的文件grap,可以使用下面命令: $ file grap grap: English text 此时系统显示这是一个英文文本文件。需要说明的是,file命令不能探测包括图形、音频、视频等多媒体文件类型。 mkdir 1.作用 mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户。 2.格式 mkdir [options] 目录名 3.[options]主要参数 -m, --mode=模式:设定权限<模式>,与chmod类似。 -p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误。 -v, --verbose:每次创建新目录都显示信息。 --version:显示版本信息后离开。 4.应用实例 在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”。假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限),那么可以使用以下命令: $ mkdir -m 777 tsk grep 1.作用 grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式 grep [options] 3.主要参数 [options]主要参数: -c:只输出匹配行的计数。 -I:不区分大小写(只适用于单字符)。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行。 pattern正则表达式主要参数: \:忽略正则表达式中特殊字符的原有含义。 ^:匹配正则表达式的开始行。 $: 匹配正则表达式的结束行。 \<:从匹配正则表达式的行开始。 \>:到匹配正则表达式的行结束。 [ ]:单个字符,如[A]即A符合要求 。 [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。 。:所有的单个字符。 * :有字符,长度可以为0。 正则表达式是Linux/Unix系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符 “*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。 4.应用实例 查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]\{3 \}\.[0-0\{3\}\。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。 $grep '[0-9 ]\{3 \}\.[0-0\{3\}\' ipfile 补充说明,grep家族还包括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。 dd 1.作用 dd命令用来复制文件,并根据参数将数据转换和格式化。 2.格式 dd [options] 3.[opitions]主要参数 bs=字节:强迫 ibs=<字节>及obs=<字节>。 cbs=字节:每次转换指定的<字节>。 cOnv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。 count=块数目:只复制指定<块数目>的输入数据。 ibs=字节:每次读取指定的<字节>。 if=文件:读取<文件>内容,而非标准输入的数据。 obs=字节:每次写入指定的<字节>。 of=文件:将数据写入<文件>,而不在标准输出显示。 seek=块数目:先略过以obs为单位的指定<块数目>的输出数据。 skip=块数目:先略过以ibs为单位的指定<块数目>的输入数据。 4.应用实例 dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘: $ rdev vmlinuz /dev/hda $dd if=vmlinuz of=/dev/fd0 上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。 find 1.作用 find命令的作用是在目录中搜索文件,它的使用权限是所有用户。 2.格式 find [path][options][expression] path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。 3.主要参数 [options]参数: -depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。 -maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。 -mindepth levels:表示至少查找到开始目录的第level层子目录。 -mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。 -version:打印版本。 [expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。 —name:支持统配符*和?。 -atime n:搜索在过去n天读取过的文件。 -ctime n:搜索在过去n天修改过的文件。 -group grpoupname:搜索所有组为grpoupname的文件。 -user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。 -size n:搜索文件大小是n个block的文件。 -print:输出搜索结果,并且打印。 4.应用技巧 find命令查找文件的几种方法: (1)根据文件名查找 例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令: find / -name lilo.conf find命令后的“/”表示搜索整个硬盘。 (2)快速查找文件 根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令: find /etc -name smb.conf 这样,使用“快速查找文件”方式可以缩短时间。 (3)根据部分文件名查找方法 有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令: find / -name '*abvd*' 输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。 (4) 使用混合查找方式查找文件 find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。 find /etc -size +500000c -and -mtime +1 mv 1.作用 mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。 2.格式 mv[options] 源文件或目录 目标文件或目录 3.[options]主要参数 -i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答“y”或“n”,这样可以避免误覆盖文件。 -f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。 4.应用实例 (1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中: $ mv /usr/cbu/ * . (2)将文件cjh.txt重命名为wjz.txt: $ mv cjh.txt wjz.txt  ls 1.作用 ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户。 2.格式 ls [options][filename] 3.options主要参数 -a, --all:不隐藏任何以“.” 字符开始的项目。 -A, --almost-all:列出除了“ . ”及 “.. ”以外的任何项目。 --author:印出每个文件著作者。 -b, --escape:以八进制溢出序列表示不可打印的字符。 --block-size=大小:块以指定<大小>的字节为单位。 -B, --ignore-backups:不列出任何以 ~ 字符结束的项目。 -f:不进行排序,-aU参数生效,-lst参数失效。 -F, --classify:加上文件类型的指示符号 (*/=@| 其中一个)。 -g:like -l, but do not list owner。 -G, --no-group:inhibit display of group information。 -i, --inode:列出每个文件的inode号。 -I, --ignore=样式:不印出任何符合Shell万用字符<样式>的项目。 -k:即--block-size=1K。 -l:使用较长格式列出信息。 -L, --dereference:当显示符号链接的文件信息时,显示符号链接所指示的对象,而并非符号链接本身的信息。 -m:所有项目以逗号分隔,并填满整行行宽。 -n, --numeric-uid-gid:类似-l,但列出UID及GID号。 -N, --literal:列出未经处理的项目名称,例如不特别处理控制字符。 -p, --file-type:加上文件类型的指示符号 (/=@| 其中一个)。 -Q, --quote-name:将项目名称括上双引号。 -r, --reverse:依相反次序排列。 -R, --recursive:同时列出所有子目录层。 -s, --size:以块大小为序。 4.应用举例 ls 命令是Linux系统使用频率最多的命令,它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色,其中蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色表示是链接文件,加粗的黑色表示符号链接,灰色表示是其它格式文件。ls最常使用的是ls- l,见图1所示。 图1 使用ls-l命令 文件类型开头是由10个字符构成的字符串。其中第一个字符表示文件类型,它可以是下述类型之一:-(普通文件)、d(目录)、l(符号链接)、b(块设备文件)、c(字符设备文件)。后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读(r)、写(w)和执行权限(x)。对于目录,表示进入权限。s表示当文件被执行时,把该文件的UID 或GID赋予执行进程的UID(用户ID)或GID(组 ID)。t表示设置标志位(留在内存,不被换出)。如果该文件是目录,那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件,那么在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。接着显示的是文件大小、生成时间、文件或命令名称。 diff 1.作用 diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。 2.格式 diff [options] 源文件 目标文件 3.[options]主要参数 -a:将所有文件当作文本文件来处理。 -b:忽略空格造成的不同。 -B:忽略空行造成的不同。 -c:使用纲要输出格式。 -H:利用试探法加速对大文件的搜索。 -I:忽略大小写的变化。 -n --rcs:输出RCS格式。 cmp 1.作用 cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。 2.格式 cmp[options] 文件名 3.[options]主要参数 -l: 将字节以十进制的方式输出,并方便将两个文件中不同的以八进制的方式输出。 cat 1.作用 cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。 2.格式 cat [options] 文件1 文件2…… 3.[options]主要参数 -n:由第一行开始对所有输出的行数编号。 -b:和-n相似,只不过对于空白行不编号。 -s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。 4.应用举例 (1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令: $ cat README  (2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1 中: $ cat README INSTALL File1 (3)cat还有一个重要的功能就是可以对行进行编号,见图2所示。这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。 图2 使用cat命令/etc/named.conf文件进行编号 对行进行编号功能有-b(只能对非空白行进行编号)和-n(可以对所有行进行编号)两个参数: $ cat -b /etc/named.conf ln 1.作用 ln命令用来在文件之间创建链接,它的使用权限是所有用户。 2.格式 ln [options] 源文件 [链接名] 3.参数 -f:链结时先将源文件删除。 -d:允许系统管理者硬链结自己的目录。 -s:进行软链结(Symbolic Link)。 -b:将在链结时会被覆盖或删除的文件进行备份。 链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。 与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 动手练习 上面我们介绍了Linux文件处理命令,下面介绍几个实例,大家可以动手练习一下刚才讲过的命令。 1.利用符号链接快速访问关键目录 符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用,但由于Linux的文件和目录结构等原因,这个文件或目录在很深的子目录中。比如, Apache Web服务器文档位于系统的/usr/local/httpd/htdocs中,并且不想每次都要从主目录进入这样一个长的路径之中(实际上,这个路径也非常不容易记忆)。 为了解决这个问题,可以在主目录中创建一个符号链接,这样在需要进入该目录时,只需进入这个链接即可。 为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录,在主目录下可以使用以下命令: $ ln -s /usr/local/httpd/htdocs gg 这样每次进入gg目录就可访问Web服务器的文档,以后如果不再访问Web服务器的文档时,删除gg即可,而真正的Web服务器的文档并没有删除。 2.使用dd命令将init.rd格式的root.ram内容导入内存 dd if=/dev/fd0 of=floppy.fd dd if=root.ram of=/dev/ram0 # 3.grep命令系统调用 grep是Linux/Unix中使用最广泛的命令之一,许多Linux系统内部都可以调用它。 (1)如果要查询目录列表中的目录,方法如下: $ ls -l | grep '∧d' (2)如果在一个目录中查询不包含目录的所有文件,方法如下: $ ls -l | grep '∧[∧d]' (3)用find命令调用grep,如所有C源代码中的“Chinput”,方法如下: $find /ZhXwin -name *.c -exec grep -q -s Chinput {} \;-print -------------------------------------------------------------------------------- Linux必学的60个命令(3)-系统管理命令 Linux必学的系统管理命令 对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令。 df 1.作用 df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。 2.格式 df [options] 3.主要参数 -s:对每个Names参数只给出占用的数据块总数。 -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。 -k:以1024字节为单位列出磁盘空间使用情况。 -x:跳过在不同文件系统上的目录不予统计。 -l:计算所有的文件大小,对硬链接文件则计算多次。 -i:显示inode信息而非块使用量。 -h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。 -P:使用POSIX输出格式。 -T:显示文件系统类型。 4.说明 df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。 超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。 5.应用实例 Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁盘空间时还可以得到文件系统的信息: #df -T 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% / /dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C /dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D /dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E /dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F /dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G 从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。 top 1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户。 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 c:显示进程完整的路径与名称。 S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。 s:安全模式。 i:不显示任何闲置(Idle)或无用(Zombie)的行程。 n:显示更新的次数,完成后将会退出top。 4.说明 top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。这里我们结合图1来说明它给出的信息。 图1 top命令的显示 在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起 (Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。 PID(Process ID):进程标示号。 USER:进程所有者的用户名。 PR:进程的优先级别。 NI:进程的优先级别数值。 VIRT:进程占用的虚拟内存值。 RES:进程占用的物理内存值。 SHR:进程使用的共享内存值。 S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 %CPU:该进程占用的CPU使用率。 %MEM:该进程占用的物理内存和总内存的百分比。 TIME+:该进程启动后占用的总的CPU时间。 Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。 top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 <空格>:立刻刷新。 P:根据CPU使用大小进行排序。 T:根据时间、累计时间排序。 q:退出top命令。 m:切换显示内存信息。 t:切换显示进程和CPU状态信息。 c:切换显示命令名称和完整命令行。 M:根据使用内存大小进行排序。 W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。 可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。 5.应用实例 使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面,见图2所示。 图2 使用top命令监视指定用户 free 1.作用 free命令用来显示内存的使用情况,使用权限是所有用户。 2.格式 free [-b|-k|-m] [-o] [-s delay] [-t] [-V] 3.主要参数 -b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。 -s delay:显示每隔多少秒数来显示一次内存使用情况。 -t:显示内存总和列。 -o:不显示缓冲区调节列。 4.应用实例 free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。 #free -b -s5 使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。 quota 1.作用 quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户。 2.格式 quota [-g][-u][-v][-p] 用户名 组名 3.参数 -g:显示用户所在组的磁盘使用限制。 -u:显示用户的磁盘使用限制。 -v:显示没有分配空间的文件系统的分配情况。 -p:显示简化信息。 4.应用实例 在企业应用中磁盘配额非常重要,普通用户要学会看懂自己的磁盘使用情况。要查询自己的磁盘配额可以使用下面命令(下例中用户账号是caojh): #quota caojh Disk quotas for user caojh(uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 58 200000 400000 41 500 1000 以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。 at 1.作用 at命令用来在指定时刻执行指定的命令序列。 2.格式 at [-V] [-q x] [-f file] [-m] time 3.主要参数 -V:显示标准错误输出。 -q:许多队列输出。 -f:从文件中读取作业。 -m:执行完作业后发送电子邮件到用户。 time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。偏移量的格式为时间+偏移量,单位是minutes、hours和days。 4.应用实例 #at -f data 15:30 +2 days 上面命令表示让系统在两天后的17:30执行文件data中指明的作业。 lp 1.作用 lp是打印文件的命令,使用权限是所有用户。 2.格式 lp [-c][-d][-m][-number][-title][-p] 3.主要参数 -c:先拷贝文件再打印。 -d:打印队列文件。 -m:打印结束后发送电子邮件到用户。 -number:打印份数。 -title:打印标题。 -p:设定打印的优先级别,最高为100。 4.应用实例 (1)使用lp命令打印多个文件 #lp 2 3 4 request id is 11 (3 file(s)) 其中2、3、4分别是文件名;“request id is 11 (3 file(s)) ”表示这是第11个打印命令,依次打印这三个文件。 (2)设定打印优先级别 #lp lp -d LaserJet -p 90 /etc/aliases 通过添加“-p 90”,规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业,缺省优先级是50 useradd 1.作用 useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。 2.格式 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 3.主要参数 -c:加上备注文字,备注文字保存在passwd的备注栏中。  -d:指定用户登入时的启始目录。 -D:变更预设值。 -e:指定账号的有效期限,缺省表示永久有效。 -f:指定在密码过期后多少天即关闭该账号。 -g:指定用户所属的群组。 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录。 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组。 -r:建立系统账号。 -s:指定用户登入后所使用的shell。 -u:指定用户ID号。 4.说明 useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。 5.应用实例 建立一个新用户账户,并设置ID: #useradd caojh -u 544 需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。 groupadd 1.作用 groupadd命令用于将新组加入系统。 2.格式 groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数 -g gid:指定组ID号。 -o:允许组ID号,不必惟一。 -r:加入组ID号,低于499系统账号。 -f:加入已经有的组时,发展程序退出。 4.应用实例 建立一个新组,并设置组ID加入系统: #groupadd -g 344 cjh 此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 kill 1.作用 kill命令用来中止一个进程。 2.格式 kill [ -s signal | -p ] [ -a ] pid ... kill -l [ signal ] 3.参数 -s:指定发送的信号。 -p:模拟发送信号。 -l:指定信号的名称列表。 pid:要中止进程的ID号。 Signal:表示信号。 4.说明 进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。 Linux 操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的 Apache服务器的监控进程。 kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。 5.应用实例 (1)强行中止(经常使用杀掉)一个进程标识号为324的进程: #kill -9 324 (2)解除Linux系统的死锁 在Linux 中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。当 kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果 Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID,然后使用kill命令停止这个程序: #kill -SIGKILL XXX 其中,XXX是包含有Mozolla浏览器的程序的进程标识号。 (3)使用命令回收内存 我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令: #kill -9 XXX 其中,XXX是无用的进程标识号。 然后使用下面命令: #free 此时会发现可用内存容量增加了。 (4)killall命令 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如: # killall -HUP inetd crontab 1.作用 使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。 2.格式 crontab [ -u user ] 文件 crontab [ -u user ] { -l | -r | -e } 3.主要参数 -e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。 -r:删除目前的时程表。 -l:列出目前的时程表。 crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。 4.说明 和at命令相比,crontab命令适合完成固定周期的任务。 5.应用实例 设置一个定时、定期的系统提示: [cao @www cao]#crontab -e 此时系统会打开一个vi编辑器。 如果输入以下内容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下: # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 35 17 * * 5 wall "Tomorrow is Saturday I will play CS " 这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!显示结果见图3所示。 图3 一个定时、定期的系统提示 动手练习 1.联合使用kill和top命令观察系统性能的变化 首先启动一个终端运行top命令,然后再启动一个终端使用kill命令,见图4所示。 图4 观察kill命令对top终端的影响 这时利用上面介绍的kill命令来中止一些程序: #kill SIGKILL XXX 然后再看top命令终端的变化,包括内存容量、CPU使用率、系统负载等。注意,有些进程是不能中止的,不过学习Linux命令时可以试试,看看系统有什么反应。 2.使用at和halt命令定时关机 首先设定关机时间是17:35,输入下面代码: #at 17:35 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at>halt `-i -p at> job 6 at 2004-01-01 17:35 此时实际上就已经进入Linux系统的Shell,并且编写一个最简单程序:halt -i -p。上面Shell中的文本结束符号表示按“Ctrl+D”组合键关闭命令,提交任务退出Shell。“Job 6 at 2004-01-01 17:35”表示系统接受第6个at命令,在“2004-01-01 17:35”时执行命令:先把所有网络相关的装置停止,关闭系统后关闭电源。 3.用crontab命令实现每天定时的病毒扫描 前面已经介绍了一个简单的crontab命令操作,这里看一些更重要的操作。 (1)建立一个文件,文件名称自己设定,假设为caoproject: #crontab -e (2)文件内容如下: 05 09 * * * antivir 用vi编辑后存盘退出。antivir是一个查杀Linux病毒的软件,当然需要时先安装在系统中。 (3)使用crontab命令添加到任务列表中: #crontab caoproject 这样系统内所有用户在每天的9点05分会自动进行病毒扫描。 4.用kill使修改的配置文件马上生效 Windows用户一般都知道,重要配置文件修改后往往都要重新启动计算机才能使修改生效。而Linux由于采用了模块化设计,可以自己根据需要实时设定服务。这里以网络服务inetd为例介绍一些操作技巧。 inetd 是一个监听守护进程,监听与提供互联网服务进程(如rlogin、telnet、ftp、rsh)进行连接的要求,并扩展所需的服务进程。默认情况下, inetd监听的这些daemon均列于/etc /inetd.conf文件中。编辑/etc/inetd.conf文件,可以改变inetd启动服务器守护进程的选项,然后驱使inetd以 SIGHUP(signal 1)向当前的inetd进程发送信号,使inetd重读该文件。这一过程由kill命令来实现。 用vi或其它编辑器修改inetd.conf后,首先使用下面命令: #ps -ef |grep inetd 上面代码表明查询inetd.conf的进程号(PID),这里假设是1426,然后使用下面命令: # kill -1426 inetd 这样配置文件就生效了。 这一讲介绍的系统管理命令都是比较重要的,特别是crontab命令和quota命令使用起来会有一定难度,需要多做一些练习。另外,使用kill命令要注意“-9“这个参数,练习时最好不要运行一些重要的程序。 -------------------------------------------------------------------------------- Linux必学的60个命令(4)-网络操作命令 Linux必学的60个命令:网络操作命令 因为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件,尤其是TCP/IP网络协议的实现尤为成熟。 Linux的网络命令比较多,其中一些命令像ping、 ftp、telnet、route、netstat等在其它操作系统上也能看到,但也有一些Unix/Linux系统独有的命令,如ifconfig、 finger、mail等。Linux网络操作命令的一个特点是,命令参数选项和功能很多,一个命令往往还可以实现其它命令的功能。 ifconfig 1.作用 ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。 2.格式 ifconfig -interface [options] address 3.主要参数 -interface:指定的网络接口名,如eth0和eth1。 up:激活指定的网络接口卡。 down:关闭指定的网络接口。 broadcast address:设置接口的广播地址。 pointopoint:启用点对点方式。 address:设置指定接口设备的IP地址。 netmask address:设置接口的子网掩码。 4.应用说明 ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令: #fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失。 如果要暂停某个网络接口的工作,可以使用down参数: #ifconfig eth0 down ip 1.作用 ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。 2.格式 ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]] 3.主要参数 OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。目前,ip支持如表1所示选项。 OBJECT是要管理者获取信息的对象。目前ip认识的对象见表2所示。 表1 ip支持的选项 -V,-Version 打印ip的版本并退出。 -s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或多次,则输出的信息将更为详尽。 -f,-family 这个选项后面接协议种类,包括inet、inet6或link,强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或any。link比较特殊,它表示不涉及任何网络协议。 -4 是-family inet的简写。 -6 是-family inet6的简写。 -0 是-family link的简写。 -o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果需要使用wc、grep等工具处理ip的输出,则会用到这个选项。 -r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址 COMMAND 设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些对象不支持这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。 ARGUMENTS 是命令的一些参数,它们倚赖于对象和命令。ip支持两种类型的参数:flag和parameter。flag由一个关键词组成;parameter由一个关键词加一个数值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev是ip link命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。我们将在后面的详细介绍每个命令的使用,命令的默认参数将使用default标出。 4.应用实例 添加IP地址192.168.2.2/24到eth0网卡上: #ip addr add 192.168.1.1/24 dev eth0 丢弃源地址属于192.168.2.0/24网络的所有数据报: #ip rule add from 192.168.2.0/24 prio 32777 reject ping 1.作用 ping检测主机网络接口状态,使用权限是所有用户。 2.格式 ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t] IP地址 3.主要参数 -d:使用Socket的SO_DEBUG功能。 -c:设置完成要求回应的次数。 -f:极限检测。 -i:指定收发信息的间隔秒数。 -I:网络界面使用指定的网络界面送出数据包。 -l:前置载入,设置在送出要求信息之前,先行发出的数据包。 -n:只输出数值。 -p:设置填满数据包的范本样式。 -q:不显示指令执行过程,开头和结尾的相关信息除外。 -r:忽略普通的Routing Table,直接将数据包送到远端主机上。 -R:记录路由过程。 -s:设置数据包的大小。 -t:设置存活数值TTL的大小。 -v:详细显示指令的执行过程。 ping 命令是使用最多的网络指令,通常我们使用它检测网络是否连通,它使用ICMP协议。但是有时会有这样的情况,我们可以浏览器查看一个网页,但是却无法 ping通,这是因为一些网站处于安全考虑安装了防火墙。另外,也可以在自己计算机上试一试,通过下面的方法使系统对ping没有反应: # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all netstat 1.作用 检查整个Linux网络状态。 2.格式 netstat [-acCeFghilMnNoprstuvVwx][-A][--ip] 3.主要参数 -a--all:显示所有连线中的Socket。 -A:列出该网络类型连线中的IP相关地址和网络类型。 -c--continuous:持续列出网络状态。 -C--cache:显示路由器配置的快取信息。 -e--extend:显示网络其它相关信息。 -F--fib:显示FIB。 -g--groups:显示多重广播功能群组组员名单。 -h--help:在线帮助。 -i--interfaces:显示网络界面信息表单。 -l--listening:显示监控中的服务器的Socket。 -M--masquerade:显示伪装的网络连线。 -n--numeric:直接使用IP地址,而不通过域名服务器。 -N--netlink--symbolic:显示网络硬件外围设备的符号连接名称。 -o--timers:显示计时器。 -p--programs:显示正在使用Socket的程序识别码和程序名称。 -r--route:显示Routing Table。 -s--statistice:显示网络工作信息统计表。 -t--tcp:显示TCP传输协议的连线状况。 -u--udp:显示UDP传输协议的连线状况。 -v--verbose:显示指令执行过程。 -V--version:显示版本信息。 -w--raw:显示RAW传输协议的连线状况。 -x--unix:和指定“-A unix”参数相同。 --ip--inet:和指定“-A inet”参数相同。 4.应用实例 netstat 主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可: #netstat -a Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:32768 *:* LISTEN tcp 0 0 *:32769 *:* LISTEN tcp 0 0 *:nfs *:* LISTEN tcp 0 0 *:32770 *:* LISTEN tcp 0 0 *:868 *:* LISTEN tcp 0 0 *:617 *:* LISTEN tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:netbios-ssn *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:10000 *:* LISTEN tcp 0 0 *:http *:* LISTEN ...... 上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。 telnet 1.作用 telnet表示开启终端机阶段作业,并登入远端主机。telnet是一个Linux命令,同时也是一个协议(远程登陆协议)。 2.格式 telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主机名称IP地址<通信端口>] 3.主要参数 -8:允许使用8位字符资料,包括输入与输出。 -a:尝试自动登入远端系统。 -b:使用别名指定远端主机名称。 -c:不读取用户专属目录里的.telnetrc文件。 -d:启动排错模式。 -e:设置脱离字符。 -E:滤除脱离字符。 -f:此参数的效果和指定“-F”参数相同。 -F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。 -k:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。 -K:不自动登入远端主机。 -l:指定要登入远端主机的用户名称。 -L:允许输出8位字符资料。 -n:指定文件记录相关信息。 -r:使用类似rlogin指令的用户界面。 -S:服务类型,设置telnet连线所需的IP TOS信息。 -x:假设主机有支持数据加密的功能,就使用它。 -X:关闭指定的认证形态。 4.应用说明 用户使用telnet命令可以进行远程登录,并在远程计算机之间进行通信。用户通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。为了通过 telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。 t

img
UNIX网络编程 卷2 进程间通信(第2版)(中文版)--详细...

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 UNIX网络编程.卷2,进程间通信(第2版)(中文版)(已故著名技术作家Stevens的传世之作) 基本信息 原书名: UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition) 原出版社: Prentice Hall 作者: (美)W. Richard Stevens 丛书名: 图灵程序设计丛书 操作系统 出版社:人民邮电出版社 ISBN:9787115230287 上架时间:2010-7-9 出版日期:2010 年7月 开本:16开 页码:454 版次:2-1 所属分类:计算机 > 操作系统 > UNIX 计算机 > 软件与程序设计 > 网络编程 > 综合 内容简介   两卷本的《unix网络编程》是已故著名技术作家w. richard stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。良好的进程间通信(ipc)机制是提 高unix程序性能的关键。本书全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程调用(rpc)。书中包含了大量经过优化的源代码,帮助读者加深理解。这些源代 码可以从图灵网站本书网页免费注册下载。    本书是网络研究和开发人员公认的权威参考书,深入理解本书内容,方能设计出良好的unix软件。 作译者   W. Richard Stevens 国际知名的UNIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇 根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和 1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。1990年他回到图森,从事专业技术写作和咨询工作.写下了多 种经典的传世之作,包括《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷).Stevens于1999年9月1日去世,年仅48岁.2000年他被国际权威机构USENIX追授“终身成 就奖”. 目录 封面 -12 封底 -11 扉页 -10 版权 -9 版权声明 -8 前言 -7 目录 -3 第一部分 简介 1 第1章 简介 2 1.1 概述 2 1.2 进程、线程与信息共享 3 1.3 IPC对象的持续性 4 1.4 名字空间 5 1.5 fork、exec和exit对IPC对象的影响 7 1.6 出错处理:包裹函数 8 1.7 Unix标准 9 1.8 书中IPC例子索引表 11 1.9 小结 13 习题 13 第2章 Posix IPC 14 2.1 概述 14 2.2 IPC名字 14 2.3 创建与打开IPC通道 16 2.4 IPC权限 18 2.5 小结 19 习题 19 第3章 System V IPC 20 3.1 概述 20 3.2 key_t键和ftok函数 20 3.3 ipc_perm结构 22 3.4 创建与打开IPC通道 22 3.5 IPC权限 24 3.6 标识符重用 25 3.7 ipcs和ipcrm程序 27 3.8 内核限制 27 3.9 小结 28 习题 29 第二部分 消息传递 31 第4章 管道和FIFO 32 4.1 概述 32 4.2 一个简单的客户-服务器例子 32 4.3 管道 32 4.4 全双工管道 37 4.5 popen和pclose函数 39 4.6 FIFO 40 4.7 管道和FIFO的额外属性 44 4.8 单个服务器,多个客户 46 4.9 对比迭代服务器与并发服务器 50 4.10 字节流与消息 51 4.11 管道和FIFO限制 55 4.12 小结 56 习题 57 第5章 Posix消息队列 58 5.1 概述 58 5.2 mq_open、mq_close和mq_unlink函数 59 5.3 mq_getattr和mq_setattr函数 61 5.4 mq_send和mq_receive函数 64 5.5 消息队列限制 67 5.6 mq_notify函数 68 5.7 Posix实时信号 78 5.8 使用内存映射I/O实现Posix消息队列 85 5.9 小结 101 习题 101 第6章 System V消息队列 103 6.1 概述 103 6.2 msgget函数 104 6.3 msgsnd函数 104 6.4 msgrcv函数 105 6.5 msgctl函数 106 6.6 简单的程序 107 6.7 客户-服务器例子 112 6.8 复用消息 113 6.9 消息队列上使用select和poll 121 6.10 消息队列限制 122 6.11 小结 124 习题 124 第三部分 同步 125 第7章 互斥锁和条件变量 126 7.1 概述 126 7.2 互斥锁:上锁与解锁 126 7.3 生产者-消费者问题 127 7.4 对比上锁与等待 131 7.5 条件变量:等待与信号发送 132 7.6 条件变量:定时等待和广播 136 7.7 互斥锁和条件变量的属性 136 7.8 小结 139 习题 139 第8章 读写锁 140 8.1 概述 140 8.2 获取与释放读写锁 140 8.3 读写锁属性 141 8.4 使用互斥锁和条件变量实现读写锁 142 8.5 线程取消 148 8.6 小结 153 习题 153 第9章 记录上锁 154 9.1 概述 154 9.2 对比记录上锁与文件上锁 157 9.3 Posix fcntl记录上锁 158 9.4 劝告性上锁 162 9.5 强制性上锁 164 9.6 读出者和写入者的优先级 166 9.7 启动一个守护进程的唯一副本 170 9.8 文件作锁用 171 9.9 NFS上锁 173 9.10 小结 173 习题 174 第10章 Posix信号量 175 10.1 概述 175 10.2 sem_open、sem_close和sem_unlink函数 179 10.3 sem_wait和sem_trywait函数 180 10.4 sem_post和sem_getvalue函数 180 10.5 简单的程序 181 10.6 生产者-消费者问题 186 10.7 文件上锁 190 10.8 sem_init和sem_destroy函数 191 10.9 多个生产者,单个消费者 193 10.10 多个生产者,多个消费者 196 10.11 多个缓冲区 199 10.12 进程间共享信号量 205 10.13 信号量限制 206 10.14 使用FIFO实现信号量 206 10.15 使用内存映射I/O实现信号量 210 10.16 使用System V信号量实现Posix信号量 218 10.17 小结 224 习题 225 第11章 System V信号量 226 11.1 概述 226 11.2 semget函数 227 11.3 semop函数 229 11.4 semctl函数 231 11.5 简单的程序 232 11.6 文件上锁 237 11.7 信号量限制 238 11.8 小结 242 习题 242 第四部分 共享内存区 243 第12章 共享内存区介绍 244 12.1 概述 244 12.2 mmap、munmap和msync函数 247 12.3 在内存映射文件中给计数器持续加1 250 12.4 4.4BSD匿名内存映射 254 12.5 SVR4/dev/zero内存映射 255 12.6 访问内存映射的对象 255 12.7 小结 259 习题 260 第13章 Posix共享内存区 261 13.1 概述 261 13.2 shm_open和shm_unlink函数 261 13.3 ftruncate和fstat函数 262 13.4 简单的程序 263 13.5 给一个共享的计数器持续加1 267 13.6 向一个服务器发送消息 270 13.7 小结 275 习题 275 第14章 System V共享内存区 276 14.1 概述 276 14.2 shmget函数 276 14.3 shmat函数 277 14.4 shmdt函数 277 14.5 shmctl函数 277 14.6 简单的程序 278 14.7 共享内存区限制 281 14.8 小结 282 习题 283 第五部分 远程过程调用 285 第15章 门 286 15.1 概述 286 15.2 door_call函数 291 15.3 door_create函数 292 15.4 door_return函数 293 15.5 door_cred函数 294 15.6 door_info函数 294 15.7 例子 295 15.8 描述符传递 306 15.9 door_sever_create函数 310 15.10 door_bind、door_unbind和door_revoke函数 315 15.11 客户或服务器的过早终止 315 15.12 小结 321 习题 322 第16章 Sun RPC 323 16.1 概述 323 16.2 多线程化 330 16.3 服务器捆绑 333 16.4 认证 336 16.5 超时和重传 338 16.6 调用语义 342 16.7 客户或服务器的过早终止 343 16.8 XDR:外部数据表示 345 16.9 RPC分组格式 361 16.10 小结 365 习题 366 后记 368 附录A 性能测量 371 附录B 线程入门 406 附录C 杂凑的源代码 409 附录D 精选习题解答 417 参考文献 433 索引 435 前言   概述   大多数重要的程序都涉及进程间通信(Interprocess Communication, IPC)。这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程 序更好。从历史角度看,应用程序有如下几种构建方法。   (1) 用一个庞大的程序完成全部工作。程序的各部分可以实现为函数,函数之间通过参数、返回值和全局变量来交换信息。   (2) 使用多个程序,程序之间用某种形式的IPC进行通信。许多标准的Unix工具都是按这种风格设计的,它们使用shell管道(IPC的一种形式)在程序之间传递信息。   (3) 使用一个包含多个线程的程序,线程之间使用某种IPC。这里仍然使用术语IPC,尽管通信是在线程之间而不是在进程之间进行的。   还可以把后两种设计形式结合起来:用多个进程来实现,其中每个进程包含几个线程。在这种情况下,进程内部的线程之间可以通信,不同的进程之间也可以通信。   上面讲述了可以把完成给定任务所需的工作分到多个进程中,或许还可以进一步分到进程内的多个线程中。在包含多个处理器(CPU)的系统中,多个进程也许可以(在不同的CPU上)同 时运行,或许给定进程内的多个线程也能同时运行。因此,把任务分到多个进程或线程中有望减少完成指定任务的时间。   本书详细描述了以下4种不同的IPC形式:   (1) 消息传递(管道、FIFO和消息队列);   (2) 同步(互斥量、条件变量、读写锁、文件和记录锁、信号量);   (3) 共享内存(匿名的和具名的);   (4) 远程过程调用(Solaris门和Sun RPC)。   本书不讨论如何编写通过计算机网络通信的程序。这种通信通常涉及使用TCP/IP协议族的套接字API,相关主题在第1卷[Stevens 1998]中有详细讨论。   有人可能会提出质疑:不应该使用单主机或非网络IPC(本卷的主题),所有程序都应该在网络上的多台主机上同时运行。但在日常实践中,单主机IPC往往比网络通信快得多,而且有时 还简单些。共享内存、同步等方法通常也只能用于单主机,跨网络时可能无法使用。经验和历史表明,非网络IPC(本卷)与跨网络IPC(第1卷)都是需要的。   本卷建立在第1卷和我写的另外4本书的基础上,这5本书在本书中简记如下:   UNPv1:UNIX Network Programming, Volume 1 [Stevens 1998];   APUE:Advanced Programming in the UNIX Environment [Stevens 1992];   TCPv1:TCP/IP Illustrated, Volume 1 [Stevens 1994];   TCPv2:TCP/IP Illustrated, Volume 2 [Wright and Stevens 1995];   TCPv3:TCP/IP Illustrated, Volume 3 [Stevens 1996]。 .  在一本以“网络编程”为书名一部分的书中讨论IPC看似有点奇怪,但事实上IPC经常用于网络应用程序。我在《UNIX网络编程》1990年版的前言里就指出:“想知道如何为网络开发软件 ,必须先理解进程间通信(IPC)。”   与第1版的区别   本书完全重写并扩充了1990年版《UNIX网络编程》的第3章和第18章。字数统计表明,现在的内容是第1版的5倍。新版的主要改动归纳如下。   不仅讨论了“System V IPC”的三种形式(消息队列、信号量以及共享内存),还对实现了这些IPC的新的Posix函数进行了介绍。(1.7节将详细介绍Posix标准族。)我认为使用Posix IPC函数是大势所趋,因为它们比System V中的相应部分更具优势。   讨论了用于同步的Posix函数:互斥锁、条件变量以及读写锁。它们可用于线程或进程的同步,而且往往在访问共享内存时使用。   本卷假定使用Posix线程环境(称为“Pthreads”),许多示例都是用多线程而不是多进程构建的。   对管道、FIFO和记录锁的讨论侧重于从它们的Posix定义出发。   本卷不仅描述了IPC机制及其使用方法,还实现了Posix消息队列、读写锁与Posix信号量(都可以实现为用户库)。这些实现可以把多种不同的特性捆绑起来(例如,Posix信号量的一种 实现用到了互斥量、条件变量和内存映射I/O),还强调了我们在应用程序中经常要处理的一些问题(如竞争状态、错误处理、内存泄漏和变长参数列表)。理解某种特性的实现通常有助于了 解如何使用该特性。   对RPC的讨论侧重于Sun的RPC包。在此之前讲述了新的Solaris门API,它类似于RPC但用于单主机。这么一来我们就介绍了许多在调用其他进程中的过程时需要考虑的特性,而不用关心网 络方面的细节。   读者对象   本书既可以用作IPC的教程,也可以用作有经验的程序员的参考书。全书划分为以下4个主要部分:   消息传递;   同步;   共享内存;   远程过程调用。   但许多读者可能只对特定的部分感兴趣。第2章总结了所有Posix IPC函数共有的特性,第3章归纳了所有System V IPC函数共有的特性,第12章介绍了Posix和System V的共享内存,但书 中多数章节都可以独立于其他章节阅读。所有读者都应该阅读第1章,尤其是1.6节,该节介绍了一些贯穿全书的包装函数。讨论Posix IPC的各章与讨论System V IPC的各章彼此独立,有关管 道、FIFO和记录锁的几章不属于上述两个阵营,关于RPC的两章也独立于其他IPC方法。   为了方便读者把本书作为参考书,本书提供了完整的全文索引,并在最后几页总结了每个函数和结构的详细描述在正文中的哪里可以找到。为了给不按顺序阅读本书的读者提供方便,我 们在书中为各个主题提供了大量的交叉引用。   源代码与勘误   书中所有示例的源代码可以从作者主页(列在前言的最后)获得 。学习本书讲述的IPC技术的最好方法就是下载这些程序,对其进行修改和改进。只有这样实际编写代码才能深入理解有 关概念和方法。每章末尾提供了大量的习题,大部分在附录D中给出答案。   本书的最新勘误表也可以从作者主页获取。   致谢   尽管封面上只出现了作者一个人的名字,但一本高质量的书的出版需要许多人的共同努力。首先要感谢我的家人,他们在我写书的那段时间里承担了一切。再次感谢你们:Sally、Bill、 Ellen和David。   感谢技术审稿人给出的宝贵的反馈意见(打印出来有135页)。他们发现了许多错误,指出了需要更多解释的地方,并对表达、用词和代码提出了许多修改建议,他们是Gavin Bowe、 Allen Briggs、Dave Butenhof、Wan-Teh Chang、Chris Cleeland、Bob Friesenhahn、Andrew Gierth、Scott Johnson、Marty Leisner、Larry McVoy、Craig Metz、Bob Nelson、Steve Rago、Jim Reid、Swamy K. Sitarama、Jon C. Snader、Ian Lance Taylor、Rich Teer和Andy Tucker。   下列诸位通过电子邮件回答过我的问题,有人甚至回答过很多问题。澄清这些问题提高了本书的准确性并改进了语言表达,他们是David Bausum、Dave Butenhof、Bill Gallmeister、 Mukesh Kacker、Brian Kernighan、Larry McVoy、Steve Rago、Keith Skowran、Bart Smaalders、Andy Tucker和John Wait。   特别感谢GSquared的Larry Rafsky提供了很多帮助。像以往一样,感谢国家光学天文台(NOAO)、Sidney Wolff、Richard Wolff和Steve Grandi,他们为我提供了网络与主机的访问权限 。DEC公司的Jim Bound、Matt Thomas、Mary Clouter和Barb Glover提供了用于本书多数示例的Alpha系统。书中的一部分代码是在其他Unix系统上测试的:感谢Red Hat软件公司的Michael Johnson提供了最新版本的Red Hat Linux,感谢IBM奥斯汀实验室的Dave Marquardt和Jessie Haug提供了RS/6000系统以及最新版本的AIX的访问权限。   最后还要感谢Prentice Hall的优秀员工(本书的编辑Mary Franz,还有Noreen Regina、Sophie Papanikolaou和Patti Guerrieri)给予的帮助,尤其是在很紧的时间内完成一切所付出 的努力。   版权说明   我制作了本书的最终电子版(PostScript格式),最后排版成现在的书。我用James Clark编写的优秀的groff包为本书排版,该软件包安装在一台运行Solaris 2.6的SparcStation工作站 上。(认为troff已经过时的报导显然太夸张了。)我使用vi编辑器键入了所有的138 897个单词,用gpic程序绘制了72幅插图(其中用到了许多由Gary Wright编写的宏),用gtbl程序生成了 35张表格,为全书添加了索引(用到了Jon Bentley与Brian Kernighan编写的一组awk脚本),并设计了最终的版式。我录入书中的8 046行C语言源代码,使用的是Dave Hanson的loom程序、 GNU的indent程序和Gary Wright写的一些脚本。   欢迎读者以电子邮件的方式反馈意见、提出建议或订正错误。   W. Richard Stevens   1998年7月于亚利桑那州图森市   http://www.kohala.com/~rstevens    媒体评论   “我做专业程序员已经二十余年了,每当要写新程序的时候,我都要参考这本书。Stevens的书是我进入VoIP和音频CODEC网络编程领域的敲门砖。”   ——C. T. Vanderdecken   “在我做过的项目中,已经记不清楚有多少次靠这套书挽狂澜于既倒……每位真正的UNIX系统程序员都应该买一套。”   ——David Sharpe   “对每位UNIX平台的程序员而言,这本书都是必备的。它深入阐释了UNIX平台上的各种IPC API。既涵盖System V也涉及POSIX标准,对于IPC的论述无可匹敌。书末的附录对各种管道、 FIFO、Posix消息队列、System V消息队列、门、Sun RPC的性能进行了比较,我从来没有看到任何书能如此广泛而深入地介绍这一主题。更何况,它出自权威人物之手。”   ——asingh   “Stevens是UNIX网络编程的‘神’,至少是我的‘神’。”   ——Matthew MacGibbon

img
UNIX网络编程 卷2 进程间通信(第2版)(中文版)--随书源...

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《UNIX网络编程.卷2,进程间通信(第2版)(中文版)》的随书源代码 UNIX网络编程.卷2,进程间通信(第2版)(中文版)(已故著名技术作家Stevens的传世之作) 基本信息 原书名: UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition) 原出版社: Prentice Hall 作者: (美)W. Richard Stevens 丛书名: 图灵程序设计丛书 操作系统 出版社:人民邮电出版社 ISBN:9787115230287 上架时间:2010-7-9 出版日期:2010 年7月 开本:16开 页码:454 版次:2-1 所属分类:计算机 > 操作系统 > UNIX 计算机 > 软件与程序设计 > 网络编程 > 综合 内容简介   两卷本的《unix网络编程》是已故著名技术作家w. richard stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。良好的进程间通信(ipc)机制是提高unix程序性能的关键。本书全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程调用(rpc)。书中包含了大量经过优化的源代码,帮助读者加深理解。这些源代码可以从图灵网站本书网页免费注册下载。    本书是网络研究和开发人员公认的权威参考书,深入理解本书内容,方能设计出良好的unix软件。 作译者   W. Richard Stevens 国际知名的UNIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。1990年他回到图森,从事专业技术写作和咨询工作.写下了多种经典的传世之作,包括《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷).Stevens于1999年9月1日去世,年仅48岁.2000年他被国际权威机构USENIX追授“终身成就奖”. 目录 封面 -12 封底 -11 扉页 -10 版权 -9 版权声明 -8 前言 -7 目录 -3 第一部分 简介 1 第1章 简介 2 1.1 概述 2 1.2 进程、线程与信息共享 3 1.3 IPC对象的持续性 4 1.4 名字空间 5 1.5 fork、exec和exit对IPC对象的影响 7 1.6 出错处理:包裹函数 8 1.7 Unix标准 9 1.8 书中IPC例子索引表 11 1.9 小结 13 习题 13 第2章 Posix IPC 14 2.1 概述 14 2.2 IPC名字 14 2.3 创建与打开IPC通道 16 2.4 IPC权限 18 2.5 小结 19 习题 19 第3章 System V IPC 20 3.1 概述 20 3.2 key_t键和ftok函数 20 3.3 ipc_perm结构 22 3.4 创建与打开IPC通道 22 3.5 IPC权限 24 3.6 标识符重用 25 3.7 ipcs和ipcrm程序 27 3.8 内核限制 27 3.9 小结 28 习题 29 第二部分 消息传递 31 第4章 管道和FIFO 32 4.1 概述 32 4.2 一个简单的客户-服务器例子 32 4.3 管道 32 4.4 全双工管道 37 4.5 popen和pclose函数 39 4.6 FIFO 40 4.7 管道和FIFO的额外属性 44 4.8 单个服务器,多个客户 46 4.9 对比迭代服务器与并发服务器 50 4.10 字节流与消息 51 4.11 管道和FIFO限制 55 4.12 小结 56 习题 57 第5章 Posix消息队列 58 5.1 概述 58 5.2 mq_open、mq_close和mq_unlink函数 59 5.3 mq_getattr和mq_setattr函数 61 5.4 mq_send和mq_receive函数 64 5.5 消息队列限制 67 5.6 mq_notify函数 68 5.7 Posix实时信号 78 5.8 使用内存映射I/O实现Posix消息队列 85 5.9 小结 101 习题 101 第6章 System V消息队列 103 6.1 概述 103 6.2 msgget函数 104 6.3 msgsnd函数 104 6.4 msgrcv函数 105 6.5 msgctl函数 106 6.6 简单的程序 107 6.7 客户-服务器例子 112 6.8 复用消息 113 6.9 消息队列上使用select和poll 121 6.10 消息队列限制 122 6.11 小结 124 习题 124 第三部分 同步 125 第7章 互斥锁和条件变量 126 7.1 概述 126 7.2 互斥锁:上锁与解锁 126 7.3 生产者-消费者问题 127 7.4 对比上锁与等待 131 7.5 条件变量:等待与信号发送 132 7.6 条件变量:定时等待和广播 136 7.7 互斥锁和条件变量的属性 136 7.8 小结 139 习题 139 第8章 读写锁 140 8.1 概述 140 8.2 获取与释放读写锁 140 8.3 读写锁属性 141 8.4 使用互斥锁和条件变量实现读写锁 142 8.5 线程取消 148 8.6 小结 153 习题 153 第9章 记录上锁 154 9.1 概述 154 9.2 对比记录上锁与文件上锁 157 9.3 Posix fcntl记录上锁 158 9.4 劝告性上锁 162 9.5 强制性上锁 164 9.6 读出者和写入者的优先级 166 9.7 启动一个守护进程的唯一副本 170 9.8 文件作锁用 171 9.9 NFS上锁 173 9.10 小结 173 习题 174 第10章 Posix信号量 175 10.1 概述 175 10.2 sem_open、sem_close和sem_unlink函数 179 10.3 sem_wait和sem_trywait函数 180 10.4 sem_post和sem_getvalue函数 180 10.5 简单的程序 181 10.6 生产者-消费者问题 186 10.7 文件上锁 190 10.8 sem_init和sem_destroy函数 191 10.9 多个生产者,单个消费者 193 10.10 多个生产者,多个消费者 196 10.11 多个缓冲区 199 10.12 进程间共享信号量 205 10.13 信号量限制 206 10.14 使用FIFO实现信号量 206 10.15 使用内存映射I/O实现信号量 210 10.16 使用System V信号量实现Posix信号量 218 10.17 小结 224 习题 225 第11章 System V信号量 226 11.1 概述 226 11.2 semget函数 227 11.3 semop函数 229 11.4 semctl函数 231 11.5 简单的程序 232 11.6 文件上锁 237 11.7 信号量限制 238 11.8 小结 242 习题 242 第四部分 共享内存区 243 第12章 共享内存区介绍 244 12.1 概述 244 12.2 mmap、munmap和msync函数 247 12.3 在内存映射文件中给计数器持续加1 250 12.4 4.4BSD匿名内存映射 254 12.5 SVR4/dev/zero内存映射 255 12.6 访问内存映射的对象 255 12.7 小结 259 习题 260 第13章 Posix共享内存区 261 13.1 概述 261 13.2 shm_open和shm_unlink函数 261 13.3 ftruncate和fstat函数 262 13.4 简单的程序 263 13.5 给一个共享的计数器持续加1 267 13.6 向一个服务器发送消息 270 13.7 小结 275 习题 275 第14章 System V共享内存区 276 14.1 概述 276 14.2 shmget函数 276 14.3 shmat函数 277 14.4 shmdt函数 277 14.5 shmctl函数 277 14.6 简单的程序 278 14.7 共享内存区限制 281 14.8 小结 282 习题 283 第五部分 远程过程调用 285 第15章 门 286 15.1 概述 286 15.2 door_call函数 291 15.3 door_create函数 292 15.4 door_return函数 293 15.5 door_cred函数 294 15.6 door_info函数 294 15.7 例子 295 15.8 描述符传递 306 15.9 door_sever_create函数 310 15.10 door_bind、door_unbind和door_revoke函数 315 15.11 客户或服务器的过早终止 315 15.12 小结 321 习题 322 第16章 Sun RPC 323 16.1 概述 323 16.2 多线程化 330 16.3 服务器捆绑 333 16.4 认证 336 16.5 超时和重传 338 16.6 调用语义 342 16.7 客户或服务器的过早终止 343 16.8 XDR:外部数据表示 345 16.9 RPC分组格式 361 16.10 小结 365 习题 366 后记 368 附录A 性能测量 371 附录B 线程入门 406 附录C 杂凑的源代码 409 附录D 精选习题解答 417 参考文献 433 索引 435 前言   概述   大多数重要的程序都涉及进程间通信(Interprocess Communication, IPC)。这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程序更好。从历史角度看,应用程序有如下几种构建方法。   (1) 用一个庞大的程序完成全部工作。程序的各部分可以实现为函数,函数之间通过参数、返回值和全局变量来交换信息。   (2) 使用多个程序,程序之间用某种形式的IPC进行通信。许多标准的Unix工具都是按这种风格设计的,它们使用shell管道(IPC的一种形式)在程序之间传递信息。   (3) 使用一个包含多个线程的程序,线程之间使用某种IPC。这里仍然使用术语IPC,尽管通信是在线程之间而不是在进程之间进行的。   还可以把后两种设计形式结合起来:用多个进程来实现,其中每个进程包含几个线程。在这种情况下,进程内部的线程之间可以通信,不同的进程之间也可以通信。   上面讲述了可以把完成给定任务所需的工作分到多个进程中,或许还可以进一步分到进程内的多个线程中。在包含多个处理器(CPU)的系统中,多个进程也许可以(在不同的CPU上)同时运行,或许给定进程内的多个线程也能同时运行。因此,把任务分到多个进程或线程中有望减少完成指定任务的时间。   本书详细描述了以下4种不同的IPC形式:   (1) 消息传递(管道、FIFO和消息队列);   (2) 同步(互斥量、条件变量、读写锁、文件和记录锁、信号量);   (3) 共享内存(匿名的和具名的);   (4) 远程过程调用(Solaris门和Sun RPC)。   本书不讨论如何编写通过计算机网络通信的程序。这种通信通常涉及使用TCP/IP协议族的套接字API,相关主题在第1卷[Stevens 1998]中有详细讨论。   有人可能会提出质疑:不应该使用单主机或非网络IPC(本卷的主题),所有程序都应该在网络上的多台主机上同时运行。但在日常实践中,单主机IPC往往比网络通信快得多,而且有时还简单些。共享内存、同步等方法通常也只能用于单主机,跨网络时可能无法使用。经验和历史表明,非网络IPC(本卷)与跨网络IPC(第1卷)都是需要的。   本卷建立在第1卷和我写的另外4本书的基础上,这5本书在本书中简记如下:   UNPv1:UNIX Network Programming, Volume 1 [Stevens 1998];   APUE:Advanced Programming in the UNIX Environment [Stevens 1992];   TCPv1:TCP/IP Illustrated, Volume 1 [Stevens 1994];   TCPv2:TCP/IP Illustrated, Volume 2 [Wright and Stevens 1995];   TCPv3:TCP/IP Illustrated, Volume 3 [Stevens 1996]。 .  在一本以“网络编程”为书名一部分的书中讨论IPC看似有点奇怪,但事实上IPC经常用于网络应用程序。我在《UNIX网络编程》1990年版的前言里就指出:“想知道如何为网络开发软件,必须先理解进程间通信(IPC)。”   与第1版的区别   本书完全重写并扩充了1990年版《UNIX网络编程》的第3章和第18章。字数统计表明,现在的内容是第1版的5倍。新版的主要改动归纳如下。   不仅讨论了“System V IPC”的三种形式(消息队列、信号量以及共享内存),还对实现了这些IPC的新的Posix函数进行了介绍。(1.7节将详细介绍Posix标准族。)我认为使用Posix IPC函数是大势所趋,因为它们比System V中的相应部分更具优势。   讨论了用于同步的Posix函数:互斥锁、条件变量以及读写锁。它们可用于线程或进程的同步,而且往往在访问共享内存时使用。   本卷假定使用Posix线程环境(称为“Pthreads”),许多示例都是用多线程而不是多进程构建的。   对管道、FIFO和记录锁的讨论侧重于从它们的Posix定义出发。   本卷不仅描述了IPC机制及其使用方法,还实现了Posix消息队列、读写锁与Posix信号量(都可以实现为用户库)。这些实现可以把多种不同的特性捆绑起来(例如,Posix信号量的一种实现用到了互斥量、条件变量和内存映射I/O),还强调了我们在应用程序中经常要处理的一些问题(如竞争状态、错误处理、内存泄漏和变长参数列表)。理解某种特性的实现通常有助于了解如何使用该特性。   对RPC的讨论侧重于Sun的RPC包。在此之前讲述了新的Solaris门API,它类似于RPC但用于单主机。这么一来我们就介绍了许多在调用其他进程中的过程时需要考虑的特性,而不用关心网络方面的细节。   读者对象   本书既可以用作IPC的教程,也可以用作有经验的程序员的参考书。全书划分为以下4个主要部分:   消息传递;   同步;   共享内存;   远程过程调用。   但许多读者可能只对特定的部分感兴趣。第2章总结了所有Posix IPC函数共有的特性,第3章归纳了所有System V IPC函数共有的特性,第12章介绍了Posix和System V的共享内存,但书中多数章节都可以独立于其他章节阅读。所有读者都应该阅读第1章,尤其是1.6节,该节介绍了一些贯穿全书的包装函数。讨论Posix IPC的各章与讨论System V IPC的各章彼此独立,有关管道、FIFO和记录锁的几章不属于上述两个阵营,关于RPC的两章也独立于其他IPC方法。   为了方便读者把本书作为参考书,本书提供了完整的全文索引,并在最后几页总结了每个函数和结构的详细描述在正文中的哪里可以找到。为了给不按顺序阅读本书的读者提供方便,我们在书中为各个主题提供了大量的交叉引用。   源代码与勘误   书中所有示例的源代码可以从作者主页(列在前言的最后)获得 。学习本书讲述的IPC技术的最好方法就是下载这些程序,对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法。每章末尾提供了大量的习题,大部分在附录D中给出答案。   本书的最新勘误表也可以从作者主页获取。   致谢   尽管封面上只出现了作者一个人的名字,但一本高质量的书的出版需要许多人的共同努力。首先要感谢我的家人,他们在我写书的那段时间里承担了一切。再次感谢你们:Sally、Bill、Ellen和David。   感谢技术审稿人给出的宝贵的反馈意见(打印出来有135页)。他们发现了许多错误,指出了需要更多解释的地方,并对表达、用词和代码提出了许多修改建议,他们是Gavin Bowe、Allen Briggs、Dave Butenhof、Wan-Teh Chang、Chris Cleeland、Bob Friesenhahn、Andrew Gierth、Scott Johnson、Marty Leisner、Larry McVoy、Craig Metz、Bob Nelson、Steve Rago、Jim Reid、Swamy K. Sitarama、Jon C. Snader、Ian Lance Taylor、Rich Teer和Andy Tucker。   下列诸位通过电子邮件回答过我的问题,有人甚至回答过很多问题。澄清这些问题提高了本书的准确性并改进了语言表达,他们是David Bausum、Dave Butenhof、Bill Gallmeister、Mukesh Kacker、Brian Kernighan、Larry McVoy、Steve Rago、Keith Skowran、Bart Smaalders、Andy Tucker和John Wait。   特别感谢GSquared的Larry Rafsky提供了很多帮助。像以往一样,感谢国家光学天文台(NOAO)、Sidney Wolff、Richard Wolff和Steve Grandi,他们为我提供了网络与主机的访问权限。DEC公司的Jim Bound、Matt Thomas、Mary Clouter和Barb Glover提供了用于本书多数示例的Alpha系统。书中的一部分代码是在其他Unix系统上测试的:感谢Red Hat软件公司的Michael Johnson提供了最新版本的Red Hat Linux,感谢IBM奥斯汀实验室的Dave Marquardt和Jessie Haug提供了RS/6000系统以及最新版本的AIX的访问权限。   最后还要感谢Prentice Hall的优秀员工(本书的编辑Mary Franz,还有Noreen Regina、Sophie Papanikolaou和Patti Guerrieri)给予的帮助,尤其是在很紧的时间内完成一切所付出的努力。   版权说明   我制作了本书的最终电子版(PostScript格式),最后排版成现在的书。我用James Clark编写的优秀的groff包为本书排版,该软件包安装在一台运行Solaris 2.6的SparcStation工作站上。(认为troff已经过时的报导显然太夸张了。)我使用vi编辑器键入了所有的138 897个单词,用gpic程序绘制了72幅插图(其中用到了许多由Gary Wright编写的宏),用gtbl程序生成了35张表格,为全书添加了索引(用到了Jon Bentley与Brian Kernighan编写的一组awk脚本),并设计了最终的版式。我录入书中的8 046行C语言源代码,使用的是Dave Hanson的loom程序、GNU的indent程序和Gary Wright写的一些脚本。   欢迎读者以电子邮件的方式反馈意见、提出建议或订正错误。   W. Richard Stevens   1998年7月于亚利桑那州图森市   http://www.kohala.com/~rstevens    媒体评论   “我做专业程序员已经二十余年了,每当要写新程序的时候,我都要参考这本书。Stevens的书是我进入VoIP和音频CODEC网络编程领域的敲门砖。”   ——C. T. Vanderdecken   “在我做过的项目中,已经记不清楚有多少次靠这套书挽狂澜于既倒……每位真正的UNIX系统程序员都应该买一套。”   ——David Sharpe   “对每位UNIX平台的程序员而言,这本书都是必备的。它深入阐释了UNIX平台上的各种IPC API。既涵盖System V也涉及POSIX标准,对于IPC的论述无可匹敌。书末的附录对各种管道、FIFO、Posix消息队列、System V消息队列、门、Sun RPC的性能进行了比较,我从来没有看到任何书能如此广泛而深入地介绍这一主题。更何况,它出自权威人物之手。”   ——asingh   “Stevens是UNIX网络编程的‘神’,至少是我的‘神’。”   ——Matthew MacGibbon

  • 全部
  • 安全技术
  • 存储
  • 操作系统
  • 服务器应用
  • 行业
  • 课程资源
  • 开发技术
  • 考试认证
  • 数据库
  • 网络技术
  • 信息化
  • 移动开发
  • 云计算
  • 大数据
  • 跨平台
  • 音视频
  • 游戏开发
  • 人工智能
  • 区块链
  • Actionscript
  • Delphi
  • Javascript
  • Python
  • Web开发
  • Oracle
  • oracle
  • Oracle
  • pdf
  • Oracle
  • part3rar
  • Oracle
  • part2rar
  • Oracle
  • part4rar
  • Oracle
  • part1rar
  • Oracle
  • part5rar
  • Oracle
  • Java2从
  • 到精通
  • pdf扫描
  • 黑马2018Python
  • 教程完整
  • (懂
  • 就能学会)
  • 代码大全
  • HTTP权威指南完整版
  • 英文原版对照阅读
  • 完整
  • VBVisualBasic2010从
  • 到精通
  • 网管教程从
  • 到精通软件篇txt
  • 学习Linux常用必会60个命令实例详解doctxt
  • UNIX网络编程卷2进程间通信第2版
  • 详细
  • UNIX网络编程卷2进程间通信第2版
  • 随书源
  • PPT下载2019第二届以太坊技术及应用大会
  • PPT下载2018中国大数据技术大会(BDTC)
  • jdk1764位
  • Navicat
  • zhangyueDirectX0xc000007b
  • PLSQLDeveloper解压版64位可用
  • javaAPI17中文版chm
  • zhangyueDirectX0xc000007b修复
  • apktool反编译资源apk
  • Navicat破解注册机
  • googlechrome浏览器
  • CSDN下载频道资源及相关规则调整公告V1110
  • 下载频道用户反馈专区
  • 下载频道积分规则调整V171018