Time of Update: 2018-12-04
Atom在list中的不可分割的元素稱為atom,比如前面一篇中的數字,單詞,運算子號等。一個list可以只有一個元素,或者一個元素都沒有。Empty list寫成
Time of Update: 2018-12-04
Windows下,每個線程都可以擁有一個訊息佇列,通常UI線程預設就擁有自己的訊息佇列,Work Thread需要自己調用PeekMessage來建立自己的訊息佇列。 訊息是一個資料結構,下面是它的定義:typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD
Time of Update: 2018-12-04
花了差不多一天時間,把SGI STL的string實現對著《C++標準程式庫》看完。現在稍總結一下。
Time of Update: 2018-12-04
在project1工程檔案中添加一個clj-http依賴:(defproject project1 "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"}
Time of Update: 2018-12-04
需求如題,現在首先明白,最新版本的emacs內建了muse-latex2png.el檔案。該程式會將latex轉換成png,然後顯示在html圖片上。在~/.emacs中添加:(require 'muse-latex2png)但是以來另一個程式轉成png,在Ubuntu下安裝:apt-get install dvipng好了,開啟Muse文檔,輸入如下標記:<latex>\[E =
Time of Update: 2018-12-04
效能最佳化Linux下程式效能分析工具gprof gprof 安裝在Linux 系統的 /usr/bin 目錄下. 它能剖析你的程式,並分析出程式的哪一個部分在執行時最費時間. gprof 將告訴你程式裡每個函數被調用的次數和每個函數執行時所佔時間的百分比. 你如 果想提高你的程式效能的話這些資訊非常有用. 為了在你的程式上使用 gprof, 你必須在編譯器時加上 -pg 選項. 這將使程式在每次 執行時產生一個叫 gmon.out 的檔案. gprof
Time of Update: 2018-12-04
現在來看一下前面譯文中碰到的代碼:第一個是nil, 和Java的null值相同,和false一樣可以表達條件判斷不為true的情況。下面是解釋:nilnil is a possible value of any data type in Clojure. nil has the same value as Java null. The Clojure conditional system is based around nil and false, with nil and false
Time of Update: 2018-12-04
今天一個service即將發布之前,用壓力測試試了一下,很快就segmentation fault,嚇了一身冷汗。三小時候確定是因為最近幾天引入boost::ptree來將解析json的時候出問題。重新自己實現解析代碼後,問題解決。單獨開一個工程,在多線程的情況下調用,錯誤重現。下面的代碼時不時就會crash。class testBind {public: void testFunc() { cout<<"ok"<<endl;
Time of Update: 2018-12-04
今天看到《windows網路編程》第二版裡面有一個函數, 在第一次按照說明使用的時候沒有成功. 以下是對應的技術說明. #include <winsock2.h> int WSAAPI WSAEnumProtocols ( LPINT lpdwProtocols, LPWSAPROTOCOL_INFO lpProtocolBuffer, LPDWORD lpdwBufferLength);
Time of Update: 2018-12-04
這節介紹如何將Clojure程式打包成一個可以執行的standalone Java程式。也就是所有的依賴都已經在jar包中,並且Main-Class manifest 也被正確設定。首先修改代碼core.clj:(ns project1.core (:gen-class))(defn -main "I don't do a whole lot." [& args] (println "Hello, World!" ) (println args) (println
Time of Update: 2018-12-04
為瞭解決動態訪問多種資料庫的問題,我們需要使用建立型模式。ADO.NET2.0提供了基於Singleton、AbstractFactory和Factory Method模式的工廠類。現在我來研究一下。ADO.NET主要包含串連類和非串連類。這些類又被劃分為四大系列:odbc,ole db,oracle,sql
Time of Update: 2018-12-04
http://www.codeproject.com/useritems/OpenSource_VC_MFC.aspIntroductionList of some of the best Open Source projects written in VC++/MFC.BackgroundCodeproject has the best source code repository for VC++ developers. But another site Sourceforge.net
Time of Update: 2018-12-04
本文實現整數的四則混合混算。比如:輸入(5+8*4+7)*9-3*(13+2*6),返回計算結果為321。 思路:正向掃描運算式,使用兩個棧分別儲存整數和符號,有括弧的先計算括弧中的值。遇到乘除法先計算。經過以上計算後得到最後的式子為只有加減法的無括弧式子。再計算最後結果。 流程描述:1. 掃描字元t。2. 若為’\0’,跳到4;若為’*/+)’,入符號棧;若為’-‘,轉化為(-1)*,分別入數字棧和符號棧;若為數字’0-9’,向前找到不是’0-9’的符號,轉化為整數,入數字
Time of Update: 2018-12-04
題目:定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函數,要求對長度為n的字串操作的時間複雜度為O(n),空間複雜度為O(1)。思路:其實這種題目很好解。直接對每個位置迭代求資料來源位置就可以了。有另外一些解法,比如交換法,雙反轉法,遞迴法,對於解此題目沒什麼高效的解法。我認為以下解法完全滿足題目要求,是最佳的。void rotate_left_string(char * src, int m){int n =
Time of Update: 2018-12-04
因為無聊,回想上學時的一些數學分析的題目,實現一個sin玩玩。//sin x≈x/1!-x^3/3!+x^5/5!-...(-1)^(n-1) x^(2n-1)/(2n-1)!double mysin(double x){int n = 15;//迭代15次,可以根據需要修改迭代次數或改成參數傳進來double x = 3.1415926*30.0/180;//double s = 0.0;double y = x;int flag = -1;int i = 1;int mul = 1;n *=
Time of Update: 2018-12-04
又周末,無聊又寫寫快排~void QSort(int array[],int p,int q){int begin = p;int end = q;int mid_value =array[begin];if (begin>=end){return;}while (begin<end){while((begin<end)&(array[end]>=mid_value)){end--;}if ((begin<end)){array[begin] =
Time of Update: 2018-12-04
不管是用什麼開發環境,先要熟悉基本的命令列的使用方式。本文參考自官方網站:http://clojure.org/downloads首先確保已經安裝了JDK5以上版本。然後下載Clojure1.4版本的release包: http://repo1.maven.org/maven2/org/clojure/clojure/1.4.0/clojure-1.4.0.zip解壓後,進入clojure-1.4.0目錄,執行下面的操作:java -cp clojure-1.4.0.jar
Time of Update: 2018-12-04
最近在看病毒相關內容,看著大部分知識都知道,不知道用起來行不行。下午正好有人問怎麼注入線程,在公司用《windows核心編程》的注入DLL程式修改了一下,實現了遠程注入DLL調用函數。剛才回來,覺得照著別人的程式改,總還是學不到家,自己花了兩個小時寫了一個。能注入到其他進程中,執行彈出MessageBox框。當然,能注入去彈出這個框,就能幹很多壞事了,看你想幹什麼了。把代碼貼上來,也不改了,反正能看懂。有幾個細節可能會忽略: 1.
Time of Update: 2018-12-04
參考了一下第四版的windows internals書,看到上面寫的object header結構有些不同,查了些資料,發現的確,微軟作了修改,以下是在win7下得到的結構。lkd> dt nt!_object_header +0x000 PointerCount : Int4B +0x004 HandleCount : Int4B +0x004 NextToFree : Ptr32 Void +0x008 Lock
Time of Update: 2018-12-04
IANA(Internet Assigned Numbers Authority)把連接埠號碼分為三類:已知的, 登入的及動態和(或)專用連接埠.0-1023: 由IANA控制, 為已知服務所保留1024-49151: 由IANA列出的登入的連接埠,由普通使用者執行的普通使用者進程或程式可以使用這些連接埠.49152-65535: