<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重要的一課!

          共 3824字,需瀏覽 8分鐘

           ·

          2021-05-10 19:56

          早上四點多起來,回復了微信小小號上近 100 條消息,很多都回復的蠻仔細!

          累到不累,因為我喜歡和讀者交流的感覺。但也有傷心的,好不容易敲了很多字,發(fā)過去,發(fā)現(xiàn)人已經不在了,麻了麻了。我是能理解的,畢竟關注你了,加了微信,給你發(fā)了信息,等啊等,一直不回復,算怎么回事,耍什么大牌!

          當然了,這也是沒辦法的事,一對多,再加上工作、生活、讀書、寫作、學習,很難做到及時響應,尤其是需要沉浸式工作的時候,手機基本上是靜音的狀態(tài)。

          有問題,盡管來問就行了,盡量不要問在嗎?畢竟二哥是個活人,哈哈。像下面這樣的讀者,我就很喜歡,直接拋出問題,語氣也很舒適。

          有些直接甩了紅包,遇到這種情況我一般第一時間就沖過來了,哈哈哈哈哈哈。

          當然了,我也不是全天候都在看手機,像這個讀者的信息是昨天 22 點發(fā)的,我那時候已經睡下了,但我早上 4 點多起來后就及時回復了。

          溫馨提示一點。大家不要學我起這么早,每個人的作息習慣不一樣,還是要保證足夠的睡眠,畢竟互聯(lián)網打工人很辛苦的。我想表達的是,只要我看到信息,都會一條不落的回復,因為我覺得大家給我發(fā)信息是對我的信任,我必須得做出回應。只不過不一定能及時回復,還希望大家能夠理解。

          留個包袱,如果今年公眾號的增長能突破一個關鍵性的節(jié)點的話,我也打算搞個知識星球,把這些問題都沉淀下,后面說不定還能整理出一本 PDF。

          不說這些了。早上回復的這些信息當中,有一條我覺得蠻想在公眾號里給大家統(tǒng)一說明一下的。

          二哥,你覺得計算機專業(yè)課中哪門課是最重要的?

          對于我們計算機專業(yè)的人來說,我覺得有 6 門課非常非常的重要:

          • C 語言
          • 計算機操作系統(tǒng)
          • 計算機組成原理
          • 計算機網絡
          • 數(shù)據(jù)結構
          • 算法

          不管你以后從事的是 Java 開發(fā)、C++ 開發(fā)、還是 Python 開發(fā),也或者是前端開發(fā),這幾門課能在大學里早點學就早點學,如果時間不夠用或者錯過了,工作后一定要找機會補一補。前提條件是,你對技術有追求,想在這方面有更深的造詣。

          這 6 門課涉及到的知識點還是非常龐大的,沒辦法通過一篇文章全部說清楚,所以這次,我打算重點說說數(shù)據(jù)結構。

          什么是數(shù)據(jù)結構?

          數(shù)據(jù)結構是一種具有一定邏輯關系,在計算機中應用某種存儲結構,并且封裝了相應操作的數(shù)據(jù)元素集合。它包含三方面的內容,邏輯關系、存儲關系及操作。不同種類的數(shù)據(jù)結構適合于不同種類的應用,而部分甚至專門用于特定的作業(yè)任務。例如,計算機網絡依賴于路由表運作,B 樹高度適用于數(shù)據(jù)庫的封裝。

          菜鳥教程上對數(shù)據(jù)結構的定義我覺得還是蠻正式(官方)的,簡單點說,數(shù)據(jù)結構就是把一堆數(shù)據(jù),按照某種格式揉成一坨。

          大家喜歡吃宮保雞丁嗎?

          反正二哥挺喜歡這道菜的。我就以宮保雞丁為例,來講一講數(shù)據(jù)結構吧。維基百科上是這樣定義的。

          宮保雞丁(英語:Kung Pao chicken或Kung-Pao Chicken),又稱宮爆雞丁,呈糊辣荔枝味,源于黔菜、流傳至魯而后成于川菜的一道川味名菜。貴州、山東和四川三地對這道菜的做法不完全一樣,稱呼也有差異。貴州稱為糊辣子雞丁,山東則名為醬爆雞丁,而四川是以宮保雞丁為名的。

          來,抽象下宮保雞丁。

          struct KungPaoChicken {
            雞肉 = []
            花生 = []
            蔥段 = []
            花椒 = []
            辣椒 = []
          }

          這個結構體(struct 是 C 語言中的一個概念)就是一個自定義的數(shù)據(jù)結構,將很多不同的配料融合在了一起。對于計算機的數(shù)據(jù)結構來說,只不過是把這些配料換成了基本數(shù)據(jù)類型。

          拿 Java 來舉例,基本的數(shù)據(jù)類型有 int、char、double 這些,復雜點的有 String(引用數(shù)據(jù)類型),底層是 char 型的數(shù)組,而那些自定義的類型不過是對基本數(shù)據(jù)類型和引用類型的封裝。

          抽象完宮保雞丁再來抽象一下二哥吧。

          class 二哥 {
            int age = 18;
            double 體重 =  65kg;
            
            void eat(宮保雞丁) {
              體重 += 1kg;
            }
          }

          偽代碼不是很嚴謹哈,大家理解這個意思就行了。

          說到底,數(shù)據(jù)結構不過是一種抽象后的封裝。像 Java,它之所以流行的一個很重要的原因,就是它提供了多種多樣的、方便開發(fā)者調用的數(shù)據(jù)結構,比如說對數(shù)組的封裝 ArrayList、對鏈表的封裝 LinkedList、對哈希表的封裝 HashMap、ConcurrentHashMap 等等。C 語言就沒有這些,想用的話,就得自己封裝。但 Java 和 C 語言的基本數(shù)據(jù)類型是一致的,int、float 這些都是相通的。

          對于初學者來說,平常敲代碼都是直接去調用數(shù)據(jù)結構的,是很少去想這些數(shù)據(jù)結構是怎么實現(xiàn)的。

          當一個初學者向高級程序員邁進的時候,就必須得靜下心來,去搞清楚 ArrayList 和 LinkedList 的內部實現(xiàn),搞清楚之后就會明白,之所以它們在增刪改查的時候性能上有差異,就是因為它們的內部使用了不同的數(shù)據(jù)結構所導致的。

          有一說一,我在 2008 年剛學 Java 的那會,真的是不理解,為什么明明有了 ArrayList,Java 還要設計 LinkedList,不都是集合嘛!

          害!

          數(shù)據(jù)結構為什么這么重要?

          我直接放大招吧,甩一段清華大學計算機系教授鄧俊輝老師話吧。

          數(shù)據(jù)結構是計算機科學的關鍵內容,也是構建高效算法的必要基礎。其中涉及的知識,在相關專業(yè)的課程系統(tǒng)中始終處于核心位置。以 ACM/IEEE Computing Curricula(計算機教學大綱)為例,其中對于幾個相關專業(yè)(計算機科學、計算機工程、信息系統(tǒng)、信息技術、軟件工程)的共同要求中,數(shù)據(jù)結構與算法作為程序設計概念與技能的核心,緊隨在數(shù)學之后,排在第二位。

          數(shù)據(jù)結構說復雜也不復雜,說簡單也不簡單,這不重要,重要的是必須得學!

          有讀者可能會問,“我數(shù)學學的不好,學數(shù)據(jù)結構能學會嗎?”

          說句實在話,數(shù)據(jù)結構和數(shù)學之間沒有必然的關系。我上小學的時候,參加過洛陽市的奧林匹克數(shù)學競賽,還得了三等獎;初中的時候,數(shù)學成也一直保持得不錯,但上了高中之后,由于貪玩,數(shù)學成績一落千丈,成了瘸腿課。大學的時候對離散數(shù)學、微積分這些更是頭大,壓根沒怎么學。

          但這并不妨礙我學習數(shù)據(jù)結構,真的。數(shù)據(jù)結構中,樹算是最難的一塊了,像數(shù)組、鏈表、棧、哈希表這些相對來說,計算機專業(yè)的,只要稍微下點功夫,都是能掌握的。

          說了這么多,數(shù)據(jù)結構到底該怎么學呢?

          如果你有 C/C++ 的底子,我給推薦兩本書。

          第一本,《趣學數(shù)據(jù)結構》

          說到這,多說一嘴。2018 年的時候,人民郵電出版社的張老師邀請我出一本 Java 方面的書,我當時想命名為《趣學 Java》。張老師說,剛好之前和陳小玉老師合作出了一本《趣學算法》的書,要不發(fā)一本你看看吧。

          你別說,這本書還挺適合拿來作為算法的入門書呢。后來,陳小玉老師又出了一本新書,叫《趣學數(shù)據(jù)結構》,我看了,雖然離“趣”字有點距離,但很適合作為一門數(shù)據(jù)結構方面的入門書。

          第二本,《數(shù)據(jù)結構(C++語言版)》

          對,清華大學鄧俊輝教授編著的,豆瓣評分也蠻高的。這本書還配套了視頻課程,是免費的,可以在學堂在線上看,我之前也有推薦過。

          https://www.xuetangx.com/search?query=數(shù)據(jù)結構

          課程質量木得說,算是國家級精品課了。大家有時間的話,一定要刷一遍。

          如果你有 Java 的底子,我也給推薦兩本書。

          第一本,《數(shù)據(jù)結構與算法分析(Java 語言描述)》

          雖然翻譯得不怎么樣,但內容很全面,適合拿來作為一本數(shù)據(jù)結構的入門書。

          第二本,《算法(第 4 版)》

          雖然名為算法,但大家都知道,算法是基于數(shù)據(jù)結構的,數(shù)組、隊列、棧、堆、二叉樹、哈希表等等,這些數(shù)據(jù)結構都講到了。

          如果時間比較緊的話,C/C++ 程序員只看《數(shù)據(jù)結構(C++語言版)》就行了,Java 程序員只看《算法(第 4 版)》就行了。如果一遍沒看懂的話,再看一遍就好了。

          有網友“三色院堇子的老公”說得好。

          數(shù)據(jù)結構就是你已經寫了幾百萬行,然后數(shù)據(jù)結構減到 90 萬行,性能還翻倍,嗯,終于學會了!??

          在我看來,學習分為兩種,一種是先學理論,后走實戰(zhàn)檢驗,一種是先實戰(zhàn)采坑,后補理論。

          有些人,如果沒有理論基礎,完全不知道怎么下手寫代碼。

          而有些人呢,就是喜歡先敲代碼,因為一上來看書很容易懵逼,只有經過一定量的代碼實戰(zhàn)后,再去讀書就會有一種豁然開朗的感覺。

          兩種學習方法我覺得都沒問題,重要的是看你適合哪一種。但不管選哪一種,記得學數(shù)據(jù)結構~~~~

          我是二哥,下期見。

          瀏覽 65
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐草 | 日本精品18禁 | 国产亚洲精品久久777777 | 先锋影音一区二区三区 | 成人片无码免费 |