發表文章

目前顯示的是 7月, 2009的文章

*NIX programming : 系統提供的 HASH實作

Unix 系統內定提供一個簡單的HASH 表實作.依照POSIX.1-2001的規範,OS應該提供以下三個介面 :hcreate(), hsearch(), and hdestroy() .這三個其實是很久已前SVR4時代就有的東西. 各位如果不愛看我的說明,可以自行 man 取得外國人寫的文件. -------------------------------------------- 首先來看這三個介面的原型定義 int hcreate(size_t nel); ENTRY *hsearch(ENTRY item, ACTION action); void hdestroy(void); 首先hcreate 是通知系統先配置好一個記憶體空間. hsearch 則是負責hash元素的加入與搜尋(別被函式名稱騙了),hdestroy就是把hcreate配置的空間釋放掉 基本的使用方式就是找一個你喜歡的地方先呼叫hcreate分配空間,hcreate必定在任何hash操作前呼叫.然後用hsearch 加入你的鍵值跟資料.當然要搜尋也是呼叫hsearch. 看一下這三個介面原型,發現他們不會傳回一個hash的實體物件對不對? 是的,他只能管理一個HASH table. 好拉,現在讓我們插的更深入一點(咳咳....),講一下這三個函式的詳細用法 int hcreate(size_t nel);通知OS先分配記憶體開始實作HASH . nel 參數是要通知系統你"預估"HASH最大的量是多少.但是,每個作業系統提供的演算法實作都所有不同,系統不一定會真的分配nel數量的空間出來, ENTRY *hsearch(ENTRY item, ACTION action); hsearch 實際上負責元素的加入與元素的搜尋.其中 ENTRY資料型別如下 typedef struct entry { char *key; void *data; } ENTRY; key 成員就是HASH的"鍵值",data 就是我們準備要存放的資料,key的資料必須是一個符合C語言合法的字串資料,也就是說必須由0結尾拉.data的型別則是void * ,表示他不管你的型別,他也不會幫你把dat...

人生海海 之 該怎麼練車

話說01上shinbox大po出了ZIC教學,想說也該回饋一下,所以po我看完"A twist of the wrist"文中對於"練車"這個大issue 所作的教學. 以下之文與01同步 -------------------------------------- 很感謝shinbox 分享的那麼多,接下來換我分享 " A twist of the wrist" 讀書心得做交換(當然我也想過shinbox 大可能已經看過這一系列的書了) 以下的文幾乎都是由"A twist of the wrist I & II" 文中轉譯而來.我想分享的部份跟側掛,油門控制,煞車控制無關,當然,"A twist of the wrist I & II"一定會好好的闡述轉彎,側掛,油門煞車控制等等基本功夫,但是仿間探討轉彎,側掛,油門煞車控制的東西太多了,人人的方式都不一樣,像流行騎士的跟ZIC教的就不一樣,"A twist of the wrist I & II"教的跟ZIC的又有點不一樣,我有幸還翻過20幾年前日本翻譯過來的騎乘教學書,教的東西更不一樣 上面有說仿間論壇,雜誌,車友心得等不外乎圍繞在轉彎,側掛,油門,煞車控制等四大類.但是關於"如何練車","如何找線"這方面我還很少看台灣的資源有任何"科學性"的討論,心得不外乎 "多騎就熟了" "跟在高手的後面學路線" "多練才會快" 所以我這次分享一下,keith code 所建議的練車方法,keich code 練車的目地主要圍繞著"找路線","突破"這兩個目標,keich 並沒有專章講解,而是散落於 A twist of the wrist I 第2章 What You Do A twist of the wrist I 第3章 The Product A twist of the wrist I 第6章 Decisions A twist of the wrist I 第13章 Supervise Yourself ---...