标签:计算机基础 12 篇
-
同一个字符的两种 UTF-8 编码
我们在使用 Node.js 时遇到一个奇怪的现象: 同一个字符串,为什么有两种 UTF-8 编码?第二种编码如果跟第一种编码等价且短,那么这是一种什么变换?Node.js 的什么地方做了这个变换? 注意到,"www"这几个 ASCII 范围内的英文字符,以及最
-
作用域和作用域链、原型和原型链
作用域和作用域链 ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6的到来,为我们提供了‘块级作用域’,可通过新增命令let和const来体现。 函数作用域 静态作用域 要到创建这个函数的那个域”。 作用域中取值,这里强调的是“创建”,而不是“
-
一次把http、https、tcp、udp、tls、ssl聊明白
什么是OSI协议 在一切开始之前,需对OSI七层协议模型有基本了解 OSI七层协议模型、TCP/IP四层模型、五层协议体系结构的示意图如下 层协议和对应的标准7层协议的关系如下图: 什么是UDP 和 TCP 工作在传输层,建立端到端的链接。 UDP 和 TCP 的区别 TCP 和
-
数据类型有哪些?如何判断?如何转换?
数据类型 分为简单类型(基本类型)和复杂类型(引用数据类型) 基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(ES6新增)。 复杂类型:对象(Object)、数组(Array)、函数(F
-
闭包、柯里化、内存泄露、垃圾回收,一次全聊明白
本文涉及内容 闭包 柯里化 内存泄露 垃圾回收 阅读本文前,您需要对作用域和作用域链、原型和原型链有足够了解,见本博客另一篇文章,点这里,以及对this指向有足够了解,点这里 什么是闭包 能够访问其他函数内部变量的函数,被称为 闭包,简单来说,闭包就是函数内部定义的函数,被返回了
-
一文读懂Cookie、Session、Token和JWT
什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功) 互联网中的认证: 用户名密码登录 邮箱发送登录链接 手机号接收验证码 只要你能收到邮箱/
-
时间复杂度和空间复杂度
主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。 常见的时间复杂度量级有: 常数阶O(1) 对数阶O(logN) 线
-
八大数据结构分类
1.一共有八大数据结构分类 a.数组 b.栈 c.队列 d.链表(单链表、双向链表、循环链表) c.数 f.散列表 g.堆 h.图 如图: 1、数组 数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这
-
JavaScript的eventloop复杂点
什么是eventloop 推荐:掘金文章 eventloop的概念其实很简单 (1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。 (2)主线程之外,还存在"任务队列"(task queue)。只要异步任务有了
-
JavaScript变量回收原则/垃圾回收机制
先看题目 下列代码存在几个变量没有被回收? var i = 1; var i = 2; var add = function() { var i = 0; return function() { i++; console.log(i); } }(); add(); 答案:3,全局
-
JavaScript内存管理
JavaScript并没有提供内存管理的接口,而是在创建变量时自动分配内存,当变量不再需要使用时自动释放,也就是我们所常说的垃圾回收机制。 但不管是什么程序语言,内存的声明周期都满足以下三个阶段: a.分配你需要的内存空间 b.使用分配到的内存(读、写) c.不需要时将其释放或归
-
【JavaScript】6种函数的调用方式和this指向
六种调用函数的方法 普通函数 function fn1(){ log(1); } 调用 : fn1(); this指向 : window 对象函数 var obj={ a : 0, b : 1, fn2:function(){ log(2); } } 调用 : obj.fn2()