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