<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kevin_wz的专栏]]></title><description><![CDATA[将工作、学习之中的感悟记录于此，分享与自勉，恪守“纸上得来终觉浅，绝知此事要躬行”。]]></description><link>https://blog.youkuaiyun.com/armmfc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; armmfc]]></copyright><item><title><![CDATA[ubuntu14常见问题解决]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/52433205</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/52433205</guid><author>armmfc</author><pubDate>Sun, 04 Sep 2016 16:47:50 +0800</pubDate><description><![CDATA[ubuntu12的问题仍在记录，不过最近却装了ubuntu14，又遇到不少新问题，故再写一文，有些问题可能12和14都存在，就写在14这篇文中吧，因为以后14用得稍多一些。 
ubuntu12常见问题解决1、为home目录单独分区。 
问题：新电脑发现有/目录下分区只有200G，还有一个200G分区sda6居然没有使用，被挂载到/media下，当作u盘，于是决定将其挂到/home下。 
解决：备份原]]></description><category></category></item><item><title><![CDATA[高质量程序好文分享之王垠《编程的智慧》]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/52073481</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/52073481</guid><author>armmfc</author><pubDate>Sat, 30 Jul 2016 16:35:53 +0800</pubDate><description><![CDATA[今天有幸读到了王垠博文《编程的智慧》，突然有一种知音得遇、相见恨晚之感。文中诸多观点自己非常赞同，这些观点的形成绝非易事，需要经过大量的实践编程，反思总结和得到大牛的指点云云。 
编程中与我契合之极的一个词：优雅。是的，能够写出优雅的程序是我一直所追求的，什么性能、高质量编程完全可以用优雅二字概括，甚至可以从这二字中看出一个程序员的从容自信的性格。 
这里将分享文中一些观点： 
王垠《编程的智慧》原]]></description><category></category></item><item><title><![CDATA[（精）戏说高质量代码]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51989179</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51989179</guid><author>armmfc</author><pubDate>Thu, 21 Jul 2016 23:57:30 +0800</pubDate><description><![CDATA[对于什么高质量程序可谓是仁者见仁，智者见智，今天也说说我理解的高质量程序。以下人物和场景均为假想，请勿对号入坐。
1. 正确、稳定运行。 
 2. 架构清晰、可扩展性强。 
 3. 可读性强，有必要的注释，代码风格保持一致。这三条必须按其顺序排列，第一条看似简单，其实非常的难。 
就以一小公司GS为例，公司初创，要为一套仪器紧急开发程序，为了控制成本，直接外包出去，当外包人员开发出代码v1.0时，能]]></description><category></category></item><item><title><![CDATA[Android 应用开发环境搭建]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51974266</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51974266</guid><author>armmfc</author><pubDate>Wed, 20 Jul 2016 23:26:15 +0800</pubDate><description><![CDATA[想起以前上学时候，MFC开发可谓红极一时。尤其是vc6.0这个工具，安装完毕之后，不但可以进行常用的console开发，也可以进行带界面的MFC开发，简单好用。 
而今对于Android应用，开发环境需要小心配置，弄大半天可能连一个helloworld的界面程序的写不出来。今晚在ubuntu12上搭建了ADT和Android Studio，有些心得，分享一下。对于ADT和Android Studio]]></description><category></category></item><item><title><![CDATA[Android M6.0指纹框架概要]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51922132</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51922132</guid><author>armmfc</author><pubDate>Sat, 16 Jul 2016 00:55:08 +0800</pubDate><description><![CDATA[指纹识别与应用不算是什么新鲜事，很早之前各种书籍就介绍指纹识别算法。但是其在Android移动终端上的实现及应用却是个新鲜玩意，这和iPhone有不少差距啊，还好6.0正式推出指纹框架。
指纹识别与应用的确有不少优点，用过iphone的人都知道指纹识别对于解锁、应用下载甚至是付款来说，都非常方便。一般来说，其核心有3点：
一是指纹芯片的研发与支持（包括芯片采集能力、识别算法等）。
二是基于指纹框架的]]></description><category></category></item><item><title><![CDATA[stagefright框架下的awesomeplayer播放准备阶段]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51893427</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51893427</guid><author>armmfc</author><pubDate>Tue, 12 Jul 2016 23:10:29 +0800</pubDate><description><![CDATA[前文分析了AwesomePlayer的setDataSource阶段，对于已经分离好的音视频数据，下一步就是为其设置解码器，这一阶段称为 prepare。
直接从AwesomePlayer::prepareAsync()开始，status_t AwesomePlayer::prepareAsync() {
    return prepareAsync_l();
}
status_t Awesome]]></description><category></category></item><item><title><![CDATA[stagefright框架下的awesomeplayer设置数据源阶段]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51874224</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51874224</guid><author>armmfc</author><pubDate>Sun, 10 Jul 2016 23:45:16 +0800</pubDate><description><![CDATA[Android的MediaPlayerService下一个重要的框架就是stagefright(演讲胆怯者），在它之下就是具体的播放器了。与其关系同等的是NuPlayer，本文将分析stagefright常规框架和一些关键技术。


先看几个类的关系：



class MediaPlayerBase : public RefBase
class MediaPlayerInterface : pu]]></description><category></category></item><item><title><![CDATA[Android多媒体之MediaPlayerService]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51871334</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51871334</guid><author>armmfc</author><pubDate>Sun, 10 Jul 2016 14:17:30 +0800</pubDate><description><![CDATA[如同其它service一样，MediaPlayerService在Android架构中起着承上启下的作用。向上提供media相关的api，向下调用其它框架（opencore、stegefright）具体实现相关功能。
  涉及到代理到MediaPlayerService的IPC在前文已经分析过了，所以这里重点讨 论实现。如apk调用setDataSource，经过Binder IPC会调用到Medi]]></description><category></category></item><item><title><![CDATA[Android多媒体研究之mediaservice]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51869141</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51869141</guid><author>armmfc</author><pubDate>Sat, 09 Jul 2016 23:03:29 +0800</pubDate><description><![CDATA[多媒体和网络在Android中占有举足轻重的地位，网络的重要性不必说，后有文分析。这里主要是面向消费者的多媒体，包括音频、视频、图片、动画等。可谓是传媒和各种算法的宠儿，同时在流媒体中还涉及到网络，因此多媒体与网络的交互将是研究的重点。
还是利用源头分析法，从init进程开始，init.rc中启动mediaserverservice media /system/bin/mediaserver]]></description><category></category></item><item><title><![CDATA[Android init进程一些容易忽视的技术细节]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51864523</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51864523</guid><author>armmfc</author><pubDate>Fri, 08 Jul 2016 23:18:44 +0800</pubDate><description><![CDATA[Android init进程作为用户空间第一个进程，做了很多系统初始化工作，其核心分为两块：一是属性，二是init.rc。此外，在具体的项目过程中，常和init进程打交道，里面有不少技术细节值得我们研究清楚。



属性key-value大小限制




bionic/libc/include/sys/System_properties.h
#define PROP_NAME_MAX   32
#]]></description><category></category></item><item><title><![CDATA[读《我是一个网卡》有感]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51737664</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51737664</guid><author>armmfc</author><pubDate>Wed, 22 Jun 2016 23:03:56 +0800</pubDate><description><![CDATA[这两天读了《我是一个网卡》这篇文章，很有感触，幽默的语言，准确的知识，形象而生动的说明了上网的大致流程，对以后的源码级分析做个铺垫吧。
网络知识博大精深，从硬件到操作系统，再到各种协议、应用，给人一种望而生畏之感。《我是一个网卡》以通俗的方式粗略的讲了上网这一过程：网卡硬件 -> 网上驱动 -> DHCP （获取本地IP） -> 广播 -> 路由＋DNS -> ARP（获取远端MAC） -> TCP]]></description><category></category></item><item><title><![CDATA[Ubuntu12常见问题解决]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51695412</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51695412</guid><author>armmfc</author><pubDate>Thu, 16 Jun 2016 23:32:07 +0800</pubDate><description><![CDATA[在使用Ubuntu linux操作系统时，经常会遇到各种问题，在此记录以供查询。
1、rdesktop无法远程Windows7 
现象：可以ping通Win7系统ip，但输入rdesktop win7IP后，无反应一段时间，提示”unable to connect”。 
解决： 
a) 确保Win7系统3389端口处于listening状态。 netstat -an | findstr 3389]]></description><category></category></item><item><title><![CDATA[Android/Linux根目录下常见目录作用]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51582578</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51582578</guid><author>armmfc</author><pubDate>Sat, 04 Jun 2016 00:22:58 +0800</pubDate><description><![CDATA[当adb shell进入Android系统内部后，ls会看到根目录下出现不少目录，如dev、sys、mnt等目录，对于这些目录的作用常常让人模棱两可，有必要对其学习了解。
首先要明白目录也是一种文件，根目录下的这些文件属于根文件系统的范畴，每个文件都要其重要的作用。/bin 
包含基本的命令，通常该目录下的文件都是可执行的，也有可能是一个busyboxr的软链接。主要用于系统初始化，常见的有cp、m]]></description><category></category></item><item><title><![CDATA[偏爱的vim配置]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51534461</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51534461</guid><author>armmfc</author><pubDate>Sun, 29 May 2016 22:31:31 +0800</pubDate><description><![CDATA[在linux/android开发过程中，鼎鼎大名的vim的使用必不可少，所谓“工欲善其事，必先利其器”，这里谈谈自己偏爱的vim配置。
对于vim配置，我主张实用即可，同时要考虑兼容性，最好是用官方给定的一些包，不必过分追求华丽，虽然我心里也喜欢那些华丽的配置。 
1、语言编码设置"===============1: file encodeing===============
set encodin]]></description><category></category></item><item><title><![CDATA[内核态到用户态切换（二）]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51475569</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51475569</guid><author>armmfc</author><pubDate>Sun, 22 May 2016 16:20:18 +0800</pubDate><description><![CDATA[引言：（一）分析了0号进程(任务0)、内核线程、用户线程相关问题，有了这个铺垫，开始本文的分析。3）如何从内核空间切换到用户空间去的？
假设1号进程（内核态）init中已ramdisk_execute_command已传入，毕竟是要分析android系统的。static int __init kernel_init(void * unused) {
    if (!ramdisk_execute_]]></description><category></category></item><item><title><![CDATA[内核态到用户态切换分析（一）]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51420543</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51420543</guid><author>armmfc</author><pubDate>Sun, 15 May 2016 23:56:41 +0800</pubDate><description><![CDATA[引言：本文主要分析从内核态到用户态的切换，同时理清内核线程、用户空间进行之间的关系。内核进行一系统初始化后，会进入到rest_init，首先会产生一个kernel_init的内核线程，最终切换到用户空间的init进程，从而开始了用户空间初始化流程。先看下rest_init函数，static noinline void __init_refok rest_init(void)
    __releas]]></description><category></category></item><item><title><![CDATA[虚拟根文件系统与真实根文件系统]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51320056</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51320056</guid><author>armmfc</author><pubDate>Thu, 05 May 2016 09:21:21 +0800</pubDate><description><![CDATA[引言：根文件系统的noinitramfs已经分析，继续上文未完的initramfs和Android根文件系统分析，这两者有什么关系？1.initramfs对于initramfs，kernel 2.5开始引入，其实质是在内核镜像中附加一个cpio包（cpio一个用于备份、还原的工具，主要用于cpio和tar文件），在该cpio包中包含了一个小型的文件系统。当内核启动时，会尝试解开这人 cpio包，并且]]></description><category></category></item><item><title><![CDATA[根文件系统（rootfs）梳理]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51314581</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51314581</guid><author>armmfc</author><pubDate>Wed, 04 May 2016 14:23:44 +0800</pubDate><description><![CDATA[引言：在linux系统中，一直对根文件系统理解得模棱两可，是时候彻底梳理一下了，包括根文件系统是什么 、如何初始化、如何应用及Android系统中的根文件系统等问题。首先要弄清楚根文件系统是什么？以下英文部分摘自 
Kernel_2.3.6\Documentation\filesystemsramfs-rootfs-initramfs.txtWhat is rootfs? 
Rootfs is a]]></description><category></category></item><item><title><![CDATA[Android系统内核引导流程梳理]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51236723</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51236723</guid><author>armmfc</author><pubDate>Sun, 24 Apr 2016 23:09:41 +0800</pubDate><description><![CDATA[引言：]]></description><category></category></item><item><title><![CDATA[x86 linux系统内核引导流程梳理]]></title><link>https://blog.youkuaiyun.com/armmfc/article/details/51234132</link><guid>https://blog.youkuaiyun.com/armmfc/article/details/51234132</guid><author>armmfc</author><pubDate>Sun, 24 Apr 2016 16:18:36 +0800</pubDate><description><![CDATA[引言：在上节提到双系统关键技术之一关于系统启动问题，即在执行内核代码前做了些什么？是怎样从汇编代码过渡到c代码执行？arm芯片和x86芯片启动有什么不同？ram, sram, rom,prom, flash, nor flash, nand flash, fastboot,xloader, bootloader,uboot等有什么区别和联系？
结合这些问题去研究，这里推荐赵炯的《Linux内核完全注]]></description><category></category></item></channel></rss>