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

          記一個自己項目上線的全過程

          共 3718字,需瀏覽 8分鐘

           ·

          2021-08-19 23:56

          以下文章來源方志朋的博客,回復(fù)”666“獲面試寶典

          個人終于第一次完成了一個 Java web 項目從策劃到最終上線的全過程,雖然項目十分簡單,但全流程跑通的感覺還是倍爽的,之后再做項目則只是各個環(huán)節(jié)上的細化了。

          現(xiàn)在我將我的“第一次”分享給大家

          項目名稱:最美80周年,共同記錄

          開發(fā)文檔:https://www.showdoc.cc/rucday?page_id=15376272

          源碼地址:https://github.com/sunym1993/dataU-RUCDay.git

          項目簡介:自己做著玩的一個項目,為某校80周年校慶準備的,頁面模仿微信聊天界面,用戶可在上面說話。

          一、準備階段

          服務(wù)器:阿里云服務(wù)器ECS(2核4G ¥825/年)

          買了一年的阿里云服務(wù)器,個人感覺還是很值的,內(nèi)部裝好了空的CentOS 6.9 64位 linux系統(tǒng)。首先第一步就是安裝java環(huán)境,以便之后我在上面跑的程序能夠運行起來??偨Y(jié)起來我需要jdk,mysql,redis。安裝linux系統(tǒng)環(huán)境每次都要查找各種教程,索性總結(jié)成了一篇清單文章給自己看:linux的java環(huán)境搭建清單

          當然后續(xù),還在阿里云買了域名,域名需要備案才能用的事,留在后面吐槽。

          文檔管理:showdoc文檔,poccessOn流程圖

          showdoc在線文檔清晰明了,很適合個人或者小型團隊用來共享開發(fā)文檔。配合poccessOn流程圖軟件(我買了專業(yè)版 ¥115/年),已經(jīng)可以很好完成開發(fā)文檔方面的工作了。當然工具的選擇只是個人喜好問題。

          代碼管理:github

          開發(fā)工具:idea

          應(yīng)該是最智能的編輯器了,但我還是更佩服用notepad或者txt寫代碼的人。

          開發(fā)環(huán)境:jdk1.8,mysql,redis,springboot

          現(xiàn)在是springboot的時代咯,打成一個jar包直接就能跑web項目,也可以跑微服務(wù),十分便于管理。


          二、瘋狂打碼階段

          開發(fā)過程總結(jié)起來可以說很簡單,1、寫好開發(fā)文檔;2、建好數(shù)據(jù)庫;3、寫好代碼并打成jar包描述起來真的特別簡單,而且基本都是這樣的流程。

          困難之處就在于,開發(fā)文檔寫得糟糕,數(shù)據(jù)庫設(shè)計得糟糕,代碼總是出一堆bug。于是可能回過頭再改開發(fā)文檔,改數(shù)據(jù)庫。于是再次遇到開發(fā)文檔改得糟糕,數(shù)據(jù)庫改得糟糕,如此往復(fù)。最終的結(jié)論就是代碼越來越難以維護。所以如果不是在最初設(shè)計的時候就能預(yù)料到之后的各種坑,回過頭改則會越改越糟,除非推倒重來。

          1.寫開發(fā)文檔

          由于自身比較追求代碼的質(zhì)量,實現(xiàn)所謂的高內(nèi)聚、低耦合,所以在意識上還是很明白設(shè)計階段的重要性的,雖然后面看來一開始的設(shè)計簡直是糟糕透頂。

          我給自己的原則就是文檔寫完之前一行代碼都不要寫,文檔寫好之后代碼自然就出來。雖然花了近一周時間在寫文檔階段(拋去上班時間其實就兩天),但仍然不夠,代碼寫到后面已經(jīng)完全拋棄文檔了。我后來總結(jié)自己代碼時可以明顯感覺到,文檔中設(shè)計好的部分代碼還是很清晰整潔的,但其余部分就有點混亂不堪的意思了。
          尤其是對cookie和session的忽略導(dǎo)致一些問題直到上線也沒能很好地解決,只能采用臨時的,不可拓展的垃圾代碼頂替,看得我自己都想吐。

          2.建數(shù)據(jù)庫

          其實如果開發(fā)文檔設(shè)計好,數(shù)據(jù)庫自然也不用再考慮。可是我寫開發(fā)文檔懶了,只考慮了表的字段,沒有涉及到具體類型、索引等信息。這導(dǎo)致了我之后寫代碼的時候修改了幾個表字段的數(shù)據(jù)類型。雖然造成的改動量不大,但修改底層往往是很心累的。我們都希望封好了一層之后就不在打開這個封條,站在新一層的高度考慮問題,顯然這次的實踐沒有處理好。

          3.寫代碼

          寫代碼的過程真心可以總結(jié)為,從條理清晰到不管三七二十一。

          初步搭建框架的時候思路還是很清晰的,代碼寫的也比較干凈,因為畢竟之前練習(xí)時搭建過很多次。web層、業(yè)務(wù)層、持久層,再封裝一層redis,整個過程一氣呵成。

          但到后面遇到實際業(yè)務(wù)時就慌亂了。首先,我遇到了以前沒用過的redis數(shù)據(jù)結(jié)構(gòu)list,我把用戶的消息,群內(nèi)的消息都存到了redis的list里,如何索引這個list里的數(shù)據(jù)成了困擾我的地方,雖然最后都通過記錄其索引值解決,但感覺并不是長久之計。之后,session中存哪些信息又成為了一大亂點,最后發(fā)現(xiàn)很多地方都要用到,不得不不斷往里面存數(shù)據(jù)。有時執(zhí)行某個方法時會忘記同步更新session中的數(shù)據(jù)。導(dǎo)致了很多bug。

          還有數(shù)據(jù)的同步問題,數(shù)據(jù)庫,redis,session中的數(shù)據(jù)如何保持同步,我目前只在邏輯上去保證,只能祈禱系統(tǒng)不出問題。消息的實時更新,我用了ajax長回調(diào)機制,據(jù)說是效果最好也最節(jié)約開銷的方式。頁面啊!頁面真是救命了,對于一個后端開發(fā)人員,我對頁面的美觀簡直毫無辦法,只能找網(wǎng)上的模板,還好找到了一個仿微信頁面的前端模板,拯救了我

          這部分確實比較亂,沒經(jīng)驗,趕著項目上線很多問題都沒能很好解決,日后將一一總結(jié)。

          三、上線前

          上線前遇到的一些問題讓我一度想要放棄,有些跟代碼無關(guān),給大家講講

          1、阿里云有安全組策略的

          之前不知到,數(shù)據(jù)庫、redis什么都配置好了,也允許外網(wǎng)訪問,可是就是一直訪問不了。一直找配置中的錯誤,不斷重新安裝,一度想要放棄。結(jié)果后來發(fā)現(xiàn)問題很簡單,阿里云有自己的安全組策略,你必須配置以允許外放訪問這個云的哪些端口才行,不配置默認就是拒絕訪問。找到問題根源時我笑哭了。。。

          2、大天朝的域名是需要備案的

          直到最后我才把項目端口改成80,也用了自己的域名,結(jié)果發(fā)現(xiàn)無法訪問,跳出來一個“友好頁面”。后來知道,在中國域名是需要備案的,于是走阿里云備案流程,發(fā)現(xiàn)需要25天(北京),還要郵寄幕布讓你來拍照什么的,上線時間緊迫,一度要放棄的時候,想到了“某寶”,于是。。

          3、微信需要域名加標準端口才能直接跳轉(zhuǎn)

          如果你用微信訪問一個 http://185.10.10.195 這樣的地址,它會先跳出

          如果你用微信訪問一個 http://www.datauuu.com:7001 這樣的地址,它會先跳出

          也就是說,只有域名配web標準80端口,微信才能直接打開自己的瀏覽器做跳轉(zhuǎn)。這個也是我購買域名以及想到要備案的原因。哎真是經(jīng)驗不足啊,不然上線前不必為這些事操心


          四、上線后


          沒有日志系統(tǒng),沒有監(jiān)控系統(tǒng),沒有管理系統(tǒng)。只有一個自己做的超簡單的管理頁面,只能初始化數(shù)據(jù)庫數(shù)據(jù),同步數(shù)據(jù)庫和redis,所有查詢都是直接用sqlyog看數(shù)據(jù)庫。

          現(xiàn)在明白為什么一個項目要如此重視日志系統(tǒng)和監(jiān)控系統(tǒng)了,真是太有用了。我這個項目好在比較簡單,最重要的是我只是玩一玩,出問題那就出了也不用負責(zé)人。要是一個正規(guī)的系統(tǒng),我現(xiàn)在的狀態(tài)只能用聽天由命來形容了。

          總之在做一個項目之前,以下事情還是比較重要的。

          一是各種“常識”,比如阿里云的一些事,還有域名備案這種事,不過自己經(jīng)歷過一遍就都明白了,這些坑也是必須自己踩過一遍才行的,不難,但很討厭。
          二是架構(gòu)設(shè)計,真的非常非常重要!就不說三遍了。你代碼中遇到的幾乎大部分的坑,都源于設(shè)計階段的不合理,也都是能通過重視設(shè)計來解決的。而且設(shè)計階段可以弱化其實現(xiàn)過程,把精力用在模塊與模塊,接口與接口的交互之間,站在一個高度上看問題,就不會被細節(jié)影響了大方向。
          三是多學(xué)知識,這個我便沒有做好,很多功能都是想用我現(xiàn)有的知識去解決。其實優(yōu)秀的解決方案有很多種,不妨多多參考別人優(yōu)秀的設(shè)計,切記不能為了暫時解決問題用不合適的方式。
          四是要做日志系統(tǒng)和管理系統(tǒng),這在項目上線后是很重要的,即使是練習(xí)項目,也能通過它們發(fā)現(xiàn)項目的更多問題。雖然不會影響項目的使用效果,有些人會覺得多余,但這其實是必要的。
          總的來說,我發(fā)現(xiàn)我用在實際寫代碼上的時間并不多,大多都在設(shè)計、修改代碼、還有搞阿里云啊這些瑣事上,大家一定要重視這些環(huán)節(jié),碼代碼只是其中一小部分而已。一個優(yōu)秀的設(shè)計會讓你的代碼寫起來輕松高效,出錯的概率也小很多。

          下個項目醞釀中。。。嘿嘿

          鏈接:cnblogs.com/flashsun/p/7651742.html

          如果看到這里,說明你喜歡這篇文章,請 轉(zhuǎn)發(fā)、點贊。同時 標星(置頂)本公眾號可以第一時間接受到博文推送。

          —————END—————

          推薦閱讀:

          推薦7個牛哄哄 Spring Cloud 實戰(zhàn)項目
          基于 SpringBoot + Vue 框架開發(fā)的網(wǎng)頁版聊天室項目
          基于 SpringBoot + Vue 實現(xiàn)的可視化拖拽編輯的大屏項目
          Github上10個超好看 可視化面板,后臺管理頁面有著落了
          這可能是史上功能最全的Java權(quán)限認證框架!

          最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關(guān)注公眾號并回復(fù) java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
          明天見(??ω??)??
          瀏覽 25
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲高清超级无码在线视频观看 | 青青草原夫妇在线观看视频网站 | 大香蕉日韩在线 | 欧美操日本| 任你躁精品一区二区三区介绍 |