从浏览器解码看xss

2021-03-11
阅读 3 分钟
2.7k
HTML词法解析细则在传送门 下面不会详细介绍所有内容,只会解释HTML解释器这个状态机是如何工作的,HTML解析器作为一个状态机,它从输入流中获取字符并按照转换规则转换到另一种状态。在解析过程中,任何时候它只要遇到一个<符号(后面没有跟/符号)就会进入“标签开始状态(Tag open state)”。然后转变到“标签名状态(T...

优先队列和二叉堆

2021-02-01
阅读 6 分钟
1.9k
有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养...

HTTP2的一点浅显理解

2021-01-08
阅读 2 分钟
1.4k
2.0 性能增强的核心在于全新的二进制分帧层,它定义了如何封装http消息并在客户端和服务端之间传输。1.x 中以换行符作为分隔符,2.0 将信息分割为更小的消息和帧,并进行二进制编码,再将这些独立的帧交错发送,再另一端重组,解决了1.x中存在的队首阻塞。(无端联想:重组时候是不是使用类似二叉堆的数据结构)(解决了...

原地hash和时间复杂度的一点理解

2020-12-01
阅读 3 分钟
2.9k
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例输入: [1,3,4,2,2]输出: 2输入: [3,1,3,4,2]输出: 3给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

LeetCode.28 实现 strStr (JS sunday算法)

2020-07-26
阅读 2 分钟
1.9k
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。示例输入: haystack = "hello", needle = "ll"输出: 2 输入: haystack = "aaaaa", needle = "bba"输出: -1 说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在...

2020春季1-3年前端面经

2020-07-09
阅读 5 分钟
1.3k
z-index只作用于被定位了的元素上,还有就是子元素的z-index会被父的值覆盖(准确的说应该是使用z-index后,父元素和子元素处在不同的层叠上下文中,他们的z-index应该分别与他们的兄弟元素比较。)。

为什么存在同源策略?

2020-06-18
阅读 3 分钟
3.5k
说起跨域,你可能知道JSONP,CORS,http proxy,nginx等,那为什么会存在跨域,你可能知道因为同源策略,那为啥会有同源策略呢。

解决循环引用和相同引用的js深拷贝实现(BFS)

2020-02-04
阅读 4 分钟
9.2k
JSON.parse(JSON.stringfy())、MessageChannel这些JavaScript自身的api,想要实现深拷贝存在像不能复制undefined、不能复制函数、不能复制循环引用等问题。

LeetCode.21&23 合并K个有序链表(JS)

2020-01-29
阅读 2 分钟
1.8k
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4

WebAssembly到底是个啥

2019-12-23
阅读 4 分钟
3.7k
WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行。它是一种低级的类汇编语言,为诸如C / C ++等语言提供一个编译目标,以便它们可以在Web上运行。也可以与JavaScript共存,它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在Web中运行。作为一个小前端,你怎么为其他语言提供编译目标...

几种常见的基础前端优化方式

2019-12-19
阅读 9 分钟
3.5k
这篇文章算是最近学习前端优化时的一点心得,为了对比强烈降低了CPU性能,文中代码在github上也有一部分。本文性能截图来自chrome自带的performance,不了解的可以看看跟他差不多的前世chrome timeline(介绍传送门)。

5.5种常见垂直居中方式

2019-10-18
阅读 2 分钟
1.1k
父元素设置line-height和height相同,使基线在中间,然后子元素设置vertical-align: middle使该元素基线与父元素基线重合,达到垂直居中。

浅析Vue中keep-alive实现原理以及LRU缓存算法

2019-09-27
阅读 4 分钟
6.3k
本文涉及源码版本为 2.6.9 keep-alive {代码...} 组件的定义很平常,不过其中abstract属性在官方文档中并未提及,后面的渲染过程中会用到。 created中初始化存储缓存的cache对象,和缓存的VNode的键的数组。 mounted中监听黑白名单变动对缓存进行更新,其中pruneCache定义如下 {代码...} 就比如include是['a', 'b'],而且这...

从源码切入Vue双向绑定原理,并实现一个demo

2019-09-01
阅读 8 分钟
1.1k
down一份Vue源码,从package.json入手,找我们需要的代码1、package.json中的scripts,"build": "node scripts/build.js"2、scripts/build.js line26 build(builds),其中builds的定义为11行的let builds = require('./config').getAllBuilds(),这个大概就是打包的代码内容,另一个build是在下面定义的函数,他的代码是...

一篇字节跳动前端面经

2019-08-01
阅读 8 分钟
7.6k
hr小姐姐说一共有1轮笔试 + 3轮技术面 + 1轮hr面,面试地点在中关村天使大厦,岗位是1-3年前端,时间是2019年8月笔试笔试分为多选 简答 判断 手写代码四部分,下面只写了印象比较深的几道。多选1、position为relative的元素可以使用top和left进行定位吗答:可以。我自己没见过这种写法,就没敢选,然后错。2、以下哪个是...

LeetCode.11 盛最多水的容器(Container With Most Water)(JS)

2019-07-18
阅读 2 分钟
2.2k
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。

LeetCode.42 接雨水(Trapping Rain Water)(JS)

2019-06-12
阅读 4 分钟
3.1k
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 1:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6

Flex布局语法笔记

2019-05-30
阅读 5 分钟
1.8k
 网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如万恶的垂直居中。       2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的...

LeetCode.6 Z 字形变换(zigzag-conversion)(JS)

2019-05-29
阅读 3 分钟
2.4k
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L   C   I    RE T O E S  I  I   GE   D   H   N(这个字符排列看不懂的话推荐去看一下原题,原题的调整示例比较清晰)之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,...

LeetCode.5 最长回文子串(longest-palindromic-substring)(JS)

2019-04-07
阅读 2 分钟
2.3k
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd"输出: "bb"

详细分析Vue.nextTick()实现

2019-04-01
阅读 4 分钟
3.7k
Firstly, this paper is based on Vue 2.6.8刚开始接触Vue的时候,哇nextTick好强,咋就在这里面写就是dom更新之后,当时连什么macrotask、microtask都不知道(如果你也不是很清楚,推荐点这里去看一下,也有助于你更好地理解本文),再后来,写的多了看得多了愈发膨胀了,就想看看这个nextTick到底是咋实现的

LeetCode.2 两数相加(Add Two Numbers)(JS)

2019-03-26
阅读 4 分钟
3.5k
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例: 示例 输入:(2 -> 4 -> 3) + (5 -> 6 ...

LeetCode.3 无重复字符的最长子串(JS)

2019-03-23
阅读 4 分钟
6.4k
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例3输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以...

LeetCode.1 两数之和(Two Sum)(JS)

2019-03-22
阅读 2 分钟
4.6k
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]

Vue兄弟组件通信的三种方式

2019-03-15
阅读 1 分钟
33.3k
前两种方式官方文档十分详尽不再赘述,只在这里简述一下第三种方式的思路。 因为$on和$emit的事件必须是在一个公共的实例上才能触发。那么我们可以新建一个Vue实例当作事件总线,达到可以不管组件之间的父子关系,都能通过这个实例通信的目的