<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ScheduledThreadPoolExecutor原理源码解析]]></title><description><![CDATA[java线程池定时任务实现原理解析]]></description><link>https://blog.youkuaiyun.com/u010014658</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010014658]]></copyright><item><title><![CDATA[Android构建流程(Android Plugin)源码解析系列一：主流程]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/79282436</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/79282436</guid><author>u010014658</author><pubDate>Wed, 07 Feb 2018 17:27:51 +0800</pubDate><description><![CDATA[Gradle系列之Groovy基础 
Gradle系列之Gradle基础 
Gradle系列之自定义插件 
Android构建流程(Android Plugin)源码解析系列一：主流程

前言

首先，不了解groovy语言，gradle基础以及编写gradle插件基础的，请先前往这个系列之前的文章补充基础，不然下面看起来会吃力。 
本篇文章会从android编译插件的源码进行分析然后得出其工作原...]]></description><category></category></item><item><title><![CDATA[ScheduledThreadPoolExecutor原理源码解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/79219229</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/79219229</guid><author>u010014658</author><pubDate>Wed, 31 Jan 2018 16:43:14 +0800</pubDate><description><![CDATA[前言

ScheduledThreadPoolExecutor是用于处理定时任务的线程池，它继承ThreadPoolExecutor，拥有线程池的基础功能；而其定时处理的能力是来自于它定义的任务阻塞队列DelayedWorkQueue。通过上一篇文件得知线程池的运行原理，以及任务队列的作用，想要了解的可以移步线程池ThreadPoolExecutor原理解析



ScheduledThreadP]]></description><category></category></item><item><title><![CDATA[java线程池ThreadPoolExecutor源码解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/79205794</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/79205794</guid><author>u010014658</author><pubDate>Tue, 30 Jan 2018 14:37:47 +0800</pubDate><description><![CDATA[前言

线程池是我们工作中经常会用到的，但是能高效、准确地使用它却不容易。下面会通过原理和源码来分析线程池的工作原理。



ThreadPoolExecutor原理分析



ThreadPoolExecutor构造函数参数说明



    public ThreadPoolExecutor(int corePoolSize,
                              int]]></description><category></category></item><item><title><![CDATA[Gradle系列之自定义插件]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/79007138</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/79007138</guid><author>u010014658</author><pubDate>Mon, 08 Jan 2018 20:55:36 +0800</pubDate><description><![CDATA[Gradle系列之Groovy基础 
Gradle系列之Gradle基础 
Gradle系列之自定义插件 
Android构建流程(Android Plugin)源码解析系列一：主流程

什么是插件

插件，我们都很容易理解，它就是一个工具，帮助我们执行某个功能。gradle的插件就是在gradle编译的过程中执行特定业务的工具。gradle中的插件很常见，我们开发Android应用的时候，都会用...]]></description><category></category></item><item><title><![CDATA[Gradle系列之Gradle基础]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/78999031</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/78999031</guid><author>u010014658</author><pubDate>Mon, 08 Jan 2018 01:55:18 +0800</pubDate><description><![CDATA[Gradle系列之Groovy基础 
Gradle系列之Gradle基础 
Gradle系列之自定义插件 
Android构建流程(Android Plugin)源码解析系列一：主流程

gradle的工作流程

gradle工作流程分为三步


Initialization ： 这个阶段，主要是会分析哪些module将被构建。这个时候又一个很明显的操作就是这个阶段会解析settings.grad...]]></description><category></category></item><item><title><![CDATA[Gradle系列之Groovy基础]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/78893875</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/78893875</guid><author>u010014658</author><pubDate>Mon, 25 Dec 2017 16:10:58 +0800</pubDate><description><![CDATA[Gradle系列之Groovy基础 
Gradle系列之Gradle基础 
Gradle系列之自定义插件 
Android构建流程(Android Plugin)源码解析系列一：主流程

数据类型



groovy中没有基本数据类型，它任务任何事物都是对象；它会将基本数据类型包装成其对应的包装类型 



groovy中容器类




List: 其底层对应java的List接口，一般用Arra...]]></description><category></category></item><item><title><![CDATA[Dex文件内容解析APK相关信息]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/78742447</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/78742447</guid><author>u010014658</author><pubDate>Thu, 07 Dec 2017 16:01:32 +0800</pubDate><description><![CDATA[Dex文件格式我们都知道Android项目在构建的时候，会将class文件的jar包通过dx工具将其转化成dex文件，目的是将所有的class文件整合到一个dex文件中，这样的目的是降低冗余，因为每个class的数据格式都相同，dex通过将相同的内容方法一起，使文件结构更加紧凑。 
  通过上图可以看出，dex文件将方法信息、字段信息、类型信息等都相同的信息都放到了一起，从而省下很多空间。 
Dex]]></description><category></category></item><item><title><![CDATA[java多线程任务队列模型]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/77925567</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/77925567</guid><author>u010014658</author><pubDate>Sun, 10 Sep 2017 21:12:35 +0800</pubDate><description><![CDATA[此篇文章将从任务队列的设计；任务调度的方式（串行和并行）。代码很简单，主要是设计的思想。任务队列final class PendingPostQueue {
    // 含有头、尾指针的链表结构实现队列
    private PendingPost head;
    private PendingPost tail;    // 入队列
    synchronized void enqueu]]></description><category></category></item><item><title><![CDATA[微信分享详解]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/77063791</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/77063791</guid><author>u010014658</author><pubDate>Thu, 10 Aug 2017 17:14:14 +0800</pubDate><description><![CDATA[微信分享的接入步骤1.申请测试账号微信官方文档提供了测试账号 接口测试账号申请; 
当然也可以申请自己订阅号，但是个人公众号没有分享的接口权限，测试账号是有的（但是测试账号在真机上分享过程都是正确的，但是分享出去的内容是错误；但是在微信提供的测试工具上是正确的）。所以只有企业订阅号才能在真机上真正的分享成功，因为这要收钱嘛，不然我拿着这个测试账号的appid和appsecret就可以用了。2.设置j]]></description><category></category></item><item><title><![CDATA[微信分享实践和踩坑实践]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/76636653</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/76636653</guid><author>u010014658</author><pubDate>Thu, 03 Aug 2017 16:42:28 +0800</pubDate><description><![CDATA[微信分享的接入步骤1.申请测试账号微信官方文档提供了测试账号 接口测试账号申请; 当然也可以申请自己订阅号，但是个人公众号没有分享的接口权限，测试账号是有的（但是测试账号在真机上分享过程都是正确的，但是分享出去的内容是错误；但是在微信提供的测试工具上是正确的）。所以只有企业订阅号才能在真机上真正的分享成功，因为这要收钱嘛，不然我拿着这个测试账号的appid和appsecret就可以用了。2.设置js]]></description><category></category></item><item><title><![CDATA[mint-ui swipe组件源码解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/73605167</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/73605167</guid><author>u010014658</author><pubDate>Thu, 22 Jun 2017 15:54:38 +0800</pubDate><description><![CDATA[前叙mint-ui组件库中swipe组件，实现的是常见的轮播图效果。但是它的实现方式，和常见的实现有所不同。 
常见的实现方式： 通过移动轮播图的wrapper来实现item的切换效果(也就是修改wrapper的translate3d属性来实现)。如果支持循环播放，需要在首部插入一个最后一个轮播图item的clone版，以及在尾部插入一个第一个轮播图item的clone版。 
swipe组件实现的方]]></description><category></category></item><item><title><![CDATA[Vue-lazyload原理详解之源码解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/73477232</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/73477232</guid><author>u010014658</author><pubDate>Mon, 19 Jun 2017 21:18:43 +0800</pubDate><description><![CDATA[前叙本来想要研究mint-ui组件库的Lazy load组件，没想到翻看它的源码，发现它完全引用的vue-lazyload项目，直接引用，没有丝毫修改。 
因此转而研究vue-lazyload，代码并不多，几百行吧，有兴趣的可以读一下。简单接入示例html代码：<div id="app">
    <li v-for="img in imgList">
        <img v-lazy="im]]></description><category></category></item><item><title><![CDATA[vue mint-ui源码解析之loadmore组件]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/72912200</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/72912200</guid><author>u010014658</author><pubDate>Thu, 08 Jun 2017 12:04:55 +0800</pubDate><description><![CDATA[接入
官方接入文档mint-ui loadmore文档
接入使用Examplehtml<div id="app">
    <mt-loadmore :top-method="loadTop" :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :max-distance="150"
                 @top-sta]]></description><category></category></item><item><title><![CDATA[vue muit-ui infinite-scroll源码解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/72629244</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/72629244</guid><author>u010014658</author><pubDate>Mon, 22 May 2017 19:24:59 +0800</pubDate><description><![CDATA[infinite scroll基本使用vue的mint-ui的infinite scroll的基本使用地址：infinite-scroll接入指南. 
简单解释一下： 
1、指令接受的method：处理loadmore回调 
2、自定义属性infinite-scroll-disabled：为false时:不会进行是否到达底部的判断,因此就触发不了loadmore回调 
3、自定义属性infinite]]></description><category></category></item><item><title><![CDATA[Vuejs中nextTick()异步更新队列源码解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/72510305</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/72510305</guid><author>u010014658</author><pubDate>Thu, 18 May 2017 21:13:47 +0800</pubDate><description><![CDATA[vue官网关于此解释说明如下：vue2.0里面的深入响应式原理的异步更新队列 
官网说明如下： 
只要观察到数据变化，Vue 将开启一个队列，并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发，只会一次推入到队列中。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要。然后，在下一个的事件循环“tick”中，Vue 刷新队列并执行实际（已去重的）工作。]]></description><category></category></item><item><title><![CDATA[Android组件化之模块解耦和通信]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/53791067</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/53791067</guid><author>u010014658</author><pubDate>Thu, 22 Dec 2016 20:07:26 +0800</pubDate><description><![CDATA[针对Android组件化，组件间解耦和通信而创建的一个轻量级的框架]]></description><category></category></item><item><title><![CDATA[Android中ClassLoader源码解析之真的是你认为的ClassLoader]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/52576443</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/52576443</guid><author>u010014658</author><pubDate>Mon, 19 Sep 2016 16:54:52 +0800</pubDate><description><![CDATA[1.前言
首先，阅读本文章之前，需要了解java中的ClassLoader的基本原理，包括java中的三级ClassLoader机制以及ClassLoader的委托机制，否则下面的内容会不知道在讲什么。虽然Android中的ClassLoader也是遵循其委托机制，但是他没有遵循java的三级ClassLoader机制，而是自己造了一个，修改了java系统的代码，如果将两者混淆的话，在Andro]]></description><category></category></item><item><title><![CDATA[CoordinatorLayout源码解析，探索Behavior机制的奥秘]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/52024517</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/52024517</guid><author>u010014658</author><pubDate>Mon, 25 Jul 2016 21:20:32 +0800</pubDate><description><![CDATA[1.文章内容概述
本文主要是针对Behavior的运作机制，通过对CoordinatorLayout的源码中对此Behavior的执行过程进行分析，得出其运行原理。本文主要是针对behavior的layout child的方式，touch事件的处理，以及内嵌滑动事件的处理进行重要分析。
2.阅读本文前的准备工作
关于内嵌滑动，这是在android5.0之后google提出的，并且在suppo]]></description><category></category></item><item><title><![CDATA[Android-Universal-Imageloader源码完全解析]]></title><link>https://blog.youkuaiyun.com/u010014658/article/details/51838814</link><guid>https://blog.youkuaiyun.com/u010014658/article/details/51838814</guid><author>u010014658</author><pubDate>Wed, 06 Jul 2016 17:02:32 +0800</pubDate><description><![CDATA[现在网上对此Imageloader图片加载的开源框架的解析有好多文章，有好多只是简单分析它的实现，此篇文章是通过自己对其源码的分析，对它的实现方式进行分析，针对它用到的重点知识点进行重点介绍，以及自己对于此框架的理解。下面的分析从以下两个方面进行分析。
Imageloader的初始化
Imageloader加载图片的实现方式分析
1.Imageloader的初始化
Imageloader是]]></description><category></category></item></channel></rss>