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的改进:
-
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读取文件内容 }
- 在JDK 10中引入了
-
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));
- Lambda表达式的参数类型推断并不依赖于
-
单个下划线作为标识符:
- 单个下划线
_
作为标识符在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
关键字定义模块,并使用 requires
和 exports
语句来声明模块之间的依赖关系和对外暴露的 API。模块化系统还提供了更细粒度的访问控制,可以限制对模块中的内部 API 的访问。
模块化系统的核心概念是模块(Module)。一个模块是一个逻辑上独立的单元,它包含了相关的代码和数据,并且可以与其他模块进行交互。模块可以声明自己的依赖关系,并且可以对外部模块隐藏自己的实现细节,只暴露必要的公共接口。
以下是模块化系统的一些关键概念:
- 模块声明(Module Declaration):每个模块都需要在其代码中声明自己的模块信息。模块声明使用
module-info.java
文件来描述,其中包含模块的名称、依赖关系和导出的包等信息。 - 模块路径(Module Path):JDK 11引入了模块路径,它是一组模块的集合。与传统的类路径(Classpath)不同,模块路径明确指定了模块之间的依赖关系,并且可以进行更细粒度的控制。
- 模块化编译(Module Compilation):模块化系统引入了新的编译选项,可以使用
javac
命令编译模块化的代码。编译器会检查模块之间的依赖关系,并确保模块之间的访问是合法的。 - 模块化运行时(Module Runtime):在模块化系统中,Java运行时环境(JRE)和Java开发工具包(JDK)被组织成一组模块。运行时环境只加载应用程序所需的模块,减少了不必要的类加载和内存占用。
- 模块化的库和应用程序(Module Libraries and Applications):模块化系统可以应用于库和应用程序的开发。开发者可以将自己的代码组织成模块,并声明自己的依赖关系,从而提供更清晰、可维护和可扩展的代码结构。
2. HTTP客户端
JDK 11引入了一个全新的HTTP客户端API,它提供了一种现代化、灵活和异步的方式来发送HTTP请求和处理响应。这个新的HTTP客户端API是在java.net
包之外单独提供的,它基于Java的非阻塞IO模型,可以与Java的CompletableFuture
一起使用,支持异步操作。
以下是JDK 11的HTTP客户端的一些关键特性和优势:
- 异步和非阻塞:HTTP客户端API是基于异步和非阻塞的设计。它使用Java的
CompletableFuture
来支持异步操作,可以发送多个请求并在后台进行处理,提高了应用程序的性能和吞吐量。 - 支持HTTP/1.1和HTTP/2:HTTP客户端API同时支持HTTP/1.1和HTTP/2协议。它可以自动根据服务器的支持情况选择合适的协议版本,并提供相应的功能和性能优势。
- 请求和响应处理:HTTP客户端API提供了丰富的方法来构建和定制HTTP请求,包括设置请求头、请求方法、请求体等。它还提供了灵活的方式来处理HTTP响应,包括读取响应头、响应体、处理响应状态等。
- 连接池管理:HTTP客户端API提供了连接池管理的功能,可以重用连接以提高性能。它支持连接的保持活动状态、连接的超时和关闭等。
- SSL/TLS支持:HTTP客户端API对于安全通信提供了全面的支持,包括SSL/TLS协议、证书验证和安全套接字配置等。
- Cookie管理:HTTP客户端API提供了对Cookie的支持,可以自动处理和管理请求和响应中的Cookie信息。
- 代理支持:HTTP客户端API可以与代理服务器一起使用,支持通过代理发送请求和接收响应。
使用JDK 11的HTTP客户端API,开发者可以轻松地构建现代化的、高性能的HTTP客户端应用程序。它提供了丰富的功能和灵活的定制选项,同时还与Java的异步编程模型紧密集成,使得处理HTTP请求和响应变得更加简单和高效。
3. 改进的性能
JDK 11在性能方面进行了一些改进,以下是其中一些主要的改进点:
-
G1垃圾收集器的改进:JDK 11引入了一些对G1垃圾收集器(Garbage First Collector)的改进,包括并行Full GC(全局垃圾回收)、并行标记阶段的性能改进以及减少停顿时间。这些改进可以提高应用程序的垃圾收集性能,减少垃圾收集引起的停顿时间。
-
垃圾收集器的默认选择:JDK 11将G1垃圾收集器作为默认的垃圾收集器。相比于先前的默认收集器(Parallel GC),G1在性能和可预测性方面有所改进,特别适用于大内存应用和具有不同大小堆的应用。
-
Epsilon垃圾收集器:JDK 11引入了一种实验性的垃圾收集器,称为Epsilon。Epsilon垃圾收集器是一种几乎不做任何工作的垃圾收集器,它主要用于性能测试和其他需要最小开销的场景。这可以为一些特殊的使用场景提供更高的性能,如性能测试和短暂的内存分配测试。
-
基准测试工具的改进:JDK 11提供了一些改进的基准测试工具,如JMH(Java Microbenchmark Harness)。JMH可以帮助开发者更准确地评估和比较不同代码片段的性能,提供了更精确的性能测量和更丰富的性能分析功能。
-
并行类加载:JDK 11引入了并行类加载功能,可以在多个CPU核心上并行加载类。这可以加快应用程序的启动时间和类加载性能。
-
JIT编译器的改进:JDK 11中的JIT(Just-In-Time)编译器进行了一些性能优化,包括更好的代码优化、更高效的方法内联等。这些改进可以提高应用程序的执行速度和吞吐量。
4. 新的标准化HTTP方法
JDK 11引入了一些新的标准化HTTP方法,以提供更全面和灵活的HTTP请求功能。以下是在JDK 11中引入的一些新的标准化HTTP方法:
- GET:GET方法用于从服务器获取资源。它是HTTP协议中最常用的方法之一,用于请求服务器返回指定资源的内容。
- POST:POST方法用于向服务器提交数据,通常用于创建新资源或提交表单数据。它将请求的数据作为请求体发送给服务器。
- PUT:PUT方法用于向服务器上传或更新资源。它将请求的数据作为请求体发送给服务器,并将其存储在服务器上指定的位置。
- DELETE:DELETE方法用于从服务器删除指定的资源。它指示服务器删除请求URL所指定的资源。
- HEAD:HEAD方法与GET方法类似,但它只返回响应头部信息,而不返回响应体。它常用于获取资源的元数据或检查资源的状态。
- OPTIONS:OPTIONS方法用于获取服务器支持的HTTP方法和功能。它可以用于客户端了解服务器的能力和配置。
- 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. 安全性增强
- 支持HTTPS:标准化的HTTP方法在JDK 11中支持HTTPS协议。HTTPS通过使用TLS/SSL加密通信,提供了更安全的数据传输。使用标准化的HTTP方法,您可以轻松地与使用HTTPS的服务器进行通信,并确保数据的机密性和完整性。
- 安全头部处理:JDK 11的HTTP客户端API提供了对安全头部的支持。安全头部是一组HTTP响应头部,用于增强应用程序的安全性。通过使用标准化的HTTP方法,您可以轻松地访问和处理安全头部,以确保应用程序与服务器之间的通信符合安全最佳实践。
- 安全协议支持:JDK 11中的HTTP客户端API支持多种安全协议,包括TLS 1.2和TLS 1.3。这些协议提供了更强大的安全性和加密算法,以保护您的数据免受恶意攻击。
- 安全认证支持:标准化的HTTP方法在JDK 11中提供了对基本身份验证和摘要身份验证的支持。这使得您可以轻松地与要求身份验证的服务器进行通信,并提供必要的凭据进行身份验证。
6. 新的垃圾回收器
JDK 11引入了一种新的垃圾回收器,名为ZGC(Z Garbage Collector)。ZGC是一种专注于低延迟的垃圾回收器,旨在减少应用程序的停顿时间,并提供可扩展性和高吞吐量。
以下是ZGC垃圾回收器的主要特点和优势:
-
低停顿时间:ZGC的设计目标是减少垃圾回收期间应用程序的停顿时间。通过使用并发的垃圾回收算法,大部分垃圾回收工作可以与应用程序的执行并行进行,从而减少了停顿时间。
-
可扩展性:ZGC被设计为具有良好的可扩展性,可以处理大型堆内存。它能够有效地利用多个处理器和大量内存,提供高吞吐量和更快的垃圾回收性能。
-
动态堆内存分配:ZGC允许动态调整堆内存的大小,以适应应用程序的需求。这使得应用程序可以更灵活地管理内存,并根据实际需求进行调整,提高内存利用率和性能。
-
并发操作:ZGC的并发垃圾回收算法允许在垃圾回收过程中进行并发操作,包括对象分配、引用处理和根扫描等。这意味着应用程序可以在垃圾回收期间继续执行,而不会出现明显的停顿。
-
分代垃圾回收:ZGC采用了分代垃圾回收的策略,将堆内存分为不同的代。这种策略可以更有效地管理不同生命周期的对象,提高垃圾回收的效率。
-
基于读屏障的并发引用处理:ZGC使用了读屏障技术来追踪对象引用的变化。通过读屏障,ZGC可以在并发引用处理期间捕获到引用的变化,确保垃圾回收器能够正确地处理对象引用。
-
可预测的停顿时间:尽管ZGC旨在降低停顿时间,但它也提供了可配置的停顿时间目标。开发者可以根据应用程序的需求,在低延迟和吞吐量之间进行权衡,并设置适当的停顿时间目标。
-
兼容现有应用程序:ZGC是为了与现有的Java应用程序兼容而设计的。它可以与现有的Java应用程序和工具链无缝集成,而无需进行大规模的代码更改。
-
并发引用处理:ZGC使用并发引用处理技术,可以在垃圾回收期间并发地处理对象引用。这意味着应用程序可以在垃圾回收过程中继续执行,减少了停顿时间的影响。
-
空间压缩:ZGC还提供了一种空间压缩的机制,可以在需要时对堆内存进行压缩,从而减少内存的占用。这有助于提高内存利用率和整体性能。
-
透明性:ZGC的设计目标之一是尽可能减少对应用程序的干扰。它提供了透明的垃圾回收过程,应用程序开发者无需关注垃圾回收的具体细节,可以专注于应用程序的开发和优化。
-
自适应调整:ZGC可以根据应用程序的运行情况自动调整垃圾回收的策略和参数。它能够监控应用程序的行为,并根据需要进行动态调整,以提供最佳的性能和响应性。
7. 升级的JavaFX
JavaFX是Java平台上的一个用户界面(UI)工具包,用于创建富客户端应用程序。JavaFX在Java 8中首次引入,并在后续版本中得到改进和增强。尽管JavaFX在Java 8中已经具备了许多功能,但在Java 11及以后的版本中进行了一些重要的升级。
以下是JavaFX在升级过程中的一些改进:
-
模块化:JavaFX在Java 11中成为了一个独立的模块,称为
javafx
。这意味着它可以作为一个单独的模块进行管理和依赖,而不需要将整个JavaFX库打包到应用程序中。这为模块化开发提供了便利,同时也减小了应用程序的体积。 -
移除JavaFX Scene Builder:JavaFX Scene Builder是一个可视化布局工具,用于设计JavaFX应用程序的用户界面。在Java 8中,Scene Builder是与JavaFX捆绑在一起的,但从Java 11开始,它被移除了。开发者可以选择使用其他第三方工具(如SceneBuilder、GlueGen-Scene-Builder等)或手动编写UI布局代码。
-
改进的性能和稳定性:JavaFX在升级过程中进行了性能和稳定性方面的改进。这包括对渲染引擎的优化,提高了应用程序的响应速度和流畅性,并修复了一些已知的问题和错误。这些改进使得JavaFX应用程序运行得更加稳定和快速。
-
新的功能和组件:JavaFX在升级过程中引入了一些新的功能和组件,以增强应用程序的功能和用户体验。例如,JavaFX 11引入了
WebView
组件,用于在应用程序中显示Web内容。JavaFX 14引入了多个新的控件和布局选项,如Spinner
、DatePicker
、Accordion
等。这些新组件和功能使得开发者可以创建更加丰富和互动的用户界面。 -
支持更多平台: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表达式一起使用,以提高代码的可读性、性能和开发者的生产效率。例如:
-
局部变量类型推断(var关键字):JDK 11引入了
var
关键字,它可以用于声明局部变量的类型推断。这可以使Lambda表达式的参数类型更加简洁,例如:(var x, var y) -> x + y
-
新的标准库API:JDK 11引入了一些新的标准库API,如
Optional
的增强和String
类的新方法。这些API可以与Lambda表达式结合使用,提供更好的功能和更简洁的代码编写方式。
尽管JDK 11没有直接改进Lambda表达式的语法或功能,但它提供了其他功能和改进,可以与Lambda表达式结合使用,以提高代码的质量和开发者的生产效率。
相关文章:
JAVA SE 11
文章目录 JDK 11 特性介绍语法增强1. String类的增强2. Optional类的增强3. 新的HTTP/2客户端4. var关键字的扩展5. Collection接口的增强 语法改进JDK 11引入的一些语法改进 详细介绍1. 模块化系统(Java平台模块系统,JPMS)2. HTTP客户端3. 改…...
【MySQ】在MySQL里with 的用法
在MySQL中,WITH语句通常与公用表表达式(Common Table Expressions,简称CTE)一起使用。CTE是一种临时的结果集,类似于视图或子查询,它们在查询中被定义并且可以在一个或多个SELECT、INSERT、UPDATE或DELETE语…...

多源最短路径
文章目录 1. 01 矩阵(542)2. 飞地的数量(1020)3. 地图分析(1162)4. 地图中的最高点(1765) 1. 01 矩阵(542) 题目描述: 算法原理: 这…...

在 Mac 中设置环境变量
目录 什么是环境变量,为什么它们重要?什么是环境变量?举个例子 如何查看环境变量如何设置和修改环境变量1. 临时设置环境变量2. 永久设置环境变量3. 修改现有环境变量 环境变量在开发中的应用在 Node.js 项目中使用环境变量在 Python 项目中使…...
记录一次ubuntu /mysql/redis/nginx等 系统安装
没想到还会做一次系统安装配置类的工作,没办法,碰到问题了,总得解决。 安装 &网络配置 从网上下载了ubuntu 18.04.6的安装包,用UltraISO做安装盘,到服务器上修改了下启动顺序,ubuntu的安装非常简单&a…...

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
Sysdig 威胁研究团队 (TRT) 报告称,LLMjacking(大型语言模型劫持)事件急剧增加,攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长,攻击者的动机包括个人使用和规避禁令和制…...

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器
文章目录 垃圾回收机制Stop-the-World垃圾收集器垃圾收集器分类Serial 收集器Serial Old 收集器ParNew 收集器Parallel Scavenge 收集器Parallel Old 收集器CMS 收集器CMS 收集器缺点 G1 收集器G1 收集器特点G1 收集器的分代理念G1 收集器运作过程 垃圾回收机制 垃圾回收&…...

nano 命令:文本编辑器
一、命令简介 nano 是一个简单易用的文本编辑器,适合初学者和那些不需要复杂功能的用户。 相关命令(不同难度的编辑器): 初级难度:nano中级难度:vim终极难度:Emacs 二、命…...

【2020工业图像异常检测文献】SPADE
Sub-Image Anomaly Detection with Deep Pyramid Correspondences 1、Background 利用深度预训练特征的最近邻( kNN )方法在应用于整个图像时表现出非常强的异常检测性能。kNN 方法的一个局限性是缺乏描述图像中异常位置的分割图。 为了解决这一问题&a…...

C++QT医院专家门诊预约管理系统
目录 一、项目介绍 二、项目展示 三、源码获取 一、项目介绍 医院专家门诊预约管理系统 [要求] 该系统需创建和管理以下信息:1、门诊专家信息:专家姓名、编号、性别、年龄、职称、门诊科目、服务时间、门诊预约数据集等;2、门诊预约信息…...

在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
文章目录 1. 布隆过滤器的应用场景2. 在SpringBoot项目利用Redission实现布隆过滤器3. 布隆过滤器误判的情况4. 与位图相关的操作5. 可能遇到的问题(Redission是如何记录布隆过滤器的配置参数的)5.1 问题产生的原因5.2 解决方案5.2.1 方案一:…...

【prefect】python任务调度工具 Prefect | 可视化任务工具 | Python自动化的终极武器 | 高效数据管道管理
一、产品介绍 1、官方 Github https://github.com/PrefectHQ/prefect 2、官方文档 https://docs.prefect.io/3.0/get-started/index 3、Pgsql说明 正确的python链接pgsql如下: import psycopg2 from sqlalchemy import create_enginedef connect_with_psycopg2(…...
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推 ①蓝禾 【岗位】国内/国际电商运营,设计,…...
【面向对象】设计模式分类
java中设计模式共23种,根据使用场景可分为创建型模式、结构型模式、行为型模式。 创建型: 如何创建对象。 单例模式:保证一个类在一个程序中只能创建一个对象。例如windows任务管理器窗口只需要创建一个。单例模式只创建一个对象࿰…...

花朵识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
一、介绍 花朵识别系统。本系统采用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,并基于前期收集到的5种常见的花朵数据集(向日葵、玫瑰、蒲公英、郁金香、菊花)进行处理后进行模型训练,最…...

中泰免签,准备去泰国旅游了吗?《泰语翻译通》app支持文本翻译和语音识别翻译,解放双手对着说话就能翻译。
泰国是很多中国游客的热门选择,现在去泰国旅游更方便了,因为泰国对中国免签了。如果你打算去泰国,那么下载一个好用的泰语翻译软件是很有必要的。 简单好用的翻译工具 《泰语翻译通》App就是为泰国旅游设计的,它翻译准确&#x…...

C++/Qt 集成 AutoHotkey
C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一:子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二:显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…...

OpenMV学习第一步安装IDE_2024.09.20
用360浏览器访问星瞳科技官网,一直提示访问不了。后面换了IE浏览器就可以访问。第一个坑。...

RK3568平台(基础篇)万用表的使用
一.万用表的通断判断 万用表两个笔头的插法:黑笔头是插在COM的孔里面,红色笔头可以插在其他的三个孔里面,20A和mA分别用来测电流,另外一个孔可以用来测其他(电压 电阻)。 以下这个三角符号(像wifi一样的)可以用来测通断: 使用万用表的红笔和黑笔进行短接,这时候两端…...
more、less 命令:阅读文本
一、命令简介 more 和 less 都是用于查看文本文件内容的命令,但它们在显示方式和功能上有一些区别。 简单的说 less 是 more 的升级版:增加了搜索、跳转等功能。所以优先使用 less,可以不用 more 了。 二、命令参数 基…...
大数据量高实时性场景下订单生成的优化方案
文章目录 一、问题背景二、核心优化目标三、架构设计方案3.1 分层架构设计 3.2 关键组件说明 四、核心优化策略4.1 异步处理与流量控制4.1.1 异步接口设计4.1.2 任务进度查询 4.2 批量处理与并行计算4.2.1 数据分批处理4.2.2 并行流处理 4.3 数据库优化4.3.1 批量插入4.3.2 索…...
32单片机——窗口看门狗
1、WWDG的简介 WWDG:Window watchdog,即窗口看门狗 窗口看门狗本质上是能产生系统复位信号和提前唤醒中断的递减计数器 WWDG产生复位信号的条件: (1)当递减计数器值从0x40减到0x3F时复位(即T6位跳变到0&a…...
第16节 Node.js 文件系统
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示: var fs require("fs") 异步和同步 Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本ÿ…...
12.6Swing控件4 JSplitPane JTabbedPane
JSplitPane JSplitPane 是 Java Swing 中用于创建分隔面板的组件,支持两个可调整大小组件的容器。它允许用户通过拖动分隔条来调整两个组件的相对大小,适合用于需要动态调整视图比例的场景。 常用方法: setLeftComponent(Component comp)&a…...

计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点可视化分析
追踪计算机视觉领域的前沿热点是把握技术发展方向、推动创新落地的关键,分析这些热点,不仅能洞察技术趋势,更能为科研选题和工程实践提供重要参考。本文对计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点进行了…...

深入了解linux系统—— 进程池
前言: 本篇博客所涉及到的代码以同步到本人gitee:进程池 迟来的grown/linux - 码云 - 开源中国 一、池化技术 在之前的学习中,多多少少都听说过池,例如内存池,线程池等等。 那这些池到底是干什么的呢?池…...
5.2 HarmonyOS NEXT应用性能诊断与优化:工具链、启动速度与功耗管理实战
HarmonyOS NEXT应用性能诊断与优化:工具链、启动速度与功耗管理实战 在HarmonyOS NEXT的全场景生态中,应用性能直接影响用户体验。通过专业的性能分析工具链、针对性的启动速度优化,以及精细化的功耗管理,开发者能够构建"秒…...

构建 MCP 服务器:第一部分 — 资源入门
什么是模型上下文协议? 模型上下文协议(MCP) 是Claude等大型语言模型 (LLM) 与外部数据和功能安全交互的标准化方式。您可以将其想象成一个平视显示器,或者 AI 的 USB 端口——它提供了一个通用接口,允许任何兼容 MCP 的 LLM 连接到您的数据和工具。 MCP 提供了一个集中式协…...

[yolov11改进系列]基于yolov11引入上下文锚点注意力CAA的python源码+训练源码
【CAA介绍】 本文记录的是基于CAA注意力模块的RT-DETR目标检测改进方法研究。在远程遥感图像或其他大尺度变化的图像中目标检测任务中,为准确提取其长距离上下文信息,需要解决大目标尺度变化和多样上下文信息时的不足的问题。CAA能够有效捕捉长距离依赖…...

cursor-free-vip使用
一、项目简介 Cursor-Free-VIP 是一个开源项目,旨在帮助用户免费使用 Cursor AI 的高级功能。它通过自动注册 Cursor 账号、重置机器 ID 和完成 Auth 验证等操作,解决 Cursor AI 中常见的限制提示。 二、系统准备 1…cursor需要更新到最新的版本 三、…...