<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[路漫漫其修远兮]]></title><description><![CDATA[android、Web]]></description><link>https://blog.youkuaiyun.com/tst116</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tst116]]></copyright><item><title><![CDATA[css渐变色边框]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/143799296</link><guid>https://blog.youkuaiyun.com/tst116/article/details/143799296</guid><author>tst116</author><pubDate>Fri, 15 Nov 2024 15:17:56 +0800</pubDate><description><![CDATA[css 渐变色边框]]></description><category></category></item><item><title><![CDATA[webpack快速基础]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/137018045</link><guid>https://blog.youkuaiyun.com/tst116/article/details/137018045</guid><author>tst116</author><pubDate>Mon, 25 Mar 2024 16:25:56 +0800</pubDate><description><![CDATA[webpack 了解基础概念与配置]]></description><category></category></item><item><title><![CDATA[webpack从零开始搭建vue项目]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/136877778</link><guid>https://blog.youkuaiyun.com/tst116/article/details/136877778</guid><author>tst116</author><pubDate>Wed, 20 Mar 2024 15:17:25 +0800</pubDate><description><![CDATA[webpack vue typescript 项目搭建]]></description><category></category></item><item><title><![CDATA[数据结构树--＞B+树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119642956</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119642956</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 14:04:19 +0800</pubDate><description><![CDATA[B+树
1. 特性


数据个数比孩子节点个数少1.
B+树包含两种节点，索引节点和叶子节点，所有数据都保存在叶子节点中，索引节点只保存索引，根节点可以是索引可以是叶子节点。
m阶B+树节点最多有 m-1个索引或数据。
节点索引或数据都从小到大排列，内部索引后数据大于左子树，小于或等于右子树。
每个叶子节点都右相邻叶子节点的指针。

2. B+树的插入
B+树的插入和B树的插入类似，都是节点的分裂和数据的上移，只是分裂后中间数据变为了右子树的起始数据，上移的数据为中间数据的索引。
eg: 5阶B+树插入 5]]></description><category></category></item><item><title><![CDATA[数据结构树--＞B树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119642875</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119642875</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 14:02:19 +0800</pubDate><description><![CDATA[B树
1. B树的定义
B 树是一颗多路不平衡树，我们描述一颗B树时需要指定它的阶数，eg: 这是一颗5阶B树，阶数表示了一个节点最多有多少孩子节点，一般用M表述。
m就是B树的阶数，当 m=2 时就是我们常见的二叉查找树。
一个m阶B树的定义如下：

每个节点最多有m-1个关键字。
根节点最少可以只有1个关键字。
非根节点至少有m/2个关键字。
所有叶子节点都位于同一层，或者说根节点到每个叶子节点的长度都相同。
每个节点中的关键字都按照从小到大的顺序排列，每个关键字的左子树中的所有关键字都小于它，而右子树]]></description><category></category></item><item><title><![CDATA[数据结构树--＞二叉堆]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119641270</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119641270</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 12:07:29 +0800</pubDate><description><![CDATA[二叉堆
1. 什么是二叉堆
首先二叉堆是一个完全二叉树。它又分最大堆与最小堆
1.1 最大堆
特性：父节点的值都大于或等于左右孩子的值。

1.2 最小堆
特性：与最大堆相反，父节点的值都小于或等于左右孩子的值。
2. 二叉堆的插入
2.1 插入位置
首先满足的完全二叉树的特性，所以我们新插入的节点是按照完全二叉树的下一个位置来插入的。
我们以最小堆为例

2.2 插入后"上浮"
插入节点与父节点比较，如果小于父节点则插入节点与父节点交换位置，递归操作，直到找到父节点比插入节点小。结果为：

最大堆的插入同]]></description><category></category></item><item><title><![CDATA[数据结构树--＞红黑树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119641071</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119641071</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 12:05:02 +0800</pubDate><description><![CDATA[红黑树
前一篇文章我们了解了平衡二叉树，也知道了平衡二叉树的缺点：大量的插入删除操作影响性能，所以产生了红黑树。
首先：红黑树与平衡二叉树的目的是一样的，都是解决了二叉查找树退化为链表的问题。
平衡二叉树使用的平衡因子，红黑树使用的是几个特性来达到解决二叉查找树退化链表的问题。
1. 红黑树的特性：

节点是黑色或者红色。
根节点为黑色。
每个叶子节点都是黑色(叶子节点是NIL节点)
每个红色节点的两个子节点都是黑色（或从根节点到每个叶子节点的路径上不能有两个连续的红色节点）。
从任一节点到其每个叶子节点的]]></description><category></category></item><item><title><![CDATA[数据结构树--＞霍夫曼树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119641021</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119641021</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 11:55:32 +0800</pubDate><description><![CDATA[霍夫曼树
1. 霍夫曼树的定义
霍夫曼树又称最优二叉树。了解霍夫曼树之前先了解几个名词，

节点的权：若将树中的节点赋给一个有某种含义的值，这个值称为节点的权。
路径：从一个节点到另一个节点之间的分支构成两个节点之间的路径。
路径的长度：路径上的分支数量。
树的路径长度：从树的根到树中每一个节点的路径长度之和。
节点的带权路径长度：从该节点到树根之间的路径长度与节点上权的乘积。
树的带权路径长度：树中所有叶子节点的带权路径长度之和。


上图是个霍夫曼树，其中。

节点的权： A:7   B:5   C:2]]></description><category></category></item><item><title><![CDATA[数据结构树--＞平衡二叉树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119640842</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119640842</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 11:53:20 +0800</pubDate><description><![CDATA[平衡二叉树
平衡二叉树又叫 AVL树
前面我们介绍了二叉查找树，二叉平衡树是二叉查找树的一种，为什么会有二叉平衡树呢？这时因为二叉查找树的排序引起的，看下图。

这也是一个二叉查找树，但因为数据的原因这个二叉查找树基本成了链式结构，无法达到二叉查找树的快速查找能力，这就引入了平衡二叉树。
平衡二叉树在二叉查找树的基础上添加了平衡因子。
1. 平衡因子
平衡因子：二叉树所有节点左子树高度与右子树的高度差值的绝对值不能大于1。 只有满足这个平衡因子的二叉查找树就是一颗合格的平衡二叉树。

如图就是一个合格的平衡]]></description><category></category></item><item><title><![CDATA[数据结构树--＞二叉查找树\二叉排序树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119640685</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119640685</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 11:48:31 +0800</pubDate><description><![CDATA[二叉查找树\二叉排序树
二叉查找树是一种有序的二叉树，也叫儿叉排序树，它在二叉树的基础上添加了位置排序的规则。
规则： 每颗子树的根节点值比左子树大，比右子树小。

二叉查找树的缺点： 二叉查找树有了排序，但当我们的数据顺序与大小规律一致是就会发现，二叉查找树基本退化为了链表，导致达不到二叉
查找树快速查找的目的。

后续我们在介绍平衡二叉树的时候会解决之一问题。
1. 二叉查找树的查找
更具儿叉查找树的特性二叉查找树查找元素快速简单，快速：二叉查找树查找基本就是二分查找，所以快速。
2. 二叉查找树的插入]]></description><category></category></item><item><title><![CDATA[数据结构树--＞二叉树]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119640317</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119640317</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 11:39:43 +0800</pubDate><description><![CDATA[二叉树
在数据结构树中我们最常用的就是二叉树，二叉树的分类又有很多种，利用好二叉树我们可以快速的从大数据量中找到我们所需的数据。
1. 什么是二叉树
前面我们介绍了树，二叉树顾名思义就是每个数据节点最多有两个叉，也就是每个数据节点最多是有两个孩子节点。

特点：

每个节点最多有两个孩子节点。
即使节点没有孩子节点，新添加的节点也要区分是该节点左孩子或者右孩子。

2. 满二叉树
特点：树中所有的非叶子节点都有左孩子和右孩子。所有叶子节点都在同一层上。

3. 完全二叉树
定义： 对一个有n个节点的二叉树，]]></description><category></category></item><item><title><![CDATA[数据结构树--＞树基础]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/119640107</link><guid>https://blog.youkuaiyun.com/tst116/article/details/119640107</guid><author>tst116</author><pubDate>Thu, 12 Aug 2021 11:34:19 +0800</pubDate><description><![CDATA[1. 定义
树 是 n(n&gt;=0) 个有限节点组成的具有层次关系的集合，当 n=0 时称为空树。树很多人有很多定义，其实满足树的特点就称之为树。
特点：

有且仅有一个特定的节点称为根节点。
每个节点有0个或多个子节点。
每一个非根节点有且只有一个父节点。
除根节点外，每个子节点可以分为多个不想交的子树。

如图：

如图明确几个名词：

节点：树的所有点称之为节点，如上图的圆圈。
根节点，头部第一个节点。
叶子节点： 4 5 6 7 处于树的末端，称为叶子节点。
孩子节点： 节点关系， 4节点属于2]]></description><category></category></item><item><title><![CDATA[ExoPlayer的详细使用事件篇]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/118102059</link><guid>https://blog.youkuaiyun.com/tst116/article/details/118102059</guid><author>tst116</author><pubDate>Tue, 22 Jun 2021 10:43:10 +0800</pubDate><description><![CDATA[ExoPlayer提供的主要事件我们可以查看源码中的PlayerControlView.ComponentListener，它对事件的处理比较多，也比较符合我们使用所要了解的监听。
1. Player.EventListener
EventListener提供了两种方式来监听播放器的视频回调
1.1 总的回调函数EventListener.onEvent(Player player, Events events)
​    Events携带了播放器所发生的事件，Events属于一个集合来保存的事件，时间以i]]></description><category></category></item><item><title><![CDATA[Exoplayer的详细使用UI篇]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/118101947</link><guid>https://blog.youkuaiyun.com/tst116/article/details/118101947</guid><author>tst116</author><pubDate>Tue, 22 Jun 2021 10:41:41 +0800</pubDate><description><![CDATA[1. ExoPlayer中的UI主要分

主视频播放控件PlayerView 、StyledPlayerView
控制控件PlayerControlView
主视频覆盖view，exo_overlay

其他还有包括字幕，插图等控件
2. 使用方式
控件PlayerView与PlayerControlView都提供的是布局layout id设置方式来让用户自定义界面。
在控件中解析layout id中特定id的控件来达到用户自定义布局中的控件与视频播放ExoPlayer关联
&lt;com.google.a]]></description><category></category></item><item><title><![CDATA[ExoPlayer简单介绍与使用]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/116200233</link><guid>https://blog.youkuaiyun.com/tst116/article/details/116200233</guid><author>tst116</author><pubDate>Tue, 27 Apr 2021 14:22:10 +0800</pubDate><description><![CDATA[ExoPlayer简单介绍与使用
简单介绍
ExoPlayer是运行在YouTobe app上的视频播放器。它功能强大的同时又兼容低版本Android设备，在ExoPlayer V2版本上最低支持 android 16 也就是android 4.1版本。
功能强大在支持除Android内置媒体播放器支持的格式外增加自适应格式DASH 和SmoothStreaming,  同时ExoPlayer在代码结构设计上又支持高度定制和扩展。而对于我们普通开发者常使用在对二进制网络流媒体的播放处理。
核心功能
ExoP]]></description><category></category></item><item><title><![CDATA[Android坐标系]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/130428728</link><guid>https://blog.youkuaiyun.com/tst116/article/details/130428728</guid><author>tst116</author><pubDate>Fri, 22 Jan 2021 11:17:28 +0800</pubDate><description><![CDATA[Android坐标系
Android view的摆放，宽高，绘制，都是需要位置的，而有位置就会有坐标系，有了坐标系我们就能将全部的view按照统一的坐标系来完成摆放，宽高，绘制等操作。
Android中的坐标系。

Android坐标系。
视图view坐标系。

1. Android坐标系
Android坐标系以屏幕左上角为原点，向右为X轴正坐标。向下为Y轴正坐标。




Android坐标系
...]]></description><category></category></item><item><title><![CDATA[Android 自定义view目录]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/112979504</link><guid>https://blog.youkuaiyun.com/tst116/article/details/112979504</guid><author>tst116</author><pubDate>Fri, 22 Jan 2021 10:51:29 +0800</pubDate><description><![CDATA[1. Android坐标系

]]></description><category></category></item><item><title><![CDATA[Android 坐标系]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/112979388</link><guid>https://blog.youkuaiyun.com/tst116/article/details/112979388</guid><author>tst116</author><pubDate>Fri, 22 Jan 2021 10:49:10 +0800</pubDate><description><![CDATA[Android坐标系
Android view的摆放，宽高，绘制，都是需要位置的，而有位置就会有坐标系，有了坐标系我们就能将全部的view按照统一的坐标系来完成摆放，宽高，绘制等操作。
Android中的坐标系。

Android坐标系。
视图view坐标系。

1.  Android坐标系
Android坐标系以屏幕左上角为原点，向右为X轴正坐标。向下为Y轴正坐标。

2. 视图坐标系
视图坐标系为Android view相对于父控件的位置，坐标系原点为父控件左上角，x,y轴方向与Android坐标系相同]]></description><category></category></item><item><title><![CDATA[Android 嵌套滑动]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/112966262</link><guid>https://blog.youkuaiyun.com/tst116/article/details/112966262</guid><author>tst116</author><pubDate>Thu, 21 Jan 2021 16:35:45 +0800</pubDate><description><![CDATA[NestedScrollingParent与NestedScrollingChild
1、 嵌套滑动的解决方案先看注释了解方法
这时Google官方给的处理方案，在Androidx或者support包中
public interface NestedScrollingChild {
  
    //设置是否允许嵌套滑动，允许的话设为true
    void setNestedScrollingEnabled(boolean enabled);
 
    //是否允许嵌套滑动
    boolean i]]></description><category></category></item><item><title><![CDATA[Android view的位移滑动]]></title><link>https://blog.youkuaiyun.com/tst116/article/details/112865315</link><guid>https://blog.youkuaiyun.com/tst116/article/details/112865315</guid><author>tst116</author><pubDate>Wed, 20 Jan 2021 14:08:29 +0800</pubDate><description><![CDATA[Android view的位移滑动
基础
Android view的移动不管特效多么绚丽，都是view控件的基础移动实现的。
方式：

scrollTo/scrollby: view控件内容移动。
动画：给view实现移动效果。
LayoutParams: 使view重新布局实现view移动。

1: scrollBy/scrollTo
1.1: 内容左边界


View：对于单个view，内容左边界就是文字图片等的左边界。eg:botton可以很大但他的内容显示可能就一个单词，
而内容左边界就是这个单词的]]></description><category></category></item></channel></rss>