12.01 終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

之前有零零散散整理過一些專題給大家參考學習,這次一次性來個終極手撕之架構大全,包含開源框架、分佈式、微服務、性能優化等四個大專題共17個小專題,全部一鍋端,送給大家一起學習~

注意:需要全部完整版架構大全答案的可以後臺私信 “答案”,免費領取~小編會一一回復大家的~

01 開源框架(Spring +SpringMVC+Mybatis)

開源框架答案解析如下:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

開源框架答案解析

1.1 手撕開源框架之Spring

  1. 什麼是 Spring 框架?Spring 框架有哪些主要模塊?
  2. 使用 Spring 框架能帶來哪些好處?
  3. 什麼是控制反轉(IOC)
  4. 請解釋下 Spring 框架中的 IoC
  5. BeanFactory 和 和 ApplicationContext 有什麼區別?
  6. Spring 有幾種配置方式?
  7. 如何用基於 XML 配置的方式配置 Spring
  8. 如何用基於 Java 配置的方式配置 Spring
  9. 怎樣用註解的方式配置 Spring
  10. 請解釋 Spring Bean 的生命週期?
  11. Spring Bean 的作用域之間有什麼區別?
  12. Spring 框架中的單例 Beans 是線程安全的麼?
  13. 請舉例說明如何在 Spring 中注入一個 Java Collection
  14. 如何向 Spring Bean 中注入一個 Java.util.Properties
  15. 請解釋 Spring Bean 的自動裝配?
  16. 請解釋自動裝配模式的區別?
  17. 如何開啟基於註解的自動裝配?
  18. 請舉例解釋@Required 註解?
  19. 請舉例解釋@Autowired 註解?
  20. 請舉例說明@Qualifier 註解?
  21. 構造方法注入和設值注入有什麼區別?
  22. Spring 框架中有哪些不同類型的事件?
  23. Spring 框架中都用到了哪些設計模式?

1.2 手撕開源框架之SpringMVC

  1. 什麼是 SpringMvc?
  2. Spring MVC 的優點:
  3. SpringMVC 工作原理?
  4. SpringMVC 流程?
  5. SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
  6. 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?
  7. SpingMvc 中的控制器的註解一般用那個,有沒有別的註解可以替代?
  8. @RequestMapping 註解用在類上面有什麼作用?
  9. 怎麼樣把某個請求映射到特定的方法上面?
  10. 如果在攔截請求中,我想攔截 get 方式提交的方法,怎麼配置?
  11. 怎麼樣在方法裡面得到 Request,或者 Session?
  12. 我想在攔截的方法裡面得到從前臺傳入的參數,怎麼得到?
  13. 如果前臺有很多個參數傳入,並且這些參數都是一個對象的,那麼怎麼樣快速得到這個對象?
  14. SpringMvc 中函數的返回值是什麼?
  15. SpringMVC 怎麼樣設定重定向和轉發的?
  16. SpringMvc 用什麼對象從後臺向前臺傳遞數據的?
  17. SpringMvc 中有個類把視圖和數據都合併的一起的,叫什麼?
  18. 怎麼樣把 ModelMap 裡面的數據放入 Session 裡面?
  19. SpringMvc 怎麼和 AJAX 相互調用的?
  20. 講下 SpringMvc 的執行流程
  21. SpringMvc 裡面攔截器是怎麼寫的?
  22. 當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什麼處理?

1.3 手撕開源框架之Mybatis

  1. 什麼是 MyBatis?
  2. 講下 MyBatis 的緩存
  3. Mybatis 是如何進行分頁的?分頁插件的原理是什麼?
  4. 簡述 Mybatis 的插件運行原理,以及如何編寫一個插件?
  5. Mybatis 動態 sql 是做什麼的?都有哪些動態 sql?能簡述一下動態 sql 的執行原理不?
  6. #{}和${}的區別是什麼?
  7. 為什麼說 Mybatis 是半自動 ORM 映射工具?它與全自動的區別在哪裡?
  8. Mybatis 是否支持延遲加載?如果支持,它的實現原理是什麼?
  9. MyBatis 與 Hibernate 有哪些不同?
  10. MyBatis 的好處是什麼?
  11. 簡述 Mybatis 的 Xml 映射文件和 Mybatis 內部數據結構之間的映射關係?
  12. 什麼是 MyBatis 的接口綁定,有什麼好處?
  13. 接口綁定有幾種實現方式,分別是怎麼實現的?
  14. 什麼情況下用註解綁定,什麼情況下用 xml 綁定?
  15. MyBatis 實現一對一有幾種方式?具體怎麼操作的?
  16. Mybatis 能執行一對一、一對多的關聯查詢嗎?都有哪些實現方式,以及它們之間的區別?
  17. MyBatis 裡面的動態 Sql 是怎麼設定的?用什麼語法?
  18. Mybatis 是如何將 sql 執行結果封裝為目標對象並返回的?都有哪些映射形式?
  19. Xml 映射文件中,除了常見的 select|insert|updae|delete 標籤之外,還有哪些標籤?
  20. 當實體類中的屬性名和表中的字段名不一樣,如果將查詢的結果封裝到指定 pojo?
  21. 模糊查詢 like 語句該怎麼寫
  22. 通常一個 Xml 映射文件,都會寫一個 Dao 接口與之對應, Dao 的工作原理,是否可以重載?
  23. Mybatis 映射文件中,如果 A 標籤通過 include 引用了 B 標籤的內容,請問,B 標籤能否定義在 A 標籤的後面,還是說必須定義在 A 標籤的前面?
  24. Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重複?
  25. Mybatis 中如何執行批處理?
  26. Mybatis 都有哪些 Executor 執行器?它們之間的區別是什麼?
  27. Mybatis 中如何指定使用哪一種 Executor 執行器?
  28. Mybatis 執行批量插入,能返回數據庫主鍵列表嗎?
  29. Mybatis 是否可以映射 Enum 枚舉類?
  30. 如何獲取自動生成的(主)鍵值?
  31. 在 mapper 中如何傳遞多個參數?
  32. resultType resultMap 的區別?
  33. 使用 MyBatis 的 mapper 接口調用時有哪些要求?
  34. Mybatis 比 IBatis 比較大的幾個改進是什麼?
  35. IBatis 和 MyBatis 在核心處理類分別叫什麼?
  36. IBatis 和 MyBatis 在細節上的不同有哪些?

開源框架(Spring +SpringMVC+Mybatis)答案解析整理:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

開源框架(Spring +SpringMVC+Mybatis)答案解析整理

02 分佈式(限流+通訊+數據庫)

分佈式答案解析如下:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

分佈式答案解析

2.1 手撕分佈式限流(Nginx+ZooKeeper)

(1) 手撕分佈式限流之Nginx

  1. 請解釋一下什麼是 Nginx?
  2. 請列舉 x Nginx 的一些特性。
  3. 請列舉 x Nginx 和 和 Apache 之間的不同點
  4. 請解釋 x Nginx 如何處理 P HTTP 請求。
  5. 在 x Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
  6. 使用 “ 反向代理服務器 ”
  7. 請列舉 x Nginx 服務器的最佳用途。
  8. 請解釋 x Nginx 服務器上的 r Master 和 和 r Worker 進程分別是什麼?
  9. 請解釋你如何通過不同於 0 80 的端口開啟 Nginx?
  10. 請解釋是否有可能將 x Nginx 的錯誤替換為 2 502 錯誤?
  11. 在 x Nginx 中,解釋如何在 L URL 中保留雙斜線? ?
  12. 請解釋 e ngx_http_upstream_module 的作用是什麼?
  13. 請解釋什麼是 K C10K 問題?
  14. 請陳述 s stub_status 和 和 r sub_filter 指令的作用是什麼?
  15. 解釋 x Nginx 是否支持將請求壓縮到上游?
  16. 解釋如何在 x Nginx 中獲得當前的時間?
  17. 用 x Nginx 服務器解釋s -s 的目的是什麼?
  18. 解釋如何在 x Nginx 服務器上添加模塊?

(2)手撕分佈式限流之ZooKeeper

  1. ZooKeeper 是什麼?
  2. ZooKeeper 提供了什麼?
  3. Zookeeper 文件系統
  4. 四種類型的 znode
  5. Zookeeper 通知機制
  6. Zookeeper 做了什麼?
  7. zk 的命名服務(文件系統)
  8. zk 的配置管理(文件系統、通知機制)
  9. Zookeeper 集群管理(文件系統、通知機制)
  10. Zookeeper 分佈式鎖(文件系統、通知機制)
  11. 獲取分佈式鎖的流程
  12. Zookeeper 隊列管理(文件系統、通知機制)
  13. Zookeeper 數據複製
  14. Zookeeper 工作原理
  15. zookeeper 是如何保證事務的順序一致性的?
  16. Zookeeper 下 Server 工作狀態
  17. zookeeper 是如何選取主 leader 的?
  18. 分佈式通知和協調
  19. 機器中為什麼會有 leader?
  20. zk 節點宕機如何處理?
  21. Zookeeper 同步流程
  22. zookeeper 負載均衡和 nginx 負載均衡區別
  23. zookeeper watch 機制

2.2 手撕分佈式通訊(Kafka+ActiveMQ+RabbitMQ)

(1)手撕分佈式通訊之kafka

  1. Kafka 的設計時什麼樣的呢?
  2. 數據傳輸的事物定義有哪三種?
  3. Kafka 判斷一個節點是否還活著有那兩個條件?
  4. producer 是否直接將數據發送到 broker 的 leader(主節點)?
  5. Kafa consumer 是否可以消費指定分區消息?
  6. Kafka 消息是採用 Pull 模式,還是 Push 模式?
  7. Kafka 存儲在硬盤上的消息格式是什麼?
  8. Kafka 高效文件存儲設計特點:
  9. Kafka 與傳統消息系統之間有三個關鍵區別
  10. Kafka 創建 Topic 時如何將分區放置到不同的 Broker 中
  11. Kafka 新建的分區會在哪個目錄下創建
  12. partition 的數據如何保存到硬盤
  13. kafka 的 ack 機制
  14. Kafka 的消費者如何消費數據
  15. 消費者負載均衡策略
  16. 數據有序
  17. kafaka 生產數據時數據的分組策略

(2)手撕分佈式通訊之ActiveMQ

  1. 什麼是 ActiveMQ?
  2. ActiveMQ 服務器宕機怎麼辦?
  3. 丟消息怎麼辦?
  4. 持久化消息非常慢
  5. 消息的不均勻消費。
  6. 死信隊列。
  7. ActiveMQ 中的消息重發時間間隔和重發次數嗎?

(3)手撕分佈式通訊之RabbitMQ

  1. RabbitMQ 中的 broker 是指什麼?cluster 又是指什麼?
  2. 什麼是元數據?元數據分為哪些類型?包括哪些內容?與 cluster 相關的元數據有哪些?元數據是如何保存的?元數據在 cluster 中是如何分佈的?
  3. RAM node 和 disk node 的區別?
  4. RabbitMQ 上的一個 queue 中存放的 message 是否有數量限制?
  5. RabbitMQ 概念裡的 channel、exchange 和 queue 這些東東是邏輯概念,還是對應著進程實體?這些東東分別起什麼作用?
  6. vhost 是什麼?起什麼作用?
  7. 在單 node 系統和多 node 構成的 cluster 系統中聲明 queue、exchange ,以及進行 binding 會有什麼不同?
  8. 客戶端連接到 cluster 中的任意 node 上是否都能正常工作?
  9. cluster 中 node 的失效會對 consumer 產生什麼影響?若是在 cluster 中創建了mirrored queue ,這時 node 失效會對 consumer 產生什麼影響?
  10. 能夠在地理上分開的不同數據中心使用 RabbitMQ cluster 麼?
  11. 為什麼 heavy RPC 的使用場景下不建議採用 disk node ?
  12. 向不存在的 exchange 發 publish 消息會發生什麼?向不存在的 queue 執行consume 動作會發生什麼?
  13. routing_key 和 binding_key 的最大長度是多少?
  14. RabbitMQ 允許發送的 message 最大可達多大?
  15. 什麼情況下 producer 不主動創建 queue 是安全的?
  16. “dead letter”queue 的用途?
  17. 為什麼說保證 message 被可靠持久化的條件是 queue 和 exchange 具有durable 屬性,同時 message 具有 persistent 屬性才行?
  18. 什麼情況下會出現 blackholed 問題?
  19. 如何防止出現 blackholed 問題?
  20. Consumer Cancellation Notification 機制用於什麼場景?
  21. Basic.Reject 的用法是什麼?
  22. 為什麼不應該對所有的 message 都使用持久化機制?
  23. RabbitMQ 中的 cluster、mirrored queue,以及 warrens 機制分別用於解決什麼問題?存在哪些問題?

2.3 手撕分佈式之緩存(Redis+memcached+MongoDB)

(1)手撕分佈式緩存之Redis

  1. redis 簡介
  2. 為什麼要用 redis /為什麼要用緩存(高性能、高併發)
  3. 為什麼要用 redis 而不用 map/guava 做緩存?
  4. redis 和 memcached 的區別
  5. redis 常見數據結構以及使用場景分析(String、Hash、List、Set、Sorted Set
  6. redis 設置過期時間
  7. redis 內存淘汰機制(MySQL裡有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?
  8. redis 持久化機制(怎麼保證 redis 掛掉之後再重啟數據可以進行恢復
  9. redis 事務
  10. Redis 常見異常及解決方案(緩存穿透、緩存雪崩、緩存預熱、緩存降級
  11. 分佈式環境下常見的應用場景(分佈式鎖、分佈式自增 ID
  12. Redis 集群模式(主從模式、哨兵模式、Cluster 集群模式
  13. 如何解決 Redis 的併發競爭 Key 問題
  14. 如何保證緩存與數據庫雙寫時的數據一致性?

(2)分佈式緩存之memcached

  1. memcached 是怎麼工作的?
  2. memcached 最大的優勢是什麼?
  3. memcached 和服務器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什麼優缺點?
  4. memcached 和 和 MySQL 的 的 query cache 相比,有什麼優缺點?
  5. memcached 的 的 cache 機制是怎樣的?
  6. memcached 如何實現冗餘機制?
  7. 我需要把 memcached 中的 item 批量導出導入,怎麼辦?
  8. memcached 如何處理容錯的?
  9. 如何將 memcached 中 中 item 批量導入導出?
  10. memcached 是如何做身份驗證的?
  11. memcached 的多線程是什麼?如何使用它們?
  12. memcached 能接受的 key 的最大長度是多少?
  13. memcached 對 對 item 的過期時間有什麼限制?
  14. memcached 最大能存儲多大的單個 item ?
  15. 為什麼單個 item 的大小被限制在 1M byte 之內?

(3)手撕分佈式緩存之MongoDB

  1. 你說的 NoSQL 數據庫是什麼意思?NoSQL 與 RDBMS 直接有什麼區別?為什麼要使用和不使用NoSQL 數據庫?說一說 NoSQL 數據庫的幾個優點?
  2. NoSQL 數據庫有哪些類型?
  3. MySQL 與 MongoDB 之間最基本的差別是什麼?
  4. 你怎麼比較 MongoDB、CouchDB 及 CouchBase?
  5. MongoDB 成為最好 NoSQL 數據庫的原因是什麼?
  6. 32 位系統上有什麼細微差別?
  7. journal 回放在條目(entry)不完整時(比如恰巧有一箇中途故障了)會遇到問題嗎?
  8. 分析器在 MongoDB 中的作用是什麼?
  9. 名字空間(namespace)是什麼?
  10. 如果用戶移除對象的屬性,該屬性是否從存儲層中刪除?
  11. 能否使用日誌特徵進行安全備份?
  12. 允許空值 null 嗎?
  13. 更新操作立刻 fsync 到磁盤?
  14. 如何執行事務/加鎖?
  15. 為什麼我的數據文件如此龐大?
  16. 啟用備份故障恢復需要多久?
  17. 什麼是 master 或 primary?
  18. 什麼是 secondary 或 slave?
  19. 我必須調用 getLastError 來確保寫操作生效了麼?
  20. 我應該啟動一個集群分片(sharded)還是一個非集群分片的 MongoDB 環境?
  21. 分片(sharding)和複製(replication)是怎樣工作的?
  22. 數據在什麼時候才會擴展到多個分片(shard)裡?
  23. 當我試圖更新一個正在被遷移的塊(chunk)上的文檔時會發生什麼?
  24. 如果在一個分片(shard)停止或者很慢的時候,我發起一個查詢會怎樣?
  25. 我可以把 moveChunk 目錄裡的舊文件刪除嗎?
  26. 我怎麼查看 Mongo 正在使用的鏈接?
  27. 如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉移的文檔嗎?
  28. 如果我在使用複製技術(replication),可以一部分使用日誌(journaling)而其他部分則不使用嗎?
  29. 當更新一個正在被遷移的塊(Chunk)上的文檔時會發生什麼?
  30. MongoDB 在 A:{B,C}上建立索引,查詢 A:{B,C}和 A:{C,B}都會使用索引嗎?
  31. 如果一個分片(Shard)停止或很慢的時候,發起一個查詢會怎樣?
  32. MongoDB 支持存儲過程嗎?如果支持的話,怎麼用?
  33. 如何理解 MongoDB 中的 GridFS 機制,MongoDB 為何使用 GridFS 來存儲文件?

分佈式(限流+緩存+通訊)答案解析整理:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

分佈式(限流+緩存+通訊)答案解析整理

03 微服務(Dubbo+Spring Boot+Spring Cloud

微服務答案解析如下:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

微服務答案解析

3.1 手撕微服務之Dubbo

  1. Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
  2. Dubbo 超時時間怎樣設置?
  3. Dubbo 有些哪些註冊中心?
  4. Dubbo 集群的負載均衡有哪些策略
  5. Dubbo 的核心功能?
  6. Dubbo 服務註冊與發現的流程?
  7. Dubbo 的架構設計?
  8. Dubbo 框架設計一共劃分了 10 個層:
  9. Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
  10. dubbo 推薦用什麼協議?
  11. Dubbo 默認採用註冊中心?
  12. Dubbo 與 Spring 的關係?
  13. Dubbo 的集群容錯方案有哪些?
  14. Dubbo 的默認集群容錯方案?
  15. Dubbo 在安全機制方面是如何解決?
  16. Dubbo 和 Spring Cloud 的關係?
  17. Dubbo 超時時間怎樣設置?
  18. Dubbo 和 Spring Cloud 的區別?

3.2 手撕微服務之Spring Boot

  1. 什麼是 Spring Boot?
  2. Spring Boot 有哪些優點?
  3. 什麼是 JavaConfig?
  4. 如何重新加載 Spring Boot 上的更改,而無需重新啟動服務器?
  5. Spring Boot 中的監視器是什麼?
  6. 如何在 Spring Boot 中禁用 Actuator 端點安全性?
  7. 如何在自定義端口上運行 Spring Boot 應用程序?
  8. 什麼是 YAML?
  9. 什麼是 Spring Profiles?
  10. 什麼是 Spring Batch?
  11. 如何集成 Spring Boot 和 ActiveMQ?
  12. 如何使用 Spring Boot 實現分頁和排序?
  13. 什麼是 Swagger?你用 Spring Boot 實現了它嗎?
  14. 什麼是 FreeMarker 模板?
  15. 如何使用 Spring Boot 實現異常處理?
  16. 您使用了哪些 starter maven 依賴項?
  17. 什麼是 CSRF 攻擊?
  18. 什麼是 WebSockets?
  19. 什麼是 AOP?
  20. 什麼是 Apache Kafka?
  21. 我們如何監視所有 Spring Boot 微服務?

3.3 手撕微服務之Spring Cloud

  1. 什麼是 Spring Cloud?
  2. 使用 Spring Cloud 有什麼優勢?
  3. 服務註冊和發現是什麼意思?Spring Cloud 如何實現?
  4. 負載平衡的意義什麼?
  5. 什麼是 Hystrix?它如何實現容錯?
  6. 什麼是 Hystrix 斷路器?我們需要它嗎?
  7. 什麼是 Spring Cloud Bus?我們需要它嗎?
  8. 什麼是 Netflix Feign?它的優點是什麼?

微服務(Dubbo+Spring Boot+Spring Cloud)答案解析整理:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

微服務(Dubbo+Spring Boot+Spring Cloud)答案解析整理

04 性能優化(JVM+Tomcat+MySQL

性能優化答案解析如下:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

性能優化答案解析

4.1 手撕性能優化之JVM

  1. Java 類加載過程?
  2. 描述一下 JVM 加載 Class 文件的原理機制?
  3. Java 內存分配。
  4. GC 是什麼? 為什麼要有 GC?
  5. 簡述 Java 垃圾回收機制。
  6. 如何判斷一個對象是否存活?(或者 GC 對象的判定方法)
  7. 垃圾回收的優點和原理。並考慮 2 種回收機制
  8. 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?
  9. Java 中會存在內存洩漏嗎,請簡單描述。
  10. 深拷貝和淺拷貝。
  11. System.gc() 和 Runtime.gc() 會做什麼事情?
  12. finalize() 方法什麼時候被調用?析構函數 (finalization) 的目的是什麼?
  13. 如果對象的引用被置為 null,垃圾收集器是否會立即釋放對象佔用的內存?
  14. 什麼是分佈式垃圾回收(DGC)?它是如何工作的?
  15. 串行(serial)收集器和吞吐量(throughput)收集器的區別是什麼?
  16. 在 Java 中,對象什麼時候可以被垃圾回收?
  17. 簡述 Java 內存分配與回收策率以及 Minor GC 和 MajorGC
  18. JVM 的永久代中會發生垃圾回收麼?
  19. Java 中垃圾收集的方法有哪些?
  20. 什麼是類加載器,類加載器有哪些?
  21. 類加載器雙親委派模型機制?

4.2 手撕性能優化之Tomcat

  1. 你怎樣給 tomcat 去調優?
  2. 如何加大 tomcat 連接數
  3. tomcat 中如何禁止列目錄下的文件
  4. 怎樣加大 tomcat 的內存
  5. Tomcat 有幾種部署方式
  6. Tomcat 的優化經驗

4.3 手撕性能優化之MySQL

  1. 為查詢緩存優化你的查詢
  2. EXPLAIN你的SELECT查詢
  3. 當只要一行數據時使用LIMIT 1
  4. 為搜索字段建索引
  5. 在Join表的時候使用相當類型的例,並將其索引
  6. 千萬不要 ORDER BY RAND()
  7. 避免 SELECT *
  8. 永遠為每張表設置一個 ID
  9. 使用 ENUM 而不是 VARCHAR
  10. 從 PROCEDURE ANALYSE() 取得建議
  11. 儘可能的使用 NOT NULL
  12. Prepared Statements
  13. 無緩衝的查詢
  14. 把 IP 地址存成 UNSIGNED INT
  15. 固定長度的表會更快
  16. 垂直分割
  17. 拆分大的 DELETE 或 INSERT 語句
  18. 越小的列會越快
  19. 選擇正確的存儲引擎
  20. 使用一個對象關係映射器(Object Relational Mapper)
  21. 小心“永久鏈接”

性能優化(JVM+Tomcat+MySQL)答案解析整理:

終極手撕之架構大全:分佈式+框架+微服務+性能優化,夠不夠?

性能優化(JVM+Tomcat+MySQL)答案解析整理


最後再說一遍:轉發+轉發+轉發+私信 “答案” 即可免費領取全部的架構大全答案!!!!


分享到:


相關文章: