<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Programmer Training]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zero9988</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zero9988]]></copyright><item><title><![CDATA[2020安卓开发面试总结]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/107357829</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/107357829</guid><author>zero9988</author><pubDate>Wed, 15 Jul 2020 22:28:29 +0800</pubDate><description><![CDATA[2020安卓面试总结基础知识Java基础Android基础网络基础Android常用框架源码1，ViewModel和LiveData2，Kotlin3，LeakCanary的实现原理4，RxJava5，EventBus6，fresco和glide项目经历1，你觉得最有难度的项目，最成功的项目2，你做过什么性能优化相关的工作3，遇到问题的时候，怎么解决
今年因为公司的一些变动，深思熟虑后决定出来重新找工作。刚开始以为找工作会一帆风顺，也没多做准备，结果发现现实狠狠的给了我一耳光。所以，找工作之前还是要把面试相]]></description><category></category></item><item><title><![CDATA[从Google的todo-mvp源码中学习MVP模式]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/78615907</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/78615907</guid><author>zero9988</author><pubDate>Wed, 16 May 2018 20:09:35 +0800</pubDate><description><![CDATA[从Google的todo-mvp源码中学习MVP模式

MVP ： Model-View-Presenter

MVP模式可以说是现在开发模式中的mvp了。MVP模式也是mvvm模式的一个基础。 
Google在Github上面公布了一组官方的mvp samples：Google todo-mvp

通过对以下几个例子的源码分析，来深入学习MVP模式。




  Sample
  Descrip]]></description><category></category></item><item><title><![CDATA[Android Studio使用jni环境配置]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/75200104</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/75200104</guid><author>zero9988</author><pubDate>Sun, 16 Jul 2017 21:32:54 +0800</pubDate><description><![CDATA[Android Studio使用jni环境配置使用AndroidStudio编写原生层应用，有两种方式： 
1，官方示例，Gradle+Cmake+LLDB+NDK 
官方示例，如何向安卓中添加C/C++代码2，老方法通过NDK中的ndk-build编译Android.mk文件官方的示例可以通过上述链接查看，有个缺点就是有时候会因为无法翻墙的问题，得通过自己去下载配置Cmake和LLDB这些工具。因]]></description><category></category></item><item><title><![CDATA[从AILD与bindService谈Binder进程间通信原理（下）]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/73824661</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/73824661</guid><author>zero9988</author><pubDate>Mon, 03 Jul 2017 12:38:49 +0800</pubDate><description><![CDATA[从AILD与bindService谈Binder进程间通信原理（下）上文回顾从AILD与bindService谈Binder进程间通信原理（上）上一篇文章主要讲述了，在Client进程向AMS所在进程发起bindService操作的服务请求的过程中，Binder是如何跨进程通信的。实际上，Java层的Binder进程间通信都是同样的流程。主要有以下2点： 
1，A进程持有B进程的IBinder对象（]]></description><category></category></item><item><title><![CDATA[从AILD与bindService谈Binder进程间通信原理（上）]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/73518778</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/73518778</guid><author>zero9988</author><pubDate>Fri, 23 Jun 2017 14:09:03 +0800</pubDate><description><![CDATA[从AILD与bindService谈Binder进程间通信原理


彻底弄明白AIDL进程间通信的原理]]></description><category></category></item><item><title><![CDATA[简要分析Android中的Intent,Bundle,Parcel中的数据传递]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/73459022</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/73459022</guid><author>zero9988</author><pubDate>Mon, 19 Jun 2017 11:49:02 +0800</pubDate><description><![CDATA[Intent是进程间通信的一种简要方式,其通讯数据可以存放在Bundle中,而在实际的进程间通讯过程中,数据则是打包成Parcel对象进行处理的.查看源代码后,简要分析一下其中的数据转换逻辑.
简单的逻辑就是:进程A----Data----Bundle----Intent----Parcel------进程B------Parcel----Intent----Bundle----Data(忽略了]]></description><category></category></item><item><title><![CDATA[Android5.0框架层短信接收过程分析]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/70256766</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/70256766</guid><author>zero9988</author><pubDate>Thu, 20 Apr 2017 15:15:33 +0800</pubDate><description><![CDATA[本文分析使用的是android5.0的源代码，涉及的相关文件：
frameworks\opt\telephony\src\java\com\android\internal\telephony\RIL.java
frameworks\base\core\java\com\android\internal\util\StateMachine.java

frameworks\opt\tele]]></description><category></category></item><item><title><![CDATA[KMP算法NEXT数组计算方法]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/60478388</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/60478388</guid><author>zero9988</author><pubDate>Sun, 05 Mar 2017 23:24:10 +0800</pubDate><description><![CDATA[KMP算法：
关键是利用匹配失败后的信息，尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数，函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。


个人对于Next（）函数的理解：
一：思路概括：我语文不太好可以忽略，直接先看手工实现
1，把将要进行next计算的字符串S分成 k ，j 前后两串，k代表前串开头所在的序号，j代表后串开头]]></description><category></category></item><item><title><![CDATA[Ubuntu下将编译好的安卓源代码刷入Nexus5真机]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/53025565</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/53025565</guid><author>zero9988</author><pubDate>Thu, 03 Nov 2016 23:41:47 +0800</pubDate><description><![CDATA[安卓源代码刷入Nexus5真机
< waiting for device >
error: device not found]]></description><category></category></item><item><title><![CDATA[android5.0 模块编译－－art的模块编译小发现]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/52526731</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/52526731</guid><author>zero9988</author><pubDate>Tue, 13 Sep 2016 16:24:27 +0800</pubDate><description><![CDATA[讲道理，编译好安卓系统以后，进行模块修改，再重新mmm x模块　因该是一件特别快速的事情．


问题：
在编译android 5.0的ａｒｔ模块时发现存在两个问题：
１，无法进行单独的模块编译，且提示缺少各种各样的库．
２，能成功编译后，编译速度及其缓慢．


调查：
１，根据错误的信息可以发现都是形如　libgtest_host_intermediates　类似的文件夹中缺少]]></description><category></category></item><item><title><![CDATA[android5.0源码编译错误小结]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/52261611</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/52261611</guid><author>zero9988</author><pubDate>Sat, 20 Aug 2016 15:35:27 +0800</pubDate><description><![CDATA[make: *** No rule to make target `out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_host_intermediates/export_includes',

needed by

`out/host/linux-x86/obj/SHARED_LIBRARIES/libartd_intermediates/import_includes'.  Stop.]]></description><category></category></item><item><title><![CDATA[Wifi密码破解与局域网抓包监听（小白--纯工具版）]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51866882</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51866882</guid><author>zero9988</author><pubDate>Sun, 10 Jul 2016 00:12:00 +0800</pubDate><description><![CDATA[工具介绍：
1，wifi密码破解：CDlinux.iso  ：一个Linux系统，集成了wifi密码的PIN码破解软件。
2，Mac地址修改器：修改自己的MAC地址，防止被封
3，ettercap
4，wireshark
5，]]></description><category></category></item><item><title><![CDATA[inline！C++内联]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51426518</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51426518</guid><author>zero9988</author><pubDate>Mon, 16 May 2016 17:35:20 +0800</pubDate><description><![CDATA[在android5.0的源代码中


经常可以看到xxxxx-inl.h的文件（C++中好像还有专门的.inl文件）   这些文件都是内联函数/模板的文件  比如Class-inl.h  Class_linker-inl.h Dex_file-inl.h Art_method-inh.h（里面尽是一些

template
inline void ArtMethod::SetNative]]></description><category></category></item><item><title><![CDATA[adb操作遇到Permission denied和operation not permitted相关]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51361259</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51361259</guid><author>zero9988</author><pubDate>Tue, 10 May 2016 10:57:34 +0800</pubDate><description><![CDATA[用adb 操作真机 经常遇到各种各样的

Permission denied
Operation not permitted
（手机已经root）


使用adb push 命令 提示Operation not permitted时

$ adb root 

adbd is already running as root

（adb取得root权限，你发现adb she]]></description><category></category></item><item><title><![CDATA[小米S2手机刷android5.0原生版]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51356609</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51356609</guid><author>zero9988</author><pubDate>Mon, 09 May 2016 22:38:08 +0800</pubDate><description><![CDATA[小米2S MIUI 6 android5.0系统


已经root了，想着在system/bin目录放一个gdbserver，然后用gdb调试一下，结果 结果。。。。惨痛的经历啊。。。
想着已经root因该是很简单的一件事，
su
mount 
mount -o remount,rw /system
chmod 777 /system/bin
然后用ls -l /system]]></description><category></category></item><item><title><![CDATA[AIDL实现Android进程间通信实例]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51334502</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51334502</guid><author>zero9988</author><pubDate>Fri, 06 May 2016 20:52:49 +0800</pubDate><description><![CDATA[实现Android进程间通信实例有好几种方法：
1，AIDL
2，Broadcast
3，Intent
4，Content Provider


记录一下AIDL实现Android进程间通信的方式：


Android的AIDL进程间通信实现步骤：


一：创建AIDL服务端：aidl文件，自动生成的接口java文件，服务service


xxxInterface]]></description><category></category></item><item><title><![CDATA[gdb和gdbserver调试android应用与可执行]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51325872</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51325872</guid><author>zero9988</author><pubDate>Fri, 06 May 2016 19:49:13 +0800</pubDate><description><![CDATA[学习android5.0以后的ART虚拟机，看了看源码，比较头疼，决定通过动态调试的方式去学习。
Art虚拟机有一个dex2oat的可执行程序。就想到了通过gdb和gdbserver来debug这个dex2oat。

记录一下调试方法：


gdb运行在本地系统（windows/linux）
gdbserver运行在android真机/模拟器上（adb shell ls /syste]]></description><category></category></item><item><title><![CDATA[第3章：Android系统的安全机制]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51318841</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51318841</guid><author>zero9988</author><pubDate>Wed, 04 May 2016 23:44:41 +0800</pubDate><description><![CDATA[Android安全机制 = Linux操作系统的内核安全机制基础（应用程序的进程间安全与应用程序与操作系统之间的安全）+Android进程沙箱隔离+Android独有的内存管理和进程通信




3.1.1  Android的安全机制模型


（1）内存管理
Android共享内存机制Ashmem，Linux低内存管理OOM机制


（2）权限声明
显示声明权限，名称，权]]></description><category></category></item><item><title><![CDATA[ubuntu14.04添加ia32-libs安装32位软件]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51285589</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51285589</guid><author>zero9988</author><pubDate>Sat, 30 Apr 2016 10:18:12 +0800</pubDate><description><![CDATA[ubuntu14.04添加ia32-libs安装32位软件


MARK



1。切换到root权限
sudo -i

2。进入apt源列表

cd /etc/apt/sources.list.d

3。添加ubuntu 13.04的源，因为13.10的后续版本废弃了ia32-libs

echo "deb 
http://old-releases.ubuntu]]></description><category></category></item><item><title><![CDATA[简易爬虫实现校园网剩余流量查询]]></title><link>https://blog.youkuaiyun.com/zero9988/article/details/51278667</link><guid>https://blog.youkuaiyun.com/zero9988/article/details/51278667</guid><author>zero9988</author><pubDate>Fri, 29 Apr 2016 21:37:14 +0800</pubDate><description><![CDATA[学校公众号要用爬虫查询校园网流量，记录一下实现这个简易爬虫的过程。


开发工具：
Eclipse，Chrome/Firefox
第三方库”：
jsoup：用来解析网页数据，HttpClient用来连接web页面，模拟get和post请求






Step 1：明确目标
简单的理解爬虫的过程就是模拟网页操作的过程，GET网页数据，POST数据请求的模拟。
So，第]]></description><category></category></item></channel></rss>