国内外微博系统的设计与实现毕业论文.docx
《国内外微博系统的设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《国内外微博系统的设计与实现毕业论文.docx(51页珍藏版)》请在冰豆网上搜索。
国内外微博系统的设计与实现毕业论文
国内外微博系统的设计与实现毕业论文
第一章绪论
1.1微博的研究背景
微博,就是微博客(MicroBlog)的简称,是一个基于用户关系的信息分享、传播以及获取的平台,用户可以通过WEB、WAP以及各种客户端组建个人社区,以140字左右的文字更新信息,并实现即时分享。
美国的twitter是最早也是最著名的微博,根据一些相关的公开的数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。
在2009年8月份,中国最大的门户网站新浪网推出“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站,从此微博正式进入中文上网主流人群的视野。
微博是一种通过关注机制分享简短实时信息的广播式的社交网络平台。
陈永东,国内知名新媒体领域研究学者,他在国内率先给出了微博的定义。
其中有五方面的理解:
1、关注机制:
分为单向和双向两种;2、内容简短:
通常为140字;3、实时信息:
最新的实时信息;4、广播式:
公开的信息,谁都可以浏览以及转播;5、社交网络平台:
把微博归为社交网络。
微博为广大用户提供了这样一个平台,你既可以以观众的身份在微博上浏览你感兴趣的信息,也可以以发布者的身份在微博上发布内容供别人浏览。
发布的内容一般较短,通常为140字的限制,由此命名为微博。
当然,也可以发布图片,分享歌曲、视频等。
微博有两方面的含义:
首先,对于一些强调版面布置的博客来说,微博主要是由简单的只言片语组成,从这个角度来说,微博对用户的技术要求门槛很低,而且与博客相比,对语言的编排组织的要求没那么高。
第二,微博浏览非常方便,由于微博开通的多种API,所以用户可以通过手机、网络等方式来即时更新自己的个人信息,深受广大用户的喜爱。
微博的特点:
信息获取具有很强的自主性、选择性;微博宣传的影响力具有很大弹性,与内容质量高度相关;内容短小精悍。
微博的内容限定为140字左右,内容简短,不需长篇大论,门槛较低;信息共享便捷迅速,这也是微博最大的特点。
1.2国内外研究现状
1.2.1微博在国外的发展史
埃文·威廉姆斯(EvanWilliams)是博客技术先驱blogger的创始人,他在2006年3月创建的新兴公司Obvious推出了大微博服务。
在最初阶段,这项服务的功能很不完善,只是用于向好友的手机发送文本信息。
Twitter是由blogger的创始人威廉姆斯(EvanWilliams)在2006年3月推出的,其英文的原意为小鸟的叽叽喳喳声,此时功能有些改进,用户可以使用数百种工具更新信息。
Twitter的出现把世人的眼光引入了一个叫微博的小小世界里。
截至2007年5月,国际间计算总共有111个类似Twitter的网站。
然而,最受人关注的仍是Twitter,在2007年,在得克萨斯州奥斯汀举办的南非西南会议中赢得了部落格类的网站奖。
Plurk和Jaiku是Twitter的主要竞争对手。
由于Twitter的发展前景,国内一些人开始蠢蠢欲动。
从校内网起家的王兴,在2007年5月创建了饭否网。
而作为一个拥有4.1亿QQ用户的企业——腾讯,看着用户对随时随地发布自己状态的需求愈发强烈后,在2007年8月13日腾讯滔滔面世。
但事情没有预期发展的好,Twitter建立的“微型王国”不是在短时间内掘出黄金的浅矿,所以国内微博企业目前尚处于慢热的状态。
国内微博不约而同地将现在的目光放在了产品调整以及服务完善上,在还没有办法吸引到风险投资的眼光之前,他们最需要做的可能是如何靠自己的能力继续活下去。
1.2.2微博在国内的现状及发展趋势
中国第一家带有微博色彩的饭否网于2007年开张开始,到2009年,微博这个新词汇以摧枯拉朽的姿态扫荡世界,不久便成为全世界最流行的词汇。
国内大批老牌微博产品(饭否、腾讯滔滔等)在2009年7月中旬开始停止运营,一些新产品开始进入人们的视野:
6月份开放的Follow5,7月份开放的9911,8月份开放的新浪微博等。
在2010年,国内微博开始崛起。
四大门户网站均开设微博。
根据一些相关公开数据显示,截至2010年1月份,在全球范围内,该产品已经拥有7500万注册用户。
2011年上半年,我国微博用户迅速增长,其数量从6331万增至1.95亿,半年增幅高达208.9%。
微博在网民中的普及率从13.8%增至40.2%。
从2010年底至今,手机微博在网民中的使用率比例从15.5%上升到34%。
图1-1中国微博市场用户周覆盖人数
图1-2用户访问次数及有效浏览时间集中度
至今,因为新浪微博抢占了先机,其用户数已经超过1亿,再加上其在整体的战略执行上也比较彻底到位,所以获得了现在的地位。
仅仅两年时间,新浪微博就为新浪创造了几十亿美金的巨额收入。
而腾讯微博作为另一个微博巨头,也发展迅猛。
其拥有近5亿的QQ注册用户,其中2亿左右是活跃用户。
这些人受潮流趋势的影响很快开通腾讯微博。
另外其作为重要的推广渠道。
企业用户通过注册腾讯官方微博,能够迅速的扩大企业的知名度。
高校教育平台也通过微博来推动了中国教育事业信息化发展的步伐。
互联网实验室认为,我国微博将向工具化、细分化、移动化和开放化等方向发展。
如下图所示。
图1-3发展方向研究图
现在,已经有很多微博服务商对微博网站进行了专业细分,如和讯网推出的财经微博,搜房网推出的房地产专业微博等。
随着这种细分与竞争,细分化的趋势将更加明显。
1.2.2中外微博的文化差异
在国内,关系社会这一本质属性是微博抓住的文化特征,中国人社会认同的结构建立在一套强有力的关系体系之中,群体化和联系化是其文化内核。
一个人社会地位的高低取决于社会关系的强弱。
关系是实现权力重构的核心的一种资本,因此,微博的发展过程,也是新权力者关系资本积累的过程。
在国外,微博Twitter的产品初衷正如单词Twitter的英文原义——鸟儿叽叽喳喳的叫声。
它抓住了美国人善于交谈的个性、渴望表达和信息分享的特征,正如一个充斥了个人琐碎的思索、片段化的情感的窗口。
1.3本文结构
第1章绪论,介绍微博的研究背景,国内外的发展史及论文的结构等。
第2章相关技术介绍,对微博的设计和实现过程中用到的开发语言、平台技术以及框架技术进行介绍,主要阐述了JAVA语言、JAVAEE企业级应用、三大框架、MySQL、MVC模式。
第3章系统需求分析,对系统的总需求进行分析,并对我的微博模块、个人中心模块、最新动态模块、留言板模块、帮助中心模块的需求进行的分析。
第4章详细设计,在需求分析的基础上,进行总体设计,并对我的微博模块、个人中心模块、最新动态模块、留言板模块进行详细设计,进行数据库设计,对并数据关系进行说明。
第5章系统实现,系统总体实现部分主要论述一些功能子模块的实现,例如系统登录和注册、添加留言信息、删除好友功能、修改个人信息等。
第6章系统测试及维护,包括对测试原理及常用软件测试方法的介绍,针对登录部分设计测试用例,并对测试的结果如何进行说明。
第7章总结与展望,总结微博系统的研究情况,以及在设计和实现过程中的优点以及本系统还需要进行改进的地方。
第二章相关技术介绍
2.1JAVA语言概述
JAVA最初被命名为Oak,这类语言可以来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题,其目标设定在家用电器等小型系统的编程语言,因为这些智能化家电的市场需求没有Sun预期的高,所以放弃了该项计划。
但是随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,所以在Oak几近失败之时改造了Oak,并且正式发布,命名为“Java”。
Java编程语言的风格与C、C++语言十分类似。
不同的是:
Java是一个纯的面向对象的程序设计语言,Java舍弃了C++语言中容易引起错误的指针(用引用来取代)、多重继承(用接口来取代)、运算符重载(operatoroverloading)等特性,Java继承了C++语言面向对象技术的核心,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧[2]。
在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性[3]。
Java语言不同于一般的编译执行计算机语言和解释执行计算机语言。
Java的运行机制是首先将源代码编译成二进制字节码(bytecode),也就是所谓的机器语言,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
但是,在J2SE1.4.2发布后,Java的执行速度有了大幅提升。
Sun公司在推出Java之际就将其作为一种与传统程序不同的开放的技术。
全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。
Sun公司的口号之一是“Java语言靠群体的力量而非公司的力量”,也获得了广大软件开发商的认同。
这与微软公司所倡导的注重精英和封闭式的模式是完全不同的[4]。
Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
这是Sun公司对Java编程语言的解释。
Java平台是基于Java语言的平台。
这样的平台目前非常流行,因此,微软公司先后推出了与之竞争的.NET平台以及模仿Java的C#语言。
Java的主要特性:
Java语言是简单的、面向对象的、分布式的,也是健壮的,更是安全的,Java语言的体系结构是中立的,Java语言具有可移植、多线程、动态等特征,Java也是一种解释型的语言,Java是高性能的。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。
Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。
Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
2.2JAVAEE平台技术介绍
JAVAEE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循JAVAEE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
JAVAEE技术的基础就是核心Java平台或Java2平台的标准版,JAVAEE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBCAPI、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages)以及XML技术的全面支持。
其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构[5]。
JAVAEE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。
通过提供统一的开发平台,JAVAEE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持EnterpriseJavaBeans[6],有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
JAVAEE的四层模型,如图2.1所示。
(1)运行在客户端机器上的客户层组件。
(2)运行在JAVAEE服务器上的Web层组件。
(3)运行在JAVAEE服务器上的业务逻辑层组件。
(4)运行在EIS服务器上的企业信息系统(Enterpriseinformationsystem)层软件。
图2-1JAVAEE的4层模型图
2.2.1Struts技术简介
Struts最早是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
它的目的是为了帮助减少在运用MVC设计模型来开发Web应用的时间。
随着JSP与Servlet技术大量应用于以Web为基础的应用程序,Java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。
早期JSP规格书中曾列举两种可行之JSP应用架构,分别为Model1与Model2。
如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
在Model1架构中,JSP直接处理Web浏览器送来的请求(Request),并辅以JavaBean处理应用相关逻辑。
Model1架构单纯编写比较容易,但在Model1中JSP可能同时肩负View与Controller角色,两类程序代码有可能混杂而不易维护。
而Model2中将Servlet纳入架构中扮演前端Controller角色,将Web浏览器送出的请求集中送至Servlet,Servlet可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应的JSP处理。
Model2中采用了较佳的MVC模式,但增加了编写复杂度。
Struts是Apache软件基金下Jakarta项目的一部分。
除Struts之外,还有其他成功的开源产品,包括Tomcat,Ant和Velocity。
2000年CraigR.McClanahan先生贡献了他编写struts的JSPModel2架构的ApplicationFramework原始程序代码给Apache基金会,成为ApacheJakarta计划StrutsFramework前身。
Struts框架的主要架构设计和开发者是CraigR.McClanahan。
Craig也是Tomcat4的主要架构师,以及JavaWebServicesDeveloperPack的主要架构师和实现者。
他现在是Sun的JavaServerFaces(JSR-127)以及J2EE平台的Web层架构的规范领导。
CraigR.McClanahan先生是JCPExpertGroup成员之一,曾参与JSP规格制定与Tomcat4之编写,因此StrutsFramework广受Java开发人员群体所重视。
Borland自2002年底开始于开发工具JBuilder中支持StrutsFramework。
Struts最早是作为ApacheJakarta项目的组成部分问世运作。
项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:
Taglib和页面导航。
Taglib是Struts的标记库,灵活运用,能大大提高开发效率。
另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。
Struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。
Struts提供的类使得开发工作更加简单,这些类包括:
1.控制程序流程的类;
2.实现和执行程序事务逻辑的类;
3.自定义的标记库使得创建和验证HTML表单更加容易。
2.2.2Hibernate技术简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有6个,分别为:
Session、SessionFactory、Transaction、Query、Criteria和Configuration。
这6个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
下面对这6个核心接口分别加以介绍。
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
)。
但需要注意的是Session对象是非线程安全的。
同时,Hibernate的session不同于JSP应用中的HttpSession。
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
SessionFactory接口负责初始化Hibernate。
它充当数据存储源的代理,并负责创建Session对象。
这里用到了工厂模式。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Configuration类负责配置并启动Hibernate,创建SessionFactory对象。
在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
Transaction接口负责事务相关的操作。
它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口负责执行各种数据库查询。
它可以使用HQL语句或SQL语句两种表达方式。
Hibernate主键介绍:
Assigned方式由用户生成主键值,并且要在save()之前指定否则会抛出异常 特点:
主键的生成值完全由用户决定,与底层数据库无关。
用户需要维护主键值,在调用session.save()之前要指定主键值。
Hilo使用高低位算法生成主键,高低位算法使用一个高位值和一个低位值,然后把算法得到的两个值拼接起来作为数据库中的唯一主键。
Hilo方式需要额外的数据库表和字段提供高位值来源。
默认情况下使用的表是hibernate_unique_key,默认字段叫做next_hi。
next_hi必须有一条记录否则会出现错误。
特点:
需要额外的数据库表的支持,能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。
Hilo主键生成方式由Hibernate维护,所以Hilo方式与底层数据库无关,但不应该手动修改hi/lo算法使用的表的值,否则会引起主键重复的异常。
Increment方式对主键值采取自动增长的方式生成新的主键值,但要求底层数据库的支持Sequence。
如Oracle,DB2等。
需要在映射文件xxx.hbm.xml中加入Increment标志符的设置。
特点:
由Hibernate本身维护,适用于所有的数据库,不适合多进程并发更新数据库,适合单一进程访问数据库。
不能用于群集环境。
Identity当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。
特点:
与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment,SQLServer中是Identity,支持的数据库有MySql、SQLServer、DB2、Sybase和HypersonicSQL。
Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。
Sequence需要底层数据库支持Sequence方式,例如Oracle数据库等。
特点:
需要底层数据库的支持序列,支持序列的数据库有DB2、PostgreSql、Oracle、SAPDb等在不同数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库需要修改配置文件。
Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式。
特点:
根据不同的底层数据库采用不同的主键生成方式。
由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。
UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。
其最大的特点就是能够保证数据库中的主键唯一性,这样就可以节省存贮空间。
Foreign用于一对一关系中。
GUID主键生成方式使用了一种特殊算法,保证生成主键的唯一性,支持SQLServer和MySQL数据库。
2.2.3Spring技术简介
Spring是一个开源框架,它由RodJohnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
Spring框架是一个分层架构,由7个定义良好的模块组成。
Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式,如下图所示。
图2-2Spring模块
Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
每个模块的功能如下:
核心容器:
核心容器提供Spring框架的基本功能。
核心容器的主要组件是BeanFactory,它是工厂模式的实现。
BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring上下文:
Spring上下文是一个配置文件,向Spring框架提供上下文信息。
Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。
SpringAOP:
通过配置管理特性,SpringAOP模块直接将面向方面的编程功能集成到了Spring框架中。
所以,可以很容易地使Spring框架管理的任何对象支持AOP。
SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务。
通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
SpringDAO:
JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。
异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。
SpringDAO的面向JDBC的异常遵从通用的DAO异常层次结构。
SpringORM:
Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、