賀朝輝 李江華



摘要:講座索票小程序為學校提供了一個更方便的發布講座和信息通知的平臺,信息能直接從學校到每個學生手中,無需一層層的去通知,同時WE索票提供的文件導出,極大地減輕了管理的負擔。對于學生而言,WE索票可以及時讓你知道最新的講座信息不再錯過任何一個想去的講座,搶票機制使學生再也不用擔心名額問題。掃描二維碼簽到的方式相比于傳統拿筆在表格上簽到不僅能讓學乍更快完成簽劍入場,而且讓學校方面的統計更加方便。
關鍵詞:搶票;講座;校園;微信小程序;JSON數據
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)20-0074-03
比如在某些高校,想知道最近有什么講座的話,要么去班級群看學委最近是否有發布一些講座信息,要么去看告示牌。若想要參加講座,還要和學委進行聯系,然后學委再以班級的形式向上匯報,入場簽到時也得排隊手動簽到。在這種情況下,想參加講座的人不得不經過一道道煩瑣的程序,同時因為以班級形式上報數據,所以名額一般都是平均分配,可能導致一些班級覺得名額少了,一些班級覺得名額多了,這是資源分配不合理的體現。
講座索票小程序使獲得講座信息更方便,同時報名講座省去了中間環節,因為搶票是開放的,所以名額是先到先得,促使資源更合理分配,入場簽到也無須拿筆填表簽到,只需掃描二維碼即可,因為二維碼的時效性,可以有效防止一些人將二維碼截圖給別人代簽。當講座結束后,可以在管理員后臺導出講座相關信息并自動生成Excel文件,方便了管理人員的統計。
1系統功能結構的設計
1.1服務端系統功能
如圖1所示后臺具有如下功能:
1)建立學校信息和講座信息;
2)對上傳的信息進行合理性驗證;
3)當搶票時間開始到搶票時間結束時開放搶票通道,若票搶完則提前關閉搶票通道;
4)對掃描人進行權限認證;
5)對生成時間超過1分鐘的二維碼進行無效化處理。
1.2網頁端的主要功能介紹
如圖2所示網頁端具有如下功能:
1)用戶在登錄小程序后選擇自己的班級進行綁定,綁定后即可看到該班級當前周的課程信息或查看別班課程信息;用戶可以編輯自己的課程信息,添加實驗課程到小程序即可將實驗信息進行顯示;
2)用戶可以查看自己的班級的考試信息,并支持用戶對自己的考試信息進行修改或刪除;
3)用戶可以對默認頭像進行修改,通過常見問題模塊了解網頁平臺的使用;
4)對用戶查詢的缺勤名單結果進行保存管理,提供缺勤名單下載。
2系統實現的關鍵技術
2.1使用樂觀鎖防止“超售”
由于在高并發的情況下,可能導致數據庫中票的余額減至小于零,于是采用version字段實現樂觀鎖,在每一次sql執行前讀取version字段值,執行時再讀取version字段值,若兩次ver-sion字段值一樣則執行該sql,否則對操作進行回滾。
2.2對于Redis在高并發的情況下的解決
Redis在高并發下的常見問題有緩存穿透,緩存雪崩和緩存擊穿。
緩存穿透的解決方案:
即使查詢結果為null也進行緩存,這樣下次再訪問不存在的數據時,可以直接從緩存查出而不進人數據庫,但這個緩存結果不能保存太久,得把這個key的過期時間沒置的短一點,比如一分鐘,因為查詢結果為空時不一定是數據不存在,也可能是系統內部的錯誤。
同時在接口層增加攔截器,攔截那些明顯錯誤的數據,比如id
緩存雪崩的解決方案:
把key的過期時間在自定義固定值的基礎上加上一個隨機值,減小同一時間大批量key失效的概率。
對熱點數據(高訪問數據)設置永不過期,但是要記得如果數據庫中的熱點數據變動,緩存也要一起更新。
當緩存失效時,設置排隊隊列使當前失效key為單線程訪問(也可以通過加鎖方式實現),避免大量并發請求同時訪問數據庫。
緩存擊穿的解決方案:
利用互斥鎖,當key過期時,setnx一個key-value(setnx表示key不存在則被創建),若創建成功則進人數據庫查詢數據,并且更新緩存,若創建不成功則sleep一段時間后重新試圖從緩存中讀取數據,此時若有并發請求訪問該過期key,因為setnx中的key已經被創建,則該并發請求會一直sleep一段時間后再次訪問緩存,直到從緩存中查詢出數據。
2.3二維碼的掃描
在二維碼生成時對信息進行加密,當二維碼機票被掃描時,應對掃描人的權限進行認證,票的有效性的檢驗以及二維碼信息的解密。
3系統界面設計
1)用戶登入模塊:主要用于個人信息綁定。
2)講座信息模塊:提供講座信息以及搶票途徑。
3)個人模塊:用于更改個人信息。
4)票券模塊:用于保存已獲得的票券信息。
4結束語
講座索票小程序經過測試,各功能模塊運行穩定。由于微信小程序有微信用戶作為基礎,相比于傳統的注冊登錄更為簡單,便捷和安全。講座索票小程序提供了一個更為快捷的平臺簡化學生從獲取講座票以及入場的流程,也提供了一個方便的可供學校統計信息的平臺。
參考文獻:
[1]高洪濤.從零開始學微信小程序開發[M].北京:電子工業出版社,2017.
[2]王松.Spring Boot+Vue全棧開發實戰[M].北京:清華大學出版社.2019.
[3]Craig Walls.Spring Boot實戰[M].丁雪豐,譯.北京:人民郵電出版社,2016.
【通聯編輯:謝媛媛】
收稿日期:2020-05-08
作者簡介:賀朝輝(1999-),男,江西萍鄉人,本科在讀;李江華(1976-),男,河南南陽人,副教授,碩士生導師,博士,研究方向為面向大數據的隱私保護技術研究。