收藏 分销(赏)

基于分布式缓存和消息队列的消息推送系统的开发.doc

上传人:可**** 文档编号:3116444 上传时间:2024-06-18 格式:DOC 页数:86 大小:3.44MB
下载 相关 举报
基于分布式缓存和消息队列的消息推送系统的开发.doc_第1页
第1页 / 共86页
基于分布式缓存和消息队列的消息推送系统的开发.doc_第2页
第2页 / 共86页
基于分布式缓存和消息队列的消息推送系统的开发.doc_第3页
第3页 / 共86页
基于分布式缓存和消息队列的消息推送系统的开发.doc_第4页
第4页 / 共86页
基于分布式缓存和消息队列的消息推送系统的开发.doc_第5页
第5页 / 共86页
点击查看更多>>
资源描述

1、硕士学位论文(专业学位)基于分布式缓存和消息队列的消息推送系统的开发姓 名: 陈连升学 号:0921170196所在院系: 软件学院职业类型: 工程硕士专业领域: 软件工程指导教师: 冯巾松副指导教师: 张明仁 二一四年九月 A dissertation submitted toTongji University inconformity with the requirements forThe degree of Master of EngineeringMessage Center Based On Memcached And ActiveMQCandidate: Chen Lianshe

2、ngStudent Number: 0921170196School/Department: SchoolofSoftwareEngineeringDiscipline: MasterofEngineeringMajor: SoftwareEngineering Supervisor: Feng JinsongSeptember,2014基于分布式缓存和消息队列的消息推送中心陈连升同济大学学位论文版权使用授权书本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化

3、或其它手段保存论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。学位论文作者签名: 年 月 日 同济大学学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。 学位论文作

4、者签名: 年 月 日摘 要摘要在信息爆炸的现在,信息量以指数的规律猛烈增长。随着手机操作系统的不断更新,手机客户端APP软件的不断推出,运营商通过APP向用户进行推广的需求不断扩大,所以针对手机APP的消息推送系统应运而生。 本文利用Memcached分布式缓存和ActiveMQ消息队列服务,在Oracle数据库基础上进行针对手机端APP的消息推送中心的设计和开发,完成了系统开发的目标。通过运用本系统,手机APP的运营商可以通过界面来实现图文消息的定制,由本系统后台自动、及时、快速、准确地将消息推送到手机APP中以达到消息推送的目的。本系统主要包含消息定制功能、消息准备功能、消息推送功能等。该

5、系统具有实用性、实时性和可靠性,能够满足中国电信手机客户端的消息推送的需求,并且具有很强的移植性,可以经过改造,适用于各种手机终端APP。本文首先对系统的需求进行了分析,确定了本系统所要使用的框架和技术。然后按照业务流程对系统进行了模块划分,然后分别对各模块的设计和实现进行了详细的阐述。本文还对系统完成后的功能测试和压力测试做了阐述。最后对本系统进行了评价和展望、客观的指出了本系统的优缺点以及下一步的改善和研究方向。关键词:分布式缓存;消息队列;消息推送;设计IABSTRACTABSTRACTIn this information explosion era, the amount of in

6、formation has increased intensively. With the updating of the Mobile Phone Operating system and the introduction of Software APP, the demand that APP Operators promote information to users has enlarged, and thus the APP Message Push system came into being.This thesis is conducted to complete the des

7、ign and development of the APP Message Push system by using Memcached and ActiveMQ service, and Text Message Customization is achieved through this system. The system can achieve the goal to push messages to APP automatically, timely, rapidly, accurately in the background. It mainly contains functio

8、ns of message customization, message preparation, message push and etc. It is practical, real-time and reliable, and can satisfy the needs of Telecom mobile phone client. It also has a strong portability and can be modified for a variety of APP. The thesis first analyzed the framework and technology

9、 of the system, and then made the module partition in the business process, and then described the design and implement of each module in detail and respectively. The study also elaborated on the functional test and the pressure test. Finally, the advantages and disadvantages of this system were eva

10、luated and prospected objectively, together with the further improvements and researching directions.Key words: Memcached; ActiveMQ; Message Push; DesignII目录目 录第1章 引言11.1课题背景11.2研究意义11.3国内外研究现状11.4本课题研究内容31.5内容框架4第2章 系统技术介绍42.1分布式缓存介绍42.1.1分布式缓存的特点42.1.2Memcached介绍52.2消息队列介绍62.2.1ActiveMQ介绍62.2.2 IO

11、S推送机制介绍92.3 Oracle数据库介绍132.4 Spring框架介绍14第3章 消息中心系统的分析173.1系统实现目标173.2系统流程分析183.2.1 IOS消息推送流程193.2.2 Android消息推送流程213.3性能需求分析22第4章 系统设计234.1框架设计234.2数据库设计244.3模块详细设计29第5章 各模块的具体实现375.1总体框架实现375.2消息定制模块395.4消息准备模块的实现485.5消息发送模块的实现515.6 反馈处理模块的实现595.7 日志记录模块的实现61第6章 系统的实现与测试646.1测试过程说明646.2功能测试说明646.2

12、.1开发阶段单元测试646.2.2集成阶段集成测试656.2.3模拟场景数据和测试用例656.3性能测试676.4本章小结69第7章 总结与展望707.1总结707.2展望71致 谢72参考文献73个人简历、在读期间发表的学术论文与研究成果75IV第1章 引言第1章 引言1.1课题背景在信息爆炸的现在,信息量以指数的规律猛烈增长。这时,网上出现了很多ICP(IntemetContentProvider),他们提供各类新闻、金融咨询等信息,用户则使用自己的浏览器在网上搜索浏览检索这些消息。这种被动的拉的方式-即用户发送服务请求,服务器根据用户请求来在服务器上检索,并将结果返回请求的用户-无疑是低

13、效的,因为用户要花费很多时间去各个网站查找其感兴趣、想了解的信息。同时,用户还希望他们获得消息的方式能够不受到时间和空间的约束。为了解决这些问题,信息推送(Informationpush)1就这样应运而生了。1.2研究意义随着手机智能操作系统技术的发展,手机上的应用已经可以与推送信息相结合,利用推送过来的信息让用户选择程序自身是否启动,移动信息推送技术的应用范围得到了更大的扩展。信息推送不仅可以实现消息的发送,还能启动手机上的应用,由应用来处理更多的相关信息。在开发过程中,越来越多的移动应用需要实现这一功能,如果存在一个平台,提供给应用开发人员这一功能的接口,那么将显著减少开发人员的工作量,并

14、且可以减少移动终端的网络连接数量。目前,谷歌、苹果和黑莓的手机操作系统已经基本实现了该功能。可以看出,对移动互联网中对移动终端的消息推送机制的研究,使得服务提供者可以迅速,准确地将用户需要的消息传达到移动终端,用户可以通过移动终端接收消息,掌握最新的时事资讯等信息。因此,研究移动消息推送机制2具有重要应用价值。1.3国内外研究现状推送技术随着互联网迅速发展的同时,应运而生。它最早由一家名叫PointCast的公司在1996推出。PointCast是一家互联网公司,它与一些新闻媒体公司合作,通过为用户定制新闻、经济、体育等频道,将对应频道中最新的消息主动发送给用户,使用户不需要主动地在网上搜索和

15、查看信息,而是像收听广播电视一样,有目的地进行阅读和预取。其目的是提高用户获取信息的实时性和针对性。然而在互联网中,有大量容易阅览信息的新闻网站存在,用户在计算机上也习惯于主动获取自己关注的信息,而不想做被动接收者。所以,在传统计算机上推送技术的使用并没有得到重视。然而与传统计算机相比,移动设备如触摸屏手机的操作便捷性较差,并不适合输入大量数据。再加上近几年来通信技术得到了迅速发展,使用手机接入互联网的人越来越多,移动互联网数据传输的速度也越来越快,人们越来越倾向于从移动互联网获取即时信息3,移动消息推送技术因而得到了更多的关注和应用。其中较为有名得到广泛使用的就是RIM公司生产的黑莓手机中提

16、供的PushMail服务。PushMail指的是利用推送技术,将电子邮件直接传输到移动终端。简单的说,就是系统直接将电子邮箱中刚刚收到的邮件即时发送到用户的手机中,不像传统移动邮件系统那样必须依赖移动终端定期接收邮件或由用户主动检查邮箱,所以手机上时刻都能够维持与所指定的邮箱同步的资料。随着手机操作系统的发展,Android,IOS等系统上的许多移动应用已经集成了推送服务。移动推送技术诞生至今,已经取得了长足的发展。OMA(OpenMobileAlliance开放移动联盟)已经完成并发布了Push1.0、Push2.0、Push2.2标准,其中Push1.0至Push2.2都是基于点到点的推送

17、业务,主要应用为WAPPush标准或其他IP连接方式的推送。(1)WAP PushWAPPush是一种在实际中存在已久且广泛使用的推送方式,发送WAPPush信息是使用短信通道,但是手机接收到信息后将它归类到WAP(浏览器信息)收件箱中。该信息代表的是一条下载链接,用户还需要通过网络下载此条消息,之后就可以像查看普通短信一样查看消息。WAP的推送协议中定义了服务提示(SI:ServiceIndication)和服务加载(SL:ServiceLoad)两种服务,以给用户和网络运营商更多的选择。服务提示是将信息的摘要和相关的通用资源标识符(URI)发送给用户,由用户选择是否通过URI下载信息。服务

18、加载是将一项服务的URI推送给用户,然后手机自动地根据URI下载相应信息。两种服务的区别在于是否需要用户手动下载信息。SL对推送信息的处理对用户来说是透明的,而SI则在告知用户消息提示时,由用户自行选择是否下载信息。WAPPush方式的优点在于速度快、不占用宽带、实时性强,缺点在于信息服务提供者需要跟运营商合作,导致推送业务的种类单一,且不能与信息服务提供者的应用相结合。(2)IP PushIPPush是指移动终端通过网络与信息服务提供者的服务器建立一个连接,在终端和服务器之间建立连接后,服务端通过此连接实时推送信息。基于IP连接的推送技术是目前使用广泛的推送技术4,其原理与传统PC推送服务相

19、同。苹果公司的2APNS、谷歌公司的GCM服务都是基于该技术完成推送业务。APNS是苹果公司在2009年发布IOS3.0带来的新功能。在这一体系中,苹果公司的移动终端如iPhone、iPad和iPodTouch在建立与苹果推送服务器的持续IP连接之后,可以随时接收来自第三方应用服务器经过苹果推送服务器发送的消息。在消息到达时,即使相应的应用程序处于关闭状态,也可以通过移动设备上的广播通知启动5。GoogleCloudMessaging(GCM,原名为AndroidCloudtoDeviceMessaging)是APNS有着类似机制的一种消息推送服务,它能够帮助应用开发人员从应用服务器转发消息到

20、安装该应用的Android系统手机上。GCM服务采用一个简单,轻量级的机制使得谷歌推送服务器可以告诉Android系统设备上的相应应用与服务器建立直接的联系,来获取应用开发人员推送的信息。现今在各种移动智能终端上主要采用IP连接来实现移动消息推送,设备因此会产生了额外的数据流量和电量的消耗。因此,目前应用开发者多采用统一的移动消息推送平台来完成手机终端的信息推送,自己也就无需实现推送功能,移动终端也就避免了同时为每一个带有推送功能的移动应用维持一个IP连接所带来的资源损耗。利用推送平台,开发者可以在自己的应用服务器上,根据具体的业务需求,向特定的用户发送消息。目前的推送平台上并没有根据业务需求

21、为不同种类业务提供不同等级的服务,这样就会造成在消息推送的高峰期,紧急的消息不能迅速到达的情况出现。传统的优先级队列调度算法并不完全适合推送平台,因此需要加以改进。并且为了推送功能的需要,永久保持连接会给移动终端带来不必要的资源消耗,找到一个既能满足实时推送又能降低设备资源开销的网络连接策略是有必要的。1.4本课题研究内容本课题是作为中国电信电子渠道管理系统中的一个子模块进行研究和开发的,研究内容是立足于建立一个服务于中国电信手机客户端的消息推送系统,中国电信电子渠道管理系统已经有完善的管理员系统和分权分域管理系统,所以分权分域和管理员管理不作为本课题的研究对象。为了便于中国电信的客服人员更加

22、方便地向手机客户端用户推送活动公告以及客服信息等,建立一个消息定制平台,并且由系统自动向客户端推送消息,以达到减少客服工作量及提高效率的目的。本系统建立在Oracle数据库基础上,使用的技术主要包括Memcached分布式缓存、ActiveMQ消息队列以及Spring定时任务来完成消息自动推送。针对现阶段主流的两种操作系统Andriod和IOS,给出两种消息推送的解决方案以实现较全面的服务覆盖率。本文对整个系统的开发流程做了详细的描述,包括需求分析、数据库设计、流程设计、系统实现以及系统测试。通过本课题的研究,实现了中国电信客户端3的消息推送需求,并确定了以后研究和改进的方向。1.5内容框架本

23、文主要分为六章,各部分主要内容如下:第一章,主要阐述研究背景和消息推送系统的研究现状。第二章,介绍本文所用到的相关技术理论概述。第三章,针对消息推送的需求进行系统分析。第四章,主要阐述系统的框架设计,数据库设计以及各模块的详细设计。第五章,结合代码和图片阐述本系统的各模块的具体实现。第六章,阐述本系统的系统测试。第七章,对新系统进行评价和展望。4第2章 系统技术介绍第2章 系统技术介绍 2.1分布式缓存介绍2.1.1分布式缓存的特点高性能:传统应用的数据库在大量、高并发访问的情况下, 数据库的I/O成为制约性能的最大瓶颈,往往导致非常高的响应延迟。分布式缓存6使用存取数据高的内存作为存储介质,

24、以key/value的形式将数据库存储在内在中,从而获取非常高的存储性能。动态扩展性:分布式缓存支持弹性扩展,可以根据访问负载的实时变化情况,动态地增加或减少缓存节点,极大地提高资源利用率,同时提供了可预测的扩展性。高可用性:可用性包含两个方面,即数据可用性和服务可用性9。分布式缓存在冗余机制的基础上实现了高可用性、无单点失效(singlepointoffailure) 7,并且能够自动发现故障和实施故障切换,避免由于服务器的故障导致的服务中断和数据的丢失。能够在动态扩展时自动实现均衡的数据分区,保障了缓存服务持续可用性。易用性:分布式缓存提供了数据与管理视图和简单的API接口,并且与拓扑结构

25、分离。无需人工配置就可以实现动态扩展和失效恢复。并且大多提供了图形化界面作为管理控制台,便于统一维护。2.1.2Memcached介绍Memcached是一款高性能的将对象缓存在内在中的分布式缓存系统。多用于缓存动态Web应用的数据来减轻数据库的压力。有了它,就可以减少读取数据库的次数,从而提高网站或应用服务的访问速度。Memcached是一套分布式的快取系统,是一套开放源代码软件,以BSDlicense授权协议发布。 (1)Memcached的存储方式为了达到提高性能的目的,Memcached将数据都保存在内置的内存空间中。由于缓存数据是存储于内存中的,因此重启Memcached或者服务器故

26、障都会导致缓存数据的丢失。另外,缓存的容量达到预设值之后,缓存服务器就会基于LRU(LeastRecentlyUsed) 8算法将不使用的缓存自动删除。Memcached是专门用做缓存的服务器,因此数据的永久性问题并没有过多的考虑到Memcached的设计中去。(2)通信分布式Memcached的API使用32位元的循环冗余校验(CRC-32)9计算键值,然后将数据分散存储在不同的服务节点上。虽然被称为“分布式”缓存服务器,但Memcached服务器端本身并没有实现“分布式”的功能,而是由Memcached的客户端来实现的。Memcached作为高速运行的分布式缓存服务器具有以下特点。(1)协

27、议简单Memcached的客户端通信使用文协议,而不是MXL等复杂格式的协议。(2)事件处理基于libeventlibevent是一个封装了Linux的epoll和BSD类的kqueuet等时间处理功能的程序库10。由于使用了这个库,所以Memcached能在Linux、BSD、Solaris等操作系统中使用。(3)内置内存存储方式为了提高性能,Memcached内置了内存空间用于保存的数据。因为数据都仅仅被保存在内存中,因此重启Memcached或者服务器故障都会导致缓存数据的丢失。另外,内容使用的容量到达预设的值后,Memcached会将不使用的缓存自动删除。(4)Memcached不互通

28、信的分布式6Memcached的分布式是在客户端实现的,应用程序请求到Memcached时,客户端程序库首先对请求基于循环冗余校验算法进行计算,得到key值,然后将数据按照key值分发到不同不服务节点上,同样的请求经过算法得到key值相同,就自动跳到相应的服务节点,由此实现了分布式。2.2消息队列介绍“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器11。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时

29、接收者不可用,消息队列会保留消息,直到可以成功地传递它。2.2.1ActiveMQ介绍ActiveMQ是由Apache出品的,最流行的并且能力最强劲的开源消息总线。ActiveMQ完全支持JMS1.1和J2EE1.4规范,虽然JMS规范的推出已经过去了很长的时间,但是JMS在J2EE应用中间仍然扮演着特殊的地位。12JMS是Java Message Service的简称,用来发送异步消息,在不同系统和不同的模块之间,可以利用它来实现集成。JMS有两个好处,第一个就是让模块之间或者系统之间的耦合度降低,第二个是异步通信。JMS的消息机制有2种模型,一种是PointtoPoint,表现为队列的形式

30、。发送的消息,只能被一个接收者取走;另一种是Topic,可以被多个订阅者订阅,类似于群发。在JMS中有这样几个重要的核心接口和类13:1.ConnectionFactory,用于jmsclient获取与jmsprovider的连接。不同的jms产品,对这个接口有不同的实现,比如说ActiveMQ,这个接口的实现类是ActiveMQConnectionFactory2.Connection,是由ConnectionFactory产生的,表示jmsclient与jmsprovider的连接。3.Session,是由Connection产生的,表示一个会话。Session是关键组件,Message、

31、Producer/Consumer、Destination都是在Session上创建的4.Message,这个组件很好理解,就是传输的消息,里面包括head、7properties、body,其中head是必选的5.Destination,是消息源,对发送者来说,就是消息发到哪里;对接收者来说,就是从哪里取消息。Destination有2个子接口,Queue和Topic,分别对应上面提到的2种模型14。6.MessageProducer,是消息发送者,创建这个组件的代码类似:Destinationdest=session.createQueue(dotaQueue)/消息目的地MessageP

32、roducerproducer=session.createProducer(dest);/消息发送者可以注意到,这里需要把Destination作为参数,传入createProducer()方法,这说明消息发送者是绑定到Destination上的,这个发送者发送的消息,会发送到这个绑定的Destination上。7.MessageConsumer,是消息接收者,和MessageProducer是相反的一种组件。图2.1JMS中各组件及其关系图(一)ActiveMQ特性:1、多种语言和协议编写客户端。语言:Java,C,C+,C#,Ruby,Perl,Python,PHP。应用协议:OpenW

33、ire,StompREST,WSNotification,XMPP,AMQP。2、完全支持JMS1.1和J2EE1.4规范。3、对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性。4、通过了常见J2EE服务器(如Geronimo,JBoss4,GlassFish,WebLogic)的测试,其中通过JCA1.5resourceadaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE1.4商业服务器上。85、支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA。6、支持通过J

34、DBC和journal提供高速的消息持久化。7、从设计上保证了高性能的集群,客户端-服务器,点对点。8、支持Ajax。9、支持与Axis的整合。10、可以很容易得调用内嵌JMSprovider,进行测试。(二)为什么使用ActiveMQ在设计分布式应用程序时,应用程序间的耦合(或称集成)方式很重要。耦合指的是应用程序或系统间的相互依赖关系。现在应用程序开发中通常提到两种耦合方式,紧耦合与松耦合,紧耦合是指应用程序与其他应用程序间在架构上的交叉实现。这样设计的结果往往是,其中一个应用程序的改变,将导致另一个应用程序也跟着进行改变。相反、一个应用程序的改变不会导致其他应用程序的耦合方式被称为是松耦

35、合。简单的说,松耦合应用程序的设计方式能够更容易的处理不可预见的应用变化15。所以可以说紧耦合是面向过程的开发,而松耦合是面向对象的开发。紧耦合架构的缺陷是,极大提高了应用程序的管理维护的成本,因为即使是一个非常微小的改动,将导致相关应用程序的改动,从而造成连锁反应,甚至影响到整个系统。另外,调用者必须阻塞式的等待被调用者返回,即RPC(Remote Procedural Call),如果被调用者的处理过程复杂,将会严重影响调用者的执行效率和资源使用率。图2.2给出了这种紧耦合技术的描述:图2.2 紧耦合技术松耦合的优势是一个应用程序不知道另一个应用程序是否存在,也不需要阻塞等待被调用者返回,

36、只需要过一段时间进行再进行一次询问。这种设计方式极大的缩减了管理维护的成本。图2.3给出一种松耦合的方式,进行架构设计:图2.3 松耦合架构ActiveMQ的框架设计就是用到了松耦合方式。ActiveMQ就像是一个中控系统,消息发送者将消息发送给ActiveMQ,不需要关注消息从ActiveMQ到消息接收者这个过程的时间和方式。同样的,消息接收者直接找ActiveMQ来获取消息,而不用关注消息的来源、时间和方式。ActiveMQ作为消息的中间件,允许应用程序多种语言、多种协议以一种异步的方式进行消息传递。所以说,ActiveMQ这种松耦合的中间件为多语言、多系统交叉应用开发提供了良好的支撑。2

37、.2.2 IOS推送机制介绍iOS消息推送的工作机制17可以简单的用图2.4来概括:图2.4 iOS消息推送的工作机制Provider是指某个iPhone软件的Push服务器,APNS是ApplePushNotificationService的缩写,是苹果的服务器。图2.5可以分为三个阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone。iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知。图2.5 IOS消息推送框架结构图从图2.5可以看到

38、:应用程序注册消息推送,iOS从APNSServer获取devicetoken,应用程序接收devicetoken。应用程序将devicetoken发送给PUSH服务端程序。服务端程序向APNS服务发送消息。APNS服务将消息发送给iPhone应用程序。IOS推送原理Apple为应用开发者提供了一个APNs推送接口,称为binary interface。Binary InterfaceV1最初版本的binaryinterface协议如图2.6所示,这里称之为v1。图2.6 APNS接口协议结构示意图BinaryInterfaceV2在V1的基础上增加了两个字段:(1)Identifier-一个

39、任意的值,用于一条消息的识别。如果发送出现问题,错误应答里会把Identifier带回来。(2)Expiry-离线消息超时的时间,如果为0或者小于0,APNs不会保存这条消息。图2.7 APNS接口协议结构示意图和v1一样,如果消息发送没有问题,APNs不会有任何返回。和v1不同,并且很重要的改进是,如果发送出现错误,v2会在断链之前返回一个错误应答,带上发消息时的Identifier和一个错误码。根据这个错误应答,程序员有机会找到是哪条消息发送出错,并确定哪些消息需要被重发。图2.8 APNS接口错误应答码结构示意图IOS消息推送方法:(1) 创建本地推送实现代理方法didReceiveLo

40、calNotification - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification/在此时设置解析notification,并展示提示视图(2) 创建本地推送- (void)createLocalNotification / 创建一个本地推送UILocalNotification *notification = UILocalNotification alloc init autorelease;/设置10秒之后NSDate

41、 *pushDate = NSDate dateWithTimeIntervalSinceNow:10;if (notification != nil) / 设置推送时间notification.fireDate = pushDate;/ 设置时区notification.timeZone = NSTimeZone defaultTimeZone;/ 设置重复间隔notification.repeatInterval = kCFCalendarUnitDay;/ 推送声音notification.soundName = UILocalNotificationDefaultSoundName;/

42、 推送内容notification.alertBody = 推送内容;/显示在icon上的红色圈中的数子notification.applicationIconBadgeNumber = 1;/设置userinfo 方便在之后需要撤销的时候使用NSDictionary *info = NSDictionary dictionaryWithObject:nameforKey:key;notification.userInfo = info;/添加推送到UIApplicationUIApplication *app = UIApplication sharedApplication;app sch

43、eduleLocalNotification:notification;(3) 接收本地推送- (void) removeLocalNotication / 获得 UIApplicationUIApplication *app = UIApplication sharedApplication;/获取本地推送数组NSArray *localArray = app scheduledLocalNotifications;/声明本地通知对象UILocalNotification *localNotification;if (localArray) for (UILocalNotification

44、*noti in localArray) NSDictionary *dict = noti.userInfo;if (dict) NSString *inKey = dict objectForKey:key;if (inKey isEqualToString:对应的key值) if (localNotification)localNotification release;localNotification = nil;localNotification = noti retain;break;/判断是否找到已经存在的相同key的推送if (!localNotification) /不存在初

45、始化localNotification = UILocalNotification alloc init;if (localNotification) /不推送 取消推送app cancelLocalNotification:localNotification;localNotification release;return;2.3 Oracle数据库介绍ORACLE数据库系统是美国ORACLE公司提供的以分布式数据库为核心的一组软件产品,它是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE

46、数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。ORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。(1)完整的数据管理功能:(a)数据的大量性。(b)数据的保存的持久性。(c)数据的共享性。(d)数据的可靠性。(2)完备关系的产品:(a)信息准则:关系型DBMS的所有信息都应在逻辑上用一中方法,即表中的值显式地表示。(b)保证访问的准则。(c)视图更新准则:只要形成视图的表中的数据变化了,相应的视图中的数据同时变化。(d)数据物理性和逻辑性独立准则。(3)分布式处理功能:ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oracle rdbms、sql*Net、SQL*CONNE

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服