回覆 PDF 領取資料 html
這是悟空的第 93 篇原創文章
前端
做者 | 悟空聊架構java
來源 | 悟空聊架構(ID:PassJava666)mysql
本文主要內容以下:git
1、緣起
PassJava 開源項目是一個面試刷題
的開源系統,後端採用 Spring Cloud 微服務能夠用零碎時間利用小程序
查看常見面試題,夯實Java 技術棧,固然題庫不限於 Java,還有微服務。github
以前有讀者問我小程序開源麼,因以前在寫分佈式算法系列的文章,因此開源項目中斷了一段時間,如今繼續更新開源項目。web
爲了讓讀者朋友們更好地學習該項目,我已經將小程序代碼開源。面試
小程序的代碼地址在 github 上面,別忘記點個 star,素質三連哈~算法
https://github.com/Jackson0714/PassJava-Platform/tree/master/passjava-miniAppspring
小程序體驗碼以下:
小程序界面:
小程序有兩個版本:雲開發版和進階版。下面分別進行介紹。
2、雲開發版
2.1 小程序·雲開發簡介
小程序·雲開發是微信團隊聯合騰訊雲推出的專業的小程序開發服務。
開發者可使用雲開發快速開發小程序、小遊戲、公衆號網頁等,而且原生打通微信開放能力。
開發者無需搭建服務器,可免鑑權直接使用平臺提供的 API 進行業務開發。
2.1.1 優點:
-
無需搭建服務器,只需使用平臺提供的各項能力,便可快速開發業務。 -
無需管理證書、簽名、祕鑰,直接調用微信 API 。複用微信私有協議及鏈路,保證業務安全性。 -
支持環境共享,一個後端環境可開發多個小程序、公衆號、網頁等,便捷複用業務代碼與數據。 -
開發者可使用任意語言和框架進行代碼開發,構建爲容器後,快速將其託管至雲開發。 -
支持按量計費模式,後端資源根據業務流量自動擴容,先使用後付費,無需支付閒置成本。
2.1.2 特色
雲數據庫:文檔型數據庫,穩定可靠;支持在小程序端和雲函數中調用。
存儲:雲端文件存儲,自帶 CDN 加速,支持在前端直接上傳/下載,可在雲開發控制檯可視化管理。
雲函數:在雲端運行的代碼,微信私有協議自然鑑權,開發者只需編寫自身業務邏輯代碼。
雲託管:支持託管服務容器,不限框架和語言,常駐運行、自然鑑權,可快速進行業務遷移
2.1.3 缺點
-
適合我的開發。 -
按照流量付費,訪問人多了的話,須要購買流量。 -
因服務端是騰訊自帶的,因此不能使用其餘後端中間件來實現功能加強,好比 Redis,RabbitMQ。 -
數據庫和存儲也是騰訊自帶的,因此不能使用其餘數據庫和存儲,好比 mysql、阿里雲。
2.2 小程序下載使用
2.2.1 題庫簡介
題庫功能以下圖所示:
-
第一步:進入到選擇題目類型。這裏有 12 種類別,點擊其中一個可跳轉到題目列表頁。
-
第二步:進入到題庫列表頁。下圖是 Spring 題庫列表頁,能夠點擊查看進入到題目的詳情頁。
-
第三步:進入到題目詳情頁。以下圖所示就是 spring 面試題的詳情頁,加載的內容就是上傳到雲存儲的 markdown 文件。後面會講解如何上傳題目。
2.2.2 上傳題目
要用這套雲開發版的小程序的話,須要先上傳題目文件到雲存儲。
以下圖所示,我上傳了不少 markdown 文件,你們能夠自行編寫 markdown 文件,每個文件對應一個題目,裏面的內容是題目的問題+答案。
2.2.3 添加題目記錄
而後須要在數據庫中插入數據,來提供給小程序查詢。
我導出了一條記錄,你們能夠直接插入到數據庫中。
{
"_id": "27a98c6c-0477-4edb-8ef3-e35f0501b31c",
"question": "1.JAVA 異常分類及處理?",
"answer": "cloud://test-0jlva.7465-test-0jlva-1254012214/markdown/02_JavaBasic/1、JAVA 異常分類及處理.md",
"number": "1",
"subTitle": "天天進步一點點",
"type": "javaBasic",
"level": "1"
}
-
question:題目的問題。 -
answer:題目的答案。 -
number:題目的序號。 -
subTitle:題目的副標題。 -
type:題目的類型,目前有 javaBasic
、jvm
、spring
等 12 種。也能夠自行添加。
markdown 格式的題目已經上傳到了 github,目前只有部分,歡迎你們 commit。
https://github.com/Jackson0714/passJavaKnowledge/tree/master
另外我還有 1000 道面試題的 pdf 也能夠用做題庫,須要的同窗在公衆號後臺回覆悟空
領取下。
2.3 小程序原理
小程序原理圖以下:
原理圖說明:
1)調用 本身編寫的雲函數 getJavaQuestionList 獲取列表;
2)調用 本身編寫的雲函數 getJavaQuestionDetail 獲取詳情的 Markdown文件路徑;
3)調用 系統自帶的雲函數 downloadFile 下載 Markdown文件保存爲臨時文件;
4)調用 小程序自帶的 saveFileSync 將臨時文件保存到本地;
5)調用 小程序自帶的 readFileSync 將本地文件讀入緩存(注意:開發者工具上不須要保存到本地也能夠正常讀取);
6)使用 towxml 開源組件將緩存中markdown內容轉成小程序能夠識別的元素
7)給 圖片元素添加預覽事件
因小程序主要是用來刷題,附加的功能好比 banner 廣告位、熱點推薦我就不在這裏介紹了。
對於有些同窗來講,雲開發還比較陌生,須要多看看官方文檔熟悉下才能熟練進行二次開發。
3、進階版
該項目的小程序進階版指的是不用雲開發,後端採用 Spring Cloud 微服務做爲服務支撐,數據庫也不是雲數據庫了,而是 mysql。Rest 版本雖然目前還不完善,但已經和後端打通。
3.1 使用條件
目前須要如下條件才能將前端和後端連起來一塊兒用:
-
本地後臺微服務啓動成功。
目前要求 passjava-gateway、passjava-question、renren 啓動成功。
-
MySQL 數據庫和表結構建立成功。
數據庫文件在 \data\sql 目錄,須要都執行。執行成功後,業務表總共有 5 個業務模塊, 7 張表,以下圖所示:
-
Nacos 服務啓動成功且已配置好微服務的相關配置。
如何配置可參考前面的文章。訪問地址:http://192.168.56.1:8848/nacos。訪問 Nacos,並登錄 Nacos 後,以下圖所示:
-
passjava-portal 管理控制檯啓動成功。
經過 http://localhost:8001/ 訪問。
-
題目管理功能正常使用。
能夠建立題目類型和建立題目。
-
打開小程序代碼正常。
另外須要注意下,Rest 版目前的首頁題目類型和題目列表正在開發中,因此仍是用的雲函數,獲取題目用到的 id 是 1。目前階段僅供學習,本人時間有限,歡迎你們來幫助 commit。
4、開源地址
我把後端、前端、小程序都上傳到同一個倉庫裏面了,你們能夠經過 GitHub 或 碼雲訪問。地址以下:
Github: https://github.com/Jackson0714/PassJava-Platform
碼雲:https://gitee.com/jayh2018/PassJava-Platform
配套教程:www.passjava.cn
調試代碼是個辛苦活,精力有限,在寫技術文章時,還須要抽出時間倒騰這個開源項目,因此是否值得一讚?
參考資料:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html
www.passjava.cn
- END -
本文分享自微信公衆號 - 悟空聊架構(PassJava666)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。