2.1.2 Android应用组件
Android应用程序由四种组件彼此配合、相互支持后组合而成,这四种组件分别是负责用户参数调整的Activity表示层,负责用户服务的Service组件,负责接收广播的Broadcast Receiver,负责数据读取和存储的Content Provider 组件。
Activity是一个负责与用户进行交互的组件,其所有的操作都和用户有密切的关系,通过配合使用Android的各种组件(例如:TextView、ImageView、Button、ProgressBar等)来显示视图界面。每个Activity都会先调用OnCreate(Bundle bundle)这个方法,对Activity进行初始化,再调用setContentView(R.layout.XXX)这个方法来显示指定的视图布局。R.layout.XXX就是指向指定的xml布局文件。
Service是运行在后台的组件,在UI界面上看不到Service的存在。Service有三个生命周期,onCreate()用于创建Service、onStart()用于启动Service、onDestory()用于销毁Service,这三个方法可通过Activity或Context进行调用。继承Service类的子类有startService()和bindService()两种方式进行启动。
Broadcast Receivers的功能是接收广播消息,和对广播消息做出响应。在一个应用程序中,可以有多个Broadcast Receiver,Broadcast Receiver和Service都没有用户接口,但是在Broadcast Receiver中,可以启动一个Activity来响应广播消息。
Content Provider提供不同应用程序之间的数据共享和访问,是不同进程之间的数据访问的统一接口。在需要多个应用程序间共享数据时,才需要使用Content Provider。Content Provider提供的数据可以存储在文件系统、SQLite数据库等。其他应用可以通过Content Resolver类从该Content Provider中获取数据或存入数据。
2.2 Node.js简介
2.2.1 Node.js基本介绍
Node.js(Node),是一个可以让JavaScript运行在服务器端的平台。它是一个为实时Web(Real-time Web)应用开发而诞生的平台,它从诞生之初就充分考虑了在实时响应、超大规模数据要求下架构的可扩展性[4]。 因此,Node.js抛弃了利用多线程来实现高并发的传统平台的设计思路,而是采用单线程、异步式I/O、事件驱动式的设计模型。它的这些特征让开发时减少了设计多线程时的复杂,也带来了性能的提升,进而提高了开发人员的开发效率。Node.js诞生于2009年,尽管诞生时间还不长,但它周围已经形成了一个日渐完善的庞大的生态系统。Node.js的包管理器(node package manager, npm),强大且灵活,有许多开源开发者也在为NPM开发和维护方便使用的模块,目前也已经有了上万个第三方模块。在2011年6月,微软宣布与Joyent公司合作,将Nodejs移植到Windows,同时Windows Azure 云计算平台也支持Nodejs[5]。 Node.js是一个划时代的技术,起初是为了服务使用JavaScript的Web前端,它又在原有的客户端和服务端技术的基础上提炼出了许多新的方法,提供灵活的伸缩能力,以适应21世纪10年代以后规模越来越庞大的互联网环境。
2.2.2 Node.js特点及性能
Node.js最大的特点就是采用异步式I/O(非阻塞I/O)与事件驱动(Event-Driven)的架构设计[6]。在传统平台中,解决高并发是利用多线程来处理业务,每个业务逻辑提供一个线程来处理,通过切换系统线程提高处理速度来弥补因同步式I/O所产生时间上的消耗。Node.js使用单线程模型,所有I/O都采用异步请求,避免了过于频繁的上下文切换。主要原理是:Node.js在执行时,先处理一个事件队列。执行的程序会进入时间循环,等待下一个事件进入队列,当每次有异步式I/O请求完成后,都会推送到事件队列等待程序进程对其进行处理。
Node.js用异步式I/O和事件驱动代替多线程,带来了可观的性能提升。它的开发者在原有的libev和libeio的基础上还抽象出了libuv层。对于POSIX(Portable Operating System Interface)操作系统,libuv是通过封装libev和libeio来利用epoll或kqueue。而在Windows操作系统下,libuv则是使用Windows的IOCP(Input/Output Completion Port, 输入输出完成端口)机制,让Node.js能够在不同的平台下实现相同的高性能。
- 上一篇:jsp+mysql自动化考勤系统设计与实现
- 下一篇:数字加法器的设计与实现
-
-
-
-
-
-
-
电站锅炉暖风器设计任务书
中考体育项目与体育教学合理结合的研究
十二层带中心支撑钢结构...
酸性水汽提装置总汽提塔设计+CAD图纸
当代大学生慈善意识研究+文献综述
大众媒体对公共政策制定的影响
java+mysql车辆管理系统的设计+源代码
杂拟谷盗体内共生菌沃尔...
乳业同业并购式全产业链...
河岸冲刷和泥沙淤积的监测国内外研究现状