愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

关于前端枚举的一点思考

一、枚举的业务场景与遇到的问题 我们在日常业务开发中,经常遇到枚举,如商品状态、页面状态、审核状态等,翻阅以往的一些业务代码,会发现很多地方都是这么写的: <span v-if="status == 0">审核中</span> <span v-else-if="...

TypeScript(零):起步

一、安装 npm i -g typescript 二、使用 安装完TypeScript后,我们可以通过tsc指令来编译.ts文件,如: $ tsc index.ts

可能是比Mixin更好的方案:React新特性Hooks探索

一、什么是Hooks? Hooks是React新引入的一个特性,它允许我们能够不采用类式声明组件方式来使用状态和React其他特性(如生命周期、Ref、Context等),简单的例子如下: import { useState } from 'react' function Example() { const [count, se...

Node.js之Stream的应用与原理探索

为什么使用流? 假设我们现在要读取一个文件,通常情况下,会写成: const fs = require('fs') fs.readFile(fileName, (err, body) => { console.log(body.toString()) }) 这在文件比较小的时候...

LeetCode - 买卖股票的最佳时机

一、题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格...

LeetCode - 最大子序列和

一、题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精...

LeetCode - 爬楼梯

一、题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶

浏览器缓存技术总结

一、浏览器缓存技术 浏览器中,为了加快一些不常变内容的访问速度,会将其缓存在本地中,当下次再次访问时,就直接加载这些资源,从而加速访问。这种技术称之为浏览器缓存。 判断浏览器加载的一个资源,是否是使用缓存,可以使用开发者工具查看Network,存在缓存中的资源,其Size会显示为from disk cache或者fro...

深入解析Vue依赖收集原理

一、先谈观察者模式 观察者模式是一种实现一对多关系解耦的行为设计模式。它主要涉及两个角色:观察目标、观察者。如图: 它的特点:观察者

每天一个JavaScript设计模式:抽象工厂模式

一、场景 抽象工厂模式是一种创建型模式,抽象工厂模式创建的是类簇,而非是具体某一个类的实例。 抽象工厂模式适用于系统里有多于一个的产品族,而只需要用到某一族的类的场景 ...

每天一个JavaScript设计模式:工厂方法模式

一、适用场景 简单工厂模式虽然能够解决创建同类对象的问题,但是却存在以下问题: 1)当需要添加新的类时,就需要修改工厂方法,这违背了开闭原则(OCP, 对扩展开放、对源码修改封闭) 2)不适用创建多类对象 于是,工厂方法模式便是为了解决以上问题的另一种

每天一个JavaScript设计模式:简单工厂模式

一、适用场景 简单工厂模式是一种创建型模式,适用于创建同一类对象。 假如存在以下需求: 编写一系列的弹出框,包括:警告框(alert)、输入框(promt)、确认框(confirm) 我们自然可以编写Alert()、

httpProxy模块学习记录

node-http-proxy是一个支持websocket的HTTP可编程代理库,适用于实现反向代理和负载平衡一类的组件。 一、安装 使用npm安装如下: npm install http-proxy 二、核心概念...

《深入浅出NodeJS》读书笔记之集群的稳定

在搭建好集群之后,我们就可以充分利用多核CPU资源了,但是在用于实际生产环境之前,我们仍然需要考虑一些问题,典型的问题如下: 性能问题 多个工作进程的存活状态管理 工作进程的平滑重启 配置或静态数据的动态重新载入 我们至少需要解决上述问题,集群的稳定性才能有所保障。 一、进程事件...