- 博客(15)
- 资源 (148)
- 收藏
- 关注
转载 Binder框架在Framework层的C++中的使用
关于Binder在C++层的使用,搜过几篇文章,讲得比较多,也比较复杂,除非是想对OpenBinder这个开源项目深入研究,否则的话,用不了那么多的知识。我因为需要移植Android调些Framework层的Bug,一般跟踪程序时只要能找到谁调用的谁就可以了。接触过这部分一段时间后,就整理出了Android中在Framework层的C++中使用Binder时的框架。很简单,借此可以很容易理清Fra
2014-02-28 21:11:29 573
转载 aidl用到的设计模式--Proxy代理模式
[java] view plaincopy aidl用到的是远程代理模式,为客户端隐藏了IPC的细节。让客户端感觉好像拿到了一个服务器端对象的句柄。 ------------------------------- IGreetService.aidl ------------------------------- class="dp-j
2014-02-28 15:33:03 1457
转载 一些重要的算法
下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的或是比较生僻的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了) A*搜寻算法 俗称A星算法。这是一种在图形平面上,有多个节
2014-02-28 14:40:01 789 1
转载 深入浅出单实例Singleton设计模式
单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只能出现一个实例。当然,作为一个技术负责人的你,你当然有权利通过使用非技术的手段来达到你的目的。比如:
2014-02-28 14:29:52 619
转载 判断单链表是否存在环及寻找环的入口点
判断链表是否存在环,有如下几种解法: 1. 遍历链表,将已经遍历过的节点放在一个hash表中,如果一个节点已经存在hash表中,说明有环。时间:O(n) 空间:O(n) 2. 反转链表。 时间O(n),空间O(1),使用三个指针。(ref: http://www.cppblog.com/tx7do/archive/2009/01/06/71280.html) 单链表反转:下面给
2014-02-28 10:31:53 746
转载 深入理解JVM内部结构
这篇文章主要是解释java虚拟机(JVM)的内部结构。下图显示了符合Java SE 7 版本的Java虚拟机规范的一个典型JVM中的关键内部组件。 图中显示的组件将会在下面两部分中进行逐一的解释。第一部分涉及JVM为每一个线程都会创建的组件;第二部分则是独立于线程进行创建的组件。 1. Thread Thread是一个程序中的一个执行线
2014-02-26 13:21:58 578
转载 Android屏幕适配解析
1. 名词解析 在之前写过的 AndroidUI设计之 布局管理器 - 详细解析布局实现 中的 第七 小节已经说明了一部分; (1) 通用名词 屏幕尺寸(screen size): 按照屏幕的对角线测量的实际大小; --屏幕尺寸分类: 屏幕尺寸分为 小(small), 普通(normal), 大(large), 超大(extra larg
2014-02-26 11:00:08 625
转载 理解抽象类和接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。 一、抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描
2014-02-26 10:37:47 719
转载 JNI搭建:native方法注册或NDK中的方法对应
关于JNI的搭建,有两种方式,一种是传统的在C/C++模块入口中提供native方法注册,实例代码如下: view plain/* * JNI registration. */ static JNINativeMethod gNativeMethods[] = { { "nativeMethod1", "(I)V", (void*) method1 },
2014-02-21 10:30:36 742
转载 C++对析构函数的误解
对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责类内的资源的free。来看一段代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
2014-02-16 15:26:20 607
转载 objdump 反汇编
1)使用System.map文件查找函数的起始地址和结束地址 2)使用objdump -d 反汇编, 然后通过--start-address和--stop-address参数指定函数区间 3)使用nm -n out.elf > System.map 命令生成System.map文件 4)grep -A 1 打印匹配行和下一行, awk 打印第一列地址. #!/bin
2014-02-13 16:21:55 2003
转载 linux中Oops信息的调试及栈回溯
Oops 信息包含以下几部分内容。 1 一段文本描述信息。 比如类似“Unable to handle kernel NULL pointer dereference at virtual address 00000000” 的信息,它说明了发生的是哪类错误。 2 Oops 信息的序号。 比如是第 1 次、第 2 次等。这些信息与下面类似,中括号内的数据表示序号。 Internal
2014-02-13 16:19:02 531
转载 GDB 调试
一、多线程调试 多线程调试可能是问得最多的。其实,重要就是下面几个命令: info thread 查看当前进程的线程。thread 切换调试的线程为指定ID的线程。break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。set scheduler-locking off|on|step,这个是问得最多的。在使用step或者
2014-02-13 15:00:42 486
转载 堆和栈的区别
堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态
2014-02-13 14:28:33 477
转载 C/C++ struct初始化/复制/内存分配技巧
为了方便后面的介绍,先定义一个struct类型: struct User { int id; //id char name[100]; //user name char *home; //home directory
2014-02-11 17:15:31 703
Linux课件ppt及常用Linux命令集
2009-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人