<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Tai_Monster的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Tai_Monster</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Tai_Monster]]></copyright><item><title><![CDATA[JS中的闭包和上下文]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/144776521</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/144776521</guid><author>Tai_Monster</author><pubDate>Fri, 27 Dec 2024 19:53:56 +0800</pubDate><description><![CDATA[这里要提到一个的概念，即在JS中，在解析代码之前还有一个预处理的过程，这个过程中会把部分变量和函数声明提前到代码的最顶部，会在其他所有代码之前执行。虽然当我们按照规范（严格模式或者TS等良好的编码习惯）时并不会因为提升而发生意料之外的情况，不过作为原生JS中的特性，我们还是需要了解一下。]]></description><category></category></item><item><title><![CDATA[JavaScript入门]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/144712962</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/144712962</guid><author>Tai_Monster</author><pubDate>Wed, 25 Dec 2024 10:46:00 +0800</pubDate><description><![CDATA[name = "";} info() {} }简而言之用class关键字定义一个类，然后定义一个构造函数（可选），构造函数中定义一些属性，然后定义一些方法。在底层，引擎还是通过原型链的方式来实现的，只不过这种构建类的方法更方便快捷。]]></description><category></category></item><item><title><![CDATA[RxJava入门]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/144454312</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/144454312</guid><author>Tai_Monster</author><pubDate>Fri, 13 Dec 2024 16:37:51 +0800</pubDate><description><![CDATA[整个我们以处理器2的视角来看，其左边的数据流部分称为，右半部分被称为。了解数据上下游对我们使用RxJava也是有很大帮助的，因为我们实际上可以指定数据上下游的执行线程，可以通过一些代码来验证。]]></description><category></category></item><item><title><![CDATA[Java：动态代理]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/142103102</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/142103102</guid><author>Tai_Monster</author><pubDate>Tue, 10 Sep 2024 20:45:43 +0800</pubDate><description><![CDATA[代理模式是一种设计模式，它为其他对象提供了一种代理以控制对这个对象的访问。代理对象通常包装实际的目标对象，以提供一些附加的功能（如延迟加载、访问控制、日志记录等）。我们一般可以使用装饰器模式。]]></description><category></category></item><item><title><![CDATA[最长回文子串：动态规划推导]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/141610661</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/141610661</guid><author>Tai_Monster</author><pubDate>Wed, 28 Aug 2024 15:00:49 +0800</pubDate><description><![CDATA[本题可以在力扣找到，题号为5。给你一个字符串 s，找到 s 中最长的 回文子串。输入：s = “babad”输出：“bab”解释：“aba” 同样是符合题意的答案。输入：s = “cbbd”输出：“bb”提示：s 仅由数字和英文字母组成。]]></description><category></category></item><item><title><![CDATA[后端学习笔记：Python基础]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/139014911</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/139014911</guid><author>Tai_Monster</author><pubDate>Thu, 20 Jun 2024 20:45:14 +0800</pubDate><description><![CDATA[Python中用def来声明一个函数。Python中的函数定义比较简单（因为它是脚本语言），只要确定函数名和参数列表即可，Python 采用鸭子类型哲学，即只要一个对象具有所需的方法或属性，就可以使用它，而不关心对象的具体类型。这种方式让代码更加灵活和通用。sayHello()在上述片段中，函数就可以返回四种类型的参数。]]></description><category></category></item><item><title><![CDATA[Android：弹出对话框方式梳理一览（一）]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/135667856</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/135667856</guid><author>Tai_Monster</author><pubDate>Mon, 06 May 2024 20:28:37 +0800</pubDate><description><![CDATA[到之前为止其实都是Dialog的很基础的应用，实际上在使用过程中我们可能需要弹出一个Dialog来展示我们自己的定制化的内容，比如说一个登录页面，这个时候我们就不能用之前的简单的方法了，取而代之，我们可以调用setView方法来为我们的Dialog填充自定义的内容，这个过程实际上类似于动态添加View的过程。]]></description><category></category></item><item><title><![CDATA[[Android View] 可绘制形状 （Shape Xml）]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/136371547</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/136371547</guid><author>Tai_Monster</author><pubDate>Thu, 29 Feb 2024 15:14:09 +0800</pubDate><description><![CDATA[形状可绘制对象是一种在 XML 文件中定义的通用形状。我们通过xml来描述图形，可以减少图片资源的引入，达到减小包体积的目的。]]></description><category></category></item><item><title><![CDATA[[Android]实现一个权限申请类]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/135629442</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/135629442</guid><author>Tai_Monster</author><pubDate>Tue, 16 Jan 2024 17:05:20 +0800</pubDate><description><![CDATA[在引入了动态权限申请之后，Android的权限申请就变得尤为繁琐，若是按照原有的方法一板一眼地进行申请，样板代码未免太多。因此本篇文章就使用ActivityResult API，来实现一个简单的权限申请类来帮助我们简化权限申请的过程。。]]></description><category></category></item><item><title><![CDATA[[Android自定义View]实现一个环形进度条控件]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/135535938</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/135535938</guid><author>Tai_Monster</author><pubDate>Thu, 11 Jan 2024 18:16:31 +0800</pubDate><description><![CDATA[之前的文章里我们已经介绍了自定义View相关的知识了，本篇文章我们就来实战一下，从零到一，实现一个环形进度条的控件。]]></description><category></category></item><item><title><![CDATA[数据结构与算法：二叉树（一）]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/134405301</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/134405301</guid><author>Tai_Monster</author><pubDate>Tue, 14 Nov 2023 19:54:22 +0800</pubDate><description><![CDATA[其实所谓二叉树，是形如以下的数据结构：即，通过一个节点可以访问到其他的两个节点。其中，一号节点被称之为根节点，二三号节点被称之为一号节点的叶子节点。//当前二叉树节点的值int val;//当前二叉树节点的左节点//当前二叉树节点的右节点这就是一个最简单的二叉树节点的结构；其实按照我的理解来说，二叉树节点与链表的区别就是其多了一个指针域可以指向别的节点，在很多时候二叉树和链表有许多相通之处。]]></description><category></category></item><item><title><![CDATA[使用非递归的方式实现归并排序]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/134338664</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/134338664</guid><author>Tai_Monster</author><pubDate>Fri, 10 Nov 2023 18:02:35 +0800</pubDate><description><![CDATA[使用非递归的方式实现归并排序]]></description><category></category></item><item><title><![CDATA[设计模式大赏（一）：桥接模式，组合模式]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/134103739</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/134103739</guid><author>Tai_Monster</author><pubDate>Sun, 29 Oct 2023 17:46:49 +0800</pubDate><description><![CDATA[本篇文章是设计模式大赏中的第一篇文章，这个系列的文章中我们主要将介绍一些常见的设计模式，主要是我在看Android源码中发现用到的一些设计模式。本篇文章将主要介绍和这两种设计模式。本篇文章主要参考：《大话设计模式》]]></description><category></category></item><item><title><![CDATA[Android：窗口管理器WindowManager]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/134092026</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/134092026</guid><author>Tai_Monster</author><pubDate>Sat, 28 Oct 2023 19:26:03 +0800</pubDate><description><![CDATA[实际上Android上的窗口指的并不是具体的手机窗口而是一个抽象的概念，它本质上也是一个View，我会把窗口理解成一组有关联的View。与与的关系类似，中方法的实现也是通过远程调用。]]></description><category></category></item><item><title><![CDATA[JVM:虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/133826812</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/133826812</guid><author>Tai_Monster</author><pubDate>Sat, 14 Oct 2023 18:41:01 +0800</pubDate><description><![CDATA[众所周知，Java是面向对象编程的一门语言，每一个对象都是一个类的实例。所谓类加载，就是**JVM虚拟机把描述类的数据从class文件加载到内存，并对数据进行校验，转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型。** 动态的类型加载也是Java语言的一个重要特性之一，比如Android中的Retrofit库的动态代理在一定程度上也依赖于动态的类型加载]]></description><category></category></item><item><title><![CDATA[Android 源码解析： SharedPreferences的解析]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/133686167</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/133686167</guid><author>Tai_Monster</author><pubDate>Mon, 09 Oct 2023 18:55:20 +0800</pubDate><description><![CDATA[SharedPreferences是Android中的一种轻量的数据持久化手段，可能也是我们在学习Android时接触到的第一种特殊的本地数据持久化手段，本篇文章就将从源码角度分析SharedPreferences的原理。]]></description><category></category></item><item><title><![CDATA[Android Jetpack组件架构：ViewModel的原理]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/133313405</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/133313405</guid><author>Tai_Monster</author><pubDate>Tue, 26 Sep 2023 17:51:48 +0800</pubDate><description><![CDATA[本篇文章是关于介绍ViewModel的，由于ViewModel的使用还是挺简单的，这里就不再介绍其的基本应用，我们主要来分析ViewModel的原理。]]></description><category></category></item><item><title><![CDATA[Android Jetpack组件架构 ：LiveData的使用和原理]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/133274813</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/133274813</guid><author>Tai_Monster</author><pubDate>Mon, 25 Sep 2023 23:02:49 +0800</pubDate><description><![CDATA[继Lifecycle组件之后我们接下来要介绍的就是LiveDate组件，所谓LiveDate字面意思上就是有声明的数据，当数据有改动时该组件可以感知到这个操作并将该事件通知到其观察者，这样我们就可以在观察者中做出一些处理，一般都是用来更新UI的操作。这样就实现了当数据改变时U界面自动更新的效果。]]></description><category></category></item><item><title><![CDATA[Android Jetpack组件架构:Lifecycle的使用 和 原理]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/133213075</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/133213075</guid><author>Tai_Monster</author><pubDate>Sat, 23 Sep 2023 22:35:36 +0800</pubDate><description><![CDATA[作为Jetpack中关于生命周期管理的核心组件，Lifecycle组件是其他比如LiveDate和ViewModel等组件的基础，本篇文章主要就将介绍关于Lifecycle的使用和它的运作原理。]]></description><category></category></item><item><title><![CDATA[Android开发笔记 ：理解Fragment]]></title><link>https://blog.youkuaiyun.com/Tai_Monster/article/details/133213129</link><guid>https://blog.youkuaiyun.com/Tai_Monster/article/details/133213129</guid><author>Tai_Monster</author><pubDate>Sat, 23 Sep 2023 20:24:13 +0800</pubDate><description><![CDATA[本篇文章产生的原因很简单，就是我在了解Android Jetpack中的Lifecycle框架时发现Lifecycle具体时间和状态的更新都是由一个名为的Fragment来跟踪的，为了更好的了解Fragment是如何追踪Activity生命周期状态的变化我们有必要对Fragment组件进行更深入的探讨。]]></description><category></category></item></channel></rss>