<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>

          如何寫好一篇技術文章?

          共 4359字,需瀏覽 9分鐘

           ·

          2021-07-07 21:35

          低并發(fā)編程
          戰(zhàn)略上藐視技術,戰(zhàn)術上重視技術

          技術文章有很多種,我們本文縮小一點范圍,探討的是,如何寫好一篇講原理的技術文章

          首先,我要直言不諱地說出我寫這篇文章的目的:

          1. 梳理:回顧一下我之前的技術文章,給自己做個梳理,順便給他們帶帶閱讀量。
          2. 快照:寫下我當前對寫好一篇技術文章的理解,看看多年后有沒有提升。
          3. 分享:將自己的寫作感悟分享給讀者,讓讀者也能知道如何寫好一篇技術文章,因為讀者大部分也是從事技術的。
          4. 引流:知乎中有類似的問題,我準備寫完之后直接去知乎回答,一方面提升一下知乎的影響力,另一方面也為自己的公眾號吸引一波粉絲。
          5. 人設:通過本篇文章,樹立一個會寫技術的專業(yè)形象,提升自己在讀者心目中的形象。

          你看,把一個事情說明白,其實很簡單,只需要把自己的真實想法,如實地用人話的方式寫出來,就可以了,甚至不需要動腦。


          說人話





          而一篇好的技術文章,最核心的目標就是,把這個技術點講明白,讓讀者聽懂

          所以這就說明了,寫技術文章的核心要素,就是說人話。

          要比不說人話的文章,你比不過源碼注釋和官方文檔。

          等等。

          你覺得現(xiàn)在的官方文檔真的是不說人話么?你錯了,現(xiàn)在的官方文檔一個比一個友好,圖文并茂,就怕你看不懂。

          這是 kafka 的官方文檔,不但圖文并茂,還有視頻講解,完全可以無腦按照它給出的步驟去操作。

          所以,寫讓人看得懂的人話,應該是大家的共識了,我們就接著往下推理。


          內功





          要想把一篇文章寫得說人話,該怎么辦呢?

          首先,你得真的懂,才能用人話的方式講出來。

          所以,大量的學習并且消化這個技術點,甚至把這個技術點所在的外延知識和內涵知識都搞懂,你才能說對這個知識點是真的懂了。

          如果你的技術功底不夠,請不要先把目標定在如何寫好一篇技術文章,并且不遺余力地去探索寫文章的技巧性。

          你的技術水平,永遠是決定你寫文章的上限,就像內功一樣

          而寫文章的形式技巧,就像招式一樣。

          沒有內功,招式再多也無濟于事,有了內功再配合招式,就能天下第一。

          而且,修煉自己的內功,永遠不會浪費時間,即使這時你一篇文章都不寫,也能收獲知識不是么。


          招式





          當然,有了內功后,招式就變得重要起來了。

          剛剛說了,有了內功再配合招式,就能天下第一。接下來我們就展開講招式。

          1. 層次性

          我們來看一段 springboot 的源碼。

           public ConfigurableApplicationContext run(String... args) {
              ...
              prepareEnvironment(listeners, applicationArguments);
              configureIgnoreBeanInfo(environment);
              printBanner(environment);
              createApplicationContext();
              prepareContext(context, environment, ...);
              refreshContext(context);
              afterRefresh(context, applicationArguments);
              callRunners(context, applicationArguments);
              ...
          }

          我做了些簡化,不過不重要,不知道你看完之后是什么感受。

          如果沒啥感覺,那我再放出一段代碼,你看看,只是在上面的基礎上加了點而已。

           public ConfigurableApplicationContext run(String... args) {
              ...
              prepareEnvironment(listeners, applicationArguments);
              configureIgnoreBeanInfo(environment);
              printBanner(environment);
              Map<String, String> map = new HashMap<>();
              if (env == null) {
                  for(int i = 0; i < size; i++) {
                      map.put(key + i, waooo);
                  }
              }

              createApplicationContext();
              prepareContext(context, environment, ...);
              refreshContext(context);
              afterRefresh(context, applicationArguments);
              callRunners(context, applicationArguments);
              ...
          }

          這樣一看,上一個代碼的美感就體現(xiàn)出來了吧?

          沒錯,好多人寫文章就會犯下面這段代碼的錯誤,就是講述的內容在不同層級上反復橫跳,顯得十分混亂。

          比如,你想用一篇文章講網(wǎng)絡,就想解決一個疑惑,就是一個網(wǎng)絡包是怎么一步步從一個節(jié)點,發(fā)送到另一個節(jié)點的。

          那么你就一定要把握主干,將集線器、交換機、路由器中最核心的功能講清楚,就好。

          此時,將一大堆路由算法展開講解,或者將 NAT 這種基于現(xiàn)有網(wǎng)絡骨架的魔改技術拿出來喧賓奪主,我認為都是不合適的,除非你是想寫一本書。

          這就是寫文章招式的第一個要領,就是層次性

          2. 連貫性

          接下來講第二個要領,連貫性。

          寫文章要前后連貫,不要有邏輯斷層,而且最好是遞進關系。

          通過前面你寫的東西,一定要非常順暢地推出后面你要講的東西。

          當然,這里還要和剛剛說的層次性做好取舍。

          還是舉剛剛網(wǎng)絡的例子,比如你講到路由器,講到路由表。如果你展開講路由算法,則失去了層次性。如果你不講路由表是怎么生成的,直接跳過去了,又失去了連續(xù)性,怎么辦呢?

          這里我的做法是,優(yōu)先保層次性,但與此同時和讀者明確說明一下,我們先假設,路由表通過一些路由算法,或者手工配置的方式,變成了這個樣子,然后巴拉巴拉,再說后面的,就續(xù)接上了。

          這樣,就既沒有失去層次性,又保證了連續(xù)性,而且還有個好處就是讓讀者抓大放小,先不要管具體的細節(jié),這也是學習計算機知識的一種很好的方式。

          3. 抓本質

          這點就見仁見智了,有的人喜歡站在宏觀層面去解釋,有的人喜歡站在微觀層面去解釋,我覺得都無可厚非。

          但不可取的是,站在宏觀層面,去寫一篇講原理、追細節(jié)的微觀文章。或者站在微觀層面,去寫一些宏觀層面的抽象概念講解。

          舉幾個例子,你想講 IO 模型的本質和細節(jié),你用阻塞非阻塞同步異步這些名詞,用各種燒水壺、取快遞的例子,永遠也講不明白它的本質在哪里。

          而這個問題,必須深入到具體函數(shù)的 API,內核態(tài)與用戶態(tài)分別完成了什么事情,阻塞在微觀層面的本質是什么,只有這樣才能講清楚這個問題,所以不要回避它。

          除非你寫文章的目標受眾,或者你的寫作初衷,就是讓初學者頭腦里先有個形象的認識,并不想深入到細節(jié)里。


          總結


          今天就從幾個大方面說了下如何寫好技術文章。

          首先,保持說人話的寫作風格,你就成功了一半。這個其實很容易,因為讓我說特別嚴謹?shù)哪欠N官方話,我也說不出來,我相信大多數(shù)人自己寫出的東西,都有說人話的特征。

          其次,修煉自己的內功,這個就慢慢來吧,先嘗試不懼怕那些計算機名詞開始,遇到總是想不明白的問題,勇敢地打開源碼,或者用二進制方式去看某些結構的內存和磁盤布局。所有的原理,歸根結底落實到最底層無非就是數(shù)據(jù)結構與算法,而這些資料人人都能獲得,你還怕什么呢?

          最后,才到了真正寫文章的時候,那就是招式

          首先保持自己文章的層次性,不要上下亂竄,寫作的時候時時刻刻提醒自己主干脈絡是什么,不要寫著寫著自 high 起來,把一個細節(jié)無限展開使得思維棧溢出了。

          然后,保證思維和邏輯的連貫性,寫的時候始終把自己當做一個剛剛接觸這個原理的小白,看看能不能從前一句話,推斷出你寫的后一句話。如果不能,就細化一下,但如果發(fā)現(xiàn)細化之后影響了層次性,就明確說明下,我們先不管細節(jié),假定 xxx,然后再往下寫。

          最后,寫這種原理文章,要抓本質,不要再浮于表面,飄在空中,當然這個也取決于你的內功,只有內功到位了,才能看到事物的本質。

          你看,都是相輔相成的,最終還是要功夫到家,再配合一些小招式,就可以成大作。

          期待大家的大作!共勉!

          瀏覽 73
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  一区二区三区欧美 | 手机在线免费片片AAA | 91成人国产综合久久精品 | 中文字幕成人av 中文字幕第45页 中文字幕第十二页 | 男女色色视频网站 |