应用程序(精选12篇)
应用程序 篇1
摘要:Android应用越来越受到追捧, 相关应用程序供不应求。在介绍Android平台及其开发工具Java的基础上, 系统介绍开发Android应用程序的主要技术和研发Android应用程序的一般流程, 并通过俄罗斯方块游戏应用程序进行测试, 结果表明效果良好。
关键词:安卓平台,应用程序,Java语言,俄罗斯方块
0 引言
Android是Google公司推出的开源手机操作系统, 其发展之势不可阻挡[1,2,3]。国内很多手机厂商和移动运营商都纷纷加入到Android阵营, 如中国移动、中国联通、中国电信、华为和联想等。Android应用范围除手机外, 还被应用于汽车、平板电脑、智能上网设备以及智能家用电器上, 用户在千里之外就可遥控操作[4,5,6]。本文在简介Android开发平台的基础上, 以Java为开发工具详细介绍Android应用程序的主要技术和开发过程, 并用其设计了俄罗斯方块游戏。
1 Android平台与Java简介
1.1 Android平台简介
Android是以Linux为基础的开源操作系统。其体系结构采用软件堆架构, 共分4层[2] (见图1) 。
最底层是Linux2.6内核, 是硬件和软件堆之间的一个抽象隔离层, 提供安全机制、内存管理、进程管理、网络协议堆栈、电源盒驱动管理等。其次是函数库和Android运行核心库。函数库提供了一组基于C/C++的函数库。这些库能被Android系统中不同的组件使用。核心库可提供Android系统多种功能和Java语言基本函数, Dalvik虚拟机实现优化的基于Linux内核的线程管理和底层内存管理。应用程序框架实现了该平台下的管理功能和组件重用机制, 包括Activity管理、窗体管理、包管理、资源管理等一系列服务。应用程序包随Android一起发布, 应用程序包包括email客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。应用程序和应用程序框架采用JAVA语言编写。基于该体系结构的Android系统具有开放性、应用程序无界限、应用程序平等性、潜入网络方便性和并行性等优点[7]。
1.2 Java简介
Java是由Sun Microsystems公司推出的一种程序设计语言, 其以可移植、方便、高效等特点迅速发展成为世界上最常用的程序设计语言之一[9,10]。Java语言分为JavaSE、JavaEE和JavaME, 其中JavaME主要定位于客户端, 用来开发客户端程序。JavaEE是企业级开发平台, 用于开发企业级Web应用程序。JavaME是关于移动端的开发, 它与JavaSE、JavaEE并称, 主要针对消费类电子设备, 例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等。
2 Android主要技术及应用程序
2.1 Android应用程序研发的主要技术
Android的4大组件包括Activity、Service、Broad Cast Receiver和Content Provider[11,12,13]。一个Activity通常是一个单独屏幕, 它上面可显示一些控件, 也可监听和响应用户事件。在Android程序中, Activity一般代表手机屏幕的一屏, 如某个网页。在Activity当中可以添加Button、Check box等控件。它是所有程序的根本, 也是Android最基本模块之一, 所有程序流程都运行在Activity之中。一般一个Android应用由多个Activity组成, Activity之间可以相互跳转。与网页间跳转稍有同, 其可从Activity A跳转到Activity B, 那么当Activity B运行结束时, 有可能会给Activity A一个返回值。
Service即服务, 是Android系统的一种组件, 与Activity级别差不多, 与其它组件可交互, 但只能由后台运行而无法自己运行。它是没有界面的长生命周期代码。如播放音乐时想上网, 可打开Android浏览器, 进入浏览器程序, 但音乐播放并没停, 而是由后台继续播放。该播放就由播放音乐的Service进行控制。当然这个播放Service也可停止。
Broad Cast Receiver即广播接收器, 用于接收并处理广播通知。多数广播是系统发起的, 如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的Broadcast Receivers来响应重要的通知。Broadcast Receiver可以通过多种方式通知用户, 如启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等, 最典型的是在状态栏显示一个图标, 用就可点击查看通知内容。通常某个应用或系统本身遇到电池电量不足、来电来短信等, 临时广播一个Intent, 用户可用其注册一个Broadcast Receiver来监听Intent, 并获取Intent数据。
Content Provider即内容提供商。Content Provider是Android提供的第三方应用数据访问方案。Android对数据保护很严密, 除SD卡数据外, 一个应用所持有的数据库和文件等内容, 都是不允许其他应用直接访问。
Android是开源世界的集大成者, 是一个完整系统, 针对不同的应用, 具有不同群组技术和概念集群, 需要结合具体问题具体选择使用[14]。
2.2 Android应用程序研发过程
首先进行Android开发环境搭建。准备必要工具:JAVA的IDE开发工具Eclipse;Java开发包Java SE Development Kit (JDK) JDK 6;For Windows的Android开发包Android SDK。依次安装和配置JDK、Eclipse、安卓SDK和ADT。
Android应用程序开发主要分为单机应用和Web应用两种。单机应用不需要服务器, 运行在各自手机上, 每台手机利用自己的数据库, 存储运行在安卓设备上的数据。而Web应用需要服务器, 其数据库共享在服务器, 通过数据库来管理所有用户数据。一般Android应用程序的开发流程如图2所示。
3 基于Android俄罗斯方块研发
3.1 游戏功能模块
俄罗斯方块[15]功能模块如图3所示, 其运行流程如图4所示。
开始模块实现开始界面功能, 包括开始游戏和退出游戏功能。游戏模块实现游戏过程, 包括游戏界面设计、方块定义和操作等。在限定时间内方块可被控摆放在界面中, 界面具有行列属性, 如20行12列。一般方块有7种类型, 其形状和名称如图5所示。每种类型有4种状态, 在程序运行过程中获取不同手机的屏幕大小, 通过屏幕大小得到格子的尺寸, 通过滑动屏幕改变状态。
方块每隔一定时间下落一次, 当方块落到底部或落到方块墙时将不再下落, 停在当前位置形成方块墙, 同时下一个方块开始从顶部下落。用户可通过滑动屏幕来控制方块的移动、旋转。可作如下定义:向上滑动为旋转、向下滑动为加速下落、向左滑动为方块左移, 向右滑动为方块右移。当界面某一行或几行同时被方块填充满时, 此行或此几行将消去并且成绩上升, 每次消去行数越多成绩提高越快。当方块刚出来就无法下落时游戏结束, 跳转到结束界面, 统计成绩并且供玩家选择是否重新开始或者退出。结束游戏模块实现游戏结束、得分统计, 还可继续下一轮游戏。
3.2 基于Android的俄罗斯方块实现
3.2.1 游戏开始界面实现
安卓程序开始于activity类, 通过@Override
public void onCreate
(Bundle savedInstanceState)
super.onCreate (savedInstanceState) ;
setContentView (R.layout.main) ;
方法调用main.xml文件来生成界面。
requestWindowFeature (Window.FEATURE_NO_TITLE)
getWindow () .setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) , 使界面去除标题栏, 达到游戏全屏。使用main.xml美化界面, 使用public void startGame定义画面、设定屏幕和方块, 用class MyGesture extends SimpleOnGestureListener实现游戏界面。
3.2.2 方块形成
方块是俄罗斯方块中最基本的元素, 游戏中所有操作都是通过控制方块来实现。方块由4个小格子摆放位置来形成, 通过从外部导入图片的方式来画格子, 可保证方块美观。通过ShapeFactory类得到不同类型方块。类中三维数组, 其中第一维代表7种方块的一种, 第二维代表每一种方块的四种状态, 第三维是方块呈现形态, 有16个元素代表一个四行四列的二维数组。方块是由4个正方形小格子通过在一个二维数组中摆放位置的不同来呈现出不同种类和不同类型。考虑到四维数组太复杂, 所以将最后的一个四行四列的二维数组合并成一个16个元素的一维数组, 在具体实现中通过一个循环将第三维再分成一个四行四列的二维数组。其中1代表在该位置有方块, 0代表没有方块。如J型方块的四种形态定义:
四种结果如图6所示。四种J型方块由public static Shape getShape () 随机生成一种形态。
在Shape类中通过调用ShapeFactory中的getShape方法得到一个方块, 并通过public void drawMe将其显示到界面上。此时得到的方块是一个一行16列的一维数组, 如{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, 该一维数组不能正确表示一个方块, 因此在drawMe () 方法中还需要通过两层循环, 将一维数组变成一个4行4列的二维数组, 以便在界面中正确画出方块。在数组中, 0代表在该位置没有格子, 1代表有格子, 因此在drawMe () 方法中还需要调用public boolean check (int x, int y) 检查在4行4列数组中的格子并将其显示到界面中。
3.2.3 方块下落实现
得到一个方块并将其画到界面后即可让方块下落。在GameView中通过线程让方块每隔一定时间下落一行。在Shape类中定义方块的Top属性, 代表方块与界面左边的距离, 每隔0.5s方块Top属性就加1, 这样方块就能每隔0.5s下落一行。在方法中判断当Top大于或者等于界面的总行数或者落到方块墙上, 此时方块停止下落, 生成方块墙, 并且重新生成另一个方块开始下落。如此循环实现游戏过程。
3.2.4 方块墙实现
当方块落到底部或者落到方块墙上就停止下落形成方块墙, 方块墙也是游戏中的重要组成部分。在Shape类中定义:
Private static int[][]wall=new int[GameConfig.ROWS][GameConfig.COLS];
定义方块墙为20行16列。当方块不能下落时停在界面当前位置, 在此位置将wall[][]设置为1, 继续生成下一个方块并下落。在游戏过程中, 一旦wall[][]数组中有值变为1, 则马上将其画出来, 通过调用public void drawWall (Canvas canvas, Drawable d) {;}方法画墙。通过public boolean checkWall (int x, int y) {return wall[y][x]==1;}方法检查wall数组中的值是否为1, 是则画不是则不画。
3.2.5 方块移动和旋转
在游戏过程中需要滑动屏幕来控制方块的移动和旋转, 需设置手势触控方法。当向右滑动且偏离水平方向不超过60个像素时, 方块右移;向左滑动且偏离水平方向不超过60个像素时, 方块左移;向上滑动且偏离水平方向不超过60个像素时, 方块旋转;向下滑动且偏离水平方向不超过60个像素时, 方块加速下滑。通过调用该方法public boolean ckeckBounds (int action) 判断是否能移动。该方法可检查方块在移动过程中是否越界, 假如方块越界, 那么滑动屏幕方块将不再移动。
public boolean checkDownWall (int action) 除了检查方块是否越界之外, 还检查方块是否落到墙上, 如果方块落到墙上, 同样不能再移动了。
3.2.6 消行并统计得分
游戏过程中当方块墙的某一行有格子, 那么该行就得消去并且得分上升。通过设置得分数组, 每次消去的行数越多得分越高, 每消去一行得分加1, 消去两行得分加10, 消去三行得分加50, 消去4四行得分加100, 方块最大每次能有四行, 所以每次最多能消去4行。通过两种方法判断是否满格和消行, 首先调用fullCells (int row) 方法判断是否满格, 如果是则调用removeLine (int row) 方法消行, 通过数组复制的方法来实现消行。方块下落、旋转和方块墙的实验结果如图7所示。
3.2.7 游戏结束及其界面实现
通过判断一个方块的Top属性是否小于0来判断游戏是否结束, 当游戏结束时跳转到结束界面, 并且将得分传到结束界面。采用Intent方法来实现界面跳转, 由于是在自定义类而不是在activity类中跳转, 所以调用方法的过程中需要传一个context才能实现。
当游戏结束时就会跳转到结束界面, 由游戏成绩和两个按钮组成。在xml布局文件中生成该界面, 成绩通过一段文本文字来显示。另外还有两个按钮, 一个是返回开始界面, 通过结束前一个activity, 再跳转public void start (View view) 实现。另一个按钮是结束游戏, 通过结束activity的方法一层一层结束。
4 结语
在PC机上完成Android应用程序设计后, 利用eclipse导出形成一个Android安装包。下载该包到手机即可运行。该游戏软件在三星等智能手机上经测试没有BUG和死机情况。该应用程序在训练Android应用程序的研发和满足用户娱乐需求具有一定实用价值。
应用程序 篇2
教材分析
本节内容为上海科技教育出版社出版的七年级信息技术教材第二单元第四小节《使用应用程序》,目的是使学生了解和掌握信息技术的基础知识,具有使用计算机工具进行图形绘制和图形处理的能力。
学情分析
授课对象为七年级学生。学生经过计算机基础知识和windows XP操作系统的学习,对计算机基本操作有了一定的了解。通过本节课的学习,大部分学生能用画图程序进行简单的图形绘制和图像处理,提高学生应用信息技术的能力。
教学目标
1.知识与技能
(1)学会启动与退出画图程序。
(2)认识画图窗口的组成和画图工具箱中的工具。
(3)能用画图程序画一幅图画。
2.过程与方法
(1)通过Windows XP附件程序的学习,让学生体验学习应用程序的方法。
(2)通过画图程序的学习,培养学生创造性探索和解决问题的能力。
3.情感、态度与价值观
培养学生良好的学习习惯和学习兴趣。
教学重点与难点
重点:
1、“画图”程序的启动。
2、熟悉“画图”程序工具箱中的工具。
难点:“画图”程序中工具的使用。
教学准备
多媒体课件、图片。
教学方法
讲授法、演练法、自主探究法
课时安排
一课时
教学过程
一、导入
回忆:同学们都上过美术课,都画过画,画画时大家都用过哪些工具呢?
学生回答„„。展示图片:
这两幅图是我用你们刚才说的这些工具来画的,只不过我是用电脑来画的,同学们这两幅图漂亮吗?学生回答„„。这两幅图是我用Windows XP系统自带的应用程序—画图程序来画的,同学们想不想学习这个画图程序呢?学生回答„„,好,这节课我就和大家一块来学习Windows XP应用程序—画图。
二、新课探究
1、启动“画图”程序
问题:如何打开“画图”程序?(1)学生动手探索。
(2)教师讲解并演示启动“画图”程序的操作步骤。
步骤:开始→程序→附件→画图
启动后的屏幕窗口如下图所示:
2、认识“画图”程序
(1)标题栏:它包含了程序的名称和图画的命名。(2)菜单栏:有六个下拉式菜单。
(3)工具箱:有许多绘图工具,绘画时任选一项工具,选择工具后,讲鼠标移到绘图区,指针就变成工具的形状。
(4)绘图区:在该区作图、绘画。
(5)调色板:左面是交叉重叠的矩形,左上角的矩形显示当前前景色,右下角矩形显示当前背景色,右边有28种颜色供选择。
3、认识“画图”工具
(1)重点讲解
橡皮工具:可以擦除图面中不想要的部分
涂色工具:用前景色对封闭区填充。
喷枪工具:该工具由鼠标的拖动速度决定的,速度越们慢,斑点越密,速度越快,斑点越稀少。
文字工具:利用文字工具可以在图画上写字。
直线工具:利用它可以画直线、水平线、垂直线。
曲线工具:利用它可以画单弯头曲线、双弯头曲线。
铅笔工具:可以在绘图区内任意画线。
椭圆工具:可以画一些垂直或水平的椭圆环。
(2)简单讲解
剪切工具、选定工具、取色工具、放大镜、刷子工具、矩形、多边形 圆角矩形。
4.实例:荷塘月色(教师演示)5.作品存盘退出:(讲解并演示)
存盘:选择“文件”菜单下的“保存”命令, 将所绘制的图画保存磁盘上。退出画图程序:
方法一:单击画图窗口右侧的关闭按钮;
方法二:单击菜单中“文件”选项中的退出命令
三、课堂练习
(1)绘制学案上的“小鸡吃米”图。(2)学生作品展示。
四、课堂小结
本节课主要学习了画图程序的启动与退出,画图窗口的组成以及画图工具箱中工具的使用。
五、课后作业
使用画图工具绘制一张圣诞贺卡图片。
全屏应用程序 篇3
目前可以全屏显示的应用程序只有一部分,苹果已经更新了Safari浏览器、内置在OS X中的应用程序,如Mail和Terminal,以及iLlfe和iWork,通过软件更新也支持了全屏模式。此外,苹果还提供给第三方开发者关键的技术支持,帮助他们升级自己的应用程序。但在此之前,第三方开发者需要首先升级相关的软件。
开启和退出全屏模式
要进入全屏模式,点击小对角线箭头图标即可,该图标位于应用程序窗口标题栏的右上角。进入该模式后,程序会展开扩展并填满整个屏幕,Dock和菜单栏也会消失。当然,如果你将鼠标移动到这些菜单原来的位置时,它们又会出现。
在全屏模式下,你只要用三指(或者四指)横向轻扫,就能查看另一个全屏应用程序或者虚拟桌面。此外,也可以在按住option键时,按下箭头键,向左或向右查看另一个全屏应用程序。想要退出全屏模式,只需按下Esc或者将鼠标移动到屏幕右上角,然后点击全屏切换即可。
三大全新功能,让数据丢失成为历史
版本
虽然Time Machine每隔一小时就会为你备份一次,但是,如果想要恢复某个文档到20分钟以前的状态该怎么办呢?答案是——使用“版本”功能。
当你对文档做了重要的改动,版本和“自动保存”以及Time Machine都会为你即时保存这些改动。那么,什么才算“重要的改动”呢?差不多像是删除某个段落、添加新文本或者插入图片等等都属于“重要的改动”。而且,当你打开、保存、复制、锁定、重命名或者恢复到以前的某一文本时,该功能也会为你保存最新的版本。
访问版本的方式有多种。你可以通过“文件”或者“版本”菜单(当鼠标停放在某个文档的标题栏时,会出现一个三角形图标,通过点击即能进入菜单),将文件恢复为上次保存或打开的版本。
选择“版本”菜单,进入类似“Time Machine”的界面,该界面会显示左右两个文件:当前版本的文件在左边,早前各时段保存过的版本的文件在右边。点击早前版本的标题栏,该文档会放大,使用文档右侧的“历史”滑块也能达到相同的效果。点击文档底部的“完成”按钮,则不做任何更改直接返回到应用程序。选定早前版本并点击“恢复”,则会覆盖当前版本。此外,也可以拷贝旧版本中的部分文字到当前版本中。
自动保存
谁都会保存自己刚辛苦做完的工作,这已经成为一种习惯。而Lion让保存变得更简便,无需按下#-S键,你随时写,操作系统随时自动保存你的工作。
在实际应用中,“自动保存”功能非常贴心,让我们可以专心工作。但长时间工作的人好像还是不能百分百信赖它。没关系,大家依然可以在每次更新文档后,直接按下#-S键,这样就能确保最新版本的文档已经写入了磁盘。现在缺少的是“另存为”功能,不过不用担心,使用版本菜单的复制命令就可以达到这种效果。
恢复
和自动保存一样,恢复的方法也一点不费力气。当你开启某一应用程序时,它会继续显示在你上次关闭时的地方,同时打开相同的文件和窗口。
恢复工作不仅适用于退出某一个应用程序,也适用于整个系统。当你选择重新启动、关机或者注销Mac时,你都会看到一个复选框,你可以指定重新登录时,是否希望重新打开窗口。
应用程序 篇4
随着网络技术的迅速发展,以Web应用为代表的各项网络应用日益改变着人们的生活和工作方式。但随之而来的问题是网络上Web流量的激增,导致一些热门Web站点由于负载过重而变得反应迟缓。许多基于Web的管理信息系统涉及的信息量非常庞大,用户访问的频率很高,这些特点都在实时性和吞吐量上对Web系统的性能提出了很高的要求。因此基于Web系统的测试、确认和验收已经成为Web工程过程中的一个重要的组成部分。
以一个银行设备管理系统作为研究测试对象,运用LoadRunner测试工具对其进行压力测试。通过模拟真实负载,找出性能瓶颈,进行优化改进,从而保证Web系统在实际运行中能够保证良好、可靠的性能。本文的测试方案、测试方法、数据分析的方法以及相应的解决方案,同样可以应用于其他Web应用的测试和分析中。
1 Web 性能测试
1.1 Web 性能测试指标
Web应用程序通常支持多用户并发,关键是在高峰期能很好的运行程序。一个成功的Web应用程序通常具有以下3种性能特征:
(1) 短响应时间
响应时间是指客户机从请求开始到收到请求响应的延迟时间长度来衡量。在技术上,应用程序的响应时间是全部组件响应时间的和,包括Web服务器、数据库服务器、网络连接等。响应时间随客户机请求数量的增加而增加。当服务器处于低负载时,系统能够服务较多的客户请求,所以响应时间较快。当服务器处于重负载时,系统能够服务较少的客户请求,所以响应的时间较慢[1]。
(2) 高吞吐量
Web应用程序的吞吐量是指在单位时间内客户请求系统进程的数量,相应时间单位通常是秒。它测试的是实际的数字,而不是最大的能力。当系统负荷轻时,吞吐量会根据客户机请求的数量而增加。当客户的请求数量继续增加时,在一定的时间点上它会达到峰值点,然后开始下降。
(3) 强伸缩性
伸缩性是指客户请求数量增加时应用程序运行的性能以及系统升级时应用程序性能增加的程度来测量的。一个好的应用系统应该能够通过简单的升级硬件而不必重新设计新编码就能够进行扩展。
1.2 Web 性能测试工具
测试工具通常分为两类,一类是用于对服务器端的性能指标进行测试;另一类是用于对客户端的性能指标进行测试。本文所进行的基于负载的性能测试主要围绕客户端模拟并发用户来展开讨论。
对于服务器端性能指标的观测,可以利用服务器自带的工具来进行。在Windows 2000/2003 Server中自带了一个性能监视器, 可以通过菜单操作“开始|管理工具|性能”来运行。通过在性能监视器中添加所要观察的计数器(即性能指标) ,就可以获得程序运行时的性能指标变化图。在Linux操作系统中也有类似的性能监视工具。
对于客户端性能指标的测试,通常是利用测试软件模拟真实用户的操作行为来进行。许多Web服务系统测试方案采用的是Java,C++等通用编程语言控制模拟用户的行为以及模拟用户数量。这类解决方案的一个明显问题在于编写模拟程序的复杂性,即测试人员不得不在程序代码中逐个处理所要测试的页面,以及要面对Web应用的所有细节,因此完成一个测试程序往往要花费比较长的时间。
随着自动化测试工具的出现,如Rational Robot,QALoad ,LoadRunner 和微软的WAS 等客户端性能测试工具。其中Rational Robot,QALoad,LoadRunner都是比较不错的商业测试工具,但是价格也非常昂贵,而微软的WAS 是一个免费的测试工具,使用起来比较简单,但是由于不能显示和编辑所录制的测试脚本,其可控性和图形化测试结果都较弱,故造成一定的局限性。
LoadRunner是一款优秀的商业性能测试软件,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner可以使企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。因此本文中采用LoadRunner进行客户端的性能测试[2]。
2 测试环境和测试用例设计
考虑到系统的网络并发访问情况是否能够支持大量用户。当多用户并发访问时是否会造成用户响应速度过慢,系统崩溃等问题,决定选用LoadRunner8.0 作为测试工具。
测试系统结构如图1所示,其由LoadRunner、Web Server 和DM Server 组成。
首先在Web Server上运行Tomcat,并且登陆设备管理系统。
对于系统性能测试所设计的测试用例是多用户在登陆后同时提交某项请求,每个请求的信息量不相同,即文件大小不一,例如设备维修单的提交等情况。在LoadRunner 录制需要登陆的系统时,是把登陆部分放到vuser init中;把登陆后的操作部分放到Action中;把注销关闭登陆部分放到vuser end中[3]。
可以对维修单提交做以下情况的测试:
(1) 该系统已有100个维修单
20个用户并发提交
40个用户并发提交
60个用户并发提交
80个用户并发提交
(2) 该系统已有200个维修单
20个用户并发提交
40个用户并发提交
60个用户并发提交
80个用户并发提交
设定每组测试运行所用的时间为10分钟,用来测试JSP页面,测试20个、40个、60个、80个并发用户同时访问系统时,系统的运行状态。
具体细节描述:在测试服务器上运行设备管理系统,通过LoadRunner来调节虚拟用户的数量,依次为5,10,15……每次增加5个用户,记录系统响应时间,得到对应并发用户状态下软件的平均响应时间,分别做20个、40个、60个、80个并发用户的平均响应时间的记录。
3 测试结果分析以及系统瓶颈分析
根据以上实验测得的数据,此被测Web系统在100个和200个维修单状态下系统处理维修单所得到的平均响应时间,测试数据结果(单位:秒)分别如表1-2所示。
根据测试数据显示,随着并发用户数量的增加,系统处理维修单提交这项事务的平均响应时间变长。在相同并发用户数量情况下,系统已有维修单数目越多则系统响应时间越长。
通过对设备管理系统的部分功能进行性能测试发现,并发用户在30到50之间时,其性能指标是比较理想的,系统对于事务处理的响应时间比较及时。但是在多用户并发访问的情况下,一旦在线用户数量超过此峰值,而服务器响应时间开始变慢,已经不能保证正常工作,需要更新服务器硬件或者对系统进行优化。因此可以断定,服务器端数据库和CPU为系统瓶颈,如果对数据库进行优化,就能够为系统整体的性能带来较大的提升。
4 优化方案
通过测试分析,发现系统的瓶颈主要来自于数据库和服务器的资源不足。因此从以下3个方面对系统进行了改进,以提高系统整体的性能[4]。
(1) 服务器资源的优化。
因为IIS(网际网路资讯服务)可以从缓存中完成请求,所以扩充服务器内存,增大IIS 缓存空间,可以解决部分服务器资源不足的问题,提高访问速度。
(2) 数据库设计的优化。
对于经常执行的数据库操作,使用存储过程代替SQL语句,以减少操作规模和结果集合;选择合适的索引策略,避免使用光标处理等方法来提高数据库性能。
(3) 数据库连接管理的优化。
建议系统使用数据库连接池的方法访问数据库,这样一些数据库访问行为可以共享同一数据库连接,不但减少了频繁打开、关闭数据库连接的操作,而且可以控制当前激活的数据库连接总数,防止系统过载。
5 结束语
通过运用LoadRunner对一个实际运行的银行设备管理系统进行性能测试的实例,阐述了影响Web系统性能的关键因素,并以此为基础,通过模拟大量用户的不同操作行为,对Web系统的性能进行测试。通过分析测试数据发现系统的瓶颈,并进一步提出了系统的优化方案,其意义在于对其他Web系统的性能测试活动亦有一定的借鉴作用。
参考文献
[1]易文明.基于浏览器/服务器模式的设备管理信息系统的设计与实现[D].华中科技大学硕士学位论文,2006.
[2]蔡志.LoadRunner操作入门[EB/OL].无忧测试网http://www.51testing.com.
[3]刘艳会.LoadRunner使用手册[D].测试时代,2006,2:2-16.
应用程序 篇5
相信做纯WEB开发的PHP程序员都会想过,要是PHP能开发windows本地应用程序多好,于是上网一查找出来的很多都是“PHP-GTK”的老文章,这东西好像已经没人维护了,随便看了下,也就没去细研究了。前阵子折腾了node-webkit,这东西可以用javascript + chorme内核blink 开发本地应用,满足纯WEB程序员开发本地应用程序的梦想。node-webkit有几个优点:
1、内置blink内核,跟随google升级,支持现代浏览器特性,妈妈再也不用担心我的浏览器兼容问题了
2、内置nodejs,就是加强版的javascript,WEB程序员入手快,nodejs功能强大
3、入门级开发流程比较简单,没有太多看不明白的东西
4、跨平台,三大操作系统都可用
5、国人开源项目,现在在github上很热门缺点:体积太大。
写个hello wold,嗯,20M以上。试了不少压缩方法,最少的也要17M以上,头痛有道词典前阵子也开源了类似项:叫有道hex,但我比较看好node-webkit,社区更活跃更成熟。因为自己是PHPer,自然是写PHP才够酸爽,于是又在想其它解决方案。有没有一个绿色的php web server软件呢,这样可以把软件做成绿色版,不用特意去安装apache nginx之类的东西。功夫不负有心人,找到了一个叫QuickPHP的好东西,作者本意是想做个方便快速调式PHP脚本的工具,歪打正着,收下了。研究了一会,发现是delphi写的软件,用exescope处理下,修改几处文字和菜单,尽量不显示出这货是QuickPHP再用C++边学边开发,弄个简易的浏览器,其实就是生成一个窗体,里弄个IE控件上去。启动窗体的时候,用C代码启动QuickPHP,然后隐藏QuickPHP的窗体。(这里还有个问题没解决,否则就比较完美了,最小化后,隐藏托管栏上的图标很麻烦,winxp和win7处理方法还不怎么一样,自己C能力太差,先放弃优化)折腾两天,成果截图运行 localphp.exe可以看到效果其中php.ini和ext目录非必须,为了使用一些PHP扩展才加上除掉非必要的扩展目录(ext),剩下的文件打包压缩完就小几M,还算满意demo中的功能利用了js的异步请求,达到无刷新操作。当然你还可以优化css样式、禁止js报错、禁止复制文字、禁止右键菜单等手段让它看去更像客户端本身php就有很多可以控制操作系统的函数,再加上可以用exec()执行命令行代码,所以PHP能做的事情就很多了。除了以上提到的PHP能做的事,其实还是很想让PHP能调用系统里的dll文件,那就牛逼了。想像一下,用PHP找旺旺句柄、呼出旺旺聊友窗口、自动发送消息给旺旺好友,多美丽的场景...找了半天,发现两个扩展php_w32api.dll和php_ffi.dll,可惜好像都没有人维护了,新版的php都不能用。有兴趣有能力的同学,可以到php官方去找,优化一下,编译一份给偶用,万分感谢。总结一下,在这几天实现想法的过程中,受益颇多:
1、PHP居然只要一个php5ts.dll就可以运行,还有sapi是什么
2、C/C++其实也不是那么可怕,学进去还是挺有意思的3、办法总比困难多接下来想完善两块:第一、彻底隐藏web server服务器,即那个QuickPHP 或 者自己做个web server第二、完成用WEB控制旺旺发送消息功能。思路可以是
1、用PHP的扩展(如上面提到的w32api和ffi)来调用系统dll;
2、自己写PHP扩展,在扩展里实现发送旺旺消息功能;
免费应用程序带来潜在风险 篇6
报告指出,在免费应用程序的外衣掩护下,犯罪分子能够让个人用户下载带有侵入性权限的应用程序,最终达到帮助他们部署恶意软件的目的。免费应用程序的权限由广告软件“资助”,它会泄露个人信息,然后广告网络会借助这些信息投放有针对性的广告。但是,其中26% 的此类应用程序似乎并不仅仅是广告软件。事实上,短信诈骗和刷机攻击是最常见的威胁类型之一,涵盖各种应用程序。
大多数个人用户根本不了解,甚至不关心自己所同意的应用程序权限。所以,网络犯罪份子能够越来越猖獗地利用应用程序权限,作为一种投放移动恶意软件的高效方式。同意这种权限后,就代表移动个人用户心甘情愿地将自己的个人信息交到了假扮成广告网络的犯罪份子手中,给骗子打开了一扇永不关闭的方便之门。
刷机软件:
在中国前十大恶意软件应用程序中有 6 个属于刷机软件。用户将设备刷机后,可以自定义操作、对显示进行个性化设置或安装不受支持的软件。对设备执行刷机,用户可以摆脱设备制造商或运营商设定的设置限制。但是,刷机也给犯罪份子入侵设备带来了更多方便。
中国个人用户成为了善于攻击已刷机设备的恶意软件的最佳目标。从数量上看,中国是遭受以下全部前五大最常见刷机攻击最严重的国家: DiutesEx(两个版本)、LVedu(3 个版本)、TattoHack、ExymemBrk 和 VoldBrk。这些应用程序中,许多都会收集个人详细信息并秘密安装下载程序,以便在已刷机的设备上安装间谍软件、刷机恶意软件、后门或僵尸网络软件。
短信诈骗:
该报告还显示,在中国,40% 的严重威胁都涉及短信诈骗。短信诈骗受害者会为不容易被发现的收费短信而多付费用。恶意软件会指示被感染的设备发送短信或接收某个收费 SMS 号码发出的短信。最隐匿的恶意软件会悄无声息地拦截确认回复和短信本身。用户通常只能在查看他们的话费单或者发现他们的预付费不翼而飞时,才会意识到他们遭到了短信诈骗的攻击。短信诈骗所得来的钱财会直接付给应用程序开发者,更有甚者,它可能带来更具侵入性的危险。
而TNS 和迈克菲在 2013 年联合开展的研究也发现,95% 的中国智能手机用户在使用带有支付功能的应用程序。这些用户中有 84% 的用户会在多个账户和设备上共用一个 PIN 码,45% 的用户会将密码保存在智能手机或平板电脑中。这些数字表明,中国用户习惯将大量的财务和个人信息保存在移动设备上。如果对这些设备保护不当,这些用户可能会面临财务和个人数据被盗以及被图谋不轨的开发者攻击的风险。
Box
迈克菲构建下一代防火墙
7 月 9 日,迈克菲完成其5月6日所宣布的对 Stonesoft Oyj 的要约收购,这标志着这一交易达到了一个重要里程碑。 Stonesoft 创新的高性能技术可满足当今和未来分布式企业的需求,它的世界级下一代防火墙在 Gartner 企业网络防火墙魔力象限中位居“远见者”象限。随着要约收购的完成,Stonesoft 已成为迈克菲集团所属公司,所有 Stonesoft 的产品和技术都将纳入迈克菲产品体系。
根据 Gartner 的研究,未来五年,企业网络安全设备市场的年复合增长率( CAGR )预计为 7.0%,到 2017 年将达到 114 亿美元。凭借 7200 多名员工对安全事业的全心关注,迈克菲在网络安全市场拥有雄厚的实力。随着 Stonesoft 的加入,可以预见,迈克菲将迅速成为企业防火墙技术领域的领先提供商。由于 Stonesoft 的产品能够与迈克菲广泛的产品系列相整合,客户可以从迈克菲的安全互联( Security Connected )战略中获益匪浅。
苹果应用程序商店为何走红 篇7
据苹果公司宣布, App Store目前的程序为1.5万个, 6个月的下载量已达5亿次, 仅从这个无形的商店中, 苹果平均每天就能够获得超过100万美元的现金流。App s tore模式彻底改变了人们使用手机的方式, 使手机变成可定制并拥有各种工具的随身设备;而对于手机经营者来说, 改变了整个经营的概念和方向———实现了手机行业从封闭向开放的根本转变;对于数以万计的开发者来说, 应用程序商店让手机变成了新的PC。
App Store一路高歌并非偶然。首先, APP Store的成功, 得益于全球智能手机的快速发展。相关的数据表明, 2008年智能手机的销售呈现强劲的上升势头, 第二季度智能手机销量占据全球手机市场的19%, 比2007年同期增长了9%。智能终端广泛使用, 催生了手机用户对个性化的追求, 必然会导致手机软件需求的增长。其次, APP Store充分满足了用户日益增长的体验需求。3G时代是移动互联网的时代, 用户体验将决定产业链各企业的命运。过去, 手机软件只能通过手机厂商或者运营商预装在手机里, 用户没有自主选择的权利。APP Store的出现改变了这种状况, 用户可以根据自己的需求和喜好自主选择软件, 用户的体验感大大提升。再次, App Store秉承了苹果独到的运营模式。无论是App Store还是i Tune s, 我们都可以清晰地看到“内容+服务”这种运营模式的影子。也就是这种通过连接后台与前端的模式, 让苹果能够将通信业的传输功能、软件的开发功能和互联网的服务相融合, 从而找到了一种能够颠覆传统产业链秩序的力量。
APP Store是苹果公司为iPhone手机用户提供的手机应用程序销售平台, 基于此平台, 软件开发者可以上传基于i Phone的各式应用软件, i Phone手机用户则可以通过付费方式自由地享用这些软件。最初, APP Store只是苹果公司的一个产品, APP Store被定义为“应用程序商店”, 只能销售经过苹果公司审核和认可的应用程序, 它并不是一个真正开放的软件销售平台。时至今日, 在竞争对手的争相效仿下, APP Store已经升华为一种模式。
从APP Store的成功中, 众多的厂商看到了未来, 从诺基亚的Ovis tore、三星的Mobile Applications到微软的Window s Sky Marke t, 再到谷歌的Android Marke t, 不同的名称, 却近乎同质的产品, 诺基亚和微软们如此心照不宣而又动作齐整的行为, 让我们感受到了产业链变革的萌动。随着全球移动网络由2G向3G的不断演进, 相信在不久的将来, APP Store模式下催生的不同软件销售平台将会展开一场激烈的角逐。
Web应用程序测试研究 篇8
1测试内容
与传统应用相比,Web应用具有多用户,高并发,跨平台等特点。Web应用体系结构示意图如图1所示,Web应用具有多层体系结构,各层之间依赖关系非常复杂,使得每层内和各层间都有可能发生故障。
由于诸多问题的存在,我们可以从以下几个角度来详细探讨Web应用测试内容:
1.1功能性测试
Web系统核心部分是功能,每个功能形成整个系统的骨架和血肉,我们分别从以下几种常见元素来进一步讨论Web应用功能测试:
1) 表单:随着Web2.0的到来,Web系统的交互要求越来越重要,我们每天使用应用所要提交的表单不计其数,因此,检查表单的填写和提交操作是否正常,所有字段是否能够接收输入的内容必不可少,同时,字段格式的准确验证也是不可忽视的方面。
2) 文件操作和计算:绝大多数的Web系统都提供了包括文档和图像的上传、编辑、计算功能和正确的输入值。这方面,我们要做的就是保证文件在操作过程中给用户提供一个更加流畅的用户体验。
3) 搜索:信息时代来临,在海量的数据中如何精确地获取所需信息,是对搜索功能极大地考验。保证应用搜索所获取的信息的有效性,同时也要保证搜索的效率。
4) 媒体播放组件:测试音频、视频、动画和互动媒体播放组件(如游戏和图形工具)的时候,要确保这些组件在运行过程中,不会影响(暂停或减缓)其他应用的运行。
5) 脚本和类库:确保脚本(比如图像显示或Ajax页面加载) 在各种浏览器之间是相互兼容的,因为不同的用户可能会使用不同的浏览器访问你的应用,同时可以测量不同浏览器的加载时间来进行性能优化。
1.2用户界面和可用性测试
1) 导航:导航往往存在于用户登录应用的首页,保证导航在用户容易查看的位置,突出导航链接和返回首页的链接,同时,应该保证每个链接指向正确的目标页面。
2) 可访问性:每个应用都要面对不同的使用人群,尽最大可能地确保Web应用易于操作、使用,简易的使用步骤是最受欢迎的。
3) 跨浏览器测试:用户可能会从多种浏览器和操作系统访问站点,尽可能多地测试这些浏览器和操作系统组合,确保在不同环境下尽量显示同样的效果,保证Web应用能够按照计划运行,为更广泛的用户提供一致的体验。
4) 错误消息和警告信息:Web应用错误很多情况下是不可避免的。我们要做的是当用户遇到例如404页面或无法编辑信息时,保证应用程序显示描述性的信息,帮助用户解决问题。
5) 帮助和文档:并不是所有的用户在使用系统时都很流畅,作为应用重要部分,必要的帮助文档,有助于用户更好地使用Web系统,因此要保证在关键或必要的模块给予帮助说明。
6) 布局:良好的布局可以给用户带来友好地操作体验,因此保证布局符合人们最普遍的操作习惯。
1.3数据库测试
对数据库的测试主要集中在运行阶段。一般情况下,注重数据库操作的响应时间、数据存储的完整和数据库系统的容错。
1.4安全性测试
用户在访问Web应用过程中,应用通过表单或操作行为存取大量的个人信息,保证用户个人数据安全尤为重要。
1) 加密策略:目前普遍的方式是对私人数据进行加密,主要针对用户密码的加密。采用MD5算法,可以有效地保证密码安全程度,同时避免了系统加密过程的开销。
2) 权限控制:保证对所有用户分配角色,同时要对每个角色精确地分配功能和数据访问、操作权限,避免数据遭到破坏。
3) 跨站脚本:当一个网站被以诱骗的方式接受了恶意代码,它就会向用户传播这个恶意代码。
4) SQL注入:如果黑客通过一个用户输入漏洞运行一段SQL命令,就会导致用户数据遭到损坏或被窃。这些情况通常发生的原因是:Web应用允许在SQL命令或系统命令中使用特殊元素。
5) DDo S(分布式拒绝服务)攻击:DDo S攻击是指攻击者通过傀儡主机,消耗攻击目标的计算资源,阻止目标为合法用户提供服务。
1.5加载测试
开发初期,应用主要是开发人员和应用需求人员。Web应用正式启用后,用户人数增多,系统运行就会变慢。因此,当我们进行加载测试环节时,需要测试你的应用和服务器环境,以确保在不管有多少用户登录的情况下产品都能够顺利运行。
2测试过程
Web测试过程虽然复杂,相较传统测试技术差别很大,但仍可采用以下测试技术。
2.1设定目标
每个Web应用存在都是为实现一个现实需求,无论测试技术如何进步发展,最终目的都是围绕更好地满足业务需求。测试伊始,要明确系统所要实现的功能需求目标。比如,论文审稿系统就要满足当前单位日常处理稿件的业务,学生成绩管理系统便是用来管理学生的成绩等。
2.2定义流程和使用案例
Web应用开发是在明确业务流程的基础上,抽象出系统流程,利用计算强大的数据处理能力来完成我们日常生活中靠人工来完成的事情。因此,Web应用源头是业务抽象,它的每个环节都是日常工作中业务流程的替代。我们首先要明确定义业务流程,即在没有计算机的情况下,人工来完成这项任务所要必需的流程。这个过程可以采用UML活动图方式来规范整个过程。
2.3设定测试环境
我们测试的目的是保证应用能够在我们真实的环境中正常运行,因此,测试环境要保证和系统运行环境一致。保证及时处理测试过程中出现的问题,最大化降低系统上线后出现问题的风险。
2.4真实的单元测试
在进行单元测试时,我们可以使用Flow项目(一个致力于在线任务管理和协作的应用)。在大多数的Web应用测试过程中,困难是难以想象的,有可能要花一个星期的时间进行整体测试。我们可以将整个应用分解成可管理的几个模块进行测试。在Flow项目中可以使用一个列表标记每个用户在应用中进行交互的位置,以及它的一般形式和功能。这种模块化列表,可以添加或删除一些项目,或者在开发过程中发生变化的项目进行标注,从而实现单元测试的目的。
2.5验证代码
在获取Web应用源码的前提下,可以通过验证W3C标准来验证应用实现采用的代码的标准化。符合W3C标准的代码可以提高浏览器兼容性,提高应用运行效率
2.6加载测试和性能测试
随着互联网通信技术的发展内涵,网络基础设施不断完善,给我们带来更加便捷地使用体验。Web应用的加载速度和性能是评价一个应用好坏的重要指标。测试Web应用加载速度,可采用百度的应用性能监测中心(APM)。性能瓶颈主要出现在用户在某一时间段内数量激增的情况,我们可以采用Loadrunner进行压力测试。
2.7安全性测试
最后,测试Web应用以确保它能够对抗黑客的恶意攻击。 国内外比较出名的安全性测试工具有IBM公司开发的AP-PSCAN和惠普公司开发的Web Inspect。
3测试工具
目前自动化测试工具多种多样,下表列举Web应用测试过程中普遍用到的自动化测试工具。
4结束语
纽交所创新移动应用程序 篇9
美国纽约证券交易所(简称“纽交所”)就属于后者。移动银行专家透露,纽交所正在进行一项移动应用测试,该应用是基于增强面向定位服务的现实以及与之匹配的数字水印。“采用多媒体内容来打印报告。”明尼阿波利斯银行也“依靠各种研究方法,思考如客户如何使用现有技术以及境外银行如何接受新技术等问题。现有系统已被察觉出有一定缺陷,因此可以轻易地通过创新给用户造成最小的干扰。”
就数字水印来说,美国纽交所似乎是一个先驱。该应用使用了QR码技术以增强报告打印技术。
“银行目前是与Digimarc Discover在线服务门户网站合作来嵌入水印,或使用可被智能相机检测的代码来开展相关应用。这些应用包括视频、在线研讨会、图表和照片等。数字内容可以像营销计划和其他措施那样全面更新,以使企业的报告更加灵活。”
应用程序 篇10
鉴于设备驱动程序通知应用程序的重要性, 本人结合一些经验, 对它进行了总结, 归纳出5种方法:异步过程调用 (APC) 、事件方式 (VxD) 、消息方式、异步I/O方式和事件方式 (WDM) 。下面分别说明这几种方式的原理, 并给出实现的部分源代码。
1 异步过程调用 (APC)
Win32应用程序使用CreateFile () 函数动态加载设备驱动程序, 然后定义一个回调函数backFunc () , 并且将回调函数的地址&backFunc () 作为参数, 通过DeviceIoControl () 传送给设备驱动程序。设备驱动程序获得回调函数的地址后, 将它保存在一个全局变量 (如callback) 中, 同时调用Get_Cur_Thread_Handle () 函数获取它的应用程序线程的句柄, 并且将该句柄保存在一个全局变量 (如appthread) 中。当条件成熟时, 设备驱动程序调用_VWIN32_QueueUserApc () 函数, 向Win32应用程序发送消息。这个函数带有三个参数:第一个参数为回调函数的地址 (已经注册) ;第二个参数为传递给回调函数的消息;第三个参数为调用者的线程句柄 (已经注册) 。Win32应用程序收到消息后, 自动调用回调函数 (实际是由设备驱动程序调用) 。回调函数的输入参数是由设备驱动程序填入的, 回调函数在这里主要是对消息进行处理。
2 事件方式 (VxD)
首先, Win32应用程序创建一个事件的句柄, 称其为Ring3句柄。由于虚拟设备驱动程序使用事件的Ring0句柄, 因此, 需要创建Ring0句柄。用LoadLibrary () 函数加载未公开的动态链接库Kernel32.dll, 获得动态链接库的句柄。然后, 调用Get ProcAddress () , 找到函数Open VxDHandle () 在动态链接库中的位置。接着, 用OpenVxDHandle () 函数将Ring3事件句柄转化为Ring0事件句柄。Win32应用程序用CreateFile () 函数加载设备驱动程序。如果加载成功, 则调用DeviceIoControl () 函数将Ring0事件句柄传给VxD;同时, 创建一个辅助线程等待信号变成有信号状态, 本身则可去干其它的事情。当条件成熟时, VxD置Ring0事件为有信号状态 (调用_VWIN32_SetWin32Event () 函数) , 这马上触发对应的Ring3事件为有信号状态。一旦Ring3事件句柄为有信号状态, Win32应用程序的辅助线程就对这个消息进行相应的处理。
3 消息方式
Win32应用程序调用CreateFile () 函数动态加载虚拟设备驱动程序。加载成功后, 通过调用DeviceIoControl () 函数将窗体句柄传送给VxD, VxD利用这个句柄向窗体发消息。当条件满足时, VxD调用SHELL_PostMessage () 函数向Win32应用程序发送消息。要让该函数使用成功, 必须用#define来自定义一个消息, 并且也要照样在应用程序中定义它;还要在消息循环中使用ON_MESSAGE () 来定义消息对应的消息处理函数, 以便消息产生时, 能够调用消息处理函数。SHELL_PostMessage () 函数的第一个参数为Win32窗体句柄, 第二个参数为消息ID号, 第三、四个参数为发送给消息处理函数的参数, 第五、六个参数为回调函数和传给它的参数。Win32应用程序收到消息后, 对消息进行处理。
4 异步I/O方式
Win32应用程序首先调用CreateFile () 函数加载设备驱动程序。在调用该函数时, 将倒数第2个参数设置为FILE_AT-TRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, 表示以后可以对文件进行重叠I/O操作。当设备驱动程序文件创建成功后, 创建一个初始态为无信号、需要手动复位的事件, 并且将这个事件传给类型为OVERLAPPED的数据结构 (如Overlapped) 。然后, 将Overlapped作为一个参数, 传给Device Io Control () 函数。设备驱动程序把这个I/O请求包 (IRP) 设置为挂起状态, 并且设置一个取消例程。如果当前IRP队列为空, 则将这个IRP传送给StartIo () 例程;否则, 将它放到IRP队列中。设备驱动程序做完这些工作后, 结束这个DeviceIoControl () 的处理, 于是Win32应用程序可能不等待IRP处理完, 就从DeviceIoControl () 的调用中返回。通过判断返回值, 得到IRP的处理情况。如果当前IRP处于挂起状态, 则主程序先做一些其它的工作, 然后调用WaitForSingleObject () 或WaitForMultipleObject () 函数等待Overlapped中的事件成为有信号状态。设备驱动程序在适当的时候处理排队的IRP, 处理完成后, 调用Io CompleteRequest () 函数。该函数将Overlapped中的事件设置为有信号状态。Win32应用程序对这个事件马上进行响应, 退出等待状态, 并且将事件复位为无信号状态, 然后调用Get OverlappedResult () 函数获取IRP的处理结果。
5 事件方式 (WDM)
Win32应用程序首先创建一个事件, 然后将该事件句柄传给设备驱动程序, 接着创建一个辅助线程, 等待事件的有信号状态, 自己则接着干其它事情。设备驱动程序获得该事件的句柄后, 将它转换成能够使用的事件指针, 并且把它寄存起来, 以便后面使用。当条件具备后, 设备驱动程序将事件设置为有信号状态, 这样应用程序的辅助线程马上知道这个消息, 于是进行相应的处理。当设备驱动程序不再使用这个事件时, 应该解除该事件的指针。
6 结语
在目前流行的Windows操作系统中, 设备驱动程序是操纵硬件的最底层软件接口。它向上提供与硬件无关的用户接口, 向下直接进行I/O、硬件中断、DMA和内存访问等操作。它将应用程序与硬件细节屏蔽开来, 使软件不依赖于硬件并且可在多个不同的平台之间移植。本文介绍了5种设备驱动程序通知应用程序的方法, 其中前3种方法主要用于VxD中, 后2种方法主要用于WDM。这5种方法都经过实际测试。测试结果表明, 它们都能够达到设备驱动程序通知应用程序的目的。
参考文献
[1]欧青立, 徐建波, 李方敏, 等.虚拟设备驱动程序VxD的研究与开发.计算机工程, 2003
[2] (美) Chris Cant.Windows WDM设备驱动程序开发指南.孙义, 马莉波, 国雪飞等译.北京:机械工业出版社2000
49款出色的移动应用程序 篇11
操作系统
安卓(谷歌)
黑莓操作系统(RIM)
iOS(苹果)
Windows Phone 7(微软)
该图标表明“针对平板电脑作了优化”
跟踪一切
Locale
4美元
Locale让你可以创建基于位置的任务。比如说,你可以做到回到家后,让手机开启无线网络;或者到工作单位后,让手机自己静音。它是让自动处理小任务的好办法,可以为你另外节省几分钟,还避免了正在开会中你的手机突然铃声大作的难堪。
Omnifocus
20美元
Omnifocus是所有任务管理器应用程序的开山鼻祖,价格也许有点贵,但可以帮助完成任务。它尤其擅长管理成群的人。你可以按人、地方或账单到期日来组织管理任务。Omnifocus很适合组织管理家庭事务或集体项目。
Springpad
免费
针对你想看的电影、想买的图书或者仅仅是想记住的大事,Springpad都可以做笔记、设置提醒。它还很适合把购物清单汇总起来:你可以迅速创建核对表、扫描条形码,随时跟踪将来要购买的物品。
Wunderlist
免费
Wunderlist可以在所有设备之间同步计划任务列表(to-do list),那样你总是不会落了任务。万一你没有每天在用Wunderlist,任务的最后期限快到时,该应用程序还会发邮件提醒你。
自娱自乐
Minecraft Pocket Edition(《我的世界》口袋版)
7美元
你在外出时需要消磨时间时,再也找不到比《我的世界》口袋版更好玩的游戏了。虽然该版本缺少桌面版里面的生存模式(Survival Mode),但是其创造模式(Create Mode)让你可以随心所欲地采矿和建造。
Reckless Racing(《狂野时速》)
1美元
Reckless Racing是面向移动设备的画面最漂亮的赛车游戏之一,它有众多赛道可供选择,一些赛道有隐藏的捷径(你知道的话,那是个巨大优势)。之后,一旦你提高了车技,就可以邀请朋友和陌生人一起玩在线多人玩竞赛,瞧瞧谁到底是最狂野的赛车手。
Showyou
免费
如果你在外出时喜欢看网上视频,Showyou很快就会成为你青睐的应用程序。它可以从不同地方(如CollegeHumor和Devour等网站)获取视频,然后在可以浏览的网格视图上显示。如果你找到了一段特别喜近的视频,还可以共享到社交网络上,或者仅仅将它保存起来,在你觉得比较方便的时候欣赏。
Songify
免费
Songify娱乐大众的方式是可以将你说的话变成自动调整声音的歌曲。你可以设置不同的节拍,还可以从应用程序内的商店购买新的节拍。该应用程序的灵感源自Gregory Brothers的杰作,这支乐队制作了YouTube上的几段热门视频,比如《房租他太妈高》和《不能抱每一只猫》。
StumbleUpon
免费
StumbleUpon让你可以在网上“频繁地变换频道”,查找对你胃口的内容。你列出自己感兴趣的主题,该应用程序就会推荐相应的网站。在安卓设备上,它甚至还可以根据你已经安装的应用程序来推荐别的应用程序。
Toddler Lock
免费
提醒:你家的小孩子最终还是会搞到你的手机,乱搞破坏。解决办法:Toddler Lock既能让小孩子玩乐,又能防止孩子破坏手机里面的重要内容。它让孩子可以在手机屏幕上涂涂画画,发出好玩的声音,同时让孩子无法接触手机里面的设置、数据和电话号码等。
博客、推特和Tumbl
IMO Chat Instant Messenger
免费
如果你有好多朋友在使用不同的即时通信(IM)服务,你又不想在不同的IM应用程序之间换来换去,IMO Chat无异于天赐之物。它可以连接到AIM、Facebook Chat、GTalk和Yahoo(及另外几项IM服务);它还允许你可以同时登录到多个帐户上。IMO Chat很适合与同事通过GTalk聊天,同时通过Facebook跟朋友打招呼。
Tumblr
免费
对经常使用发布和共享网站Tumblr的人来说,这款应用程序必不可少。不管你人在哪里,它都让你可以随时写博客。你可以上传照片、视频和声音,或者创建帖子内容,就好像你在该网站上那样。
Tweetcaster for Twitter
免费
Tweetcaster是一款五彩斑斓、卡通式的应用程序,让你可以更新和查看自己的推特和Facebook帐户。如果你的某个朋友喜欢同时成批发送几百条推特消息,你可以暂时隐藏那些推特消息,直到觉得合适时再取消隐藏。该应用程序还可以为你显示关于当地发生的事件的推特消息。
Wordpress
免费
这款应用程序让你可以通过移动设备管理多个博客。你可以查看博客评论,制作新的帖子或页面,甚至获得关于访客数量的统计信息。如果你设有几个网站,需要查看它们,这款应用程序来得特别方便。
保护手机
Loky
5美元
如果你在手机上存有机密数据,Loky就能确保这些信息的安全。该应用程序受密码保护,你可以用它来存储重要文档、泄露内情的短信或者作为罪证的照片。Loky甚至还能将你的登录情况记入日志——该记录可以帮助你知道是否有人企图获取你的私密数据。
Lookout Pro
每月3美元或每年30美元
Lookout Pro是一款实用的应用程序,面向任何安卓或iOS智能手机,可以保护手机远离恶意软件和网络钓鱼骗局;要是设备果真不知去向,可以跟踪设备;万一你找不回手机,还能远程备份信息。
My Backup Pro
5美元
我们总是被告知要备份个人电脑上的数据,但手机上的数据又如何呢?My Backup Pro可以将整个设备上的内容:应用程序数据、照片、联系人资料及更多内容备份到SD卡或远程服务器上。如果你的手机摔坏了或者内置存储器受损,可以通过备份在SD卡上的资料来进行恢复,继续正常使用。如果你的手机失窃或者SD卡出了问题,你也可以使用服务器备份来恢复数据。
Webroot Secureweb
免费
该应用程序是款移动浏览器,起到为你守护的作用。它会标出谷歌搜索结果中的哪些网站可以安全访问;当你访问企图窃取个人信息的网站时,它还会提醒你。
为网购达人省钱
Amazon Mobile
免费
该应用程序有条形码扫描工具及其他价格比较工具,对精明的网购达人来说必不可少。
Browsing For Etsy
免费
可以把iPad变成购买古旧货和手工艺品时的最佳伙伴。只要针对价格或颜色进行过滤,就可以搜遍Etsy网站上目录种类繁多的商品。(只面向iPad)
ShopSavvy Barcode Scanner
免费
ShopSavvy可以把你的手机变成最佳的条形码扫描工具。可以扫描产品上UPC、EAN和QR等格式的条形码,查明某家商店的价格,然后与其他商店或网站的价格作一比较。如果你在网上看到比店内更优惠的价格,可以直接通过ShopSavvy应用程序来购买。
拍出更漂亮的照片
Camera+
1美元
iPhone 4S的摄像头较之前一代产品有了改进,但是仍缺少一些高级功能。Camera+弥补了美中不足:它汇集了众多有用的拍摄和编辑工具,比如高级数字变焦镜头、照片增亮工具、触摸式曝光、对焦控制和防抖系统。
Camera 360
免费
这款功能强大的相机应用程序要花一段时间才能学会;但一旦你熟悉了用法,就能拍出一些非常出色的照片。你可以为照片添加相框或背景,还可以运用滤镜,比如Lomo、复古(Rtro)和高动态范围(HDR)等滤镜。
Lightbox
免费
Lightbox是安卓针对iPhone版Instagram应用程序而开发的:拍好照后,软件会将照片自动上传到你的Lightbox在线帐户。你可以为照片添加滤镜,如Lomo、黑白或其他复古式样的滤镜,不过可供使用的滤镜数量有点少。
MagicHour
2美元
借助MagicHour,你只要从40种照片滤镜(包括Emo 滤镜和明信片滤镜等)当中进行选择,就可以将所拍照片变成艺术品。还可以下载更多的滤镜(免费),或者自行制作滤镜。
Picplz
免费
Picplz是Instagrm之外的一个选择,它同样让你能够为所拍照片运用滤镜,将那些照片上传到Facebook或推特上。你可以关注其他Picplz用户,把自己喜爱的照片添加到照片库。Picplz会吸引喜欢在网上晒照片、与他人分享的摄影迷。
PowerCam
限时免费
去年12月2日,这款基于iOS平台的拍照/录像类应用 PowerCam登陆苹果App Store。限免一周以来,下载量已经突破百万大关(截止1月11日消息,下载量已经突破300万次。)PowerCam兼具拍照与录像功能,集众多独特并拥有自主知识产权的功能,更有数十种风格特效,甚至录像亦能实现特效,是一款名副其实的拍照/摄像“全能战士”! PowerCam会陆续推出更多增强型功能,致力于为全球用户呈现最好的拍照和录像类应用体验。目前适用于iOS平台,Android版本将于近期推出。
万事通
Articles
3美元
Articles对维基百科作了整理,酷似一叠报纸。虽然Articles只允许你搜索维基百科,但是它的确让你可以同时打开多个维基百科页面。这种安排让你不必再次搜索原始文章,就能够从一篇文章迅速跳到另一篇文章。
Dictionary.com
免费
这款应用程序最适合无法容忍拼写错误的人,可以帮你确保根本不会又拼错单词。它还能大声朗读单词(万一你不知道怎么发音),另外还有一个主题词表模式。
The World by National Geographic
4美元
这款出色的应用程序针对iPad作了优化,可谓是现代版的旋转地球仪。转动地球仪,按一下某个国家,立马就能通过美国国家地理频道的图片库领略视觉之旅。(只面向iPad)
Wikipanion
免费
Wikipanion对维基百科的文章作了格式编排,那样它们在手机或平板电脑的屏幕上可以更好地显示。该应用程序还支持其他维基;如果你喜爱的某个维基不在其中,可以要求开发商添加上去。Wikipanion可以使用你当前的位置查找关于附近地方的维基百科文章——你在旅行时,这项功能特别有用。
Wolfram Alpha
2美元
Wolfram Alpha提供的信息要比简单的谷歌搜索丰富得多。该应用程序既可以帮你平衡化学反应,还能帮你求解高等三角学问题。如果这些不是你感兴趣的,可以用它来搞清这个问题:如果土拨鼠能抛木头的话,那么一只土拨鼠能抛多少木头?
管理钱财
Groupon
免费
可以直接通过手机来购买、管理和换现Groupon优惠券。Groupon的这款移动版还让你可以与朋友共享Groupon优惠,那样你们都能团到那顿美味无比的比萨饼自助优惠券。
Milebug
2美元
MileBug对商务旅行人士和常坐飞机的人士来说是款必不可少的应用程序,可以帮你跟踪因公和因私旅行的路费。打开GPS跟踪功能,该应用程序就会准确记录你跑了多少路程,然后把这路程换算成具体金额。
PageOnce Money and Bills
免费
PageOnce让你可以支付账单、随时了解账户明细、立即查看最近购物和存款的情况。你还可以设定账单到期时实时提醒,那样永远不会错过重要的还款日期。
安排假期
Google Translate(谷歌翻译)
免费
尽管你在德国念了四年的高中,只听各种各样的《罗塞塔石碑》教学磁带,可是当你终于来到慕尼黑,想用德文表达“洗手间”的意思时,脑袋一片空白。这时候Google Translate就能救场:输入或说出一个英文单词,马上就能得到30多种语言的译文。
Hipmunk
免费
找到对你假期来说最合适(同时最省钱)的航班可能很繁琐。但是Hipmunk可以为你分忧。该应用程序可列出按时间表排列的航班,还可以按麻烦程度对它们巧妙地进行分类,考虑到了你的旅行时间有多长、途中停靠几站。
Kayak
免费
就假期安排而言,Kayak可谓是一站式应用程序:订机票、租汽车、找酒店以及跟踪航班。Kayak同时可以比较数百个旅行网站,那样你就知道自己的行程是最经济实惠的。
Localicous
免费
Localicous依托白页数据库(White Pages),让你能够了解附近最好的餐馆、酒吧、商店、美发店及更多场所。它可以通过集成的Foursquare服务,自动检测你目前人在哪个地区,还能显示目前人气最旺的地方。
Postcard on the Run
免费
你从正在度假的热带地区向亲朋好友发送数字相片很好,但是发送定制的明信片要酷得多。借助Postcard on the Run,你就能立即将用iPhone或安卓手机拍摄的附有本人问候的旅行照片,寄到世界上任何一个地址,这是货真价实的明信片。虽然该应用程序可免费下载,但是要为邮寄服务另外支付邮费,每张明信片的邮费从0.99美元到1.69美元不等。
TeleNav
收费版本每年10美元
Google Maps(谷歌地图)也许是最佳导航应用程序之一,但iPhone和黑莓用户享受不到道路转弯指示功能。这时,TeleNav应运而生:它提供了这种指示功能。它还可以帮你找到附近哪里的油价便宜、找到当地餐馆以及查看3D地图。
健康塑身
Calorie Counter
免费
Calorie Counter可以跟踪你进食了哪些东西,甚至建议有益于健康的食谱,让你远离含大量脂肪的快餐食品。该应用程序先向你提出一连串问题,确定什么样的节食方案适合你。
Drinking Water
免费
你平时喝多少水对于减肥大有关系。但是你可能很难记得每天都喝八杯水。该应用程序可以显示你已喝了几杯水,还有几杯水要喝,因而让你容易满足这个要求;它甚至通过图形的方式,表明你有多少次满足了饮水量方面的目标。
Endomondo Sports
免费
无论你喜欢打棒球、跳舞还是玩定向赛跑,Endomondo Sports都能帮助你随时了解身体活动。它会显示你的活动持续了多久、(距离方面)跑了多远以及已经燃烧掉了多少热量。
iMapMyFitness
免费
iMapMyFitness使用GPS来跟踪你的健身活动,比如跑步或骑单车。你可以记录每次锻炼的距离、步速、持续时间、速度、坡度和燃烧的热量。你还可以把自己的健身数据上传到MapMyFitness.com,邀请朋友来一场虚拟比赛。
Workout Trainer
免费
Workout Trainer用上几周应该会让你感觉身体很好。该应用程序邀请你在强度和时间长度不同的健身项目进行选择。你在锻炼时,Workout Trainer会给予建议,不断激励。你可以通过Skimble.com(该应用程序的来源)来跟踪进度,与朋友及其他Skimble用户比试一下。
吃得更健康
Allrecipes.com Dinner Spinner
免费
该应用程序让你可以按菜肴种类、原料和所需的“准备”时间来寻找菜肴。不过,Shake for Ideas功能是其亮点:你摇一摇手机,就能得到随机选择的一系列菜肴和原料。
How to Cook Everything
5美元
这款应用程序基于《纽约时报》专栏作家Mark Bittman的同名著作《如何烹饪一切》,为你提供了大约2000道菜谱,外加简明扼要的烹饪建议、教你怎样做的插图、原料信息、内置定时器以及井然有序的选购清单。注意:素食者可以改而选择价格一样的How to Cook Everything Vegetarian应用程序。
Whole Foods Market Recipes
免费
在Whole Foods应用程序中,你能找到使用现成食材的有创意的菜谱,可以通过一目了然的界面来观赏,附有营养方面的信息。饮食方面有限制?没问题。你可以按菜系或食物类型(三明治、汤、开胃菜和配菜等)来搜索不含麸质、脂肪含量低的素食菜谱。
网上有更多内容
应用程序 篇12
规则引擎是目前Java应用的一个热点, 当我们的系统存在大量商业规则时, 比如金融、保险、电信计费以及机场管理等系统, 我们可以使用规则引擎。规则引擎可以让系统变得更简单, 因为无需在代码中编写商务逻辑。规则引擎是一种嵌入在应用程序中的组件, 实现了将业务决策与应用程序代码分离, 并使用比较简单的语义模块编写业务决策。
1 规则引擎运行原理
规则引擎起源于专家系统, 规则引擎分为规则库、工作内存、推理引擎3部分。推理引擎细分为模式匹配器、议程、执行引擎3部分。规则引擎运行机制如下:
规则引擎通过快速检索工作内存的对象与加载到其中的规则库中的各项规则前提进行匹配, 激活符合条件的规则, 放入冲突集中。冲突集中的规则通过规则优先权等因素的制定, 排序生成议程, 从而使优先级高的规则被第一个触发。规则执行后, 规则的后件执行部分会改变加载到工作内存中的事实对象信息, 使议程中一些激活的规则的前提条件不再得到满足, 必须从议程中撤销, 反之又有新的规则被激活加入议程中。
2 基于Java规则引擎的系统结构设计
三层结构是目前Web程序常用的结构, “三层”是指表现层、中间业务层、数据访问层。 (1) 表现层:位于最外层 (最上层) , 离用户最近。用于显示数据和接收用户输入的数据, 为用户提供一种交互式操作的界面。简单的可以用HTML语言实现, 复杂的可以用ASP.NET、Ajax等实现; (2) 中间业务层:负责处理用户输入的信息, 或者将这些信息发送给数据访问层进行保存, 或者调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对“商业逻辑”描述代码在里面。“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来, 形成一种业务规则; (3) 数据访问层:仅实现对数据的保存和读取操作。数据访问, 可以访问数据库系统、二进制文件、文本文档或是XML文档。可以用ODBC、JDBC来访问数据库。如果在系统的中间业务层, 用到了大量的形如if-then的规则, 当需要在大量的数据上应用复杂的规则时, 规则引擎技术特别有用, 在保险业和金融服务业都广泛地使用了基于规则的编程技术。所以, 在中间业务层适于采用规则引擎来实现。
3 JBoss Rules规则引擎的描述
JBoss Rules是一种开源的商业规则引擎, 它的前身是一个名为Drools的开源项目, Drools是为Java量身定制的基于Rete算法的规则引擎。JBoss Rules可以作为插件的形式集成到当前最流行的Java开源开发环境Eclipse下, 免费且开发界面友好。Drools被设计为允许使用编程语言来进行逻辑规则的描述, 当前, 可以使用Java、Python和Groovy语言来实现业务规则。
JBoss Rules规则引擎中规则可以被定义到后缀名称为dr类型的文件中, 也可以保存为表格 (Excel文件) 或规则流形式。
在一个drl文件中, 可以有多条rules, functions, 等等。尽管如此, 也可以将规则分布在多个文件中, 这有利于管理大量的规则。一个DRL文件是一个简单的文本文件。一个规则结构大致如下:
可以看到, 规则是非常简单的。通常的标点符号都是不需要的, 甚至连“name”的双引号都是不需要的。ATTRIBUTES是简单的, 也是可选的, 来提示规则的行为方式。LHS是规则的条件部分, 需要按照一定的语法来写。Right Hand Side (RHS) 就是规则的结果 (consequence) 或者动作 (action) 部分。RHS的目的是retract或add facts到Working Memory中, 还有针对application的动作。实际上, RHS是当规则激发 (fire) 时执行的代码块。
在RHS中, 可以使用几个方便的method来改变WorkingMemory: (1) “modify (obj) ”:告诉引擎一个对象已经发生变化, 规则必须重新匹配 (obj对象必须是出现在LHS中的对象) ; (2) “assert (new Something () ) ”:将一个新的Something对象加入Working Memory; (3) “assert Logical (new Something () ) ”:与asser方法类似。但是, 当没有fact支持当前激发规则的真实性的时候, 这个新对象会自动被retract; (4) “retract (obj) ”:从Working Memory中移除一个对象。
Rule结构是最重要的结构。Rule使用了形如“IF”something, “THEN”action (当然, 关键字是“when”和“then”) 的形式。规则举例如下:
决策树 (Excel文件) 的使用:JBoss Rules首先读取Excel文件, 把每一行决策作为一个Rule, 然后把Excel文件转换成dr格式的文本, 再调用drl规则的API构建规则。并且, 在Excel文件中定义的Rule是有执行顺序的。它会按照行数由上自下执行。
4 JBoss Rules规则引擎的运行
JBoss Rules分为两个主要部分:构建 (Authoring) 和运行 (Runtime) 。
构建的过程涉及到.drl或.xml规则文件的创建, 它们被读入一个解析器, 使用ANTLR 3语法进行解析。解析器对语法进行正确性的检查, 然后产生一种中间结构“descr”, descr用AST来描述规则。AST被传到Package Builder, 由PackagBuilder来产生Packaged对象。Package Builder还承担着一些代码产生和编译的工作, 这些对于产生Package对象都是必需的。Package对象是一个可以配置的、可序列化的、由一个或多个规则组成的对象。
Rule Base是一个运行时组件, 它包含了一个或多个Package对象。可以在任何时刻将一个Package对象加入或移出Rule Base对象。一个Rule Base对象可以在任意时刻实例化一个或多个Working Memory对象。当应用程序中的对象被assert进Working Memory, 可能会导致一个或多个Activation的产生, 然后由Agenda负责安排这些Activation的执行。
一次JBoss Rules的规则运算通常如下: (1) 从Drl规则文件编译得到Rule Base——编译后的规则集; (2) 从Rule Base生成本次规则运算的场地——Working Memory; (3) 将规则运算用到的事实放入Working Memory; (4) Fire All Rules, 对事实进行规则运算。
集成了JBoss Rules的Eclipse IDE应用程序中导入规则包的部分源代码如下:
5 结束语
JBoss Rules作为一种Java环境的规则引擎, 其规则描述语言丰富, 且集成Eclipse开发环境, 与Java实现无缝对接, 目前已得到广泛地应用。
参考文献
[1]曲守宁, 朱强, 林泊翰, 等.规则引擎在机场资源管理系统中的研究与应用[J].江西师范大学学报 (自然科学版) , 2008 (2) .