<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Aiden-Y]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yangwusa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yangwusa]]></copyright><item><title><![CDATA[安卓内存泄漏分析（Memory Analyzer Tools）笔记]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/115544047</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/115544047</guid><author>yangwusa</author><pubDate>Fri, 09 Apr 2021 11:42:44 +0800</pubDate><description><![CDATA[启动应用，获取.hprof文件

	adb remount（获取读写权限）
		adb shell am dumpheap com.iflytek.request sdcard/aaaa.hprof（将.hprof文件写入系统指定目录下，文件名字自定义）
	
	
	将.hprof文件拷贝出系统

	adb pull /sdcard/aaaa.hprof D:\logcat
		
	
	
	将.hprof文件转换成mat能识别的文件

	进入SDK\platform-tools的目录下
		D:\SDK...]]></description><category></category></item><item><title><![CDATA[通用设计模式整理]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/115063367</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/115063367</guid><author>yangwusa</author><pubDate>Thu, 08 Apr 2021 15:42:21 +0800</pubDate><description><![CDATA[目录

	单例设计模式

	工厂方法模式

	抽象工厂模式

	建造者模式

	原型模式

	享元模式

	门面模式

	适配器模式

	装饰模式

	策略模式

	模板方法模式

	观察者模式

	责任链模式

	单一职责原则

	开闭式原则

	里氏替换原则

	接口隔离原则

	依赖倒置原则
	


系列文章目录

提示：这里可以添加系列文章的所有文章的目录，目录需要自己手动添加
例如：第一章 Python 机器学习入门之pandas的使用

提示：写完文章后，目录可以自动生成，如何生成可参考右...]]></description><category></category></item><item><title><![CDATA[AndroidTest之Junit测试]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/115242210</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/115242210</guid><author>yangwusa</author><pubDate>Mon, 29 Mar 2021 16:47:30 +0800</pubDate><description><![CDATA[什么是单元测试

	对最小的可测试单元进行测试和验证
	
	
	为什么要进行单元测试

	
		单元测试使得我们可以放心修改、重构业务代码，而不用担心修改某处代码后带来的副作用。

		单元测试可以帮助我们反思模块划分的合理性，如果一个单元测试写得逻辑非常复杂、或者说一个函数复杂到无法写单测，那就说明模块的抽象有问题。

		单元测试使得系统具备更好的可维护性、具备更好的可读性;对于团队的新人来说，阅读系统代码可以从单元测试入手，一点点开始后熟悉系统的逻辑。
		
	
	
	sss
	
...]]></description><category></category></item><item><title><![CDATA[java泛型的说明及使用]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/115002863</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/115002863</guid><author>yangwusa</author><pubDate>Fri, 19 Mar 2021 17:10:30 +0800</pubDate><description><![CDATA[泛型技术产生的背景

	在泛型出来之前，程序员是通过object对象来存储任意值的集合，该方法在使用时，必须知道存储的类型，否组容易引起classcastexcption异常
	
	
	泛型操作的实现

	
		
package com.iflytek.request.genericity;

public class Genericity {


    public void point_Integer() {
        Point&lt;Integer&gt; point = new Poi..]]></description><category></category></item><item><title><![CDATA[java异常的捕获及处理]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114996065</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114996065</guid><author>yangwusa</author><pubDate>Fri, 19 Mar 2021 10:39:04 +0800</pubDate><description><![CDATA[异常的产生以及对于程序的影响

	异常是导致程序中断执行的一种指令流，异常一旦出现并且没有进行合理处理的话，那么程序就会中断
	
	
	异常的处理格式

	处理异常的关键字，三个关键字：try，catch，finally
		try，catch中，异常语句后的不执行，仅限try，catch中的
		finally不管是否出现异常，都执行
		
	
	
	异常的处理流程
	如上图为异常异常结构图
		Error和Exception 的区别
		Error是指JVM错误，此时程序还未执行，用户不可处理
	...]]></description><category></category></item><item><title><![CDATA[安卓线程池日常总结]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114397712</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114397712</guid><author>yangwusa</author><pubDate>Fri, 05 Mar 2021 15:37:21 +0800</pubDate><description><![CDATA[线程池主要包括四个组成部分

线程池管理器（ThreadPool），创建，管理，添加任务
	工作线程（poolWorker），在没有任务的时候等待，有任务的时候执行
	任务接口（Task），每个任务必须实现的接口，负责入口，收尾和状态
	任务队列（TaskQueue），任务队列，存放任务，缓存任务
线程池的作用，限制线程的数量，有效控制效率，线程池的产生主要是防止线程的反复创建和销毁带来的性能问题



四种线程池

newSingleThreadExecutor（单个的线程，死了新的顶上）
	newFi.]]></description><category></category></item><item><title><![CDATA[安卓View的绘制流程个人总结]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114364737</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114364737</guid><author>yangwusa</author><pubDate>Thu, 04 Mar 2021 15:31:56 +0800</pubDate><description><![CDATA[绘制流程说明

Activity启动之后，会从ViewRootImp开始进行遍历，从onmeasure,layout,draw依此进行，即测量，布局，绘制、
	measure：从父view中传递的MeasureSpec（计算大小的方法）大小，测量宽高
		layout：根据measure得到参数，确定位置，即四个点的位置
		draw：将View绘制上去
	
总结：自定义ViewGroup需要重写OnMeasure，OnLayout，Ondraw，自定义View则不需要OnLayout，原因是OnLayou]]></description><category></category></item><item><title><![CDATA[Java集合常见问题整理]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114325344</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114325344</guid><author>yangwusa</author><pubDate>Thu, 04 Mar 2021 10:34:37 +0800</pubDate><description><![CDATA[list，set，map的区

	list：存储不唯一，有序对象
		set：在list的基础上，存储有序不重复对象
		map：键值对，key不允许重复，value可以
	
	
	ArryList和LinkList区别

	ArryList和LinkList线程不安全
		ArryList查询快，LinkList插入删除快，设计结构导致，一个是使用Object，另一个使用链表
	
	
	ArryList和Vector的区别，为什么要用ArryList取代Vector呢？

	线程是否安全，ArryLi..]]></description><category></category></item><item><title><![CDATA[安卓四种引用类型]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114323549</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114323549</guid><author>yangwusa</author><pubDate>Wed, 03 Mar 2021 17:19:35 +0800</pubDate><description><![CDATA[强引用

	
		Object obj = new Object();

		只要obj还指向Object对象，Object对象就不会被回收

		obj = null; //手动置null
		
	
备注说明：只要引用还在，即使内存不足，jvm抛出OutOfMemoryError，也不会去回收，当系统强制回收才会去




	软引用
	
备注说明：当内存充足的时候，软引用对象不会被回收，当内存不足的时候，会去回收软引用对象，软引用对象回收完毕，内存还是不足，才会抛出OutOfMemoryError
...]]></description><category></category></item><item><title><![CDATA[java基本数据结构和算法，常见设计模式]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114264789</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114264789</guid><author>yangwusa</author><pubDate>Mon, 01 Mar 2021 16:31:07 +0800</pubDate><description><![CDATA[数据结构分类：线性和非线性两种

线性：数组，链表，队列，栈

非线性：树，图，表



线性详解：

数组：a[i]：查询快，插入删除慢，原因是存在内存中，有角标，直接查询，要插入删除，就得移动空间

链表：LinkedList ：一个一个从头差，查询慢，添加和删除快，只需要修改索引就ok

队列：LinkQueue：先进先出，多线程阻塞队列非常有用

栈：先进后出

数组与链表的区别：连续和不连续，内存静态分配和内存动态分配





算法分类

插入（插入和希尔）
	交换（冒泡和快排）
	选择（...]]></description><category></category></item><item><title><![CDATA[安卓：关于Binder的一些认识和理解]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114223867</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114223867</guid><author>yangwusa</author><pubDate>Mon, 01 Mar 2021 11:36:03 +0800</pubDate><description><![CDATA[什么是Binder（共享内核空间数据）

Binder是Android跨进程通信方式，它实现了IBinder接口，是安卓跨进程通信的主要桥梁，有着速度快，安全性高的特点

我们可以通过设计团队想要解决问题的思路去分析Binder的设计

如何知道调用了那个进程和哪个进程的函数
	客户端是如何将数据发送给服务端，以及服务端如何将数据返回给客户端
	如何屏蔽底层通信，让调用像调用本地方法一样便捷
Binder机制

系统给应用分配的空间有用户空间和内核空间，binder利用内核空间共享数据，对数据进行拷贝，从而]]></description><category></category></item><item><title><![CDATA[安卓：性能之启动时间的优化]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114214085</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114214085</guid><author>yangwusa</author><pubDate>Sun, 28 Feb 2021 11:41:43 +0800</pubDate><description><![CDATA[产生性能原因，为什么要做优化
	
可能在App主进程启动阶段或者在主界面启动阶段放了很多初始化其他业务的逻辑，而这些业务落地可能一开始并不需要用到导致，其结果是启动速度慢，需求要求对启动时间有要求，故需要优化其时间


	分析制定优化技术路线
	
分析之前我们需要了解我们要优化的地方，主要是application和mainactivity，下图是启动过程中一个大概的路程图



我们可以打印每个环节的执行时间，如下图




	统计数据后制定目标
	
根据打印时间统计耗时，酌情对需要的地方进行优化，制定..]]></description><category></category></item><item><title><![CDATA[安卓：关于内存抖动，内存泄漏，内存溢出]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/114212424</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/114212424</guid><author>yangwusa</author><pubDate>Sun, 28 Feb 2021 11:19:36 +0800</pubDate><description><![CDATA[前言：应用开发后期会会对应用做性能优化，此时肯定会伴随内存抖动，内存泄漏，内存溢出等问题，此时就会对这些问题进行排查分析，记录一下这些问题的的本质，产生的原因，处理方法（LeakCanary）

本质

开发者在前期开发过程中，未能合理的创建和及时的销毁对象，导致应有出现卡顿，内存增加，anr等问题
产生原因

内存抖动：指在短时间内有大量的对象被创建或者被回收的现象
	内存泄漏：一个长生命周期的对象持有了一个短生命周期的对象的引用，无法得到释放
	内存溢出：为对象申请不到足够的内存空间了
处理方法


	]]></description><category></category></item><item><title><![CDATA[APP架构基础知识]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/104848891</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/104848891</guid><author>yangwusa</author><pubDate>Sat, 14 Mar 2020 11:26:36 +0800</pubDate><description><![CDATA[1：本地构建仓库

2：代码仓库

3：层次，模块，控件

4：模块，组件，插件 ，控件区别（控件：自定义view）

答：组件，插件基于模块（android中叫module）（Android studio中叫gradle）

5：组件属于module（源码），插件发布以apk发布（二进制）

6：仓库 1：源码仓库（gitlab，github，gitee），2：构建仓库（二进制：aar，so...]]></description><category></category></item><item><title><![CDATA[Handler的一些认识和思考]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/103874431</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/103874431</guid><author>yangwusa</author><pubDate>Tue, 14 Jan 2020 10:23:50 +0800</pubDate><description><![CDATA[Handler作用：

线程之间切换的转换工具，安卓中主要作用是将子线程切换到UI线程，避免UI线程做耗时操作出现ANR

Handler代码架构：

Handler本身只负责发送和接收消息，在activity启动的时候创建一个loop，背后是一个MessageQueue管理着Message，而Looper循环主体，负责监听Message变化，从MessageQueue取出消息，然后向Handle...]]></description><category></category></item><item><title><![CDATA[Android界面Dailog透传Activity]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/103923988</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/103923988</guid><author>yangwusa</author><pubDate>Fri, 10 Jan 2020 14:43:18 +0800</pubDate><description><![CDATA[Dailog透传Activity实现

自定义Dailog重写dispatchTouchEvent（）方法


@Override
    public boolean dispatchTouchEvent(@NonNull MotionEvent ev) {
        Log.v(TAG, "dispatchTouchEvent");
        boolean result = ge...]]></description><category></category></item><item><title><![CDATA[我的股票交易成长经历]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/101209619</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/101209619</guid><author>yangwusa</author><pubDate>Mon, 23 Sep 2019 16:17:03 +0800</pubDate><description><![CDATA[分享一下我的股票成长经历，希望对大家有帮助

第一阶段：了解如何交易，模拟盘操作（大幅亏损，三十个点左右）

第二阶段：学习技术分析，蜡烛图，波浪原理，一些常见的技术指标，自己去理解其中的原理（小幅亏损，十五个点左右）

第三阶段：学习理论分析，道氏理论，江恩的一些理论书籍（浮亏五个点左右）

第四阶段（前期）：控制心态，按照自己的操作逻辑严格执行，这个很难（浮赢十五个点左右）

第四阶段（后期）...]]></description><category></category></item><item><title><![CDATA[Android的Touch事件分发理论逻辑讲解]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/97273632</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/97273632</guid><author>yangwusa</author><pubDate>Wed, 07 Aug 2019 17:18:20 +0800</pubDate><description><![CDATA[备注：本文主要是对安卓整个Touch事件理论的讲解，主要用于更快了解系统是如何实现这一切事件的分发

在了解安卓的事件分发之前，我们先看如下图表（1-1），安卓的事件分发基于下图进行，以下会对每个类一一介绍



                        图1-1

Activity：主要是封装视图（View）和上下文（Context），组成我...]]></description><category></category></item><item><title><![CDATA[代码编码总结（代码整洁之道）]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/97232089</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/97232089</guid><author>yangwusa</author><pubDate>Thu, 25 Jul 2019 14:32:04 +0800</pubDate><description><![CDATA[目录

1：为什么整洁代码如此重要

1：什么是整洁代码

2：整洁代码的好处

2：什么样的代码是整洁有序

1：命名

2：方法

3：类

4：注释

5：风格

1：为什么整洁代码如此重要

1：什么是整洁代码

整洁的代码逻辑简单清晰，可以根据命名得知意图，一个方法只做一件事情，每个类责任尽量单一，注释有实际意义和效果

2：整洁代码的好处

代码整洁的直接好处是利于后期维护，增加代码的...]]></description><category></category></item><item><title><![CDATA[谈一谈安卓mk文件用法]]></title><link>https://blog.youkuaiyun.com/yangwusa/article/details/95945430</link><guid>https://blog.youkuaiyun.com/yangwusa/article/details/95945430</guid><author>yangwusa</author><pubDate>Mon, 15 Jul 2019 14:24:43 +0800</pubDate><description><![CDATA[闲谈：Android源码是在Linux系统下来发的，里面涉及到的编译系统，如上图，图一的目录下有Makefile 脚本，执行图二的build文件夹内容，具体编译过程可参考：https://www.cnblogs.com/shakin/p/4615872.html连续的几篇博客



Android.mk文件：轻量级的makefile文件（makefile定义一些指令，类似脚本文件，指定...]]></description><category></category></item></channel></rss>