qrcode

马上订阅,开启修仙之旅

在前端 Network 还能这样玩

在前端 Network 还能这样玩

这几年手机和网络已经是大多数人生活中的必需品,其中有很多人,比如我家”超哥“,她每次到一个新的环境中一般开口都会来一句,”请问你家有 WIFI 么,密码是多少?“,相信很多人都有这样的经历。接下来,本文将介绍在前端如何实现在线或离线检测、获取网络信息、获取网络延迟和网络测速等内容,有兴趣的小伙伴赶紧学起来。 一、在线或离线检测在现代的浏览器中,可以通过 navigator.onLine 获取...

最常见面试算法之 LRU 缓存机制

最常见面试算法之 LRU 缓存机制

一、题目描述运用你所掌握的数据结构,设计和实现一个 LRU(最近最少使用)缓存机制。它应该支持以下操作: 获取数据 get(key):如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) :如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。...

一文读懂Base64编码

一文读懂Base64编码

一、为什么要使用 base64我们知道一个字节可表示的范围是 0 ~ 255(十六进制:0x00 ~ 0xFF), 其中 ASCII 值的范围为 0 ~ 127(十六进制:0x00 ~ 0x7F);而超过 ASCII 范围的 128~255(十六进制:0x80 ~ 0xFF)之间的值是不可见字符。 ASCII(American Standard Code for Information I...

最常见面试算法之只出现1次的数字

一、题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 12输入: [2,2,1]输出: 1 示例 2: 12输入: [4,1,2,1,2]输出: 4 二、题解2.1 列表操作算法分析 1、遍历数组中的每一个元素 2、如果当前元素是新出现的,则将它...

TypeScript 设计模式之享元模式

TypeScript 设计模式之享元模式

一、简介享元模式就是运行共享技术有效地支持大量细粒度的对象,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类。在享元模式中有两个重要的概念,即内部状态和外部状态: 内部状态:在享元对象内部不随外界环境改变而改变的共享部分。 外部状态:随着环境的改变而改变,不能够共享的状态就是外部状态。 由于享元模式区分了内部状态和外部状态,所以我们可以通过设置不同的外部状态使得相同的对象...

最常见面试算法之位 1 的个数

一、题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 汉明重量是一串符号中非零符号的个数。因此它等同于同样长度的全零符号串的汉明距离。在最为常见的数据位符号串中,它是 1 的个数。 汉明重量是以理查德·卫斯里·汉明的名字命名的,它在包括信息论、编码理论、密码学等多个领域都有应用。 示例 1: 123输入:0000000000...

TypeScript 设计模式之模板方法

TypeScript 设计模式之模板方法

一、简介模板方法模式是一种只需使用继承就可以实现的非常简单的模式。模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法框架,也包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。 二、优缺点优点 在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,在子类...

TypeScript 设计模式之适配器模式

TypeScript 设计模式之适配器模式

一、简介在实际生活中,也存在适配器的使用场景,比如:港式插头转换器、电源适配器和 USB 转接口。而在软件工程中,适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体就可以一起工作。 (图片来源 - https://meneguite.com/) 二、优缺点优点 将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者...

TypeScript 设计模式之单例模式

TypeScript 设计模式之单例模式

一、简介单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池、全局缓存、浏览器中的 window 对象等。单例模式用于保证一个类仅有一个实例,并提供一个访问它的全局访问点。 二、优缺点优点 由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显。 由于单例模式只生成一个实例,所以减少了系统...

TypeScript 设计模式之观察者模式

TypeScript 设计模式之观察者模式

一、简介观察者模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 我们可以使用日常生活中,期刊订阅的例子来形象地解释一下上面的概念。期刊订阅包含两个主要的角色:期刊出版方和订阅者,他们之间的关系如下: 期刊出版方 —— 负责期刊的出版和发行工作。 订阅者 —— 只需执行订阅操作,新版的期刊...