<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小飞哥的专栏]]></title><description><![CDATA[技术的提升,来自点滴积累]]></description><link>https://blog.youkuaiyun.com/wufeiqing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wufeiqing]]></copyright><item><title><![CDATA[使用 ddsperf 测量 DDS 系统的数据吞吐量和通信延迟]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/162753725</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/162753725</guid><author>wufeiqing</author><pubDate>Fri, 10 Jul 2026 10:33:34 +0800</pubDate><description><![CDATA[ddsperf 是一个命令行工具，集成了发布者（pub）、订阅者（sub）、Ping、Pong 四种角色，能够在单进程、双进程或多节点之间进行灵活的吞吐量和延迟测量。吞吐量：从 4 字节到 64KB 的多种负载类型延迟：微秒级精度，支持往返和单向两种模式资源消耗：CPU、内存、网络带宽的实时监控自动化验证：通过-Q质量检查集成到 CI/CD结合 Cyclone DDS 的极低延迟特性（单进程回环测试延迟可达 1-2μs），ddsperf 成为嵌入式到云端的 DDS 性能分析的利器。]]></description><category></category></item><item><title><![CDATA[Android中IntentService知识点面试，这篇文章就够了~]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/115542874</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/115542874</guid><author>wufeiqing</author><pubDate>Fri, 09 Apr 2021 13:47:04 +0800</pubDate><description><![CDATA[好久没复习IntentService了，直到昨天面试问到了IntentService相关知识点，这里就重新总结了一下，希望对大家掌握IntentService有一臂之力。

从名字上看，很直观地可以看出它是Service的子类，Service对于我们Android开发来讲再熟悉不过了。Service是Android四大组件之一，对用户不可见，但它也是运行在主线程的，那IntentService的特点也跟Service也是一样吗？我们带着这个问题往下分析。

我们知道做Android开发，为啥会有Androi]]></description><category></category></item><item><title><![CDATA[synchronized和volatile的区别以及synchronized的底层原理]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/115489070</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/115489070</guid><author>wufeiqing</author><pubDate>Wed, 07 Apr 2021 16:32:05 +0800</pubDate><description><![CDATA[https://cloud.tencent.com/developer/article/1465413
]]></description><category></category></item><item><title><![CDATA[某度车辆网Android一面题目]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/114839014</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/114839014</guid><author>wufeiqing</author><pubDate>Mon, 15 Mar 2021 16:31:26 +0800</pubDate><description><![CDATA[1、HashMap的源码(hash函数、1.7和1.8的区别，链表和红黑树的转换)。
2、在子线程创建Handler，执行Looper.loop后的代码怎么执行？
3、java虚拟机的原理
4、java有哪几种引用类型，使用在什么场景？
5、垃圾回收算法有哪些？
6、onNewIntent一般什么时候执行？
7、有做过哪些性能优化？
8、有用过哪些设计模式？请手写一个单例。
9、算法：判断一个链表有无环(手写代码)。
10、说下你做项目过程中，最能体现你技能的地方(比如解决一个很难的问题)。
...]]></description><category></category></item><item><title><![CDATA[字节跳动-广告系统Android岗位一面面试题]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/114446815</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/114446815</guid><author>wufeiqing</author><pubDate>Sat, 06 Mar 2021 16:46:07 +0800</pubDate><description><![CDATA[1、Native层调用java层有哪些注意事项？java层调用Native有哪些注意事项？
2、Android 7.0后jni调用有哪些注意事项？
3、如何保证子线程Looper的唯一性？
4、Handler中的postDelay方法如何保证到点执行？
5、性能优化有哪些方法？有哪些常用工具？LeakCanary的原理是什么？
6、Activity的生命周期方法有哪些？当onResume方法执行时，当前有哪些线程在执行？
7、算法题：有两个有序链表，合并成一个新的有序链表。
...]]></description><category></category></item><item><title><![CDATA[浅谈CountDownLatch用法，简单超实用]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/107842802</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/107842802</guid><author>wufeiqing</author><pubDate>Thu, 06 Aug 2020 16:43:47 +0800</pubDate><description><![CDATA[一、前言

1、countDownLatch是在jdk 1.5 被引入，跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。

2、存在于java.util.cucurrent包下。

二、概念

countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。

是通过一个计数器来实现的，计数器的初始值是线程的数量。每当一个线程执行完毕后，计数器的值就-1，当计数器的值为0时，表示所有线程都执行完毕，然后在]]></description><category></category></item><item><title><![CDATA[入门篇-学习Android安全和逆向开发的路线总结]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/103783211</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/103783211</guid><author>wufeiqing</author><pubDate>Tue, 31 Dec 2019 15:19:14 +0800</pubDate><description><![CDATA[此篇整理了最完整的--Android逆向学习线路知识体系。希望给迷糊的入门者指出一个明确的方向。真心建议：先正向开发几年再搞逆向吧……正向都不会破解的是啥？不看代码只会脱壳？只会xposed ？远远不够，hook只是很小一部分技术，xposed是hook功能众多框架中的一个而已。相对于任何程序的开发来说，逆向知识点很少很少了，关键是基础知识，基础就是正向开发经验。学习Android逆向之前，必备条...]]></description><category></category></item><item><title><![CDATA[浅谈Android8.1自动同步时间机制]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/100014363</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/100014363</guid><author>wufeiqing</author><pubDate>Thu, 22 Aug 2019 16:43:31 +0800</pubDate><description><![CDATA[好久没更新博客了，这一年来实在是太忙，上班、洗衣、做饭、看书、奶爸，忙确实是忙。最近工作中刚好研究了下Android8.1系统的自动同步时间机制，也学到了一点东西，leader也叫分享下，趁着这个机会就简单分享下我对Android8.1自动同步时间机制的理解：

                  
一、问题前沿

公司的测试妹子提了个问题：链接上wifi...]]></description><category></category></item><item><title><![CDATA[浅谈Android注解在日常开发中的简单使用]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/80527200</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/80527200</guid><author>wufeiqing</author><pubDate>Thu, 31 May 2018 17:36:57 +0800</pubDate><description><![CDATA[注解一词，你第一眼看过去可能会误解为是注释，其实不然，在Java技术中它是属于一个单独的功能分类模块，它有其独特的使用功能，接下我们就来先看一下Java中的注解：

一、Java注解

  我们简单来看下java的注解功能：

  适用场景——通过的类的反射获取类的方法和属性



  java中元注解有四个：@Retention @Target @Document @In...]]></description><category></category></item><item><title><![CDATA[Android之对话框AlertDialog源码浅析]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/80238648</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/80238648</guid><author>wufeiqing</author><pubDate>Tue, 08 May 2018 15:14:04 +0800</pubDate><description><![CDATA[一、前述    我们在应用app开发中经常会使用对话框，基本都是使用AlertDialog来构建，使用方式如下：AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(&quot;Title&quot;).setMessage(&quot;Message&quot;).create().show();用法很简单并且是链式调用，非常美观，接...]]></description><category></category></item><item><title><![CDATA[Android面向切面编程(AOP)浅析]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/80225706</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/80225706</guid><author>wufeiqing</author><pubDate>Mon, 07 May 2018 16:16:39 +0800</pubDate><description><![CDATA[一、前述    我们知道Java语言是面向对象的语言，有继承、多态、封装等相关概念，在项目实战中主要做到的是功能的模块化，模块与模块间低耦合，这是面向对象的核心思想。Android系统的framework层有四大服务，分别为ActivityManagerService、WindowManagerService、PowerManagerService和PackageManagerService,它们...]]></description><category></category></item><item><title><![CDATA[Android6.0系统源码编译相关命令]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/80224549</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/80224549</guid><author>wufeiqing</author><pubDate>Mon, 07 May 2018 13:47:10 +0800</pubDate><description><![CDATA[一、系统源码整编与单编    整编：1、source init_648.sh               2、source build/envsetup.sh               3、lunch 13              4、mm MPinyinIME 或 mmm device/mstar/common/apps/MPinyinIME/ 或进入目录 mm -B   依次执行上面这些命...]]></description><category></category></item><item><title><![CDATA[Android6.0系统源码之SystemUI导入Eclipse IDE编译]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/80222593</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/80222593</guid><author>wufeiqing</author><pubDate>Mon, 07 May 2018 11:59:58 +0800</pubDate><description><![CDATA[一、前述    SystemUI在系统的framework层，属于系统级源码，它依赖于系统很多自带的类库，不能导出直接编译，当然你在系统里可以 直接编译，如常见命令：mmm/mm等，今天我们着手来分析下如何将SystemUI源码导入Eclipse IDE来编译生成apk。二、导入SystemUI源码    SystemUI系统源码所在目录为：frameworks\base\packages\Sys...]]></description><category></category></item><item><title><![CDATA[App启动流程分析]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/80143086</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/80143086</guid><author>wufeiqing</author><pubDate>Sun, 29 Apr 2018 14:58:46 +0800</pubDate><description><![CDATA[当你在手机上安装一个app应用后，只要点击手机桌面上的app图标就可以开启这个应用，虽然这个操作很简单，但你知道它的实现原理吗？如果你是一位纯应用的app应用开发者，可能你根本不会去了解它是怎么实现的,因为你关注的只是app。如果你比较熟悉了，此博文略过哈。今天我们就一起来学习下app是如何在安卓系统中启动起来的？ 一、初步分析    我们的app应用安装在手机后在手机桌面上会有一个图标，这个图标...]]></description><category></category></item><item><title><![CDATA[ArrayList源码浅析]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/78025290</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/78025290</guid><author>wufeiqing</author><pubDate>Mon, 18 Sep 2017 23:52:03 +0800</pubDate><description><![CDATA[ArrayList这个类，对于Android开发者来说太简单不过了:它是一个集合类，用来存放元素。比如说经常的用法是这样：List list = new ArrayList();我们可以对list集合进行一些基本的操作——增删改查。当然这些只是停留于会用ArrayList，你是否了解ArrayList内部实现原理？你是否了解其内部增删改查机制？你是否对它的扩容机制了然于心？如果你知道的话，下面这些内]]></description><category></category></item><item><title><![CDATA[Android NDK开发(一)之java层调用C代码浅析]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/75206226</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/75206226</guid><author>wufeiqing</author><pubDate>Sun, 16 Jul 2017 15:37:35 +0800</pubDate><description><![CDATA[作为一名安卓程序员，起初都是从入门->初级程序员->中级程序员->高级程序员->资深程序员->再到专家这一过程的，当然也不排除有些人从入门到放弃啦，哈哈，开个玩笑。如果想成为一名高级程序员，最起码的，什么三方框架源码呀、高级UI、移动架构、NDK等技术还是要熟练，不然不会的话，人家就给你带上了个中级程序的称号。接下来废话不多说，进入今天的博客主题吧。今天我们来学习下NDK开发最基础的一个技术，大家知]]></description><category></category></item><item><title><![CDATA[Android使用SurfaceView和TextureView来播放视频]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/74139767</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/74139767</guid><author>wufeiqing</author><pubDate>Sun, 02 Jul 2017 17:30:08 +0800</pubDate><description><![CDATA[最近项目中在调试一个问题：app端呈现摄像头画面的调整，很坑的一个问题。项目经理估计搞不定，就把这个问题扔给我了，有点坑啊。因为播放摄像头视频的控件是继承于surfaceview的，于是乎就从surfaceview入手，因为这个控件是继承于surfaceview，又稍微做了些封装，结果机智的我就直接写了如下代码： ViewGroup.LayoutParams params = surfaceView]]></description><category></category></item><item><title><![CDATA[Android之自定义view及自定义属性]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/51275864</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/51275864</guid><author>wufeiqing</author><pubDate>Thu, 28 Apr 2016 16:57:48 +0800</pubDate><description><![CDATA[前一段时间面试碰到一面试题，说难也不难，说简单但也没接触过，可能是自己基础太薄弱了，这一问题面试官问到：自定义view很简单，但自定义view的属性如何添加呢？当时我没回答出来，一脸蒙蔽！后来回来上网查了下自定义view的自定义属性，才知道原来这么简单。我们知道自定义view，只要继承view,然后复写onMeasure、onLayout、onDraw方法即可实现，但是如何给自定义好的view添加自]]></description><category></category></item><item><title><![CDATA[我的 Android 开发实战经验总结]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/50999864</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/50999864</guid><author>wufeiqing</author><pubDate>Mon, 28 Mar 2016 17:52:02 +0800</pubDate><description><![CDATA[以前一直想写一篇总结 Android 开发经验的文章，估计当时的我还达不到某种水平，所以思路跟不上，下笔又捉襟见肘。近日，思路较为明朗，于是重新操起键盘开始码字一番。先声明一下哈，本人不是大厂的程序猿。去年毕业前，就一直在当前创业小团队从事自己热爱的打码事业至今。下面总结是建立在我当前的技术水平和认知上写的，如有不同看法欢迎留下评论互相交流。1.理解抽象，封装变化 
目前 Android 平台上绝大]]></description><category></category></item><item><title><![CDATA[详细解析Java中抽象类和接口的区别]]></title><link>https://blog.youkuaiyun.com/wufeiqing/article/details/50888499</link><guid>https://blog.youkuaiyun.com/wufeiqing/article/details/50888499</guid><author>wufeiqing</author><pubDate>Mon, 14 Mar 2016 17:51:50 +0800</pubDate><description><![CDATA[转载自：http://dev.yesky.com/436/7581936.shtml 
在Java语言中， abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在，才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性，甚至可以相互替换，因此很多开发者在进 行抽象类定义时对]]></description><category></category></item></channel></rss>