Leetcode 题解系列 -- 和为s的连续正数序列(滑动窗口)

2022-02-15
阅读 4 分钟
2.7k
题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]

Leetcode 题解系列 -- 股票的最大利润(动态规划)

2022-01-28
阅读 3 分钟
3.4k
本专题旨在分享刷Leecode过程发现的一些思路有趣或者有价值的题目。【当然是基于js进行解答】。动态规划一样是leetcode 中等难度习题的重点类型之一,同时可能也是面试热点之一,所以重要性不言而喻。题目相关原题地址: [链接]题目描述:示例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,...

Leetcode 题解系列 -- 对称二叉树(递归)

2022-01-27
阅读 3 分钟
2.9k
题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

Leetcode 算法题解系列 - 二叉树的层序遍历

2022-01-25
阅读 3 分钟
2.7k
本专题旨在分享刷Leecode过程发现的一些思路有趣或者有价值的题目。【当然是基于js进行解答】。(这道题应该算是二叉树的基础题,建议还是学一下,不难且经典)

Leetcode 算法题解系列 - 二维数组快速查找元素(二叉搜索树)

2022-01-24
阅读 2 分钟
2.8k
题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 {代码...}

Leetcode 算法题解系列 - 最小栈

2022-01-20
阅读 3 分钟
2.9k
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min 、push 及 pop 的时间复杂度都是 O(1)。 {代码...}

详解JS的继承(三)-- 图解Es6的Extend

2022-01-14
阅读 6 分钟
4.1k
距离上一篇js的继承系列已经过去了四年,时不时还有新的读者评论和回复,开心之余也想着更新一下内容,因为当时的内容里没有涉及到es6的 extend 实现,所以现在抽空补上。 当然,如果是0基础的同学或者对于基本的继承有些遗忘的同学,可以先回顾一下前两篇:
封面图

浅谈React 高阶组件

2021-07-31
阅读 7 分钟
5.2k
5、6月一直忙着自己的琐事,7月(7月31也还是7月嘛)抽空整理一下旧的内容,有之前的读者提到想了解下高阶组件这块的知识点,就刚好整理了一下。

浅谈 Virtual DOM

2021-04-22
阅读 5 分钟
4.8k
“Virtual Dom 的优势是什么?” 这是一个常见的面试问题,但是答案真的仅仅是简单粗暴的一句“直接操作dom和频繁操作dom的性能很差”就完事了吗?如果是这样的话,不妨继续深入地问几个问题:

十分钟看懂JS的LRU Cache 算法(下)

2021-04-07
阅读 4 分钟
3.2k
当用户访问不同站点时,浏览器需要缓存在对应站点的一些信息,当下次访问同一个站点的时候,通过读取缓存就可以实现更快速的访问。缓存的分配空间是有限的,所以当空间不足时,需要优先删除最近不经常使用的数据,实现缓存的管理。

十分钟看懂JS的LRU Cache 算法(上)

2021-03-30
阅读 4 分钟
7.1k
在leetcode上刷题时,遇到一个难得能够直接在前端用得上的算法思路(说实话,前端能用到算法的场景真的少的可怜),所以抓住和大家做一个分享。恰逢金三银四求职季,多掌握一个知识点,多一份进大厂打工的希望!加油,打工人!

聊聊Javascript 垃圾回收机制(二)-V8引擎下的垃圾回收机制

2021-03-17
阅读 5 分钟
6.8k
上文大概介绍了垃圾回收的机制和标记清除法的核心思路, 接下来准备深入介绍下v8引擎里的垃圾回收算法。 既然是算法类的介绍,那自然是比较枯燥的,如果想完全弄懂,可以收藏下来,多看几遍(!·_·!)。

聊聊Javascript 垃圾回收机制-(一)

2021-03-15
阅读 4 分钟
2.7k
都需要分配内存,而当这些值不再被使用的时候,js就需要在合适的时候将这部分的内存进行回收,这就是垃圾回收机制,对于一些大型应用程序来说,垃圾回收可以有效提高性能。在js里,执行垃圾回收是自动执行的,不对外提供任何接口,不过还是有必要适当了解下它的原理。

Git cherry-pick二三事

2020-12-27
阅读 2 分钟
5k
图中的abcdefgh表示不同的commmit节点, 在c节点时我们建立出了2个不同的feature branch -- feature1和feature2来分别进行特性开发, 在工作中可能遇到,feature1分支开发里需要使用到commit g中所提交的内容,实现如下的效果:这时候就要用到cherry-pick的功能。换言之,cherry-pick的作用就是把某个特定的 commit 内容...

实用算法解析 - 前缀和

2020-06-05
阅读 5 分钟
4.3k
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。

实用算法解析 - 动态规划

2020-04-09
阅读 5 分钟
3.7k
前言 最近刚好有在刷Leetcode,所以顺便也分享一些常见基础的算法解析。 正文 动态规划是一种相当常用的算法,一般用在求解最优解问题中,理解它的原理十分有必要(最直接的好处是可以提升刷题效率~)。 初识-从梯子问题说起 直接进入正题。从一个简单的爬楼梯问题说起: 问题1:小明爬楼梯时,有2种选择:每次跨1步,或...

React transaction完全解读

2019-12-16
阅读 12 分钟
7.7k
在阅读react源码中,发现其中大量用到了transaction(中文翻译为事务)这个写法,所以单独做一下分析。其实在react中transaction的本质,其实算是一种设计模式,它的思路其实很像AOP切面编程:

React setState 这样用,开发直呼内行!

2019-12-03
阅读 8 分钟
6.3k
(Long time no see, 标题皮一下,内容还是良心的)众所周知, React 是通过管理状态来实现对组件的管理,而setState是用于改变状态的最基本的一个方法,虽然基础,但是其实并不容易掌握,本文将结合部分源码对这个方法做一个相对深入的解析。

webpack 源码从零开始 - tapable模型

2019-09-11
阅读 8 分钟
3.6k
最近在看webpack的源码,发现有个比较头疼的点是:代码看起来非常跳跃,往往看不到几行就插入一段新内容,为了理解又不得不先学习相关的前置知识。层层嵌套之后,发现最基础的还是tapable模型,因此先对这部分的内容做一个介绍。

浅谈react context

2019-08-28
阅读 8 分钟
8.7k
好久不见!(两个多月没更新内容,惭愧了三分钟)。接下来的文章主要是开始对react的内容做一些整理(疯狂立Flag)。本文的对象是Context.

js异步从入门到放弃(实践篇) — 常见写法&面试题解析

2019-06-13
阅读 5 分钟
3.7k
前文 该系列下的前几篇文章分别对不同的几种异步方案原理进行解析,本文将介绍一些实际场景和一些常见的面试题。(积累不太够,后面想到再补) 正文 流程调度(schedule) 流程调度,最常见的就是继发和并发(或者说串行和并行)两种类型,在日常工作里都很常见。接下来结合实际场景进行说明: 1. 串行执行一系列异步操作,...

js异步从入门到放弃(四)- Generator 封装异步任务

2019-05-26
阅读 4 分钟
4.3k
在之前的文章介绍了传统异步的实现方案,本文将介绍ES6中的一种全新的异步方案--Generator函数。 generator简介 简单介绍一下generator的原理和语法,(更详细内容请看ECMAScript 6 入门,本文只介绍和异步相关的核心内容) 基本语法 通过一个简单的例子来了解generator函数 {代码...} 数据交互 数据交互指的是可以通过yie...

js异步从入门到放弃(三)- 异步任务队列(task queues)

2019-05-09
阅读 5 分钟
8.6k
根据之前说过的evenloop模型,首先输出script start和script end没有什么问题;但是接下来却发现:先执行了Promise指定的callback而不是setTimeout的callback。-- Why?

js异步从入门到放弃(二)- 传统的异步实现方案

2019-03-18
阅读 5 分钟
3.2k
前言 上一篇文章介绍了js异步的底层基础--Event Loop模型,本文将介绍JS中传统的几种异步操作实现的模式。 正文 1.回调函数(callback) 回调函数是异步的最基本实现方式。 {代码...} 思路:将回调函数作为参数传入主函数,执行完主函数内容之后,执行回调函数 优点:简单粗暴、容易理解 缺点: 代码耦合度太高,不利于...

js异步从入门到放弃(一)- Event Loop模型

2019-03-17
阅读 3 分钟
7.2k
2个线程同时操作了同一个DOM节点(a线程要编辑该节点,而b线程删除该节点),那么此时浏览器将无法处理,因为无法判断以哪个线程为基准。因此,JS只能是单线程。(Web Worker API虽然提供了多线程,但只是纯粹基于使用多核cpu的计算能力,其创建的子线程严格受控,不影响JS单线程的设计实质),单线程的设计就意味着,任...

浅谈 JS 防抖和节流

2019-03-07
阅读 4 分钟
315.3k
防抖和节流严格算起来应该属于性能优化的知识,但实际上遇到的频率相当高,处理不当或者放任不管就容易引起浏览器卡死。所以还是很有必要早点掌握的。(信我,你看完肯定就懂了)

深入浅出谈Cookie

2019-02-25
阅读 5 分钟
4.3k
场景示例:有用户a和b,都登陆了某个购物网站,此时如果两个用户都点击了【查看购物车】按钮,那么此时服务器就同时收到了2个请求,请求的内容都是:“请告诉我我的购物车有什么商品”。现在问题来了——服务器怎么区分哪个请求对应哪个用户呢?

http状态码竟然可以这样记

2019-02-24
阅读 4 分钟
14.2k
标题皮了一下,但是内容应该算是比较用心的,不是直接抄了一下官方文档和一堆抽象的术语,尽量配合实例解释的通俗一些。 基本介绍 状态码(Status Code)和原因短语(Reason Phrase)用于简单描述请求的结果。常见的比如: 200 OK,表示请求成功; 404 Not Found表示请求的资源未找到。 原因短语(上面的ok 和Not Found)是...

windows下使用nginx调试简介

2019-02-14
阅读 2 分钟
3.8k
安装使用 nginx是一个反向代理服务器,在web开发调试中经常用到,写一个简单的使用说明和总结。 1. 下载 点击官网下载地址 下载对应版本的nginx并解压 2. 配置 在解压的目录下找到conf/nginx.conf文件添加所需监听和代理的server {代码...} 3. 常用命令 start nginx // 启动nginx nginx -s stop // 快速停止nginx,可能...

详解http-2头部压缩算法

2018-11-14
阅读 7 分钟
15k
HTTP1.x的header中的字段很多时候都是重复的,例如method:get、status:200等等,随着网页增长到需要数十到数百个请求,这些请求中的冗余标头字段不必要地消耗带宽,从而显著增加了延迟,因此,Hpack技术应时而生。