日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

独眼巨人反应组织了Java 8库的寒武纪爆发

發(fā)布時間:2023/12/3 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 独眼巨人反应组织了Java 8库的寒武纪爆发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是獨眼巨人反應(yīng)?

Lambda表達式和默認方法在Java 8中的出現(xiàn)預(yù)示了Java語言十年來最大的結(jié)構(gòu)性變化。 在此基礎(chǔ)上構(gòu)建了一些新的很酷的API,例如Stream, Optional, CompletableFuture最終Java開發(fā)人員可以以更實用的樣式進行編碼。 盡管這是非常受歡迎的,但對于許多增強功能而言,還遠遠不夠。

Stream, Optional, CompletableFuture都共享相同的抽象結(jié)構(gòu)并遵循相同的規(guī)則。 但是,API并未就通用方法名稱達成共識,沒關(guān)系提供通用接口。 例如, Stream#map / Optional#map變?yōu)镃ompletableFuture#thenApply 。 此外,通常在集合中缺少添加到Stream & Optional的功能。 List#map在哪里?

JDK Stream實現(xiàn)的性能很好,完全是懶惰的,并且設(shè)計得很好,可以擴展,但是只提供了一個有限的潛在運算符子集(也許受數(shù)據(jù)并行性的約束)。 將具有順序Stream擴展(稱為Seq )的步進庫(例如jOOλ)插入到無效空間中。 Seq添加了許多其他的Streaming運算符。 通常,jOOλ添加了許多缺失的功能特征,例如元組。

cyclops-react的核心目標以及添加諸如FutureStreams之類的原始功能,是提供一種將JDK API和第三方功能庫結(jié)合在一起的機制。 Java 8推出后,出現(xiàn)了寒武紀的酷庫爆炸式增長。像Javaslang和Project Reactor這樣的庫。 首先, cyclops -react通過擴展JDK并利用jOOλ , pCollections和Agrona之類的其他庫來做到 這 一點 。 這些庫又在可能的情況下擴展了JDK接口,以添加諸如持久性集合之類的功能,并等待免費的Many Producer Single Consumer Queue。

除了重用和擴展JDK接口之外,我們的目標是通過利用第三方標準(例如反應(yīng)流API)和在沒有設(shè)置標準的情況下構(gòu)建我們自己的抽象,使開發(fā)人員可以輕松地與外部庫集成。 我們目前關(guān)注的集成庫是Google的Guava,RxJava,Functional Java,Project Reactor和Javaslang 。 我們已經(jīng)創(chuàng)建了用于包裝諸如Stream, Optional & CompletableFuture類的類型的抽象-以前不存在接口,或者以前不可能存在接口。 我們之所以選擇這些目標,是因為我們在微服務(wù)體系結(jié)構(gòu)的生產(chǎn)中使用了Cyclops-react,并且能夠利用正確的技術(shù)解決問題并將其與我們的其余代碼庫順利集成是至關(guān)重要的。

cyclops-react是一個功能豐富的大型項目,此外還具有許多集成模塊 。 在下面的文章中,我將介紹一些可用的功能,其特定目的是展示cyclops-react如何幫助將JDK上的所有點連接起來,并進入Java 8開源社區(qū)的步伐。

擴展JDK

可能的話,cyclops-react擴展了JDK API。 例如, ReactiveSeq添加了用于處理錯誤,異步處理的功能,并且進行了更多擴展,從而擴展了JDK Stream和jOOλ的Seq。 cyclops-react Collection擴展而不是創(chuàng)建新的collection實現(xiàn),而是實現(xiàn)并擴展了適當?shù)腏DK接口。 然后, LazyFutureStream -react LazyFutureStream擴展了ReactiveSeq ,并允許在期貨流上進行聚合操作,就好像它是一個簡單的Stream一樣(這對于異步和LazyFutureStream地處理大量典型的Java I / O操作非常有用)。

ListX擴展了List ,但添加了渴望執(zhí)行的運算符

ListX<Integer> tenTimes = ListX.of(1,2,3,4).map(i->i*10);

cyclops-react增加了許多運算符供用戶探索。 例如,我們可以同時在多個集合中應(yīng)用函數(shù)

反應(yīng)流API充當數(shù)據(jù)的生產(chǎn)者(發(fā)布者)和消費者(訂戶)之間的天然橋梁。 所有獨眼巨人反應(yīng)數(shù)據(jù)類型都從反應(yīng)流中實現(xiàn)Publisher接口,并且還提供了可以轉(zhuǎn)換為任何獨眼巨人反應(yīng)類型的Subscriber實現(xiàn)。 這使得與其他基于反應(yīng)流的庫(例如Project Reactor)的直接集成變得簡單。

例如,我們可以從任何獨眼巨人發(fā)布者(例如SortedSetX懶惰地填充Reactor Flux,或者從Reactor類型中填充獨眼巨人反應(yīng)類型。

Flux<Integer> stream = Flux.from(SortedSetX.of(1,2,3,4,5,6,7,8)); //Flux[1,2,3,4,5,6,7,8]ListX<Character> list = ListX.fromPublisher(Flux.just("a","b","c"));

Reactor Flux和Mono類型可以直接與cyclops-react For理解一起使用(每個受支持的庫在它們的集成模塊中也都有它們自己的本機For理解類集)。

// import static com.aol.cyclops.control.For.*;Publishers.each2(Flux.just(1,2,3), i -> ReactiveSeq.range(i,5),Tuple::tuple).printOut();/* (1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) */

For理解是一種通過級聯(lián)對適當方法的調(diào)用來管理帶有flatMap和map方法的類型上的嵌套迭代的方法。 在獨眼巨人反應(yīng)中,嵌套語句可以訪問先前語句的元素,因此For理解而言,這是管理現(xiàn)有行為的非常有用的方法。 例如,為了確保對可能返回空值的現(xiàn)有方法findId和loadData的調(diào)用(如果提供了空參數(shù),則將引發(fā)NPE),我們可以利用For理解,僅當返回帶有值的Optional時,該表達式才能安全地執(zhí)行l(wèi)oadData來自findId()

List<Data> data = For.optional(findId()).optional(this::loadData); //loadData is only called if findId() returns a value

類似地,可以使用諸如Try之類的類型來處理來自findId或loadData的異常結(jié)果,使用Futures來異步執(zhí)行鏈接的方法,依此類推。

建立跨庫抽象

Java 8將Monads引入了Java( Stream, Optional, CompletableFuture ),但沒有提供有助于重用的通用接口,實際上, CompletableFuture使用的方法名稱與Optional & Stream用于同一功能的方法名稱明顯不同。 因此map成為thenApply , flatMap thenCompose成為flatMap thenCompose 。 在Java 8世界中,單子已成為一種越來越普遍的模式,但是通常沒有辦法在它們之間進行抽象。 在Cyclops-react中,我們沒有嘗試定義代表monad的接口,而是構(gòu)建了一組包裝器接口和許多自定義適配器,以使跨Java 8的主要功能樣式庫中的不同實例適應(yīng)這些包裝器。 包裝器擴展了AnyM ( AnyM縮寫,并且有兩個子接口– AnyMValue表示解析為單個值的任何AnyMValue類型(例如Optional或CompletableFuture )或AnyMSeq最終解析為一個值序列(例如Stream)或列表)。 獨眼巨人擴展包裝器提供了一種機制,用于包裝來自RxJava,Guava,Reactor,FunctionalJava和Javaslang的類型。

//We can wrap any type from Reactor, RxJava, //FunctionalJava, Javaslang, Guava AnyMSeq<Integer> wrapped = Fj.list(List.list(1,2,3,4,5));//And manipulate it AnyMSeq<Integer> timesTen = wrapped.map(i->i*10);

cyclops-react提供了一組通用接口,這些包裝器(和其他cyclops-react類型)都繼承自這些接口,從而使開發(fā)人員可以編寫更多通用的可重用代碼。 AnyM擴展了反應(yīng)流發(fā)布者,這意味著您可以使任何Javaslang,Guava,FunctionalJava或RxJava類型成為具有Cyclops-react的反應(yīng)流發(fā)布者。

AnyMSeq<Integer> wrapped = Javaslang.traversable(List.of(1,2,3,4,5));//The wrapped type is a reactive-streams publisher Flux<Integer> fromJavaslang = Flux.from(wrapped);wrapped.forEachWithError(System.out::println,System.out::err);

此外,來自Cyclops反應(yīng)的反應(yīng)性功能直接在AnyM類型上提供。 這意味著,例如,我們可以安排從Javaslang或FunctionalJava流中發(fā)出數(shù)據(jù)的時間–延遲或異步執(zhí)行reduce操作。

AnyMSeq<Integer> wrapped = Javaslang.traversable(Stream.of(1,2,3,4,5));CompletableFuture<Integer> asyncResult = wrapped.futureOperations(Executors.newFixedThreadPool(1)).reduce(50, (acc, next) -> acc + next); //CompletableFuture[1550]AnyMSeq<Integer> wrapped = FJ.list(list.list(1,2,3,4,5));Eval<Integer> lazyResult = wrapped.map(i -> i * 10).lazyOperations().reduce(50, (acc,next) -> acc + next); //Eval[15500]HotStream<Integer> emitting = wrapped.schedule("0 * * * * ?", Executors.newScheduledThreadPool(1));emitting.connect().debounce(1,TimeUnit.DAYS).forEachWithError(this::logSuccess,this::logFailure);

在cyclops-react和新的更廣泛的Java 8生態(tài)系統(tǒng)中,都有很多值得探索的地方,希望您自己玩樂,學(xué)習(xí)Java 8并擴展Java 8的邊界,這將是一次有趣的冒險!

翻譯自: https://www.javacodegeeks.com/2016/05/cyclops-react-organises-cambrian-explosion-java-8-libraries.html

總結(jié)

以上是生活随笔為你收集整理的独眼巨人反应组织了Java 8库的寒武纪爆发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 69天堂 | 精品人妻一区二区三区日产乱码卜 | 国产精品久久久久久久av福利 | 日韩黄色一级大片 | 稀缺呦国内精品呦 | 美国毛片av | 神马久久久久久 | 看黄色一级视频 | 又粗又大又硬毛片免费看 | 国产手机精品视频 | 四川一级毛毛片 | 成年人黄色免费视频 | 欧美a级在线免费观看 | 国产日本一区二区 | 久久99久久99精品中文字幕 | 亚洲精品免费网站 | 91精品国产综合久久精品图片 | 福利社av | 另类ts人妖一区二区三区 | 国产精品日韩欧美一区二区三区 | 18欧美性xxxx极品hd | 黄页网站视频在线观看 | 国产免费高清 | 国产超碰人人爽人人做人人爱 | 日韩激情成人 | 日韩18p| 免费av在| 亚欧在线免费观看 | 国产人妻一区二区三区四区五区六 | 日日摸日日 | 亚洲自拍小视频 | 免费一级suv好看的国产网站 | 欧美一区二区三区影视 | 在线免费视频一区二区 | 精品玖玖玖 | 色噜噜影院 | jul023被夫上司连续侵犯 | 欧美三级网 | 日韩成人精品 | 性欧美bbw | 无码人妻精品一区二区蜜桃视频 | 快播av在线| 日韩视频免费观看高清完整版 | 精产国品一二三区 | 国产精品2区 | 国产剧情演绎av | 亚洲天天影视 | 一级特黄视频 | 日韩免费在线播放 | 久久久夜色精品亚洲 | 久久久久久久久久福利 | 久久精品欧美一区二区三区不卡 | 成人在线免费看片 | 免费视频中文字幕 | 91亚色 | 69亚洲| 中文字幕乱码在线观看 | 天天草综合 | jizz中国少妇| 男人的天堂在线视频 | 18成人免费观看网站 | www..com黄色| 日韩午夜伦| 三年在线观看视频 | 97精品一区二区 | 天天干天天草 | 中文写幕一区二区三区免费观成熟 | 国产精品免费av | 日韩经典在线观看 | 午夜一区二区三区免费观看 | 四虎免费在线观看 | 国产麻豆交换夫妇 | 美女爆乳18禁www久久久久久 | 中文字幕在线网站 | 精品一区二区三区免费毛片 | 美日韩丰满少妇在线观看 | 69xx免费视频 | 日本一区欧美 | 性――交――性――乱a | 朝桐光av在线一区二区三区 | 久久精品亚洲一区 | 国产第99页 | 永久免费在线观看av | 伊人成综合网 | 久久精品国产成人av | 中国亚洲女人69内射少妇 | 欧美一区二区三区黄片 | 日韩视频区 | 波多野结衣福利视频 | 欧美精品 日韩 | 超碰超碰在线 | 欧美一级免费在线观看 | 欧美黄片一区 | 黄色小网站入口 | 亚洲一区二区在线观看视频 | 日韩一级免费 | 国产操视频| 动漫涩涩免费网站在线看 | 欧产日产国产69 |