<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[z976506748的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/z976506748</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; z976506748]]></copyright><item><title><![CDATA[LeetCode算法题 第一天]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/79172626</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/79172626</guid><author>z976506748</author><pubDate>Fri, 26 Jan 2018 15:13:03 +0800</pubDate><description><![CDATA[有时间就刷两道算法题
1.Two sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and ]]></description><category></category></item><item><title><![CDATA[接下来30天的学习计划]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78860739</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78860739</guid><author>z976506748</author><pubDate>Thu, 21 Dec 2017 10:30:28 +0800</pubDate><description><![CDATA[1.完成RxJava+OkHttp demo,在使用中较为深入的理解两大框架的源码和原理，熟练使用。


2.重视基础，开始复习Java数据结构和算法，并学习新的算法，辅助网站为visualgo.net/]]></description><category></category></item><item><title><![CDATA[简单记录一个PoupWindow使用时碰到的问题]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78713238</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78713238</guid><author>z976506748</author><pubDate>Mon, 04 Dec 2017 20:16:28 +0800</pubDate><description><![CDATA[首先需要知道Dialog在使用的时候初始化时不能使用ApplicationContext，简单来说是因为ApplicationContext的getSystemService(Context.WINDOW_SERVICE)方法中获取到的WindowManagerImpl的实例中，token值为空，导致后续展示时在调用WindowManager的addView方法时抛出BadTokenExcepti]]></description><category></category></item><item><title><![CDATA[2017/11/6 学习日记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78462749</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78462749</guid><author>z976506748</author><pubDate>Mon, 06 Nov 2017 22:24:41 +0800</pubDate><description><![CDATA[1.AIDL
   大概步骤：
                    server端 1.创建AIDL文件，系统会通过Java语言生成接口，同时会生成一个stub,这个stub是接口的一个内部类，他继承于binder.
                                   2.实现接口方法
                                   3.实现Se]]></description><category></category></item><item><title><![CDATA[2017/10/30 学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78389442</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78389442</guid><author>z976506748</author><pubDate>Mon, 30 Oct 2017 00:49:24 +0800</pubDate><description><![CDATA[1.Synchronized的实现原理
   简单的一句总结就是，Synchronized是多种锁的封装体，它并不能控制线程的状态。这里说的多种锁包括对象锁，自旋锁，轻量锁和偏向锁。
   每个堆内存的对象中包含一个对象头，对象头中会创建一个Monitor对象，这个对象同时只能被一个Thread持有，Monitor会控制我们线程的状态，它只会在我们的对象锁中使用。
   过程：当我们的对象未]]></description><category></category></item><item><title><![CDATA[2017/10/28 学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78370802</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78370802</guid><author>z976506748</author><pubDate>Sat, 28 Oct 2017 00:12:55 +0800</pubDate><description><![CDATA[今天简单复习了JVM的内存组成，以及工作中常见的内存泄露原因，以及内存分析


1.首先说下JVM的内存组成，按照我的理解看来，可以简化成三个比较常接触的内存区域，方法区，堆，栈。
   那么比如我们static修饰的常量，方法，类名等是存在我们的方法区中。我们通过new方法创建的对象都是存在我们的堆内存中，那么引用我们这些对象的实例都是存在我们的栈中。


2.GC 

   ]]></description><category></category></item><item><title><![CDATA[2017/10/22学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78314755</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78314755</guid><author>z976506748</author><pubDate>Mon, 23 Oct 2017 00:38:59 +0800</pubDate><description><![CDATA[首先恭喜WE
1.ViewRootImpl创建的时还会创建一个Choreographer，以及一个surface


关于Choreographer：可以理解成一个事件处理器，内部主要有三大部分，FrameHandler,callBackQueque,Receiver,那么它对事件的处理过程大概为：首先它会通过一些方法获取到surfaceFlinger的相关fd,并将它们交给Looper监]]></description><category></category></item><item><title><![CDATA[2017/10/21 学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78304419</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78304419</guid><author>z976506748</author><pubDate>Sat, 21 Oct 2017 16:21:03 +0800</pubDate><description><![CDATA[学习自http://www.cnblogs.com/samchen2009/p/3364327.html，虽然是13年的文章，但是总结的真的非常棒。

关于GUI系统：
GUI组成部分：ActivityManager,Activity,InputManager,WindowManager,surfaceFlinger
关于窗口：对于Activity来说，是一个抽象类，Activity中最外]]></description><category></category></item><item><title><![CDATA[2017/10/12学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78216556</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78216556</guid><author>z976506748</author><pubDate>Thu, 12 Oct 2017 16:35:45 +0800</pubDate><description><![CDATA[1.对ImageLoader的理解
     该开源框架支持从网络，本地缓存，assets等位置加载图片
     ImageLoader的加载大概流程为：UI层请求图片->先去内存中通过Key寻找图片资源->如果内存中没有去磁盘空间中寻找图片资源，如果有则通过BitapFactory中的方法解析图片并回传->若磁盘空间中没有->异步请求网络图片->请求成功后保存在内存和磁盘空间中，并显示在U]]></description><category></category></item><item><title><![CDATA[2017/10/10学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78196730</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78196730</guid><author>z976506748</author><pubDate>Tue, 10 Oct 2017 20:00:01 +0800</pubDate><description><![CDATA[1. 应用架构设计
     MVC模式：Module（数据层），View（显示层），controler(控制层)，缺点是View和Module层耦合严重，Activity中的职责过多，代码臃肿。

     MVP模式：Module（数据层），View（显示层），Presenter（前边两者的桥梁），简单来说就是避免数据层和View显示层有直接的操作接触。
               ]]></description><category></category></item><item><title><![CDATA[2017/10/05   明天就回去了..]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78161786</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78161786</guid><author>z976506748</author><pubDate>Thu, 05 Oct 2017 16:36:22 +0800</pubDate><description><![CDATA[明天就回上海了，今天多陪陪家人，今天简单复习了Android的消息机制


1.大概流程为，UI线程在最开始创建的时候就创建了一个Looper对象，在Looper的构造方法中，同时会创建一个Messagequeque这样的链表结构的队列，Looper会调用Loop方法不断的去队列中提取消息，然后回调我们在Handler中实现的方法，那么塞入队列的载体是Message对象，塞数据是通过Hand]]></description><category></category></item><item><title><![CDATA[2017/10/04（上午）学习日记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78157708</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78157708</guid><author>z976506748</author><pubDate>Wed, 04 Oct 2017 11:45:31 +0800</pubDate><description><![CDATA[复习前面知识。

Synchronized 锁住的是一个对象，而不是锁住代码。
AsyncTask本质上是一个静态线程池，所有的异步任务都在这个线程池中执行，处理完成之后通过handler通知UI层级进行刷新。]]></description><category></category></item><item><title><![CDATA[2017/10/03 学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78155533</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78155533</guid><author>z976506748</author><pubDate>Tue, 03 Oct 2017 17:43:53 +0800</pubDate><description><![CDATA[1.Thread的六大状态
   首先通过NewThread创建
   调用Start方法去让线程进入可运行状态（Runable），但是什么时候运行由系统决定。
   通过wait sleep方法可以进入WaitingTimed状态，类似的还有Waiting状态
   请求锁进入阻塞状态（Blocked）
   结束状态
2.线程的两种创建方式
   （1）.直接继承Thread实现]]></description><category></category></item><item><title><![CDATA[2017/10/2 上午  学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78150347</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78150347</guid><author>z976506748</author><pubDate>Mon, 02 Oct 2017 11:27:16 +0800</pubDate><description><![CDATA[View的绘制流程
1.首先是measure 即为获取View的宽高
    需要注意的是measure方法为final方法，因此该方法是不能重写的，如果我们想写一个自定义View就去重写onMeasure()方法。
    MeasureSpec作为View的内部类，在我的理解中它分为两部分，一部分是specMode,一部分是specSize,前者决定了View的测量模式，
   测量模]]></description><category></category></item><item><title><![CDATA[2017/10/1  学习日记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78147994</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78147994</guid><author>z976506748</author><pubDate>Sun, 01 Oct 2017 17:04:51 +0800</pubDate><description><![CDATA[1. Activity的组成 以及 绘制的流程
    结构组成：Activity是由最外层的PhoneWindow包裹着它的内部类DecorView,DecorView中又根据不同的情况加载不同的布局，（带有Title或不带）+ContentView.
    流程：
               先说说DecorView的创建过程： Activity的初始化流程是从第一次setConte]]></description><category></category></item><item><title><![CDATA[2017/9/30 学习笔记]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/78144782</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/78144782</guid><author>z976506748</author><pubDate>Sat, 30 Sep 2017 18:34:22 +0800</pubDate><description><![CDATA[复习，学习提高日记。]]></description><category></category></item><item><title><![CDATA[Android开发--Binder]]></title><link>https://blog.youkuaiyun.com/z976506748/article/details/75111292</link><guid>https://blog.youkuaiyun.com/z976506748/article/details/75111292</guid><author>z976506748</author><pubDate>Fri, 14 Jul 2017 14:53:58 +0800</pubDate><description><![CDATA[Binder
 作用：进程间通信。
 组成：可以简单地理解为四个部分
            1.BinderServer 可理解为服务端，与BinderClient为相对概念，可相互替换。
            2.BinderClient 可理解为客户端。
            3.Binder驱动（暂未详细了解）
            4.ServerManager 可理解]]></description><category></category></item></channel></rss>