JDK21安装与配置教程

JDK21安装与配置教程

文章目录


一、下载JDK

1. 下载地址

华为云镜像下载地址:
地址 1(OracleJDK):https://repo.huaweicloud.com/java/jdk/
地址 2(OpenJDK):https://mirrors.huaweicloud.com/openjdk/

地址 2 打开地址后如下图所示:

在这里插入图片描述

2. 下载JDK21

在JDK下载网址找到对应的版本进行下载(此处下载openjdk21版本)。

在这里插入图片描述

OpenJDK 21版本对应的不同系统和架构的安装包,具体版本说明如下:

  • openjdk-21_linux-aarch64_bin.tar.gz:适配Linux系统 + ARM64架构(比如M1/M2芯片的Linux设备)的压缩包。
  • openjdk-21_linux-x64_bin.tar.gz:适配Linux系统 + x64架构(常见的64位PC/服务器)的压缩包。
  • openjdk-21_linux-x64_bin.tar.xz:和上面是同系统同架构,但压缩格式为xz(体积更小)。
  • openjdk-21_macosx-x64_bin.tar.gz:适配macOS系统 + x64架构(Intel芯片的Mac)的压缩包。
  • openjdk-21_windows-x64_bin.zip:适配Windows系统 + x64架构的压缩包。

下载后的openjdk-21_windows-x64_bin.zip如下图所示:

在这里插入图片描述

二、JDK21安装及配置

1. 解压zip压缩包

找到下载好的JDK21的zip压缩包openjdk-21_windows-x64_bin.zip,解压到指定目录下(此处解压到C:\developement目录),即安装完成。

在这里插入图片描述

2. 配置Java环境变量

2.1 打开系统属性设置

先右键点击桌面 “此电脑” 并选择 “属性”,进入系统页面后点击 “高级系统设置”,接着在弹出的 “系统属性” 窗口切换到 “高级” 标签页,最后点击 “环境变量” 按钮,进入环境变量配置界面。

在这里插入图片描述

2.2 新建系统环境变量

在打开的 “环境变量” 窗口里,点击 “系统变量” 区域的 “新建 (W)…” 按钮,在弹出的 “新建系统变量” 对话框中,将 “变量名 (N)” 设为 “JAVA_HOME”,“变量值 (V)” 填写 JDK 的安装路径(此处为 “C:\development\jdk-21”),最后点击 “确定” 按钮,即可完成 JAVA_HOME 系统环境变量的创建,这是配置 Java 环境的关键步骤之一。

在这里插入图片描述

2.3 编辑 PATH 环境变量

在 “环境变量” 窗口的 “系统变量” 区域找到 “Path” 变量并选中,点击 “编辑 (I)…” 按钮;在弹出的 “编辑环境变量” 窗口中点击 “新建 (N)”,输入 “% JAVA_HOME%\bin”(通过引用之前创建的 JAVA_HOME 变量来关联 JDK 的 bin 目录),最后依次点击 “确定” 保存设置,完成后系统就能识别 Java 相关命令了。

在这里插入图片描述

2.4 验证环境变量是否配置成功

通过“win+r”快捷键打开 “运行” 窗口,在输入框中填写 “cmd” 并点击 “确定” 按钮,以此启动命令提示符窗口,为后续执行 Java 版本验证命令做准备。

在这里插入图片描述

在启动的命令提示符窗口中,输入 “java -version” 命令后,终端显示出了 OpenJDK 21 的版本信息(包括版本号、运行时环境及虚拟机信息),这表明 Java 环境变量已成功配置。

在这里插入图片描述

Read more

直击复杂 SQL 瓶颈:基于代价的连接条件下推技术落地

直击复杂 SQL 瓶颈:基于代价的连接条件下推技术落地

一、引言 在数据库理论的学习过程中,我们常常接触到简洁优美的SQL示例——单表查询、简单连接、基础过滤,这些案例清晰地展示了关系代数的基本原理。然而,当我们步入真实的业务系统,面对的SQL语句往往如同缠绕的线团:公用表表达式(CTE)层层嵌套,子查询彼此交织,窗口函数与聚集计算随处可见。 这种复杂性并非开发人员的炫技,而是业务逻辑的自然映射。遗憾的是,这种为提升可读性而组织的SQL结构,却给查询优化器带来了严峻考验。在众多性能瓶颈中,有一个问题尤为突出:高选择性的连接条件无法穿透复杂的子查询结构,导致数据过滤发生在错误的时间点。本文将深入探讨这一问题的本质,并介绍一种基于代价模型的连接条件下推解决方案,展示如何让优化器既懂“安全”,又知“成本”。 二、性能困境:过滤迟到的代价 2.1 真实场景的切面分析 在大量客户业务系统中,一种常见的SQL编写模式反复出现:开发人员习惯先在子查询或CTE中完成复杂的预处理逻辑——去重、排序、窗口计算,然后再将这些预处理结果与其它表进行连接,最后施加过滤条件。从业务语义角度看,这种写法清晰自然;但从执行效率角度看,却暗藏危机。 考虑

By Ne0inhk
PHP常见中高面试题汇总

PHP常见中高面试题汇总

一、 PHP部分 1、PHP如何实现静态化 PHP的静态化分为:纯静态和伪静态。其中纯静态又分为:局部纯静态和全部纯静态。 PHP伪静态:利用Apache mod_rewrite实现URL重写的方法; PHP纯静态,就是生成HTML文件的方式,我们须要开启PHP自带的缓存机制,即ob_start来开启缓存。 2、PHP经典四大排序算法 PHP的四种基本排序算法为:冒泡排序、插入排序、选择排序和快速排序。 冒泡排序:对数组进行多轮冒泡,每一轮对数组中的元素两两比较,调整位置,冒出一个最大的数来。 插入排序:假设组前面的元素是排好序的,遍历数组后面的元素,在已排好序的元素队列中找到合适的位置,插入其中。 选择排序:进行多次选择,每次选出最大元素放入指定位置。 快速排序:递归算法。先选择数组的第一个元素作为标准,然后把小于或等于它和大于它的数分别放入两个数组中,对这两个数组也进行相同的处理,最后合并这两个数组和第一个元素。 3、PHP常见运行模式 1)CGI(通用网关接口/ Common Gateway Interface)

By Ne0inhk
Flutter 第三方库 spa 的鸿蒙适配实战 - 打造单页应用架构、动态渲染路由状态及鸿蒙大屏多窗体验优化方案

Flutter 第三方库 spa 的鸿蒙适配实战 - 打造单页应用架构、动态渲染路由状态及鸿蒙大屏多窗体验优化方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 第三方库 spa 的鸿蒙适配实战 - 打造单页应用架构、动态渲染路由状态及鸿蒙大屏多窗体验优化方案 前言 随着移动端交互的日益复杂,用户对 App 的流畅度要求已不仅仅停留在“帧率”上,更多的是关于页面切换的“无缝感”。单页应用(Single Page Application, SPA)模式,通过在一个长生命周期的视图内动态替换内容节点,有效地避免了频繁的页面推栈(Push/Pop)带来的布局重绘开销。 spa 库是 Flutter 生态中一个非常独特且高效的路由增强工具。它将路由状态抽象为一套可观察的树状结构,让开发者能像管理 Web 应用一样管理 Flutter 的页面状态。 在鸿蒙系统(OpenHarmony)适配实战中,面对折叠屏的灵活切换和平板的多窗协同,spa 提供了一种天然的“响应式分发”基座。

By Ne0inhk
基于Rust实现爬取 GitHub Trending 热门仓库

基于Rust实现爬取 GitHub Trending 热门仓库

基于Rust实现爬取 GitHub Trending 热门仓库 这个实战项目将使用 Rust 实现一个爬虫,目标是爬取 GitHub Trending 页面的热门 Rust 仓库信息(仓库名、描述、星标数、作者等),并将结果输出为 JSON 文件。本次更新基于优化后的代码,重点提升了错误处理容错性和 CSS 选择器稳定性。 技术栈 * HTTP 请求:reqwest( Rust 最流行的 HTTP 客户端,支持异步) * HTML 解析:scraper(基于 selectors 库,支持 CSS 选择器,轻量高效) * JSON 序列化:serde + serde_json( Rust 标准的序列化

By Ne0inhk