Time of Update: 2018-12-04
1.高速緩衝區位置:核心代碼和主記憶體之間作用:解決I/O操作與CPU處理之間的速度不匹配大小:被劃分成與磁碟資料區塊大小相等的緩衝塊管理方式:hash表(裝置號^邏輯塊號) + 雙向鏈表(所有的buffer_head)2.高速緩衝的劃分:3.管理方式:注意,並不是一個散列隊列組成雙向鏈表,而是所有的緩衝塊,順序是最近最少使用(LRU)4.bread() -----
Time of Update: 2018-12-04
1. 問題描述 給定不大於整數 n 的 k 個互不相等的整數 ( k <n ) , 對這些整數進行排序。本文討論的內容具體可參見《編程珠璣》(第二版)的第一章。 2. 問題分析
Time of Update: 2018-12-04
二叉樹漫遊——編程技術與技巧總結(上):遞迴技術 本系列分三篇文章,分別對二叉樹編程中的常用技術和技巧進行了總結。第一篇是關於二叉樹編程的遞迴技術的;第二篇討論如何將遞迴程式轉化為非遞迴程式;第三篇討論二叉樹編程的其它方法和技術。 一、 二叉樹編程概述 程式 =資料結構+演算法。更精確地說,任何程式的功能實現,從技術角度來說,通過選取合適的資料結構和高效的演算法即可做到。
Time of Update: 2018-12-04
網上搜到的一篇介紹閱讀別人原始碼的方法,放在這裡,有空可以查看。
Time of Update: 2018-12-04
編程的人是幸福的。 常常聽到有人說, 編程的人是苦逼的, 其實仔細想想, 並不如此。 編程有礙於找 MM ? 我曾也有這樣的想法,以為編程“奪”去了大量的時間和精力, —— 但如果是這樣, 為什麼有的人憑藉裝機技能可以獲得MM的青睞呢? 有的人能夠靠寫簡單的C語言作業找到GF呢? 這說明,不是編程有礙於找MM, 而是我自己不善於運用已有的優勢和天賦去發揮影響,創造價值, —— 固執於技術的世界,在重要的人生大事上不積極不主動,落得個孤單的下場, 真是活該!
Time of Update: 2018-12-04
1.進程、使用者線程、核心線程的區別和聯絡 進程使用者線程(輕量級進程)核心線程程式碼片段有有有資料區段有有有描述符task_struct有有有使用者空間堆棧有一個線程組共用一個使用者空間完全沒有核心空間堆棧有有有PID獨一無二的一組線程共用一個有這裡的有是指擁有獨立的2.核心線程:由核心建立、調度,用於執行一些重要的、周期性的過程。只運行在核心態、只使用3G以後的系統空間。比如用於回收物理頁面的kswapd線程3.進程的狀態(1)就緒或運行(2)可中斷的等待(3)不可中斷的等待(4)暫停(5)
Time of Update: 2018-12-04
1.進程切換是指:儲存prev進程的上下文,用next的上下文替代。其中上下文包括:頁全域目錄、核心態堆棧、硬體上下文。2.80x86為進程切換提供的硬體支援:第一種:通過任務門第二種:通過JMP和CALL指令:把硬體上下文存在TSS中,執行這條指令時,通過硬體自動切換TSS,完成硬體內容相關的過程TSS是任務狀態段,只能存放在GDT中,不能存放在LDT中3.Linux使用的硬體環境切換方法:通過一組MOV指令逐步執行切換,手動類比1的過程因為這樣效率較高,也便於各種檢查和保護4.Linux的進
Time of Update: 2018-12-04
作用:主要用於進程之間按照先進先出的方式傳資料,也可以用於進程間同步執行原理:管道只使用i節點的直接塊。核心將i節點的直接塊作為一個迴圈隊列,通過修改讀寫指標來保證先進先出的順序建立:申請一個管道i結點,分配一頁緩衝區(4KB)初始化:i_size指向緩衝區,i_zone[0]指向資料頭,i_zone[1]指向資料尾讀操作:從尾讀出資料,並修改尾指標寫操作:從頭寫入資料,並修改頭指標
Time of Update: 2018-12-04
題目:思考:定義(1)extra為行末多餘空白字元個數的立方和(2)f[i,j] = M - j + i - SUM(lk) , i<=k<=j(3)令len[i,j]表示第i個單詞到第j個單詞可以得到的最小extra整齊列印問題可以分解成以下子問題(1)若f[i,j] < 0,,則len[i,j] = MIN(len[i,k] + len[k+1,j]) , i<=k<j(2)若f[i,j] > 0 && j==n,則len[i,j] = 0
Time of Update: 2018-12-04
do_execve() ----- 系統調用(int
Time of Update: 2018-12-04
童鞋們都應該見過各種各樣的請柬咯, 請柬上面通常是一個模板,然後填上被邀請人及相關資訊,在 Word 裡面稱之為 “合併列印”特性。 今天,我們就來實現一個簡單的格式化信函產生器。 我們將要做的東西, 包括一個非常簡單的學生選課資料庫,以及簡單的模板, 利用資料庫中的記錄及模板產生格式化的通知資訊。 關於C語言的實現, 請參考 《編程珠璣I》(第二版) 的第三章第二節。 別看這個東西簡單, 其中也蘊涵了不變和變化的部分。 不變是資訊模板內容,
Time of Update: 2018-12-04
iget() ----- 從裝置dev上讀取節點號為nr的i結點1.從i結點表申請一個臨時i結點2.掃描i節點表,尋找(裝置號==dev&&i節點號==nr)的項若未找到,則:(1)用臨時結點建立一個i節點(2)從裝置dev讀取該i節點的資訊(3)返回該結點若找到,等待i節點解鎖3.若(裝置號!=dev||節點號!=nr),則go to step
Time of Update: 2018-12-04
無論前端架構多麼複雜, 最基本的技術是不變的: HTML, Javascript , CSS ; Json , Javascript 函數與物件導向, 原型繼承機制。 要弄懂前端架構, 上述前端基礎一定要非常熟練甚至精通。 Extjs 對資料如何與組件互動和組件展現資料的層次性劃分是比較清晰的, 值得學習和借鑒。 資料展現基本機制
Time of Update: 2018-12-04
block_write() ----- 塊裝置檔案資料的讀操作1.把參數中檔案指標pos位置映射成資料區塊號和塊中位移量2.將pos所在位置的資料讀入到緩衝區的一個緩衝塊bread()3.計算要寫的長度4.從使用者資料緩衝區將資料複製到當前緩衝塊的位移位開始處(從第2次開始,位移量都是0)5.如果還有資料,go to step 2圖:見筆記使用者讀寫操作過程,以讀為例:再以塊裝置讀函數為例:block_read() ---> bread() ---> ll_rw_block()
Time of Update: 2018-12-04
/*1750ms邊長為1,所以用BFS求最短路對於每一個點,做一次BFS,求出以這個點為出發點時的最短路徑樹的長度和它包含的邊記錄長度是用於求值,記錄邊是用於最佳化。因為只有處於最短路徑樹上的邊的改動才會影響到結果如果要去的邊的不在最短路徑樹上,不影響結果,如果在,則重新計算最佳化後還是逾時,網上的解題報告都說用short,還是跑了1750ms,可能這題用vector來儲存不太合適*/#include <iostream>#include
Time of Update: 2018-12-04
昨晚, —— 不, 應該是今天淩晨, —— 註定是個不簡單的時刻。 我入職後參與的第一個項目發布,而且自己所做的工作是資料訂正,涉及使用者資料的操作總是非常敏感而重要的。因此,心理還是比較緊張的。 果然是真實環境更能鍛煉人。雖然事先檢查了好幾遍,可是實際執行時還是出問題了。 事情是這樣的: 我寫了幾個 .py 指令碼用來操作資料庫,需要更新10000多個使用者的資源記錄,每個使用者的資源記錄涉及好幾個資料庫的幾張表。
Time of Update: 2018-12-04
/*很顯然的BFS,沒有懸念,只是實現起來有點麻煩寫完才發現,本題中,起點和終點都很明確,可以用雙搜不過我的單搜也沒有逾時*/#include <iostream>#include <algorithm>#include <map>#include <queue>using namespace std;//狀態struct node{char ch[4];//用char類型是為了省空間int ceil;};//判斷兩個狀態是否為同一狀態int
Time of Update: 2018-12-04
一、題目二、思考背包問題:P01: 01背包問題。令s[i,j]表示考慮前i個背包,在時間j之前能夠獲得的最大效益。初始化:s[i][0] = 0遞推公式:s[i][j] = max{s[i-1][j], s[i-1][j-time[i]+pro[i]),其中前者代表如果不處理第i個作業s[i][j]能取得的最大值,後者表示如果做第i個作業s[i][j]能取得的最大值。最佳化:空間複雜度最佳化、常數最佳化三、代碼#include <iostream>#include
Time of Update: 2018-12-04
一、題目棧的插入和刪除操作都是在一端進行的,而隊列的插入和刪除卻是在兩頭進行的。另有一種雙端隊列(deque),其兩端都可以做插入和刪除操作。對於一個用數組構造的雙端隊列,請寫出四個在兩端進行插入和刪除的操作的過程,要求已耗用時間都為O(1)二、虛擬碼NEXT(p, l)1 if p = l2 then ret <- 13 else ret <- p + 14 return retPRE(p, l)1 if p = 12
Time of Update: 2018-12-04
0.sys_open()(1)從當前進程的“開啟檔案表”中找到一個閒置項get_unused_fs()(2)建立檔案讀寫的上下文filp_open():(見1)(3)將上下文安裝到檔案開啟表中1.filp_open():建立檔案讀寫的上下文(1)擷取指向檔案名稱的dentry和vfsmount:open_namei()若只是開啟,則通過path_init()和path_walk()搜尋若有不存在就建立的要求,則(見3)3.擷取指向檔案名稱的dentry和vfsmount,若不存在就建立(1)找到