計(jì)算機(jī)網(wǎng)絡(luò)
概述:將不同的計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)應(yīng)用使用對(duì)應(yīng)的傳輸介質(zhì)進(jìn)行聯(lián)通。
關(guān)鍵名詞:
- 網(wǎng)絡(luò)應(yīng)用(比如:校園網(wǎng)撥號(hào)、寬帶連接)
- 傳輸介質(zhì)(比如:網(wǎng)線、wifi)
網(wǎng)絡(luò)協(xié)議及其構(gòu)成:
概述:網(wǎng)絡(luò)OSI構(gòu)成由7層構(gòu)成。
分別是:
- 物理層
- 數(shù)據(jù)鏈路層
- 網(wǎng)絡(luò)層
- 傳輸層
- 會(huì)話層
- 表示層
-
應(yīng)用層
image.png
TCP與UDP:
- TCP使用對(duì)應(yīng)的連接進(jìn)行通信的。(就是說(shuō)對(duì)應(yīng)的通信設(shè)備一定要建立連接才行,如:外賣配送)
- UDP使用丟包的形式進(jìn)行通信的。(就是說(shuō)對(duì)應(yīng)的服務(wù)端只需要將對(duì)應(yīng)的數(shù)據(jù)報(bào)包發(fā)送就行,客戶端去接對(duì)應(yīng)的數(shù)據(jù)報(bào)包,如:菜鳥驛站)
應(yīng)用層的相關(guān)協(xié)議:
- FTP 文件傳輸協(xié)議
- TFTP 簡(jiǎn)單的文件傳輸協(xié)議
- SNMP 郵件傳輸協(xié)議
- HTTP 超文本傳輸協(xié)議 (基于TCP/IP)
- HTTPS 安全的超文本傳輸協(xié)議 (基于TCP/IP)
- P2P 金融傳輸協(xié)議
- NFS 藍(lán)牙傳輸協(xié)議
- DNS 域名傳輸協(xié)議
HTTP與HTTPS:
- HTTP采用明文傳輸,這種方式不安全,它的數(shù)據(jù)能獲取,也能篡改
- HTTPS采用密文傳輸,這種方式里面采用了openssl加密,里面有對(duì)稱加密、非對(duì)稱加密和CA證書。
前端和后端:
- 前端是提供對(duì)應(yīng)的頁(yè)面渲染操作(渲染頁(yè)面)
- 后端是提供對(duì)應(yīng)業(yè)務(wù)操作(提供數(shù)據(jù))
注意:后端和前端建立連接的根本是網(wǎng)絡(luò)傳輸協(xié)議 (HTTP和HTTPS)。
image.png
HTTP的幾大特性:
- 無(wú)狀態(tài)(沒(méi)有狀態(tài)):無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力沒(méi)有辦法區(qū)分對(duì)應(yīng)的用戶。(如:現(xiàn)在a用戶登錄淘寶,b用戶也登錄淘寶,a用戶和b用戶他沒(méi)有辦法區(qū)分,會(huì)導(dǎo)致a用戶拿到了b用戶的頁(yè)面,b用戶拿到了a用戶的頁(yè)面的問(wèn)題)
- 無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。就是建立完連接后發(fā)送完數(shù)據(jù)就會(huì)馬上斷掉,連接不能保持。每次連接完畢,連接會(huì)馬上斷掉。(采用這種方式可以節(jié)省傳輸時(shí)間)
- 長(zhǎng)連接/短連接
解決HTTP的無(wú)狀態(tài)問(wèn)題:
- 因?yàn)閷?duì)應(yīng)的http的無(wú)狀態(tài)問(wèn)題導(dǎo)致我們可能在進(jìn)行某項(xiàng)操作的時(shí)候,對(duì)應(yīng)的后端不能準(zhǔn)確的區(qū)分對(duì)應(yīng)的訪問(wèn)者,這個(gè)時(shí)候我們就需要給每個(gè)對(duì)應(yīng)的連接添加一個(gè)標(biāo)識(shí)(sessionID)。
- cookie就是用來(lái)存放sessionID。每次請(qǐng)求都要帶上cookie才能區(qū)分對(duì)應(yīng)的訪問(wèn)者。那么我們解決http的無(wú)狀態(tài)問(wèn)題就是通過(guò)發(fā)送對(duì)應(yīng)的cookie來(lái)解決的,這個(gè)cookie里面會(huì)帶上一個(gè)sessionID來(lái)用于區(qū)分。cookie是存放在瀏覽器上的。
Cookie
概述:cookie是為了解決http的無(wú)狀態(tài)問(wèn)題產(chǎn)生的,cookie里面以存儲(chǔ)sessionID的方式來(lái)解決http的無(wú)狀態(tài)問(wèn)題,cookie是存放在瀏覽器上的。
cookie的特性:
- 存儲(chǔ)在瀏覽器上的
- cookie的存儲(chǔ)大小一般是4kb左右
- cookie會(huì)隨請(qǐng)求而發(fā)送
- cookie可以跨域
- cookie可以設(shè)置過(guò)期時(shí)間
- cookie可以被篡改也可以偽造(cookie不安全)
cookie的存儲(chǔ)格式:
- key=value 鍵值對(duì)象
- expires 過(guò)期時(shí)間設(shè)置
- path 在對(duì)應(yīng)的路徑下才攜帶cookie
- domain 跨域的域名
- secure 安全(寫了代表安全,沒(méi)寫代表不安全)
key=value;expires=日期;path=地址;domain=域名;secure安全
cookie的相關(guān)操作:
概述:cookie是一個(gè)位于瀏覽器上的容器,具備增刪改查的方法(document.cookie || chrom.cookies)。
- 增加方法(給對(duì)應(yīng)的cookie里面進(jìn)行賦值)
//對(duì)應(yīng)cookie進(jìn)行賦值 增操作 var date = new Date(2022,10,22) document.cookie = `name=123;expires=${date}` - 刪除方法 (設(shè)置對(duì)應(yīng)的過(guò)期時(shí)間)
//刪除操作 就是設(shè)置過(guò)期時(shí)間為對(duì)應(yīng)的當(dāng)前時(shí)間 并不會(huì)馬上刪除 而是對(duì)應(yīng)的瀏覽器關(guān)閉以后才會(huì)刪除 //如果當(dāng)前時(shí)間已經(jīng)過(guò)了 那么對(duì)應(yīng)的cookie還是會(huì)存在 var date = new Date() document.cookie = `name=jack;expires=${date}` - 修改方法(給對(duì)應(yīng)的cookie里面的存在的key進(jìn)行重新賦值)
//修改就對(duì)于已經(jīng)有的key進(jìn)行重新賦值操作 //如果沒(méi)有設(shè)置過(guò)期時(shí)間 那么默認(rèn)的過(guò)期時(shí)間是session session的過(guò)期時(shí)間是瀏覽器關(guān)閉就清除 document.cookie = 'name=jack' - 查詢方法(不賦值直接讀取對(duì)應(yīng)的cookie)
//查詢cookie 不賦值就是查詢 顯示的時(shí)候只會(huì)顯示對(duì)應(yīng)的key=value 其他并不會(huì)顯示 console.log(document.cookie);
cookie的相關(guān)操作的封裝:
// 封裝cookie相關(guān)操作
//獲取方法 通過(guò)對(duì)應(yīng)的key 獲取對(duì)應(yīng)的cookie的值
function get(key){
var cookie = {} //用于存儲(chǔ)所有的cookie相關(guān)的內(nèi)容的
//獲取對(duì)應(yīng)cookie的字符串 age=123; name=123
var cookieStr = document.cookie
var cookies = cookieStr.split(';')
for(var c of cookies){
//對(duì)應(yīng)name=123進(jìn)行分割
var cookieArr = c.trim().split('=')
//將第一個(gè)值當(dāng)作key 第二個(gè)當(dāng)作value {name:123}
cookie[cookieArr[0]] = cookieArr[1]
}
return cookie[key]
}
//封裝一個(gè)設(shè)置相關(guān)方法
//key=value;expires=時(shí)間;path=地址;domain=域名;secure
function set(key,value,expires,path,domain,secure){
//如果沒(méi)有key 直接報(bào)錯(cuò)
if(!key){
throw new Error('必須填入key值')
}
//如果沒(méi)有value將value設(shè)置為空字符
if(!value){
value = ""
}
var cookieStr = `${key}=${value}`
//如果對(duì)應(yīng)的傳入過(guò)期時(shí)間是日期類型
if(expires instanceof Date){
cookieStr += `;expires=${expires}`
}
// 如果有path
if(path){
cookieStr += `;path=${path}`
}
//如果有domain
if(domain){
cookieStr += `;domain=${domain}`
}
// 如果有secure
if(secure){
cookieStr += `;secure`
}
document.cookie = cookieStr
}
//刪除方法 設(shè)置對(duì)應(yīng)的過(guò)期時(shí)間
function remove(key,value,expires){
set(key,value,new Date())
}
第三方封裝的cookie:
cookie.js(vue里面采用了
- 下載js文件
- 打開官網(wǎng),看對(duì)應(yīng)的demo(看源碼)
<script src="./cookie.min.js"></script>
<script>
//核心對(duì)象 window.Cookies
//get 獲取的 set 設(shè)置 remove 刪除
Cookies.set('name','tom')
console.log(Cookies.get('name'));
Cookies.remove('name','tom')
</script>
核心方法:
- set 設(shè)置cookie的方法
- get 獲取cookie的方法
- remove 刪除cookie的方法
JSON格式:
概述: json是一種數(shù)據(jù)傳輸?shù)母袷剑瑢?duì)應(yīng)的數(shù)據(jù)傳輸中會(huì)常用到j(luò)son。
json傳輸格式的好處:
- 跨平臺(tái)
- 跨語(yǔ)言
json格式的表示形式:
概述:json文件里面的key必須是字符串,字符串必須是雙引號(hào)括起來(lái)。
- 對(duì)象 {}
var json = {}
- 數(shù)組 []
var json = []
JSON的序列化和反序列化:
1.序列化
概述:就是將一個(gè)json對(duì)象轉(zhuǎn)為對(duì)應(yīng)的字符串。(JSON.stringify())
//JSON.stringify() //轉(zhuǎn)為json格式的字符串
var jsonStr = JSON.stringify(obj)
console.log(jsonStr);
2.反序列化
概述:將一個(gè)json格式字符串轉(zhuǎn)為對(duì)應(yīng)的對(duì)象。(JSON.parse())
//JSON.parse() //將json格式的字符串轉(zhuǎn)換對(duì)應(yīng)對(duì)象
var obj = JSON.parse(jsonStr)
console.log(obj);
本地緩存
- localStorage 本地緩存(持久化存在,不主動(dòng)刪除就一直存在)
//setItem 設(shè)置元素 key value
//getItem 獲取元素 通過(guò)key來(lái)獲取value
// removeItem 移除元素 根據(jù)key刪除對(duì)應(yīng)元素
localStorage.setItem('username','jack')
console.log(localStorage.getItem('username'));
localStorage.removeItem('username')
- sessionStorage 本地緩存 (跟服務(wù)器的session一致,只要關(guān)閉瀏覽器就沒(méi)有了)
sessionStorage.setItem('password','123')
console.log(sessionStorage.getItem('password'));
sessionStorage.removeItem('password')
localstorage (作為客戶端緩存)和sessionStorage (做服務(wù)端的緩存 用戶信息)區(qū)別:
- localStorage 會(huì)持久化存在
- sessionStorage 瀏覽器關(guān)閉就沒(méi)有了
- localStorage和sessionStorage存儲(chǔ)地址不一樣
localStorage和cookie的區(qū)別:
- localStorage存儲(chǔ)大小為5M左右,cookie存儲(chǔ)大小為4kb左右
- cookie會(huì)隨請(qǐng)求發(fā)送,localStorage不會(huì)隨請(qǐng)求發(fā)送
- cookie中存儲(chǔ)的數(shù)據(jù)對(duì)應(yīng)的類型較?。▓D片的base碼) ,localStorage可以存儲(chǔ)
- cookie可以跨域,localStorage不可以跨域
- cookie跨域設(shè)置對(duì)應(yīng)的過(guò)期時(shí)間;localStorage不能,需要主動(dòng)刪除不然一直都在
- cookie和localStorage存儲(chǔ)位置不一樣
localStorage和cookie的共同點(diǎn):
- localStorage和cookie都是存放對(duì)應(yīng)的字符串
- localStorage和cookie都是位于瀏覽器上

