2018年7月,大三暑假進行時,時間過得飛快,我到這邊實習都已經一個月了。 我在沒工作之前,我老是覺得生產項目的代碼跟我平時自學練的會有很大的區別。 以為生產項目代碼啥的都會規範很多,比如在介面上會做很多安全性的工作(自學練的時候確實學到的類似的案例),代碼設計上會有很多設計模式的應用。 但實際上, ...
2018年7月,大三暑假進行時,時間過得飛快,我到這邊實習都已經一個月了。
我在沒工作之前,我老是覺得生產項目的代碼跟我平時自學練的會有很大的區別。
以為生產項目代碼啥的都會規範很多,比如在介面上會做很多安全性的工作(自學練的時候確實學到的類似的案例),代碼設計上會有很多設計模式的應用。
但實際上,並不像想象中那樣。跟以前平時練的沒有太大的區別,生產項目的代碼也寫不出花,介面的參數也沒啥校驗,甚至發現很多地方都是bad smell。
最大的區別就是代碼量很大,資料庫里躺著百來張密密麻麻的表,代碼上的Controller
/Service
/Dao
的數量足以占滿整個屏幕。
在這個過程中會出現一些之前沒學過的技術棧,比如lombok
/svn
/swagger
等,不過這些都很好學,不是什麼大問題。
最近令我頭疼的是SQL,SQL是真的難寫。我本以為我是寫Java的,但大多數時間都是去寫SQL。
我是很想去理解我所負責的介面對應的底層資料庫表是怎麼設計的,但始終都沒領悟到。
我只知道,我可以在這個表查這個欄位,在那個表查那個欄位,前端要什麼數據,我就把這倆張表給關聯起來,一起查出來就好了。
一個介面出去的數據,底層關聯5、6張表,是很正常的事。
有的其實我也不知道為啥要關聯的,反正看到歷史代碼是這麼寫,我就這麼複製上去就完了。
還是老樣子,不亂改歷史的代碼,只管往裡面增加,除非是真的被測試妹子報出bug了。
對介面的性能也沒有啥要求,寫出來的SQL索引不索引啥的,根本就不需要我操心,介面能出數據,我就是成功的。
有次需求也是令我發麻,既要得到明細的聚合值,又要展示對應明細數據,這可真的難倒我了。
我琢磨了兩天,都沒把SQL給寫出來,後來就直接去問領導了,說這我卡住了,讓他幫幫我。
“前兩天不是有個需求嘛?既要統計每個售貨機貨道補貨的數量,又要將每個貨道的具體商品查詢出來,然後要分頁顯示,我這邊SQL沒寫出來”
他琢磨了會,說幫我看看,然後讓我多訓練些SQL相關的題。
我又回工位繼續琢磨了,訓練SQL相關的能力,我想到的就只有LeetCode了。沒想到我還要在LeetCode刷SQL啊。
過了幾小時,他喊我去他工位,發了一條SQL給我,讓我看行不行,符不符合需求。
我都不用跑sql,這明顯就不行。(原來他也寫不出來)
我對老闆說:”不行哦,這隻有統計信息,還要展示sku的明細呢,我根據你的SQL,在這基礎上我再想想“
最後我嵌套多個子查詢,組合使用concat
和group_concat
完成信息查詢,然後在程式里解析字元串完成數據的組裝。
這能寫出來真不容易,感覺自己Java技術沒啥進展,SQL能力倒是提升了不少。
雖說系統貌似用了SpringCloud,但是沒看到遠程調用的地方,SpringCloud只有在配置文件才能看到他的蹤影,不過我在業餘的時間里學了下。我終於踏進了分散式/微服務領域的大門了。
其他的就沒啥特別的,來來去去都是針對後臺做一些增刪改查,也沒啥機會接觸到高級的技術棧。
上班一個月了,領到工資的感覺是真的爽,行政是支付寶轉賬的,實打實的3500轉在支付寶上。
《底層程式員》我的故事持續連載中...
更多的文章可往:文章的目錄導航