<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[你关注了我，是个概率极低的事件......]]></title><description><![CDATA[美团外卖移动端开发工程师、上海大学硕士]]></description><link>https://blog.youkuaiyun.com/colinandroid</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; colinandroid]]></copyright><item><title><![CDATA[水一篇文章，吐槽下我最近的工作生活]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/105878214</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/105878214</guid><author>colinandroid</author><pubDate>Fri, 01 May 2020 15:39:46 +0800</pubDate><description><![CDATA[先说下为什么自己没有更博。从去年7月份加入美团外卖，我收获了很多新知识，进步真的很大，那这不是应该更多地更博，把学到的知识记录下么？我之所以没有更博，是因为在美团内部是有技术文章期刊的，能在内部期刊上发文章也算是绩效的一部分。。。我的精力都花在发表内部期刊了，而且发一篇文章很占用时间，基本前前后后要用一个月。。。所以，当我有些学习心得时，我都在想能不能再扩展一下，发成一篇技术文章。。
接下来我想吐...]]></description><category></category></item><item><title><![CDATA[React Native展示富文本（HTML标签）最佳解决方案]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/91046771</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/91046771</guid><author>colinandroid</author><pubDate>Thu, 06 Jun 2019 18:34:38 +0800</pubDate><description><![CDATA[需求背景
我们最近要做一个React Native的产品详情页，里面有一部分内容展示的是服务端下发的html标签（运营人员编写的，内容不固定，且很随意）。需求点是：1、展示富文本，包括img、span、div等基本html标签；2、控制富文本的整体样式，比如业务配置的图片大小不一，我们要统一已屏幕宽度为基准，高度自适应。
第三方组件react-native-htmlview
要实现这个需求，我第一...]]></description><category></category></item><item><title><![CDATA[【web安全】深入浅出XSS攻击]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/89757446</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/89757446</guid><author>colinandroid</author><pubDate>Thu, 02 May 2019 14:56:35 +0800</pubDate><description><![CDATA[在学习JS的过程中，你一定听说过CSRF攻击和XSS攻击。关于CSRF攻击，我已经在之前的文章中介绍过了，本文就来介绍一下XSS攻击。
XSS定义和原理
发出请求时，XSS代码出现在url中，作为输入提交到服务端，服务端解析后响应，XSS代码随响应内容一起回传给浏览器，最后浏览器解析并执行XSS代码。
XSS防御措施
一般xss防御措施有三种：

编码
过滤：原样显示用户输入内容时，要把不合法的内...]]></description><category></category></item><item><title><![CDATA[箭头函数this指向的陷阱]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/89525952</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/89525952</guid><author>colinandroid</author><pubDate>Sat, 27 Apr 2019 17:33:15 +0800</pubDate><description><![CDATA[箭头函数没有this！
箭头函数没有this！！
箭头函数没有this！！！
重要的事情说三遍！

那你可能要问我在箭头函数中明明可以取到this啊！
function foo() {
  this.a = 1
  let b = () =&gt; console.log(this.a)

  b()
}

foo()  // 1


以上箭头函数中的this其实是父级作用域中的this，箭头函数...]]></description><category></category></item><item><title><![CDATA[【跨域】jsonp看完这篇文章就够了]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/89433240</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/89433240</guid><author>colinandroid</author><pubDate>Sun, 21 Apr 2019 16:36:06 +0800</pubDate><description><![CDATA[jsonp是一种jQuery提供的跨域解决方案，我们今天来好好讲讲jsonp。
同源策略
所有浏览器都会使用同源策略这个安全策略。
所谓同源，是指协议、域名、端口号都相同。
没有同源的两个危险场景

设想在用户访问淘宝时，进行了登录操作，并且登录信息写进了cookie。这时，你突然看到了一个广告，点击跳转进了一个广告链接。如果没有同源策略，这个广告页可以向淘宝发起请求，而由于登录信息已经写进了co...]]></description><category></category></item><item><title><![CDATA[require和import有啥区别？]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/89195401</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/89195401</guid><author>colinandroid</author><pubDate>Wed, 10 Apr 2019 21:26:42 +0800</pubDate><description><![CDATA[今天在研究react的lazyRequire时突然想到了这个问题，于是展开了一些列研究。。
要回答这个问题，必须从模块化说起。
所谓模块化主要就是解决代码分割、作用域隔离、模块之间的依赖管理。

通常一个文件就是一个模块，有自己的作用域，只向外暴露特定的变量和函数。

流行的模块化规范有：CommonJS、AMD、CMD、ES6的模块系统。
这里简单介绍下CommonJS规范和ES6 Module...]]></description><category></category></item><item><title><![CDATA[不妨这样去理解JavaScript中的dom和bom]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/89111476</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/89111476</guid><author>colinandroid</author><pubDate>Tue, 09 Apr 2019 00:10:34 +0800</pubDate><description><![CDATA[JavaScript是由三大部分组成：核心ECMAScript、文档对象模型-DOM、浏览器对象模型-BOM。
这里我们主要来讲解下BOM和DOM。
一. DOM
JavaScript可以通过DOM来获取文档里的标签、属性等内容，也可以用来操控文档内容
Document
文档，这里的文档指的是XML和HTML的页面。当你创建一个页面并且加载到浏览器中，DOM就悄然而生。
Object
在学习Jav...]]></description><category></category></item><item><title><![CDATA[摆脱create-react-app，来让我们自己搭建一个react脚手架]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/89116870</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/89116870</guid><author>colinandroid</author><pubDate>Tue, 09 Apr 2019 00:03:33 +0800</pubDate><description><![CDATA[创建一个文件夹REACT-CNODE-TEACH
mkdir REACT-CNODE-TEACH
在文件夹中npm init（我们使用npm来管理依赖包）

一路点回车就行，当然你也可以去详细配置下工程信息。
装一个webpack

一个react工程，怎么能不安装react？

这个时候我们要配置一下webpack，我们先在工程根目录创建一个文件夹build，然后创建一个webpack配置文件...]]></description><category></category></item><item><title><![CDATA[封装一个在react上更易用的redux框架]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/88747616</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/88747616</guid><author>colinandroid</author><pubDate>Sun, 24 Mar 2019 22:40:34 +0800</pubDate><description><![CDATA[redux框架相信大家都已经用的很多了，不知道你们用的还习惯吗？我们在项目里反正用的都是

]]></description><category></category></item><item><title><![CDATA[JS数组的几个有逼格操作]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/88677088</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/88677088</guid><author>colinandroid</author><pubDate>Tue, 19 Mar 2019 23:39:21 +0800</pubDate><description><![CDATA[1. 去重
Array.from(new Set([1,2,3,3,4,4]) //[1,2,3,4]
[...new Set([1,2,3,3,4,4])] //[1,2,3,4]

2. 排序
[1,2,3,4 ].sort (); // [1, 2,3,4],默认是升序
[1,2,3,4].sort((a,b) =&gt; b - a); // [4,3,2,1] 降序

3. 求和
[1,...]]></description><category></category></item><item><title><![CDATA[颤抖吧！一起手写一个redux框架！]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/88204523</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/88204523</guid><author>colinandroid</author><pubDate>Wed, 06 Mar 2019 20:51:48 +0800</pubDate><description><![CDATA[redux是一个前端架构，经常和react一起使用。你要用react.js基本上都要用到redux和react-redux，但这两者并不是一个东西！

redux是一个前端框架，你可以把它用到react、vue，设置jquery。
react-redux是把redux这个前端架构结合到react形成的库，就是redux架构在react中的体现。

话不多说，我们来从头手写一个redux框架。
用c...]]></description><category></category></item><item><title><![CDATA[聊一聊如何使用context，这是学习redux源码的基础哦]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/88175750</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/88175750</guid><author>colinandroid</author><pubDate>Tue, 05 Mar 2019 13:45:20 +0800</pubDate><description><![CDATA[在学习redux源码一段时间之后，我发现不懂得context如何使用已经阻碍到我理解redux的设计思想了。。
所以，这里介绍一下react的context如何使用，不过这个api可能你在业务开发时永远不会用到。。
好了，废话不多说，我们来讲解下context如何使用。
一. 如何使用context？
想象一下，我们有现在这样一个页面（Index），其组件树长成如下这个样子：

假设这个组件树里的...]]></description><category></category></item><item><title><![CDATA[JavaScript的事件循环与宏微任务]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/87895513</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/87895513</guid><author>colinandroid</author><pubDate>Thu, 28 Feb 2019 21:04:12 +0800</pubDate><description><![CDATA[本文记录了作者在研究JS的宏任务和微任务的过程中如何抽丝剥茧，理清原理的。
阅读本文大概需要二十分钟
一. 理论基础
1. 引擎和runtime

引擎：解释并编译代码，把它变成能在机器上运行的代码。
我们都知道JS是解释型语言，因为JS是没有办法直接运行在机器上的，需要一个引擎把它变成能在机器上运行的代码。JavaScript引擎的基本工作就是把开发人员编写的代码转换成高效、优化的代码，很多人把...]]></description><category></category></item><item><title><![CDATA[三分钟带你理解JS原型]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/87858638</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/87858638</guid><author>colinandroid</author><pubDate>Thu, 21 Feb 2019 14:16:22 +0800</pubDate><description><![CDATA[一. 理论基础
1. 普通对象和函数对象
JavaScript中，万物皆对象！但是对象也是有区别的，分为普通对象和函数对象。
function F(){}; //F：函数对象
var f = new F(); //f: 普通对象

2. 构造函数
与大部分面向对象的语言不同，JavaScript中并没有引入类（class）的概念，但JavaScript仍然大量使用了对象，为了保证对象之间的联系，J...]]></description><category></category></item><item><title><![CDATA[【JS基础】从零开始带你理解JavaScript闭包--我是如何彻底搞明白闭包的]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/82865312</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/82865312</guid><author>colinandroid</author><pubDate>Tue, 09 Oct 2018 19:35:14 +0800</pubDate><description><![CDATA[一直有一些刚入门js的朋友问我“什么是闭包？”，这里我就专门总结一下，下次再有人问起来，就直接把这篇文章给他看好了。
什么是闭包？
其实很简单啊。闭包就是一个函数（外部函数）内部又定义了一个函数（内部函数），内部函数可以访问外部函数中声明的所有变量。其实就是这样简单，可是官方解释就比较晦涩了：
闭包是一个拥有许多变量和绑定了这些变量环境的表达式。
接下来，理解闭包还需要知道闭包的几种写法和用法。
...]]></description><category></category></item><item><title><![CDATA[【算法与数据结构】经典排序算法总结]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/82931296</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/82931296</guid><author>colinandroid</author><pubDate>Wed, 03 Oct 2018 20:47:02 +0800</pubDate><description><![CDATA[1. 冒泡排序
时间复杂度：o(n2)
过程：
一开始交换的区间是0-(N-1)，也就是整个数组的整体；然后第一个数与第二个数进行比较，哪个大，哪个就放在后面；然后第二个数与第三个数进行比较，哪个大，哪个就放在后面；这样依次交换下去，最大的数就被放到了最后；然后把交互区间从0-(N-1)，变为0-(N-2)，这样第二大的数就被放到数组倒数第二的位置；这个过程进行下去，直到区间就只有一个数；这样数组...]]></description><category></category></item><item><title><![CDATA[【编程框架】Android可配置的ScrollView框架]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/82857037</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/82857037</guid><author>colinandroid</author><pubDate>Thu, 27 Sep 2018 16:34:26 +0800</pubDate><description><![CDATA[给大家推荐一下我最近刚写好的“可配置的ScrollView框架”，凡是采用scrollView结构的业务页面都可以采用这个框架。该框架主要有以下几个优点：
1、scrollView中的每个模块位置走配置，有一个configuration类统一管理
2、业务代码模块化。activity里不再充斥了各种业务代码，每个模块的业务代码分别在自己的模块里实现
3、layout布局模块化。每个模块的布局都写在...]]></description><category></category></item><item><title><![CDATA[【Android基础】讲讲Android的事件分发机制]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/81202045</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/81202045</guid><author>colinandroid</author><pubDate>Thu, 26 Jul 2018 15:38:35 +0800</pubDate><description><![CDATA[Android的事件分发机制涉及的知识点很多，为了方便记忆和知识总结，小编决定专门开一篇文章，记录相关知识。 
话不多说，我们直入主题。



面试场景

今天找到了几个自己之前校招时记录的关于事件分发的几个面试题。


  讲讲Android的事件分发机制


基本会遵从Activity =&amp;amp;amp;amp;gt; ViewGroup =&amp;amp;amp;amp;gt; View的顺序进行事件分发，然后通过调用onTouchEvent...]]></description><category></category></item><item><title><![CDATA[【设计模式】最常用的设计模式之一的观察者模式]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/81113013</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/81113013</guid><author>colinandroid</author><pubDate>Thu, 19 Jul 2018 12:01:56 +0800</pubDate><description><![CDATA[ 
这是之前做的“产品详情页”的长截图，这里讲解一下这个页面与“观察者模式”的关系：在活动季，底部的“开始预订按钮”会变成“秒杀按钮”（所谓秒杀按钮，就是一个显示成灰色不可点击，并且一直处于倒计时状态的按钮，直到到达秒杀时间，比如0点整，秒杀按钮才由灰色变为橘黄色，并且可以点击）, 当秒杀时间到时，不光底部的“秒杀按钮”变为“开始预订按钮”，可选班期的几个按钮也从灰色不可点击状态，变为白色可点击状...]]></description><category></category></item><item><title><![CDATA[android studio compiled code 之 记录一次艰难的android studio采坑之旅]]></title><link>https://blog.youkuaiyun.com/colinandroid/article/details/81095679</link><guid>https://blog.youkuaiyun.com/colinandroid/article/details/81095679</guid><author>colinandroid</author><pubDate>Wed, 18 Jul 2018 11:48:47 +0800</pubDate><description><![CDATA[不知从哪个时间点起，我的android studio就不能查看jar包里的源码了… 
这个过程是极其痛苦的： 
 - 要想查看jar包里的源码，只能去网上找网页版的… 
 - 同事用我的电脑分享时，每每看到源码层就哭笑不得… 
 给大家看一下我看到的okhttp源码是什么样的



真的生无可恋了…

每次研究了半天都没进展的话，我就放下继续去做手头的事了，直到最近有空研究下，才真正解决了这个问题...]]></description><category></category></item></channel></rss>