原创 pintos (2) --Priority Scheduling

爲Pintos建立優先級調度機制,並確保任何時刻CPU上運行的都是最高優先級線程。 爲確保最高優先級的線程運行,需要重新計算調度的時刻有:創建新線程,設置線程優先級。故將ready_list改爲有序隊列,優先級較高在前,同時在threa

原创 pintos (3) --Priority Inversion

解決lock上優先級反轉的問題 優先級反轉的問題使用優先級捐贈來解決,噹噹前線程想要獲得低優先級線程擁有的鎖時,將低優先級線程的優先級設爲當前線程的優先級,當低優先級線程釋放鎖的時候恢復其原始優先級。 整個過程分兩個部分:捐贈和恢復。

原创 LZW編碼解碼cpp實現

編碼過程: 1:將詞典初始化爲包含所有可能的單字符,當前前綴P初始化爲空。 2:當前字符 C=字符流中的下一個字符。 3:判斷 P+C 是否在詞典中 (1) 如果“是”,則用C擴展P,即讓P=P+C,返回步驟2 (2) 如

原创 音樂評分系統MATLAB仿真

分別提取演唱者音頻與模版音頻的特徵參數,通過特徵參數的差值得到演唱得分。 源碼分三個部分: 1. main.m 主文件,運行入口 音頻的讀入,對基音特徵進行分段DTW,根據DTW的結果計算得分 計算

原创 PCA算法cpp實現

PCA過程: 零均值化 求協方差 求特徵值及特徵向量 按特徵值大小排序特徵向量 取前k行組成變換矩陣 使用變換矩陣即可進行降維或還原 測試數據集(68040*32):CorelFeatures-mld/ColorHistogram.a

原创 Container With Most Water

一個非負整數數組a1, a2, …, an 分別代表一系列點 (i, ai),分別過這些點作x軸的垂線,任選兩條線與x軸組成一個容器,求容器最大能盛下多少水。要求複雜度O( n ) 注:容器不能傾斜;保證n>=2 最容易想到的就是類似

原创 使用select進行 阻塞式/低CPU消耗 延時

select函數本是被用作檢測系統文件描述符的狀態 int threadDelay(const int sec, const int usec){ timeval tv; tv.tv_sec = sec; tv.

原创 k-means算法cpp實現

k-means過程: 從數據集中隨機選取k個點作爲初始center 迭代(直到一定次數或迭代前後無變化): 計算每個向量最近的center,將其歸爲該類 計算每一類向量的質心,作爲新的center 在此使用歐氏距離 測試數據集(68

原创 pintos (6) --運算符優先級

一個定點小數除法如下: #define FD_DIV(X, Y) (((fp_t)X)<<FD_SHIFT_AMOUNT/(Y)) 然而這是錯的…… 錯在哪裏呢…左移 << 的優先級是低於除法 / 的… 所以會先計算FD_SHIFT_A

原创 pintos (1) -- Alarm Clock

實現非阻塞的timer_sleep()函數。 線程調用timer_sleep()後主動block,並設置blockticks,每次時鐘中斷blockticks減1,待其減爲0時unblock struct thread 添加屬性: lo

原创 async whilst使用注意

var async = require('async'); var count = 0; var list = [{name:'Jack',age:20},{name:'Lucy',age:18}]; async.whilst(

原创 ThinkPHP裏的MVC

ThinkPHP裏的MVC M:Model model對應所有的數據操作,相當於將數據庫相關進行了一次封裝,每個model就是數據庫裏的一個表。 而且有兩種操作模型的方式: M() 方法:直接得到數據庫裏的表,沒有高級功能,只能手

原创 參數估計

參數估計是什麼? 現在有一些樣本x,假設他們服從某種分佈(例如高斯分佈),但是我們並不知道該分佈的參數,我們通過這些樣本估計出未知的參數,這就是參數估計。 有什麼前提? 樣本是獨立同分布的,且訓練樣本足夠充分。 如果樣本不是同一個分

原创 Session是什麼

我們首先了解以下前提知識: http是一種無狀態性的協議。 我們無法僅從http層瞭解到某個請求是源自於哪一個用戶。 結合到實例裏: 假如我們在瀏覽器裏登錄一個系統,點擊登錄,網站友好的提示:登陸成功。 那麼我們進行下一個操作,比如

原创 JS HTML轉義碼解碼

背景: JQ的html()函數得到網頁的html源碼,而有時得到的文本中的中文會以HTML轉義碼的形式出現:如“轉發”被編碼成了“& #x8F6C;& #x53D1;”。(這裏&和#之間加了空格,否則會直接顯示爲中文) 而使用text