<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Mosum的博客]]></title><description><![CDATA[不积跬步无以至千里！]]></description><link>https://blog.youkuaiyun.com/YPJMFC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; YPJMFC]]></copyright><item><title><![CDATA[2020年11月14日 学习笔记]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/109698138</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/109698138</guid><author>YPJMFC</author><pubDate>Sat, 14 Nov 2020 22:51:22 +0800</pubDate><description><![CDATA[2020年11月14日 学习笔记
forEach，reduce，map，filter 函数
forEach 函数
遍历数组，使得其中每一项执行某个操作
let arr = [1,2,3,4,5];
arr.forEach((item,index)=&gt; {
    console.log(item);
})

reduce 函数
让数组的前后项做某种计算，并累计最终值
array.reduce(function(total, currentValue, currentIndex, arr), initi]]></description><category></category></item><item><title><![CDATA[优化页面打开速度（一）]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/90348188</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/90348188</guid><author>YPJMFC</author><pubDate>Sun, 19 May 2019 21:32:18 +0800</pubDate><description><![CDATA[前言
我们经常使用dom渲染的时间和整个页面的load时间来衡量一个页面打开的快不快，下面主要总结一下最近使用的一些可以打开页面优化速度的方式。
优化方法
傻瓜式优化
优化的操作都很简单就可以取得比较明显的效果，是进行页面优化切入的首选方式。
1.DNS预读取
使用DNS预读取的方式在后代并行地进行DNS的解析，可以防止浏览器耗费时间去解析DNS从而影响页面DOM的渲染，一个稍微复杂的页面通常要进...]]></description><category></category></item><item><title><![CDATA[JS优化：减少前端代码耦合]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/89440986</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/89440986</guid><author>YPJMFC</author><pubDate>Sun, 21 Apr 2019 22:13:41 +0800</pubDate><description><![CDATA[避免全局耦合
场景
&lt;script&gt;
    var PAGE = 20;
&lt;/script&gt;
&lt;script src="main.js"&gt;
&lt;/script&gt;

全局变量跨了两个文件使用，html和main.js,对于维护main.js的开发很难去理解PAGE变量的含义。
不利于维护。
JS/CSS/HTML的耦合
场景
//bad
$('.bar...]]></description><category></category></item><item><title><![CDATA[Leetcode：字符串中第一个唯一字符 & 有效的字母异位词]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/88929663</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/88929663</guid><author>YPJMFC</author><pubDate>Sun, 31 Mar 2019 15:34:32 +0800</pubDate><description><![CDATA[package per.leetcode.string;

/**
 * @program: IDEAproject
 * @description: 字符串中第一个唯一字符
 * @author: mosum
 * @create: 2019-03-31 14:56
 *
 * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
 *
 * 案例:
 *
 *...]]></description><category></category></item><item><title><![CDATA[Leetcode：实现 strStr()函数]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/88779836</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/88779836</guid><author>YPJMFC</author><pubDate>Sun, 24 Mar 2019 18:24:01 +0800</pubDate><description><![CDATA[package per.leetcode.string;

/**
 * @program: IDEAproject
 * @description: 实现 strStr() 函数。
 *
 * 给定一个 haystack 字符串和一个 needle 字符串，在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在，则返回  -1。
 *
 * 示例 1:...]]></description><category></category></item><item><title><![CDATA[CSS从三角形到聊天气泡框]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/88730217</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/88730217</guid><author>YPJMFC</author><pubDate>Fri, 22 Mar 2019 00:34:48 +0800</pubDate><description><![CDATA[可能是最不靠谱的画三角形教程]]></description><category></category></item><item><title><![CDATA[自定义checkbox和多列等高实践详解]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/88544744</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/88544744</guid><author>YPJMFC</author><pubDate>Thu, 14 Mar 2019 01:11:05 +0800</pubDate><description><![CDATA[自定义checkbox和多列等高布局的实践详解]]></description><category></category></item><item><title><![CDATA[js中对象属性值相同的合并处理]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/87120659</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/87120659</guid><author>YPJMFC</author><pubDate>Tue, 12 Feb 2019 22:17:55 +0800</pubDate><description><![CDATA[对象属性值相同合并
场景
因为业务需求，某项服务包含不同的地域，为实现自动化处理，需要将不同地域的数据传给处理端，类似于以下这种：
var requestParams = {
    'north-1': [
        {
            cloudServiceType: 'a',resourceType: 'b'
        },
        {
            ...]]></description><category></category></item><item><title><![CDATA[重拾java（二）：基本语法实践]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/86915916</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/86915916</guid><author>YPJMFC</author><pubDate>Sun, 10 Feb 2019 17:17:17 +0800</pubDate><description><![CDATA[前言
我把java基本语法单元定义为构成一个简单java语句所需要的基本单元，这其中必然包括：

1.数据类型：java中可以存在哪些类型的数据
2.变量类型：可以用哪些方式去声明这些数据类型，也就是变量的声明与使用，声明变量的修饰符及其使用场景
3.运算符：变量和变量之间通过运算符连接后的操作。
4.通过提前粗略获知Java函数间调用，类和对象等皮毛把之前的语法单元串联起来写个学习用程序。

场...]]></description><category></category></item><item><title><![CDATA[重拾java（一）：数据类型]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/84205281</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/84205281</guid><author>YPJMFC</author><pubDate>Sun, 18 Nov 2018 21:38:01 +0800</pubDate><description><![CDATA[1.1 注释
public class JavaComment{
    /* 
    这是多行注释
    有两行
    */
    public static void main(string[] args){
    // 这是单行注释
    System.out.printlin(&amp;quot;Hello World!&amp;quot;);
    }
}
/**
*这里是一个方法的功能描述
* @param...]]></description><category></category></item><item><title><![CDATA[CSS 的空格处理]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/81480551</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/81480551</guid><author>YPJMFC</author><pubDate>Tue, 07 Aug 2018 14:25:04 +0800</pubDate><description><![CDATA[一、空格规则

HTML 代码的空格通常会被浏览器忽略。



&amp;lt;p&amp;gt;◡◡hello◡◡world◡◡&amp;lt;/p&amp;gt;

上面是一行 HTML 代码，文字的前部、内部和后部各有两个空格。为了便于识别，这里使用半圆形符号◡表示空格。

浏览器的输出结果如下。

  hello  world  

可以看到，文字的前部和后部的空格都会忽略，内部的连续空格只会算作一个。这就是浏览器处理空...]]></description><category></category></item><item><title><![CDATA[IOS调起H5中文参数乱码问题（不是简单编码）]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/81476294</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/81476294</guid><author>YPJMFC</author><pubDate>Tue, 07 Aug 2018 10:14:58 +0800</pubDate><description><![CDATA[问题情景

有一个H5项目涉及到打开新窗口时地址中存在中文参数的情况，经过测试，在android中时可以的，但是在ios中会存在webview都无法打开的情况，也就是说连H5的页面都没有进入窗口就已经卡住了。



基础知识



encodeURI()



把URI字符串采用UTF-8编码格式转化成escape各式的字符串。
encodeURI不编码字符有82个：!，#，$，&amp;amp;amp;amp;，'，(...]]></description><category></category></item><item><title><![CDATA[leetcode：旋转数组]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/81176285</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/81176285</guid><author>YPJMFC</author><pubDate>Mon, 23 Jul 2018 22:42:28 +0800</pubDate><description><![CDATA[问题

给定一个数组，将数组中的元素向右移动 k 个位置，其中 k 是非负数。



示例 1:



输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]



示例 2:



输入: [-...]]></description><category></category></item><item><title><![CDATA[React技能树图]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/81023558</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/81023558</guid><author>YPJMFC</author><pubDate>Thu, 12 Jul 2018 22:33:26 +0800</pubDate><description><![CDATA[

来源在图左上角。纯粹是为了自己平时看看。]]></description><category></category></item><item><title><![CDATA[不使用加减运算符实现整数相加（详解）]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/80921906</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/80921906</guid><author>YPJMFC</author><pubDate>Thu, 05 Jul 2018 09:33:23 +0800</pubDate><description><![CDATA[问题



描述
给出两个整数 aa 和 bb , 求他们的和。

你不需要从输入流读入数据，只需要根据aplusb的两个参数a和b，计算他们的和并返回就行。

说明
a和b都是 32位 整数么？

是的
我可以使用位运算符么？

当然可以
样例
如果 a=1 并且 b=2，返回3。

挑战
显然你可以直接 return a + b，但是你是否可以挑战一下不这样做？（不使用++等算数运算符）


...]]></description><category></category></item><item><title><![CDATA[EJS快速回忆]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/80742502</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/80742502</guid><author>YPJMFC</author><pubDate>Wed, 20 Jun 2018 10:19:01 +0800</pubDate><description><![CDATA[平时只写前端代码，很少去写ejs这种模板语言，可能隔几个月接触一下全栈项目，EJS的语法又忘了大半，索性自己写一篇博客记录一下，省得老是花时间回顾。

目的

EJS的目的就是让我们最舒服的方式去写模板，也就是遵循写html的方式去写就行了，但是里面会有一些逻辑操作，变量等等没办法用html的方式来写，所以EJS就是帮我们处理了一些类似的问题。



使用



安装



$ npm insta...]]></description><category></category></item><item><title><![CDATA[indexDB的理解与使用]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/80503708</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/80503708</guid><author>YPJMFC</author><pubDate>Tue, 29 May 2018 23:22:33 +0800</pubDate><description><![CDATA[indexDB的理解与使用




indexDB的理解与使用 
创建数据库
创建对象仓库
创建事务
操作数据 
添加数据
获取数据
删除数据
使用游标
索引 
创建索引
使用索引
实践






创建数据库



const request = indexedDB.open('myDatabase', 1);
request.addEventListener('success', e =&amp;gt...]]></description><category></category></item><item><title><![CDATA[promise和async]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/80489669</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/80489669</guid><author>YPJMFC</author><pubDate>Mon, 28 May 2018 22:19:05 +0800</pubDate><description><![CDATA[promise和async



promise

我觉得脱离promise去谈async是不全面的，理解promise对学习和使用async具有很大的意义。直接看一个阮一峰上Promise对象实现Ajax操作的实例，看着实例去解析：



const getJSON = function(url) {
  const promise = new Promise(function(resolve,...]]></description><category></category></item><item><title><![CDATA[WeUI源码解析(一) --- util.js]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/79865539</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/79865539</guid><author>YPJMFC</author><pubDate>Mon, 09 Apr 2018 13:58:36 +0800</pubDate><description><![CDATA[WeUI是腾讯的前端UI框架，里面的组件样式，特殊组件的动效处理有很多值得我学习的规范和技巧，所以选取几个关键地方的源码来进行研究。


弹窗组件
选择器组件
上传图片组件


这里有一个基础的js，util.js，大部分组件的交互都依赖这个js，所以在学习组件前，我们需要先看看util.js完成了哪些工作。



util.js

1.外部模块

先看看util.js依赖的外部模块

impor...]]></description><category></category></item><item><title><![CDATA[快速构建一个测试Web项目]]></title><link>https://blog.youkuaiyun.com/YPJMFC/article/details/79813287</link><guid>https://blog.youkuaiyun.com/YPJMFC/article/details/79813287</guid><author>YPJMFC</author><pubDate>Wed, 04 Apr 2018 10:03:42 +0800</pubDate><description><![CDATA[快速构建一个测试项目

单纯的运行一段js逻辑的话就不需要构建测试项目，直接写个js，node命令行运行一下就可以了，但是往往阅读一段他人的源码想要自己测试一下就没办法这样子，因为别人会依赖模块，会操作浏览器dom等等，所以自己写一个测试小demo有时候就很有用处。

nodejs里面又没有什么dom元素，什么window全局对象，所以我们的代码最好运行在浏览器端，那么构造一个index.html...]]></description><category></category></item></channel></rss>