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

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

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

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

一、单线程模型的优缺点与服务模型 1、Node与单线程模型 NodeJS基于Chrome V8引擎构建,因此JavaScript将会运行在单个进程的单个线程上。如此的优点在于: 1)程序状态是单一的,没有多线程的锁和线程同步问题 2)较少的上下文切换,可以提高CPU的使用率 但是单进...

Grid布局学习总结

Grid布局是CSS中除了flex布局外的另一强大的布局系统,相比flex,Grid布局更适合二维布局 一、基本概念 1、网格容器:声明display: grid的元素,所有网格项的直接父级元素 2、网格项:网格容器的直接子元素

Socket.IO学习笔记

Socket.io是一个事件驱动的即时双向通信支持库,使用它可以很方便地开发出可靠的、快速的即时应用 一、起步:编写一个聊天应用 1、基本结构 以下示例,采用Koa2作为WEB服务的框架,所以首先需要安装Koa并加入依赖: npm install koa -S

Egg学习笔记(五):MySQL

在Web应用中,MySQL是最为常用的关系型数据库之一,Egg中则提供了egg-mysql用以驱动MySQL数据库的使用 一、安装与配置 和其他插件一样,首先需要通过npm引入,然后在config/plugin.js里进行配置: npm install egg...