当前位置: 首页 > news >正文

制作触屏版网站开发网站建设服务开税率多少的票

制作触屏版网站开发,网站建设服务开税率多少的票,宣传推广图片,关于网站的建设论文作者#xff1a;牧思 山猎 前言 今年的 9 月 19 日#xff0c;作为最新的 LTS (Long Term Support) Java 版本#xff0c;Java 21 正式 GA#xff0c;带来了不少重量级的更新#xff0c;详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都…作者牧思 山猎 前言 今年的 9 月 19 日作为最新的 LTS (Long Term Support) Java 版本Java 21 正式 GA带来了不少重量级的更新详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都还没有在国内大规模普及Java 8 依然占据主流地位但及时更新 JDK 版本可以为开发者带来许多重要的价值包括应用程序性能和稳定性上的提升以及可以帮助提升生产力的新功能。作为亚洲地区最有影响力的可观测以及 APM 服务提供方阿里云 ARMS 团队也第一时间响应 Java 21 的 GA 发布率先对 Java 21 进行了适配帮助用户更好的观测 Java 21 应用 Java 21 主要新特性 Java 21 带来了 15 个新特性包括虚拟线程、分代式 ZGC 等重磅功能以及其他方面的优化让我们先睹为快体验一下这些新特性 1. 虚拟线程 虚拟线程 (Virtual Threads) 绝对是 Java 21 中最重量级的新特性此前在 Java 版本中每一个 java.lang.Thread 对象都只对应一个操作系统内核中的线程而线程在操作系统又是一种相对昂贵的系统资源线程的创建、切换、销毁等操作都需要进入到内核态。在高并发的场景下如果创建大量线程来处理请求将会导致多线程被频繁的挂起和切换非常消耗系统资源。 虚拟线程则是一种轻量级的用户态线程与传统线程由 OS 调度运行不同虚拟线程是由 JDK 底层调度运行的其创建、调度、销毁等操作全部由用户空间的库函数来完成也就是说虚拟线程与内核中的线程的对应关系是 M:N 的如图 1 所示 图 1线程与虚拟线程关系图 因此在高并发场景下创建大量虚拟线程来处理请求的开销相比创建大量线程来说将会降低很多。在 Java 程序中线程与虚拟线程的对比如表 1 所示 表 1线程与虚拟线程的对比表 在 Java 21 中可以通过以下几种方法创建虚拟线程并运行 // 方式一 Thread vt Thread.startVirtualThread(() - {}); // 方式二: Thread.ofVirtual().unstarted(() - {}); vt.start(); // 方式三: ThreadFactory tf Thread.ofVirtual().factory(); Thread vt tf.newThread(() - {}); vt.start(); // 方式四: ExecutorService executor Executors.newVirtualThreadPerTaskExecutor(); ThreadFactory tf Thread.ofVirtual().factory(); Thread vt tf.newThread(() - {}); executor.submit(vt);2. 分代式 ZGC 在 Java 21 中增加了对 ZGC 的分代支持 (Generational ZGC) 以提高垃圾回收的性能。在此之前ZGC 是没有分代概念的每次运行时都会去收集所有的对象不会考虑对象的年龄。但根据分代收集理论绝大部分对象都是朝生夕灭的并且熬过越多次垃圾收集过程的对象会越难死亡。清理年轻代对象需要的资源更少能清理出更多的内存反之清理老年代对象需要的资源更多能清理出的内存更少。这就意味着ZGC 可以基于分代收集理论更进一步的提升垃圾回收效率。于是在 Java 21分代收集机制被引入以更频繁的收集年轻代对象这对于使用 ZGC 的 Java 应用的性能提升有非常大的帮助。 在 Java 21 上使用 ZGC首先需要在 Java 启动命令中加入 -XX:UseZGC 选项开启 ZGC。默认情况下添加该选项后启用的是非分代的 ZGC如需使用分代式 ZGC则需要再额外添加 -XX:ZGenerational 选项。 # 使用分代式ZGC $ java -XX:UseZGC -XX:ZGenerational ...3. 其他特性 除了虚拟线程和分代 ZGCJava 21 还引入了其他有意思的特性比如 允许使用_字符声明未命名变量类似 go 语言中的_。允许使用匿名类与匿名实例的 main 方法可以利用如下所示的方式执行 main 函数。 void main() {System.out.println(Hello, World!); }具体的其它特性可以参考openjdk.org/projects/jdk/21/ 。 使用 ARMS 监控 Java 21 应用 ARMS 最新的 3.1.0 版本探针中我们对 Java 21 进行了支持开发者可以参考此文开启 Java 21 应用的可观测之旅。 编写 Java 21 应用 首先需要下载安装 JDK 21可以从 Oracle 等厂商的官网下载安装也可以通过 sdkman 等三方工具进行下载安装。 安装完 JDK 21 后可以参考以下代码编写一个简单的 SpringBoot 3.x 应用该应用中使用了 Java 21 的 Record Patterns 特性帮助用户用简洁的语法解构 Java 中的 record 对象 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.0.6/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdxxx/groupIdartifactIdxxx/artifactIdversionxxx/versionnamexxx/namepropertiesjava.version21/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/projectSpringBootApplication public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}record Point(int x, int y) {}RestControllerstatic class DemoController {RequestMapping(/demo)String demo(RequestParam String type) {Object object null;if (record.equals(type)) {object new Point(1, 2);} else {object object;}return solve(object);}private String solve(Object object) {if (object instanceof Point(int x, int y)) {return Point: x : y;}return Invalid Point;}} }接入 ARMS 对于 Java 应用ARMS 提供了多种便捷接入方式您可以参考应用监控接入概述 [ 2] 进行接入。对于运行在阿里云容器服务 ACK [ 3] 中的应用可以拥有最简单的接入方式基于 Pilot 模式实现探针的自动注入以及配置无需修改镜像只需要在应用 Yaml 中加入 2 个 Pod Label 就能接入 ARMS。 首先为 ACK 集群安装 ack-onepilot 组件如图2所示 图 2安装 ack-onepilot 安装完成之后在 ACK 集群内创建 Java 应用并在 pod 的 spec.template.metadata 字段中添加图 3 中的两个 Pod 标签。其中 armsPilotCreateAppName 代表接入到 ARMS 的应用名可以和 Deployment 名保持一致armsPilotAutoEnable 设置为 on 即可。您也可以直接编辑 Deployment 的 Yaml 文件添加 Pod 标签。 图 3添加标签 应用成功部署后在 ACK 控制台上会展示 ARMS 控制台链接如图 4 所示点击就能跳转到 ARMS 控制台。 图 4ARMS 控制台操作选项 Java 启动应用后应用也将会打印如图 5 所示的日志说明应用已经挂载上 ARMS 的探针。 图 5JDK21 应用启动日志 说明ARMS 对 Java 21 的支持依赖于 3.1.0 版本探针截至本文发表之日3.1.0 版本探针还没有正式发布您可以钉钉扫码加入 ARMS 支持 Java 21 体验群获取 3.1.0 版本探针。在 3.1.0 版本正式发布后您就可以直接在 ARMS 官网下载最新版探针或者通过通过 Pilot 模式自动获取 3.1.0 版本探针。 ARMS 支持 Java 21 体验钉钉群群号54565000535* 查看监控数据 应用启动成功后请求 /demo 接口将会得到图 7 所示的响应 图 7/demo 接口响应 在请求完 /demo 接口后可前往 ARMS 控制台的应用列表页面点击进入应用的监控页面如图 8 所示或者直接在 ACK 控制台上通过转接跳转进入 ARMS 控制台。 图 8ARMS 控制台应用列表 可以看到ARMS 已经成功识别到 Java 21 应用并收集相关可观测数据如图 9-11 所示这些观测数据可帮助用户快速洞悉系统运行状况加速线上问题排查效率提升业务运行稳定性。更多 ARMS 应用监控的重要功能比如智能洞察、调用链分析、CPU 内存诊断请参考 ARMS 应用监控帮助文档 [ 4] 。 图 9ARMS 应用元信息 图 10ARMS 应用接口调用信息 图 11ARMS 应总览信息 ARMS 3.X 版本探针新特性一览 大幅提升了对主流开源框架的埋点覆盖度支持对 Reactor Netty 和 Vert.x 等异步框架的完整耗时统计增加了 OceanBase 的组件支持同时优化了PostgreSQL、Kafka 等组件的埋点设计提供了更加精准、更加丰富的指标和 Span 数据。详情请参考 ARMS 支持的 Java 组件和框架 [ 5] 。性能优化应用接入更加轻量化更加无感4C8G 规格的容器场景下挂载探针带来的额外 CPU 开销相较过往版本降低 50%使用异步框架的场景 CPU 开销优化幅度达到 65%性能表现更加良好启动时间大幅度优化探针挂载启动耗时降低到 5 秒内通过容器方式接入init-container 启动耗时降低到 6 秒内探针整体启动耗时缩减 10s支持代码热点功能。一般的 Tracing 系统由于只能对主流开源软件框架中的核心方法进行埋点当耗时位置出现在 Tracing 埋点缺失的用户业务逻辑时在最终的调用链中会出现一段较长的耗时无法对应到具体的代码执行方法从而导致无法对业务逻辑耗时进行准确的判断的问题。 ** 图 12: Tracing 监控盲区示例图 ARMS 代码热点功能在业界知名的开源持续剖析工具 Async Profiler [ 6] 基础上通过关联调用链中的 TraceId SpanId 信息提供了调用链级别的 On Off-CPU 火焰图可有效对 Tracing 的监控盲区细节进行还原帮助用户诊断各类常见的慢调用链问题。 ** 图 13: ARMS 支持代码热点功能效果图 更多功能介绍和使用细节请参考慢调用链诊断利器-ARMS 代码热点。 ARMS 代码热点体验交流钉钉群群号22560019672 更多 ARMS 产品家族的详细介绍请参考 ARMS 官方帮助文档 [ 7] 。 参考资料 [1] https://openjdk.org/projects/jdk/21/ [2] https://openjdk.org/jeps/439 [3] https://openjdk.org/jeps/440 [4] https://blogs.oracle.com/java/post/the-arrival-of-java-21 相关链接 [1] The Arrival of Java 21 https://blogs.oracle.com/java/post/the-arrival-of-java-21 [2] 应用监控接入概述 https://help.aliyun.com/zh/arms/application-monitoring/getting-started/overview [3] 容器服务 ACK https://www.aliyun.com/product/kubernetes** [4] ARMS 应用监控帮助文档 https://help.aliyun.com/zh/arms/application-monitoring/product-overview/functional-characteristics [5] ARMS 支持的 Java 组件和框架 https://help.aliyun.com/zh/arms/application-monitoring/developer-reference/java-components-and-frameworks-supported-by-arms [6] Async Profiler https://github.com/async-profiler/async-profiler [7] ARMS 官方帮助文档 https://help.aliyun.com/zh/arms/
http://www.sadfv.cn/news/398512/

相关文章:

  • 绍兴网站推广优化网件
  • 素材网站推广方案网站的建设服务中心
  • 网站系统方案设计网站建设的四大要素
  • 网站建设哪家较好网站开发需求大厅
  • 人是用什么做的视频网站吗容桂网站建设找顺的
  • 哪里有做家教网站的门窗网站免费模板
  • 天津住房城乡建设网站微信朋友圈做网站推广赚钱吗
  • 安卓开发技术企业网站关联优化
  • 成都网站商城建设建设培训网站
  • 宝安网站建设深圳信科南宁seo域名
  • 关于销售网站建设的短文html做音乐网站模板
  • 徐州网络建站模板可以做相册的网站
  • 工业皮带怎么做免费的网站英文网站seo
  • 网站logo怎么换建立网站导航栏的方法
  • wordpress定时网站地图wordpress发号系统
  • api网站制作张家港做网站优化价格
  • 网站开发需求单百度一下 你就知道首页
  • 互联网有限公司广州seo推广优化
  • 怎么搜索到自己网站视频号视频怎么下载
  • 网站的页脚做购物网站需要什么
  • 装修公司网站建设费用广州有什么好玩的地方推荐一下
  • 渲模网seo管理是什么
  • 网站建设实训记录wordpress文章格式引用
  • 虚拟机做局域网网站服务器配置跨境电商怎么做如何从零开始
  • 专业定制网站开发公司能自己创造游戏的软件
  • 建建设人才市场官方网站中国贸易网是什么网站
  • 东莞网上做公司网站win10优化
  • php网站制作教程设计中国第一架飞机
  • 自己做的网站可以买东西吗能帮忙做网站建设
  • 诚信网站 互联网建站网站建设的一般流程是什么意思