<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[QDJdeveloper]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/QDJdeveloper</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; QDJdeveloper]]></copyright><item><title><![CDATA[接口 VS 抽象类的区别？]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/104055006</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/104055006</guid><author>QDJdeveloper</author><pubDate>Mon, 20 Jan 2020 18:45:55 +0800</pubDate><description><![CDATA[在面向对象编程中，抽象类和接口是两个经常被用到的语法概念，是面向对象四大特性，以及很多设计模式、设计思想、设计原则编程实现的基础。比如，我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则，使用抽象类来实现面向对象的继承特性和模板设计模式等等。

   不过，并不是所有的面向对象编程语言都支持这两个语法概念，比如，C++ 这种编程语言只支持抽象类，不...]]></description><category></category></item><item><title><![CDATA[封装、抽象、继承、多态分别解决了那些编程问题]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/104002443</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/104002443</guid><author>QDJdeveloper</author><pubDate>Thu, 16 Jan 2020 12:23:01 +0800</pubDate><description><![CDATA[封装（Encapsulation）

首先，我们来看封装特性。封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口，授权外部仅能通过类提供的方式（或者叫函数）来访问内部信息或者数据。这句话怎么理解呢？我们通过一个简单的例子来解释一下。下面这段代码是金融系统中一个简化版的虚拟钱包的代码实现。在金融系统中，我们会给每个用户创建一个虚拟钱包，用来记录用户在我们的系统中的虚拟货币量。对于虚拟钱包的...]]></description><category></category></item><item><title><![CDATA[Android 删除项目中的无用资源]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/98185069</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/98185069</guid><author>QDJdeveloper</author><pubDate>Fri, 02 Aug 2019 11:55:14 +0800</pubDate><description><![CDATA[随着业务的快速迭代增长，App 里不断引入新的业务逻辑代码、图片资源和第三方 SDK，直接导致 APK 体积不断增长。包体积增长带来的问题越来越多，如流量费用增加、用户安装成功率降低，甚至可能会影响用户的留存率。APK 的瘦身已经是不得不考虑的事情。在尝试瘦身的过程中，我们借鉴了很多业界其他公司提供的方案，同时也针对自身特点，进行如下优化

一、删除无用的 png 图片文件和 xml...]]></description><category></category></item><item><title><![CDATA[Android ViewGroup 中 addView 方法使用详解]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/82794727</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/82794727</guid><author>QDJdeveloper</author><pubDate>Sat, 22 Sep 2018 00:48:37 +0800</pubDate><description><![CDATA[       在日常开发中 我们会涉及到很多架构 例如 MVC  MVP MVVM 等等，如果我们的项目本身就是用 MVP 或 MVVM 架构， 那么 Activity 和 Fragment 中的代码冗余可能会相对小一些 但是如果项目的设计架构本身就是 MVC 这样我们还可以用其他的一些方法来分解我们 Activity 和 Fragment 中的代码冗余，对，就像标题中说的，利用 ViewGrou...]]></description><category></category></item><item><title><![CDATA[设计模式之模板方法模式]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/80423172</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/80423172</guid><author>QDJdeveloper</author><pubDate>Thu, 24 May 2018 23:35:00 +0800</pubDate><description><![CDATA[      在模板（Template Pattern）中，一个抽象类公开定义了执行它的方式/模板，它的子类可以按需要重写方法实现，但调用将以抽象类中定义的方式进行，这种类型的设计模式属于行为型设计模式。今天我们就来一起学习探究下设计模式中的模板方法模式，下面是我们今天要学习的内容大纲一、模板方法模式简单介绍意图：定义一个操作中的算法骨架，而将一些步骤延迟到子类中，模板方法使得子类可以不改变一个算法...]]></description><category></category></item><item><title><![CDATA[设计模式之装饰者模式]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/80252882</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/80252882</guid><author>QDJdeveloper</author><pubDate>Wed, 09 May 2018 23:45:14 +0800</pubDate><description><![CDATA[      装饰者模式（Decorator Pattern）允许想一个现有的对象添加新的功能，同时又不改变其结构，这种类型的设计模式属于结构性模式，它是作为现有的类的一个包装，这种模式创建了一个装饰类，用来包装原有的类，并保证类方法签名完整的前提下，提供额外的功能。一、装饰者模式简单介绍意图：动态的给对象添加一些额外的职责，在不想增加很多子类的情况下扩展类，将具体功能职责划分，同时继承装饰者模式。...]]></description><category></category></item><item><title><![CDATA[Android 性能优化之内存优化]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79649398</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79649398</guid><author>QDJdeveloper</author><pubDate>Mon, 26 Mar 2018 13:14:02 +0800</pubDate><description><![CDATA[在移动操作系统上，通常物理内存有限，尽管 Android 的 Dalvik 虚拟机扮演了常规的垃圾回收的角色，但这并不意味着我们可以忽略 APP 的内存分配与释放，为了 GC 能够从 APP 中及时回收内存，我们在日常的开发中就需要时刻注意内存泄露，并在合适的时候来释放引用对象，对于大多数的 APP 来说，Dalvik 的 GC 会自动把离开活动线程的对象进行回收，接下来我们就来看看有关内存方面的...]]></description><category></category></item><item><title><![CDATA[Java 基础之多线程]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79472297</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79472297</guid><author>QDJdeveloper</author><pubDate>Fri, 09 Mar 2018 15:36:19 +0800</pubDate><description><![CDATA[一、什么是线程？它与进程有什么区别？为什么要使用多线程？      线程是指程序在执行过程中，能够执行程序代码的一个执行单元。在 Java 语言中线程有 4 种运行状态：运行、就绪、挂起和结束。       进程是指一段正在执行的程序。而线程有时也被称为轻量级的进程，各个线程之间共享程序的内存空间（代码段、数据段和堆空间）及一些进程级的资源（例如打开文件），但是各个线程拥有自己的栈空间      ...]]></description><category></category></item><item><title><![CDATA[Java 基础之容器]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79453497</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79453497</guid><author>QDJdeveloper</author><pubDate>Tue, 06 Mar 2018 11:25:23 +0800</pubDate><description><![CDATA[一、Java Collections 框架是什么     Java Collections 框架中包含了大量的集合接口以及这些接口的实现类和操作他们的算法（例如：排序、查找、反转、替换、复制、取最小元素、取最大元素等），具体而言，主要提供了 list(列表)、Queue(队列)、Set(集合)、Stack(栈)、和 Map(映射表，用于存放键值对)等数据结构，其中 List、Queue、Set、S...]]></description><category></category></item><item><title><![CDATA[Android 全面解析 Handler 异步消息处理机制]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79017597</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/79017597</guid><author>QDJdeveloper</author><pubDate>Sun, 14 Jan 2018 15:07:58 +0800</pubDate><description><![CDATA[      Android 是不容许在子线程中进行 UI 操作的，但是有些时候我们必须在子线程里去执行一些耗时任务，然后根据执行的结果来更新相应的 UI 控件，对于这种情况，Android 提供了一套异步消息处理机制，完美解决了在子线程中进行 UI 相关操作的问题，今天我们就来一起学习一下这个 Android 系统提供的异步消息处理机制，下面是我们学习的内容大纲                  ...]]></description><category></category></item><item><title><![CDATA[Java 基础知识总结]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78284170</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78284170</guid><author>QDJdeveloper</author><pubDate>Thu, 19 Oct 2017 14:10:23 +0800</pubDate><description><![CDATA[在面试过程中 Java 有很多面试题需要我们进行总结记忆，今天我们就来总结一下 java 基础中常见的面试题1. 接口的意义：规范、扩展和回调2. 抽象类的意义：为其子类提供一个公共的类型，封装子类中的重复内容，定义抽象方法，子类虽然有不同的实现，但是定义是一致的3. 内部类的作用：1）内部类可以用多个实例，每个实例都有自己的状态信息，并且与其他外围对象的信息相互独立2）在单个外围类中，可以让多个...]]></description><category></category></item><item><title><![CDATA[Java 阿里官方代码规范标准手册终极版下载]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78200098</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78200098</guid><author>QDJdeveloper</author><pubDate>Wed, 11 Oct 2017 09:39:01 +0800</pubDate><description><![CDATA[由于我们 Andorid 也是使用 Java 来开发的，所以在大部分命名风格上也是遵从 Java 的命名规范，Java 统一规范标准有助于提高行业编码规范水平，提高我们的开发质量和效率，大大降低代码维护成本，今年年初阿里就发布了 Java 命名的规约 --《阿里巴巴 Java 开发手册》，到现在经过几次迭代更新，已经非常完善，值得大家借鉴。










《阿里巴巴 J]]></description><category></category></item><item><title><![CDATA[Java 常用查找算法]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78192371</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78192371</guid><author>QDJdeveloper</author><pubDate>Tue, 10 Oct 2017 14:33:07 +0800</pubDate><description><![CDATA[面试中经常会问一些查找算法，今天来总结一下常用的查找算法一、顺序查找描述：从表中的第一个或者是最后一个记录开始，将表中记录的关键字和给定的值进行逐个比较，若某个记录的关键字和给定值相             等，则查找成功，若表中所记录的关键字和给定值都不相等，则查找失败。算法实现：    /**
     * 顺序查找
     *
     * @param searchKey 要查找的值
 ...]]></description><category></category></item><item><title><![CDATA[Android 使用 CrashHandler 来获取应用的 crash 信息]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78130226</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78130226</guid><author>QDJdeveloper</author><pubDate>Fri, 29 Sep 2017 09:09:52 +0800</pubDate><description><![CDATA[在日常开发的过程中应该不可避免的会发生 crash，无论你的程序写的多么完美，都不可能完全避免 crash 的发生，可能是由于 Android 底层的 bug，也可能是由于不充分的机型适配或者是糟糕的网络状况。当 crash 发生时，系统就会kill掉正在执行的程序，现象就是闪退，或者提醒用户程序已经停止运行，这对用户来说是很不友好的，也是我们不愿意看到的，更早的是当用户发生 crash，我们开发]]></description><category></category></item><item><title><![CDATA[Android  使用 Multidex 解决 65536 方法数越界问题]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78026471</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/78026471</guid><author>QDJdeveloper</author><pubDate>Tue, 19 Sep 2017 09:42:05 +0800</pubDate><description><![CDATA[在 Andorid 中单个 dex 文件所能包含的最大方法数为 65536，这包含 Android FrameWork、依赖的 jar 包以及应用本身的代码中所有的方法，65536 是一个很大的数字，一般来说一个简单的应用很难达到 65536 这个方法数，但是一些比较大型的应用以及大家开始越来越多的使用组件化开发，65536 就很容易达到，当应用的方法达到 65536 后，编译器就无法完成编译，会]]></description><category></category></item><item><title><![CDATA[Realm for Android 使用入门]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77848498</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77848498</guid><author>QDJdeveloper</author><pubDate>Mon, 11 Sep 2017 17:03:42 +0800</pubDate><description><![CDATA[Realm是一个手机数据库，是用来替代SQlite的解决方案，比SQlite更轻量级，速度更快，因为它有一套自己的数据库搜索引擎，并且还具有很多现代数据库的优点，支持JSON，流式API调用，数据变更通知，自动数据同步，简单身份验证，访问控制，事件处理，最重要的是跨平台，目前已经支持Java、Swift、Object - C、React - Native 等多种实现，今天我们就来简单的入门 Rea]]></description><category></category></item><item><title><![CDATA[Android  强大的滚动控件 RecyclerView]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77817205</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77817205</guid><author>QDJdeveloper</author><pubDate>Sun, 03 Sep 2017 23:29:29 +0800</pubDate><description><![CDATA[ListView 由于其强大的功能，在过去的 Andorid 开发中使用非常广泛，直到今天仍然还有很多人在使用着，不过 ListView 也有自己的缺陷，例如需要优化来提升运行效率，还有就是只能够纵向移动，我们要想实现横向移动就实现不了，ListView 的扩展性也不好
为此 Android 提供了一个更强大的控件--RecyclerView 它可以说是一个增强版的 ListView 不仅可以实现和 ListVie]]></description><category></category></item><item><title><![CDATA[Android Fragment 完全解析（下）]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77644945</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77644945</guid><author>QDJdeveloper</author><pubDate>Tue, 29 Aug 2017 11:04:57 +0800</pubDate><description><![CDATA[前几天我们分享了 Fragment 的基本使用，包括 Fragment 的概念、Fragment 设计原理、如何创建 Fragment、在 Fragment 中模拟返回栈、Fragmen t的生命周期以及 Fragment和 Activity 之间的通信等相关的内容，如果你对 Fragment 的基本使用还没有一个详细的了解，可以先阅读  Android
 Fragment 完全解析（上），今天]]></description><category></category></item><item><title><![CDATA[Android Fragment 完全解析（上）]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77527326</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77527326</guid><author>QDJdeveloper</author><pubDate>Fri, 25 Aug 2017 17:07:20 +0800</pubDate><description><![CDATA[Fragment（碎片），被称为Andorid第五大组件，也是继Activity、Service、BroadcastReceiver、ContentProvider四大组件之后有一个非常重要的组件，今天我们就来学习一下Fragment
一、概述
Fragment 表示 Activity 中的行为或用户界面部分，你可以将多个碎片组合在一个Activity中来构建多窗格 UI，以及在多个Activ]]></description><category></category></item><item><title><![CDATA[Android Activity 完全解析（下）]]></title><link>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77448858</link><guid>https://blog.youkuaiyun.com/QDJdeveloper/article/details/77448858</guid><author>QDJdeveloper</author><pubDate>Tue, 22 Aug 2017 15:48:24 +0800</pubDate><description><![CDATA[在之前的文章中我们介绍了Activity的生命周期，包括正常情况下Activity的生命周期，以及多个Activity交互和横竖屏切换Activity之间的生命周期，还介绍了如何启动系统的Activity，Activity之间简单的数据交互，以及传递大数据时遇到的问题，还有就是Activity的四种启动模式，如果你对Activity还不太了解，那么可以先阅读之前的两篇关于Activity的相关介绍]]></description><category></category></item></channel></rss>