软件开发基础知识
版本：v1.2
Crifan Li
摘要
本文主要介绍了软件开发的相关基础知识,主要包括上层软件和嵌入式方面的，比如Cygwin，Windows中的cmd，环境变量，注册表编辑器regedit，Linux的shell，开源协议，Java等。并且推荐了一些值得看的资料。
本文提供多种格式供：

HTML版本的在线地址为：
http://​www.crifan.com/​files/​doc/​docbook/​soft_​dev_​basic/​release/​html/​soft_​dev_​basic.html
有任何意见，建议，提交bug等，都欢迎去讨论组发帖讨论：
http://​www.crifan.com/​bbs/​categories/​soft_​dev_​basic/
在线阅读	HTML  1	HTMLs  2	PDF  3	CHM  4	TXT  5	RTF  6	WEBHELP  7	
下载（7zip压缩包）	HTML  8	HTMLs  9	PDF  10	CHM  11	TXT  12	RTF  13	WEBHELP  14	
修订历史	
修订 1.2	2015-04-24	crl	
· 	将Cygwin单独整理出独立的book
· 	添加其他一些软件开发基础知识
· 	把部分图片从skydrive地址改为本地地址
· 	更新嵌入式系列教程
· 		
修订 0.8	2012-11-26	crl	
· 	完成此文逻辑框架
· 	添加了windows下的环境变量部分的内容
· 	添加了Cygwin的内容
· 	添加了Cygwin中的工具和小技巧
· 	添加了Windows的regedit和cmd
· 	添加了Windows的Microsoft .NET Framework
· 		
软件开发基础知识:
Crifan Li
版本：v1.2
出版日期 2015-04-24
版权 © 2015 Crifan, http://​crifan.com

本文章遵从：署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)15

目录
前言  	 # 

1. 本文目的  	 # 
2. 待完成  	 # 
1. 软件开发简介  	 # 

1.1. 常见的计算机语言简介和总结  	 # 
1.2. 计算机编程语言基础知识  	 # 
2. 通用软件开发基础知识  	 # 

2.1. Cygwin  	 # 
2.2. Windows  	 # 

2.2.1. Windows的注册表编辑器:regedit  	 # 
2.2.2. Windows的命令行工具: cmd  	 # 

2.2.2.1. cmd简介  	 # 
2.2.2.2. cmd的基本用法  	 # 

2.2.2.2.1. 快速编辑：选取，复制，粘贴等操作  	 # 
2.2.2.2.2. 字体  	 # 
2.2.2.2.3. 布局  	 # 
2.2.2.2.4. 颜色  	 # 
2.2.2.3. cmd的高级用法  	 # 

2.2.2.3.1. 命令历史列表  	 # 
2.2.2.3.2. 开启/关闭自动补全  	 # 
2.2.2.3.3. 设置字符编码：简体中文GBK/英文  	 # 
2.2.2.4. 右键快速打开cmd并且定位到该文件夹所在路径  	 # 
2.2.3. Windows下的程序所常用的运行库：Microsoft .NET Framework  	 # 

2.2.3.1. Microsoft .NET Framework简介  	 # 
2.2.3.2. 0xC0000135错误是由于缺少了Microsoft .NET Framework  	 # 
2.3. Linux  	 # 

2.3.1. 脚本程序中最开始的那两个字符： #!，叫做shebang  	 # 
2.4. 开源协议  	 # 

2.4.1. GPL  	 # 
2.4.2. 署名-非商业性使用(CC BY-NC)  	 # 
2.5. 环境变量  	 # 

2.5.1. Windows中的环境变量  	 # 

2.5.1.1. 编辑/添加/修改windows中的环境变量  	 # 
2.5.1.2. windows中新建一个环境变量  	 # 
2.5.2. Linux中的环境变量  	 # 
2.6. Java  	 # 

2.6.1. Java安装后的环境变量的设置  	 # 
2.7. 各种图片的尺寸  	 # 
3. 嵌入式开发基础知识  	 # 

3.1. 嵌入式领域的基本概念  	 # 
3.2. 交叉编译  	 # 
4. 上层软件开发基础知识  	 # 

4.1. 轻量级数据交换格式：JSON  	 # 
4.2. 字符编码  	 # 
4.3. 正则表达式  	 # 
4.4. 网站抓取和模拟登陆  	 # 
A. 个人推荐资料合集  	 # 

A.1. 推荐书目  	 # 
A.2. 推荐资料  	 # 
参考书目  	 # 

插图清单
2.1. png小，但gif大的图片  	 # 
2.2. jpg很小，gif很大，png非常大的图片  	 # 

前言

1. 本文目的
本文目的在于，介绍软件开发的各种基础知识
以实现，看了之后，对于软件开发的很多领域的基础知识有所了解
如此在进行后续的真正的软件开发时，遇到各种细节知识，才会明白由来和背景知识

2. 待完成

第 1 章 软件开发简介
计算机软件开发，涉及到很多基础方面的背景知识
只有搞懂了了这些基础方面的知识之后
后续的软件开发，才可能得心应手

1.1. 常见的计算机语言简介和总结
计算机世界中，现存很多种计算机语言
比如常见的C，C++，Java，C#，Python，Ruby，等等
对于这些常见的语言的一些总结，可以参考教程：
各种计算机语言简介和总结  1

1.2. 计算机编程语言基础知识
而对于这些常见的计算机语言
其实很多核心的概念和逻辑是相同的，通用的
所以，后来又专门写教程，去总结这些基本的，核心的，通用的概念和逻辑
感兴趣的可参考：
计算机编程语言基础知识  2

第 2 章 通用软件开发基础知识

2.1. Cygwin
如果想要在Windows下折腾Linux方面的开发，往往要用到Cywgin
Cygwin是用来在Windows平台下模拟Linux环境的
关于Cygwin的详细解释，可参考教程：
Cygwin详解  1

2.2. Windows

2.2.1. Windows的注册表编辑器:regedit
通过windows的查找，找到regedit：

其对应的位置在：C:\ Windows

点击打开regedit：

regedit会记住上次打开的位置
打开regedit，其默认会自动定位到上次关闭时所在的位置。

2.2.2. Windows的命令行工具: cmd

2.2.2.1. cmd简介
Windows下面的命令行界面，命令工具，是对应的cmd程序。
其对应的位置在：C:\ Windows\ System32

在win7下，可以通过开始的查找，找到cmd：

其全称为：Windows Command Processor

其运行时的截图为：

cmd下运行的bat脚本文件
在Windows的cmd下面，支持运行后缀为bat或cmd的文件，成为windows下的(bat)脚本文件/批处理文件
关于Windows下的Bat脚本，详情参看Windows Batch File2

2.2.2.2. cmd的基本用法
右击cmd的左上角的图标 ，会出现对应的菜单：

可以看到，有两个配置，一个是默认配置Defaults，一个是当前窗口的属性配置properties，两者基本的操作，都是一样的。
下面来介绍一下，常见的配置：

2.2.2.2.1. 快速编辑：选取，复制，粘贴等操作
上图：

默认的cmd，一般是关闭了编辑选项中的快速编辑模式的。
非快速编辑模式

当关闭了快速编辑模式的话：
粘贴文字
如果你系统剪贴板中已经拷贝了一些字符，然后想要粘贴到cmd中，那么就需要点击右键：

选择对应的粘贴，才可以粘贴对应的字符：

复制文字
鼠标是无法直接选择对应的文字的，需要:

即右键，选择标记，然后再选择一些文字：

然后点击右键或输入键盘的Enter键，就可以实现复制对应所选内容了。
快速编辑模式

此时：
粘贴文字
而如果启用了快速编辑模式的话，那么就不会再出现上述的右键菜单了，不需要选择粘贴，通过直接点击右键，就可以实现上述字符的粘贴了。
复制文字
同理，对于复制cmd中的文字，用鼠标选择后：

然后直接通过键盘上的Enter键或点击鼠标右键，即可实现将选中的文字，拷贝到系统剪贴板中，然后就可以粘贴到别的地方/别的程序中了。

2.2.2.2.2. 字体

2.2.2.2.3. 布局

需要说明一下的是，关于屏幕缓冲区大小，指的是系统本身最大所存储的内容，
而窗口大小，指的是你当前的cmd的窗口大小。
屏幕缓冲区的大小，肯定是要大于等于窗口大小的设置的。
屏幕缓冲区大小的设置，决定了你的cmd窗口，最大能多大，即用鼠标拖拉窗口的话，最大能变成多大。
对于屏幕缓冲区：
宽度
自己试试，改成不超过你的屏幕的宽度为宜，否则横向太长，输出的内容，就不容易看清了。
高度
一般设置为大于窗口的大小，这样方便窗口在上下的高度方面，可以随时进行调整。

2.2.2.2.4. 颜色

2.2.2.3. cmd的高级用法
提示
相关的旧帖为：【整理】Win7中的Cmd命令行的使用技巧3

2.2.2.3.1. 命令历史列表
cmd中按F7，可以调出（之前所输入的）命令的历史列表
直接上图：

用法是，在cmd中，按F7，即可出现上图的效果。
其实，默认的通过键盘上的上线箭头，可以输入之前/后输入过的命令的。
但是之前不知道，原来F7可以跳出命令历史列表的窗口的。

2.2.2.3.2. 开启/关闭自动补全
win7默认的cmd，是支持自动补全的（就像Linux中shell中的效果一样）
即你输入字母后，按TAB键，则会自动帮你匹配出相应的支持的命令（或当前文件夹下面的文件名）
但是之前不知道，此功能，还是可以自己设置开启或关闭的。
直接上图：

即，cmd中，右键窗口左上角的图标，选择 默认值，然后打开了 控制台窗口的属性 的对话框，对于其中的编辑选项中的自动完成，可以自己开启或关闭。
我之前就遇到过一次，不小心，不知道系统怎么出了异怪的事情，cmd中自动补全功能失效了，按TAB键不起作用了，只是光标向右跳动一个TAB的距离，变成了输入TAB键的功能了。后来才找到此选项，关闭后，再启用，才折腾好，TAB才可以继续实现自动补全的功能的。

2.2.2.3.3. 设置字符编码：简体中文GBK/英文
即 控制台窗口 属性中的默认代码页的设置：

此处中文的win7，一般已经默认设置为了936了，这样显示出来的文字，是对应的中文GBK的编码的。
因此，如果你使用其他程序向控制台输出中文字符的话，比如之前用过python的logging.info输入中文信息到cmd中，此时如果你输出的汉字的编码也是GBK的话，和cmd中的GBK一致，则汉字是可以正确显示的。
如果你输出的汉字是其他编码，比如UTF-8，那么和cmd中的GBK编码不一致，就导致cmd中显示出来的汉字，是乱码了。对于python中，输入汉字是unicode话，logging.info会自动输出匹配的汉字，使得其可以正确显示的。

2.2.2.4. 右键快速打开cmd并且定位到该文件夹所在路径
有两种方法：
· 	手动添加注册表项打开注册表编辑regedit，且定位至HKEY_CLASSES_ROOT\ Directory\ shell
提示
对注册表不了解的，请参考第 2.2.1 节 “Windows的注册表编辑器:regedit”
在shell下新建一个项（目录），命名为OpenCmd
在OpenCmd下新建一个项（目录），名为command
给command下面那个ab图标的，REG_SZ类型的值，设置为
cmd.exe /k pushd %L
直接导入注册表文件
· 	上述步骤，也可通过导入注册表的方式来实现统一功能。
· 	把下面的内容：
· 	
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ Directory\ shell\ OpenCmd\ command]
@=”cmd.exe /k pushd %L”
     
· 	保存为OpenCmd.reg，然后双击运行OpenCmd.reg，即可。
· 	提示
相关的旧帖为：【整理】在windows下添加右键使得可以运行cygwin且直接定位到当前文件夹 + 【整理】如何在Windows XP中，右键添加命令行cmd command，打开当前文件夹，定位到当前路径4
无意间，从Windows 7使用技巧：在当前路径下打开命令行（cmd）命令窗口5中发现，原来Win7中已经支持了此功能了。
即，在Win7中，在右击某文件夹的之前，先按Shift，然后再右击
此时就会多出一个“在此处打开命令行窗口”,”Open command window here”

同样可以实现快速打开cmd并定位到该文件夹所在路径。

2.2.3. Windows下的程序所常用的运行库：Microsoft .NET Framework

2.2.3.1. Microsoft .NET Framework简介
Microsoft .NET Framework是windows操作系统下很常见的一个和开发人员有关的组件。
Microsoft .NET Framework的作用是为了提供此平台，此平台包含很多功能，供其他软件调用，而不需要关心细节，实现程序可移植性更好。
Microsoft .NET Framework目前已有很多个版本。大家最常见的有这几个：
· 	Microsoft .NET Framework 2.0
· 	Microsoft .NET Framework 3.0
· 	Microsoft .NET Framework 3.5
· 	Microsoft .NET Framework 4.0
· 	其不同的版本，新版本兼容旧版本。
现在很多人常用的很多软件，也是利用到Microsoft .NET Framework里面的功能了。
某个程序如果用到了Microsoft .NET Framework，会在程序发布的时候，说明最低需要哪个版本的Microsoft .NET Framework的。
比如，如果你安装的Microsoft .NET Framework 3.5，而程序要求最低是Microsoft .NET Framework 2.0，则你是完全满足了程序要求的，可以正常运行程序的。
目前最常见的Windows的操作系统是XP和Win7
· 	XP
· 	XP系统默认情况下，是没有安装Microsoft .NET Framework
· 	只不过，由于其他很多程序的运行也需要Microsoft .NET Framework，所以之前运行某软件的时候，就已经安装了Microsoft .NET Framework。
· 	另外还由于目前很多人安装的XP系统，是通过别人制作的GHOST版本的XP，其内在也已经集成了Microsoft .NET Framework了
· 	所以,换句话说，对于绝大多数人来说，此时此刻，你的XP中极有可能也已经安装了Microsoft .NET Framework了。
· 	Win7
· 	而Win7默认本身已经集成了Microsoft .NET Framework 3.5了。
· 	
2.2.3.2. 0xC0000135错误是由于缺少了Microsoft .NET Framework
综上所述，你的XP或Win7中，多数情况下，都已经支持Microsoft .NET Framework了。
而再去运行一般的软件的时候，也都可以正常运行的。
但是，凡事总有例外，如果遇到系统上没有装Microsoft .NET Framework，而去运行那些需要Microsoft .NET Framework支持的程序的时候，就会遇到0xC0000135错误
比如，我的一个小程序：downloadSongtasteMusic6，别人在XP上运行，结果出错：

即显示:应用程序正常初始化(0xc0000135)失败。请单击”确定”，终止应用程序。
解决办法是：
可以去网上随便下载一个，比如非凡软件网站的Microsoft .NET Framework v2.0 简体中文版7
然后安装即可。
当然，如果本身程序所依赖的Microsoft .NET Framework版本很高，比如要求必须是Microsoft .NET Framework 3.5以上，那么你就必须去找Microsoft .NET Framework 3.5或Microsoft .NET Framework 4.0去安装，才可以的

2.3. Linux

2.3.1. 脚本程序中最开始的那两个字符： #!，叫做shebang
http://en.wikipedia.org/wiki/Shebang_(Unix)

2.4. 开源协议
很多软件，书籍，文章等，在发布的时候，都声明遵从某种协议。
Linux/Unix世界中，多数软件都是遵循GPL等协议的。
最新看到很多的书籍，文章等，声明说是遵循“署名-非商业性使用(CC BY-NC)”的。
下面就对一些常见的协议，做个最简单的介绍。

2.4.1. GPL
简单说就是：如果你写程序用了开源的GPL的代码，那么你的程序也必须开源

2.4.2. 署名-非商业性使用(CC BY-NC)
署名-非商业性使用(CC BY-NC)有很多个版本，之前的有2.08的，后来又2.59的，最新的有3.010的
关于2.5的中文版的，官网的解释，请参见：署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5) 11
关于其含义，此处借用简明Python教程-前言-约定条款12中的说明：
“
简单地说，你只要署上我的名字，就可以免费复制、分发和展示本书。
未得到我的允许，你禁止把本书用于商业目的。
你在修改本书的时候，必须清楚地标明所有做了改动的地方,
你发布修改后的作品时也必须遵照与本书相同的约定。
”
如此，CC BY NC的含义，就很清晰明了。
其基本等价于如此的声明：
欢迎转载，但请著名出处
未经作者允许，禁止商业使用

2.5. 环境变量
在应用程序不修改的前提下，支持更多的平台。
是程序和操作系统之间信息沟通的一种方式。

2.5.1. Windows中的环境变量

2.5.1.1. 编辑/添加/修改windows中的环境变量
下面，通过，把xsltproc所在的路径：E:\ DevRoot\ docbook\ tools\ xslt\ bin，添加到windows中的Path环境变量中去，为例
详细详解每一步是如何操作的：
右键桌面上的我的电脑,选择属性：

高级⇒环境变量:

可以看到，一个是当前用户的环境变量，一个是系统的全局的环境变量:

其中：
当前用户的环境变量
从作用范围来说，只是针对当前用户有效，所以可称为是局部的环境变量
系统环境变量
从作用范围来说，针对所有用户都有效，所以可称为全局的环境变量
一般设置环境变量，是希望所有用户都有效，所以往往都是去设置系统的环境变量。
然后去找到系统的Path环境变量：

双击后，可以编辑对应环境变量的值：

关于windows中的环境变量的值，此处简单说明一下。
其某个环境变量的值，比如此处的path，其值可以有很多个部分，对应的每个部分之间，都是以分号;来分隔开的：

然后对于想要编辑环境变量的值的话，除了可以左右键移动之外，也可以通过使用Home和End键，分别定为到最开始和最后的位置。
而Ctrl+←或Ctrl+→可以实现一次移动一个单词（word）。
此处，通过End键移动到最后，可以看出，对于变量值的最后，可以没有分号分隔：

当前为了方便后续再添加其他的只，也可以写上。
而此处需要在后面添加新的一部分的值，所以是必须要加上冒号来分隔开。
然后加上此处的xsltproc的路径：E:\ DevRoot\ docbook\ tools\ xslt\ bin

然后再点击确定：

其会稍微停顿一下，那是由于系统去更新此环境变量的值了。
最后再点击确定，即可完成对环境变量的修改：

之后，你再重新打开windows的命令行cmd，此时的环境变量，就真正生效了。
如何在windows中查看某个环境变量的值
在windows中，打开命令行cmd后，输入
echo %PATH%
即可查看名为path的环境变量的值。查看其他变量，方法类似。

2.5.1.2. windows中新建一个环境变量
在系统变量中，点击新建：

填入变量名和值:

可以看到新建好了一个系统环境变量FOP_HOME了：

如此，即可建立一个环境变量了，然后点击确定，去让系统保存，生效，即可。

2.5.2. Linux中的环境变量

2.6. Java
JRE：普通使用者，只需要安装此Java Runtime Environment即可。
JDK：Java程序的开发者，才需要安装此JDK，用于开发各种Java相关的程序。

2.6.1. Java安装后的环境变量的设置
在Windows系统中，Java安装完毕之后，需要去设置必要的环境变量：
JAVA_HOME
新建JAVA_HOME，设置值为jdk的安装路径，比如：
C:\ Program Files\ Java\ jdk1.7.0
CLASSPATH
新建CLASSPATH，设置值为
.;%JAVA_HOME%\ lib\ dt.jar;%JAVA_HOME%\ lib\ tools.jar;
PATH
修改PATH环境变量，（往往是在最后的位置去）添加：
%JAVA_HOME%\ bin;%JAVA_HOME%\ jre\ bin;
然后再去重新打开一个Windows中的命令行cmd，去输入javac即可验证是否已正常安装了java了。

2.7. 各种图片的尺寸
其实关于常见图片格式的大小问题，之前就写过一个帖子，整理了向word中粘贴不同格式的图片，导致word大小不同的问题。
当时好像是发现，gif是相对尺寸最小的。
此处，之所以在软件开发中提及到各种图片的尺寸，是因为，在有些和软件开发相关的过程中，会希望在不降低图片的视觉效果的前提下，而使用最小的图片。
比如docbook等开发过程中，遇到在写xml源码中，用到对应的figure图片，想要在生成的html中显示的话，则希望图片的文件大小，尽量小，以减少服务器的负荷。
而经过折腾发现，同样一副图片，分辨率相同和看起来肉眼分辨不出差距的前提下，不同的格式的图片的文件大小，很多时候，还是差距很大的。
所以，就希望在不影响视觉的前提下，仅保留图片大小是最小的那种格式。
此时，最小的格式，并不一定完全是gif格式。目前已经发现的规律是：
· 	多数情况下，png是最小的
· 	多数时候，将图片从jpf和gif转换为png的时候，图片尺寸都会减少的。
· 	之前用PhotoFiltre13转换过很多的图片，比如从gif转换为png，很多图片尺寸，都是降低40%左右，比如从49K变成34K
· 	word另存为html而获得的png图片的文件大小是相对比较大的，可以转换为更小的
我刚开始遇到的情况，其实和上述结果相反。因为是用PhotoFiltre将png图片转换为gif，结果尺寸是降低了50%。
后来才发现，把转换后的gif再去转换为png，结果又在gif基础上降低了40%左右。
然后才想起来，原来那些png格式的图片，都是从word另存为html而导出的，所以好像是其故意保留了较高的颜色等内在参数，而使得图片大小相对较大。
经过PhotoFiltre转换后，可以在另存为的时候，选择默认配置，就可以只包括基本内容，大大降低了图片的尺寸。
而转换后的图片，至少肉眼是看不出前后的差距的。
所以，对于自己觉得尺寸大的图片，还是要通过PhotoFiltre去转换为png试试，看看是否可以降低图片尺寸。
有些内容简单的图片，png反而比gif小，而gif却很大
· 	比如这样的图片，本身图片所包含内容不多：
· 	
· 	图 2.1. png小，但gif大的图片
· 	
· 	有些内容复杂，但是低分辨率的图片，jpg很小，gif很大，png非常大
· 	比如这张图片，本身图片包含不少，但是是低分辨率：
· 	
· 	图 2.2. jpg很小，gif很大，png非常大的图片
· 	
· 	

第 3 章 嵌入式开发基础知识

3.1. 嵌入式领域的基本概念
关于嵌入式开发，其实也有很多的背景知识。
只有了解了背景知识、整体概念后，才能真正搞懂每个细节内部具体实现的原因。
关于嵌入式方面的知识，目前已整理出系列的教程：
· 	先去看嵌入式软件开发1以便了解嵌入式软件领域的背景知识和通用知识。
· 	而在嵌入式软件领域内，和驱动开发相关的内容，可以参考：嵌入式驱动开发2
· 	而在嵌入式软件领域内，和Linux软件相关的知识，可以参考：嵌入式Linux软件开发3
· 	而在嵌入式的软件驱动领域内，和Linux驱动相关的知识，可以参考：嵌入式Linux驱动开发4
· 	
3.2. 交叉编译
嵌入式开发中，对于交叉编译的概念，是第一个需要去搞懂的。
以及，搞清楚，如何得到交叉编译器，是使用已有的，还是自己编一个自己的
关于这方面的内容，可参考教程：
交叉编译详解  5
其中关于如何用crosstool-ng去制作交叉编译器方面的知识，也专门整理出了教程：
crosstool-ng详解  6

第 4 章 上层软件开发基础知识
有些软件开发的基础知识，是主要用于上层软件领域的。
此处，就来介绍这些软件基础知识。

4.1. 轻量级数据交换格式：JSON
在折腾网络方面的东西，往往会涉及到数据交换
JSON是其中一种
相对来说，属于比较轻量级的
且容易实现。
关于JSON的详细解释，参见教程：
JSON详解  1

4.2. 字符编码
上层软件开发时，很多时候，会遇到和字符的编码格式方面的处理
比如用C#，Python处理抓取的网页时，就涉及到对应的charset
就要用正确的编码去编码，解码对应的字符串。
此时，就需要对字符编码，这个相对比较通用的基础知识，有个了解。
关于字符编码，之前写了个极其详尽的教程：
字符编码详解  2
后来发现，该教程，还是内容太多，太繁琐。
所以，后来为了更容易看懂常见的字符编码，了解常见的字符编码之间的关系
又去写了个相对简要的介绍：
字符编码简明教程  3

4.3. 正则表达式
如果是在上层软件开发期间，涉及到复杂的字符串处理的话
尤其是查找，替换等操作的话
很多时候，都可以利用，正则表达式，这个工具，或者说语言，去高效的实现你要的操作
关于正则表达式，可参见教程：
正则表达式学习心得  4
和
正则表达式学习心得  5

4.4. 网站抓取和模拟登陆
在折腾，网络抓取，模拟登陆，动态网页等等期间
总结了很多基本的原理，逻辑，以及示例代码等等
然后整理出来称为一个独立的教程
对于这方面的需要参考的，可以去看：
详解抓取网站，模拟登陆，抓取动态网页的原理和实现（Python，C#等）  6

附录 A. 个人推荐资料合集

A.1. 推荐书目
《程序员的自我修养》 编译、链接与库 - 潘爱民
linux设备驱动开发详解 - 宋宝华

A.2. 推荐资料

参考书目

Windows
[1] Windows7 CMD提示的5个技巧1 

Java
[2] java设置环境变量_百度经验2 
[3] CSE40463/60463 Fall 20073