- 博客(92)
- 问答 (1)
- 收藏
- 关注
转载 【Web基础】HTTP长连接和短连接以及推送技术原理
转载自《【Web基础】HTTP长连接和短连接以及推送技术原理》HTTP长连接和短连接1. HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。
2016-02-20 16:20:30 5344 1
原创 浅谈Java中的序列化
Java序列化概念什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字Socket在网络上传送对象的时候; c)当你想通过跨进程通信传输对象的时候; 相当于在两端
2016-02-20 12:19:28 952
转载 Android签名机制之---签名过程详解
转载自:http://blog.csdn.net/jiangwei0910410003/article/details/50402000一、前言又是过了好长时间,没写文章的双手都有点难受了。今天是圣诞节,还是得上班。因为前几天有一个之前的同事,在申请微信SDK的时候,遇到签名的问题,问了我一下,结果把我难倒了。。我说Android中的签名大家都会熟悉的,就是为了安全,不让别人修改你
2016-01-29 14:08:13 1099
转载 Android签名机制之---签名验证过程详解
转载自 http://blog.csdn.net/jiangwei0910410003/article/details/50443505一、前言今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名。在前一篇文章中我们介绍了,Android中是如何对程序进行签名的,不
2016-01-29 14:06:10 4087 1
原创 Java 并发编程之ReentrantLock和synchronized锁
前几天被问到ReentrantLock锁的用法和作用,竟然一时没答上来,太可惜了,ReentrantLock锁明明见了很多次,一直没留意。其实在前面分析UIL框架的时候,就有ReentrantLock锁的案例 参考 Universal-Image-Loader系列2-源码分析 防止同一时间点的重复请求 是时候好好总结一下了synchronized锁机制synchronized,有两个重要后果,通
2016-01-28 18:03:21 2417 2
原创 Android 设计模式之(三)观察者,适配器,桥接,组合模式
适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 1. 业务的接口与工作的类不兼容,(比如:类中缺少实现接口的某些方法)但又需要两者一起工作 2. 在现有接口和类的基础上为新的业务需求提供接口适配器模式分为类适配器模式和对象适配器模式。 ListViews做为client,他所需要的目标接口(target interface)就是L
2016-01-25 18:38:04 930
原创 Android 设计模式之(二)建造者,模板方法,策略模式
建造者模式模式介绍 ##将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示public class Person { private int age; private String name; private String gender; private String nation; private boolean idLeader;
2016-01-25 18:37:48 632
原创 Android 设计模式之(一)单例,代理,外观模式
单例模式这个就不说了,分为懒汉式单例 饿汉式单例实现 参考我之前的Java 懒汉式单例 饿汉式单例需要注意的地方,千万注意OOM,尽量使用getApplicationContext,而不是context,不要引用view代理模式模式介绍 ##代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 就是一个人或者机构代表另一个人或者机构采取行动。在一些情况
2016-01-25 18:37:23 756
原创 Android 内存泄漏检查工具LeakCanary源碼浅析
使用参考我之前写的《Android 内存泄漏工具使用》监控 Activity 泄露我们经常把 Activity 当作为 Context 对象使用,在不同场合由各种对象引用 Activity。所以,Activity 泄漏是一个重要的需要检查的内存泄漏之一。public class ExampleApplication extends Application { public static Re
2016-01-23 21:57:55 5776 1
转载 Android 性能优化典范
转载 胡凯博客 摘抄一些对自己有用的,完整的看胡凯博客典范一1) Render Performance大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成
2016-01-23 15:56:11 860
原创 Android 注解工具ButterKnife源码分析
Java注解Annotation参考 公共技术点之 Java 注解 Annotation归纳总结一下:作用a. 标记,用于告诉编译器一些信息 @Override就是,如果没有正确重载方法,编译不过 b. 编译时动态处理,如动态生成代码 ButterKnife就是此类 c. 运行时动态处理,如得到注解信息 用的比较少,运行时可通过Method.getAnnotation方法得到运行时注解信息
2016-01-22 18:14:14 1759 3
原创 新的一年 2016技术目标
以时俱进React Native的学习Android系统内核进一步分析,Linux内核的学习GitHub上研究更多精品开源项目,同时能够开源自己android下有意义的组件CSDN输出更多高水准的博客深入学习Java/Android虚拟机原理朝着全栈工程师/架构师的方向努力
2016-01-21 09:48:14 1252 2
转载 Android 绘图基础Canvas
转载子:Android 2D Graphics学习一个Canvas对象有四大基本要素: 1、一个用来保存像素的Bitmap 2、一个Canvas在Bitmap上进行绘制操作 3、绘制的东西 4、绘制的画笔Paint1、如何获得一个Canvas对象Canvas对象的获取方式有三种:我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canva
2016-01-19 14:47:31 1007
原创 Android ImageView源码解析
单指移动图片实现界面布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"
2016-01-17 18:28:27 2840
原创 Android 开源项目NineOldAnimations详解
背景常见的属性动画属性: alpha 透明度 scaleX 缩放X方向 scaleY 缩放Y方向 translationX 平移X方向 translationY 平移Y方向 rotation 旋转 rotationX X轴翻转 rotationY Y轴翻转 pivotX 设置旋转,翻转效果中心x坐标 (默认是在view的中心x坐标) pivotY 设置旋转,翻转效果中心y坐标
2016-01-13 18:41:36 1250
原创 Android ClassLoader机制
什么是ClassLoader?Classloader动态的装载Class文件。标准的java sdk中有一个ClassLoader类,借助这个类可以装载想要的Class文件,每个ClassLoader对象在初始化时必须制定Class文件的路径。 写程序的时候不是有import关键字可以引用制定的类吗?为何还要使用这个类加载器呢? 原因其实是这样的,使用import关键字引用的类必须符合以下两个条
2016-01-11 14:58:08 6587
原创 Java ClassLoader机制
JDK默认ClassLoaderJDK 默认提供了如下几种ClassLoaderBootstrpLoaderBootstrp加载器是用C++语言写的,它是在Java虚拟机启动后初始化的,它主要负责加载%JAVA_HOME%/jre/lib,-Xbootclasspath参数指定的路径以及%JAVA_HOME%/jre/classes中的类。ExtClassLoaderBootstrploader加载
2016-01-11 10:55:17 944
原创 Android 架构简析
MVC架构 View:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Activity 看起来的确像那么回事,但是细细的想想这个View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,造成了Activity既像View又像Controller(当然了Data-Binder的出现,可能
2016-01-09 18:52:40 717
原创 Android Dex65536方法数,热补丁方案,动态加载apk小结
Dex65536超出限制原理神马的也不说了,方法使用google的android-support-multidex方案解。 当然也可以不使用android-support-multidex,可以自定义拆包,那么apk中就有多个dex了 原理: Apk在运行的时候,有一个dexpathlist,而Multidex的源码中,会根据你的系统版本号对dexpathlist做修改,将所有的dex都添加到
2016-01-09 18:13:47 1263
转载 Android 浅析fresco
fresco是facebook主导的一个开源图片缓存库,从它提供的示例程序comparison来看,fresco貌似比其他的几个目前android主流的图片缓存库(glide,picasso,uil等)更快更节省内存。接下来就看看它到底是如何做到的。注:本文分析基于0.8.1版本。背景知识lru与SoftReference那些年的爱恨情仇:很久很久以前,android的内存缓存还用
2016-01-05 15:06:24 1200
转载 Android Image Loader 第三方库对比测试
转载自:http://blog.csdn.net/linux1s1s/article/details/46959649预热知识测试前,我们需要先明白这样一个问题Java Heap / Native Heap 各自代表什么? Bitmap 到底是分配在Java heap上 还是分配到了Native heap上 Java Heap 大小一般是多大,有限制吗? Nat
2016-01-05 15:03:39 888
原创 Java 内部类详解
内部类静态内部类除了静态内部类之外,其它的都默认持有外部类的引用,构造函数中传进去,所以都可以通过Outer.this(默认的不需要显示)访问外部类的属性和方法,包括private的,另一方面这有可能造成内存泄漏,比如Android中handler的定义非静态内部类public class Outter { private int age = 10; class Inner {
2015-12-29 21:15:54 665
转载 Java 反射Reflection使用
转载:公共技术点之 Java 反射 Reflection1. 了解 Java 中的反射1.1 什么是 Java 的反射Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这
2015-12-29 10:57:27 797
原创 Android 开源项目EventBus详解
使用//MainActivitypublic class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConte
2015-12-27 18:28:22 856
原创 Universal-Image-Loader系列2-源码分析
1. 怎么实现大图片的下载,防止OOM前面分析volley,我们知道volley并不适合大文件的下载,因为volley把输入流都写入了byte[]内存,然后写入硬盘缓存,所以容易OOM。 看UIL怎么实现大图片的下载的 private Bitmap tryLoadBitmap() throws TaskCancelledException { Bitmap bitmap =
2015-12-22 20:46:50 860
原创 Universal-Image-Loader系列1-配置使用
Android-Universal-Image-Loader官方使用介绍,参考 wiki默认值ImageLoaderConfiguration全局显示选项/* ImageLoader Configuration (ImageLoaderConfiguration) is global for application. You should set it once.All options in C
2015-12-22 20:45:59 928
原创 Android 内存溢出 内存泄漏(二)
首先参考 Android 内存溢出 内存泄漏(一)1. hashset的OOM2. Cursor对象 流对象Stream未正确关闭 解决方案:finally中关闭 Cursor cursor = null; try { cursor = getContentResolver().query(...); if (cursor != null && cur
2015-12-13 14:58:43 1569 1
原创 Android UncaughtExceptionHandler捕获Crash
Android系统的“程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可。重写uncaughtException方法,注意只有程序未捕获的异常才会调用这里,如果程序捕获了,就不会了
2015-12-13 14:10:07 1083
原创 Volley框架之四 加载网络图片
使用Volley去加载图片的方式前面已经介绍了,有三种方式,下面主要介绍ImageRequest方式和ImageLoader方式的区别和联系ImageRequest看一下源代码,主要就是parseNetworkResponse方法的实现,解析网络返回的response /** Decoding lock so that we don't decode more than one image a
2015-12-09 21:10:19 763
原创 Volley框架之三 疑难实现
有了前面两章做基础,这篇文章主要分析一下,从Volley中我学到的知识点问题1: Requset是在哪里处理的?主线程还是子线程? 子线程处理Request,只要new了一个RequestQueue那么就会开启1个缓存线程,4个网络请求线程,CacheDispatcher/NetworkDispatcher继承自Thread。 这就意味着一次最多只能并发5个线程,如果缓存线程没有命中,那么最多并
2015-12-09 21:09:36 2695
原创 Volley框架之二 基本流程
架构先来张整体的架构图 其中蓝色部分代表主线程,绿色部分代表缓存线程,橙色部分代表网络线程。我们在主线程中调用RequestQueue的add()方法来添加一条网络请求,这条请求会先被加入到缓存队列当中,如果发现可以找到相应的缓存结果就直接读取缓存并解析,然后回调给主线程。如果在缓存中没有找到结果,则将这条请求加入到网络请求队列中,然后处理发送HTTP请求,解析响应结果,写入缓存,并回调主线程
2015-12-09 21:08:30 592
原创 Android HttpClient HttpUrlConnection用法总结
HttpClient这个不用说了,Apache的API,但是不推荐使用了,在最新的api中甚至都把HttpClient去掉了。但是还是有必要掌握下HttpClient的用法的GET方式//先将参数放入List,再对参数进行URL编码List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();params.add(n
2015-12-08 21:37:19 2261
原创 Volley框架之一 如何使用
一直想找个优秀的开源框架学习下,Volley非常合适,研究下来学到了不少知识Volley简介Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行
2015-12-08 21:06:27 859
原创 Android 捕获OOM方法
本文不是讲什么时候会发生OOM,而是讲OOM发生了如何去捕获他,处理它最近在分析Volley通信框架,看到ImageRequest的一段代码,非常值得借鉴 /** Decoding lock so that we don't decode more than one image at a time (to avoid OOM's) */ private static final Obj
2015-12-07 19:02:25 6594
原创 Android Log高级用法
Log Level我们知道不管在AS还是Eclipse中查看log,选择不同的Log Level查看到不同的log 只有当前的level比Log Level要大,才会显示log,做了过滤 /** * Priority constant for the println method; use Log.v. */ public static final int VER
2015-12-02 11:33:50 2111
原创 Java 中断线程方法
线程终止方法Stop这个方法就不介绍了,不推荐使用,已经被废弃了。会强制停止线程,进程和虚拟机会发生不可预料的状态。不优雅 /** * Requests the receiver Thread to stop and throw ThreadDeath. The Thread is * resumed if it was suspended and awakened if i
2015-12-01 17:48:58 792
原创 Android IPC方式
基础部分序列化Serializablejava提供的,使用简单,但是内存开销大,序列化反序列化大量IO操作最好定义serialVersionUID,否则反序列化可能失败,原因,百度。private static final long serialVersionUID = 1L;Parcelableandroid做了优化,开销小,推荐方式,但是使用麻烦,怎么使用百度。 同时主要用于序列化到内存上,如
2015-11-29 16:14:15 688
原创 Android IntentFilter匹配规则
显式调用Intent intent = new Intent(); intent.setClassName(“lbb.demo.anotest”, “lbb.demo.anotest.TwoActivity”); startActivity(intent); 打开包名为”lbb.demo.anotest”的 “lbb.demo.anotest.TwoActivity”方法。。。可能启动另外一个
2015-11-29 13:43:22 736
转载 Android 进程的内存管理分析
尊重原创作者,转载请注明出处:http://blog.csdn.net/gemmem/article/details/8920039最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误。这样对Android内存管理进行局部性介绍,很难使读者建立系统性概念,无法真正理解内存管理,对提高系统优化和系统
2015-11-26 09:53:37 957
原创 Android 内存泄漏工具使用
首先总结一下,平时编码过程需要注意的事项,避免OOM 我之前也有一篇文章介绍过: Android内存溢出 内存泄漏 其它很详细的介绍文章也可以参考: 1. Android内存优化之OOM 2. Android应用开发性能优化完全分析 时刻记得不要加载过大的Bitmap对象;譬如对于类似图片加载我们要通过BitmapFactory.Options设置图片的一些采样比率和复用等,具体做法
2015-11-25 20:06:33 883
空空如也
android studio总是出现使用快捷键的框框
2015-06-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人