原创 fork()、COW和vfork()的區別

一個進程可以通過調用fork()或者vfork()函數來創建一個新進程,調用進程被成爲父進程,產生的新進程叫做子進程。而在調用(以fork()爲例)fork()的時候,會產生兩個返回值,一個是返回給父進程,另一個是返回給子進程。而用戶可以

原创 經典排序算法之簡單選擇排序

前面在介紹冒泡排序的時候,有提到一種簡單排序算法,就是從0開始,每次確定一個位置的元素。假設當前需要確定的位置下標爲 i,則將i處的元素與後面的元素逐個比較,並將每次比較結果中較小的元素存放在i處,從而保證i處一直保存着最小元素。 簡

原创 重溫《C++ Primer》筆記十 當數組作爲函數參數時

提到數組作爲實參,大家可能都會想到,數組是不能複製的,所以作爲參數時不能真正得到實參數組。另外,使用數組名字的時 候,編譯器會自動將其視爲指針,因此它實際獲得的是實參數組中首個元素的地址。沒錯,對於非引用數組參數是這樣,但是對於 引用數組

原创 經典排序算法之希爾排序

前面的直接插入算法,以抓牌爲例,假設手氣比較好,抓牌的順序是從A直到K,那麼在這整個過程中都無需進行任何的插入動作,只需要將每次抓到的牌放在最後即可。假設現在手上已經抓到的牌的順序中逆序比較少,則抓牌的過程中插入操作就越少。因此,對於基本

原创 動態規劃之合唱隊形問題(最長遞增子序列變形)

題目描述 N位同學站成一排,音樂老師要請其中的(N-K)位同學出列,使得剩下的K位同學不交換位置就能排成合唱隊形。 合唱隊形定義:設K位同學從左到右依次編號爲1, 2, …, K,他們的身高分別爲T1, T2, …, TK, 則他們的身

原创 Linux中的用戶切換(root授權)

Linux是一個多用戶系統,但是其中只有一個超級用戶root,root用戶擁有許多的特權,例如可以執行一些系統命令,查看/etc/shadow等一些配置文件。而普通用戶一般只能夠在自己的home裏面進行一些操作,或者可以進入一些其它文件查

原创 Qt GUI程序中主線程與非主線程之間的通信

Qt應用程序exec後就會生成一個線程,這個線程就是主線程,在GUI程序中也稱爲GUI線程。主線程也是唯一允許創建QApplication或QCoreAppliation對象,比並且可以對創建的對象調用exec()的線程,從而進入事件循環

原创 Qt中使用事件過濾器來處理鍵盤焦點

我們都知道,在主事件循環中,使用QApplication::notify(QObject*, QEvent*)來分發事件到下面的子窗口,而子窗口將調用QObject::event(QEvent*)來根據事件類型調用相應的事件處理函數。在處

原创 在QT中使用TCP協議進行文件傳輸(可以單向循環傳輸)

大致步驟如下: 1、服務器端設置監聽套接字,開始監聽; 2、客戶端在連接成功時開始傳送文件,有connected()信號連接send()槽,send()發送文件頭信息,包括文件名、文件總大小和文件名大小等; 3、傳送完文件頭信息時開始傳送

原创 Linux中靜、動態函數庫的優缺點

在編寫程序的時候,我們經常會使用到函數庫。函數庫即爲一個事先已經寫好的函數的集合,其性能都是比較優秀並得到公衆認可的。而我們在需要實現一些功能的時候,如果函數庫裏已經有該功能的實現函數,則我們可以直接使用函數庫中來實現,而無需再重新編寫程

原创 2015華爲機試題

前天下午參加了華爲機試,總體來說答得不好,完整做出來的就只有一題,第三題在leetcode上面看到過,唉,不廢話了,分享出來互相參考一下吧。 一、單詞首字母大寫 輸入:字符串,單詞以空格隔開 輸出:單詞首字符大寫的字符串 求解思路:

原创 Linux默認shell—bash shell的優點

在Linux操作系統中,用戶沒有辦法跟內核直接交流,內核能夠控制硬件的操作,並且向外提供系統調用接口,而在系統調用之上,可以有公用函數庫,可以直接被應用程序調用,同時也可以有我們的shell。 shell的概念很廣泛,它並不是Kerne

原创 動態規劃之最長不下降子序列

動態規劃的思想就是需要在求得最優解的過程中保存中間結果。在求最長不下降子序列的過程中,我們需要保存每個子序列,然後繼續往後判斷時將當前元素添加到小於該元素並且最長的子序列當中。譬如有序列2、1、3,首先有一個序列2;然後判斷1的時候,前面

原创 經典排序算法之快速排序

快速排序的基本思想是,從帶排序的序列中選取一個關鍵字作爲基數,然後經過一輪排序,將比基數大的關鍵字放置在左側,將比基數小的關鍵字放置在右側。然後再兩側的中間便是此基數的位置,然後再將此基數的兩邊繼續進行快速排序。 從上面可以得知,每一趟

原创 Maxinum Subarray

題目描述:Find the contiguous subarray within an array (containing at least one number) which has the largest sum. 輸入:the a