顽皮狗 多线程分享_谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!...

顽皮狗 多线程分享

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

您无需再怀疑了。 我会透露这个秘密。 他正在使用Java 11和具有超快执行速度的现代流ORM。

Java 11建议

尽管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

顽皮狗 多线程分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021新交规超速处罚规定

1.时速超过限定时速不到10%的&#xff0c;给予警告&#xff1b; 2.在限速为50公里以下的道路&#xff0c;时速超过限定时速10%以上不到20%的&#xff08;必须低于时速55公里&#xff09;&#xff0c;处50元罚款&#xff1b;超过限定时速20%以上不到50%的&#xff0c;处100元罚…

处理接口超时_架构设计|异步请求如何同步处理?

本文创意来自一次业务需求&#xff0c;这次需要接入一个第三方外部服务。由于这个服务只提供异步 API&#xff0c;为了不影响现有系统同步处理的方式&#xff0c;接入该外部服务时&#xff0c;应用对外屏蔽这种差异&#xff0c;内部实现异步请求同步。全文摘要&#xff1a;异步…

使用Spring Boot和MongoDB构建一个React式应用程序

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 如果您要处理大量流数据&#xff0c;React式应用程序可让您更好地扩展。 它们是非阻塞…

jax-ws和jax-rs_JAX-RS和OpenAPI对Hypermedia API的支持:任重而道远

jax-ws和jax-rs或早或晚&#xff0c;大多数积极使用REST&#xff08;ful&#xff09; Web服务和API的开发人员偶然发现了这种真正的外星事物&#xff0c;即HATEOAS &#xff1a; 超文本作为应用程序状态的引擎 。 对HATEOAS是什么及其与REST的关系的好奇最终将导致发现Richards…

如何下载MySQL的JDBC驱动包

1.打开 MySQL 官网&#xff1a;https://www.mysql.com/ 2.点击 DOWNLOADS&#xff0c;把页面滚动到最下面&#xff0c;点击 MySQL Community (GPL) Downloads 3.点击 Connector/J 4.点击 General Availability(GA) Releases&#xff0c;在 Select Operating System 下拉列表选…

IntelliJ IDEA for Mac如何添加jar包/如何导入jar包/导包

文章目录如何将 jar 包添加到已存在的资源库中将 jar 包添加到项目级别的资源库中将 jar 包添加到全局级别的资源库中将 jar 包添加到模块级别的资源库中创建资源库创建模块级别的资源库创建项目级别的资源库创建全局级别的资源库给某个模块单独添加 jar 包模块的依赖标签页&am…

r2dbc_使用Spring Data R2DBC进行异步RDBMS访问

r2dbc不久之前&#xff0c;发布了JDBC驱动程序的React性变体。 称为R2DBC。 它允许将数据异步流传输到已预订的任何端点。 通过将R2DBC之类的React性驱动程序与Spring WebFlux结合使用&#xff0c;可以编写一个完整的应用程序&#xff0c;以异步方式处理数据的接收和发送。 在本…

python中布尔类型是特殊的_Python中的特殊方法以及应用详解

前言Python 中的特殊方法主要是为了被解释器调用的&#xff0c;因此应该尽量使用 len(my_object) 而不是 my_object.__len__() 这种写法。在执行 len(my_object) 时&#xff0c;Python 解释器会自行调用 my_object 中实现的 __len__ 方法。除非有大量的元编程存在&#xff0c;直…

IntelliJ IDEA 自动补全变量名称和变量类型(自动补全变量的声明内容)

文章目录varOption EnterOption Command Vvar // 如下声明定义一个字符串变量 String s new String(); // 1 先编写 new String() // 2 在 new String() 后面输入 .var 直接回车&#xff0c;即可得到我们想要的变量了 // 3 上面生成的变量名可能不是我们想要的&#xff0c…

jdk11 jdk12_JDK 12附带紧凑数字格式

jdk11 jdk12JDK 12 Early Access Build 24引入了对紧凑数字格式的支持 。 JDK-8188147&#xff08;紧凑数字格式支持&#xff09;CSR的“摘要”是简单的句子&#xff0c;“添加了对JDK中的紧凑/短数字格式的支持。” 同一CSR还提供了详细的“解决方案”部分&#xff0c;该部分提…

全连接层 时间复杂度_神经网络全连接层(3)

CNN网络基础结构神经网络-全连接层(3)上一回我们聊完了算法&#xff0c;这回我们正式开始写代码。上回在做公式推导的时候&#xff0c;我们实际上只是针对一个数据样本进行推导&#xff0c;而实际中&#xff0c;计算和训练都是一批一批完成的。大多数机器学习训练都有batch的概…

line和spline_探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)

line和spline最近引起我注意的一个有趣且很有希望的开源项目是Spline &#xff0c;它是由Absa维护的Apache Spark数据沿袭跟踪和可视化工具。 该项目由两部分组成&#xff1a;一个在驱动程序上工作的Scala库&#xff0c;该库通过分析Spark执行计划来捕获数据沿袭&#xff0c;以…

MacBook如何快速显示桌面

1.触控板中张开拇指和其它三指 2.通过触发角来快速显示桌面

怎么把word里面虚线变成实线_弱电不会制作cad图,花3分钟看完,只要会用WORD保证你能画出来...

今天我要给你介绍的就是Microsoft Office Visio是Microsoft Office 套件之一。安装Visio之后&#xff0c;可以类比Word的操作方法一样来使用&#xff0c;不过&#xff0c;就是比在Word里画图、修改更方便&#xff0c;功能更强大。特别是在做技术路线图、各种图表的绘图&#xf…

MacBook如何设置分屏浏览的快捷键

MacBook的系统自身无法设置&#xff0c;必须安装第三方软件才能设置&#xff0c;例如&#xff1a;BetterAndBetter、Magnet、BetterSnapTool 等。 BetterAndBetter 的设置&#xff0c;如下图所示&#xff1a;

api自动化测试_API测试和自动化101:基本指南

api自动化测试API代表A pplication P AGC软件我覆盖整个院落。 通常&#xff0c;API用于通过使用任何通信方式来促进两个不同应用程序之间的交互。 在网络上使用API​​时&#xff0c;我们将其称为“ Web服务”。 近年来&#xff0c;API已成为编程的Struts。 与在应用程序中一样…

web.config连接mysql_web.config中配置数据库连接的方式

在网站开发中&#xff0c;数据库操作是经常要用到的操作&#xff0c;ASP.NET中一般做法是在web.config中配置数据库连接代码&#xff0c;然后在程序中调用数据库连接代码&#xff0c;这样做的好处就是当数据库连接代码需要改变的时候&#xff0c;我们只要修改web.config中的数据…

BetterAndBetter(BAB)的使用详解

文章目录多指轻点时防止左键点击规则管理重置全部设置和规则多指轻点时防止左键点击 在正常情况下按下触控板的左键&#xff0c;使用鼠标选择好文本后&#xff0c;松开触控板的左键&#xff0c;就已经退出文本选择模式了&#xff0c;此时移动鼠标应该是不会影响到已经选择的文…

gradle使用maven_使用Gradle – 2019版从Travis可靠发布到Maven Central

gradle使用maven得益于在2018年和2019年末实现的显式登台存储库创建功能集&#xff0c;使您&#xff08;自动&#xff09;从Travis&#xff08;不仅是&#xff09;发布到Maven Central更加可靠。 背景 如果您仅想获取有关如何使工件从Travis发行的信息更可靠的信息&#xff0c…

mysql 事件 day hour_Mysql事件调度器(Event Scheduler)

Mysql中的事件调度器Event Scheduler类似于linux下的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的一、查看当前是否开启了event scheduler三种方法:1) SHOW VARIABLES LIKE ‘event_scheduler’;2) SELECT event_scheduler;3) SHOW PROCESSLIST;(是否有State为&a…