首页 文章 精选 留言 我的

精选列表

搜索[数据分析工具],共10000篇文章
优秀的个人博客,低调大师

JDK 17、16 和 11 的性能比较和分析

Java 17 于昨日正式发布,新版本提供了不少新特性和功能增强。不过对于大多数项目而言,往往需要更改代码才能利用到这些新变化,但性能除外 —— 开发者只需要升级 JDK 版本,就能免费获得性能提升。 规划调度引擎OptaPlanner 项目负责人对JDK 17、JDK 16 和 JDK 11 的性能基准测试进行了对比,看看 Java 17 的性能提升是否值得我们去升级。 测试环境和流程 硬件:稳定的机器,没有任何其他计算要求的进程在运行。 配置Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads),128 GiBRAM ,RHEL 8 x86_64 JDKs(用于编译和运行) JDK 11 openjdk 11.0.12 2021-07-20 OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7) OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode) JDK 16 openjdk 16.0.2 2021-07-20 OpenJDK Runtime Environment (build 16.0.2+7-67) OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing) JDK 17 (下载日期为 2021-09-06) openjdk 17 2021-09-14 OpenJDK Runtime Environment (build 17+35-2724) OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing) JVM 选项:启用-Xmx3840M并明确指定垃圾回收器: -XX:+UseG1GCfor G1GC,低延迟垃圾回收器(三个 JDK 版本的默认项) -XX:+UseParallelGCfor ParallelGC,高吞吐量垃圾回收器 Main class:org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp,来自 OptaPlanner8.10.0.Final中的optaplanner-examples模块 每次运行都使用 OptaPlanner 解决 11 个规划问题,例如员工排班、学校时间表和云优化。每个规划问题运行 5 分钟。日志记录设置为 INFO。基准测试以 30 秒的 JVM 预热开始。 解决规划问题不涉及 IO(除了在启动期间加载输入的几毫秒)。单个 CPU 完全饱和。它会不断地创建许多短期存在的对象,然后 GC 将它们收集起来。 基准测试会衡量每秒计算的分数数量,分数越高代表性能越好。为提议的规划解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。 运行次数:每个 JDK 和每个垃圾回收器组合按顺序运行 3 次。下面的结果是这 3 次运行的平均值。 测试结果 Java 11 (LTS) and Java 16 versus Java 17 (LTS) G1GC versus ParallelGC on Java 17 总结 基于 OptaPlanner 用例,这些基准测试表明: 对于 G1GC(默认),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41% 对于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37% Parallel GC 比 G1 GC 快 16.39% 简而言之,最新的 JDK 更快,高吞吐量垃圾回收器比低延迟垃圾回收器更快。 因此,Java 17 带来的性能提升非常值得升级,更重要的是它可以免费商用,而且还是 LTS 版本。所以你还要坚持 Java 8 一万年不动摇吗? 原文:https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html

优秀的个人博客,低调大师

HarmonyOS轻量JS开发框架与W3C标准差异分析

HarmonyOS轻量JS应用开发框架(下文简称“框架”),是HarmonyOS为开发者提供的一套开发JS应用的开发框架。开发框架采用类小程序的web开发方式,其实现大部分遵循W3C标准(主流web开发标准),但由于设备条件限制(例如,ROM和RAM大小),“框架”中部分组件和属性与W3C标准存在差异,需要开发者在开发过程中了解和掌握。 本文将会梳理当前“框架”已有的组件和属性与W3C标准相对应组件和属性的主要差异点,并配以示例说明,供开发者在开发过程中参考。 主要差异点包括:width和height属性、绝对定位和相对定位、文字显示、页面滑动和长按事件。 width和height属性 作为一个前端开发者,在开发网页或者应用的过程中,我们一般不会手动设置组件的高度和宽度,而是希望元素的大小根据窗口或者子元素自动调整,这就是自适应能力。 自适应能力使得布局更灵活,可适应不同设备、不同窗口和不同分辨率下的显示。 但是,“框架”当前提供的组件除text外,皆不支持内容高度和宽度的自适应能力,必须由开发者明确指定高度和宽度,否则组件不会显示。 以一段简单的代码为例: <divstyle="background-color:red;"> <divstyle="width:100px;height:100px;background-color:yellow;"></div> </div> 根组件div未设置高宽属性,子组件div设置了高宽属性,在“框架”和W3C标准中其运行效果图分别如图1和图2所示:从图1和图2可以看出,“框架”中根组件必须设置高度和宽度,否则无法显示,即使根组件的子组件设置了高宽度属性,界面也无法显示。另外由于W3C标准的div组件是块状元素,如果没有设置宽度,会独占一行,所以在图2中,没有设置宽度,其显示范围为一整行。 “框架”中设置根组件的高度和宽度,则正常显示,效果如图3所示: <divstyle="width:200px;height:200px;background-color:red;"> <divstyle="width:100px;height:100px;background-color:yellow;"></div> </div> 针对text组件,不设置高宽属性的条件下,“框架”和W3C标准下web开发界面显示效果一致,如图4和图5所示: <text> HelloWorld! </text> 绝对定位和相对定位 如何实现绝对定位和相对定位?如果你常用html语言开发,你可能会首先想到设置position属性为absolute和relative,然后通过left和top设置距离即可实现绝对定位和相对定位的效果,其实现代码如下所示: <html> <head> <styletype="text/css"> h2.left{ position:relative; left:30px; top:30px; } h2.right{ position:absolute; left:90px; top:160px; } </style> </head> <body> <h2>这是位于正常位置的标题</h2> <h2class="left">这个标题相对于其正常位置向右向下移动</h2> <h2class="right">这个标题相对于其页面左上角位置向右向下移动</h2> </body> </html> 但是在“框架”中,我们查看HarmonyOS官网JS API文档后发现,position属性是不支持设置absolute和relative,那该如何实现绝对定位和相对定位这两种效果呢? 如果我们仔细阅读HarmonyOS官网文档,我们会发现“框架”提供了一个新组件stack,借助这个组件我们可以实现绝对定位的效果,示例代码如下所示,添加一个stack根组件(同时也作为父组件),其子组件为div,然后设置其left和top的值为50px来实现绝对定位的效果,其效果如图6所示,子组件div相对于父组件stack向下、向右各偏移50px。 <stackstyle="width:200px;height:200px;background-color:red;"> <div style=" left:50px; top:50px; width:100px; height:100px; background-color:yellow;" > </div></stack> 另外,绝对定位存在一种特殊场景:如果是根组件,直接设置top和left属性即可实现绝对定位功能;非根组件,其父组件必须是stack,才能通过设置top和left属性来实现绝对定位功能。根组件绝对定位是相对于页面左上角做偏移,非根组件绝对定位是相对于父组件做偏移。 如下代码所示,根组件直接设置top和left属性实现绝对定位,由于此时根组件作为父组件不是stack,所以设置子组件的绝对定位无效,如图7中所示,子组件黄色div相对于父组件红色div未实现绝对定位的效果。 文章后续内容和相关附件可以点击下面的原文链接前往学习 原文链接:https://harmonyos.51cto.com/posts/4465#bkwz 想了解更多关于鸿蒙的内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://harmonyos.51cto.com/#bkwz

优秀的个人博客,低调大师

阿里云服务器公网宽带的理解及误区(详细分析)

发现很多同学对阿里云服务器公网宽带不太理解,比如公网宽带实际下载速度,阿里云宽带的上行和下行方向以及上传和下载是否收费的问题,哪个快分享笔者对阿里云公网宽带的理解,以1M宽带为例: 阿里云公网宽带的实际下载速度的误区 很多同学认为多少兆的宽带下载速度就是多少M每秒,实际上这是错误的。以1M宽带为例,1M宽带的实际下载速度并不是1M/S,而是128KB/S。为什么1M宽带下载速度不是1M/秒呢?这是由于服务商提供的宽带单位是指比特bit,而下载速度使用的单位是字节Byte,8比特bit = 1字节Byte,所以,宽带和下载速度之间有个8倍的关系。 综上,无论是阿里云还是其他云厂商,1M公网宽带的下载速度峰值都是128KB/S,5M公网宽带的下载速度峰值为128KB/S5=640KB/秒,10M公网宽带的下载速度峰值为128KB/S10 = 1.25M/秒,以此类推。 阿里云宽带上行和下行的理解 阿里云宽带根据方向不同分为上行和下行,那么什么是上行?什么是下行?以云服务器为中心,流量流出云服务器为下行,流量流入云服务器为上行。哪个快来说说上行和下行典型的使用场景,大家就知道了: 上行宽带(入网):用户上传文件到云服务器占用的是上行宽带,上行宽带是免费的;下行宽带(出网):用户从云服务器下载文件到本地占用的是下行宽带,下行宽带是付费的,下行宽带就是用户购买的公网宽带。注意:上行宽带也可以理解为入网带宽,下行宽带也可以理解为出网带宽。 以上为对阿里云公网宽带方向及下载速度的理解。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册