顽皮狗 多线程分享

有没有想过圣诞老人如何为世界各地的孩子们提供节日礼物? 有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());

该流将产生一长串列表,其中仅包含一直很好的孩子。 为了使圣诞老人能够优化其送货路线,该列表按居住国家/地区排序。

参加儿童和假期礼物

该列表似乎不完整。 圣诞老人如何跟踪向谁发送的礼物? 现在
HolidayGiftHolidayGift上用场。 由于有些孩子向圣诞老人提供了他们的愿望清单,因此我们现在可以将两个表结合在一起,以构成一个包含所有好孩子及其相应礼物的完整列表。 包括没有任何希望的孩子很重要(他们会得到随机礼物),因此我们加入了左联盟。

var join = joinComponent.from(ChildManager.IDENTIFIER).where(Child.NICE.isTrue()).leftJoinOn(HolidayGift.GIFT_ID).equal(Child.GIFT_ID).build(Tuples::of);

Speedment正在使用构建器模式创建Join<T>对象,然后可以反复使用该对象以创建具有类型元素的流
T 。 在这种情况下,它用于HolidayGift ChildHolidayGiftgift_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建议!...相关推荐

  1. 谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!

    有没有想过圣诞老人如何为世界各地的孩子们送上节日礼物? 有20亿个孩子,每个孩子都有自己的愿望清单,他会在24小时内完成. 这意味着每个孩子平均需要43微秒,他需要检查每个孩子是否顽皮或好. 您无需再 ...

  2. 一文看懂“业务定制智能客服”的产品设计_团员分享_@苍狼剑歌

    前言:本文作者是"AI产品经理大本营"团员@苍狼剑歌,现任某一线大厂AI产品经理.另外,文末还有2个"hanniman读者专属福利",1)优惠券 for 三节课 ...

  3. python爬虫学到什么地步找工作_爬虫学到什么水平可以去找工作?这是我给你的一个建议!...

    分享下我的经验与教训 ( . ) 爬虫学到什么水平可以去找工作?这是我给你的一个建议!-1.jpg (14.32 KB, 下载次数: 0) 2018-7-27 13:15 上传 最近很多朋友问我,我在 ...

  4. 一文看懂“声纹识别VPR” | AI产品经理需要了解的AI技术概念_团员分享_@cony

    前言:声纹识别是AI领域中一个看似很小.但其实有机会在近期落地,且比较有意思的细分方向:本文作者是"AI产品经理大本营"团员@cony  ,她总结了AI产品经理"最必要& ...

  5. 一文了解“医疗影像+AI”发展现状_团员分享_@lazy_yy

    前言:本文作者是咱们AI产品经理大本营成员@lazy_yy,他用最干练的文字,帮大家快速了解"医疗影像+AI"方向的基本信息.欢迎更多AI产品经理们也来加入干货输出队伍:) . 医 ...

  6. 如何规划一款AI硬件产品(以人脸识别考勤门锁为例)_团员分享_@ocean

    前言:本文作者团员@ocean,分享了很多来自实战的内容,特别是人脸识别考勤门禁一体机的需求分析,以及人脸识别算法指标(准确率.召回率.误识率.拒识率.ROC曲线和识别速度),大家能直接借鉴到自己的工 ...

  7. 人脸识别产品设计,AI产品经理需要了解的实战干货都在这里了_团员分享_@阳春柏樰...

    前言:本文作者团员@阳春柏樰,有2年半CV相关产品经验.本文,再加上本公众号曾分享过的文章<人脸识别 | AI产品经理需要了解的CV通识(二)>,就足够产品经理们入门人脸识别了,推荐大家收 ...

  8. 批次管理的质量跟踪案例分享_食品加工行业

    批次管理的质量跟踪案例分享_食品加工行业 最近接触了一个食品行业的项目,针对食品行业有几大特点和行业的特殊性: 1.保质期的控制与管理 2.物料进行化学实验 3.原料采购时扣率 4.物料进行批次跟踪 ...

  9. 酷狗服务器显示失败怎么回事,酷狗音乐如何分享音乐失败怎么办 ?酷狗音乐分享音乐失败如何解决?...

    对于喜欢听歌的伙伴而言,音乐是无国界的,在酷狗音乐里面可以随时播放国内外歌曲,觉得好听的歌曲还可以分享给好友听,但是最近有用户反映自己分享音乐出现失败显示,不知道如何解决的伙伴,可以在木蚂蚁看看哦! ...

最新文章

  1. CSS属性之字体(Font)
  2. MySQL注射绕过技巧(三)
  3. --------------springMVC的开篇,以及底层执行流程,配置视图解析器,静态资源的访问,流程图,工作原理...
  4. Java后端WebSocket的Tomcat实现(转载)
  5. 代码质量的几点新思考
  6. Shell命令-磁盘与文件系统之e2fsck、mkswap
  7. html5编程技术代码,编程技术—CSS技术
  8. Session History 属性和方法
  9. Kubernetes集群如何重启
  10. 关于软考的一些事,你知道吗?
  11. 如何安装SQL server2005的查询分析器(绝对原创)
  12. tomcat日志配置详解
  13. 金融计量学第一次实验:eviews做多元线性回归分析
  14. npm安装ionic相关设置
  15. python-爬取贴吧的时候表情的处理。
  16. macOS 开发 - 使用 ScreenSaverView 制作屏幕保护程序
  17. 【机器视觉】机器人及视觉检测系统在螺丝检测包装生产线上的应用
  18. excel使用vb选中指定单元格,到指定行的最后一行有数据的等行数的单元格区间(列等高复制)
  19. 图书馆馆藏书籍管理功能
  20. 从100套真题中提炼而出的100个经典句子

热门文章

  1. 牛客题霸 二分查找 C++题解/答案
  2. CF662C Binary Table(FWT_XOR卷积)
  3. YbtOJ#20089-[NOIP2020模拟赛B组Day10]平衡的树【贪心】
  4. P4026-[SHOI2008]循环的债务【dp】
  5. P6834-[Cnoi2020]梦原【数学期望,树状数组】
  6. jzoj3844-统计损失【树形dp,换根法】
  7. P2514-[HAOI2010]工厂选址【贪心】
  8. 【jzoj】2018/2/2 NOIP普及组——D组模拟赛
  9. 医院(jzoj 1611)
  10. Python基础案例(一)