<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jiye111的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jiye111</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiye111]]></copyright><item><title><![CDATA[Https解决的问题及其连接过程]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/106159686</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/106159686</guid><author>jiye111</author><pubDate>Sat, 16 May 2020 15:30:47 +0800</pubDate><description><![CDATA[Https介绍
HTTPS 是综合了对称加密和非对称加密算法的 HTTP 协议。既保证传输安全，也保证传输效率
Http存在的问题
1.窃听风险：Http采用明文传输数据，第三方可以获知通信内容
2.篡改风险：第三方可以修改通信内容
3.冒充风险：第三方可以冒充他人身份进行通信
对上述问题，Https的解决办法（使用SSL/TSL）
1.所有信息加密传输，避免三方窃听通信内容
2.校验机制，内容一旦被篡改，通信双发立刻会发现
3.配备身份证书(CA证书)，防止身份被冒充
加密算法（解决窃听风险）
Https]]></description><category></category></item><item><title><![CDATA[安卓开发 自定义ScrollView 实现滚动，停止状态的监听]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/103324442</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/103324442</guid><author>jiye111</author><pubDate>Sat, 30 Nov 2019 14:42:16 +0800</pubDate><description><![CDATA[Scrollview或者NestScrollView没有提供对其状态的监听（类似Recyclerview的OnScrollListener.onScrollSateChanged接口），只能自己实现。

在百度以后，发现大多数采用的都是新开一个线程，延迟一小段时间来判断是否已经暂停，都是直接在onTouchEvent()的MotionEvent.ACTION_UP中判断是否已经暂停，没有对Flin...]]></description><category></category></item><item><title><![CDATA[安卓开发 内部类和匿名内部类所造成的的内存泄漏]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/103152495</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/103152495</guid><author>jiye111</author><pubDate>Tue, 19 Nov 2019 22:23:49 +0800</pubDate><description><![CDATA[内存泄漏定义（个人理解）：

当一个对象本该被回收，但是因为有对象正在持有他的引用，导致他无法正常被回收，称为内存泄漏。例如一个匿名内部线程需要睡眠了10秒，我们在第5秒钟的时候推出了界面，此时线程还在执行，并且由于匿名内部类持有外部类的引用，所以导致了无法及时回收，造成内存泄露。（使用Leakcanary对上述情况做测试，发现在任务执行完以后就不报内存泄漏了，也就是说在执行完以后被回收了，那部分...]]></description><category></category></item><item><title><![CDATA[安卓开发 自定义TextView 去除默认内边距]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/99679269</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/99679269</guid><author>jiye111</author><pubDate>Fri, 16 Aug 2019 16:37:32 +0800</pubDate><description><![CDATA[一.搜到的大部分的解决办法

1.网上方法的效果

在xml文件中对TextView设置： includeFontPadding=false

加上以上属性之后，文本的高度明显变小了，但是没有达到我们预想的效果（文字紧贴边框），而是在上下留了一部分距离。

具体效果可以查看第二部分中的对比图



2.失效的原因

在了解这个原因前需要对TextView中文本的绘制有一点了解，具体查看文末参考文...]]></description><category></category></item><item><title><![CDATA[安卓开发艺术笔记 | 动画解析（View动画，帧动画，属性动画）]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/89415666</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/89415666</guid><author>jiye111</author><pubDate>Sat, 20 Apr 2019 12:48:06 +0800</pubDate><description><![CDATA[一.VIEW动画


	view动画的种类
	
	
	自定义view动画
	
	
	view动画的特殊类型
	
二.帧动画

三.属性动画

属性动画的分类
	和View动画的区别
	插值器与估值器
	属性动画的使用
	属性动画的监听器
	属性动画工作原理
	属性动画的注意事项
四.动画注意事项



一.View动画

1.view动画种类

（1）分类



注意：view动画不改变V...]]></description><category></category></item><item><title><![CDATA[安卓开发艺术笔记 | View的事件体系（View的分发，滑动冲突的解决）]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/89227083</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/89227083</guid><author>jiye111</author><pubDate>Fri, 12 Apr 2019 10:49:07 +0800</pubDate><description><![CDATA[目录

一.View的基本概念

1.什么是View

2.View的位置参数

3.MotionEvent和TouchSlop

4.VelocityTracker，GestureDetector

二.View的滑动

1.View的ScrollTo和ScrollBy

2.动画

3.LayoutParams

三.View的弹性滑动

1.Scroller

2.动画

3.延时策略

四...]]></description><category></category></item><item><title><![CDATA[安卓开发艺术笔记 | View的工作原理（绘制流程和自定义View）]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/89222113</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/89222113</guid><author>jiye111</author><pubDate>Thu, 11 Apr 2019 22:49:20 +0800</pubDate><description><![CDATA[目录

一.MeasureSpec

MeasureSpec基础
	MeasureSpec和LayoutParams关系
二.View的绘制流程

onMeasure()
	onLayout()
	onDraw()
三.自定义View

自定义view分类
	自定义view步骤
	自定义view的注意事项
一.MeasureSpec

1.MeasureSpec基础

（1）组成：MeasureS...]]></description><category></category></item><item><title><![CDATA[算法 | 单链表的五个常见操作]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/89215010</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/89215010</guid><author>jiye111</author><pubDate>Thu, 11 Apr 2019 17:10:02 +0800</pubDate><description><![CDATA[问题：

1.单链表反转：事先存好下一个节点再改变指针

2.链表中环的检测：快慢指针终会相遇

3.两个有序链表的合并：两个链表各一个指针，比较大小后加到最终的链表中（有点快排的感觉）

4.删除链表倒数第K个节点：转化为删除正数第length-K+1个节点

5.求链表的中间节点：快慢指针

思路都在代码的注释中，做链表的画张图就能更好的关注逻辑，比较直观，所以强烈建议画图来看看指针怎么走。
...]]></description><category></category></item><item><title><![CDATA[算法 | 判断是否为回文字符串]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/89205480</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/89205480</guid><author>jiye111</author><pubDate>Thu, 11 Apr 2019 11:23:24 +0800</pubDate><description><![CDATA[问题：

字符串是否为回文字符串，如abcba （单链表储存）

思路： 快慢指针找到中间节点，并且在慢指针移动时改变node的指向。

     找到中间节点以后，从中间节点出发，前后遍历比较值

步骤： 1.判断传入节点是否为空，接下来节点是否为空（非空判断）

      2.快慢指针移动，快指针正常移动，慢指针在移动时，改变node的指针方向，指向前一个

  ...]]></description><category></category></item><item><title><![CDATA[安卓开发艺术笔记 | Activity生命周期与启动模式]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/89096750</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/89096750</guid><author>jiye111</author><pubDate>Mon, 08 Apr 2019 18:32:52 +0800</pubDate><description><![CDATA[目录：

生命周期解析
正常生命周期
	异常情况下生命周期
四种启动模式及设置方式
	隐式启动Activity时IntentFilter匹配规则
	
	
生命周期解析

1.正常生命周期

（1）onCreate():

状态：Activity 正在创建
	任务：做初始化工作，如setContentView界面资源、初始化数据
	注意：此方法的传参Bundle为该Activity上次被异常情况销...]]></description><category></category></item><item><title><![CDATA[算法学习 快速排序]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/84922462</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/84922462</guid><author>jiye111</author><pubDate>Sun, 09 Dec 2018 12:56:37 +0800</pubDate><description><![CDATA[算法概述：

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是：通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列。



是分而治之的典型用例，由于使用了递归，所以对于小规模的数据，速度可能还不如快速排序，所以就需要一个标志位，...]]></description><category></category></item><item><title><![CDATA[targetSdkVersion,minSdkVersion,compileSdkVersion的介绍]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/84789510</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/84789510</guid><author>jiye111</author><pubDate>Tue, 04 Dec 2018 16:02:45 +0800</pubDate><description><![CDATA[首先介绍一下概念：

targetSdkVersion:目标软件开发版本，该值即为app的API的版本

API ：Application Programming Interface，即应用程序编程接口，提供了很多方法供我们调用，高版本API兼容低版本API。

Android 7.0：定义了手机系统的版本，不同版本的系统给用户提供不同的功能，如Android 7.0 多窗口支持等。开发的app要...]]></description><category></category></item><item><title><![CDATA[算法学习 归并排序]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/84647101</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/84647101</guid><author>jiye111</author><pubDate>Fri, 30 Nov 2018 12:54:49 +0800</pubDate><description><![CDATA[工作原理：

分而治之的思想，先对小块的进行排序，再进行大规模的排序，由于小规模的有序，所以在归并时按顺序遍历即可

归并排序的速度稳定在NlogN，因为不管序列如何，都要执行相同的操作。

但是所需要的空间要很多，所以在大规模数据排序，内存却不够的情况下不适合。

时间复杂度：NlogN

递归算法的空间复杂度，只需要创建一个和原来数组一样长的数组，所以为O(N)

非递归算法的空间复杂度，只需...]]></description><category></category></item><item><title><![CDATA[Java平台的理解]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/84556986</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/84556986</guid><author>jiye111</author><pubDate>Mon, 26 Nov 2018 21:35:38 +0800</pubDate><description><![CDATA[Java的特性：

面向对象（继承，封装，多态）

平台无关性（一次书写，到处运行）

类库（IO/NIO,集合，网络，并发，安全等）

GC垃圾回收机制

JRE（Java运行环境，包括了JVM和Java类库，以及一些模块）

JDK（JRE的超集，提供了更多工具，比如编译器等）

 

Java是解释执行？不太准确

Java的确是通过Javac先编译成字节码（.class文件），再通过JVM...]]></description><category></category></item><item><title><![CDATA[算法学习 《算法》2.1 希尔排序]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/84556146</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/84556146</guid><author>jiye111</author><pubDate>Mon, 26 Nov 2018 21:03:24 +0800</pubDate><description><![CDATA[工作原理：

由于大规模乱序数组，插入排序的速度很慢，因为他只会交换相邻的元素，所以元素只能一点点的移动。当数组出现极端情况，如最小的值在数组的尽头，要将它挪到首位，就需要N-1次移动。

为此，希尔排序横空出世。

希尔排序的思想，通过交换不相邻的元素，达到对数组的局部进行排序，并最终用插入排序将局部有序的数组排序。

具体：给定一个增量h，对相隔h个的数字进行排序，排序完成后改变h的值，重复这...]]></description><category></category></item><item><title><![CDATA[BUG记录 java.lang.NoSuchMethodError: No static method combineMeasuredStates(II)I in class Landroid/sup]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/83477112</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/83477112</guid><author>jiye111</author><pubDate>Sun, 28 Oct 2018 19:33:12 +0800</pubDate><description><![CDATA[异常：

ERROR: java.lang.NoSuchMethodError: No static method combineMeasuredStates(II)I in class Landroid/support/v7/widget/ViewUtils; or its super classes (declaration of 'android.support.v7.widget.View...]]></description><category></category></item><item><title><![CDATA[数据结构 最大堆的实现]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/82892368</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/82892368</guid><author>jiye111</author><pubDate>Sat, 29 Sep 2018 09:29:54 +0800</pubDate><description><![CDATA[定义：

最大堆要求根节点的关键字既大于或等于左子树的关键字值，又大于或等于右子树的关键字值。



 

API



API代码实现

api分析：

最大堆为完全二叉树，index（子节点）/2=index（父节点）

操作中采用了哨兵，所以对应元素下标即为堆中的位置（从1开始）

insert():插入时插到末尾，通过与父节点的比较，进行上浮操作

deleteMax(MaxHeap H)...]]></description><category></category></item><item><title><![CDATA[二叉查找树的删除结点操作]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/82811883</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/82811883</guid><author>jiye111</author><pubDate>Sat, 22 Sep 2018 14:23:41 +0800</pubDate><description><![CDATA[二叉查找树：

二叉查找树（Binary Search Tree），（又二叉搜索树，二叉排序树）它或者是一棵空树，或者是具有下列性质的二叉树： 若它的左子树不空，则左子树上所有结点的值均小于它的根结点的值； 若它的右子树不空，则右子树上所有结点的值均大于它的根结点的值； 它的左、右子树也分别为二叉排序树。

例子：



结点的删除操作：

分三种情况讨论：

结点为叶子结点时，直接删除，把父节点...]]></description><category></category></item><item><title><![CDATA[数据结构 二叉树的后序，层序遍历法（递归与非递归两种实现）]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/82807771</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/82807771</guid><author>jiye111</author><pubDate>Fri, 21 Sep 2018 22:40:12 +0800</pubDate><description><![CDATA[树的生成见上一篇博客

后序遍历：

1.遍历左边节点，到左叶子节点后返回父节点，切换到右子树

2.遍历右边结点，遍历完后回到父节点

记忆：左右根

例子（注意，这里的树和我创建的树不一样！！！）：



代码实现：

后序遍历的递归实现


 public static void postOrderRecursion(TreeNode T) {
        if (T == null) ...]]></description><category></category></item><item><title><![CDATA[数据结构 二叉树的前，中序遍历法（递归与非递归两种实现）]]></title><link>https://blog.youkuaiyun.com/jiye111/article/details/82771023</link><guid>https://blog.youkuaiyun.com/jiye111/article/details/82771023</guid><author>jiye111</author><pubDate>Wed, 19 Sep 2018 14:26:39 +0800</pubDate><description><![CDATA[先序遍历：

1.访问根节点

2.先序遍历其左子树

3.先序遍历其右子树

记忆：根左右

例子：



代码实现：

1.首先创建一棵树


 //生成树
    public static TreeNode initTree(){
        TreeNode G = new TreeNode(&quot;G&quot;, null, null);
        TreeNode H = new Tre...]]></description><category></category></item></channel></rss>