自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 App启动速度优化

一: App启动方式通常来说, 一个App启动会分如下不同的状态:    1.  冷启动    App没有启动过或App进程被killed, 总之是系统中不存在该App进程, 此时启动App即为冷启动。 冷启动的流程即是App启动流程的全过程, 需要创建App进程, 加载相关资源, 启动Main Thread, 初始化首屏Activity等. 在这个过程中, 屏幕会显示一...

2018-07-18 17:50:19 757 1

原创 布局优化工具Hierarchy Viewer

优化完App的启动速度, 接下来我们要关注的就是UI布局怎么更高效了.欲善其事, 先利其器. 分析布局, 就不得不用到Hierarchy Viewer了.1, Hierarchy Viewer怎么用Hierarchy发音 [美: 'haɪərɑrki] [英: 'haɪərɑːkɪ] 层次结构的意思.之前一直念不顺这个单词Hierarchy, 就简称为H Viewer了. 下文就这...

2018-07-18 15:18:07 698

转载 网络优化

互联网时代, App作为于用户交互的端, 可以说实际上是一个界面, 产品的业务, 服务都是由Server提供的. 而App与Server的交互依赖于网络, 故而网络优化, 也是我们的App优化中不可缺少的一个优化项.1, 网络连接对用户的影响App的网络连接对于用户来说, 影响很多, 且多数情况下都很直观, 直接影响用户对这个App的使用体验. 其中较为重要的几点: 流量 App的...

2018-07-17 11:05:40 2409

转载 过度绘制优化

原文:http://blog.csdn.net/a740169405/article/details/53896497过度绘制:屏幕上某一像素点在一帧中被重复绘制多次,就是过度绘制。 下图中多个卡片跌在一起,但是只有第一个卡片是完全可见的。背后的卡片只有部分可见。但是android系统在绘制时会将下层的卡片进行绘制,接着再将上层的卡片进行绘制。但其实,下层卡片不可见的部分是不需要进行绘制...

2018-07-17 10:27:26 538

原创 Android内存泄露场景分析

原文地址:http://www.cnblogs.com/qianxudetianxia/p/3645106.html大部分内容来自以上原文,有的内容从别的博客中整理而来Context作为最基本的上下文,承载着Activity,Service等最基本组件。当有对象引用到Activity,并不能被回收释放,必将造成大范围的对象无法被回收释放,进而造成内存泄漏。下面针对一些常用场景逐一分析。总之就是任何...

2018-07-13 15:53:44 519

原创 Android 属性动画详解

1. 属性动画出现的原因逐帧动画 & 补间动画存在一定的缺点:a. 作用对象局限:View即补间动画 只能够作用在View上,只可以对一个Button甚至是LinearLayout、或者其它继承自View的组件进行动画操作,但无法对非View的对象进行动画操作有些情况下的动画效果只是视图的某个属性 & 对象而不是整个视图;如实现视图的颜色动态变化,那么就需要操作视图的颜色属性从而实...

2018-07-08 20:48:15 396

转载 区块链

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释。下面,我就来尝试,写一篇最好懂的区块链教程。毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚。我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿、为什么挖矿越来越难等问题。需要说明的是,我并非这

2018-02-05 19:40:41 375

转载 HTTP2.0原理详细解析

HTTP 2.0是在SPDY(An experimental protocol for a faster web, The Chromium Projects)基础上形成的下一代互联网通信协议。HTTP/2 的目的是通过支持请求与响应的多路复用来较少延迟,通过压缩HTTPS首部字段将协议开销降低,同时增加请求优先级和服务器端推送的支持。 本文目的是学习HTTP 2.0的原理并研究其通信的详细细

2017-11-09 16:23:01 5144 1

转载 android几种网络框架的比较

Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 Android 中进行网络连接一般使用 Scoket 和HTTP,HTTP 请求方式比 Scoket 多得多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式。可是在 Android 5.0 的时候 Google

2017-11-09 16:18:14 6211

转载 自定义控件---save和saveLayler中参数的意义

一、FLAG的具体意义1、FLAG概述有关save系列函数,在canvas中总共有如下几个:[java] view plain copypublic int save()  public int save(int saveFlags)  public int saveLayer(RectF bounds, Pain

2017-11-09 15:43:44 2763

转载 彻底解决Android 应用方法数不能超过65K的问题

作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常:Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536可能有些同学会说,解决这个问题很简单,我们只需

2017-11-09 14:48:00 380

原创 自定义控件---图层,画布和canvas

一: 概念图层(Layer):        每一次调用canvas.drawXXX系列函数时,都会生成一个新的透明图层来专门来画这个图形,然后按照绘制的顺序覆盖到画布上。调用完方法就覆盖到画布上了。如果我们连续调用五个draw函数,那么就会生成五个透明图层,画完之后依次盖在画布上显示。 画布(bitmap):        每一个画布都是一个bitmap,所有的图像都是画在bit

2017-11-09 14:34:20 1633

原创 自定义控件-Canvas的绘制与操作

一、平移(translate)canvas中有一个函数translate()是用来实现画布平移的,画布的原状是以左上角为原点,向左是X轴正方向,向下是Y轴正方向,如下图所示translate函数其实实现的相当于平移坐标系,即平移坐标系的原点的位置。translate()函数的原型如下:void translate(float dx, float dy)

2017-11-08 19:20:00 1970

转载 Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法

Interpolator的用法Interpolator这个东西很难进行翻译,直译过来的话是补间器的意思,它的主要作用是可以控制动画的变化速率,比如去实现一种非线性运动的动画效果。那么什么叫做非线性运动的动画效果呢?就是说动画改变的速率不是一成不变的,像加速运动以及减速运动都属于非线性运动。不过Interpolator并不是属性动画中新增的技术,实际上从Andro

2017-10-30 19:24:30 242

转载 Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法

ValueAnimator的高级用法在上篇文章中介绍补间动画缺点的时候有提到过,补间动画是只能对View对象进行动画操作的。而属性动画就不再受这个限制,它可以对任意对象进行动画操作。那么大家应该还记得在上篇文章当中我举的一个例子,比如说我们有一个自定义的View,在这个View当中有一个Point对象用于管理坐标,然后在onDraw()方法当中就是根据这个Point对象的坐标值来进

2017-10-30 19:22:14 207

转载 Android属性动画完全解析(上),初识属性动画的基本用法

在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理。补间动画则是可以对View进行一系列的动

2017-10-30 19:19:05 213

转载 自定义view

继承View重写onDraw方法自定义属性onMeasure方法MeasureSpec分析为什么我们自定义的MyTextView设置了wrap_content却填充屏幕重写onMeasure方法自动换行源码下载  对于一个Android攻城狮来说,自定义控件是一项必须掌握的重要技能点,然而对于大部分人而言,感觉自定义控件并不是那么容易。在工作过程中难免遇到一

2017-09-07 15:04:14 303

转载 自定义view-onMeasure解析

目录:onMeasure什么时候会被调用onMeasure方法执行流程MeasureSpec类从ViewGroup的onMeasure到View的onMeasureViewGroup中三个测量子控件的方法getChildMeasureSpec方法View的onMeasuresetMeasuredDimension1. onMeasure什么时候会

2017-09-06 20:10:10 290

转载 解析自定义属性

目录:为什么要自定义属性怎样自定义属性属性值的类型format类中获取属性值Attributeset和TypedArray以及declare-styleable  在上一篇博客《Android自定义View(一、初体验)》中我们体验了自定义控件的基本流程:继承View,覆盖构造方法自定义属性重写onMeasure方法测量宽高重写onDra

2017-09-06 20:08:54 328

转载 自定义viewgroup

目录:简单实现水平排列效果自定义LayoutParams大致明确布局容器的需求初步定义布局属性继承LayoutParams定义布局参数类重写generateLayoutParams在布局文件中使用布局属性在onMeasure和onLayout中使用布局参数支持layout_margin属性  通过前面几篇博客,我们能够自定义出一些比较简单

2017-09-06 18:11:07 261

转载 Android开发中dip,dpi,density,px等详解

Px (Pixel像素)也称为图像元素,是作为图像构成的基本单元,单个像素的大小并不固定,跟随屏幕大小和像素数量的关系变化(屏幕越大,像素越低,单个像素越大,反之亦然)。所以在使用像素作为设计单位时,在不同的设备上可能会有缩放或拉伸的情况。Resolution(分辨率)是指屏幕的垂直和水平方向的像素数量,如果分辨率是 1920*1080 ,那就是垂直方向有 1920 个像素,水平方

2017-09-06 17:04:34 444

转载 HashMap实现原理分析

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。      数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除

2017-07-07 12:59:59 166

转载 Android 中 Canvas 绘图之 PorterDuffXfermode 使用及工作原理详解

类android.graphics.PorterDuffXfermode继承自android.graphics.Xfermode在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果当使用PorterDuff

2017-06-08 15:53:33 499

转载 canvas的saveLayer理解

Canvas 在一般的情况下可以看作是一张画布,所有的绘图操作如drawBitmap, drawCircle都发生在这张画布上,这张画板还定义了一些属性比如Matrix,颜色等等。但是如果需要实现一些相对复杂的绘图操作,比如多层动画,地图(地图可以有多个地图层叠加而成,比如:政区层,道路层,兴趣点层)。Canvas提供了图层(Layer)支持,缺省情况可以看作是只有一个图层Layer。如果需要按层

2017-06-08 15:05:01 2658

原创 https原理:证书传递、验证和数据加密、解密过程解析

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。HTTPS简介HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。

2017-03-07 17:11:18 4535

转载 im即时通讯实现原理

即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数 据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。QQ就是使

2017-02-27 13:35:15 691

转载 im软件设计架构详解

对微信、陌陌等进行了分析,发出来分享一下(时间有些久了)电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。网络:这个也是IM最核心的内容了,

2017-02-27 13:31:42 1660

转载 Android M运行时权限

新运行时权限android的权限系统一直是首要的安全概念,因为这些权限只在安装的时候被询问一次。一旦安装了,app可以在用户毫不知晓的情况下访问权限内的所有东西。难怪一些坏蛋利用这个缺陷恶意收集用户数据用来做坏事了!android小组也知道这事儿。7年了!权限系统终于被重新设计了。在android6.0棉花糖,app将不会在安装的时候授予权限。取而代之的是,app不得不在运行时一个一个

2017-02-23 19:29:31 321

转载 互联网推送原理: 长连接+心跳机制

互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经 过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了,所以才会出现像MQTT 这种轻量级低消耗的协议来维护长连接,那么要如何维护长连接呢:       我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何一个长连

2017-02-22 20:24:07 905

转载 用phpspider框架做爬虫分析旅游数据

https://github.com/owner888/phpspider随着物质的提高,旅游渐渐成为人们的焦点,火热的国庆刚刚过去,乘着这股余热,我想很多人都想知道,大家一般会去哪里玩呢,于是我花了10分钟写了一个采集马蜂窝游记的小程序,当然速度能有这么快,完全依赖于PHP著名爬虫框架phpspider。国际惯例,我们先来看看代码怎么写,算作抛砖引玉吧 ^_^马蜂窝不

2016-10-18 18:25:50 15229 8

原创 排序算法

一:分类排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。本章内的排序都是属于内排序。内排序可以分为以下几类:  (1)  插入排序:直接插入排序、二分法插入排序、希尔排序。  (2)  选择排序:简单选择排序、堆排序。       (3)  交换排序:冒泡排序、快速排序。       (

2016-10-12 17:58:38 1232

原创 如何计算时间复杂度

一. 概念时间复杂度描述的是程序的执行时间,时间复杂度越低,执行效率越高时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)影响从大到小: 不考虑系数n! > 2^n (指数阶) > n^3 (立方阶)> n^2 (平方阶)> nlog2n (线性对数阶) > n (线性阶) > log2n (对数阶) > 1 (常数阶)二. 计算方法找到循环里的最基本的操作,把每个最

2016-10-09 19:05:33 2460

转载 linux shell 管道命令(pipe)使用及与shell重定向区别

看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了。这次我们看下管道命令了。shell管道,可以说用法就简单多了。 管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后,传递给下一

2016-09-06 14:34:13 1078

转载 深入理解分布式事务

1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因

2016-08-18 14:06:15 626 1

转载 linux系统结构详解

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核        内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系

2016-08-17 16:35:33 317

转载 流量劫持是如何产生的?

流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报道。只要用户没改默认密码,打开一个网页甚至帖子,路由器配置就会被暗中修改。互联网一夜间变得岌岌可危。攻击还是那几种攻击,报道仍是那千篇一律的砖家提醒,以至于大家都麻木了。早已见惯运营商的各种劫持,频繁的广告弹窗,大家也无可奈何。这么多年也没出现过什么损失,也就睁只眼闭只

2016-08-04 13:38:24 510

转载 nginx对比apache

1、nginx相对于apache的优点:轻量级,同样起web 服务,比apache占用更少的内存及资源抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单社区活跃,各种高性能模块出品迅速啊apache 相对于nginx 的优点:rewrite ,比nginx 的rewrite 强大,动

2016-07-18 17:19:39 325

转载 经典游戏服务架构 (三)全服全线模型

尽管分服的游戏模型已经运营了很多年,但是有一些游戏运营商还是希望能让尽量多的玩家一起玩。因为网游的人气越活跃,产生的交互越多,游戏的乐趣也可能越多。这一点最突出表现在棋牌类网游上。如联众、QQ游戏这类产品,无不是希望更多玩家能同时在线接入一个“大”服务器,从而找到可以一起玩的伙伴。在手游时代,由于手机本身在线时间不稳定,所以想要和朋友一起玩本来就比较困难,如果再以“服务器”划分区域,交互的乐趣就更

2016-07-18 15:32:30 4572

转载 经典游戏服务端架构(二)全服分线模型

一、模型描述由于多进程服务器模型的发展,游戏开发者们首先发现,由于游戏业务的特点,那些需要持久化的数据,一般都是玩家的存档,以及一些游戏本身需要用的,在运行期只读的数据。这对于存储进程的分布,提供了非常有利的条件。于是玩家数据可以存放于同一个集群中,可以不再和游戏服务器绑定在一起,因为登录的时候便可根据玩家的ID去存储集群中定位想要存取的存储进程。[图-全区分线模型]二、存储的挑战

2016-07-18 15:26:34 6516 1

转载 经典游戏服务器端架构(一)

架构的分析模型 一、 讨论的背景 现代电子游戏,基本上都会使用一定的网络功能。从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序。因此,游戏服务器端软件的架构,本质上也是游戏服务器这个特定领域的软件架构。软件架构的分析,可以通过不同的层面入手。比较经典的软件架构描述,包含了以下几种架构:运行时架构 ——这种架构关心如何解决运行效率问题,通常以程

2016-07-15 16:24:11 1796

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除