線程同步:多個(gè)線程同時(shí)訪問(wèn)同一資源,等待資源訪問(wèn)結(jié)束,浪費(fèi)時(shí)間,效率低
線程異步:在訪問(wèn)資源時(shí)在空閑等待時(shí)同時(shí)訪問(wèn)其他資源,實(shí)現(xiàn)多線程機(jī)制
是否了解網(wǎng)絡(luò)的同步和異步?
同步:提交請(qǐng)求->等待服務(wù)器處理->處理完畢返回 這個(gè)期間客戶端瀏覽器不能干任何事
異步: 請(qǐng)求通過(guò)事件觸發(fā)->服務(wù)器處理(這是瀏覽器仍然可以作其他事情)->處理完畢
鏈表和順序表儲(chǔ)存時(shí)各自有什么優(yōu)點(diǎn)?
1.順序表存儲(chǔ)
原理:順序表存儲(chǔ)是將數(shù)據(jù)元素放到一塊連續(xù)的內(nèi)存存儲(chǔ)空間,存取效率高,速度快。但是不可以動(dòng)態(tài)增加長(zhǎng)度
優(yōu)點(diǎn):存取速度高效,通過(guò)下標(biāo)來(lái)直接存儲(chǔ)
缺點(diǎn):1.插入和刪除比較慢,2.不可以增長(zhǎng)長(zhǎng)度
比如:插入或者刪除一個(gè)元素時(shí),整個(gè)表需要遍歷移動(dòng)元素來(lái)重新排一次順序
2.鏈表存儲(chǔ)
原理:鏈表存儲(chǔ)是在程序運(yùn)行過(guò)程中動(dòng)態(tài)的分配空間,只要存儲(chǔ)器還有空間,就不會(huì)發(fā)生存儲(chǔ)溢出問(wèn)題
優(yōu)點(diǎn):插入和刪除速度快,保留原有的物理順序,比如:插入或者刪除一個(gè)元素時(shí),需要改變指針指向即可
缺點(diǎn):查找速度慢,因?yàn)椴檎視r(shí),需要循環(huán)鏈表訪問(wèn)
使用redis搭建分布式系統(tǒng)時(shí)如何處理網(wǎng)絡(luò)延遲和網(wǎng)絡(luò)異常?
由于網(wǎng)絡(luò)異常的存在,分布式系統(tǒng)中請(qǐng)求結(jié)果存在“三態(tài)”的概念,即三種狀態(tài):“成功”、“失敗”、“超時(shí)(未知)”
當(dāng)出現(xiàn)“超時(shí)”時(shí)可以通過(guò)發(fā)起讀取數(shù)據(jù)的操作以驗(yàn)證 RPC 是否成功(例如銀行系統(tǒng)的做法)
另一種簡(jiǎn)單的做法是,設(shè)計(jì)分布式協(xié)議時(shí)將執(zhí)行步驟設(shè)計(jì)為可重試的,即具有所謂的“冪等性”
數(shù)據(jù)倉(cāng)庫(kù)是什么?
數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)面向主題的、集成的、穩(wěn)定的、反映歷史變化的、隨著時(shí)間的流逝發(fā)生變化的數(shù)據(jù)集合。它主要支持管理人員的決策分析。
數(shù)據(jù)倉(cāng)庫(kù)收集了企業(yè)相關(guān)內(nèi)部和外部各個(gè)業(yè)務(wù)系統(tǒng)數(shù)據(jù)源、歸檔文件等一系列歷史數(shù)據(jù),最后轉(zhuǎn)化成企業(yè)需要的戰(zhàn)略決策信息。
特點(diǎn):
-
面向主題:根據(jù)業(yè)務(wù)的不同而進(jìn)行的內(nèi)容劃分;
-
集成特性:因?yàn)椴煌臉I(yè)務(wù)源數(shù)據(jù)具有不同的數(shù)據(jù)特點(diǎn),當(dāng)業(yè)務(wù)源數(shù)據(jù)進(jìn)入到數(shù)據(jù)倉(cāng)庫(kù)時(shí),需要采用統(tǒng)一的編碼格式進(jìn)行數(shù)據(jù)加載,從而保證數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的唯一性;
-
非易失性:數(shù)據(jù)倉(cāng)庫(kù)通過(guò)保存數(shù)據(jù)不同歷史的各種狀態(tài),并不對(duì)數(shù)據(jù)進(jìn)行任何更新操作。
-
歷史特性:數(shù)據(jù)保留時(shí)間戳字段,記錄每個(gè)數(shù)據(jù)在不同時(shí)間內(nèi)的各種狀態(tài)。
假設(shè)有一個(gè)爬蟲,從網(wǎng)絡(luò)上獲取數(shù)據(jù)的頻率快,本地寫入數(shù)據(jù)的頻率慢,使用什么數(shù)據(jù)結(jié)構(gòu)好?
在線求解(o°ω°o)
你是否了解谷歌的無(wú)頭瀏覽器?
無(wú)頭瀏覽器即headless browser,是一種沒(méi)有界面的瀏覽器。既然是瀏覽器那么瀏覽器該有的東西它都應(yīng)該有,只是看不到界面而已。
Python中selenium模塊中的PhantomJS即為無(wú)界面瀏覽器(無(wú)頭瀏覽器):是基于QtWebkit的無(wú)頭瀏覽器,
你是否了解MySQL數(shù)據(jù)庫(kù)的幾種引擎?
InnoDB:
InnoDB是一個(gè)健壯的事務(wù)型存儲(chǔ)引擎,這種存儲(chǔ)引擎已經(jīng)被很多互聯(lián)網(wǎng)公司使用,為用戶操作非常大的數(shù)據(jù)存儲(chǔ)提供了一個(gè)強(qiáng)大的解決方案。
在以下場(chǎng)合下,使用InnoDB是最理想的選擇:
1.更新密集的表。InnoDB存儲(chǔ)引擎特別適合處理多重并發(fā)的更新請(qǐng)求。
2.事務(wù)。InnoDB存儲(chǔ)引擎是支持事務(wù)的標(biāo)準(zhǔn)MySQL存儲(chǔ)引擎。
3.自動(dòng)災(zāi)難恢復(fù)。與其它存儲(chǔ)引擎不同,InnoDB表能夠自動(dòng)從災(zāi)難中恢復(fù)。
4.外鍵約束。MySQL支持外鍵的存儲(chǔ)引擎只有InnoDB。
5.支持自動(dòng)增加列AUTO_INCREMENT屬性。
一般來(lái)說(shuō),如果需要事務(wù)支持,并且有較高的并發(fā)讀取頻率,InnoDB是不錯(cuò)的選擇。
MEMORY:
使用MySQL Memory存儲(chǔ)引擎的出發(fā)點(diǎn)是速度。為得到最快的響應(yīng)時(shí)間,采用的邏輯存儲(chǔ)介質(zhì)是系統(tǒng)內(nèi)存。
雖然在內(nèi)存中存儲(chǔ)表數(shù)據(jù)確實(shí)會(huì)提供很高的性能,但當(dāng)mysqld守護(hù)進(jìn)程崩潰時(shí),所有的Memory數(shù)據(jù)都會(huì)丟失。
獲得速度的同時(shí)也帶來(lái)了一些缺陷?! ?/p>
一般在以下幾種情況下使用Memory存儲(chǔ)引擎:
1.目標(biāo)數(shù)據(jù)較小,而且被非常頻繁地訪問(wèn)。在內(nèi)存中存放數(shù)據(jù),所以會(huì)造成內(nèi)存的使用,可以通過(guò)參數(shù)max_heap_table_size控制Memory表的大小,設(shè)置此參數(shù),就可以限制Memory表的最大大小。
2.如果數(shù)據(jù)是臨時(shí)的,而且要求必須立即可用,那么就可以存放在內(nèi)存表中。
3.存儲(chǔ)在Memory表中的數(shù)據(jù)如果突然丟失,不會(huì)對(duì)應(yīng)用服務(wù)產(chǎn)生實(shí)質(zhì)的負(fù)面影響。
redis數(shù)據(jù)庫(kù)有哪幾種數(shù)據(jù)結(jié)構(gòu)?
5種數(shù)據(jù)結(jié)構(gòu)
string