<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lemonGuo的大脑皮层、小脑、海马体、杏仁核.....]]></title><description><![CDATA[吾生也有涯，而知也无涯 。以有涯随无涯，殆已！]]></description><link>https://blog.csdn.net/ITermeng</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ITermeng]]></copyright><item><title><![CDATA[走进RecyclerView未解之迷 ------ 原理和优化]]></title><link>https://blog.csdn.net/ITermeng/article/details/106205341</link><guid>https://blog.csdn.net/ITermeng/article/details/106205341</guid><author>ITermeng</author><pubDate>Tue, 19 May 2020 00:31:56 +0800</pubDate><description><![CDATA[（前言暂位符号）


View holder究竟是什么？
Problem

View holder 和 item view 是什么关系？ 一对一？一对多？多对一？
View holder 解决的是什么问题？
View holder 和 ListView 的 item view 的复用有什么关系？

没有实现 View holder 的 getView() 的例子如下，大量的 findViewById() 方法被调用，看似不是很大的开销，但其方法的底层实现是深度优先搜索，时间复杂度是O(n)。

完全可以避免]]></description><category></category></item><item><title><![CDATA[Java笔记一问三不知------泛型的秘密]]></title><link>https://blog.csdn.net/ITermeng/article/details/106205247</link><guid>https://blog.csdn.net/ITermeng/article/details/106205247</guid><author>ITermeng</author><pubDate>Tue, 19 May 2020 00:28:24 +0800</pubDate><description><![CDATA[泛型的创建和实例化
1.常见创建使用
（1）创建一个泛型类
public class Wrapper&lt;T&gt; {
    private T instance;
    public T getInstance() {
        return instance;
    }
    public void setInstance(T instance) {
        this.instance = instance;
    }
}

//Wrapper Test
public cla]]></description><category></category></item><item><title><![CDATA[Gradle再回首之重点归纳]]></title><link>https://blog.csdn.net/ITermeng/article/details/106204720</link><guid>https://blog.csdn.net/ITermeng/article/details/106204720</guid><author>ITermeng</author><pubDate>Tue, 19 May 2020 00:12:45 +0800</pubDate><description><![CDATA[回顾
Android应用的构建过程是一个复杂的过程，涉及到很多工具。首先所有的资源文件都会被编译，并且在一个R文件中引用，然后Java代码被编译，通过dex工具转换成dalvik字节码。最后这些文件都会被打包成一个APK文件，此应用被最终安装到设备之前，APK会被一个debug或者release的key文件签名。
一句话定义Gradle

Gradle是一种构建工具，其构建基于Groovy（DSL） ------ 一种基于JVM的动态语言，用于申明构建和创建任务，让依赖管理更简单。

年少时第一次对Grad]]></description><category></category></item><item><title><![CDATA[小程序调研相关文章链接]]></title><link>https://blog.csdn.net/ITermeng/article/details/83421734</link><guid>https://blog.csdn.net/ITermeng/article/details/83421734</guid><author>ITermeng</author><pubDate>Fri, 26 Oct 2018 22:36:44 +0800</pubDate><description><![CDATA[小程序原理介绍文章大都简单谈论了一下技术实现架构，科普性偏多，可重点看下标记星星链接。
此次调研除了之前已知的致力于统一端的美团MpVue、京东Taro前端框架，还了解了去哪儿的娜娜奇脚手架，基于 React 的多端小程序转译框架，主要通过实现不同的render，以支持在微信、百度、支付宝小程等hybird上运行，对于小程序的覆盖性更广，不过与Taro框架都是以react为基础编写代码。


小程...]]></description><category></category></item><item><title><![CDATA[Weex中Scroller搭配Refresh滑动时的bug：首次触摸界面时会抖动（跳动）一大段距离]]></title><link>https://blog.csdn.net/ITermeng/article/details/81433878</link><guid>https://blog.csdn.net/ITermeng/article/details/81433878</guid><author>ITermeng</author><pubDate>Sun, 05 Aug 2018 18:43:43 +0800</pubDate><description><![CDATA[一. 确认过眼神，是不想遇见的bug

  



如上三张图所示：


第一张是【还未刷新】的效果，即初始界面；
第二张是【正常刷新】效果，白色区域随着手指下拉而显示，这里设置了margin值，小球是从navbar下来的。
第三张图是【非正常跳动】效果，即初次进入界面时准备下拉刷新，但并未出现第二张的效果，而是猛然跳动一大块距离！令人费解！


起初笔者天真地以为是因为对Refresh和Scro...]]></description><category></category></item><item><title><![CDATA[Android 高级UI解密 (六) ：结合Activity启动源码剖析View的诞生]]></title><link>https://blog.csdn.net/ITermeng/article/details/69398226</link><guid>https://blog.csdn.net/ITermeng/article/details/69398226</guid><author>ITermeng</author><pubDate>Thu, 21 Jun 2018 14:38:09 +0800</pubDate><description><![CDATA[1]]></description><category></category></item><item><title><![CDATA[Android 高级UI解密 (五) ：PathMeasure截取片段 与 切线（新思路实现轨迹变换）]]></title><link>https://blog.csdn.net/ITermeng/article/details/80291361</link><guid>https://blog.csdn.net/ITermeng/article/details/80291361</guid><author>ITermeng</author><pubDate>Mon, 11 Jun 2018 15:06:50 +0800</pubDate><description><![CDATA[一. PathMeasure基础API介绍

顾名思义，PathMeasure是一个用来测量Path的类，以下先来介绍API基本使用，它的方法也比较少。

1. 构造方法




  方法名
  释义



  PathMeasure()
  创建一个空的PathMeasure


  PathMeasure(Path path, boolean forceClosed)
  创建 PathMea...]]></description><category></category></item><item><title><![CDATA[Android 高级UI解密 (四) ：花式玩转贝塞尔曲线（波浪、轨迹变换动画）]]></title><link>https://blog.csdn.net/ITermeng/article/details/80264577</link><guid>https://blog.csdn.net/ITermeng/article/details/80264577</guid><author>ITermeng</author><pubDate>Mon, 21 May 2018 21:19:03 +0800</pubDate><description><![CDATA[

一. 贝塞尔初识

概念


  A Bézier curve (pronounced [bezje] in French) is a parametric curve frequently used in computer graphics and related fields. Generalizations of Bézier curves to higher dimensions ar...]]></description><category></category></item><item><title><![CDATA[Android 高级UI解密 (三) ：Canvas裁剪 与 二维、三维Camera几何变换（图层Layer原理）]]></title><link>https://blog.csdn.net/ITermeng/article/details/78845398</link><guid>https://blog.csdn.net/ITermeng/article/details/78845398</guid><author>ITermeng</author><pubDate>Mon, 21 May 2018 15:35:19 +0800</pubDate><description><![CDATA[Canvas变换技巧

（1）平移Tanslate

void translate (float dx, float dy)

API作用：用指定的转换对当前matrix 进行预处理。 
参数说明： x、y轴移动的距离。

注意：这里牵扯到canvas的概念，我们通常称之为“画布”，在此画布上可以绘制任何图像。此API的功能就是移动画布位置，需要强调的是每次canvas执行drawXXX的时候就会]]></description><category></category></item><item><title><![CDATA[浅析RxJava 1.x&2.x版本区别及原理（三）：1.x 版本 Scheduler调度线程变换及subscribeOn、observeOn方法源码解析]]></title><link>https://blog.csdn.net/ITermeng/article/details/80200221</link><guid>https://blog.csdn.net/ITermeng/article/details/80200221</guid><author>ITermeng</author><pubDate>Sun, 06 May 2018 16:44:05 +0800</pubDate><description><![CDATA[上两篇文章都是对比分析RxJava中较基本的订阅流程与操作，即Observable、Flowable等基本元素的源码，还有map、lift操作符的源码。在对Rxjava框架有了一个坚实的基础后，此篇文章将直袭Rxjava中最闪亮的Point，也是Android猿平常在开发中经常遇到的需求 —— 线程切换，主线程中需要进行耗时操作，要求切换到子线程，子线程中需要进行UI更新，要切切换到主线程。以上切...]]></description><category></category></item><item><title><![CDATA[浅析RxJava 1.x&2.x版本区别及原理（二）：map、lift操作符源码解析]]></title><link>https://blog.csdn.net/ITermeng/article/details/80179149</link><guid>https://blog.csdn.net/ITermeng/article/details/80179149</guid><author>ITermeng</author><pubDate>Fri, 04 May 2018 17:08:21 +0800</pubDate><description><![CDATA[上一篇文章讲解了RxJava 1.x&amp;amp;2.x版本的基本元素（Observable、Subscriber、Flowable、Observer等）流程源码分析，对RxJava两个版本的基本使用元素和订阅原理有了一定的认识后，此篇文章将重点置于map、lift操作符，已知操作符的作用是将发出的数据进行处理再发送，RxJava源码内部具体操作原理如何？来一探究竟。

此系列文章重点在于分析源码，并...]]></description><category></category></item><item><title><![CDATA[浅析RxJava 1.x&2.x版本使用区别及原理（一）：Observable、Flowable等基本元素源码解析]]></title><link>https://blog.csdn.net/ITermeng/article/details/80139074</link><guid>https://blog.csdn.net/ITermeng/article/details/80139074</guid><author>ITermeng</author><pubDate>Wed, 02 May 2018 23:27:55 +0800</pubDate><description><![CDATA[RxJava开源框架的风靡程度在Github上无需多言，它带来的响应式编程模式和线程随意切换、嵌套请求、背压等功能给了开发者耳目一新的体验，更是成为了大多数APP中常用的RxJava+Okhttp/Retrofit+MVP/MVVM/Clean黄金组合中的一员。我犹记得知乎团队在去年线下还开展过一次线下RxJava交流会，邀请了扔物线讲解相关知识及体验，可见各大厂对此的重视度。如非要列举一个RxJ...]]></description><category></category></item><item><title><![CDATA[Android内、外存储 易混淆点剖析（/mnt/sdcard、/storage/sdcard0、/storage/emulated/0等区别）]]></title><link>https://blog.csdn.net/ITermeng/article/details/79423035</link><guid>https://blog.csdn.net/ITermeng/article/details/79423035</guid><author>ITermeng</author><pubDate>Wed, 07 Mar 2018 15:11:41 +0800</pubDate><description><![CDATA[说起Android“内部存储”，对于开发者而言可以毫不犹豫地脱口而出，不就是/data/data目录嘛，也不尽然，/data/user/0/又如何解释？那说起“外部存储”，例如sd卡目录获取值，更是众说纷纭，是/mnt/sdcard？还是/storage/sdcard0？莫非是/storage/emulated/0？此疑问起源要追溯到笔者在写上一篇博文，即以DexClassLoader类加载原理编写]]></description><category></category></item><item><title><![CDATA[Android热修复（二）：以DexClassLoader类加载原理编写demo实现类替换修复]]></title><link>https://blog.csdn.net/ITermeng/article/details/79362042</link><guid>https://blog.csdn.net/ITermeng/article/details/79362042</guid><author>ITermeng</author><pubDate>Wed, 28 Feb 2018 23:57:11 +0800</pubDate><description><![CDATA[上一篇文章简易总结了热修复实现的几大原理，并详细介绍了Android中的类加载机制及源码探索，Android的类加载机制涉及到ClassLoader、DexClassLoader 、PathClassLoader 、BaseDexClassLoader 、DexPathList、DexFile多个类之间方法互相调用，但是真正的核心实现类其实是DexPathList，它具体实现了`findClass`方法，即所谓的“类]]></description><category></category></item><item><title><![CDATA[Android热修复（一）：底层替换、类加载原理总结 及 DexClassLoader类加载机制源码探索]]></title><link>https://blog.csdn.net/ITermeng/article/details/79350945</link><guid>https://blog.csdn.net/ITermeng/article/details/79350945</guid><author>ITermeng</author><pubDate>Fri, 23 Feb 2018 09:24:17 +0800</pubDate><description><![CDATA[在早期的Android开发中，若客户端发布更新后遇到紧急bug需要及时修复，通常只能等待新版本解决再次发布，但是重新发布版本代价太大且用户下载安装成本高，若Bug未及时修复，无疑会严重影响用户体验，因此衍生了一系列技术来解决以上问题，其中一种就是Hybrid方案，即将需要经常变更的业务逻辑以H5的形式独立出来。还有一种是插件化方案。因此在Android开发近几年中，又衍生出了新的解决方案——热修复。开发者可以直接将更]]></description><category></category></item><item><title><![CDATA[Android Dex VS Class：实例图解剖析两种格式文件结构、优劣]]></title><link>https://blog.csdn.net/ITermeng/article/details/79218060</link><guid>https://blog.csdn.net/ITermeng/article/details/79218060</guid><author>ITermeng</author><pubDate>Wed, 31 Jan 2018 15:38:20 +0800</pubDate><description><![CDATA[前段时间在了解Android代码混淆和反编译原理的时候，都涉及到了dex文件，该文件中保存着app中重要的数据信息，例如源码中使用的系统api，或者是否含有广告，更甚者通过解析AndroidManifest.xml知晓activity、service、receiver等四大组件数据信息（未混淆的情况下），而且一个程序应用的所有数据信息都存储在一个dex文件中，可见该格式文件存储信息的强大优势！说起信]]></description><category></category></item><item><title><![CDATA[Android 高级UI解密 (二) ：Paint滤镜 与 颜色过滤（矩阵变换）]]></title><link>https://blog.csdn.net/ITermeng/article/details/78636132</link><guid>https://blog.csdn.net/ITermeng/article/details/78636132</guid><author>ITermeng</author><pubDate>Thu, 21 Dec 2017 10:41:06 +0800</pubDate><description><![CDATA[若是曾经查看过系统UI的源码，会发现其中使用了一些渲染效果，例如将图片加上黑白、怀旧的效果，生活中常用的逆天美颜相机，其中的原理就是使用了**滤镜效果、颜色通道过滤**。若还要深究其原理组成，便涉及到了高等数学里的矩阵变换，也就是Android 中的**颜色矩阵**！此篇文章便来一探究竟如何实现滤镜和其原理组成。

（关于矩阵这一块，无需过度深究数学部分，此处为了充分理解渲染效果，只需了解大概原理，利用其API完成简]]></description><category></category></item><item><title><![CDATA[Android 高级UI解密 (一) ：Paint图形文字绘制 与 高级渲染]]></title><link>https://blog.csdn.net/ITermeng/article/details/77968042</link><guid>https://blog.csdn.net/ITermeng/article/details/77968042</guid><author>ITermeng</author><pubDate>Mon, 18 Dec 2017 10:50:20 +0800</pubDate><description><![CDATA[UI即User Interface（用户界面）的简称，泛指用户的操作界面，view是用户界面最基本的组件，其扩展了View类，更控制着屏幕上的绘制和实践，例如被触控。屏幕上显示的所有元素都依赖view。

在自定义View或Layout时，不仅要了解测量（onMeasure）、布局（onLayout）、展示（onDraw），更要考虑处理不同的点击、滑动输入事件（onTouchEve]]></description><category></category></item><item><title><![CDATA[Gradle 与 Android的三生三世：是我构建了你，你必将依赖于我]]></title><link>https://blog.csdn.net/ITermeng/article/details/78579327</link><guid>https://blog.csdn.net/ITermeng/article/details/78579327</guid><author>ITermeng</author><pubDate>Mon, 20 Nov 2017 09:45:26 +0800</pubDate><description><![CDATA[Android应用的构建过程是一个复杂的过程，涉及到很多工具。首先所有的资源文件都会被编译，并且在一个R文件中引用，然后Java代码被编译，通过dex工具转换成dalvik字节码。最后这些文件都会被打包成一个APK文件，此应用被最终安装到设备之前，APK会被一个debug或者release的key文件签名。以上步骤人工操作着实繁]]></description><category></category></item><item><title><![CDATA[HTTP & HTTPS网络协议重点总结（基于SSL/TLS的握手、TCP/IP协议基础、加密学）]]></title><link>https://blog.csdn.net/ITermeng/article/details/78517364</link><guid>https://blog.csdn.net/ITermeng/article/details/78517364</guid><author>ITermeng</author><pubDate>Mon, 13 Nov 2017 09:58:06 +0800</pubDate><description><![CDATA[本文以总结的形式，先大体介绍TCP／IP协议整体组成，再择其应用层上的HTTP协议进行详细总结，继而拓展知识点讲解加密学，过渡到HTTPS协议的学习，除去网络知识必备掌握的三次握手、四次挥手，另需了解基于SSL/TLS的握手，也是重要的一个环节。本文涉及到的知识点如下：
网络基础TCP/IP
HTTP协议基础与重点
加密与签名
HTTPS协议（基于SSL/TLS的握手）]]></description><category></category></item></channel></rss>