前言
技術學習是一個總結、糾錯、觸類旁通的過程,而不是單純重複練習的過程,如果你問一個做過5年以上Java的老碼農,他們很多人都會有很強的“搬磚感”,這種“搬磚感”其實就是對Java項目的觸類旁通、看出套路來了,比如:
(1)絕大部分Java應用系統,絕大部分功能歸根到底都是資料庫的“CRUD增删改查”,中間加了一些資料的校驗、轉換和邏輯運算,不同之處就是有的功能流程拐彎多一些、性能要求高一些、界面互動炫酷一些等。
(2)絕大部分應用系統,核心架構其實都是展示層、業務處理層和資料通路層。所謂的不同就是增加了一系列看似高大上的非功能性元件(緩存、分布式、并發、安全驗證等)。
那麼作為一個Java新手,如何才能快速的看透一個Java項目呢?
(1)DEBUG,對于程式員來講,DEBUG是一個最核心的技能,挑選一個典型流程,從展示層、業務處理層、資料通路層一層一層的DEBUG下來,就可以搞清楚界面上發起的請求是如何進行業務處理,如何完成資料庫操作并如何傳回結果給前端界面的。
(2)讀懂配置檔案,其實作在Java項目的配置檔案相比以前已經比較少了,配置檔案裡面往往配置了一些請求映射、通路路徑、參數設定等重要資訊,熟悉這些資訊會對自己掌握系統運作方式有很大幫助。
(3)看文檔,找出系統裡面用到的開源架構/元件,把他們的官方文檔通讀一遍,搞清楚這些架構/元件是如何搭建、配置和運作的。如果能把官方文檔搞熟搞懂,其實絕大部分遇到的BUG根本不用搜尋引擎,都在文檔裡面有答案了。
(4)實際動手做一個功能,不要抄代碼,而是仿照其他功能做一個類似的功能(搬磚),做完一個功能其實你就能大概了解系統的技術工作原理了。
(5)如果身邊有資深的老程式員,能讓他花個半小時一個小時的跟你整體講一下,效果更佳顯著。
一個線上考試系統,練手項目用他很香
項目介紹
學之思線上考試系統是一款 java + vue 的前後端分離的考試系統。主要優點是開發、部署簡單快捷、界面設計友好、代碼結構清晰。目前支援web端和微信小程式,能覆寫到pc機和手機等裝置。
整理了100+個Java項目視訊+源碼+筆記開源版使用須知
(1)僅用個人學習,商用請購買授權
(2)禁止将本項目的代碼和資源進行任何形式的出售,産生的一切任何後果責任由侵權者自負
學生系統功能
(1)登入、注冊:注冊時要選年級,過濾不同年級的試卷, 賬号為student/123456
(2)首頁:任務中心、固定試卷、時段試卷、可以能做的一部分試卷
(3)試卷中心:包含了所有能做的試卷,按學科來過濾和分頁
(4)考試記錄:所有的試卷考試記錄在此處分頁,可以檢視試卷結果、用時、得分、自行批改等
(5)錯題本:所有做錯的題目,可以看到做題的結果、分數、難度、解析、正确答案等
(6)個人中心:個人日志記錄
(7)消息:消息通知
(8)試卷答題和試卷檢視:展示出題目的基本資訊和需要填寫的内容
管理系統功能
(1)登入:賬号為 admin/123456
(2)首頁:包含了試卷、題目、做卷數、做題數、使用者活躍度的統計功能,活躍度和做題數是按月統計
(3)使用者管理:對不同角色 學生、教師、管理者 的增删改查管理功能
(4)卷題管理:
1)試卷清單:試卷的增删改查,新增包含選擇學科、試卷類型、試卷名稱、考試時間,試卷内容包含添加大标題,然後添加題目到此試卷中,
組成一套完整的試卷
2)題目清單:題目的增删改查,目前題型包含單選題、多選題、判斷題、填空題、簡單題,支援圖檔、公式等。
(5)教育管理:對不同年級的學科進行增删改查
(6)消息中心:可以對多個使用者進行消息發送
(7)日志中心:使用者的基本操作進行日志記錄,了解使用者使用過情況
軟體架構圖
學生考試系統
背景管理系統
SpringBoot庫存管理系統,拿來學習真香
Finer進銷存是一款面向中小企業的供銷鍊管理系統,基于J2EE快速開發平台Jeecg-Boot開發,采用前後端分離架構:SpringBoot2.x,Ant Design&Vue,Mybatis-plus,Shiro,JWT。項目基于十多年的中小企業管理經驗,由ERP領域的資深專家設計;産品分為基礎版、标準版、企業版三個版本,可适應不同的管控流程;對于靈活多樣的個性化的管理需求,在Jeecg-Boot支撐下,利用其強大的代碼生成器,無需寫任何代碼就可以快速實作大多功能,也可手工加入複雜的業務邏輯!
(1)基礎版:管結果,直接出入庫,生成應收應付,進行收付款并核銷
(2)标準版:管過程,業務從合同、申請、訂單開始
(3)企業版:管協同,全過程跟蹤管理,內建協同辦公
(4)本釋出為基礎版
功能子產品
開發環境
(1)語言:Java 8
(2)IDE(JAVA):IDEA / Eclipse,安裝lombok插件
(3)IDE(前端):IDEA / WebStorm
(4)依賴管理:Maven
(5)資料庫:MySQL5.7+ & Oracle 11g & SqlServer2017
(6)緩存:Redis
項目下載下傳和運作
(1)拉取項目代碼
it clone https://gitee.com/FINERS/psi.git
cd psi/ant-design-jeecg-vue
(2)安裝node.js
(3)切換到ant-design-jeecg-vue檔案夾下
# 安裝yarn
npm install -g yarn
# 下載下傳依賴
yarn install
# 啟動
yarn run serve
# 編譯項目
yarn run build
# Lints and fixes files
yarn run lint
系統登入
采購入庫
樹結構資料
總結
要了解一個項目,首先要知道這個項目的業務背景是什麼,為什麼要存在該系統。這個在了解項目的過程中非常重要。
我們維護或者開發一個項目,不僅僅用到的是技術,當然技術是很重要的,在學習的過程中要結合業務去了解,過了10天半個月就想不起來這個項目是什麼東西,這種就是因為單純想學技術,而沒有了解到業務,是以就忘了。
關于學習項目我這裡總結了幾個步驟分享給大家:
1、了解系統的業務背景,改系統産生的原因是什麼
2、粗讀系統的代理工作流程和一些重要的分支
3、基于業務去精讀代碼,如果使用到了某個你不懂的技術棧,那就想想為什麼要用這個技術棧A而不是用另外一個技術棧B,在這個過程中學習
4、畫個總結的系統架構圖,如果流程比較多,可以話重要分支的流程圖