<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[魔法小黑屋]]></title><description><![CDATA[Android、Java、Kotlin、Flutter、前端、Node，C/C++ 都写]]></description><link>https://blog.youkuaiyun.com/TOYOTA11</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TOYOTA11]]></copyright><item><title><![CDATA[Android 实现沉浸式全屏]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/129098405</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/129098405</guid><author>TOYOTA11</author><pubDate>Sat, 18 Feb 2023 11:43:17 +0800</pubDate><description><![CDATA[本文总结 Android 实现沉浸式全屏的实现方式。]]></description><category></category></item><item><title><![CDATA[如何用代码画出一幅好看的画]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/126575202</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/126575202</guid><author>TOYOTA11</author><pubDate>Sun, 28 Aug 2022 22:08:50 +0800</pubDate><description><![CDATA[随着计算机技术的逐步发展，借助计算机强大的能力进行绘画操作，已经变得非常容易。绘画作品的水平也是越来越高，下面就来看看用编程语言绘画，能搞出什么有意思的东西，相比人类的创作又有哪些值得我们思考的地方。more其实用代码直接绘制图形，还有很多其他方案。比如大名鼎鼎的 MATLAB ,可以创作出非常精良的数学几何图形。但是比较一下上面的这几种方案，可以说 AI 作画的水平，一下子提升了好几个层次。创作需要的输入越来越明确，越来越简答，越发的人性化。但是输出的内容，却越发的开始接近甚至超越了人类的水平。...]]></description><category></category></item><item><title><![CDATA[当Json遇到Map]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/125030545</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/125030545</guid><author>TOYOTA11</author><pubDate>Sun, 29 May 2022 14:27:41 +0800</pubDate><description><![CDATA[了解一下日常开发中关于 Json 解析的一些非常规用法，以及使用 fastjson 的一些总结。]]></description><category></category></item><item><title><![CDATA[RxJava 是如何实现线程切换的（上）]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/79146049</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/79146049</guid><author>TOYOTA11</author><pubDate>Tue, 23 Jan 2018 23:39:54 +0800</pubDate><description><![CDATA[前言

通过前一篇的从观察者模式出发，聊聊RxJava,我们大致理解了RxJava的实现原理，在RxJava中可以非常方便的实现不同线程间的切换。subscribeOn 用于指定上游线程，observeOn 用于指定下游线程，多次用 subscribeOn 指定上游线程只有第一次有效，多次用 observeOn 指定下次线程，每次都有效；简直太方便了，比直接使用Handler省了不少力气，同时也不]]></description><category></category></item><item><title><![CDATA[从观察者模式出发，聊聊RxJava]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78998170</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78998170</guid><author>TOYOTA11</author><pubDate>Sun, 07 Jan 2018 22:08:38 +0800</pubDate><description><![CDATA[前言
RxJava 是什么
观察者模式
RxJava2 的观察者模式实现
四个重要的角色
具体的观察者是如何实例化的
如何实现订阅发送事件和接收事件
RxJava 中对常规的观察者模式做了怎样调整带来了什么好处










前言

RxJava 是什么


  RxJava – Reactive Extensions for the JVM – a library for composin]]></description><category></category></item><item><title><![CDATA[代理模式]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78976682</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78976682</guid><author>TOYOTA11</author><pubDate>Thu, 04 Jan 2018 23:42:21 +0800</pubDate><description><![CDATA[介绍

代理模式也称为委托模式，是一种结构性设计模式。

说到代理，可能大部分人都会有一种陌生又熟悉的感觉，日常生活中好像都能遇到，比如代理上网，招商代理，商务代理等；但又说不出个具体的一二三来；代理这个事情如果我们换个角度，从委托者的角色出发，我们找代理上网，是因为我们在访问某些网站时存在困难，需要有个角色来间接的帮我们实现这个功能；我们找商务代理，可能是因为许多事我们不在行或者其他原因，需要找]]></description><category></category></item><item><title><![CDATA[Android 插件化和热修复知识梳理]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78660511</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78660511</guid><author>TOYOTA11</author><pubDate>Tue, 28 Nov 2017 23:20:12 +0800</pubDate><description><![CDATA[概述在Android开发中，插件化和热修复的话题越来越多的被大家提及，同时随着技术的迭代，各种框架的发展更新，插件化和热修复的框架似乎已经日趋成熟，许多开发者也把这两项技术运用到实际开发协作和正式的产品当中。因此，我们势必需要了解一下这两门技术。插件化和热修复首先需要明确的一点，插件化和热修复不是同一个概念，虽然站在技术实现的角度来说，他们都是从系统加载器的角度出发，无论是采用hook方式，亦或是代]]></description><category></category></item><item><title><![CDATA[数据结构-堆]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78440322</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78440322</guid><author>TOYOTA11</author><pubDate>Fri, 03 Nov 2017 22:30:28 +0800</pubDate><description><![CDATA[对于堆（Heap）这种数据结构，从根节点到任意结点路径上所有的结点都是有序的。堆的ADT堆的实现堆是用数组实现的完全二叉树]]></description><category></category></item><item><title><![CDATA[数据结构-平衡二叉树]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78409448</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78409448</guid><author>TOYOTA11</author><pubDate>Tue, 31 Oct 2017 23:35:00 +0800</pubDate><description><![CDATA[定义平衡二叉树，是对二叉搜索树的一种优化。向二叉搜索树中插入元素时，不同的插入次序，将构造出不同结构的树。通俗来讲，就是会导致树的深度和平均查找长度(ASL averge search length)不同；以下图为例。明显可以看出，中间(b)这种结构是比较好的。整个二叉搜索树左右两边显得比较平均，不像最后一种完全成了一颗右斜树，或者说是单向链表，同时也可以看到其ASL=3.0 是这三种结构中最小的。]]></description><category></category></item><item><title><![CDATA[数据结构-二叉搜索树的实现]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78370678</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78370678</guid><author>TOYOTA11</author><pubDate>Fri, 27 Oct 2017 23:55:56 +0800</pubDate><description><![CDATA[定义二叉搜索树(Binary Search Tree,BST),也称为二叉排序树或二叉查找树。相较于普通的二叉树，非空的二叉搜索树有如下性质：
非空左子树的所有键值小于其根结点的键值；
非空右子树的所有键值大于其根结点的键值；
左右子树均为二叉搜索树；
树中没有键值相等的结点。]]></description><category></category></item><item><title><![CDATA[数据结构-二叉树的存储结构与遍历]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78336323</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78336323</guid><author>TOYOTA11</author><pubDate>Tue, 24 Oct 2017 23:51:34 +0800</pubDate><description><![CDATA[一个有穷的结点集合，可以为空。若不为空，则它是由根结点和称为其左子树和右子树的两个互不相交的二叉树组成。]]></description><category></category></item><item><title><![CDATA[栈和队列的相互实现]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78314185</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78314185</guid><author>TOYOTA11</author><pubDate>Sun, 22 Oct 2017 22:45:20 +0800</pubDate><description><![CDATA[前言栈和队列作为两种典型的线性表，有着非常鲜明甚至可以说是相互对立的特点；栈先进后出（后进先出），队列先进先出（后进后出）。因此，对相同的输入，两者会产生恰好截然相反的输出。例如，对于给定的序列”ABCDE”,如果按照字母顺序将这个5个元素依次入栈，然后再依次出栈，那么得到的输出将是”EDCBA”,而如果将5个元素意思压入队列，然后依次弹出，那么得到的输出将是”ABCDE”。正是因为这种截然相对的输]]></description><category></category></item><item><title><![CDATA[数据结构-栈&队列&Deque实现比较]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/78314109</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/78314109</guid><author>TOYOTA11</author><pubDate>Sun, 22 Oct 2017 22:35:33 +0800</pubDate><description><![CDATA[对于栈和队列这两种特殊的数据结构，由于获取（查找）元素的位置已经被限定，因此采用顺序存储结构并没有非常大的优势，反而是在添加元素由于数组容量的问题还会带来额外的消耗；因此，在无法预先知道数据容量的情况下，使用链式结构实现栈和队列应该是更好的选择]]></description><category></category></item><item><title><![CDATA[Android MVP 十分钟入门！]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/54728357</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/54728357</guid><author>TOYOTA11</author><pubDate>Wed, 25 Jan 2017 09:03:43 +0800</pubDate><description><![CDATA[前言在日常开发APP 的过程中，随着业务的扩展，规模的变化。我们的代码规模也会逐渐变得庞大，每一个类里的代码也会逐渐增多。尤其是Activity和Fragment ，由于Context 的存在，基本上所有对视图的操作我们只能在Activity和Fragment中完成；即便是对某些逻辑进行封装，Activity和Fragment 依旧会显得过于臃肿。因此，我们需要换一种思路去写代码，这个时候MVP模式]]></description><category></category></item><item><title><![CDATA[关于AsyncTask的一次深度解析]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/54670619</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/54670619</guid><author>TOYOTA11</author><pubDate>Sun, 22 Jan 2017 20:29:19 +0800</pubDate><description><![CDATA[前言任何一个Android 开发者对AsnycTask 都应该不陌生；使用AsyncTask可以很方便的异步处理耗时操作；AsyncTask内部对Handler和Thread进行了封装，简化了Handler的使用方式，使用起来非常方便。]]></description><category></category></item><item><title><![CDATA[终于明白了Handler的运行机制]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/54583038</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/54583038</guid><author>TOYOTA11</author><pubDate>Tue, 17 Jan 2017 14:49:32 +0800</pubDate><description><![CDATA[前言Handler是一个Android SDK 提供给开发者方便进行异步消息处理的类。我们都知道在UI线程中不能进行耗时操作，例如数据读写、网络请求。Android 4.0开始，在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadException。这个时候，我们就会开始依赖Handler。我们在子线程进行耗时操作后，将请求结果通过Handler的sendMe]]></description><category></category></item><item><title><![CDATA[Android 动画实战-仿微博雷达功能]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/54095456</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/54095456</guid><author>TOYOTA11</author><pubDate>Thu, 05 Jan 2017 17:19:47 +0800</pubDate><description><![CDATA[前言在应用中使用动画，可以给用户带来良好的交互体验。通过之前对Android动画的分类总结，尝试了使用属性动画实现支付宝支付效果及购物车添加动画的效果，今天在这里模仿一下微博雷达页面效果。对Android动画不太熟悉或遗忘的知识，可以通过下面两篇文章了解。Android 动画总结，Android 动画实战此次模仿新浪微博雷达页的功能，虽然只有一个Activity，但使用到了很多知识。包括 
- 属性]]></description><category></category></item><item><title><![CDATA[我们真的需要使用RxJava+Retrofit吗？]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/53454925</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/53454925</guid><author>TOYOTA11</author><pubDate>Sun, 04 Dec 2016 16:35:26 +0800</pubDate><description><![CDATA[可以说RxJava+Retrofit是整个2016年Android 开发圈内最受关注的的组合。各大Android论坛上有大量以RxJava+Retrofit+xxx 为标题的文章，此类文章也备受大家的关注。这个组合仿佛已经成为了Android开发的必备组件，项目里没使用这个组合好像自己都out了似的。]]></description><category></category></item><item><title><![CDATA[Android 动画实战]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/53014663</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/53014663</guid><author>TOYOTA11</author><pubDate>Wed, 02 Nov 2016 23:13:52 +0800</pubDate><description><![CDATA[前言通过之前的《Android 动画总结》，对常用的Android动画有了一个整体认识。但是，之前的内容都是概念性的，所列的demo也没有实际意义。这里就通过两个实例了解一下如何在 实际开发中运用Android 动画来实现一些良好的用户体验。]]></description><category></category></item><item><title><![CDATA[Android 动画总结]]></title><link>https://blog.youkuaiyun.com/TOYOTA11/article/details/52864676</link><guid>https://blog.youkuaiyun.com/TOYOTA11/article/details/52864676</guid><author>TOYOTA11</author><pubDate>Wed, 19 Oct 2016 22:54:16 +0800</pubDate><description><![CDATA[。Android 动画分类总的来说，Android动画可以分为两类，最初的传统动画和Android3.0 之后出现的属性动画； 
传统动画又包括 帧动画（Frame Animation）和补间动画（Tweened Animation）。]]></description><category></category></item></channel></rss>