Java

Java 8 主要引入了哪些新特性?

我们知道 Java 8 是 Java 发布历史上一个里程碑式的版本,哪怕现在 Java 的最新版本已发展到 22,但仍有相当一部分企业在使用 Java 8,可以说 Java 8 是后续 Java 新版本得以快速迭代的基石。本文即重点回顾 Java 8 引入的那些主要特性。

阅读更多

Java 虚拟机运行时数据区域划分详解

Java 虚拟机(Java Virtual Machine,简称 JVM)是 Java 程序(字节码)的运行环境,其主要提供 Java 字节码执行(解释执行或者即时编译为本地机器码执行)、内存管理(内存分配和垃圾回收等)、多线程支持和安全控制等功能,是 Java 语言「一次编写,到处运行」口号得以实现的基石。

阅读更多

趣味算法题:从登录日志中计算各个用户的最长连续登录天数

1 题目描述 假设我们有一个记录用户登录的日志文件,该文件有多行记录,每一行记录包含用户 ID、登录日期(格式为:yyyy-MM-dd)和登录时间(格式为:HH:mm:ss)三个以空格分割的条目。记录并不是以时间先后排序的,而是乱序的(如:样例输入中的记录 1002 2023-02-06 12:10:01 在 1002 2023-02-05 11:10:01 之前)。请计算每个用户的最长连续登录天数,输出格式为:用户 ID: 最长连续登录天数(如:样例输出中的 1002: 5)。

阅读更多

为什么说「组合优于继承」?

面向对象编程中有一条经典的设计原则:组合优于继承,即多用组合少用继承。什么是继承?什么是组合?为什么不推荐使用继承?组合有哪些优势?如何判断该用组合还是该用继承?本文将围绕这几个问题来分析组合优于继承的原因。 1 什么是继承?什么是组合? 继承(Inheritance)和组合(Composition)是面向对象编程(Object-Oriented Programming)中两种不同的代码复用机制。

阅读更多

Serenity BDD 如何与 Cucumber 进行集成?

我们知道,Serenity BDD 和 Cucumber Java 是两个常用的、适用于 Java 语言的自动化测试框架。Serenity BDD 框架功能丰富、内置了对业界通用的软件测试设计模式(诸如:页面对象模型、Screenplay 模式等)的支持,而 Cucumber 框架的一大优势是可以使用类似自然语言的方式(Gherkin 语法)来编写测试场景。因此,将两者进行集成将拥有叠加的能力。

阅读更多

如何使用 Serenity BDD 进行 API 测试?

前文「如何使用 Serenity BDD 进行 UI 测试?」介绍了使用 Serenity BDD 与 Selenium 进行 Web UI 测试的方法,但 Serenity BDD 不仅限于进行 UI 测试,还可以使用其进行 REST API 测试。本文即介绍使用 Serenity BDD 与 REST Assured 进行 API 测试的方法。

阅读更多