<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tmpantian的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tmpantian</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tmpantian]]></copyright><item><title><![CDATA[配置git服务器和客户端]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/41985291</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/41985291</guid><author>tmpantian</author><pubDate>Wed, 17 Dec 2014 19:07:43 +0800</pubDate><description><![CDATA[git服务器配置]]></description><category></category></item><item><title><![CDATA[android4.0平台service程序分析]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/41578509</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/41578509</guid><author>tmpantian</author><pubDate>Fri, 28 Nov 2014 23:54:55 +0800</pubDate><description><![CDATA[service程序源代码路径frameworks/base/cmds/service/service.cpp
int main()
{
    // 获得ServiceManager服务的接口sm, 通过这个接口客户获得其他服务信息
    sp sm = defaultServiceManager();
    // 使stdout清空，立刻输出所有在缓冲区中的内容
    fflu]]></description><category></category></item><item><title><![CDATA[Preference实现自定义视图]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/18092133</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/18092133</guid><author>tmpantian</author><pubDate>Fri, 10 Jan 2014 19:25:00 +0800</pubDate><description><![CDATA[public class CustomePreference extends Preference {


   private LinearLayout mAccountContainer = null;

   private Context mContext = null;

   private Activity mActivity ;
   
   

   pub]]></description><category></category></item><item><title><![CDATA[Android性能优化笔记]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/17881163</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/17881163</guid><author>tmpantian</author><pubDate>Sun, 05 Jan 2014 11:44:32 +0800</pubDate><description><![CDATA[1.  静态方法代替虚拟方法
    如果不需要改变某个变量的值， 可以直接将这个值设置为static， 这样在访问这个变量的时候可以加快速度。
2. 访问本地变量(函数中)比访问类的成员变量要快很多。
3. 对常量使用static final修饰符。
4. 避免使用浮点数， 浮点数计算时间比其他类型的数计算时间长。
5. 尽量使用系统中已经存在类和类库。]]></description><category></category></item><item><title><![CDATA[解包 boot.img 修改后，新生成 boot.img]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/17529329</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/17529329</guid><author>tmpantian</author><pubDate>Tue, 24 Dec 2013 14:39:18 +0800</pubDate><description><![CDATA[1. 首先下载工具，split_bootimg.pl


2. 执行命令将 kernel，ramdisk 提取出来。
# ./split_bootimg.pl boot.img 
Page size: 4096 (0x00001000)
Kernel size: 3038516 (0x002e5d34)
Ramdisk size: 199185 (0x00030a11)
Secon]]></description><category></category></item><item><title><![CDATA[Android手机开发ubuntu系统中常用的搜索命令]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9813869</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9813869</guid><author>tmpantian</author><pubDate>Wed, 07 Aug 2013 10:53:07 +0800</pubDate><description><![CDATA[ubuntu常用的搜索命令
find
通用命令
find pathname -options [-print -exec -ok]
在当前目录搜索SkCanvas.cpp文件
find -name 'SkCanvas.cpp' 或 find . -name 'SkCanvas.cpp'

在目录idh.code中查找带SkCanvas的文件
find idh.code/ -name]]></description><category></category></item><item><title><![CDATA[Android上面打印函数堆栈]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9701111</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9701111</guid><author>tmpantian</author><pubDate>Thu, 01 Aug 2013 13:27:23 +0800</pubDate><description><![CDATA[public static void log(String logMsg) {
    Thread current = Thread.currentThread();
        long tid = current.getId();
        StackTraceElement[] stack = current.getStackTrace();
        String]]></description><category></category></item><item><title><![CDATA[标量数据]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9304149</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9304149</guid><author>tmpantian</author><pubDate>Thu, 11 Jul 2013 20:38:57 +0800</pubDate><description><![CDATA[标量数据

标量在大多数情况下不是数字就是字符串
所有数字的内部格式都是一致的，不管是整数和浮点数， 在内部， perl均看成是 双精度浮点数来处理.

字符串
单引号字符串 和 双引号字符串

单引号字符串中除了'和\之外均为字符串的内容, 要得到'和\可以使用反斜线\来进行转义
'\'sdklsdjfd\\'

双引号字符串
在双引号字符串中，反斜线可以用来控制字符，或]]></description><category></category></item><item><title><![CDATA[git服务器配置]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9299019</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9299019</guid><author>tmpantian</author><pubDate>Thu, 11 Jul 2013 11:46:48 +0800</pubDate><description><![CDATA[服务器：ubuntu 12.04 （192.168.15.6）
客户端：ubuntu 10.04
 （192.168.15.5）

Gitolite
 搭建 Git 服务器，实现 Gitolite 服务器管理账户与普通用户无密码访问，且 Gitolite 管理员与普通用户在server上没有登录权限。



 1.服务器端：


1.1 创建 Git 服务器专用帐户 git]]></description><category></category></item><item><title><![CDATA[Makefile中的wildcard用法]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9255423</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9255423</guid><author>tmpantian</author><pubDate>Fri, 05 Jul 2013 21:13:36 +0800</pubDate><description><![CDATA[在Makefile规则中，通配符会被自动展开。但在变量的定义和函数引用时，通配符将失效。这种情况下如果需要通配符有效，就需要使用函数“wildcard”，它的用法是：$(wildcard
 PATTERN...) 。在Makefile中，它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件，函数会忽略模式字符并返回空。需要注意的是：这种情况下规则中通配符]]></description><category></category></item><item><title><![CDATA[JAVA wait(), notify(),sleep]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9254893</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9254893</guid><author>tmpantian</author><pubDate>Fri, 05 Jul 2013 19:10:49 +0800</pubDate><description><![CDATA[在JAVA中，是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的，需要说明的是，JAVA的synchronized()方法类似于操作系统概念中的互斥内存块，在JAVA中的Object类型中，都是带有一个内存锁的，在有线程获取该内存锁后，其它线程无法访问该内存，从而实现JAVA中简单的同步、互斥操作。明白这个原理，就能理解为什么synchron]]></description><category></category></item><item><title><![CDATA[Makefile & Android.mk文件中如何输出打印信息]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9246531</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9246531</guid><author>tmpantian</author><pubDate>Thu, 04 Jul 2013 20:36:58 +0800</pubDate><description><![CDATA[在makefile中打印输出信息的方法是：$(warning xxxxx)或者$(error xxxxx)

输出变量方式为：$(warning  $(XXX))]]></description><category></category></item><item><title><![CDATA[Android 本地代码中的LIKELY和UNLIKELY宏]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9189737</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9189737</guid><author>tmpantian</author><pubDate>Thu, 27 Jun 2013 17:01:02 +0800</pubDate><description><![CDATA[阅读Android Frameworks中的C++代码时，经常会碰到在条件判断语句中使用了LIKELY和UNLIKELY这两个宏，找到这两个宏的定义如下：
#define LIKELY( exp )       (__builtin_expect( (exp) != 0, true  ))  
#define UNLIKELY( exp )     (__builtin_expect( (ex]]></description><category></category></item><item><title><![CDATA[类型转换]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9188367</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9188367</guid><author>tmpantian</author><pubDate>Thu, 27 Jun 2013 15:56:14 +0800</pubDate><description><![CDATA[static_cast
用法：static_cast  ( expression )
该运算符把expression转换为type-id类型，但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法：
①用于类层次结构中基类（父类）和派生类（子类）之间指针或引用的转换。
进行上行转换（把派生类的指针或引用转换成基类表示）是安全的；
进行下行转换（把基类指针或引用转换成派生类表示）时，]]></description><category></category></item><item><title><![CDATA[android 动态库跟踪的一个小办法]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/9168715</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/9168715</guid><author>tmpantian</author><pubDate>Tue, 25 Jun 2013 11:47:12 +0800</pubDate><description><![CDATA[在android开发中，java的异常比较直观，但是动态库异常打印的都是地址，利用下面的方法可以锁定发生故障的函数。

arm-eabi-addr2line  -C -f -s -e 动态库 address可以解析出发生故障的地址信息。

比如：

Arm-eabi-addr2line –C –f –s –e libpcmhost.so 0c480

打印出：

_JNIEnv]]></description><category></category></item><item><title><![CDATA[pthread_once、pthread_key_create和pthread_getspecific和pthread_setspecific]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/8986437</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/8986437</guid><author>tmpantian</author><pubDate>Tue, 28 May 2013 20:35:14 +0800</pubDate><description><![CDATA[NativeMessageQueue::NativeMessageQueue() {
    mLooper = Looper::getForThread();
    if (mLooper == NULL) {
        mLooper = new Looper(false);
        Looper::setForThread(mLooper);
    }
}
s]]></description><category></category></item><item><title><![CDATA[android IPC通信中的UID和PID识别]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/8894873</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/8894873</guid><author>tmpantian</author><pubDate>Tue, 07 May 2013 13:52:48 +0800</pubDate><description><![CDATA[IPCThreadState对象维护了2个变量

            pid_t               mCallingPid;

            uid_t               mCallingUid;

    从变量名称来看，这2个变量保存了进程的PID和UID，并且由于这两个变量由IPCThreadState对象维护，可见它们是与IPC相关的。具体它们]]></description><category></category></item><item><title><![CDATA[Android中使用SDcard进行文件的读取方法]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/8822385</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/8822385</guid><author>tmpantian</author><pubDate>Fri, 19 Apr 2013 09:46:32 +0800</pubDate><description><![CDATA[我们在使用SDcard进行读写的时候 会用到Environment类下面的几个静态方法 

   1: getDataDirectory()  获取到Androi中的data数据目录

   2:getDownloadCacheDirectory()  获取到下载的缓存目录

   3:getExternalStorageDirectory()  获取到外部存储的目录 一般指SDcar]]></description><category></category></item><item><title><![CDATA[Java中finalize的使用]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/8822300</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/8822300</guid><author>tmpantian</author><pubDate>Fri, 19 Apr 2013 09:27:48 +0800</pubDate><description><![CDATA[java提供finalize()方法，垃圾回收器准备释放内存的时候，会先调用finalize()。

　　(1).对象不一定会被回收。

　　(2).垃圾回收不是析构函数。

　　(3).垃圾回收只与内存有关。

　　(4).垃圾回收和finalize()都是靠不住的，只要JVM还没有快到耗尽内存的地步，它是不会浪费时间进行垃圾回收的。

　　有时当撤消一个对象时，需要完成一些]]></description><category></category></item><item><title><![CDATA[android AsyncTask介绍]]></title><link>https://blog.youkuaiyun.com/tmpantian/article/details/8819383</link><guid>https://blog.youkuaiyun.com/tmpantian/article/details/8819383</guid><author>tmpantian</author><pubDate>Thu, 18 Apr 2013 15:45:31 +0800</pubDate><description><![CDATA[AsyncTask和Handler对比
1 ） AsyncTask实现的原理,和适用的优缺点
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
l  简单,快捷
l  过程可控
       
使用的缺点:
l]]></description><category></category></item></channel></rss>