性能数据采集的应用程序接口作了修改,两个虚方法已经被更改: protected virtual void UpdateServerSummary(ServerSummary serverSummary);   protected virtual void OnServerSummaryCollected(NodeSummary nodeSummary, ServerSummary serverSummary) 更改为: protected virtual void UpdateServerSta…
第1章 用户界面和布局 应用程序的用户界面就是用户能看到并可以与它交互的任何东西.Android提供多种预置的UI组件,如结构化布局对象和允许你为应用程序创建图形用户界面的UI控件.Android也会为特殊的接口提供其他UI模块,如对话框,通知和菜单.在一个Android应用中,所有用户界面元素都是由View和ViewGroup对象创建的.View 是一种可以在屏幕上绘制某种画面并且可以与用户互动的对象.ViewGroup对象则是为了定义布局的接口而保存其他View(和ViewGroup)对象.…
第1章 属性动画及动画与图形概述 Android提供了一系列强大的API来把动画加到UI元素中,以及绘制自定义的2D和3D图像中去.下面的几节将综述这些可用的API以及系统的功能,同时帮你做出最优的选择 1.1 动画 Android框架提供了两种动画系统:属性动画(在Android3.0中加入)以及View动画.这两种动画系统都有可行的选择,但是总的来说,属性动画系统是更好的选择,因为它更加灵活,并提供了更多的特性.在这两种系统之外,你可以使用Drawable动画(帧动画),就是你可以加载画图资…
文主要介绍一个基于 uiautomator2 封装的一个 Python 库 android-catcher ,该库的功能主要有对 Android 设备进行 UI 自动化测试 和 采集手机性能数据 ,适用于如列表滑动.录制视频等各种测试场景下 CPU.内存.帧率 等信息的捕获,方便后续分析. 安装 安装 Python 自动化测试的脚本是用 Python 3 写的,要运行脚本需要先安装 Python 3 环境 安装 android-catcher 依赖 打开脚本目录执行以下命令,安装依赖 pip i…
之前写过一篇博客,OpenGL管线(用经典管线代说着色器内部),说的主要是OpenGL的经典管线.大家都知道,现代OpenGL已经弃用(从OpenGL 3.0开始)经典管线功能(glBegin,变换矩阵,光照,雾,纹理坐标自动生成,等),这些功能可以在需要时由着色器实现.现代OpenGL分为core profile和compatibility profile两个版本(文献[1]Appendix D p682),core profile不包含任何弃用功能,而compatibility profil…
第1-1章 Fragments 在Activity中的fragment代表的是一种行为或用户界面的一部分.你可以在activity中结合多个fragments创建一个多面板UI,并可以在多个activity中重复使用fragment.你可以把fragment看作是activity的模块化的一个部分,它有自己的生命周期,接收它自己的输入事件,并且当activity正运行时,可以添加或移除fragment(这有点像在不同的activity中重复使用的“sub activity”). Fragment…
第2章 输入控件 输入控件是应用程序中用户接口的一种交互式组件.Android提供了大量的可供人们在UI中使用的控件,比如按钮.文本区域.(带滑块的)进度条.复选框.缩放按钮以及切换按钮等等. 在UI中增加输入控件就如同在XML布局中增加XNL元素一样简单.举例来说,下面为一个带有文本区域和按钮的布局.先看下图2-1的效果: 图2-1 各种输入控件 接下来然我们看下代码清单2-1是如何布局上面这些控件的: <?xml version="1.0" encoding="ut…
第3章 菜单 在许多不同类型的应用中,菜单通常是一种用户界面组件.为了提供给用户提供熟悉且一致的体验,你需要使用菜单API来展示用户动作和你Activity中的其他选项. 从安卓3.0系统(API level 11)开始,安卓设备已经不再需要提供专用的菜单按键.基于这种变化,安卓应用需要远离原来所依赖的传统6选项菜单盘,取而代之的是提供一个动作条来显示普通用户的动作.虽然设计方案和用户使用菜单选项的方式已经改变,但是从语义上定义的一套动作和选项仍然是基于菜单API的.这份指导书将介绍在所有版本的…
第4章 Action Bar Action Bar是一个能用于确定应用程序和用户的位置,并提供给用户操作和导航模式的窗口功能.如果需要显著地展示当前用户的操作或导航,应该使用Action Bar,因为Action Bar为用户提供了一个统一的跨应用程序和系统的接口,并且针对不同尺寸的屏幕优雅的处理了Action Bar的适配.你可以通过ActionBar API来控制它的行为和可视性,这些API添加于Android 3.0(API级别为11). Action Bar设计的目的是: ◆提供一个专门…
第5章 设置(Settings) 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能.例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据.如果你想要为你的应用程序提供设置,你应该使用Android的Preference APIs来构建统一的接口.本章的主角就是Preference,下面先让我们看一下图5-1: : 图5-1 这是android短信息应用程序的设置界面截图.它使用就是就是Preference 5.1 概述 相比使用View对象来构建用户接main,设置是构建…
第6章 对话框 一个对话框是一个小窗口,提示用户做出决定或输入额外的信息,一个对话框不填充屏幕并且通常用于在程序运行时中断,然后弹出通知提示用户,从而直接影响到正在运行的程序.图6-1就是对话框的外观. 图6-1 Dialog类是所有具体对话框的基类,但你应该避免直接实例化Dialog.因为可能有些现成的已经给你提供好了,比如以下几种: ◆AlertDialog 一个对话框,可以显示一个标题(可选),三个按钮(可选),内容的列表(可选),或一个自定义布局. ◆DatePickerDialog或T…
第7章 通知 一个通知是一条消息他是显示于你应用程序之外的一个界面中.当你告诉系统要发布一个通知时,它首先作为一个icon出现在通知区域.为了看见通知的细节,用户可以点击通知区域展开一个新的界面.下面让我们来看一下图7-1和图7-2: 图7-1 通知出现在通知区域 图7-2 通知展开后的效果(drawer) 注意:除非特别注明外,本章指的都是NotificationCompat.Builder,它在v4 Support Library中有,正式添加于API Level 15.但有了v4 Supp…
第8章 Toast通知 Toast通知是在窗口前面弹出的信息.它只占有信息所需要的空间量,并且用户当前的activity仍然是可见的.可互动的.这种通知自动地淡入和淡出,它不接受交互事件.他相当于一种临时的界面,用来反馈信息给用户,比如当你把某条信息保存为草稿的时候,会弹出如图8-1所示 下面的截图是闹铃应用程序的一个Toast通知示例.一旦开启闹铃,就会显示一个Toast,它提示你闹铃已经设定成功,如图1-9-1所示:. 图8-1 保存为草稿的toast效果 你可以通过Activity或Ser…
第9章 搜索 在android平台上搜索是一个核心的用户功能.无论内容位于设备或网络上,用户应该能够搜索任何对它们可用的数据.为了创建一个一致的用户搜索体验,Android平台提供了一个搜索框架帮助你的应用程序实现搜索功能.搜索框架提供了两种模式的搜索输入:一个在屏幕的顶部搜索对话框或搜索小部件(SearchView),您可以将其嵌入到你的activity布局.在这两种情况下,Android系统将通过传递一个查询到特定的activity协助你实现搜索.下图9-1显示了一个示例搜索对话框和可选的搜…
第10章 拖放 使用Android的拖放框架,允许用户通过一个图形化的拖放动作,把数据从当前布局中的一个视图上转移到另一个视图上.这个框架包含了一个拖动事件类,拖动监听器和一些辅助的方法和类. 虽然这个框架主要是为了数据的移动而设计的,但是你可以将这些移动的数据提供给其他的UI操作使用.例如:你可以创建一个当用户把一个彩色图标拖到另一个彩色图标上时,将颜色混合起来的应用.接下来本文将描述关于这个拖放框架的数据移动的内容. 10.1 概述 当用户执行一些被当作是开始拖动数据的信号的手势时,一个拖放…
第11章 样式和主题 style是用于指定View或window的外观和格式的一系列属性的集合.style可以指定高(height).填补(padding).字体颜色.字体大小.背景颜色等等属性.style定义在不同于用来设置布局的XML资源中.Android中的Syles与网页设计中的层叠样式表有着相似的原理——允许你将设计从内容中分离出来.例如,使用一个style,你可以将下面这个布局: <TextView android:layout_width="fill_parent"…
第12章 自定义组件 Android平台提供了一套完备的.功能强大的组件化模型用于搭建用户界面,这套组件化模型以View和 ViewGroup这两个基础布局类为基础.平台本身已预先实现了多种用于构建界面的View子类和ViewGroup子类,他们被分别称为widget和layout. 界面工具集(widget)包括Button.TextView.EditText.ListView.CheckBox.RadioButton.Gallery.Spinner等这些常用部件以及有着专门用途的AutoCo…
第1章 资源提供 你应该经常外部化你应用程序代码中的资源,比如图片.字符串等,这样有利于你独立处理这些资源.你也应该根据特定的设备配置提供一些可替代的资源,并且把他们分组保存在指定的路径名下.运行时,Android可以根据当前的配置使用适当的资源.比如,你也许会根据不同的屏幕尺寸提供不同的UI布局或是不同的语言设定提供不同的字符串.一旦你外部化了应用程序中的资源,你就能通过项目中的R类<class>生成的ID来调用他们.本章将向你展示怎么样分类你Android项目中的资源,以及怎么样给特定的设…
第1章 RenderScript RenderScript提供一个独立于平台并在本地运行的计算引擎,用它来加速你需要大量计算能力的应用.RenderScript是一个运行与Android上计算密集型的高性能架构.RenderScript主要是面向数据的并行计算,虽然串行计算密集型负载也不错.RenderScript运行时将在所有可用的处理器上并行工作,如多核CPU,GPU或DSP,让你专注于算法而不是调度工作或负载均衡.RenderScript对于图像处理,计算摄影或计算机视觉这样的应用程序尤其…
一.前言 此系列随笔是针对<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>的总结 上一节,我们搭建好了java的开发环境,这一节,我们来看Java的技术体系 二.Java技术体系 1.按功能划分 如 果 仅 从 传 统 意 义 上 来 看, Sun 官 方 所 定 义 的 Java 技 术 体 系 包 括 以 下 几 个 组 成 部 分: Java程序设计语言 Java API,包括 Java API类库 和 来自商业机构以及开源社区的第三方类库 Class 文件格式 各种硬件平台…
本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量.为达到此目的,需要了解应用程序的需求和数据的逻辑和物理结构,并在相互冲突的数据库使用之间(如联机事务处理 (OLTP) 与决策支持)权衡. 对性能问题的考虑应贯穿于开发阶段的全过程,不应只在最后实现系统时才考虑性能问题.许多使性能得…
转自:https://www.ibm.com/developerworks/cn/linux/l-async/ AIO简介 Linux中最常见的输入输出(I/O)模型是同步I/O.在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止.这是很好的一种解决方案,因为调用应用程序在等待I/O请求完成时不需要使用任何中央处理单元(CPU).但是在某些情况中,I/O请求可能需要与其他进程产生交叠.可移植操作系统接口(POSIX)异步I/O(AIO)应用程序接口(API)就提供了这种功能.在本文…
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4945066.html 起因 去年刚加入TX的时候,我便接手了路宝这款App的性能测试工作. 当时的性能测试的需求是,采集腾讯路宝在“前台导航”“后台导航”等数个场景下的电流值.cpu.内存.流量等数据.而当时的采集手段是:使用GT回放一段固定的gps轨迹,然后发起导航后使用GT来采集数据.具体过程如下: 从上图可见,整个过程中需要人工干预,其中设置GT和操…
原文: http://www.ibm.com/developerworks/cn/linux/l-async/ Linux® 中最常用的输入/输出(I/O)模型是同步 I/O.在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止.这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU).但是在某些情况中,I/O 请求可能需要与其他进程产生交叠.可移植操作系统接口(POSIX)异步 I/O(AIO)应用程序接口(API)就提供了这种功能.在…
使用异步 I/O 大大提高应用程序的性能 学习何时以及如何使用 POSIX AIO API Linux® 中最常用的输入/输出(I/O)模型是同步 I/O.在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止.这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU).但是在某些情况中,I/O 请求可能需要与其他进程产生交叠.可移植操作系统接口(POSIX)异步 I/O(AIO)应用程序接口(API)就提供了这种功能.在本文中,我们将对这个…
一 简介 这里主要说明从配置系统引导启动SuperScoekt作为应用程序,且以控制台程序方式启动 二 启动过程 2.1 配置解析 从读取配置文件开始,直接拿到一个SocketServiceConfig对象,这个类型封装了SuperSocket的所有配置,其主要包含了一下参数 1)服务器根配置 配置节点 "superSocket" SuperSocket 配置的根节点,它定义了 SuperSocket 所需要的全局参数. 让我们先看下根节点的所有配置属性: maxWorkingThre…
原文链接:http://blog.csdn.net/chendc201/article/details/22905503 1 Jconsole 1.1 简介以及连接 JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,它是Java自带的简单性能监控工具.下面以对tomcat的监控为例,带领大家熟悉Jconsole这个工具. Step 1,在dos/bash命令下输入:jconsole: Step 2,在弹出的对话框中选中apache,并点击connect(假设你的tomcat…
数据库性能优化详解 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量.为达到此目的,需要了解应用程序的需求和数据的逻辑和物理结构,并在相互冲突的数据库使用之间(如联机事务处理 (OLTP) 与决策支持)权衡. 对性能问题的考虑应贯穿于开发阶段的全过程,不应只在最后实现系统时才考虑性能问题.许多使性能得到显著提高的性能事宜可通过开始时仔细设计得以实现.为最有效地优化 Microsoft® SQL Server™…
个人总结:阅读完这篇文章需要20分钟,这篇文章主要讲解了现代浏览器在网络层传输所用到的一些技术, 应当对 window.performance.timing 这个API所有了解. 这是 JavaScript 工作原理的第十二章. 正如在之前关于渲染引擎的文章中所讲的那样,我们相信好的和伟大的 JavaScript 开发者之间的差别在于后者不仅仅只是理解了语言的具体细节还了解其内部构造和运行环境. 网络简史 49 年前,ARPAnet 诞生了.它是早期的报文分组交换网络及第一个实现 TCP/IP…
一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2.温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源码就复杂多了.所以,我依旧建议,操作之前别看源码,避免先入为主,要把它当成一个黑盒来分析.这样 你可以更好把握住,怎么从系统的资源使用问题出发,分析出瓶颈所在的应用,以及瓶颈在应用中大概的位置 3.应用环境 1.运行目标应用 docker run -v /tmp:/tmp --name=app -i…