Java服務端開發實習總結
實習期內的業績
- 負責管理後臺賬務綜合查詢模塊的設計與開發,將用戶賬務相關操作日誌落庫,並提供脫敏數據查詢頁面,解放技術排查壓力,提高賬務相關客訴問題解決效率。
- 業務聚合層服務透傳。
- 信審結果推送接口冪等性設計。
- Controller 切面 API埋點數據增加擴展字段applyID。
- 多次版本迭代需求服務端開發,包括溫行聯名卡現金分期功能、賬單刷新流程改造、運營商校驗功能修復、單位電話格式兼容等。
- 升級base,中間件版本(base, mysql, redis, tmc等,關注對task中平滑發佈rabbit的解決)。
- 聯名卡統一殼內代碼邏輯判斷,職業類別修改。
- 跳過運營商&通訊錄用戶判斷接口變更。
- 面籤開機啓動屏後臺管理系統開發。
實習期內的充電
- 學習了聯名卡業務的相關知識,包括系統架構、申卡流程、賬單相關管理流程等。
- 編碼規範的學與遵守。
- 學習了編寫單元測試的方式手段。
- 學習了合理處理各類異常的方法。
- TMC事務消息中心使用與設計理念學習。
- 學習了前端框架Vue,並使用Titan搭建了後臺查賬模塊UI。
- 進一步加強了微服務和分佈式等相關知識的理解,更加深入的學習了其原理。
- 學習了內部開發相關各類系統的聯合使用,包括Ares、Jira、Wiki、Apollo、Kibana、Hades等。
未來業務 + 學習目標
- 未來業務:
- 進一步增強相關業務能力,不斷學習與覆盤,提高開發效率、降低失誤率。
- 跟進聯名卡、虛擬卡等相關業務的瞭解。
- 學習目標
- 進一步學習與深入理解分佈式服務治理相關知識,提高技術認知層次。
- 熟練掌握消息中間件、緩存、數據庫等組件的使用,從本質上深入理解其原理與思想。
- 瞭解與學習其他相關知識體系,Zuul/Janus(統一網關)、Kibana(ELK)、Jenkins(持續集成)、Sonar(代碼質量管理)、Pinpoint(全鏈路跟蹤)、KMS(加解密服務)等。
實習階段成長
學習到的知識點
- 全局唯一ID: 交易碼、短鏈發號機等
- 分佈式鎖: Redis setnx命令實現
- 冪等性校驗: 多維度校驗訂單狀態等
- TMC: 事務消息中心,發消息–>扣錢–>提交–>加錢的場景,ack機制
- RateLimter: guava包令牌桶限流
- ThreadPoolExecutor:線程池工具類
- LinkedBlockingQueue:接收到任務時,如果當前線程數小於核心線程數,則新建核心線程處理任務;如果當前線程數等於核心線程數,則進入隊列等待
- TimeUnit: 線程睡眠包裝類,增加可讀性
- Semaphore: 信號量,控制併發數
- AOP: @Around在方法執行前後做一些工作,如埋點操作、權限校驗等。 @Beore中對前端傳輸的數據解密
- Consul:內置了服務註冊與發現框架、健康檢查、Key/Value存儲,不再需要依賴其他工具(比如ZooKeeper等)
- innodb 聚簇索引
遇到過的問題,如何解決的
- BigDecimal問題: 構造參數最好用String類型,之間的比較嚴禁使用equals,要用compareTo
- BeanUtils.copyProperties: 基於反射實現的一種淺拷貝,並不會檢查原對象的屬性是否爲null
- Integer、Long等,不能用==,要用equals
- Date、Time這種,公司內部都會封裝工具類
- 常量放在equals左邊可避免NPE
實習總結
- 經過推送信審結果至銀行需求的開發, 具備了處理高併發場景的業務代碼的經驗, 且對事務消息機制能夠進行合理的應用。
- 經過賬單後臺管理系統的研發, 具備了一定設計數據庫和業務流程的實戰能力, 並且對前端框架 Vue 也有熟悉和使用。
- 實習期近四個月的高壓需求迭代研發, 使得本人編程風格得到進一步打磨和精進, 並具備一定排查定位並解決線上問題的能力。