自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 轻量级EventBus(LightEventBus)介绍

一、前言最近研究了一下项目上用的一个类EventBus框架,由于EventBus都在对象初始化的时候注册,导致启动非常耗时(注册是要遍历所有方法的),另外发现比较多消息处理的方法耗时非常长,导致后面的方法等待时间很长,而因为同一个业务包含了很多个模块,分属不同的部门负责,而这些模块共用一个EventBus,导致维护相当困难,所以花了几个小时,参考了相关框架,做了一个轻量级的EventBus框架...

2020-01-15 11:34:00 337

原创 零基础了解Https-https性能优化

简单描述一下Http的连接流程:经过tcp三次握手之后,客户端和服务端建立连接,然后服务端解析客户端的请求的Header和内容部分(post请求参数放在内容行),然后返回结果,如果有多次请求,就重复上面过程。已有的优化策略有哪些。1.优化tcp连接由于每次请求都会进行tcp三次握手,因此便有了长连接,Http 1.1之后默认打开长连接,这样就不必每次向服务器请求的时候,进行重新连接。...

2018-08-05 00:26:11 1738

原创 零基础了解Https-https协议详解

https其实就是在TLS(TLS是SSL的继任者,目前SSL基本被废除,用TLS代替)之上的http协议,所以各种头信息以及数据格式和http其实都一样,主要区别就在TLS,下面我们来看看TLS是如何工作的。本章咱们讨论一下TLS的一个整体思路,和一些重要的细节,所有的细节请参看RFC文档。tcp三次握手完成之后,就是TLS握手。TLS握手和TCP的握手一样,TLS在工作之前也需要握...

2018-08-05 00:24:07 2846 1

原创 零基础了解Https-https的安全策略

Https被称为安全的Http协议,是在Http基础上进行了加密,前导知识我们也介绍了RSA非对称加密算法,对称加密算法容易被破解,所以采用非对称加密算法,那么是不是直接对Http的内容都进行非对称加密,然后通过tcp将数据封装到data域,发送给对方就可以了呢?显然不是,首先我们来说明,为什么需要用Https替换Http。一、Http的缺陷http也就是超文本传输协议的简称,作为一个最知...

2018-08-05 00:17:33 1376

原创 零基础了解Https - http介绍

Https 全称是Http over SSL,也就是说Https其实并不是一个全新的协议,而是在Http的基础上做了处理。先来了解一下Http协议。一、Http介绍什么是 HTTP ?Http也就是超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。(维基百...

2018-08-05 00:10:47 528

原创 零基础了解Https - 前导知识(RSA)(2)

上面的前导知识简要介绍了一下tcp,现在开始应用层协议部分前导知识介绍。Https 全称是Http over SSL,因此Https是建立在Http的基础上,加了一层安全套接层。Https既然被称为安全的Http协议,怎么实现安全的,那就是加密算法。加密方法有三种方法:1.摘要算法:常用的有MD5、SHA,这种加密方式是不可逆的,没法解密,很多网站的用户名和密码就这么干的,比如用MD5...

2018-08-05 00:07:38 308

原创 零基础了解Https - 前导知识(tcp)(1)

上面一篇提到了互联网的产生背景,其中有一个很核心的东西是tcp/ip协议族,这个是互联网能够通信的基础。因为我们的https也是其中的一员,因此先来介绍一下tcp/ip协议族是什么东西。一、tcp/ip模型前面介绍了计算机通信协议是由大牛去研究并提出来的,大牛和码(ban)农(zhuan)的区别在于大牛去干之前,首先是尽可能的了解清楚,然后进行抽象建模(码农直接就是干),因此人家把提出了网...

2018-08-04 23:56:38 293 2

原创 零基础了解Https-背景

现在几乎所有的人都会通过互联网获取信息,包括学习、娱乐、交易等,而Http(s)是互联网的基石,在了解Https之前,首先来大概了解一下互联网的定义和产生背景。互联网的定义互联网(英语:Internet),是网络与网络之间所串连成的庞大网络,这些网络以一组标准的网络TCP/IP协议族相连,连接全世界几十亿个设备,形成逻辑上的单一巨大国际网络。它是由从地方到全球范围内几百万个私人的、学术界的...

2018-08-04 23:53:11 376

原创 自实现仿淘宝头条消息滚动的ViewFlipper

最近需要实现一个需求,在列表中,每个item支持显示仿淘宝的上下消息滚动的功能,最开始的考虑是直接使用android自带的ViewFlipper,添加自定的动画来完成,在测试的时候,发现如果每个item的消息太长的时候,列表滑动起来会非常卡,经过分析应该是每个item的消息列表加入到ViewFlipper的时候,都会创建一个新的View,并加入到布局中,从而在滑动的时候,该操作执行太频繁,导致卡顿...

2018-05-25 10:21:14 943

原创 基于事件触发的开源框架EventTrigger

一、介绍离散发生的事件,我们都可以把它抽象成触发器模型,事件因为某种原因发生了,可以抽象成触发器因为某种原因触发了,android世界中的事件也是如此,因为网络发生改变导致触发了网络触发器,因为时间到了,触发了计时触发器。这就是有了基于事件触发的开源框架EventTrigger。目前该开源框架还处于初始阶段,还存在很多不足,欢迎大家都来fork和pull request,把这个框架变得更加

2017-05-20 09:28:02 1563

原创 Android性能优化总结

面试的时候,基本都会问到性能优化的知识点。从用户角度来说,能够感知的性能问题,基本上是慢卡顿问题,如果不考虑系统问题,单从应用角度来说,能够优化用户感知的性能问题的,可以从资源和体验角度着手。资源角度,包括硬件资源,CPU、GPU、内存、硬盘;软件资源,代码和算法。体验角度,动画和数据加载优先级。下面就从这几个方面着手分析,可能还存在其他优化方式,就不一一描述啦。一、涉及CPU方面的优化1

2017-04-24 22:55:41 585

原创 再谈Activity启动流程(2)

四、Activity的显示从AMS的startActivity开始经过相当复杂的调用,终于调用到ApplicationThread中,通过跨进程的方式调用了scheduleLaunchActivity,然后扔到H这个handler中进行处理了,然后再主线程中调用handleLaunchActivity方法。核心的方法有2个,一个是performLaunchActivity,另一个是handle

2017-04-02 11:56:11 619

原创 再谈Activity启动流程(1)

前面已经分析过Activity的启动流程,本篇再继续重新整理,深入拓展一番,如有缺漏,敬请谅解。注:以下分析过程不会贴出所有的代码,在末尾附上的文章里面有详细的代码调用。部分文件路径frameworks/base/core/java/android/app/Activity.javaframeworks/base/core/java/android/app/Instrumentatio

2017-04-02 11:55:51 447

原创 java虚拟机知识点简要梳理

首先来看一个java虚拟机的思维导图,下面每个知识点都可以进行展开,本篇只做简要梳理上图是从类的整个生命来梳理的,包括类的加载、验证、准备、解析、初始化、使用、卸载,将一一做简要介绍一、加载1.加载过程a.通过类的全限定名获取类的二进制字节流,其中二进制字节流不一定是java语言编译的,只要是最终形成符合java字节流格式即可,比如jruby、jython、groovy

2017-03-14 22:35:25 1697

原创 Handler、Looper和MessageQueue的关系

Handler初始化之前,首先需要初始化Looper,主线程中在进程启动,调用ActivityThread.main方法的时候,已经调用了Looper.prepareMainLooper初始化Looper了,而普通线程则采用Looper.prepare方法初始化,不管哪种方式,都是创建了一个Looper实例,保存到ThreadLocal这个全局静态变量中,Handler在初始化的时候,从Threa

2017-03-12 08:22:29 443

原创 Binder再探(4)

总结上述的binder通信过程涉及四方,binder驱动、Service Manager、AMS(服务端)、Activity(客户端)binder驱动binder驱动作为动态内核模块,通过binder_init函数,将自己注册成为misc设备,创建/dev/binder节点,提供三个核心的函数binder_open、binder_mmap、binder_ioctl给用户空间调用

2017-03-04 17:51:41 407

原创 binder再探(3)

再来看客户端通过 ActivityManagerNative.getDefault().startActivity启动一个Activity, ActivityManagerNative.getDefault()方法static public IActivityManager getDefault() { return gDefault.get(); }private

2017-03-04 17:49:49 506

原创 binder再探(2)

前面的Activity的启动流程(http://blog.csdn.net/newhope1106/article/details/53355189),已经知道了Activity的启动将会调用下面代码:try { intent.migrateExtraStreamToClipData(); intent.prepareToLeaveProcess();

2017-03-04 17:41:54 495

原创 binder再探(1)

前面文章只是对binder的几个核心部分做了简要介绍,本文将按照启动顺序或调用顺序对binder作详细的介绍。一、binder驱动初始化binder驱动作为内核模块,首先被加载进来,做初始化操作,首先binder驱动把自己注册成为misc设备,文件目录会创建/dev/binder节点,然后提供了操作binder设备方法,这里初始化调用是通过binder_init函数调用的。static

2017-03-04 17:29:11 559

原创 binder初探

一、引言前面android进程的创建流程(http://blog.csdn.net/newhope1106/article/details/54932800)有提到过binder,先来看看这部分的代码。 public static final void zygoteInit(int targetSdkVersion, String[] argv, ClassLoader classL

2017-02-27 00:53:18 898

原创 java内存模型

一、概述java内存模型主要目标是定义共享变量(这里的变量指的是实例字段、静态字段和数组对象)的访问规则,首先介绍一下为什么java需要定义内存模型。我们知道现在的计算机都是多核的,也就是有多个CPU,由于CPU的运行速度和内存的速度有很大数量级的差距,因此不得不在CPU和内存中间加了高速缓存,CPU取数据,首先放到高速缓存中,写完之后,再从高速缓存刷新到内存当中,当多个CPU操作同一块内存区

2017-02-19 12:08:55 589

原创 android进程创建流程(基于android 6.0)

转载请注明出处:http://blog.csdn.net/newhope1106/article/details/54932800调用android四大组件的时候,没有在AndroidMenifest.xml中设置process属性的情况下,都会创建应用进程。点击桌面上的图标,其实是启动了对应的Activity,此时应用进程也就创建了。创建进程调用的接口是Process.start.

2017-02-08 20:44:14 1016

原创 Android开发人员必备工具库

android编程中经常会用到各种工具类,下面是有人整理出来的各种工具类,推荐收藏作者github:https://github.com/Blankj/AndroidUtilCode摘抄其目录如下,最新更新请跳转到上面的githubActivity相关→ActivityUtils.java→DemoisActivityExists : 判断是否存在Act

2017-02-05 09:22:11 750

转载 你真的会写单例模式吗——Java实现[转]

转载自:http://www.tuicool.com/articles/MBrUfy6单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。饿汉法顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建。代码如下:publi

2017-02-05 08:03:05 670

原创 google的GCM推送使用简介

转载请注明出处:http://blog.csdn.net/newhope1106/article/details/54709916GCM即Google Cloud Messaging,主要用于消息推送的,即使在应用没有起来的情况下,客户端也能通过GCM收到来自服务器的消息。GCM支持Android、IOS和Chrome。由于GCM需要google service支持,在国内基本不能用,经常

2017-01-24 19:59:11 44316 6

转载 Android微信智能心跳方案(转)

来源:http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207243549&idx=1&sn=4ebe4beb8123f1b5ab58810ac8bc5994&scene=0#rd前言:在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和春哥对Line和WhatsApp的心跳

2017-01-22 20:23:49 840

原创 OkHttp 3.x框架简要分析

转载请标明:http://blog.csdn.net/newhope1106/article/details/54636393前面有讲过Volley框架:http://blog.csdn.net/newhope1106/article/details/53615398Volley有其缺点,不支持同步,不能post大数据,一般当需要用到这种情形时,会选择其他的框架,本文我们将介绍一个OkHt

2017-01-20 23:54:50 1599

原创 android四大组件启动流程-ContentProvider启动流程(基于android 6.0)

前面已经介绍了Activity、Service、BroadcastReceiver的启动流程Activity的启动流程:http://blog.csdn.net/newhope1106/article/details/53355189Service启动流程:http://blog.csdn.net/newhope1106/article/details/53843809Broadcas

2017-01-13 22:43:37 1342

原创 android四大组件启动流程-BroadcastReceiver启动流程(基于android 6.0)

前面已经写过Activity的启动流程:http://blog.csdn.net/newhope1106/article/details/53355189 和 Service的启动流程:http://blog.csdn.net/newhope1106/article/details/53843809 ,本篇是关于广播的,其实标题写得不准确,广播的注册、发送和接收应该是一起,下面开始讲解内容吧。

2017-01-07 17:07:25 4249 1

原创 EventBus 3.0源码简要分析

一、简介EventBus(3.0)、RxJava(RxAndroid)都是常用的解耦框架,目的都是为了让代码中的事件处理独立,减少类与类之间的依赖和耦合。附上EventBus源码地址:https://github.com/greenrobot/EventBus二、EventBus(3.0)(1)EventBus(3.0)介绍首先介绍一个EventBus 3.0 和 2.x的区别

2016-12-29 17:29:43 692

转载 [转]Java那些不为人知的特殊方法

转载自:http://blog.itpub.net/22884147/viewspace-1103854/如果你用过反射并且执行过 getDeclaredMethods方法的话,你可能会感到很惊讶。你会发现很多源代码里没有的方法。或许你也看过到这些方法的一些修饰符,并且发现里面有的方法是volatile的。顺便说一句,Java面试里如果问到“什么是volatile方法?”,你可能会出一

2016-12-27 17:48:47 737

转载 [转]优秀程序设计的Kiss原则(keep it simple,stupid)

良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。1.避免重复原则(DRY – Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。2.抽象原则(Abstraction Principle

2016-12-26 08:58:09 785

原创 android四大组件启动流程 - Service启动流程

前面已经提过Activity的启动流程,有兴趣的可以查看:http://blog.csdn.net/newhope1106/article/details/53355189,里面主要都是代码流程。Service启动有2种方式,一种是startService,一种是bindService,两者目的不一样,前者是做长时间的后台操作(比如下载,播放音乐),后者主要是完成交互,前者的需要调用stopS

2016-12-23 20:54:06 1007 1

转载 [转]【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

原文地址:http://www.tuicool.com/articles/jyA3MrUAndroid开源库自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 。在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章。Android下的优秀开发库数不胜数,在本

2016-12-22 17:43:47 912

原创 从源码角度学习Volley框架

转载请标明出处:http://blog.csdn.net/newhope1106/article/details/53615398虽然网上有很多文章是分析Volley框架的,不过博客的作用,一个是让别人看了能够有所得,另一个是让自己同样的有所得。1.首先来介绍一下Volley框架(1)下载sdk不能直接使用volley,需要自己编译,不过maven中提供了jar包下载,http:/

2016-12-13 22:24:01 648

原创 时间轴控件TimeLineView的实现

首先来看看效果图吧android中经常会用到时间轴,那么如何实现时间轴呢?首先我们了解时间轴的构成(1)时间球(2)直线(3)位置下面介绍一个时间轴实现的开源代码:https://github.com/newhope1106/TimeLineView把这几个问题解决再掌握基本的绘制过程就可以实现时间轴了。下面先来看代码。(1)定义属性,想要用户自定义的变量

2016-12-08 21:43:07 6252

原创 上拉加载更多,下拉刷新的弹性ListView的实现

本文主要的是介绍如何实现弹性的listview,以及上拉和下拉功能的实现,其实对一般的View也是适用的,稍微修改一下就可以啦。里面涉及一些对事件分发的处理,有兴趣的可以看一下这个链接,http://blog.csdn.net/newhope1106/article/details/53363208。源码地址:https://github.com/newhope1106/flexibleLis

2016-12-06 20:44:41 3043

原创 内存泄露检测神器 -- LeakCanary源码分析

鉴于笔者能力有限,如有疏漏错误之处,敬请原谅,本文只做抛砖引玉的作用一、内存泄露介绍内存泄露基本上都是由于不恰当的使用,当对象使用完了之后,还存在强引用,导致该释放的时候,没有释放,一直占用内存,我想是很多人会遇到的问题,一般的解决思路是生成hprof文件,再用mat等内存分析工具来查看,找到怀疑点,然后对照着源码再来验证。这里有一个很好的工具,可以在运行期间就能检测到内存泄露,并且输出最

2016-12-01 20:33:32 1321

原创 Activity启动流程,界面绘制到事件处理的整个流程(基于Android6.0源码)(3)

四、事件的分发流程Activity的生命周期,基本上可以在ApplicationThread看到,先不做说明,下面来介绍一个事件的分发流程。由于linux把所有的设备都抽象为文件,因此触摸等输入事件也在/dev/input有对应的文件,当我们点击屏幕的时候,可以通过这些文件知道,具体的我也不清楚,就不班门弄斧了,直接从java层最开始调用触摸事情的地方开始吧。也就是Activity的dis

2016-11-27 10:16:38 922 1

原创 Activity启动流程,界面绘制到事件处理的整个流程(基于Android6.0源码)(2)

二、界面的绘制流程上一节把Activity的启动流程介绍了一下,在Activity的启动流程中,onResume的生命周期是显示界面的过程,下面来分析界面是如何显示的。PhoneWindow并不是具体的布局界面,我们可以看到handleResumeActivity中,有下面代码调用 final void handleResumeActivity(IBinder token,

2016-11-27 09:27:55 1997

php中文帮助文档.chm

这是官方的php中文帮助文档,对学习php的人很有帮助的

2010-07-13

空空如也

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

TA关注的人

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