自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android IPC之Messager用法示例

Messager可以翻译为信使,顾名思义,通过它可以在不同进程中传递Message对象,在Message中放入我们需要传递的数据,就可以轻松地实现数据的进程间穿传递了。Messager是一种轻量级的IPC方式,它的底层实现是AIDL。这个大家可以下去看一下Messager的构造方法就知道了。 Messager的使用方法很简单,它对AIDL做了封装,使得我们可以更简便的进行进程间通信。同时,由于它

2016-04-24 20:18:36 678

原创 深入了解Handler消息机制(二)

上一篇主要说了: (1)Message,MessageQueue,Looper,Handler的工作原理就像是工厂的生产线。待加工的产品就是Message,“传送带”就是MessageQueue,电动机就是Looper,工人们就对应于处理事件的Handler。 (2)Android系统用链表来实现Message的缓存消息池。我们知道Android的应用程序的入口是ActivityThread.m

2016-04-14 00:05:38 409

原创 深入了解Handler消息机制(一)

在Android开发了一段时间之后,很多读者应该知道了一个知识点:UI不能在子线程中更新。这本来是一个伪命题,因为并不是UI不可以在子线程中更新,俄日好似UI不可以在不是它创建的线程中更新。只是绝大多数情况下UI都是从UI线程中创建的,因此在其他线程更新时会抛出异常。在这种情况下,当我们在子线程中完成了耗时操作之后,通常会通过一个Handler将结果传递给UI线程,然后在UI线程中更新相关的视图。

2016-04-13 21:50:04 383

原创 Android中的Binder跨进程通信机制

在code的世界里,两个对象能直接通信的前提是这两个对象都存在于相同的内存地址空间中,如果两个对象分别存在于两个不同的进程中,那么这不同进程的两个对象是不能直接相互调用的,这时我们就需要用到一种跨进程通信技术,使存在于两个不同进程的对象能够相互访问。 传统的跨进程通信方式有很多,比如Socket、信号量、管道、消息队列和共享内存等,这些传统的跨进程通信方式都在Linux系统中存在。大家都知道And

2016-04-11 22:34:07 770

原创 深入理解Java:类加载机制与反射

一、Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java

2016-04-09 11:35:36 580

原创 Java并发编程中实现原子操作

引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。 术语定义 处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 3

2016-04-09 09:55:36 401

原创 快速排序

int Division(int a[],int left,int right){ int base = a[left]; while(left<right){ while((left<right) && (a[right]>base)) right--; a[left] = a[right]; while((l

2016-04-07 23:58:49 236

原创 三大简单排序

冒泡排序:void BallocSort(int a[],int n){ int i,j,tmp; int flag = 1; for(i = 0;i<n-1;i++){ flag = 0; for(j = 0;j<n-i;j++){ if(a[j+1]<a[j]){ tmp = a[j+1]

2016-04-07 23:36:22 342

原创 java中volatile关键字的含义

在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程

2016-04-07 11:28:58 278

原创 C语言中Static和Const关键字

C语言中Static和Const关键字的的作用 static作用:“改变生命周期” 或者 “改变作用域”  程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。1.作用于变量:   用static声明局部变量——-局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分

2016-04-07 09:48:26 512

空空如也

空空如也

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

TA关注的人

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