用線上升級平臺程式碼練手,學習JAVA。飛哥建議我們自己從頭再搭建一套,提高會大。我自己作為一個JAVA出身的人,用了幾天時間學會PHP的經驗來看。最好,先在原來程式碼基礎上改些東西。熟悉了基本語法之後再來重新搭建一套。如果本來就是一頭霧水,再加上全身心投入的時間不夠充裕的話,可能會欲速而不達。
第一步,讓原始碼跑起來。這一步宗鑑已經執行成功了。其實JAVA就學會了五分之四了。因為不管PHP還是JAVA就是一個工具。我一個做JAVA的,做PHP的專案也不比JAVA慢。因為一個小型WEB專案架構就是:WEB容器,一個WEB框架,快取,前端技術,底層資料庫。JAVA還是PHP都只不過是框架的一部分,何況PHP的語法是一個大融合,比較流行的PHP框架也是基於MVC模型的,知識上完全沒有隔閡。
下來的原始碼後臺部分沒有在pom.xml檔案中規定java版本,需要自己手動把版本改成1.7以上,或者我已經修改提交了,重新更新一下即可。現在的java專案比較講究依賴注入,控制反轉。就是比較框架性的。比如這個maven工具,還有spring mvc。要了解他們做了什麼不要先看程式碼,先看配置檔案。檔案才是核心,程式碼就是讓檔案生效的。
在語法上,之前公司也有做PHP的,一直不明白,他們的資料庫表名字為什麼有個公共字首,現在知道這是PHP裡規範要配的。在JAVA裡表名可以隨便命名。在PHP裡時間戳他們會用數字儲存,因為確實在PHP的函式裡處理數字的日期會比較方便。但是在JAVA裡,我們有Calendar,DateFormat這些專門處理日期的。一般會存成date,datetime,timestramp這些格式,以更好的利用mysql對日期的強大支援福利。其中timestramp在對日期的處理效率高,但是一張表僅允許一個timestramp。我在設計資料表的時候一般都會有一個建立時間,datetime格式,插入時將當前時間now()賦值進去,之後不再更新。一個更新時間,timestramp格式,利用資料庫的特性,初始值是當前時間戳,在每次修改會隨當前時間戳更新。這個不是一般的觸發器,不會存在併發和效能問題。程式中更新基本無視這兩個欄位。
第二步,先從管理後臺入手。因為管理後臺有頁面,容易一邊改程式碼一邊理解業務。管理後臺沒有什麼效能要求,架構也是spring mvc經典架構,不需要再新搭建一套。業務瞭解之後,介面部分併發量高,到時候可以大家一起商量新搭建一套,以提高伺服器的利用率,也許還能下線幾臺伺服器。
管理後臺,PHP的同學應該都能看懂。唯一一點就是路由規則的定義:在經典的web框架中,nginx這些反向代理一般只代理到目錄或者域名,剩下的規則會在一個叫web.xml的檔案中找到定義。這個有點類似於thinkphp中的index.php的作用,是一個總入口。對於Spring MVC來說,web.xml裡會定義一個DispatcherServlet來處理這些路由規則。DispatcherServlet是一個JAVA類,具體做了什麼可以看原始碼。或者百度一下SpringMVC的工作原理,裡面全是在說DispatcherServlet這個類。
第三步,管理後臺修改幾個頁面之後,剩下的問題已經不是JAVA的問題了。不管是改介面的架構還是別的,能做成什麼樣子,需要的是工程師的綜合能力,和JAVA無關~~