天天看點

Java最新簡答題

1.get與post請求差別?

差別1:

get重點在從伺服器上擷取資源,post重點在向伺服器發送資料;

差別2:

get傳輸資料是通過URL請求,以field(字段)= value的形式,置于URL後,并用"?"連接配接,多個請求資料間用"&"連接配接,如http://127.0.0.1/Test/LogI

n.action?name=admin&password=admin,這個過程使用者是可見的;

post傳輸資料通過Http的post機制,将字段與對應值封存在請求實體中發送給伺服器,這個過程對使用者是不可見的;

差別3:

Get傳輸的資料量小,因為受URL長度限制,但效率較高;

Post可以傳輸大量資料,是以上傳檔案時隻能用Post方式;

差別4:

Get是不安全的,因為URL是可見的,可能會洩露私密資訊,如密碼等;

Post較get安全性較高;

差別5:

get方式隻能支援ASCII字元,向伺服器傳的中文字元可能會亂碼。

post支援标準字元集,可以正确傳遞中文字元。

2.rabbitmq的常見作用有哪些?

1.服務間解耦

2.實作異步通信

3.流量削峰

3.RabbitMQ的工作模式有哪些?

1.簡單模式  2.工作者模式  3.廣播模式  4.路由模式  5.通配符模式  6.RPC  7.消息确認模式

4.Redis的常用存儲結構有哪些

String,字元串,是 Redis 的最基本的類型,一個 key 對應一個 value。是二進制安全的,最大能存儲 512MB。

Hash,散列,是一個鍵值(key=>value)對集合。string 類型的 field 和 value 的映射表,特别适合用于存儲對象。每個 hash 可以存儲 232 -1 鍵值對(40多億)

List,清單,是簡單的字元串清單,按照插入順序排序。你可以添加一個元素到清單的頭部(左邊)或者尾部(右邊)。最多可存儲 232 - 1 元素 (4294967295, 每個清單可存儲40多億)。

Set,集合, 是 string 類型的無序集合,最大的成員數為 232 - 1(4294967295, 每個集合可存儲40多億個成員)。

Sorted set,有序集合,和 set 一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。Redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。

5.redis緩存雪崩,緩存穿透

緩存雪崩,即緩存同一時間大面積的失效,這個時候又來了一波請求,結果請求都怼到資料庫上,進而導緻資料庫連接配接異常。

緩存穿透,即故意去請求緩存中不存在的資料,導緻所有的請求都怼到資料庫上,進而資料庫連接配接異常。

6.Redis持久化機制

Redis提供了兩種持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB,簡而言之,就是在不同的時間點,将Redis存儲的資料生成快照并存儲到磁盤等媒體上。

AOF,則是換了一個角度來實作持久化,那就是将Redis執行過的所有寫指令記錄下來,在下次Redis重新啟動時,隻要把這些寫指令從前到後再重複執行一遍,就可以實作資料恢複了。

RDB和AOF兩種方式也可以同時使用,在這種情況下,如果Redis重新開機的話,則會優先采用AOF方式來進行資料恢複,這是因為AOF方式的資料恢複完整度更高。

7.SpringCloudAlibaba常用元件以及作用

1.Gateway網關:路由,使用者鑒權

2.Nacos注冊中心:服務注冊,發現元件,統一配置中心

3.Sentinel熔斷:服務流量控制和服務降級

4.Feign:遠端調用

5.Seata:分布式事務

6.Ribbon:負載均衡

8.事務的四大特性

事務具備以下四個屬性,簡稱 ACID 屬性:

A  原子性(Atomicity):事務是一個完整的操作。事務的各步操作是不可分的(原子的);要麼都執行,要麼都不執行。

B 一緻性(Consistency):當事務完成時,資料必須處于一緻狀态。

C  隔離性(Isolation):對資料進行修改的所有并發事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴于或影響其他事務。

D  永久性(Durability):事務完成後,它對資料庫的修改被永久保持,事務日志能夠保持事務的永久性。

9.Spring五個隔離級别

1、DEFAULT (預設)

這是一個PlatfromTransactionManager預設的隔離級别,使用資料庫預設的事務隔離級别。另外四個與JDBC的隔離級别相對應。

2、READ_UNCOMMITTED (讀未送出)

這是事務最低的隔離級别,它允許另外一個事務可以看到這個事務未送出的資料。這種隔離級别會産生髒讀,不可重複讀和幻像讀。

3、READ_COMMITTED (讀已送出)

保證一個事務修改的資料送出後才能被另外一個事務讀取,另外一個事務不能讀取該事務未送出的資料。

這種事務隔離級别可以避免髒讀出現,但是可能會出現不可重複讀和幻像讀。

4、REPEATABLE_READ (可重複讀)

這種事務隔離級别可以防止髒讀、不可重複讀,但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未送出的資料外,還保證了不可重複讀。

5、 SERIALIZABLE(串行化)

這是花費最高代價但是最可靠的事務隔離級别,事務被處理為順序執行。除了防止髒讀、不可重複讀外,還避免了幻像讀。

10.Controller和RestController的差別

Controller, RestController的共同點

都是用來表示Spring某個類的是否可以接收HTTP請求。

Controller, RestController的不同點