2024年8月26日

Java 中的模板方法设计模式

模板方法是一种行为设计模式。模板方法设计模式用于创建方法存根并将某些实现步骤推迟到子类。 模板方法设计模式 模板方法定义了执行算法的步骤,它可以提供所有或部分子类通用的默认实现。让我们通过一个例子来理解这种模式,假设我们想提供一种建造房屋的算法。建造房屋需要执行的步骤是 - 打地基、建柱子、建墙壁和窗户。重要的一点是我们不能改变执行的顺序,因为我们不能在打地基之前建窗户。所以在这种情况下我们可以创建一个模板方法,使用不同的方法来建造房屋。现在,建造房屋地基的方法对于所有类型的房屋都是一样的,无论是木屋还是玻璃屋。所以我们可以为此提供基本实现,如果子类想要重写这个方法,他们可以,但大多数情况下它对所有类型的房屋都是通用的。为了确保子类不会重写模板方法,我们应该将其设为 final。 模板方法抽象类 由于我们希望某些方法由子类实…
2024年8月26日

为什么 Java 中的字符串是不可变的?

为什么 String 在 Java 中是不可变的,这是常见的面试问题之一。字符串是任何编程语言中最常用的类之一。我们知道 String 在 Java 中是不可变的和最终的。Java 运行时维护一个String 池,使其成为一个特殊的类。 为什么 Java 中的 String 是不可变的? 让我们看看字符串不变性的一些好处,这将有助于理解为什么字符串在 Java 中是不可变的。 字符串池之所以可行,是因为 String 在 Java 中是不可变的。这样,Java 运行时可以节省大量堆空间,因为不同的 String 变量可以引用池中的同一个 String 变量。如果 String 不是不可变的,那么 String 驻留就不可能实现,因为如果任何变量改变了值,它也会反映在其他变量中。 如果字符串不是不可变的,那么它将对应用程序造成严重的安全威胁。例如,数据库用户名、密码作为字符串传…
2024年8月26日

使用 Eclipse 的 Java 示例中的 SOAP Web 服务

Java 中的 Soap Webservices 可以通过多种方式开发。我们在上一篇教程中学习了JAX-WS SOAP Web 服务,今天我们将学习如何使用 Eclipse 创建 SOAP Web 服务及其客户端程序。在这里我们将不使用 JAX-WS,我们将使用集成在 Eclipse 中的Apache Axis,并提供快速简便的方法将应用程序转换为 Java Web 服务,并使用测试 JSP 页面创建客户端存根以用于测试目的。 Java 中的 SOAP Web 服务 我在本教程中使用Eclipse Mars Release (4.5.0),但我认为这些步骤也适用于旧版本的 eclipse。另外,请确保已在 Eclipse 中添加 Apache Tomcat 或任何其他 servlet 容器作为服务器。现在让我们开始实现Eclipse Web 服务。 SOAP Web 服务示例 让我们开始使用 Ecl…
2024年8月26日

Java 中的关系运算符

Java 中的关系运算符用于比较两个变量是否相等、不等、大于、小于等。Java 关系运算符总是返回布尔值 - true 或 false。 Java 中的关系运算符 Java 有 6 个关系运算符。 == 是相等运算符。如果两个操作数都指向同一个对象,则返回 true,否则返回 false。 != 为非相等运算符。如果两个操作数引用不同的对象,则返回 true,否则返回 false。 < 是小于运算符。 > 是大于运算符。 <= 小于或等于运算符。 >= 大于或等于运算符。 关系运算符支持的数据类型 == 和 != 运算符可以与任何原始数据类型以及对象一起使用。 <、>、<= 和 >= 可用于以数字表示的原始数据类型。它适用于 char、byte、short、int 等,但不适用于 boolean。对象不支持这些运算符。 关系运算符示例 packa…
2024年8月26日

SVG 中的矩形:

在 svg 中定义矩形: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 200"> <rect x="349" y="67" width="302" height="66" rx="5" ry="5" stroke="#E4AF4C" fill="#F4D37D" stroke-width="2" /> 分解 以下是用于定义矩形的属性。如果省略 rx 和 ry,则角半径将默认为 0: x & y:矩形左上角的 x 和 y 位置。 宽度和高度:矩形的宽度和高度。 rx 和 ry:角半径。…
2024年8月26日

SVG 中的径向渐变

我已经讲过如何在 SVG 中定义线性渐变,所以让我们再讲一些径向渐变的例子。语法与线性渐变非常相似。 再次,这是我们的基本交叉骨头 SVG 图像: 这是它的 SVG 标记,通过将路径数据更改为... 来简化: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"> <style>.bones{fill:#ccc ;} .eye{fill:#666;}</style> <path class="bones" d="..."/> <path class="bones" d="..."/> <g> <path class="eye" d="..."/> <path class="eye" d="..."/> <…
2024年8月26日

在 Jekyll 模板中定义 Twitter 卡片

Twitter 卡片是发布推文时突出显示内容的好方法。有几种格式可供选择,我最喜欢的是“摘要/带大图”。以下是我在 Jekyll 中的 head.html 包含文件中定义它的方式: <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@alligatorio"> <meta name="twitter:title" content="{{ page.title }}"> {% if page.description %} <meta name="twitter:description" content="{{ page.meta_description }}"> {% else %} <…
2024年8月26日

clipboard.js:将文本复制到剪贴板

clipboard.js可让您轻松将文本复制到剪贴板。压缩后大小为 3kb,无需 Flash,这是一种非常轻量级的方式,可让您的访问者复制您网站上的文本和代码。 安装 安装方式npm: npm install clipboard --save 或者从 Github 获取包并将 clipboard.min.js 文件手动放在您的项目文件夹中。 然后在结束 </body> 标签之前包含 JavaScript 文件: <script src="path/to/clipboard.min.js"></script> 最后,您需要实例化它。在下面的 JQuery 示例中,我们将实例化所有具有以下类的元素的对象clipboard: $( document ).ready(function() { var clipboard = new Clipboa…
2024年8月26日

面向 Linux 专家的 20 个高级命令

感谢您在本文的前两部分给予我们的点赞、好评和支持。在第一篇文章中,我们讨论了针对刚刚转向 Linux并需要必要知识的用户的命令。 Linux 新手必学的 20 个命令 在第二篇文章中,我们讨论了中级用户管理自己的系统所需的命令。 面向中级 Linux 用户的 20 个高级命令 下一步是什么?在本文中,我将解释管理Linux 服务器所需的命令。 Linux 专家命令 41.命令:ifconfig ifconfig用于配置驻留在内核的网络接口。它在启动时根据需要设置接口。此后,通常仅在调试或需要系统调整时才需要它。 检查活动网络接口 [avishek@example ~]$ ifconfig eth0 Link encap:Ethernet HWaddr 40:2C:F4:EA:CF:0E inet addr:192.168.1.3 Bcast:192.168.1.255…
2024年8月26日

SVG 中的线性渐变

尽管实际上大多数情况下您都是使用 Adob​​e Illustrator 等工具创建 SVG 文件,而不是手动编码,但某些 SVG 功能可轻松手动实现,让您的图像更加突出。线性渐变就是其中一种功能。 让我们通过一个例子来学习。这是我们的基本交叉骨头图像: 这是它的 SVG 标记。我通过用 ... 更改路径数据进行了简化: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"> <style>.bones{fill:#ccc ;} .eye{fill:#666;}</style> <path class="bones" d="..."/> <path class="bones" d="..."/> <g> <path class…