网易资深Java架构师:java数组对象转为list集合
前言
現在刷抖音經常可以看到一些老外街坊,問他們最想把什么帶回自己的國家,我聽過很多的回答都是:淘寶,支付寶,美食,微信,外賣,高鐵等等。
確實如此,隨著國家的快速發展吸引了不少國際上羨慕的目光,更讓中國的新四大發明走向世界。說到這些,都離不開背后龐大的互聯網體系的支撐,阿里作為國內最頂級的互聯網企業必然也聚集了行業內頂級的IT人才。
眾所周知,阿里巴巴的主要開發語言就是Java,而對于Java開發者來說,最重要的就是學習Spring框架了。現在,我想跟大家分享出這份老外看外都不禁贊嘆的《阿里技術官Spring全家桶筆記》,趕緊一睹為快吧。
咱們都知道,學Spring最重要的還是它的核心思想AOP和IOC,這兩個內容也單獨拿出來做一份筆記來重點講解了,先睹為快!
由于篇幅限制,這兩個知識點講的干貨內容非常多,這里只能截取部分文檔內容展示,完整版獲取在上面,感謝配合。
正文
ZooKeeper 很流行,有個基本的疑問:
- ZooKeeper 是用來做什么的?
- 之前沒有ZK,為什么會誕生 ZK?
OK,解答一下上面的疑問:(下面是憑直覺說的)
- ZooKeeper 是用于簡化分布式應用開發的,對開發者屏蔽一些分布式應用開發過程中的底層細節
- ZooKeeper 對外暴露簡單的 API,用于支持分布式應用開發
- ZooKeeper 在提供上述功能的同時,其還是一個 高性能、高可用、高可靠的分布式集群
上面說這么多,總結一下,ZK 能解決分布式應用開發的問題,ZK 能很好的解決問題。到這一步,疑問就更多了:
- 高性能是指什么?ZooKeeper 為了達到高性能,做了哪些工作?
- 高可用同上
- 高可靠同上
Note:本篇 wiki 就是為了解決上述第一個疑問的。(其他疑問會在其他 blog 中逐步解答)
為什么有 ZooKeeper
一個應用程序,涉及多個進程協作時,業務邏輯代碼中混雜有大量復雜的進程協作邏輯。
上述多進程協作邏輯,有 2 個特點:
- 處理復雜
- 處理邏輯可重用
因此,考慮將多進程協作的共性問題拎出,作為基礎設施,讓 RD 更加專注業務邏輯開發,即:
ZooKeeper 就是上述多進程協作基礎服務的一種。
ZooKeeper 的特點
ZooKeeper 有幾個簡單特點:
- ZooKeeper 的 API:從 文件系統 API 得到的啟發,提供簡單的 API
- ZooKeeper 運行在專用服務器上,跟業務邏輯分離,保證了高容錯性和可擴展性
ZooKeeper 是存儲設施,但特別注意
- ZK上存儲的數據聚焦為:協作數據(元數據),而不是應用數據,應用數據有自己的存儲方案,例如 HDFS 等
- ZK 本質上,可以看作一種特殊的 FS
特別說明:
應用數據和元數據,由于使用場景不同,對一致性和持久性的要求有差異, 因此,架構設計、數據治理過程中,應將 2 類數據獨立看待、獨立存儲。
ZooKeeper 的使命
ZK 要解決的核心問題:
ZK 目標:簡化分布式應用開發中,多進程協作問題。為分布式應用,提供高效、可靠的分布式協調服務(基礎服務),例如:
- 統一的命名服務
- 分布式鎖
- 進程崩潰檢測
- Leader 選舉
- 配置管理:配置變更時,及時下發到各個 Client。
一個簡單的問題:多進程的協作是什么?尼瑪呀,有完沒完,啥問題你都有,面對這個掉咋天的腦殼,還是回答一下。
多進程協作,整體分為 2 類:
特別說明:
跨網絡多進程協作,進程通信,基本思路有 2 個:
真實系統中,跨網絡通信,有幾個共性問題:
ZK 精心設計用于屏蔽上述 3 個共性問題,使得這些問題在應用服務層面完全透明化。
ZooKeeper 特性
ZooKeeper 解決的本質問題
分布式系統的一致性問題:
在這種情況下,如何保證數據的一致性?
Paxos 目標:解決分布式一致性問題,提高分布式系統容錯性的一致性算法。
Paxos 本質:基于消息傳遞的高度容錯的一致性算法
ZooKeeper 定位
ZooKeeper 是:
ZooKeeper 不直接暴露原語,而是,暴露一部分調用方法組成的 API,類似文件系統的 API,支持應用程序實現自己的原語。
ZooKeeper 特性
ZooKeeper 可以保證如下分布式一致性特性:
- 順序一致性:同一個 Client 發起的事務請求,嚴格按照發起順序執行
- 原子性:事務請求,要么應用到所有節點,要么一個節點都沒有應用
- 單一視圖:Client 無論連接到哪個節點,看到的服務端數據都是一致的(Note:不準確,其實是最終一致性)
- 可靠性:事務一旦執行成功,狀態永久保留
- 實時性:事務一旦執行成功,Client 并不能立即看到最新數據,但 ZooKeeper 保證最終一致性
ZooKeeper 設計目標
ZooKeeper 致力于提供高性能、高可用、順序一致性的分布式協調服務,保證數據最終一致性。
目標一:高性能(簡單的數據模型)
目標二:高可用(構建集群)
目標三:順序一致性(事務操作的順序)
目標四:最終一致性
ZooKeeper 出現之前
ZK 出現之前,分布式系統常用兩種方式,實現多進程協作:
ZK 更專注于進程協作,而不提供任何鎖接口和通用的存儲數據接口。(疑問:ZK 也可以提供啊,我們不使用就行了)
應用服務器,常見的 2 種需求:
ZK 為上述 2 種策略提供了基礎 API。
ZooKeeper 不適用的場景:
最后
面試題文檔來啦,內容很多,485頁!
由于筆記的內容太多,沒辦法全部展示出來,下面只截取部分內容展示。有想獲取完整版筆記的朋友,點贊后點擊這里免費領取哦
1111道Java工程師必問面試題
MyBatis 27題 + ZooKeeper 25題 + Dubbo 30題:
Elasticsearch 24 題 +Memcached +?Redis 40題:
Spring 26 題+ 微服務 27題+ Linux 45題:
Java面試題合集:
R2og42E-1622454470125)]
Elasticsearch 24 題 +Memcached +?Redis 40題:
[外鏈圖片轉存中…(img-WYOLv9UP-1622454470126)]
Spring 26 題+ 微服務 27題+ Linux 45題:
[外鏈圖片轉存中…(img-rSWlOipn-1622454470127)]
Java面試題合集:
總結
以上是生活随笔為你收集整理的网易资深Java架构师:java数组对象转为list集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创维电视开机后蓝屏如何回事?
- 下一篇: 求一个英雄联盟lol 黑色玫瑰30级账号