Spring Boot 3.2 + CRaC = 王炸!

Spring Boot 3.2 + CRaC = 王炸!

前段时间发布了 Spring 6.1 和 SpringBoot 3.2,它们都完全支持 CRaC(检查点协调恢复)。

如果你想了解有关 CRaC 的更多信息,请随时阅读此处:

https://docs.azul.com/core/crac/crac-introduction

CRaC 是一个 OpenJDK 项目,可以“快照”正在运行的 JVM(Java 虚拟机)并将其状态(包括你的应用程序)存储到磁盘。然后,在另一个时间点,你可以将 JVM 从保存的检查点恢复到内存中。这样,我们就可以启动应用程序、预热它并创建检查点。从保存的检查点恢复到内存主要依赖于磁盘I/O,这意味着它非常快(在毫秒范围内)。

为了测试 SpringBoot 3.2 对 CRaC 的支持,我将使用 SpringBoot Petclinic 演示。

https://github.com/spring-projects/spring-petclinic

对于这个小测试,我在我的 M1 Macbook Pro 上使用 4 核和 4GB RAM 在 Parallels 中运行 Ubuntu 22.04。

先决条件

要在 SpringBoot 3.2 中使用 CRaC,你需要具备三件事:

支持 CRaC 的 JVM

org.crac 的依赖项

可以存储检查点的文件夹

Spring Boot 基础就不介绍了,推荐看这个实战项目:

https://github.com/javastacks/spring-boot-best-practice

JDK

使用的 JDK(Java 开发工具包)是 Azul Zulu 21.0.1 + CRaC,你可以在此处获取:

Azul Downloads

JDK 适用于 x64 和 aarch64 CPU 架构以及 JDK 17 和 JDK 21。

推荐阅读:Java 8 腰斩!Java 17 暴涨 430%!!

权限

可能需要设置权限才能使用 CRIU,这意味着在运行演示的 Linux 机器上,你需要执行一次以下命令:

sudo chown root:root $JAVA_HOME/lib/criu
sudo chmod u+s $JAVA_HOME/lib/criu

org.crac。

将 petclinic 存储库克隆到本地计算机并添加对 org.crac 库的依赖项。

由于 CRaC 目前仅在 Linux 上可用,因此你找不到支持 MacOS 和 Windows 的 CRaC 的 JDK。这意味着如果你使用的是 Mac 或 Windows 计算机,则无法针对 CRaC API 进行编码。为了解决这个问题,org.crac 库提供了与支持 CRaC 的 JDK 中可用的相同 API,但你将在“org.crac”命名空间中找到它,而不是使用“jdk.crac”命名空间。

这样,即使在 MacOS 和 Windows 上,你也可以针对 CRaC API 进行编码,而不会出现任何问题,并且一旦你在具有启用 CRaC 的 JDK 的 Linux 系统上运行它,它将使用 CRaC 功能。

你可以在 Maven Central 上找到 org.crac ,因此你可以添加依赖,如下所示:

Gradle:

implementation 'org.crac:crac:1.4.0'

Maven:


org.crac
crac
1.4.0

为检查点创建一个文件夹

在我们测试之前,我们需要确保我们有一个可以存储检查点的文件夹,例如 /tmp_checkpoint 在项目文件夹中。

插播一条:如果你近期准备面试跳槽,点击Java面试库小程序刷题吧,共 2500+ 道,几乎覆盖了所有主流 Java 技术面试题。

不使用 CRaC 启动

克隆 petclinic 存储库后,你需要构建项目(例如 gradlew clean build),然后就可以运行它。

我们唯一感兴趣的是应用程序的启动时间。我对两个 JDK 版本(17 和 21)进行了测试,首先,只需从 17 切换到 21,petclinic 应用程序的启动时间就已经缩短了 500 毫秒!

因此,如果可能的话,你应该尽快切换 JDK,以获得更好的性能。

通过执行以下命令启动应用程序:

java -jar spring-petclinic-3.2.0.jar

以下是在不使用 CRaC 的情况下启动应用程序时的结果:

zulu jdk_Spring 6.1 CRaC 实现教程_SpringBoot 3.2 CRaC 支持

好的,快了大约 500ms,但启动仍然需要一些时间,所以让我们看一下 SpringBoot 3.2 中实现的另一种方法。

自动检查点

Spring 团队的工程师有一个好主意,通过在应用程序启动之前自动创建检查点来缩短 Spring/SpringBoot 框架的启动时间。

这是文档中的描述:

“当设置

-Dspring.context.checkpoint=onRefresh JVM 系统属性时,在

LifecycleProcessor.onRefresh 阶段启动时会自动创建一个检查点。此阶段完成后,所有非延迟初始化的单例都已实例化,并且 InitializingBean# afterPropertiesSet 回调已被调用;但生命周期尚未开始,并且 ContextRefreshedEvent 尚未发布。”

为了使用自动检查点,我们按如下方式启动应用程序:

java -Dspring.context.checkpoint=onRefresh -XX:CRaCCheckpointTo=./tmp_checkpoint -jar spring-petclinic-3.2.0.jar

执行应用程序后,它将创建检查点,并将检查点文件存储在文件夹 ./tmp_checkpoint 中,然后退出应用程序。

现在你可以通过执行以下命令从检查点恢复应用程序(这意味着再次启动它):

java -XX:CRaCRestoreFrom=./tmp_checkpoint

以下是从自动检查点恢复时与启动时间相关的结果

SpringBoot 3.2 CRaC 支持_zulu jdk_Spring 6.1 CRaC 实现教程

这非常酷,我们的启动时间比原始启动时间快一个数量级,而无需更改代码。这也意味着检查点仅包含框架代码,而不包含你的应用程序代码,因为它尚未启动。

插播一条:如果你近期准备面试跳槽,点击Java面试库小程序刷题吧,共 2500+ 道,几乎覆盖了所有主流 Java 技术面试题。

手动检查点

自动检查点已经是与启动时间相关的一个很大的改进,但我们甚至可以通过使用手动检查点来更快。

使用手动检查点时,你可以决定何时创建检查点。

为什么这很重要?

好吧,你可能想在 10 分钟后或当你的应用程序完全预热(大多数/所有代码已编译和优化)等时创建一个检查点。

创建手动检查点的过程与自动检查点类似,唯一的区别是你从应用程序外部触发检查点,而不是让框架自动创建检查点。

在开始之前,请确保检查点的文件夹为空。

首先,你按如下方式启动你的应用程序:

java -XX:CRaCCheckpointTo=./tmp_checkpoint -jar spring-petclinic-3.2.0.jar

现在,你需要等待应用程序完全启动,然后再打开第二个 shell 窗口。

在第二个 shell 窗口中,执行以下命令:

jcmd spring-petclinic-3.2.0.jar JDK.checkpoint

现在你应该看到在第一个 shell 窗口中(你启动 petclinic 应用程序的位置)创建了一个检查点并且应用程序已关闭。

你可以通过验证文件夹 ./tmp_checkpoint 是否包含检查点文件来检查应用程序是否已设置检查点。

现在你可以关闭第二个 shell 窗口。

要从此检查点恢复应用程序,请执行与自动检查点相同的命令:

java -XX:CRaCRestoreFrom=./tmp_checkpoint

这个手动触发的检查点不仅包含框架代码,还包含应用程序代码,这意味着我们应该看到更快的启动,因为应用程序已经由框架加载并启动。结果如下:

Spring 6.1 CRaC 实现教程_zulu jdk_SpringBoot 3.2 CRaC 支持

正如你所看到的,我们已经能够将 petclinic 应用程序的启动时间减少另一个数量级,降至 75 毫秒!

插播一条:如果你近期准备面试跳槽,点击Java面试库小程序刷题吧,共 2500+ 道,几乎覆盖了所有主流 Java 技术面试题。

信息

由于Spring 6.1和SpringBoot 3.2完全支持CRaC,因此我们不需要对代码进行修改。这里的完全支持意味着只要你使用 Spring 资源,框架就会负责在检查点之前关闭资源并在恢复后恢复它们。

如果你使用其他资源,则需要在相关类中实现 CRaC Resource 接口,并在“beforeCheckpoint()”方法中关闭其他资源(例如打开的文件或套接字连接),并在“beforeCheckpoint()”方法中重新打开其他资源。afterRestore()' 方法。

判决

正如我们所看到的,使用 CRaC 可以显着减少 SpringBoot 3.2 应用程序的启动时间。如果你只是想在不接触代码的情况下尝试一下,只需使用 Spring 6.1 / SpringBoot 3.2 中的自动检查点功能即可将启动时间减少一个数量级。

为了尽可能缩短启动时间,你可以手动创建检查点,这可以将启动时间缩短两个数量级。

CRaC 的优点在于它仍然在普通 JVM 上运行,并且在检查点/恢复后代码甚至可以进一步优化。

为了获得这些结果,我需要向 petclinic 项目添加几行代码,如果你想重现这些数字,请随时在我的 GitHub 存储库中克隆 petclinic 项目的副本。

推荐一个开源免费的 Spring Boot 实战项目:

https://github.com/javastacks/spring-boot-best-practice

2023年中国汽车零部件行业市场竞争愈加剧烈,自主品牌市占率大幅提升「图」

一、汽车零部件行业概述

1、分类

作为汽车工业的基础,汽车零部件种类繁多,从生产工艺区分包括铸造件、锻造件、冲压件、注塑件等,其中采用锻造工艺制造的汽车锻件一般用于承受冲击或交变应力的工作环境,在汽车行驶中发挥着重要作用。锻造是指在加压设备及工(模)具的作用下,使坯料或铸锭产生局部或全部的塑性变形,以获得一定几何尺寸、形状的零件(或毛坯)并改善其性能的加工工艺。

2、发展历程

我国汽车零部件行业起步较晚。起步阶段为整车带动零部件发展,技术水平低,进入21世纪,我国加入世界贸易组织后,汽车产业迅猛发展,并逐步发展成为世界第一大汽车产销国,带动汽车零部件制造业经营规模持续扩大及产业配套日益健全,并发展成为全球汽车零部件的重要供应集群中心之一。

二、汽车零部件行业发展背景

近年来,国家出台多项政策保障和支持汽车行业发展。随着“新四化”趋势的快速发展,发展新能源汽车是全球汽车产业转型升级、绿色发展的必由之路,也是未来中国汽车产业高质量发展的战略选择。国家出台的新能源汽车利好政策将使得新能源汽车产业进入加速发展的新阶段。促进汽车产业能源结构转型升级,为国内汽车零部件产业提供了良好的市场机遇

相关报告:华经产业研究院发布的《2024-2030年中国汽车零部件行业发展潜力预测及投资策略研究报告》

三、汽车零部件行业产业链

1、产业链

汽车产业是世界上规模最大和最重要的产业之一,是国民经济的重要支柱产业,其产业链长,关联度高,消费拉动大,资金、技术和人才密集等特征,在制造业中占有很大比重。我国的汽车零部件行业正是伴随着汽车工业的发展而成长起来的,汽车零部件上游行业主要包括钢铁、有色金属、电子元器件、塑料、皮革等。汽车零部件中游行业包括发动机组和电子控制系统属于汽车核心零部件。下游行业包括汽车整车制造厂商、汽车4S店、汽车修理厂、汽车零部件配件商和汽车改装厂等。

2、下游行业

2012年至2017年,我国汽车销量从1931万辆增长至2888万辆,年均复合增长率实现了8.38%。2018年起,由于购置税优惠政策的全面退出、宏观经济增速回落、中美贸易战以及消费信心等因素的综合影响,销量出现了一定程度的下滑。2018年、2019年,我国汽车销量同比分别下降2.77%和8.23%。得益于我国宏观经济和出口市场超预期的回暖、新能源车零售的超强回暖以及国内陆续出台政策刺激汽车消费。2021年、2022年我国汽车销量同比增长3.79%和2.25%,2023年上半年汽车销量为1324万辆,其中乘用车销量为952万辆。

四、汽车零部件行业现状

1、市场规模

汽车零部件行业为汽车整车制造业提供相应的零部件产品,是汽车工业发展的基础,目前,在汽车产业核心技术快速演进和供应链格局重塑的大背景下,我国汽车零配件行业稳步发展。2017年至2022年我国汽车零配件市场规模从3.7万亿元增长至5.4万亿元,预计2027年市场规模有望达7.8万亿元。

2、汽车零部件及配件制造收入

近年来,随着我国经济的高速发展及汽车消费市场的快速发展,我国汽车零部件行业迎来了巨大的发展机遇。2012年至2017年,我国汽车零部件制造业主营业务收入由2.22万亿元增长至3.88万亿元。2017年至2020年,在汽车整体市场滑坡、新能源汽车补贴下降、排放标准逐渐升高等因素影响下,我国汽车零部件制造业产值增速短期内有所波动。随着我国新能源车零售的回暖,2022年我国汽车零部件制造业产值相对2021年上涨3.16%,收入达4.20万亿元。

3、相关企业数量

我国汽车零部件制造企业主要集中在传统零部件领域,如发动机、变速器、底盘等,在新能源汽车零部件领域,如电池、电机、电子控制系统等,国内企业也逐渐崭露头角。2020年我国汽车零部件行业相关企业已经突破10万家,2022年我国汽车零部件相关企业注册量达到了21.42万家,预计2023年将达到25.2万家。

4、出口金额

目前,全球汽车零部件行业主要由欧美、日本等汽车工业发达国家主导,发展中国家汽车零部件企业在国际市场的综合实力相对有限。随着我国汽车零部件企业在质量管理体系、全球供应能力的不断提升,我国汽车零部件企业的国际竞争力逐步增强,2021年和2022年,我国汽车零部件出口金额分别为755.68亿美元和810.89亿美元,同比分别增长33.71%和7.31%,我国汽车零部件出口市场具有较好的发展前景。

五、汽车零部件行业竞争格局

1、竞争格局

随着全球电动汽车市场的蓬勃发展,全球汽车零部件供应商的格局正在快速发生变化。从我国汽车零配件行业企业竞争集群来看,宁德时代、华域汽车以及潍柴动力在市场竞争力和盈利水平上都具备一定的优势,其中,宁德时代2022年营收达3285.94亿元,同比增长152.07%。

2、重点企业

潍柴动力成立于2002年,其业务涵盖了动力总成(发动机、变速箱、车桥、液压)、整车整机、农业装备、智能物流等,是中国较早生产柴油机的厂家之一。2022年潍柴动力在全面提升各细分市场占有率、稳固市场龙头地位的同时,加大研发投入,夯实科技创新能力,以发动机热效率为代表的重大成果再次震撼世界。2023年上半年潍柴动力营收实现了52.35亿元,其中动力总成、整车整机及关键零部件营收达443.40,占总营收的41.78%。

华经产业研究院通过对中国汽车零部件行业海量数据的搜集、整理、加工,全面剖析行业总体市场容量、竞争格局、市场供需现状及行业典型企业的产销运营分析,并根据行业发展轨迹及影响因素,对行业未来的发展趋势进行预测。帮助企业了解行业当前发展动向,把握市场机会,做出正确投资决策。更多详细内容,请关注华经产业研究院出版的《2024-2030年中国汽车零部件行业发展潜力预测及投资策略研究报告》。

ROCKMMS外汇黑平台骗了我50万,我该怎么办?

近几年,出现了很多的不法分子利用微信、Q群,直播间等网络社交软件大量的添加投资者,不断的在朋友圈和群里面晒资金跟着老师赚了多少钱,还有“老师”带单,零风险、高回报等虚假宣传,引诱投资者“入坑”,最终血本无归。希望广大投资者提高警惕,不要轻易相信高收益、高回报的投资产品。最近我们就收到一位投资者的反馈,讲述了自己在ROCKMMS平台投资的经历。

2019年1月李先生被一个陌生网友拉进一个股票群,里面有老师分析股票,开直播间讲课,李先生有空了就听听课,一段时间后,老师说最近股票行情不好,说是恒生指数比较好做,T+0模式,买涨买跌都能买,比较简单,还晒盈利的截图,群里很多人也跟着说要开设账户一起做。后来李先生没抵挡住诱惑 ,李先生也抱着试试看的心情开了户,2月3日在ROCKMMS平台开设账户,一个叫封旭的老师加了李先生,说带李先生做单,给李先生指导。(技术分析团队V:hyhy2543)

封旭老师一直跟李先生说,资金越大风险越小,让李先生加大资金,然后李先生在2月10日入金8万人民币,2月19日又入金20万人民币,亏的差不多了又在2月25日入金6万人民币,一共入金34万人民币,期间操作有赚有亏,但是每次都是小赚大亏,直到后来亏到只剩8651元了。封旭老师说李先生资金太小了不好操作,要加大资金才好操作才可以回本,还说换个平台做,这个ROCKMMS系统太卡了,2019年3月10日出金结余8651元一个多月不到时间总共亏331349元。

后来李先生网上联系到了我们团队,我们团队对李先生分析了这种老师故意喊反单的骗局,李先生才恍然醒悟被骗了,李先生对老师对开设账户专员一点都不了解,根本就是个陌生人,对他们一无所知,却听信他们投了这么多钱进去 ,黑平台套路就是一开始让你小赚,让你放松警惕,然后让你血本无归。

随后我们团队风控组对ROCKMMS平台的正规性进行了鉴定。经鉴定ROCKMMS平台不合规,ROCKMMS平台rockmms.com域名注册时间为2013年5月26日。ROCKMMS平台宣称受澳大利亚ASIC监管,监管号AFSL:225398,以及塞浦路斯监管,监管号CySEC:164/12。通过查询ASIC得知,该监管号AFSL:225 398对应的监管公司为BLACKROCK ASSET MANAGEMENT AUSTRALIA LIMITED,但已于2014年3月19日撤销监管。另查询塞浦路斯监管得知,该监管号CySEC:164/12对应的真正公司网址为:http://www.fxclub-global.com/。显然,该平台盗用了ASIC和CySEC监管号。

现在被黑平台用各种手段诈骗的投资者非常的多,都是看见了高收益而忽略了正规平台的重要性,发现被骗后才后悔莫及。如果你被黑平台骗了,想要挽回亏损,或者自己想要投资外汇却对这个市场不了解或者没有技术我们团队(技术分析团队V:hyhy2543)成立至今,帮助了诸多在外汇市场亏损的投资者,并且给想要做外汇的投资者提供了优良的技术服务。金融市场是没有人给你免费服务的,我们团队也是一样的,我们的技术服务费和你的账户盈利息息相关,只有你的账户盈利了我们才会有收益,我们这样做的信心来源于我们成熟的技术,我们团队技术经过逐年沉淀,应对不同的客户资金量,市场行情已经有了稳定的做单技术。我们有技术,你有需求,互利共赢,方向一致。

(技术服务团队V:hyhy2543)