<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[微风轻拂]]></title><description><![CDATA[科技+艺术+人性=美好]]></description><link>https://blog.youkuaiyun.com/max2005</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; max2005]]></copyright><item><title><![CDATA[Compose相对React的改进]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/123283197</link><guid>https://blog.youkuaiyun.com/max2005/article/details/123283197</guid><author>max2005</author><pubDate>Fri, 04 Mar 2022 19:09:46 +0800</pubDate><description><![CDATA[compose 相对 react 的改进]]></description><category></category></item><item><title><![CDATA[js数组初始化时 fill 填充的小bug]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/122579804</link><guid>https://blog.youkuaiyun.com/max2005/article/details/122579804</guid><author>max2005</author><pubDate>Wed, 19 Jan 2022 14:15:50 +0800</pubDate><description><![CDATA[数组初始化代码如下：


const arr = new Array(3).fill([])
const arr2 = [[],[],[]]

console.log(JSON.stringify(arr)) //输出：[[],[],[]]
console.log(JSON.stringify(arr2)) //输出：[[],[],[]]
console.log(arr==arr2) //输出 false !! 明明stringify打印出来的内容都一样，为何这里却不等？

var arrIndex = 0]]></description><category></category></item><item><title><![CDATA[直观理解Java泛型的子类型]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/108372890</link><guid>https://blog.youkuaiyun.com/max2005/article/details/108372890</guid><author>max2005</author><pubDate>Wed, 02 Sep 2020 23:51:02 +0800</pubDate><description><![CDATA[------------Java泛型的子类型问题-------------

存在对象及容器两个问题

1，对象类型的子类型，比如：苹果是不是水果的子类型？

2，容器类型的子类型，比如：一盒苹果是不是一盒水果的子类型？



--------------继承与指针----------------

子类型问题的根源在于继承

子类继承基类后，子类除了拥有基类的一切外，子类还有自己仅有的部分属性

举例：苹果继承了水果，苹果拥有水果的所有属性，但还有自己的属性，比如苹果的酸甜



子类型问题具体表现在..]]></description><category></category></item><item><title><![CDATA[Kotlin密封类与枚举类的应用场景]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/106309354</link><guid>https://blog.youkuaiyun.com/max2005/article/details/106309354</guid><author>max2005</author><pubDate>Sun, 24 May 2020 01:04:31 +0800</pubDate><description><![CDATA[两者较为接近，往往同一个功能两者均可实现，但是语言的设计者是有区分意图的。我理解如下：



密封类

陈列该类的多种子类，也即每个子类都继承自该密封类
	用于分辨一个实例的所有可能类型
枚举类

陈列该类的多个实例，也即每个枚举都是该枚举类的实例
	用于分辨同一个类型的多个实例


举例：

判断一个班的成员：张三，李四，王五。此刻使用枚举

判断一名学生的成分：群众，班干部，团委干部。此刻使用密封类
...]]></description><category></category></item><item><title><![CDATA[Kotlin对象的生成方式整理]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/106205758</link><guid>https://blog.youkuaiyun.com/max2005/article/details/106205758</guid><author>max2005</author><pubDate>Tue, 19 May 2020 01:40:39 +0800</pubDate><description><![CDATA[Kotlin中可能有如下几种生成对象的方式



1，对象表达式

val myObject = object { } //匿名生成，赋给变量，或作为匿名对象使用

一个最简但完整的示例：

open class A(x: Int) {

 public open val y: Int = x

}

interface B { /*……*/ }



val ab: A = object : A(1), B {

 override val y = 15

 var x: Int =...]]></description><category></category></item><item><title><![CDATA[在多个Android项目工程中共享一个库模块]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/52480187</link><guid>https://blog.youkuaiyun.com/max2005/article/details/52480187</guid><author>max2005</author><pubDate>Wed, 06 May 2020 01:17:31 +0800</pubDate><description><![CDATA[我们可以把库模块做成一个jar，由多个项目工程引用。不过有时我们会希望以源文件源项目的方式来引用库模块，这样可以对库模块文件临时做修改调试等等。

我们首先建立两个最简项目工程，其一叫MyProj1，其二叫MyProj2Lib，假定现在我们已经建好了，每个工程里面各有一个app模块。

接下来我们在MyProj2Lib中增加了一个mylibrary库模块，方法是File-->New--]]></description><category></category></item><item><title><![CDATA[Kotlin函数类型的实例化]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/105938065</link><guid>https://blog.youkuaiyun.com/max2005/article/details/105938065</guid><author>max2005</author><pubDate>Tue, 05 May 2020 20:22:33 +0800</pubDate><description><![CDATA[三种函数格式

1，函数字面值

1.1，Lambda

1.2，匿名函数

2，反射引用普通函数

3，实现函数类型接口的类



首先定义一个需要函数作为参数的函数

fun myFunIns(data:Int, myFun:(arg:Int)-&gt;Int):Int{

 return myFun(data)

}



这是第一种格式，即函数字面值的Lambda表示法

...]]></description><category></category></item><item><title><![CDATA[Promise+then实现异步串联]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/79761293</link><guid>https://blog.youkuaiyun.com/max2005/article/details/79761293</guid><author>max2005</author><pubDate>Fri, 30 Mar 2018 17:58:27 +0800</pubDate><description><![CDATA[我们所有一切的目的都是：象写同步一样写异步。类似：RunAsync.add(new Task())//task1    .add(new Task())//task2    .add(new Task())//task3    .start();我们希望task1完成之后task2再启动，task2完成后task3再启动，也即异步串联。示例：Promise+then实现异步串联...]]></description><category></category></item><item><title><![CDATA[JavaScript模拟局部变量整理]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/79760950</link><guid>https://blog.youkuaiyun.com/max2005/article/details/79760950</guid><author>max2005</author><pubDate>Fri, 30 Mar 2018 17:35:58 +0800</pubDate><description><![CDATA[在ES5中变量边界有两个，一是全局范围，二是函数范围，没有一般语言的作用域范围，比如{    var a = 1;}console.log(a); //1上面会输出1，然而我们希望a仅仅局限于自己最近的括号内，而在括号外为未定义undefined，也即一般编程语言的局部变量。本文是学习ES5时整理的模拟局部变量的奇巧淫技，现在看来相当于是回字的x种写法，已经无任何意义。因为在ES6中终于引入了le...]]></description><category></category></item><item><title><![CDATA[历史演变有助于理解css布局的本质]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/79751539</link><guid>https://blog.youkuaiyun.com/max2005/article/details/79751539</guid><author>max2005</author><pubDate>Fri, 30 Mar 2018 01:52:21 +0800</pubDate><description><![CDATA[最原始的文字布局应该类似古代手工书信，可能是1、每个单词只占最小空间，向左顺序排列2、排到页面右边缘后换行3、回车则结束一段，并新起一段，然后重复1和2整理1、段内部的向左顺序排列形成一条向左流。所谓流，就是内联；2、每次回车新启一段，且每一段占完整的一行，每个段形成一个块，并且上面的块和下面的块形成一条向上流，也即向上的内联；以上，是最初的文字布局，并且形成了最基础的概念：流、内联、块。加入图片...]]></description><category></category></item><item><title><![CDATA[工作量证明怎样突出多数共识]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/79751527</link><guid>https://blog.youkuaiyun.com/max2005/article/details/79751527</guid><author>max2005</author><pubDate>Fri, 30 Mar 2018 01:37:49 +0800</pubDate><description><![CDATA[（这篇博客陈诉顺序不好，应该先写最后一个两军对垒退化案例，再写投票案例，最后再说区块链共识。所以阅读时请先看最后，再看中间和前面）区块链系统的特征是分布式、去中心化，能够逐步形成共识，并持久地堆积共识。由于去中心化，意味着每个节点完全由不同的人或组织管理控制，在其中必定存在各种对立节点或恶意节点。那么这里最有趣的就是，怎样在分布的节点里面形成一条共识？当区块链支持比特币时，诚实节点的共识主张可以具...]]></description><category></category></item><item><title><![CDATA[Parcelable, Serializable，Cloneable，copyProperties]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/78325036</link><guid>https://blog.youkuaiyun.com/max2005/article/details/78325036</guid><author>max2005</author><pubDate>Tue, 24 Oct 2017 00:33:45 +0800</pubDate><description><![CDATA[存在着三件事，整理如下

 

Parcelable, Serializable(包括Externalizable+transient) -------压缩成字节流，再恢复成同类对象

 

Parcelable手工将字段放入Parcel字节流，无反射

Serializable使用反射来发现字段及辅助信息

Serializable使用Stream或ArrayByte之类]]></description><category></category></item><item><title><![CDATA[用TextWatcher限制输入长度并弹出提示]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/78325009</link><guid>https://blog.youkuaiyun.com/max2005/article/details/78325009</guid><author>max2005</author><pubDate>Tue, 24 Oct 2017 00:28:57 +0800</pubDate><description><![CDATA[在EditText里面输入，限制输入长度并弹出提示，原本，这是最初级和普遍的需求了，但在细微处却有点小不方便。
 
方法之一，是在xml中添加限制：maxLength="10"。但是，当用户输入达到或超过限制时没有提示。
 
方法之二，给EditText添加TextWatcher监控，在输入超过限制时给予提示，并恢复为之前的状态。给予提示很容易，但怎么恢复为之前状态却需要小心。
 
另]]></description><category></category></item><item><title><![CDATA[用RxJava和RxBinding发射用户点击]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/76736615</link><guid>https://blog.youkuaiyun.com/max2005/article/details/76736615</guid><author>max2005</author><pubDate>Sat, 05 Aug 2017 23:15:13 +0800</pubDate><description><![CDATA[在初步应用RxJava时发现，网上资料中Observable的创建例子主要使用create/just/from，都是将现在已有的数据序列整理为一个发射器，而我们最常见的应用却是现在没有数据序列，等待将来数据序列的到达，比如等待用户点击或输入，或等待网络来包，也即，我们其实需要一种手动的发射器，在数据到达后用来发送这些数据。那么怎样创建这种发射器呢？查询资料后发现有几个途径，下面用点击textvie]]></description><category></category></item><item><title><![CDATA[最简单易懂的dagger2示例]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/76652819</link><guid>https://blog.youkuaiyun.com/max2005/article/details/76652819</guid><author>max2005</author><pubDate>Fri, 04 Aug 2017 02:03:04 +0800</pubDate><description><![CDATA[在网上搜了很多资料，包括官网，都看不懂，基本打算放弃了。何况从功能上看，用inject替代new，似乎提升不大。

最后时刻这篇博文拯救了我：https://zhuanlan.zhihu.com/p/24454466 。此文完全抛开了其他博文涉及的Android+MVP等复杂构架，是最简的纯java案例，我一下子就看懂了，可能就10分钟，我就实现了0->1的转化。其他博文也写得很用心，但写得都]]></description><category></category></item><item><title><![CDATA[从可视角度理解px、pt、dp]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/54098622</link><guid>https://blog.youkuaiyun.com/max2005/article/details/54098622</guid><author>max2005</author><pubDate>Thu, 05 Jan 2017 22:10:50 +0800</pubDate><description><![CDATA[三个长度单位都根源于人眼的最小可视角度，根据这个角度和目标距离确定最小可视颗粒度尺寸。人眼的最小可视角度是不变的，目标距离越远，则这个颗粒度尺寸就越大，否则人眼会分辨不了。比这个颗粒度尺寸小一个数量级的度量单位没必要定义，因为人眼看不见，用不到]]></description><category></category></item><item><title><![CDATA[图示硬链接和软链接的区别]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/52718590</link><guid>https://blog.youkuaiyun.com/max2005/article/details/52718590</guid><author>max2005</author><pubDate>Sat, 01 Oct 2016 20:55:05 +0800</pubDate><description><![CDATA[linux文件系统中硬链接和软连接的区别]]></description><category></category></item><item><title><![CDATA[Material Design风格中CoordinatorLayout、Behavior和nestedScroll的整理分析]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/51914246</link><guid>https://blog.youkuaiyun.com/max2005/article/details/51914246</guid><author>max2005</author><pubDate>Fri, 15 Jul 2016 02:12:22 +0800</pubDate><description><![CDATA[现象与分解


     Material Design中一个神奇的设计是，抹动一个子view甲时，子view乙与子view甲一起滑动


     可以想象一下，其实现过程必然是
          子view甲向父ViewGroup申请滑动
          父ViewGroup将部分滑动距离交给子view甲，部分交给子view乙
          子view甲和乙同时滑]]></description><category></category></item><item><title><![CDATA[Android触屏事件处理流程的最简整理及应用示例]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/51289135</link><guid>https://blog.youkuaiyun.com/max2005/article/details/51289135</guid><author>max2005</author><pubDate>Sun, 01 May 2016 01:35:30 +0800</pubDate><description><![CDATA[Android系统view层次结构如下。注意Fragment和ViewGroup可能交错


Activity
     Fragment
          ViewGroup
               View


整理
     当Activity收到event后，通过dispatch方法逐层下发
     最下层通过onTouchEvent方法逐层向上反馈是否消费]]></description><category></category></item><item><title><![CDATA[写一个Android日历控件]]></title><link>https://blog.youkuaiyun.com/max2005/article/details/51288815</link><guid>https://blog.youkuaiyun.com/max2005/article/details/51288815</guid><author>max2005</author><pubDate>Sun, 01 May 2016 00:38:45 +0800</pubDate><description><![CDATA[日历是一个常用控件，一般而言我们会通过两种途径来得到，其一是Android原生控件CalendarView，其二是在网上找一些第三方的日历控件。但这两种都有同样的不足，也即不好自定义，比如添给某段日期加个标记，或加一个中国农历，等等。最佳的，是自己写一个，可以完全自定义，无论以后项目怎么扩展，自己心里都有底。


分析一下，日期本身是”年月日“，但我们要写日历，最重要的是“周”，只要我们能够]]></description><category></category></item></channel></rss>