顽皮狗 多线程分享_谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!...
頑皮狗 多線程分享
有沒有想過圣誕老人如何為世界各地的孩子們提供節日禮物? 有20億個孩子,每個孩子都有自己的愿望清單,他會在24小時內完成。 這意味著平均每個孩子43微秒,他需要檢查每個孩子是否頑皮或好。
您無需再懷疑了。 我會透露這個秘密。 他正在使用Java 11和具有超快執行速度的現代流ORM。
盡管Santa的后備數據庫既舊又慢,但他仍可以使用標準Java流和JVM內存技術來分析數據(以微秒為單位)。 圣誕老人的數據庫包含兩個表。 Child持有每一個孩子的世界, HolidayGift指定可用于生產圣誕老人的車間的所有項目。 一個孩子只能有一個愿望,例如哈希規則。
以流查看數據庫
Speedment是一種基于流的現代ORM,它能夠將關系數據庫表視為標準Java流。 眾所周知,只有好孩子才能得到禮物,因此區分頑皮的人和乖的人是很重要的。 使用以下代碼可以輕松完成此操作:
var niceChildren = children.stream().filter(Child.NICE.isTrue()).sorted(Child.COUNTRY.comparator()) .collect(Collectors.toList());該流將產生一長串列表,其中僅包含一直很好的孩子。 為了使圣誕老人能夠優化其送貨路線,該列表按居住國家/地區排序。
參加兒童和假期禮物
該列表似乎不完整。 圣誕老人如何跟蹤向誰發送的禮物? 現在
HolidayGift表HolidayGift上用場。 由于有些孩子向圣誕老人提供了他們的愿望清單,因此我們現在可以將兩個表結合在一起,以構成一個包含所有好孩子及其相應禮物的完整列表。 包括沒有任何希望的孩子很重要(他們會得到隨機禮物),因此我們加入了左聯盟。
Speedment正在使用構建器模式創建Join<T>對象,然后可以反復使用該對象以創建具有類型元素的流
T 。 在這種情況下,它用于HolidayGift Child和HolidayGift 。 gift_id只包括gift_id并匹配在gift_id字段中包含相同值的gift_id 。
這是圣誕老人交付所有包裹的方式:
join.stream().parallel() .forEach(SleighUtil::deliver);可以看出,圣誕老人可以輕松運送所有由馴鹿攜帶的帶有平行雪橇的包裹。
這會將流呈現為有效SQL查詢,但不幸的是,它還不足以及時完成。
使用JVM中的內存加速
現在到有趣的部分。 Santa正在激活Speedment中的Java虛擬機內存加速組件,稱為DataStore。 這是通過以下方式完成的:
var santasWorkshop = new ApplicationBuilder().withPassword("north-pole")// Activate DataStore.withBundle(DataStoreBundle.class).build();// Load a snapshot of the database into off-heap memorysantasWorkshop.get(DataStoreComponent.class).ifPresent(DataStoreComponent::load);此啟動配置是對應用程序唯一需要的調整。 以上所有流構造均保持不變。 啟動應用程序時,數據庫的快照被拉入JVM,并以堆外方式存儲。 由于數據是堆外存儲的,因此不會影響垃圾回收,并且數據量僅受可用RAM的限制。 由于圣誕老人正在使用云服務,因此無法阻止它加載TB的數據,并且可以輕松擴展其RAM。 現在,該應用程序將更快地運行一個數量級,Santa能夠及時交付所有軟件包。
通過In-JVM-Memory加速運行自己的項目
如果您想嘗試一下數據庫應用程序的運行速度,可以在此處找到一個Initializer。 只需在所需的數據庫類型(Oracle,MySQL,MariaDB,PostgreSQL,Microsoft SQL Server,DB2或AS400)中打勾,您就會獲得一個POM和一個為您自動生成的應用程序模板。
如果您需要更多幫助來設置項目,請查看Speedment
GitHub頁面或瀏覽用戶指南 。
s
感謝Julia Gustafsson和Carina Dreifeldt共同撰寫本文。
翻譯自: https://www.javacodegeeks.com/2018/12/naughty-nice-santa-gives-java-11-advice.html
頑皮狗 多線程分享
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的顽皮狗 多线程分享_谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剪刀英语怎么读 剪刀英语如何读
- 下一篇: 马英语单词怎么读 马英语是什么