原创 閒聊Redis分佈式鎖

引言: 目前很多系統都是使用redis作爲分佈式鎖,如果redis是單節點部署,基本上不會出現什麼問題。但如果redis是多節點的集羣部署,那麼使用redis集羣作爲分佈式鎖就會存在一些問題。這兩篇文章進行了詳細的講解。http://zh

原创 如何獲取某個類的所有子類

引言 在我們寫工廠類的時候,可能會根據不同的類型(type)生成不同的對象。但在工廠類初始化的時候,我們需要將某個類型的所有類全部初始化才能達到我們的目的。 舉個例子,我們定義了很多動物(Animal),我們需要一個AnimalF

原创 如何優雅地優化代碼中的的if else和switch

引言         一般來說,隨着我們項目的迭代以及業務的越來越複雜,項目中的分支判斷會原來越多。當項目中涉及到複雜的業務判斷或者分支邏輯時,我們就需要考慮是否需要對項目進行重構了,或者if else和switch case是否能夠滿足

原创 如何動態地將對象託管給Spring進行管理

引言 IoC可以說是spring最核心的部分,是spring家族任意組件的基本。我們可以將Java Bean託管給Spring,Spring通過其IOC功能可以依次解析出Java Bean依賴的其他實例。能夠使我們從複雜繁瑣的對象

原创 PCRE的安裝及使用

Boost太龐大了,使用boost regex後,程序的編譯速度明顯變慢。測試了一下,同樣一個程序,使用boost::regex編譯時需要3秒,而使用pcre不到1秒。因此改用pcre來解決C語言中使用正則表達式的問題。1、主頁地址:ht

原创 __I、 __O 、__IO是什麼意思?

這是ST庫裏面的宏定義,定義如下:#define     __I       volatile const        /*!< defines 'read only' permissions      */ #define     

原创 從Linux程序中執行shell(程序、腳本)並獲得輸出結果

1. 前言  2. 使用臨時文件  3. 使用匿名管道  4. 使用popen  5. 小結 1. 前言Unix 界有一句名言:“一行shell腳本勝過萬行C程序”,雖然這句話有些誇張,但不可否認的是,藉助腳本確實能夠極大的簡化一些編程工

原创 數據庫編程方法

當前各種主流數據庫有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, T

原创 在linux下搭建libcap開發環境:

在linux下搭建libcap開發環境:  操作系統版本kubuntu 10.04  linux,內核版本2.6.32-22-generic  gcc版本:gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5

原创 程序員常訪問的網站

要想成爲優秀的程序猿,不僅要有一定天分,常與大神交流,自己多加練習纔是正確的方法。下面是一些Quora用戶推薦的國外網站,與廣大程序猿或者希望學習編程的朋友們分享: 1)編程練習和競賽類 http://www.codechef.co

原创 C語言中內存動態分配應注意的問題

最近在校給老師做項目,寫一個Linux下上位機的C語言程序,由於上位機內存有限,所以臨時字符串都用malloc進行動態分配,然後再用free對內存進行釋放。剛開始寫的過程中對數據棧沒有過多考慮導致了程序接二連三的出錯。在此將經驗寫下,以防

原创 Linux下網絡爬蟲程序

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="white-space

原创 UBUNTU用戶 無法進入系統

UBUNTU用戶 無法進入系統,輸入密碼登陸後直接退回登陸界面。(部分轉)   2012-12-11 14:07:26|  分類: UBUNTU|舉報|字號 訂閱 不知爲何,帳戶和密碼是正確的,但登陸時出現提示 G

原创 Lftp超時與NOOP

Lftp超時與NOOP 本文來自:說到空閒超時,要明白的一點是,任何FTP客戶端設定的超時時間都必須參考FTP服務器軟件的空閒超時設置,也就是說如果客戶端設置的時間值大於服務器端設置的時間值時,FTP客戶端上設置的值是沒意義的,因爲在

原创 Linux中特殊文件權限

linux中除了常見的讀(r)、寫(w)、執行(x)權限以外,還有3個特殊的權限,分別是setuid、setgid和stick bit 1、setuid、setgid 先看個實例,查看你的/usr/bin/passwd 與/etc/