面試官您好,我叫
我畢設內(nèi)容是設計和開發(fā)一個基于RFID自動識別技術的物流跟蹤系統(tǒng)氓侧,其中包括開發(fā)一個中間件腮郊,用于提取閱讀器信息并處理后插入數(shù)據(jù)庫,以及開發(fā)一個后臺管理系統(tǒng)惊畏,用于工藝員對標簽和零件物流信息進行監(jiān)控和查詢。系統(tǒng)是基于SpringBoot的一站式開發(fā)密任,MySQL數(shù)據(jù)庫做存儲層颜启,整合了Mybatis作為DAO層,SpringMVC控制層浪讳,并在RFID數(shù)據(jù)獲取處理后使用了RabbitMQ作為消息中間件缰盏,完成對數(shù)據(jù)的異步插入數(shù)據(jù)庫,以及在前端用戶查詢數(shù)據(jù)時添加了Redis作為緩存淹遵,避免了頻繁的訪問數(shù)據(jù)庫口猜。
為什么選用springboot作為開發(fā)框架?
內(nèi)核還是spring透揣,不過是對外做了大量封裝济炎,大大提高了開發(fā)的效率;不必再像傳統(tǒng)spring開發(fā)過程中辐真,需要面臨大量的整合三方應用包括服務器等的麻煩冻辩,配置起來非常方便;方便了部署拆祈,配置,監(jiān)控倘感;缺點是封裝了太多的東西放坏,更加難以接觸到spring的本質(zhì),就像是棉花糖老玛,使用方便淤年,但是想做自己單獨的配置,需要去讀很多官方文檔蜡豹,修改不少指定的類麸粮,而且版本不斷的更新,有不少坑得踩镜廉;
談談SpringMVC的原理
首先MVC是一種設計模式弄诲,model是模型,如services層和dao層處理業(yè)務的,view是視圖齐遵,如前端的html和jsp顯示層寂玲,controller是控制器,是控制用戶訪問的控制層梗摇,如執(zhí)行攔截拓哟,驗證,根據(jù)特定的url找到對應的模型進行處理等伶授;之前網(wǎng)絡上有struts断序,struts2等MVC框架出現(xiàn)過,而SpringMVC就是基于spring這一個非常流行框架下的MVC框架糜烹,因為Spring框架的IOC和AOP等特性违诗,springmvc也流行起來,主要能將業(yè)務處理很好的和用戶訪問控制解耦景图,天然集成于spring中较雕;
和struts區(qū)別:springmvc是基于方法開發(fā),一個url對應一個方法挚币,參數(shù)作為方法形參傳入亮蒋,而struts2是基于類,請求參數(shù)是通過類的屬性傳入妆毕;
如何工作的慎玖?
為什么選用RabbitMQ作為消息中間件
傳統(tǒng)的AMQP實現(xiàn)的消息隊列,對數(shù)據(jù)的一致性笛粘,可靠性趁怔,穩(wěn)定性要求較高,但是對性能和吞吐量還在其次薪前;而kafka一開始開發(fā)出來就是為了處理海量數(shù)據(jù)如日志處理和傳輸润努,追求高吞吐量,不支持事務示括。
談談你對Redis的理解铺浇?
Redis不僅可以做緩存,還可以做DB垛膝,分布式鎖鳍侣,消息隊列等;使用Redis作為緩存層吼拥,主要是基于Redis的性能和并發(fā):redis是單線程的倚聚,redis的純內(nèi)存操作;采用了非阻塞的I/O多路復用機制凿可;
緩存穿透:訪問的數(shù)據(jù)都不在緩存里導致大量訪問數(shù)據(jù)庫惑折,從而使數(shù)據(jù)庫連接異常;
緩存雪崩:緩存同一時間的大量失效,又來一波請求唬复,結果導致數(shù)據(jù)庫連接異常矗积;