2024年8月26日

Java 中的迭代器设计模式

迭代器设计模式是行为模式之一。迭代器模式用于提供遍历一组对象的标准方法。迭代器模式在Java 集合框架中被广泛使用。迭代器接口提供了遍历集合的方法。 迭代器设计模式 按照GoF的说法,迭代器设计模式的意图是: 提供一种访问聚合对象元素而不暴露其底层表示的方法。 迭代器模式不仅仅是遍历集合,我们可以根据需求提供不同类型的迭代器。迭代器设计模式隐藏了遍历集合的实际实现,客户端程序只需使用迭代器方法。 迭代器模式示例 让我们通过一个简单的例子来理解迭代器模式。假设我们有一个 Radio 频道列表,客户端程序想要逐个或根据频道类型遍历它们。例如,一些客户端程序只对英语频道感兴趣,并且只想处理它们,它们不想处理其他类型的频道。所以我们可以向客户端提供一个频道集合,让他们编写遍历频道的逻辑并决定是否处理它们。但这种解决方案有很多问题,比如客…
2024年8月26日

如何在 Java Web 应用程序中集成 Google reCAPTCHA

我从来都不喜欢 Captchas,因为最终用户总是需要理解字母并证明自己是人类而不是软件机器人。但最近当我在网站上看到新的Google reCAPTCHA时,我立刻就喜欢上了它。因为我们只需要勾选一个框,它就会判断你是人类还是机器人。谷歌称之为No CAPTCHA reCAPTCHA 体验,它使用高级风险分析引擎和自适应 CAPTCHA 来防止自动化软件在你的网站上进行滥用活动。所以这构成了这篇文章的基础,我将向你展示如何在基于 Java 的 Web 应用程序中使用 Google reCAPTCHA。在我们继续我们的项目之前,你需要做的第一件事是去Google reCAPTCHA并注册。之后,你将获得一个站点密钥,用于在你的网页上显示 reCaptcha 小部件。你还将获得一个密钥,该密钥应保密并用于与 Google 服务器通信以验证验证码响应。…
2024年8月26日

如何将 Java 日期转换为特定时区格式

在上一个示例中,我们学习了如何在 Java 中将 Date 转换为 String。在此示例中,我将 Java Date 对象从一个时区转换为另一个时区。我们将使用SimpleDateFormat类以特定格式格式化 Date,并设置其时区以在特定时区打印日期。 package com.journaldev.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class DateFormatter { /** * Utility function to convert java Date to TimeZone format * @param date * @param format * @param t…
2024年8月26日

Java 程序示例中的 Google 搜索

前段时间,我在寻找一种使用 Java 程序搜索 Google 的方法。我很惊讶地发现 Google 有一个网络搜索 API,但它早已被弃用,现在没有标准方法来实现这一点。基本上,谷歌搜索是一个 HTTP GET 请求,其中查询参数是 URL 的一部分,之前我们已经看到有不同的选项可以执行此搜索,例如Java HttpUrlConnection或Apache HttpClient。但问题更多地与解析 HTML 响应并从中获取有用信息有关。这就是为什么我选择使用jsoup,它是一个开源 HTML 解析器,能够从给定的 URL 获取 HTML。下面是一个简单的程序,用于在 Java 程序中获取谷歌搜索结果,然后对其进行解析以找出搜索结果。 package com.journaldev.jsoup; import java.io.IOException; import jav…
2024年8月26日

如何从 Java 类生成 XSD

在前几篇文章中,我们了解了Java JAXB以及如何从 XSD 生成 Java 类。今天我们将学习如何从 Java 类生成 XSD。 从 Java 类生成 XSD 我们将在 Maven 项目中使用JAXB-2 Maven 插件从 java 类生成 XSD。 JAXB2 Maven 插件使用 JAXB SchemaGenerator 实用程序从 java 类生成 XSD。 Java 类应该具有 JAXB 注释才能被该插件使用。 最低 Java 版本要求为 Java 5 首先创建一个新的 maven 项目,您可以指定任何名称、组 ID 和工件 ID。一旦我们构建了我们的项目,它将在target/generated-resources/schemagen目录中生成 XSD 类。构建后,我们的项目结构将如下图所示。这是我们最终pom.xml的文件: <project xmlns="https://maven…
2024年8月26日

Java 中的垃圾收集

Java 中的垃圾收集是一个先进主题。Java GC 知识有助于我们微调应用程序运行时性能。 Java 中的垃圾收集 在 Java 中,程序员无需关心销毁不再使用的对象。垃圾收集器会处理这件事。 垃圾收集器是一个在后台持续运行的守护线程。基本上,它通过销毁无法访问的对象来释放堆内存。 无法访问的对象是程序的任何部分都不再引用的对象。 我们可以通过JVM选项为我们的 Java 程序选择垃圾收集器,我们将在本教程的后面部分研究这些内容。 自动垃圾收集如何工作? 自动垃圾收集是一个查看堆内存、识别(也称为“标记”)无法访问的对象并通过压缩销毁它们的过程。这种方法的一个问题是,随着对象数量的增加,垃圾收集时间不断增加,因为它需要遍历整个对象列表,寻找无法访问的对象。然而,对应用程序的实证分析表明,大多数对象都是短暂存在的。这种行为被用来提高 JVM 的…
2024年8月26日

[已修复] Eclipse - Java 编译器级别与已安装的 Java 项目版本不匹配

最近我在Eclipse中导入了一个 Maven 项目,并将构建路径库更改为适用于 Java 1.7。之后,Eclipse 在项目中显示错误,尽管任何文件中都没有显示错误。 Java 编译器级别与安装的 Java 项目版本不匹配 错误描述是:Java compiler level does not match the version of the installed Java project facet.我还将项目编译器合规级别更改为 1.7,但错误仍然没有消失。下面的屏幕截图显示了显示此错误的问题视图。 修复 Java 编译器级别与已安装的 Java 项目版本不匹配的问题 经过一番研究并查看项目属性后,我能够修复此问题。我需要做的就是将Java Project Facet版本从 1.5 更改为 1.7。下面的屏幕截图显示了项目属性窗口,您可以在其中设置项目 facets 版本。就我个…
2024年8月26日

Java中抽象类和接口的区别

抽象类和接口之间的区别是常见的面试问题之一。抽象类和接口是 Java 编程语言的核心部分。选择接口还是抽象类是每个架构师面临的设计决策。在我上一篇文章中,我提供了尽可能多的有关Java 接口和抽象类的详细信息。在这篇文章中,我们将了解抽象类和接口之间的区别,以及何时应该使用接口而不是抽象类,反之亦然。 抽象类和接口之间的区别 abstract关键字用于创建抽象类,并且也可以与方法一起使用,而interface关键字用于创建接口,但不能与方法一起使用。 子类使用extends关键字来扩展抽象类,并且它们需要提供抽象类中所有声明的方法的实现,除非子类也是抽象类,而子类使用implements关键字来实现接口,并且应该为接口中声明的所有方法提供实现。 抽象类可以具有带实现的方法,而接口提供绝对抽象,不能具有任何方法实现。请注意,从…
2024年8月26日

在 Java 中将 char 转换为字符串

有时我们必须在 Java 程序中将字符转换为字符串。在这里,我们将研究在 Java 中将字符转换为字符串的不同方法。我们还将学习如何使用不同的方法将字符数组转换为字符串。 将 char 转换为字符串 Java 这是一个简单的程序,展示了在 Java 中将字符转换为字符串的不同方法。 package com.journaldev.string; public class CharToStringJava { public static void main(String[] args) { // char to string char c = 'a'; String str = String.valueOf(c); // using Character class str = Character.toString(c); // another way str = new Character(c).toStrin…
2024年8月26日

Java 中的构造函数

Java 中的构造函数用于创建类的实例。除了两点之外,构造函数几乎与方法相似 - 其名称与类名相同并且没有返回类型。有时构造函数也被称为初始化对象的特殊方法。 Java 中的构造函数 每当我们使用new关键字创建类的实例时,就会调用构造函数并返回该类的对象。由于构造函数只能将对象返回给类,因此它由 Java 运行时隐式完成,我们不应该为其添加返回类型。如果我们为构造函数添加返回类型,那么它将成为类的方法。这是 Java 运行时区分普通方法和构造函数的方式。假设我们在Employee类中有以下代码。 public Employee() { System.out.println("Employee Constructor"); } public Employee Employee() { System.out.println("Employee Method…