<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[李江东]]></title><description><![CDATA[用代码书写这个世界。]]></description><link>https://blog.youkuaiyun.com/ljd2038</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ljd2038]]></copyright><item><title><![CDATA[Java类加载机制]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/83346091</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/83346091</guid><author>ljd2038</author><pubDate>Wed, 24 Oct 2018 16:26:13 +0800</pubDate><description><![CDATA[综述
在前面两篇文章主要分析了Java的内存以及Java的垃圾回收机制。在这篇文章中分析一下类是如何加载的。
类加载时机
类从被加载到虚拟机内存开始，到卸载出内存为止。它的整个生命周期包括：加载（Loading）、验证（Verification）、准备（Preparation）、解析（Resolution）、初始化（Initialization）、使用（Using）和卸载（Unloading）7个...]]></description><category></category></item><item><title><![CDATA[Java垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/83148803</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/83148803</guid><author>ljd2038</author><pubDate>Fri, 19 Oct 2018 17:09:41 +0800</pubDate><description><![CDATA[综述
在上篇文章中我们分析了Java内存空间的划分和分配，在这篇文章中我们来了解一下Java对于不再使用的对象是如何回收的。
回收的内存区域
在Java内存运行时，其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生，随线程而灭。栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈和入栈的操作。每一个栈中分配多少内存基本上是在类结构确定下来时就知道的。因此这几个区域的内存分配和回收都具有确定性，也...]]></description><category></category></item><item><title><![CDATA[Java内存划分和分配]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/83146816</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/83146816</guid><author>ljd2038</author><pubDate>Thu, 18 Oct 2018 15:03:41 +0800</pubDate><description><![CDATA[综述
在这边文章中我们将了解一下Java的内存区域是怎么划分的以及每个区域的功能。在了解Java每个内存区域的功能之后，进一步分析Java对象如何的创建和对象的内存分配，以及如何访问对象中的内存。最后学习一下Java堆内存的分代划分和内存分配。
Java内存区域划分
首先通过一张图来看一下Java虚拟机是如何划分内存空间的。

程序计数器：是一块较小内存，可以看作是当前线程所执行的字节码的行号指示...]]></description><category></category></item><item><title><![CDATA[使用Kotlin优雅的添加Fragment]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/79680515</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/79680515</guid><author>ljd2038</author><pubDate>Sat, 24 Mar 2018 18:47:59 +0800</pubDate><description><![CDATA[综述

在上面文章聊一聊Kotlin扩展函数run,with,let,also和apply的使用和区别中讲解Kotlin的几个扩展函数的使用和区别。那么在这篇文章中去自己定义一些扩展函数来更加优雅的去将添加Fragment到Activity中。



回顾Fragment使用

在使用Kotlin之前，首先回顾一下在Java中是如何添加一个Fragment到Activity当中的。



Frag...]]></description><category></category></item><item><title><![CDATA[聊一聊Kotlin扩展函数run,with,let,also和apply的使用和区别]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/79576091</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/79576091</guid><author>ljd2038</author><pubDate>Fri, 16 Mar 2018 01:02:43 +0800</pubDate><description><![CDATA[综述

和Java相比，在Kotlin中提供了不少新的特性。这次我们就来聊一聊Kotlin的一些通用的扩展函数run,with,let,also和apply。对于这五个扩展函数它们都存在于Kotlin的源码标准库当中，也就是在Standard.kt文件当中。它们都是适用于任何对象的通用扩展函数。但是对于run,with,let,also和apply这五个函数他们的用法及其相似，以至于我们无法确定去...]]></description><category></category></item><item><title><![CDATA[Lifecycles源码解读]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/77972910</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/77972910</guid><author>ljd2038</author><pubDate>Thu, 14 Sep 2017 01:13:36 +0800</pubDate><description><![CDATA[对于Activity和Fragment的生命周期都不会陌生，同样在我们自己的项目中也会需要做一需要依赖Activity和Fragment生命周期的操作。例如在onSaveInstanceState执行后不可在对Fragment进行操作，又比如我们需要在Activity的onDestroy中做一些释放的操作避免内存泄漏的情况出现。]]></description><category></category></item><item><title><![CDATA[Android稳定性测试工具Monkey的使用]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/54561511</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/54561511</guid><author>ljd2038</author><pubDate>Sun, 15 Jan 2017 13:07:12 +0800</pubDate><description><![CDATA[Monkey是一个命令行工具，它可以运行在我们的模拟器或者设备当中。它可以发送一些伪随机（pseudo-random）的用户事件流，例如点击，触摸，手势等。我们能够使用Monkey工具来对我们所开发的应用进行压力测试。Monkey测试是一种为了测试软件的稳定性，健壮性的快速有效的方法。Monkey程序介绍　　Monkey是Android自带的系统]]></description><category></category></item><item><title><![CDATA[Android性能优化之内存泄漏]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/53560829</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/53560829</guid><author>ljd2038</author><pubDate>Sun, 11 Dec 2016 16:34:40 +0800</pubDate><description><![CDATA[内存泄漏（memory leak）是指由于疏忽或错误造成程序未能释放已经不再使用的内存。那么在Android中，当一个对象持有Activity的引用，如果该对象不能被系统回收，那么当这个Activity不再使用时，这个Activity也不会被系统回收，那这么以来便出现了内存泄漏的情况。]]></description><category></category></item><item><title><![CDATA[Retrofit2源码解读]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51705964</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51705964</guid><author>ljd2038</author><pubDate>Sat, 18 Jun 2016 15:20:16 +0800</pubDate><description><![CDATA[Retrofit2的用法在Retrofit2.0使用详解这篇文章中已经详细介绍过了。那么在这就来看一下Retrofit2它是如何实现的。Retrofit2中它的内部网络请求是依赖于OKHttp，所以Retrofit2可以看做是对OKHttp的一次封装，那么下面就开看下Retrofit2是如何对OKHttp进行封装的。]]></description><category></category></item><item><title><![CDATA[Android视图的绘制流程(下)——View的Layout与Draw过程]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51636199</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51636199</guid><author>ljd2038</author><pubDate>Sat, 11 Jun 2016 13:26:55 +0800</pubDate><description><![CDATA[在上篇文章中Andtoid视图的绘制流程——View的测量对View的Measure过程进行了详细的说明。对于在View的绘制的整个过程中，在对View的大小进行测量以后，便开始确定View的位置并且将其绘制到屏幕上。也就是View的Layout与Draw过程。那么就来看一下是如何实现这两个过程的。View的Layout过程]]></description><category></category></item><item><title><![CDATA[Android视图的绘制流程(上)——View的测量]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51629053</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51629053</guid><author>ljd2038</author><pubDate>Fri, 10 Jun 2016 22:34:32 +0800</pubDate><description><![CDATA[View的绘制流程可以分为三大步，它们分别是measure，layout和draw过程。measure表示View的测量过程，用于测量View的宽度和高度；layout用于确定View在父容器的位置；draw则是负责将View绘制到屏幕中。下面主要来看一下View的Measure过程。]]></description><category></category></item><item><title><![CDATA[Java注解在Android中使用]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51586257</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51586257</guid><author>ljd2038</author><pubDate>Sat, 04 Jun 2016 21:40:41 +0800</pubDate><description><![CDATA[注解（Annotation）也被称为元数据(Metadata)，是在Java SE 5中提供的一个新特性。Annotation可以用来修饰类，属性，方法。在Java中，除了使用系统内置的Annotation以外，用户还能够通过自定义Annotation来实现所需要的功能。下面就来看一下如何使用自定义的Annotation。]]></description><category></category></item><item><title><![CDATA[Android官方MVP架构解读]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51477475</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51477475</guid><author>ljd2038</author><pubDate>Sun, 22 May 2016 22:24:28 +0800</pubDate><description><![CDATA[对于MVP (Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的。而对于Android应用的开发中本身可视为一种MVC架构。通常在开发中将XML文件视为MVC中的View角色，而将Activity则视为MVC中的Controller角色。不过更多情况下在实际应用开发中Activity不能够完全充当Controller]]></description><category></category></item><item><title><![CDATA[EventBus3.0源码解读]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51470734</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51470734</guid><author>ljd2038</author><pubDate>Sat, 21 May 2016 15:43:21 +0800</pubDate><description><![CDATA[EventBus是我们在项目当中最常用的开源框架之一。对于EventBus的使用方法也是非常的简单。然而EventBus内部的实现原理也不是很复杂。在这里便针对EventBus3.0的源码进行一下详细的分析。对于EventBus的详细使用可以参考EventBus3.0使用详解这篇文章。]]></description><category></category></item><item><title><![CDATA[Java设计模式之代理模式]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51440489</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51440489</guid><author>ljd2038</author><pubDate>Tue, 17 May 2016 23:56:28 +0800</pubDate><description><![CDATA[代理模式(Proxy Pattern)也称作为委托模式。在生活中我们也是处处可见，例如通过设置代理进行上网，委托律师来打官司，又或者是代理某个品牌来创业等等。而在开发中也是被经常被使用到的一种设计模式。对于代理模式的定义为:为其他对象提供一种代理以控制对这个对象的访问。对于代理模式可以分为两大类，分别是静态代理和动态代理。下面就开始对这两种类型的代理模式进行详细介绍。]]></description><category></category></item><item><title><![CDATA[Android中的事件分发机制（下）——View的事件处理]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51418401</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51418401</guid><author>ljd2038</author><pubDate>Sun, 15 May 2016 19:23:27 +0800</pubDate><description><![CDATA[在上篇文章Android中的事件分发机制(上)——ViewGroup的事件分发中，对ViewGroup的事件分发进行了详细的分析。在文章的最后ViewGroup的dispatchTouchEvent方法调用dispatchTransformedTouchEvent方法成功将事件传递给ViewGroup的子View。并交由子View进行处理。那么现在就来分析一下子View接收到事件以后是如何处]]></description><category></category></item><item><title><![CDATA[Android中的事件分发机制（上)——ViewGroup的事件分发]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51394605</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51394605</guid><author>ljd2038</author><pubDate>Fri, 13 May 2016 13:31:43 +0800</pubDate><description><![CDATA[Android中的事件分发机制也就是View与ViewGroup的对事件的分发与处理。在ViewGroup的内部包含了许多View，而ViewGroup继承自View，所以ViewGroup本身也是一个View。对于事件可以通过ViewGroup下发到它的子View并交由子View进行处理，而ViewGroup本身也能够对事件做出处理。下面就来详细分析一下ViewGroup对时间的分发处理。]]></description><category></category></item><item><title><![CDATA[ProGuard详解]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51308768</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51308768</guid><author>ljd2038</author><pubDate>Tue, 03 May 2016 23:46:35 +0800</pubDate><description><![CDATA[综述

　　对于ProGuard工具想必我们都不陌生，它能够通过移除无用代码，使用简短无意义的名称来重命名类，字段和方法。从而能够达到压缩、优化和混淆代码的目的。最终我们会获取一个较小的apk文件，并且我们这个通过ProGuard处理的apk文件更难于进行逆向工程。



ProGuard工作原理简介

　　ProGuard能够对Java类中的代码进行压缩（Shrink）,优化（Optimize）...]]></description><category></category></item><item><title><![CDATA[Java中的线程池]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51278508</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51278508</guid><author>ljd2038</author><pubDate>Thu, 28 Apr 2016 23:26:40 +0800</pubDate><description><![CDATA[在我们的开发中经常会使用到多线程。例如在Android中，由于主线程的诸多限制，像网络请求等一些耗时的操作我们必须在子线程中运行。我们往往会通过new Thread来开启一个子线程，待子线程操作完成以后通过Handler切换到主线程中运行。这么以来我们无法管理我们所创建的子线程，并且无限制的创建子线程，它们相互之间竞争，很有可能由于占用过多资源而导致死机或者OOM。]]></description><category></category></item><item><title><![CDATA[Java设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/ljd2038/article/details/51262518</link><guid>https://blog.youkuaiyun.com/ljd2038/article/details/51262518</guid><author>ljd2038</author><pubDate>Wed, 27 Apr 2016 17:17:49 +0800</pubDate><description><![CDATA[观察者模式（Observer Pattern）也叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式。这个模式的一个最重要的作用就是解耦。也就是将被观察者和观察者进行解耦，使得他们之间的依赖性更小，甚至做到毫无依赖。在观察者模式中它定义了一种一对多的依赖关系，使得当每一个对象改变状态，则所有依赖于它的对象都会得到通知并被自动更新。]]></description><category></category></item></channel></rss>