JAVA SE 11

文章目录

  • JDK 11 特性介绍
    • 语法增强
      • 1. `String`类的增强
      • 2. `Optional`类的增强
      • 3. 新的HTTP/2客户端
      • 4. `var`关键字的扩展
      • 5. `Collection`接口的增强
    • 语法改进
      • JDK 11引入的一些语法改进
    • 详细介绍
      • 1. 模块化系统(Java平台模块系统,JPMS)
      • 2. HTTP客户端
      • 3. 改进的性能
      • 4. 新的标准化HTTP方法
      • 5. 安全性增强
      • 6. 新的垃圾回收器
      • 7. 升级的JavaFX
      • 8. 移除的模块
      • 9. 改进的Lambda表达式

JDK 11 特性介绍

超链接[HTTP1.1升级HTTP2.0]

语法增强

1. String类的增强

String text = "  Hello, World!  ";
System.out.println(text.isBlank()); // 输出:false, 因为文本非空且非空白
System.out.println(text.strip()); // 输出:"Hello, World!",去除前后空白字符

2. Optional类的增强

Optional<String> optionalValue = Optional.ofNullable(null);
System.out.println(optionalValue.orElse("Default Value")); // 输出:"Default Value"
optionalValue.ifPresent(System.out::println); // 不输出任何内容,因为optionalValue为空
System.out.println(optionalValue.isEmpty()); // 输出:true,isEmpty() 是一个新方法,与isPresent()相反

3. 新的HTTP/2客户端

HttpClient client = HttpClient.newBuilder().version(HttpClient.Version.HTTP_2).build();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://api.example.com/data")).build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);

4. var关键字的扩展

var numbers = List.of(1, 2, 3, 4, 5);
var sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum); // 输出:15for (var element : numbers) {System.out.println(element);
}try (var reader = new BufferedReader(new FileReader("file.txt"))) {// 使用reader读取文件内容
}

5. Collection接口的增强

List<Integer> numbers = new ArrayList<>(List.of(1, 2, 3, 4, 5));
numbers.forEach(System.out::println);numbers.removeIf(n -> n % 2 == 0);
System.out.println(numbers); // 输出:[1, 3, 5]Spliterator<Integer> spliterator = numbers.spliterator();
spliterator.forEachRemaining(System.out::println);

语法改进

JDK 11引入的一些语法改进

JDK 11引入了一些改进来提高代码的可读性和开发效率。以下是一些JDK 11的改进:

  1. var关键字的使用

    • 在JDK 10中引入了var关键字,用于局部变量的类型推断。在JDK 11中,这个特性得到了保留,并且可以用于多种情况,如局部变量声明、循环变量以及try-with-resources语句中的资源变量。这可以帮助简化代码,减少重复的类型声明,提高可读性和开发效率。
    var numbers = List.of(1, 2, 3, 4, 5);
    var sum = numbers.stream().mapToInt(Integer::intValue).sum();
    System.out.println(sum); // 输出:15for (var element : numbers) {System.out.println(element);
    }try (var reader = new BufferedReader(new FileReader("file.txt"))) {// 使用reader读取文件内容
    }
    
  2. Lambda表达式的参数类型推断

    • Lambda表达式的参数类型推断并不依赖于var关键字。实际上,Lambda表达式的参数类型可以根据上下文自动推断。这意味着即使在JDK 10之前,如果上下文明确,也可以省略Lambda参数的类型。
    // JDK 10之前的写法
    List<Integer> numbers = List.of(1, 2, 3, 4, 5);
    numbers.forEach((Integer number) -> System.out.println(number));// JDK 10及之后的写法
    numbers.forEach(number -> System.out.println(number));
    
  3. 单个下划线作为标识符

    • 单个下划线_作为标识符在Java中一直是可以接受的,并不是JDK 11引入的新特性。使用下划线作为标识符可以表示该变量是一个“丢弃”变量,即一个不会被使用的变量。尽管如此,这种做法并不推荐,因为它可能会导致代码难以理解。
    List<Integer> numbers = List.of(1, 2, 3, 4, 5);
    numbers.forEach(_ -> System.out.println("Hello"));
    

这些改进使得代码更加简洁、清晰,并提供了更好的开发体验。请注意,这些改进是在JDK 10中引入并在JDK 11中得以延续的,如果使用较旧版本的Java,可能无法使用这些新的语法特性。

详细介绍

1. 模块化系统(Java平台模块系统,JPMS)

JDK 11 进一步完善了 JDK 9 引入的模块化系统。模块化系统允许开发人员将代码和依赖项组织成模块,以提高可维护性、安全性和性能。开发人员可以使用 module 关键字定义模块,并使用 requiresexports 语句来声明模块之间的依赖关系和对外暴露的 API。模块化系统还提供了更细粒度的访问控制,可以限制对模块中的内部 API 的访问。

模块化系统的核心概念是模块(Module)。一个模块是一个逻辑上独立的单元,它包含了相关的代码和数据,并且可以与其他模块进行交互。模块可以声明自己的依赖关系,并且可以对外部模块隐藏自己的实现细节,只暴露必要的公共接口。

以下是模块化系统的一些关键概念:

  1. 模块声明(Module Declaration):每个模块都需要在其代码中声明自己的模块信息。模块声明使用module-info.java文件来描述,其中包含模块的名称、依赖关系和导出的包等信息。
  2. 模块路径(Module Path):JDK 11引入了模块路径,它是一组模块的集合。与传统的类路径(Classpath)不同,模块路径明确指定了模块之间的依赖关系,并且可以进行更细粒度的控制。
  3. 模块化编译(Module Compilation):模块化系统引入了新的编译选项,可以使用javac命令编译模块化的代码。编译器会检查模块之间的依赖关系,并确保模块之间的访问是合法的。
  4. 模块化运行时(Module Runtime):在模块化系统中,Java运行时环境(JRE)和Java开发工具包(JDK)被组织成一组模块。运行时环境只加载应用程序所需的模块,减少了不必要的类加载和内存占用。
  5. 模块化的库和应用程序(Module Libraries and Applications):模块化系统可以应用于库和应用程序的开发。开发者可以将自己的代码组织成模块,并声明自己的依赖关系,从而提供更清晰、可维护和可扩展的代码结构。

2. HTTP客户端

JDK 11引入了一个全新的HTTP客户端API,它提供了一种现代化、灵活和异步的方式来发送HTTP请求和处理响应。这个新的HTTP客户端API是在java.net包之外单独提供的,它基于Java的非阻塞IO模型,可以与Java的CompletableFuture一起使用,支持异步操作。

以下是JDK 11的HTTP客户端的一些关键特性和优势:

  1. 异步和非阻塞:HTTP客户端API是基于异步和非阻塞的设计。它使用Java的CompletableFuture来支持异步操作,可以发送多个请求并在后台进行处理,提高了应用程序的性能和吞吐量。
  2. 支持HTTP/1.1和HTTP/2:HTTP客户端API同时支持HTTP/1.1和HTTP/2协议。它可以自动根据服务器的支持情况选择合适的协议版本,并提供相应的功能和性能优势。
  3. 请求和响应处理:HTTP客户端API提供了丰富的方法来构建和定制HTTP请求,包括设置请求头、请求方法、请求体等。它还提供了灵活的方式来处理HTTP响应,包括读取响应头、响应体、处理响应状态等。
  4. 连接池管理:HTTP客户端API提供了连接池管理的功能,可以重用连接以提高性能。它支持连接的保持活动状态、连接的超时和关闭等。
  5. SSL/TLS支持:HTTP客户端API对于安全通信提供了全面的支持,包括SSL/TLS协议、证书验证和安全套接字配置等。
  6. Cookie管理:HTTP客户端API提供了对Cookie的支持,可以自动处理和管理请求和响应中的Cookie信息。
  7. 代理支持:HTTP客户端API可以与代理服务器一起使用,支持通过代理发送请求和接收响应。

使用JDK 11的HTTP客户端API,开发者可以轻松地构建现代化的、高性能的HTTP客户端应用程序。它提供了丰富的功能和灵活的定制选项,同时还与Java的异步编程模型紧密集成,使得处理HTTP请求和响应变得更加简单和高效。

3. 改进的性能


JDK 11在性能方面进行了一些改进,以下是其中一些主要的改进点:

  1. G1垃圾收集器的改进:JDK 11引入了一些对G1垃圾收集器(Garbage First Collector)的改进,包括并行Full GC(全局垃圾回收)、并行标记阶段的性能改进以及减少停顿时间。这些改进可以提高应用程序的垃圾收集性能,减少垃圾收集引起的停顿时间。

  2. 垃圾收集器的默认选择:JDK 11将G1垃圾收集器作为默认的垃圾收集器。相比于先前的默认收集器(Parallel GC),G1在性能和可预测性方面有所改进,特别适用于大内存应用和具有不同大小堆的应用。

  3. Epsilon垃圾收集器:JDK 11引入了一种实验性的垃圾收集器,称为Epsilon。Epsilon垃圾收集器是一种几乎不做任何工作的垃圾收集器,它主要用于性能测试和其他需要最小开销的场景。这可以为一些特殊的使用场景提供更高的性能,如性能测试和短暂的内存分配测试。

  4. 基准测试工具的改进:JDK 11提供了一些改进的基准测试工具,如JMH(Java Microbenchmark Harness)。JMH可以帮助开发者更准确地评估和比较不同代码片段的性能,提供了更精确的性能测量和更丰富的性能分析功能。

  5. 并行类加载:JDK 11引入了并行类加载功能,可以在多个CPU核心上并行加载类。这可以加快应用程序的启动时间和类加载性能。

  6. JIT编译器的改进:JDK 11中的JIT(Just-In-Time)编译器进行了一些性能优化,包括更好的代码优化、更高效的方法内联等。这些改进可以提高应用程序的执行速度和吞吐量。


4. 新的标准化HTTP方法


JDK 11引入了一些新的标准化HTTP方法,以提供更全面和灵活的HTTP请求功能。以下是在JDK 11中引入的一些新的标准化HTTP方法:

  1. GET:GET方法用于从服务器获取资源。它是HTTP协议中最常用的方法之一,用于请求服务器返回指定资源的内容。
  2. POST:POST方法用于向服务器提交数据,通常用于创建新资源或提交表单数据。它将请求的数据作为请求体发送给服务器。
  3. PUT:PUT方法用于向服务器上传或更新资源。它将请求的数据作为请求体发送给服务器,并将其存储在服务器上指定的位置。
  4. DELETE:DELETE方法用于从服务器删除指定的资源。它指示服务器删除请求URL所指定的资源。
  5. HEAD:HEAD方法与GET方法类似,但它只返回响应头部信息,而不返回响应体。它常用于获取资源的元数据或检查资源的状态。
  6. OPTIONS:OPTIONS方法用于获取服务器支持的HTTP方法和功能。它可以用于客户端了解服务器的能力和配置。
  7. TRACE:TRACE方法用于回显服务器收到的请求。它可以用于测试和诊断,以查看请求在传输过程中是否被修改。

对于HTTP请求的处理,传统上主要依赖于Java的URLConnection类或第三方库,如Apache HttpClient和OkHttp。然而,这些库可能在API设计和功能上存在一些限制和不一致性。

JDK 11引入了一个新的标准化的HTTP客户端API,提供了更现代和灵活的方式来处理HTTP请求。这个API基于HTTP/1.1和HTTP/2标准,并提供了一组简单易用的方法来构建和发送HTTP请求,以及处理服务器返回的响应。

通过引入标准化的HTTP方法,JDK 11使得开发者可以更方便地使用常见的HTTP方法,如GET、POST、PUT、DELETE等,而无需依赖于第三方库或手动处理HTTP请求。

此外,标准化的HTTP方法也提供了更好的可读性和一致性,使得开发者在处理HTTP请求时更容易理解和维护代码。


5. 安全性增强

  1. 支持HTTPS:标准化的HTTP方法在JDK 11中支持HTTPS协议。HTTPS通过使用TLS/SSL加密通信,提供了更安全的数据传输。使用标准化的HTTP方法,您可以轻松地与使用HTTPS的服务器进行通信,并确保数据的机密性和完整性。
  2. 安全头部处理:JDK 11的HTTP客户端API提供了对安全头部的支持。安全头部是一组HTTP响应头部,用于增强应用程序的安全性。通过使用标准化的HTTP方法,您可以轻松地访问和处理安全头部,以确保应用程序与服务器之间的通信符合安全最佳实践。
  3. 安全协议支持:JDK 11中的HTTP客户端API支持多种安全协议,包括TLS 1.2和TLS 1.3。这些协议提供了更强大的安全性和加密算法,以保护您的数据免受恶意攻击。
  4. 安全认证支持:标准化的HTTP方法在JDK 11中提供了对基本身份验证和摘要身份验证的支持。这使得您可以轻松地与要求身份验证的服务器进行通信,并提供必要的凭据进行身份验证。

6. 新的垃圾回收器


JDK 11引入了一种新的垃圾回收器,名为ZGC(Z Garbage Collector)。ZGC是一种专注于低延迟的垃圾回收器,旨在减少应用程序的停顿时间,并提供可扩展性和高吞吐量。

以下是ZGC垃圾回收器的主要特点和优势:

  1. 低停顿时间:ZGC的设计目标是减少垃圾回收期间应用程序的停顿时间。通过使用并发的垃圾回收算法,大部分垃圾回收工作可以与应用程序的执行并行进行,从而减少了停顿时间。

  2. 可扩展性:ZGC被设计为具有良好的可扩展性,可以处理大型堆内存。它能够有效地利用多个处理器和大量内存,提供高吞吐量和更快的垃圾回收性能。

  3. 动态堆内存分配:ZGC允许动态调整堆内存的大小,以适应应用程序的需求。这使得应用程序可以更灵活地管理内存,并根据实际需求进行调整,提高内存利用率和性能。

  4. 并发操作:ZGC的并发垃圾回收算法允许在垃圾回收过程中进行并发操作,包括对象分配、引用处理和根扫描等。这意味着应用程序可以在垃圾回收期间继续执行,而不会出现明显的停顿。

  5. 分代垃圾回收:ZGC采用了分代垃圾回收的策略,将堆内存分为不同的代。这种策略可以更有效地管理不同生命周期的对象,提高垃圾回收的效率。

  6. 基于读屏障的并发引用处理:ZGC使用了读屏障技术来追踪对象引用的变化。通过读屏障,ZGC可以在并发引用处理期间捕获到引用的变化,确保垃圾回收器能够正确地处理对象引用。

  7. 可预测的停顿时间:尽管ZGC旨在降低停顿时间,但它也提供了可配置的停顿时间目标。开发者可以根据应用程序的需求,在低延迟和吞吐量之间进行权衡,并设置适当的停顿时间目标。

  8. 兼容现有应用程序:ZGC是为了与现有的Java应用程序兼容而设计的。它可以与现有的Java应用程序和工具链无缝集成,而无需进行大规模的代码更改。

  9. 并发引用处理:ZGC使用并发引用处理技术,可以在垃圾回收期间并发地处理对象引用。这意味着应用程序可以在垃圾回收过程中继续执行,减少了停顿时间的影响。

  10. 空间压缩:ZGC还提供了一种空间压缩的机制,可以在需要时对堆内存进行压缩,从而减少内存的占用。这有助于提高内存利用率和整体性能。

  11. 透明性:ZGC的设计目标之一是尽可能减少对应用程序的干扰。它提供了透明的垃圾回收过程,应用程序开发者无需关注垃圾回收的具体细节,可以专注于应用程序的开发和优化。

  12. 自适应调整:ZGC可以根据应用程序的运行情况自动调整垃圾回收的策略和参数。它能够监控应用程序的行为,并根据需要进行动态调整,以提供最佳的性能和响应性。


7. 升级的JavaFX


JavaFX是Java平台上的一个用户界面(UI)工具包,用于创建富客户端应用程序。JavaFX在Java 8中首次引入,并在后续版本中得到改进和增强。尽管JavaFX在Java 8中已经具备了许多功能,但在Java 11及以后的版本中进行了一些重要的升级。

以下是JavaFX在升级过程中的一些改进:

  1. 模块化:JavaFX在Java 11中成为了一个独立的模块,称为javafx。这意味着它可以作为一个单独的模块进行管理和依赖,而不需要将整个JavaFX库打包到应用程序中。这为模块化开发提供了便利,同时也减小了应用程序的体积。

  2. 移除JavaFX Scene Builder:JavaFX Scene Builder是一个可视化布局工具,用于设计JavaFX应用程序的用户界面。在Java 8中,Scene Builder是与JavaFX捆绑在一起的,但从Java 11开始,它被移除了。开发者可以选择使用其他第三方工具(如SceneBuilder、GlueGen-Scene-Builder等)或手动编写UI布局代码。

  3. 改进的性能和稳定性:JavaFX在升级过程中进行了性能和稳定性方面的改进。这包括对渲染引擎的优化,提高了应用程序的响应速度和流畅性,并修复了一些已知的问题和错误。这些改进使得JavaFX应用程序运行得更加稳定和快速。

  4. 新的功能和组件:JavaFX在升级过程中引入了一些新的功能和组件,以增强应用程序的功能和用户体验。例如,JavaFX 11引入了WebView组件,用于在应用程序中显示Web内容。JavaFX 14引入了多个新的控件和布局选项,如SpinnerDatePickerAccordion等。这些新组件和功能使得开发者可以创建更加丰富和互动的用户界面。

  5. 支持更多平台:JavaFX在升级过程中增加了对更多平台的支持。除了Windows、Linux和Mac OS X之外,JavaFX还可以在其他操作系统上运行,如Android和iOS。这使得开发者可以使用JavaFX构建跨平台的应用程序,从而覆盖更广泛的用户群体。

这些是JavaFX在升级过程中的一些改进和增强。通过这些改进,JavaFX提供了更好的开发体验和功能,使开发者能够创建出更强大、更具吸引力的Java应用程序。


8. 移除的模块

我之前提到的JavaFX在Java 11中成为了一个独立的模块,称为javafx。在这个过程中,并没有移除任何JavaFX的核心模块。然而,JavaFX Scene Builder在Java 11中被移除了,它是一个可视化布局工具,用于设计JavaFX应用程序的用户界面。从Java 11开始,开发者需要使用其他第三方工具或手动编写UI布局代码来代替JavaFX Scene Builder。

9. 改进的Lambda表达式

实际上,在JDK 11中,并没有直接对Lambda表达式的语法或功能进行改进。Lambda表达式的语法和用法在JDK 8中已经得到了定义,并没有在后续的JDK版本中做出重大变化。

JDK 8引入了Lambda表达式作为函数式编程的一部分,它提供了一种简洁的方式来定义函数式接口的实现。Lambda表达式的语法如下所示:

(parameter_list) -> { lambda_body }

尽管JDK 11没有直接对Lambda表达式进行改进,但JDK 11引入了其他功能和改进,可以与Lambda表达式一起使用,以提高代码的可读性、性能和开发者的生产效率。例如:

  1. 局部变量类型推断(var关键字):JDK 11引入了var关键字,它可以用于声明局部变量的类型推断。这可以使Lambda表达式的参数类型更加简洁,例如:

    (var x, var y) -> x + y
    
  2. 新的标准库API:JDK 11引入了一些新的标准库API,如Optional的增强和String类的新方法。这些API可以与Lambda表达式结合使用,提供更好的功能和更简洁的代码编写方式。

尽管JDK 11没有直接改进Lambda表达式的语法或功能,但它提供了其他功能和改进,可以与Lambda表达式结合使用,以提高代码的质量和开发者的生产效率。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CSS 复合选择器简单学习

目录 1. Emmet 语法 1.1 快速生成 HTML 结构语法 1.2 快速生成 CSS 样式 1.3 格式化工具 2. 调试 2.1 打开调试工具 2.2 使用调试工具 3. 复合选择器 3.1 后代选择器 3.2 子选择器 3.3 并集选择器 3.4 伪类选择器 3.3.1 链接伪类选择器 3.3.2 :focus 伪类选择器 …

7--SpringBoot-后端开发、原理详解(面试高频提问点)

目录 SpringBoot原理 起步依赖 自动配置 配置优先级 Bean设置 获取Bean 第三方Bean SpringBoot原理 内容偏向于底层的原理分析 基于Spring框架进行项目的开发有两个不足的地方&#xff1a; 在pom.xml中依赖配置比较繁琐&#xff0c;在项目开发时&#xff0c;需要自己去找…

VuePress搭建文档网站/个人博客(详细配置)主题配置-侧边栏配置

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

洞悉市场先机,Vatee万腾平台助力企业精准决策

在瞬息万变的商业环境中&#xff0c;每一个市场动向都可能成为企业兴衰的关键。因此&#xff0c;洞悉市场先机&#xff0c;做出精准决策&#xff0c;成为了企业持续发展和保持竞争力的核心要素。Vatee万腾平台&#xff0c;凭借其强大的数据分析能力和智能化技术&#xff0c;正成…

生信初学者教程(八):数据收集

文章目录 数据分布表达谱数据最终数据分布自动下载GSE14520下载GSE149614下载其它数据在确定研究疾病为肝细胞癌**(Liver Hepatocellular Carcinoma: HCC)**后,系统地进行了文献回顾,专注于搜索与HCC相关的荟萃分析文章,以获取该领域的研究动态和已有成果。为了支持的研究…

dev c++输出中文乱码解决 printf乱码解决

把编码换成utf8就行 打开eiditor options

数据结构修炼——顺序表和链表的区别与联系

目录 一、线性表二、顺序表2.1 概念及结构2.2 接口实现2.3 一些思考以及顺序表的缺点 三、链表3.1 概念及结构3.2 链表的分类3.3 链表的实现3.3.1 无头单向非循环链表3.3.2 带头双向循环链表 四、顺序表和链表的区别 一、线性表 线性表&#xff08;linear list&#xff09;是n…

叶片检测系统源码分享

叶片检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

地平线4登录xbox后提示需要登录档案怎么解决

这个游戏是真nt&#xff08;在联机上&#xff09;&#xff0c;典型搞联机2小时游玩半小时&#xff0c;多半时间都花费在联机上了&#xff0c;不是为了联机和朋友跑车&#xff0c;早给他卸载了。 本人的游戏问题&#xff1a;看了一些视频感觉没什么作用&#xff0c;我的现象就是…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第一篇-原理】

如果想直接制作&#xff0c;请看【第二篇】内容 这次做一个这样的东西&#xff0c;通过在2DRT上实时绘制&#xff0c;生成动态的体积纹理&#xff0c;也就是可以runtime的VDB 设想的文章流程: 对原理进行学习制作体积渲染制作实时绘制 第一篇&#xff08;本篇&#xff09;是对“…

Java面试——集合篇

1.Java中常用的容器有哪些&#xff1f; 容器主要包括 Collection 和 Map 两种&#xff0c;Collection 存储着对象的集合&#xff0c;而 Map 存储着键值对(两个对象)的映射表。 如图&#xff1a; 面试官追问&#xff1a;说说集合有哪些类及他们各自的区别和特点&#xff1f; S…

Web+Mysql——MyBatis

MyBatis 目标 能够完成Mybatis代理方式查询数据能够理解Mybatis核心配置文件的配置 1&#xff0c;Mybatis 1.1 Mybatis概述 1.1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由…

idea启动oom了解决

解决 Error:java: java.lang.OutOfMemoryError: WrappedJavaFileObject[org.jetbrains.jps.javac.InputFileObject[file:///D:/mingan/pb/backend/src/main/java/com/cy/backend/service/impl/StorageServiceImpl.java]]pos36199: WrappedJavaFileObject[org.jetbrains.jps.j…

nodejs 012:Babel(巴别塔)语言转换与代码兼容

这里写目录标题 安装 Babel配置presets配置&#xff1a;常见的 Babel Presetsplugins配置&#xff1a;以 plugin-transform-class-properties 的类中属性为例index.jsx Babel 是一个独立的 JavaScript 编译器&#xff0c;主要用于将现代 JavaScript 代码转换为旧版本的 JavaScr…

Jira Cloud涨价5%-20%,钉钉项目Teambition成优选替代

近日&#xff0c;Jira再次宣布涨价&#xff0c;Cloud版涨幅达到5%-20%&#xff0c;这一消息来源于Atlassian官方面向合作伙伴发布的2024年最新涨价通知。 Atlassian旗下核心产品&#xff0c;包括Jira、Confluence、JiraServiceManagement等的Cloud版本价格将有所提高&#xff…

使用k8s搭建mariadb+nginx+wordpress

前期准备 1.启动docker进程 2.拉取三个镜像 mariadb:latest wordpress:latest nginx:alpine 3.保存三个镜像 docker save -o wordpress.tar wordpress:latest 4.上传到其他的节点主机 scp wordpress.tar root 192.168.118.88:~ 5.切换到node01和node02两个节点上 ctr…

【最新华为OD机试E卷】报文响应时间(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

谷歌女高管被裁员,3份兼职越干越开心!55岁正是闯的年纪!

在职场的金字塔顶端&#xff0c;那些大龄女性高管正在面对一场无形却深刻的危机。曾经&#xff0c;她们凭借坚定的决心和无畏的勇气&#xff0c;在职场中披荆斩棘&#xff0c;闯出了一片天地。 现代职场的年轻化和技术更新正将她们逐渐推向边缘。裁员通知的突如其来&#xff0…

Leetcode面试经典150题-97.交错字符串

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 ... snt t1 t2 ... tm|n - m| < 1交错 是…

好的头戴式降噪耳机一定很贵吗?四款热门头戴耳机盘点及推荐!

在快节奏的现代生活中&#xff0c;噪音无处不在&#xff0c;它常常干扰着我们的工作、学习与休闲时光。而一款高性价比的降噪蓝牙耳机&#xff0c;就如同一个贴心的伙伴&#xff0c;能为我们营造出一片宁静的听觉空间。如今&#xff0c;耳机市场蓬勃发展&#xff0c;想要好的头…