输入url后到看到页面,中间发生了哪些事情?
输入url后到看到页面,中间发生了哪些事情?大概分为三个步骤
HTTP请求与响应,浏览器渲染,以下分两点讲。。
HTTP请求与响应概览HTTP请求与响应又主要分为两个步骤:
request请求阶段(客户端向服务端,即浏览器向服务器):
这个步骤牵扯到
DNS解析
TCP协议的三次握手与四次挥手
HTTP与HTTPS的区别
response返回阶段(服务端向客户端,返回页面原代码(html文件,可在控制台source查到):
这个步骤牵扯到
HTTP状态码
304缓存(性能优化)
HTTP报文
使用 IP 地址访问 Web 服务器为例,谈谈键入网址再按下回车后的HTTP请求与响应。
下图是访问本地127.0.0.1地址时,使用wireshark进行抓包,抓取结果的截图。
我们应该知道 HTTP 协议是运行在 TCP/IP 基础上的,依靠 TCP/IP 协议来实现数据的可靠传输。、
所以浏览器要用 HTTP 协议收发数据,首先要做的就是建立 TCP 连接。
如果我们在地址栏里直接输入了 IP 地址“127.0.0.1”,而 Web 服务器的默认端口是 ...
代码随想录-哈希表
哈希表哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表)。
哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。
要枚举的话时间复杂度是O(n),但如果使用哈希表的话, 只需要O(1)就可以做到。
当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。
数组
set (集合): Set 是唯一值的集合。每个值在 Set 中只能出现一次。一个 Set 可以容纳任何数据类型的任何值。 Set对象的方法有add(),delete(),has(),forEach()…
map (映射) :Map 对象存有键值对,其中的键可以是任何数据类型。Map 对象记得键的原始插入顺序。Map 对象具有表示映射大小的属性。
// Map对象的方法有为 Map 对象中的键设置值set(),获取 Map 对象中键的值(),返回键数据keys(),返回值数组values(),返回键值对数组entries()…
242.有效的字母异位词
方法一:数组实现
1234567891011121314151617181920 ...
js回调地狱
前言在做项目的过程中,凡是调用接口都使用了async await,只知道这是用来解决异步的,对其原理却一窍不通,特此写下这篇文章,从回调地狱说起,来揭秘async await的前世今生。
起源首先要明确的是,js是一个单线程语言。为了避免个别耗时过多的任务造成阻塞,因而划分出了同步任务与异步任务,并且js中正常的函数执行是同步执行的(即按顺序依次执行)。典型的异步函数有setTimeout(), 如下 :
1234setTimeout(function () { console.log("First");}, 1000);console.log("second")
上面的这段函数的输出会先输出”second”,而不是按顺序执行,因为这里的setTimeout()为异步函数,程序执行到异步函数时,会先不进入主线程、而进入任务队列(task queue)的任务,在引擎认为此任务可以执行了(这里是等待一秒后),才会进入主线程执行。
这里的异步任务执行时间很明确,即在等待1秒后。但有些异步函数的具体执行结束时间是不能确定的,比 ...
cesium添加polylineVolume时报错问题[未解决]
所需功能给cesium添加管道实体,如官网实例 :
https://sandcastle.cesium.com/index.html?src=Polyline%2520Volume.html
问题描述代码几乎和官方用法相同,但在使用Cesium.Cartesian3.fromDegreesArrayHeights(arr)属性给polylineVolume.positions赋值时,会在特定的数据下报错。
这里是
118.79029497268372, 31.93749600561781, 11,118.79029497268372, 31.93749600561781, 13,
两组数据同时存在时报错。
错误重现12345678910111213141516171819202122232425262728//computedCircle函数来自官方function computedCircle(radius) { var positions = []; for (var i = 0; i < 36; i++) { var radi ...
代码随想录-链表
关于链表什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。
链表的入口节点称为链表的头结点也就是head。
数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。
链表是通过指针域的指针链接在内存中各个节点。
所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。
链表的定义:
12345//Definition for singly-linked list.function ListNode(val, next) { this.val = (val===undefined ? 0 : val) this.next = (next===undefined ? null : next) }
203.移除链表元素
12345678910111213141516171819202122/** * @param {ListNode} head * @param ...
代码随想录-数组
704.二分查找
12345678910111213141516171819202122/** * @param {number[]} nums * @param {number} target * @return {number} */var search = function(nums, target) { let high = nums.length - 1 let low = 0 while(low <= high){ //找中间数的方法 let mid = Math.floor( (high - low) / 2) + low if(nums[mid] > target){ //不符合时记得挪位,不要把mid直接当成high 或 low high = mid - 1 }else if(nums[mid] < target){ ...
MySQL基本语法小结
本篇内容主要为SQL语言的基本操作。备忘录性质。
关于SQLSQL, 全称为Structured Query Language(结构化查询语言)。
要讲SQL就绕不开database(数据库), 平时所说的数据库,一般指的关系型数据库。
什么是关系型数据库(Relational databases)?
数据库由若干张表(Table)组成,Table也是由 行(rows)和列(columns)组成
列(columns)是有限固定的,行(rows)是无限不固定的。
SELET-查询Select 查询某些属性列(specific columns)的语法
12SELECT column(列名), another_column, …FROM mytable(表名);
Select 查询所有列
12SELECT *FROM mytable(表名);
条件查询WHERE condition ;
语法:
123456SELECT column, another_column, …FROM mytableWHERE condition AND/OR another_condi ...
浅谈js不同数据类型(基本/引用)在拷贝与传参时的不同
1.不同数据类型的拷贝方式:深拷贝与浅拷贝在JavaScript中,数据的类型主要可以分为基本类型值和引用类型值。
基本数据类型指的是简单的数据段(主要有Undefined,Null,String,Boolean,Number),是按值访问的,因为可以操作保存在变量中的实际的值。
而引用类型指的是可能由多个值构成的对象,所以他的值是保存在类型中的对象(主要有Object,Array,Date,RegExp,Function等类型)。JavaScript与其他语言不同的是,他不允许直接访问内存中的位置,即不能直接操作这个对象(指前文的值)的内存空间。在操作一个对象时,实际上操作的是对象的引用而不是实际的值。
由此,JavaScript在复制变量值时,会根据变量的基本数据类型的不同,采用不同的拷贝机制,即深拷贝与浅拷贝。
深拷贝:当从一个变量复制另一个基本类型的值时,使用的机制。即在变量对象上创建一个新的值,然后把该值复制到为新变量新变量分配的位置上,新旧变量完全独立,互不影响,很好理解。如下例子:
123var num1 = 5;var num2 = num1 + 5;alter(num ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment