當(dāng)前位置:高考升學(xué)網(wǎng) > 招聘筆試題 > 正文
解答:(1)輪詢調(diào)度的原理是每一次把來自用戶的請(qǐng)求輪流分配給內(nèi)部中的服務(wù)器,從1開始,直到N(內(nèi)部服務(wù)器個(gè)數(shù)),然后重新開始循環(huán)。只有在當(dāng)前任務(wù)主動(dòng)放棄CPU控制權(quán)的情況下(比如任務(wù)掛起),才允許其他任務(wù)(包括高優(yōu)先級(jí)的任務(wù))控制CPU。其優(yōu)點(diǎn)是其簡(jiǎn)潔性,它無需記錄當(dāng)前所有連接的狀態(tài),所以它是一種無狀態(tài)調(diào)度。但不利于后面的請(qǐng)求及時(shí)得到響應(yīng)。
(2)搶占式調(diào)度允許高優(yōu)先級(jí)的任務(wù)打斷當(dāng)前執(zhí)行的任務(wù),搶占CPU的控制權(quán)。這有利于后面的高優(yōu)先級(jí)的任務(wù)也能及時(shí)得到響應(yīng)。但實(shí)現(xiàn)相對(duì)較復(fù)雜且可能出現(xiàn)低優(yōu)先級(jí)的任務(wù)長期得不到調(diào)度。
3.列出數(shù)據(jù)庫中常用的鎖及其應(yīng)用場(chǎng)景
解答:數(shù)據(jù)庫中的鎖是網(wǎng)絡(luò)數(shù)據(jù)庫中的一個(gè)非常重要的概念,它主要用于多用戶環(huán)境下保證數(shù)據(jù)庫完整性和一致性。各種大型數(shù)據(jù)庫所采用的鎖的基本理論是一致的,但在具體實(shí)現(xiàn)上各有差別。目前,大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都或多或少具有自我調(diào)節(jié)、自我管理的功能,因此很多用戶實(shí)際上不清楚鎖的理論和所用數(shù)據(jù)庫中鎖的具體實(shí)現(xiàn)。在數(shù)據(jù)庫中加鎖時(shí),除了可以對(duì)不同的資源加鎖,還可以使用不同程度的加鎖方式,即鎖有多種模式,SQLServer中鎖模式包括:
1)共享鎖
SQLServer中,共享鎖用于所有的只讀數(shù)據(jù)操作。共享鎖是非獨(dú)占的,允許多個(gè)并發(fā)事務(wù)讀取其鎖定的資源。默認(rèn)情況下,數(shù)據(jù)被讀取后,SQLServer立即釋放共享鎖。例如,執(zhí)行查詢“SELECTFROMmy_table”時(shí),首先鎖定第一頁,讀取之后,釋放對(duì)第一頁的鎖定,然后鎖定第二頁。這樣,就允許在讀操作過程中,修改未被鎖定的第一頁。但是,事務(wù)隔離級(jí)別連接選項(xiàng)設(shè)置和SELECT語句中的鎖定設(shè)置都可以改變SQLServer的這種默認(rèn)設(shè)置。例如,“SELECTFROMmy_tableHOLDLOCK”就要求在整個(gè)查詢過程中,保持對(duì)表的鎖定,直到查詢完成才釋放鎖定。
2)修改鎖
修改鎖在修改操作的初始化階段用來鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現(xiàn)象。因?yàn)槭褂霉蚕礞i時(shí),修改數(shù)據(jù)的操作分為兩步,首先獲得一個(gè)共享鎖,讀取數(shù)據(jù),然后將共享鎖升級(jí)為獨(dú)占鎖,然后再執(zhí)行修改操作。這樣如果同時(shí)有兩個(gè)或多個(gè)事務(wù)同時(shí)對(duì)一個(gè)事務(wù)申請(qǐng)了共享鎖,在修改數(shù)據(jù)的時(shí)候,這些事務(wù)都要將共享鎖升級(jí)為獨(dú)占鎖。這時(shí),這些事務(wù)都不會(huì)釋放共享鎖而是一直等待對(duì)方釋放,這樣就造成了死鎖。如果一個(gè)數(shù)據(jù)在修改前直接申請(qǐng)修改鎖,在數(shù)據(jù)修改的時(shí)候再升級(jí)為獨(dú)占鎖,就可以避免死鎖。修改鎖與共享鎖是兼容的,也就是說一個(gè)資源用共享鎖鎖定后,允許再用修改鎖鎖定。
3)獨(dú)占鎖
獨(dú)占鎖是為修改數(shù)據(jù)而保留的。它所鎖定的資源,其他事務(wù)不能讀取也不能修改。獨(dú)占鎖不能和其他鎖兼容。
4)結(jié)構(gòu)鎖
結(jié)構(gòu)鎖分為結(jié)構(gòu)修改鎖(Sch-M)和結(jié)構(gòu)穩(wěn)定鎖(Sch-S)。執(zhí)行表定義語言操作時(shí),SQLServer采用Sch-M鎖,編譯查詢時(shí),SQLServer采用Sch-S鎖。
5)意向鎖
意向鎖說明SQLServer有在資源的低層獲得共享鎖或獨(dú)占鎖的意向。例如,表級(jí)的共享意向鎖說明事務(wù)意圖將獨(dú)占鎖釋放到表中的頁或者行。意向鎖又可以分為共享意向鎖、獨(dú)占意向鎖和共享式獨(dú)占意向鎖。共享意向鎖說明事務(wù)意圖在共享意向鎖所鎖定的低層資源上放置共享鎖來讀取數(shù)據(jù)。獨(dú)占意向鎖說明事務(wù)意圖在共享意向鎖所鎖定的低層資源上放置獨(dú)占鎖來修改數(shù)據(jù)。共享式獨(dú)占鎖說明事務(wù)允許其他事務(wù)使用共享鎖來讀取頂層資源,并意圖在該資源低層上放置獨(dú)占鎖。
6)批量修改鎖
批量復(fù)制數(shù)據(jù)時(shí)使用批量修改鎖?梢酝ㄟ^表的TabLock提示或者使用系統(tǒng)存儲(chǔ)過程sp_tableoption的“tablelockonbulkload”選項(xiàng)設(shè)定批量修改鎖。
二、算法設(shè)計(jì)題1.給定N是一個(gè)正整數(shù),求比N大的最小“不重復(fù)數(shù)”,這里的不重復(fù)是指沒有兩個(gè)相等的相鄰位,如1102中的11是相等的兩個(gè)相鄰位故不是不重復(fù)數(shù),而12301是不重復(fù)數(shù)。
算法思想:當(dāng)然最直接的方法是采用暴力法,從N+1開始逐步加1判斷是否是不重復(fù)數(shù),是就退出循環(huán)輸出,這種方法一般是不可取的,例如N=11000000,你要一個(gè)個(gè)的加1要加到12010101,一共循環(huán)百萬次,每次都要重復(fù)判斷是否是不重復(fù)數(shù),效率極其低下,因此是不可取的。這里我采用的方法是:從N+1的最高位往右開始判斷與其次高位是否相等,如果發(fā)現(xiàn)相等的(即為重復(fù)數(shù))則將次高位加1,注意這里可能進(jìn)位,如8921―>9021,后面的直接置為010101...形式,如1121―>1201,此時(shí)便完成“不重復(fù)數(shù)”的初步構(gòu)造,但此時(shí)的“不重復(fù)數(shù)”不一定是真正的不重復(fù)的數(shù),因?yàn)榭赡苓M(jìn)位后的次高位變?yōu)?或進(jìn)位后變成00,如9921―>10001,此時(shí)需要再次循環(huán)判斷重新構(gòu)造直至滿足條件即可,這種方法循環(huán)的次數(shù)非常少,我認(rèn)為不超過3次就能滿足條件。
2020年河北新聞網(wǎng)兩學(xué)一做
時(shí)間:2023-09-18 07:0:242020年河北新聞網(wǎng)兩學(xué)一做
時(shí)間:2023-09-15 11:0:59兩學(xué)一做學(xué)習(xí)教育知
時(shí)間:2023-09-21 06:0:302020年開展兩學(xué)一做學(xué)習(xí)教
時(shí)間:2023-09-19 21:0:30