常見的設計模式
首先設計模式可分為三大類
創建型模式
- 單例模式:一個類只有一個實例,并提供全局訪問;
- 工廠模式:將創建實例的過程隱藏,實例通過一個工廠方法返回;
- 抽象工廠模式:提供一個創建實例接口,而不指定具體實現類;
- 原型模式:通過克隆創建對象,避免new對象的開銷。
結構型模式
- 橋接模式:將抽象部分與具體的實現部分分離;
- 代理模式:為其他對象提供一種代理來控制該對象的訪問;
行為型模式
- 觀察者模式:對象間一種一對多的依賴關系,當一個對象的狀態改變,所有依賴于它的對象也改變。
?Spring MVC和SpringBoot的區別?
- 結構不同:springboot是spring的一個框架,而springmvc是spring的一個核心模塊;
- 開發效率不同:springboot提供了自動配置,可快速構建應用,而springmvc需要手動配置框架、容器等;
SpingBoot常用注解
- @SpringBootApplication:springboot應用程序的入口類;
- @Autowired:自動裝配bean對象;
- @Component:將該類注入spring容器成為bean對象;
- @Service,@Configuration,@Slf4j,@Data等。
實現多線程的方法
- 繼承Thread類,重寫run方法;
- 實現Runnable接口,實現接口的run方法;
- 通過線程池創建線程
線程池的七大參數
- 核心線程數:平常工作中線程的最少個數;
- 最大線程數:線程創建的最多數量;
- 過期時間:當線程數超過核心線程數,未使用線程的過期時間;
- 過期時間的單位;
- 任務隊列:當線程被占滿,等待的任務放入該隊列;
- 線程工廠個數:用來生成線程;
- 拒接策略:當隊列占滿并且線程數達到最大線程數的拒絕策略;
Maven配置優先級?
全局配置 > 用戶配置 > 本地pom配置
三次握手和四次揮手流程
三次握手
- 剛開始客戶端處于closed的狀態,服務器端處于監聽狀態;
- 第一次連接:客戶端發送一個SYN報文,請求建立連接;
- 第二次連接:服務器端如果同意連接,會響應一個ACK報文;
- 第三次連接:客戶端收到服務器的ACK報文后,會響應一個ACK報文表示接收到了服務器端確認;
四次揮手
- 剛開始服務器端和客戶端都處于establish狀態;
- 第一次揮手:客戶端發送一個FIN報文,請求斷開連接;
- 第二次揮手:服務器端收到后,發送一個ACK報文表示已收到斷開請求;
- 第三次揮手:當服務器端想斷開連接時,發送一個FIN報文;
- 第四次揮手:客戶端收到后,發送一個ACK報文表示收到服務器斷開請求;
就這樣了——————