如何缩短 URL:Java 和 Spring 分步指南

实现 URL 缩短服务并不是一项复杂的任务,它通常是系统设计面试的一部分。在这篇文章中,我将尝试解释实现该服务的过程。URL 缩短器是一种用于从非常长的 URL 创建短链接的服务。

通常,短链接的大小是原始 URL 的三分之一甚至四分之一,这使得它们更容易输入、呈现或发推文。单击短链接,用户将被自动重定向到原始 URL。在线提供许多 URL 缩短服务,例如 tiny.cc、bitly.com、cutt.ly 等。

理论

在实施之前,以功能性和非功能性需求的形式写下需要做的事情总是一个好主意。

功能要求

  • 用户需要能够输入长 URL。我们的服务应该保存那个 URL 并[……]

    继续阅读

Java 算法:合并 k 个有序列表(LeetCode)

任务描述:

给你一个k链表数组lists,每个链表按升序排序。

将所有链表合并为一个排序的链表并返回。

示例 1:

解决方案:

在跳到这个问题的解决方案之前,让我们回顾一下链表是什么。

链表是由两个(双链表)指针中的一个(单链表)相互连接的节点组成的数据结构。每个节点通常包含一些值和指向下一个节点的指针。第一个节点称为 Head,最后一个节点称为 Tail。作为下一个指针的尾通常为空。

在这个任务中,我们正在处理排序的链表。这意味着每个节点中的所有值都已排序。每个列表中的每个节点的值都小于或等于它指向的节点中的值。为了形象化,这里有一个排序链表[……]

继续阅读

Java 应用程序如何在堆外乱扔垃圾

作为 Java 开发人员,我们对垃圾收集的概念并不陌生。我们的应用程序一直在产生垃圾,这些垃圾被 CMS、G1、Azul C4 和其他类型的收集器精心清理。基本上,我们的应用程序生来就是为了给这个世界带来价值,但是,没有什么是完美的——包括我们在 Java 堆中留下垃圾的应用程序。

然而,故事并没有以 Java 堆结束。事实上,它只是从那里开始。让我们以一个基本的 Java 应用程序为例,该应用程序使用关系数据库(如 PostgreSQL)和固态驱动器 (SSD) 作为存储设备。从这里,我们将探索我们的应用程序如何在 Java 运行时边界之外生成垃圾。

用死元组填充 Postgre[……]

继续阅读

您需要了解的有关 Java 集合框架的知识

处理数据数组及其结构、搜索它们之间的对应关系、过滤——所有这些都是用 Java 编写的任何程序的基础。这就是为什么程序员必须在他们的武器库中拥有使处理这些数据尽可能简单和结构化的工具的原因。这就是 Java 框架集合发挥作用的地方。

什么是集合框架?

这是一组不同的接口,用于在 Java 编程中处理对象组。集合允许您操作数组、队列、列表、映射和其他对象类型。

Java 中的所有集合都是严格结构化的:一些接口从属于其他接口,而后者扩展了它们在层次结构中的“老大哥”的功能。

Java Collections Framework 的层次结构基于 Collection 接口[……]

继续阅读

如何在 Java 中检测和避免内存泄漏

选择使用 Java 为编程开辟了广泛的可能性,这是有充分根据的。这是一种排版的高级编程语言,由  Sun Microsystems创建,后来被Oracle赎回,语法相当灵活。20 多年来,Java 一直保持其知名度,在世界技术市场上占据领先地位之一。

它的优点之一是 Java 中的自动内存管理,特别是与没有此功能的 C 和 C++ 语言相比。它是使用内置的垃圾收集器技术« Garbage Collector » 或 GC 来执行的。

为了解释这一重要特性,值得注意的是,系统在其内存中积累了占用内存但未使用的对象。该工具显着有助于消除&nbsp[……]

继续阅读

如何在 Java Spring Boot 中实现 JSON Web Token (JWT)

JSON Web Token 或 JWT 作为服务之间安全通信的一种方式而闻名。JWT 有两种形式,JWS 和 JWE。本文将探讨 Java Spring Boot 中 JWT 的实现。

JSON Web Token 或 JWT 作为服务之间安全通信的一种方式而闻名。JWT 有两种形式,JWS 和 JWE。它们之间的区别在于 JWS 的有效负载没有加密,而 JWE 是加密的。

本文将探讨 Java Spring Boot 中 JWT 的实现。如果您想了解更多关于 JWT 本身的信息,您可以在此处访问我的另一篇文章。本文中的代码托管在以下 GitHub 存储库中:

https&[……]

继续阅读

JWT 简介(还有 JWS、JWE、JWA、JWK)

在过去的几年里,用户数据的安全性和隐私性一直是人们日益关注的问题。同时,JWT 作为对抗它的一种技术,也被越来越多地使用。

在过去的几年里,用户数据的安全性和隐私性一直是人们日益关注的问题。同时,JWT 作为对抗它的一种技术,也被越来越多地使用。了解 JWT 将使您比其他软件工程师更有优势。JWT 乍一看可能很简单,但很难理解。

在本文中,我们将主要探讨 JWT 和 JWS。此外,我们还将快速浏览 JWE、JWA 和 JWK。本文旨在让读者理解 JWT 的概念,而无需深入探讨该主题。

注意:如果你有兴趣学习如何使用 Java Spring Boot 实现 JWT,可以访问我的[……]

继续阅读

开发人员编译 C++ 程序的 6 大 IDE

C++(C with Classes)是一种高性能的通用编程语言。

这种语言的价值在构建一些最快和最关键的计算机程序时是显而易见的。

在其 35 多年的市场中,该语言已被用于创建 Web 应用程序、机器人应用程序、工业应用程序和其他复杂的工程系统。

C++ 在就业市场上受到重视,掌握该语言的开发人员受到追捧。

使用 C++ 开发项目的第一步也是最重要的一步是选择IDE(集成开发环境)。

IDE 是允许程序员以人类可以理解的语言开发软件的应用程序。IDE 是在其中实现、执行、编译和调试程序的环境。

有几家公司为 C++ 提供 IDE。他们都有自己的长处和短处。[……]

继续阅读

C++ 与 Java 有什么区别

C++ 与 Java 编程语言是为所有人设计的,无论您是编程新手还是已经拥有丰富的其他语言编程经验。它们也是最受欢迎的。让我们讨论一下c++和java之间的基本区别,只是一个案例。

Java 是一种通用编程语言。它指的是面向对象的编程语言,强类型语言。

Java 的创建者希望实现 WORA 原则 ,即一次编写,随处运行。这意味着当您设计一个用 Java 编写的应用程序时,只要在其上安装了 Java 运行时环境 ( JRE ),它就可以在任何平台上运行。

这个任务是通过将 Java 编写的代码编译成 字节码来解决的。这种格式由&[……]

继续阅读

C++ 中的空指针:你能做什么和不能做什么

一些软件工程师可能已经厌倦了这个话题,但在这里我们选择了 7 个示例并尝试使用标准(撰写本文时的最新草案)来解释他们的行为:

一个明显但重要的一点是,使用空指针初始化的p不能指向有效对象,因为它“可与对象指针的所有其他值区分开来”(conv.ptr#1)。

示例 1

这是一个表达式语句,其中 *p 是一个废弃值表达式,但仍需要对其进行评估(stmt.expr#1)。根据定义 ( expr.unary.op#1 ),一元运算符 * “执行间接”,结果是“引用表达式指向的对象或函数的左值”。很清楚语义是什么,但不清楚是否存在对象必须存在的前提条件。甚至一次也没有提到空指针[……]

继续阅读