原创 grep 和正則表達式續(六)
我們今天繼續來學習下 grep 和正則表達式。 1、匹配開頭和結尾字符 格式:grep { ^string | string $ } filename 示例:grep ^[a
原创 KMP 算法的應用(二十七)
我們在上節博客中講到了 KMP 算法的具體實現,那麼我們本節就來看看 KMP 算法的應用。問題:如何在目標字符串中查找是否存在指定的子串? 我們來看看字符串類中的新功能,如下圖所示 1、子串查找(K
原创 KMP子串查找算法(二十六)
我們在之前學習了字符串類,那麼查找字符串類的需求就隨之而來。如何在目標字符串 S 中,查找是否存在子串 P? 我們大家最先能想到的肯定是樸素解法,何謂樸素解法呢?就是一個一個進行對比,如果比對不成功,便向後移一
原创 shell 之 數學計算 &引用(三)
今天我們來看看 shell 中的數學計算和引用。在 shell 中的計算方法有三種:1、expr;2、();3、let。下來我們來仔細的看看這三種數學計算: 1、第一種:expr 格式:e
原创 棧(二十二)
今天我們來學習下棧。那麼什麼是棧呢?棧是一種特殊的線性表,它僅能在線性表的一段進行操作。棧頂(Top)是允許操作的一端,棧底(Bottom)是不允許操作的一端。棧的特性是後進先出(last in first out),另外一
原创 雙向循環鏈表(二十一)
我們在上節博客中介紹了 Linux 中的內核鏈表,下來我們就用 Linux 內核鏈表來實現 DTLib 中的雙向循環鏈表。它繼承自 DualLinkList,它的繼承關係如下圖所示 下來我們來講講它的設計思路:
原创 Linux 內核鏈表剖析(二十)
上節博客中,我們講到了 Linux 中的宏定義 offsetof 與 container_of 宏。那麼本節我們的課程目標就是一直 Linux 內核鏈表,使其適用於非 GNU 編譯器,分析 Linux 內核中鏈表的基本實現。
原创 shell簡介基礎(一)
我們在嵌入式的開發中,難免會要用到腳本。常用的也就是 makefile 和 shell 腳本了,之前我們學習了 makefile 相關的知識,接下來我們也將要學習 shell 相關的知識,以便在以後的嵌入式開發中能更快、更高
原创 shell 學習
我們在嵌入式的開發中,難免會要用到腳本。常用的也就是 makefile 和 shell 腳本了,之前我們學習了 makefile 相關的知識,接下來我們也將要學習 shell 相關的知識,以便在以後的嵌入式開發中能更快、更高
原创 主引導程序的擴展(四)
我們在前面講解了主引導程序的基礎知識,今天我們就來講講主引導程序的擴展。 不過主引導程序有個限制,那便是主引導程序的代碼量不能超過 512 字節!那麼我們如何來突破這個限制呢? 我們現在的基本思路是在主引導程序
原创 C之指針與數組組合(二十六)
我們在前面講到數組的本質是一段連續的內存空間,那麼它的大小爲 sizeof(array_type) * array_size,同時數組名可看做指向數組第一個元素的常量指針。那麼問題來了,數組 a + 1 的意義是什麼呢?結果
原创 C之main函數和命令行參數(三十)
我們知道在 C 語言中,程序是從 main 函數開始運行的,我們稱其爲主函數。我們來看看下面幾種 main 函數定義正確嗎? 那麼 main 函數的原型到底是什麼呢?我們來看看編譯器怎麼說,我們分別編譯下四種
原创 C之指針閱讀技巧(三十三)
在 C 語言中,指針是精華所在了,那麼我們總是覺得指針是最難理解的。它也是筆試面試中必問的知識點之一,今天我們就來看看那些複雜難懂的指針是怎麼閱讀的。 在閱讀指針相關的函數中,我們有個左右法則(這是唐長老總結的
原创 C之編譯和鏈接(十八)
我們平時所做的編譯工作其實是由編譯器來完成的,那麼編譯器都是由哪幾部分構成的呢?包括四大部分:預處理器、編譯器、彙編器以及鏈接器組成。我們來看看一個由 file.c 文件是怎樣得到 file.o 文件的,如下
原创 C之數組指針和指針數組(二十九)
我們今天來看下傳說中的指針數組和數組指針。在 C 語言中,數組都有自己特定的類型。那麼數組的類型是怎樣的呢?它是由元素類型和數組大小共同決定的。比如 int array[5] 的類型就是 int[5]。 在 C