【云计算 IT 基础知识】 2.1 云计算概述

muzilan 2016-03-25 03:04:54
加精
云计算(Cloud Computing)是一种基于互联网的计算方式,通过这种方式,共享的软硬 件资源和信息可以按需提供给计算机和其他设备。云其实是网络、互联网的一种比喻说 法。云计算有狭义云计算和广义云计算两种概念:

---狭义云计算 指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源。
---广义云计算 指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种 服务可以是IT、软件、互联网相关,也可是其他服务。

下图-云计算示意图:



云计算的核心思想是通过统一管理和调度计算资源池中的资源,向用户提供服务。计算 资源池由大量用网络连接的计算资源构成。提供资源的网络被称为云。云中的资源在使 用者看来是可以无限、随时扩展的,并且可以随时获取,按需使用,按使用付费。

云分类

目前看来,云主要有以下几种分类。随着云计算的不断发展,可能会产生更多种类的
云。
l 公有云
公有云通常指第三方提供商为用户提供的能够使用的云。公有云一般可通过Internet 使用,可能是免费或成本低廉的。这种云有许多实例,可在当今整个开放的公有网 络中提供服务。
l 私有云
私有云为一个企业单独使用而构建,提供对数据、安全性和服务质量的最有效控 制。私有云可由企业的IT部门或云平台业务提供商搭建。企业可以在搭建的云平台 基础上部署自己的网络或应用服务。私有云可部署在企业的数据中心中,也可统一 部署在云平台业务提供商的机房。
l 混合云
混合云是公有云和私有云两种服务方式的结合。由于安全和控制原因,并非所有的 企业信息都能放置在公有云上,因此大部分已经应用云计算的企业将会使用混合云 模式。混合云为其他目的的弹性需求提供了很好的基础。比如私有云可以把公有云 作为灾难转移的平台,在需要的时候使用它。
l 移动云
移动云把虚拟化技术应用于手机和平板电脑。适用于移动3G设备终端(手机或平板电脑)使用企业应用系统资源,它是云计算移动虚拟化中非常重要的一部分。
l 行业云
行业云是一种云平台。它由行业内或某个区域内起主导作用或者掌握关键资源的组 织建立和维护,以公开或者半公开的方式向行业内部或相关组织和公众提供有偿或 无偿服务。
行业云又可以分为金融云、政府云、教育云、电信云、医疗云、工业云、云制造等。

服务模式

云计算包括三个层次的服务:

各服务模式之间没有必然联系,也不相互依赖。各服务模式的简单说明如下:

l 基础设施即服务IaaS(Infrastructure as a Service)
提供给客户的服务是对所有设施的利用,包括处理、存储、网络和其他基本的计算 资源。客户能够部署和运行任意软件,包括操作系统和应用程序。客户不管理或控 制任何云计算基础设施,但能控制操作系统的选择、储存空间、部署的应用,也有 可能获得有限制的网络组件(例如防火墙、负载均衡器等)的控制。
l 平台即服务PaaS(Platform as a Service)
提供给客户的服务是把客户开发或收购的应用程序部署到供应商的云计算基础设施 上。客户不需要管理或控制底层的云基础设施,包括网络、服务器、操作系统、存 储等,但客户能控制部署的应用程序,也可能控制运行应用程序的托管环境配置。
l 软件即服务SaaS(Software as a Service)
提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过瘦客户端界面访问。客户不需要管理或控制任何云计算基础设施。

应用

云计算技术的应用领域日趋广泛。云计算广泛应用于通信、娱乐、社保、医疗、科研、
教育、就业、安全等领域。
较为常见的云计算应用类型包括:

l 软件应用:通过Web浏览器向用户提供单一的软件应用。用户不需要事先购买服务 器设备或是软件授权。厂商仅提供应用,其成本与常规的软件服务模式相比,要低 得多。
l 公用/效用计算:为客户提供所需的存储资源和虚拟化服务器等应用。帮助企业用 户创建虚拟的数据中心,或帮助企业将内存、I/0、存储和计算容量通过网络集成为 虚拟资源池来使用。通过这些手段,根据客户的需求及时产生适当的资源,并进行 基础设施管理以及根据某个应用进行收费。
l WEB服务:WEB服务厂商通过提供API(Application Programming Interface)来让 开发人员开发Internet应用,而不是自己提供功能全面的应用软件。
l 平台应用:将开发环境作为服务来提供给用户。用户可以在供应商的基础架构上创 建和运行自己的应用软件,并通过网络直接从供应商的服务器上传递给其他用户。
l 管理服务:提供给IT管理人员使用,用于其管理IT应用的服务,如电子邮件的病毒扫描服务、应用软件监控服务等。
l 服务商业平台:提供交互性服务平台,使客户可以通过自主设定来获得特定的服务,常用于商业贸易领域。
l 云计算集成:将不同的云计算服务整合后再提供给用户。
...全文
3458 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36284105 2016-10-04
  • 打赏
  • 举报
回复
云计算是什么函数指针式
Heart09 2016-05-27
  • 打赏
  • 举报
回复
PaaS 与 SaaS 最主要的区别是不是对象不一样
赵4老师 2016-03-29
  • 打赏
  • 举报
回复
整个IT界是时候考虑引入遗忘功能了。
Tcc2016 2016-03-28
  • 打赏
  • 举报
回复
一直对云计算比较有兴趣,也听了同事对公有云的讲解,说实话,现在要我说什么是云,我还是不能准确定位,我的概念应该是一种空间存储,但这只是云的一种功能,可能更多的功能我还没有接触,所以认识不够深
muzilan 2016-03-28
  • 打赏
  • 举报
回复
引用 2 楼 Tcc2016 的回复:
一直对云计算比较有兴趣,也听了同事对公有云的讲解,说实话,现在要我说什么是云,我还是不能准确定位,我的概念应该是一种空间存储,但这只是云的一种功能,可能更多的功能我还没有接触,所以认识不够深
其实呢,云就是对软硬件资源的整合,就像用水、电一样,你只需要告诉你需要多少,按需供给。所以软硬件资源有很多,存储只是其中之一
line_us 2016-03-25
  • 打赏
  • 举报
回复
其实是网络、互联网的一种比喻说 法
人力资源管理系统数据库课程设计 第1章 绪论 1.1 开发背景 随着企业的信息化和体制改革的步伐,人材竞争使企业的人力资源面临史无前例的挑战 。愈来愈多的企业不断地加大对员工的投资,从而更好地吸引、保存和发展所需要人材 ,是企业具有持久的、强大的竞争优势。   在过去很长1个传统的计划经济管理体制的时期中,国有企事业和公共事业单位中的 人员管理1直实行着集中统1的计划管理模式,企业中人员的差异并没有构成主要的决定因 素,随着市场经济的发展,市场竞争的加重,企业的成功与其员工队伍之间的关注。而传统 的手工纪录管理的模式愈来愈不能满足企业人力资源管理的要求,随着计算机利用的普 及,采取计算机进行人力资源管理的快捷、方便、高效的优越性时企业管理人员的共鸣 。   因此我们选用《人力资源管理系统数据库设计》作为我们的数据库课程设计的设计题 目,通过人力资源会计理论为指点,将人力资源需求、人力资源招聘、人力资源审计、 人力资源使用、人力资源培训、人力资源评估、人力资源2次调配等每个动态环节编制成 类似于财务报表的记录,从而完成人力资源的货币情势的衡定。以工资核算为核心、以 员工的绩效考核为根据,通过建立多种数据模型辅助完成人力资源管理对企业经营决策 的支持作用。    本说明书目的在于明确说明系统需求,界定系统实现功能的范围,指点系统设计和编码 。本说明书的编写为下阶段的设计、开发提供根据,为项目组成员对需求的详实理解, 和在开发开发进程中的协同工作提供强有力的保证。同时本文档也作为项目评审验收的 根据之1。   1.2项目背景 人力资源管理模块以经营管理为基础,采取成熟、先进的计算机软、硬件集成技术,融 入科学的人事管理思想和模式,对企业及其下属公司的人事信息进行收集、贮存、加工 、处理和分析,使其及时准确地反应企业的人事聘请状态、人员活动情况、薪资情况等 人事信息,为各层管理者提供快速准确的人事管理根据与辅助决策数据。    企业公司发展现状几10年来,企业经营单位和从业人员急速发展,人员良莠不齐,懂专 业知识的少,小本经营多。面对危机与机遇,前途只有1条:通过改革和创新,提高管理 能力,提高核心竞争力。通过导入规范化信息管理系统,特别是人力资源管理系统,建 立信息化平台。只有在人力资源得到公道的分配,才能发挥出企业的整体实力,站稳脚 根。建立1个完善的人力资源管理系统,对1个企业的领导者在人力管理方面有着非常重 要的作用。    我们的项目就是基于人力资源管理在企业发展中的重要作用而开发的,使公司能更好的 管理人力资源,提高企业的整体竞争力。通过实行人力资源管理系统,提高人力资源部 在平常人力资源操作性等事物的工作效力,为高层提供即时的弄笑的人力资源数据查询 、分析,为高层提供决策支持。同时有益于人力资源内部流程的规范与再造优化。   1.3定义 1.3.1专业术语 数据流图:数据流图是结构化方法中使用的工具,它以图形的方式描绘数据在系统中活 动和处理的进程,由于它只反应系统必须完成的逻辑功能,所以它是1种功能模型。    1.3.2主页术语定义 Java是1种可以撰写跨平台利用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有出色的通用性、高效性、平台移植性和安全性,广泛利用于个人PC、数据中心 、游戏控制台、科学超级计算机、移动电话和互联网,同时具有全球最大的开发者专业 社群。在全球云计算和移动互联网的产业环境下,Java更具有了显著优势和广阔前景。    SQL:是1种数据库查询和程序设计语言,用于存取数据和查询、更新和管理关系数据库系 统。    甘特图:它是以图式的方式通过活动列表和时间刻度形象地表示出任何特定的活动顺序 与延续时间。    第2章 任务概述 2.1目标 传统的企业人力资源管理已不能满足现代化管理的需要。因此,对企业人力资源的信息 处理实行计算机化这1需要就显得愈来愈重要。要对人力资源中人员甑选、人员录用、员 工培训、人员调剂、考勤管理、人事评议、人事档案管理,实现全面、科学、系统的管 理; 提高工作效力、增强交换与协作、提高辅助决策、有效地提高管理水平、完善人力资源 管理活动中诸多不足的地方就成为SYSWAYHR的设计目标。    充分利用网络资源,根据企业实际需求,进1步优化和再造管理流程:令人力资源的管理 更加高效和科学,数据更加准确。    完善人力资源决策支持系统,及时提供相干数据和报表:使基于人力资源系统数据的决 策更加直观和精确。    增强员工自助服务的功能,简化人力资源事务性的管理流程:令人力资源部门的人员有 更多的时间和精力用于人力资源
WEBCRAWLER 网络爬虫实训项目 1 WEBCRAWLER 网 络 爬 虫 实 训 项 目 文档版本: 1.0.0.1 编写单位: 达内IT培训集团 C++教学研发部 编写人员: 闵卫 定稿日期: 2015年11月20日 星期五WEBCRAWLER 网络爬虫实训项目 2 1. 项目概述 互联网产品形形色色,有产品导向的,有营销导向的,也有技术导向的,但是 以技术见长的互联网产品比例相对小些。搜索引擎是目前互联网产品中最具技 术含量的产品,如果不是唯一,至少也是其中之一。 经过十几年的发展,搜索引擎已经成为互联网的重要入口之一,Twitter联合创 始人埃文•威廉姆斯提出了“域名已死论”,好记的域名不再重要,因为人们会 通过搜索进入网站。搜索引擎排名对于中小网站流量来说至关重要。了解搜索 引擎简单界面背后的技术原理其实对每一个希望在互联网行业有所建树的信息 技术人员都很重要。 1.1. 搜索引擎 作为互联网应用中最具技术含量的应用之一,优秀的搜索引擎需要复杂的架构 和算法,以此来支撑对海量数据的获取、 存储,以及对用户查询的快速而准确 地响应。 从架构层面,搜索引擎需要能够对以百亿计的海量网页进行获取、 存 储、 处理的能力,同时要保证搜索结果的质量。 如何获取、 存储并计算如此海WEBCRAWLER 网络爬虫实训项目 3 量的数据?如何快速响应用户的查询?如何使得搜索结果尽可能满足用户对信 息的需求?这些都是搜索引擎的设计者不得不面对的技术挑战。 下图展示了一个通用搜索引擎的基本结构。商业级别的搜索引擎通常由很多相 互独立的模块组成,各个模块只负责搜索引擎的一部分功能,相互配合组成完 整的搜索引擎: 搜索引擎的信息源来自于互联网网页,通过“网络爬虫” 将整个“互联网” 的 信息获取到本地,因为互联网页面中有相当大比例的内容是完全相同或者近似 重复的,“网页去重”模块会对此做出检测,并去除重复内容。 在此之后,搜索引擎会对网页进行解析,抽取网页主体内容,以及页面中包含 的指向其它页面的所谓超链接。 为了加快用户查询的响应速度,网页内容通过 “倒排索引”这种高效查询数据结构来保存,而网页之间的链接关系也会予以 保存。之所以要保存链接关系,是因为这种关系在网页相关性排序阶段是可利 用的,通过“链接分析”可以判断页面的相对重要性,对于为用户提供准确的 搜索结果帮助很大。 由于网页数量太多,搜索引擎不仅需要保存网页的原始信息,还要保存一些中 间处理结果,使用单台或者少量的计算机明显是不现实的。 Google等商业搜索 引擎提供商,为此开发了一整套云存储与云计算平台,使用数以万计的普通PCWEBCRAWLER 网络爬虫实训项目 4 搭建了海量信息的可靠存储与计算架构,以此作为搜索引擎及其相关应用的基 础支撑。优秀的云存储与云计算平台已经成为大型商业搜索引擎的核心竞争 力。 以上所述是搜索引擎如何获取并存储海量的网页相关信息。这些功能因为不需 要实时计算,所以可以被看作是搜索引擎的后台计算系统。搜索引擎的首要目 标当然是为用户提供准确而全面的搜索结果,因此响应用户查询并实时提供准 确结果便构成了搜索引擎的前台计算系统。 当搜索引擎接收到用户的查询请求后,首先需要对查询词进行分析,通过与用 户信息的结合,正确推导出用户的真实搜索意图。 此后,先在“Cache系统” 所维护的缓存中查找。搜索引擎的缓存存储了不同的搜索意图及其相对应的搜 索结果。如果在缓存中找到满足用户需求的信息,则直接将搜索结果返回给用 户。这样既省掉了重复计算对资源的消耗,又加快了整个搜索过程的响应速 度。而如果在缓存中没有找到满足用户需求的信息,则需要通过“网页排 序”,根据用户的搜索意图,实时计算哪些网页是满足用户需求的,并排序输 出作为搜索结果。 而网页排序最重要的两个参考因素,一个是“内容相似 性”,即哪些网页是和用户的搜索意图密切相关的;一个是网页重要性,即哪 些网页是质量较好或相对重要的,而这往往可以从“链接分析”的结果中获 得。综合以上两种考虑,前台系统对网页进行排序,作为搜索的最终结果。 除了上述功能模块,搜索引擎的“反作弊”模块近年来越来越受到重视。搜索 引擎作为互联网用户上网的入口,对于网络流量的引导和分流至关重要,甚至 可以说起着决定性的作用。因此,各种“作弊”方式也逐渐流行起来,通过各 种手段将网页的搜索排名提前到与其网页质量不相称的位置,这会严重影响用 户的搜索体验。所以,如何自动发现作弊网页并对其给于相应的惩罚,就成了 搜索引擎非常重要的功能之一。 1.2. 网络爬虫 通用搜索引擎的处理对象是互联网网页,截至目前的网页数量数以百万计,所 以搜索引擎首先面临的问题就是如何能够设计出高效的下载系统,将如此海量 的网页数据传送到本地,在本地形成互联网网页的镜像备份。 网络爬虫即扮演 如此角色。 它是搜索引擎中及其关键的基础构件。WEBCRAWLER 网络爬虫实训项目 5 网络爬虫的一般工作原理如下图所示:  从互联网网页中选择部分网页的链接作为“种子URL”,放入“待抓取URL 队列”;  爬虫从“待抓取URL队列”中依次“读取URL”;  爬虫通过“DNS解析” 将读到的URL转换为网站服务器的IP地址;  爬虫将网站服务器的IP地址、通信端口、网页路径等信息交给“网页下载” 器;  “网页下载”器负责从“互联网”上下载网页内容;  对于已经下载到本地的网页内容,一方面将其存储到“下载页面库” 中,等 待建立索引等后续处理,另一方面将其URL放入“已抓取URL队列”,后者显 然是为了避免网页被重复抓取;  对于刚刚下载到本地的网页内容,还需要从中“抽取URL”;  在“已抓取URL队列”中检查所抽取的URL是否已被抓取过;  如果所抽取的URL没有被抓取过,则将其排入“待抓取URL队列” 末尾,在 之后的抓取调度中重复第步,下载这个URL所对应的网页。 如此这般,形成WEBCRAWLER 网络爬虫实训项目 6 循环,直到“待抓取URL队列”空,这表示爬虫已将所有能够被抓取的网页尽 数抓完,完成一轮完整的抓取过程。 以上所述仅仅是网络爬虫的一般性原理,具体实现过程中还可以有很多优化的 空间,比如将“网页下载”以多线索(进程或线程)并发的方式实现,甚至将 “DNS解析”也处理为并发的过程,以避免爬虫系统的I/O吞吐率受到网站服 务器和域名解析服务器的限制。而对于“已抓取URL队列”则可以采用布隆排 重表的方式加以优化,以降低其时间和空间复杂度。 2. 总体架构 本项目总体架构如下图所示: 配置器 Configurator 超文本传输协议响应 HttpResponse 日志 Log 主线程 main 多路输入输出 MultiIo 插件管理器 PluginMngr 套接字 Socket 字符串工具包 StrKit 统一资源定位符队列 UrlQueues 网络爬虫 WebCrawler 原始统一资源定位符 RawUrl 超文本传输协议响应包头 HttpHeader 域名解析线程 DnsThread 解析统一资源定位符 DnsUrl 接收线程 RecvThread 布隆过滤器 BloomFilter 哈希器 Hash 最大深度插件 MaxDepth 域名限制插件 DomainLimit 超文本传输协议响应包头过滤器插件 HeaderFilter 超文本标记语言文件存储插件 SaveHTMLToFile 图像文件存储插件 SaveImageToFile 发送线程 SendThreadWEBCRAWLER 网络爬虫实训项目 7 2.1. 基础设施 2.1.1. 字符串工具包(StrKit) 常用字符串处理函数。 2.1.2. 日志(Log) 分等级,带格式的日志文件打印。 2.1.3. 配置器(Configurator) 从指定的配置文件中加载配置信息。 2.1.4. 多路输入输出(MultiIo) 封装epoll多路I/O系统调用,提供增加、删除和等待操作接口。 2.1.5. 插件管理器(PluginMngr) 加载插件并接受其注册,维护插件对象容器并提供调用其处理函数的外部接 口。 2.2. 网络通信 2.2.1. 哈希器(Hash) 封装各种哈希算法函数。 2.2.2. 布隆过滤器(BloomFilter) 基于布隆算法,对欲加入队列的原始统一资源定位符进行过滤,以防止已被抓 取过的URL再次入队,降低冗余开销同时避免无限循环。 2.2.3. 原始统一资源定位符(RawUrl) 提供原始形态的统一资源定位符字符串的简单包装,以及规格化等辅助支持。 2.2.4. 解析统一资源定位符(DnsUrl) 将原始形态的统一资源定位符字符串,解析为服务器域名、资源路径、服务器 IP地址,乃至服务器通信端口等。WEBCRAWLER 网络爬虫实训项目 8 2.2.5. 统一资源定位符队列(UrlQueues) 封装原始统一资源定位符队列和解析统一资源定位符队列,提供线程安全的入 队、出队操作,通过统一资源定位符过滤器排重,同时支持基于正则表达式的 统一资源定位符抽取功能。 2.2.6. 套接字(Socket) 发送/接收超文本传输协议请求/响应,发送成功将套接字描述符加入多路I/O, 接收成功抽取统一资源定位符压入队列。 2.2.7. 超文本传输协议响应包头(HttpHeader) 状态码和内容类型等关键信息。 2.2.8. 超文本传输协议响应(HttpResponse) 服务器统一资源定位符和超文本传输协议包头、包体及长度的简单封装。 2.3. 流程控制 2.3.1. 域名解析线程(DnsThread) 从原始统一资源定位符队列中弹出RawUrl对象,借助域名解析系统(DNS)获 取服务器的IP地址,构造DnsUrl对象压入解析统一资源定位符队列。 2.3.2. 发送线程(SendThread) 通过WebCrawler对象启动新的抓取任务,从解析统一资源定位符队列中弹出 DnsUrl对象,向HTTP服务器发送HTTP请求,并将套接字描述符放入MultiIo 对象。 2.3.3. 接收线程(RecvThread) 由WebCrawler对象在从MultiIo对象中等到套接字描述符可读时动态创建,通 过Socket对象接收超文本传输协议响应。WEBCRAWLER 网络爬虫实训项目 9 2.3.4. 网络爬虫(WebCrawler) 代表整个应用程序的逻辑对象,构建并维护包括日志、配置器、多路I/O、插件 管理器、统一资源定位符队列、域名解析线程等在内的多个底层设施,提供诸 如初始化、执行多路输入输出循环、启动抓取任务等外部接口。 2.3.5. 主线程(main) 主函数,处理命令行参数,初始化应用程序对象,进入多路I/O循环。 2.4. 外围扩展 2.4.1. 最大深度插件(MaxDepth) 根据配置文件的MAX_DEPTH配置项,对被抓取超链接的最大递归深度进行限 制。 2.4.2. 域名限制插件(DomainLimit) 根据配置文件的INCLUDE_PREFIXES和EXCLUDE_PREFIXES配置项,对被抓取 超链接的前缀进行限制。 2.4.3. 超文本传输协议响应包头过滤器插件(HeaderFilter) 根据配置文件的ACCEPT_TYPE配置项,对超文本传输协议响应的内容类型进行 限制。 2.4.4. 超文本标记语言文件存储插件(SaveHTMLToFile) 将用超文本标记语言描述的页面内容保存到磁盘文件中。 2.4.5. 图像文件存储插件(SaveImageToFile) 将页面内容中引用的图像资源保存到磁盘文件中。 3. 工作流程 3.1. 主事件流 进程入口函数在进行必要的命令行参数处理和系统初始化以后,进入网络爬虫 的多路输入输出循环,一旦发现某个与服务器相连的套接字有数据可读,即创WEBCRAWLER 网络爬虫实训项目 10 建接收线程,后者负责抓取页面内容,而前者继续于多路输入输出循环中等待 其它套接字上的I/O事件。 3.2. 解析事件流 独立的域名解析线程实时监视原始统一资源定位符队列的变化,并将其中的每 一条新近加入的原始统一资源定位符,借助域名解析系统转换为解析统一资源 定位符,并压入解析统一资源定位符队列。 3.3. 发送事件流 不断从解析统一资源定位符队列弹出解析统一资源定位符,创建套接字,根据 服务器的IP地址和通信端口发起连接请求,建立TCP连接,发送超文本传输协 议请求包,并将套接字放入多路输入输出对象,由主事件流等待其数据到达事 件。 3.4. 接收事件流 每个超文本传输线程通过已明确有数据可读的套接字接收来自服务器的超文本 传输协议响应,并交由统一资源定位符队列进行超链接抽取和布隆排重过滤, 直至压入原始统一资源定位符队列。在压入原始统一资源定位符队列之前,以 及接收到超文本传输协议包头和包体之后,分别执行统一资源定位符插件、超 文本传输协议包头插件和超文本标记语言插件的处理过程。 以上四个事件流,需要平行且独立地并发运行,并在共享资源和执行步调上保 持适度的同步。 4. 目录结构 本项目的目录结构如下所示: WebCrawler/ ├── bin/ │ ├── WebCrawler │ ├── WebCrawler.cfg │ └── WebCrawler.scr ├── docs/ │ ├── 概要设计.pdfWEBCRAWLER 网络爬虫实训项目 11 │ └── 详细设计.pdf ├── download/ ├── plugins/ │ ├── DomainLimit.cpp │ ├── DomainLimit.h │ ├── DomainLimit.mak │ ├── DomainLimit.so │ ├── HeaderFilter.cpp │ ├── HeaderFilter.h │ ├── HeaderFilter.mak │ ├── HeaderFilter.so │ ├── MaxDepth.cpp │ ├── MaxDepth.h │ ├── MaxDepth.mak │ ├── MaxDepth.so │ ├── SaveHTMLToFile.cpp │ ├── SaveHTMLToFile.h │ ├── SaveHTMLToFile.mak │ ├── SaveHTMLToFile.so │ ├── SaveImageToFile.cpp │ ├── SaveImageToFile.h │ ├── SaveImageToFile.mak │ ├── SaveImageToFile.so │ └── mkall └── src/ ├── BloomFilter.cpp ├── BloomFilter.h ├── Configurator.cpp ├── Configurator.h ├── DnsThread.cpp ├── DnsThread.h ├── Hash.cpp ├── Hash.h ├── Http.h ├── Log.cpp ├── Log.h ├── Main.cpp ├── Makefile ├── MultiIo.cpp ├── MultiIo.h ├── Plugin.h ├── PluginMngr.cpp ├── PluginMngr.h ├── Precompile.h ├── RecvThread.cpp ├── RecvThread.h ├── SendThread.cpp ├── SendThread.h ├── Socket.cpp ├── Socket.hWEBCRAWLER 网络爬虫实训项目 12 ├── StrKit.cpp ├── StrKit.h ├── Thread.cpp ├── Thread.h ├── Url.cpp ├── Url.h ├── UrlFilter.h ├── UrlQueues.cpp ├── UrlQueues.h ├── WebCrawler.cpp └── WebCrawler.h 其中bin目录存放可执行程序文件、启动画面文件和配置文件,docs目录存放 项目文档,download目录存放爬虫下载的网页文件和图像文件,plugins目录 存放扩展插件的源代码和共享库文件,src目录存放项目主体部分的源代码文 件。 在教学环境下,以上目录结构可分别放在teacher和student两个子目录中。其 中teacher目录包含完整的程序源码和资料文档,以为学生开发时提供参考和借 鉴。 student目录中的源代码是不完整的,部分类或者函数的实现只给出了基 本框架,但代码中的注释和teacher目录下对应的部分完全相同,其中缺失的内 容,需要学生在理解整体设计思路和上下文逻辑的前提下予以补全。需要学生 参与补全的源代码文件详见开发计划。 5. 开发计划 本项目拟在四个工作日内完成: 工作日 模块 子模块 代码文件 第一天 基础设施 预编译头 Precompile Precompile.h 字符串工具包 StrKit StrKit.h StrKit.cpp 日志 Log Log.h Log.cpp 配置器 Configurator Configurator.h Configurator.cppWEBCRAWLER 网络爬虫实训项目 13 多路输入输出 MultiIo MultiIo.h MultiIo.cpp 插件接口 Plugin Plugin.h 插件管理器 PluginMngr PluginMngr.h PluginMngr.cpp 第二天 网络通信 哈希器 Hash Hash.h Hash.cpp 统一资源定位 符过滤器接口 UrlFilter UrlFilter.h 布隆过滤器 BloomFilter BloomFilter.h BloomFilter.cpp 原始统一资源定位符 RawUrl Url.h 解析统一资源定位符 DnsUrl Url.cpp 统一资源定位符队列 UrlQueues UrlQueues.h UrlQueues.cpp 套接字 Socket Socket.h Socket.cpp 超文本传输协 议响应包头 HttpHeader Http.h 超文本传输协议响应 HttpResponse 第三天 流程控制 线程 Thread Thread.h Thread.cpp 域名解析线程 DnsThread DnsThread.h DnsThread.cpp 发送线程 SendThread SendThread.h SendThread.cppWEBCRAWLER 网络爬虫实训项目 14 接收线程 RecvThread RecvThread.h RecvThread.cpp 网络爬虫 WebCrawler WebCrawler.h WebCrawler.cpp 主线程 main Main.cpp 构建脚本 Makefile Makefile 第四天 外围扩展 最大深度插件 MaxDepth MaxDepth.h MaxDepth.cpp MaxDepth.mak 域名限制插件 DomainLimit DomainLimit.h DomainLimit.cpp DomainLimit.mak 超文本传输协议响 应包头过滤器插件 HeaderFilter HeaderFilter.h HeaderFilter.cpp HeaderFilter.mak 超文本标记语言 文件存储插件 SaveHTMLToFile SaveHTMLToFile.h SaveHTMLToFile.cpp SaveHTMLToFile.mak 图像文件存储插件 SaveImageToFile SaveImageToFile.h SaveImageToFile.cpp SaveImageToFile.cpp 构建脚本 mkall mkall 其中被突出显示的代码文件中,包含需要学生添加的内容,注意源文件中形 如“// 此处添加代码”的注释。WEBCRAWLER 网络爬虫实训项目 15 6. 知识扩展 为了能在实训环节,进一步强化学生独立思考、独立解决问题的能力,本项目 有意涵盖了一些前期课程中不曾涉及或只作为一般性了解的知识和技巧。具体 包括:  预编译头文件  std::string  变长参数表  基于epoll的多路I/O  哈希算法和布隆表  URL、 DNS、 HTTP和HTML  正则表达式  线程封装  精灵进程和I/O重定向  Makefile 对于上述内容,建议项目指导教师根据学生的接受能力,结合项目中的具体应 用,在项目正式启动之前,先做概要性介绍,同时提供进一步详细学习和研究 的线索,包括man手册、参考书、网络链接或其它媒体资源,尽量让学生通过 自己的实践和探索找到解决问题的方法,这才是项目实训的意义所在!

448

社区成员

发帖
与我相关
我的任务
社区描述
云计算开发
社区管理员
  • 云计算
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧