原创 《編程的本質》第五章-關於最大公約數的計算

最大公約數(Greatest Common Divisor, GCD)的計算是很多問題中比較關鍵的一個步驟,所以如何快速的計算最大公約數比較關鍵。本文將《編程的本質》中第五章中最大公約數的問題稍微總結一下。 1. 暴力破解法。只是我們在

原创 Google Test-Primer

引言:爲什麼使用Google測試框架 Google測試框架有助於編寫更好的C++測試。 不論你是工作在Linux,Windows或者是Mac上,如果你寫C++代碼,Google測試框架都可以幫助你。 然後,什麼是好的測試以及Google測

原创 《編程的本質》-第二章

編程的本質第二章看得也有點稀裏糊塗,現在將自己的理解寫出來,只是爲了以後自己在回憶的時候有個學習。 第二章的主要內容將Transformation,中文意思是變換的意思。即現在有個操作F,對於變量x,F(x)就是在x上變換。如果F(x)

原创 王小波全集第二卷-《我的精神家園》有感

在多看閱讀器上看到了《碼農》這本雜誌,覺得內容還不錯。在某一期(記不清)上有對酷殼博主陳皓的採訪,當時博主推薦了王小波的《我的精神家園》,不知道是指那一篇還是那一卷。寒假期間在圖書館中借到了這本書,讀一讀。 看到其中一篇文章“生活與小說

原创 Lisp tutorial

  下面是參考了Standford大學的CS157課的一個PPT。作爲一個非常基本的LISP入門,給大家一個感性的認識。一般情況下我們可以安裝CLISP,Common Lisp,這個是標準。在Windows下和Linux下都有相應的版本。

原创 Scheme和Common Lisp中對函數作爲變量和返回值的處理方法差異

  研究下Scheme和Lisp在lamba上的區別。今天晚上特別鬱悶。本來想體會一下Lisp中函數作爲第一等變量等柑橘,想不到卻不知道載了多少個跟頭。 Scheme   Scheme作爲Lisp的一個方言,由MIT研發,並且GPL的協

原创 Google Test框架中的Makefile

本次我們來看看Google test框架中的Makefile是什麼樣子。這樣: 學習一些關於Makefile的基本知識 學習如何自己編譯使用Google Test的程序 # A sample Mak

原创 C++模板的匹配規則----最特殊

  C++模板技術讓C++也能實現模板元編程,即在編譯期間完成判斷和計算。凡事總有特例,模板是爲了匹配最一般的情況,但是針對特殊情況需要做優化,則需要特殊處理,這稱爲模板的特化。當模板特化後,一個調用可能會符合不同的模板,這樣就需要選擇正

原创 Double checked locking,兩次檢查的鎖

最開始知道這個內容是在和室友聊天的時候發現的,它說國內某互聯網公司中有一道筆試題,需要當場寫出無鎖隊列的代碼。當時對於這個概念還是一知半解,後來他說陳皓博客上有相關的內容,本着好學的精神就去一窺究竟:無鎖隊列的實現 基本思想是利用編譯器

原创 Lisp中的Loop宏

  LOOP提供了一種寫循環迭代的特殊語言。   這可能看起來比較大動干戈----爲了寫循環特地發明一種新的語言。但是如果你想想循環在程序中的用處,這種行爲開始有點兒在理。不論任何程序的大小,他們都會包含好多循環語句。而且,儘管他們不盡相

原创 git基礎知識

Git最初的作者是Linux內核的開發者Linus。之前linux內核維護是使用bitkeeper,但是他們發現有人在反編譯bitkeeper,收回了對開源的特權。所以開源社區需要開發一個屬於自己的版本控制工具,然後Git就誕生了。 Gi

原创 Lisp實現有理數的運算

  編寫一個處理有理數的函數。這個是參考SICP上的一個章節來寫,其主要思想時將問題拆分成獨立的部分,然後利用這些部分構建整個過程。接下來載後面的過程中會增加正負號的判斷,並且自制打印函數,打印有理數。 (defun numer (x)

原创 SharedLibrary(so)的查找路徑

翻譯自:https://www.eyrie.org/~eagle/notes/rpath.html : Shared Library Search Paths 現在將所有的依賴都使用共享庫(Shared Library)的方式來連接是一

原创 LISP中的遞歸和尾遞歸

    首先解釋一下概念:     遞歸:是指在函數的定義中使用函數自身的方法。遞歸一詞還較常用於描述以自相似方法重複事物的過程。      尾遞歸:在計算機科學裏,尾調用是指一個函數裏的最後一個動作是一個函數調用的情形:即這個調用的返回