發表文章

目前顯示的是 10月, 2016的文章

Python Windows cmd : unknown encoding: cp65001

小筆記: 這是cmd的編碼問題,使得python看不懂,請輸入 set PYTHONIOENCODING=UTF-8 讓cmd執行後,就沒這問題了

MySQL 匯入(import) 大容量檔案方法

在這大數據的時代,一筆資料動輒都好幾TB起跳,百萬級的檔案已經算是小case了。 然而若在使用MySQL時,一個好幾百MB的資料,若是使用它內建的匯入精靈,那速度可是會慢到讓人崩潰的。 因此在匯入大檔案時,通常大家會用到(以csv為例): LOAD DATA INFILE ' path ' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;   然而在執行後可能會遇到以下的錯誤: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement    0.000 sec   這其實是因為MySQL本身只提供使用者在規定的資料夾中讀取資料,因此除了把這功能關掉以外,最方便的方法就是將資料放進該指定的資料夾即可。 至於資料夾在哪邊,只要執行以下query就可以得到確切位置了: SELECT @@global.secure_file_priv;  通常都是在 C:\ProgramData\MySQL\MySQL Server X.X\Uploads 下,但保險起見還是執行一下指令看看吧! 至於若想更改該資料夾位置甚至是關掉的話,請到 C:\ProgramData\MySQL\MySQL Server X.X\下,修改my.ini檔案就行了。 PS.在sql中的路徑符號必須是 "/"唷,用"\"是不會過的 

CPU Affinity (CPU親合力)

CPU Affinity (CPU親合力) 一. 定義: CPU Affinity(親合力), 係指在linux 中,process 想 儘量長時間運行 在某個指定的CPU上 ,且不被轉移至其他CPU 的 傾向性 。 二. 函式 : CPU親合力用一個 cpu_set_t 型態來產生一CPU集合,下面討論 函式 : cpu_set_t cpuset; CPU_ZERO(&cpuset) : 清空 給定變數cpuset 中的 CPU set。 CPU_SET(n, &cpuset) :將CPU n(0~n) 加進 給定變數cpuset集合中。 CPU_CLR( n, &cpuset ) : 將 CPU n 從 給定變數cpuset集合中 移除 。 CPU_ISSET( n, &cpuset ) : 檢 查CPU n 是否存在 於這個 cpuset 集合中.  以下為最重要的兩個 函式 : sched_setaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t * cpuset ) ; 該函式將process為pid,丟進名為cpuset 的CPU set中執行。  cpusetsize 即為 cpuset 的長度,通常 設定為sizeof(cpu_set_t)。 若pid給予0,則表示目前的process。 sched_getaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t * cpuset ) ; 取得 指定pid的process可以運行在哪些cpu中。 三.pthread 若我們討論的範疇為thread對於CPU的affinity時,我們會改用以下兩個函式: pthread_setaffinity_np(pthread_t thread,size_t cpusetsize,const cpu_set_t *cpuset);    參數差別只在上一個是pid(process),這個是tid(thread)。通常我們會使用 pthread_self() 來表示目前的th read。 回傳值為一int型態;若綁定成功時,會回傳0。 int pthread_