1. 背景 假设有如下SQL语句: SELECT * FROM table1 LIMIT offset, rows 这是一条典型的LIMIT语句,常见的使用场景是,某些查询返回的内容特别多,而客户端处理能力有限,希望每次只取一部分结果进行处理. 上述SQL语句的实现机制是: 从"table"表中读取offset+rows行记录 抛弃前面的offset行记录,返回后面的rows行记录作为最终结果. 这种实现机制存在一个弊端:虽然只需要返回rows行记录,但却必须先访问offset行不会用…
本篇是优化系列的第一篇:数据类型 为了不产生赘述,尽量用简洁的语言来描述. 在选择数据类型之前,首先要知道几个原则: 更小的通常更好 尽量使用可以正确存储数据的最小数据类型.更小的数据类型意味着更快,占用更少的磁盘,内存以及缓存,以及处理时间 简单就好 这是出于操作数据类型的效率和代价考虑.整型比字符型操作代价更低,因为字符集和校对规则是字符处理比整型更复杂 两个例子:使用Mysql内建的datatime而不是字符串存储时间,使用整型而不是IP字符串存IP地址 尽量避免NULL 这是个很烦人的值…
电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情,随着Android开的性能要求越来越高,电量的优化,也显得格外重要,一个耗电的应用,用户肯定会毫不犹豫的进行卸载,所以本篇博客,我们一起来学习Android性能优化之电量优化. 耗电是如何产生的? 耗电情况,例如:打开屏幕,所有要使用CPU/GPU工作的动作都会唤醒屏幕,都会消耗电量.这和应用程序唤醒设备还不一样. (1)唤醒屏幕 当用户电量屏幕的时候,意味着系统的各组件要开始进行工作,界面也需要开始执行渲染.…
2014-09-25 Created By BaoXinjian…
本文内容:adapter,listview的优化,RecycleBi,google大会推荐优化, 实现ListView的过程,Adapter起到了至关重要的作用,不仅仅因为getview()方法.那么,先从Adapter说起~ Adapter: 它在ListView和数据源之间起到桥梁的作用,避免listview和数据源直接接触,而导致因为数据源的复杂性使listview显得臃肿. Adapter,适配器,把复杂的数据源适配给listview,很容易联想到适配器模式.   下面是几种常用的Ada…
尽量运行在Sun/Oracle JDK1.7以上环境中,低版本的jdk容易出现莫名的bug,ES性能体现在在分布式计算中,一个节点是不足以测试出其性能,一个生产系统至少在三个节点以上. ES集群节点规划良好,master.node.client分离开来,data节点关闭http功能. 合理利用内存. a) JVM内存设置不要超过机器的一半内存,并且不超过32G.(./bin/elasticsearch -Xmx10g -Xms10g或者修改./bin/elasticsearch.in.sh文件:…
Android性能优化系列之布局优化 Android性能优化系列之内存优化 Android性能优化系列之apk瘦身 应用的启动速度缓慢是我们在开发过程中常常会遇到的问题,比方启动缓慢导致的黑屏.白屏问题,本篇博客就将介绍App启动优化的相关知识. 应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时.后台没有该应用的进程.这时系统会又一次创建一个新的进程分配给该应用.这个启动方式就是冷启动. 冷启动由于系统会又一次创建一个新的进程分配给它.所以会先创建和初始化A…
Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中.他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率会越低(由于竞品中.用户有很多其它机会选择那个体验最好.功能最多,性能最好,包最小的),所以apk的瘦身优化也非常重要.本篇博客将讲述apk瘦身的相关内容. 包体分析 在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包 watermark/2/t…
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演进,内建了更为成熟的优化技术.运行时技术和垃圾收集器.与此同时,底层的硬件平台和操作系统也在演化. 目录: 一.Java性能优化系列之一--设计优化 二.Java性能优化系列之二--程序优化 三.Java性能优化系列之三--并发程序设计详解 四.Java性能优化系列之四--Java内存管理与垃圾回收…
1. 背景 通常情况下,能用一条sql语句完成的查询,我们尽量不用多次查询完成.因为,查询次数越多,通信开销越大.但是,分多次查询,有可能提高缓存命中率.到底使用一个复合查询还是多个独立查询,需要根据实际情况考虑. 2. 一个场景 我们有A.B两张表,需要做这样的一个查询: SELECT a1, a2, (SELECT b1, b2 FROM B WHERE B.b3 = A.a1) FROM A WHERE A.a3 = ? 当然,我们也可以拆分成两次查询: SELECT a1, a2 FRO…