函数式编程指南

     

牛津大学“领域驱动设计”课程

125

领域驱动设计(“DDD”)是一种专注于系统领域而不是技术的软件设计方法。重点是构建共享的心理模型并以尽可能简单的方式在代码中表示该领域模型。数据库存储、框架等技术细节被认为是设计的次要方面。该模块将重.

Java的类型化状态机

32

作者:不喜欢基于事件的状态机实现,因此我创建了一个类型化、函数式、简单且直接的状态机库。点击标题安装:<dependency>    <groupId>com.tsm4j</groupId>    <.

Java中查找字符串中最大数字的3种方法

55 3K

通常,在处理多个编程场景时,会出现包含数字的字符串,并且可能需要找到这些值中最大的值。1、字符串解析与比较最简单的方法包括读取字符串并识别数字子字符串。我们可以通过比较前缀来检测最大的数字。让我们举个.

Java中从流中获取一系列数据项

21 2K

Stream API在 Java 8 中引入,彻底改变了开发人员使用对象集合的方式。流提供了强大的操作来简洁、声明性地处理和操作数据。使用流时的一个常见任务是根据某些标准或索引从流中提取一系列项目。在.

Java中CompletableFuture中4种异步编程方法

30 8K

Java的CompletableFuture框架提供了强大的异步编程能力,方便任务的并发执行。1、runAsync() 与 SupplyAsync()之间的区别CompletableFuture是 J.

形式验证的历史和方法

26 3K

这篇文章主要介绍了形式验证领域的历史和数学起源,涉及了形式推理的历史演变、可证明的递归函数、逆向数学和构造性数学中的类型论。文章还提到了形式验证对编程语言理论的影响,包括类型系统的发展和依赖类型语言的.

Golang中编写I/O数据读写流

31 14K

GitLab 使用 Golang 抽象的 I/O 实现:每小时流式传输 TB 级的 Git 数据。本文帮助你了解如何在 Golang 应用程序中编写读写器Readers 和 Writers。每小时,G.

Python中使用函数管道简化数据处理

30 4K

函数管道允许以顺序方式无缝执行多个函数,其中一个函数的输出作为下一个函数的输入。什么是函数管道函数管道允许以顺序方式无缝执行多个函数,其中一个函数的输出作为下一个函数的输入。这种方法有助于将复杂的任务.

Java中使用代码反射模拟 C# LINQ

28 5K

本文解释了如何使用代码反射在 Java 中模拟 C# 语言集成查询 ( LINQ ) 的各个方面。通过使用代码反射,可以 在 Java 中模拟 C# 的 LINQ 查询,将 LINQ 查询转换为 SQ.

什么时候“for循环”变成了大罪?

34 2K

我是个老家伙,在一个由年轻人组成的新团队里工作,而年轻人是负责人。事实证明,现在使用 for 循环是非常可怕、非常讨厌的事情,必须不惜一切代价避免。一切都必须是流和映射如果你能用一条跨行的巨大语句写出.

Java中创建正则表达式匹配流

49 2K

正则表达式(通常称为 regex)是一种强大的模式匹配机制。它们使我们能够识别字符串中的特定模式,极大地帮助完成数据提取、验证和转换等任务。让我们深入了解如何在 Java 中创建正则表达式匹配流。什么.

面向初学者和专家的两种可读性编程语言

44

什么是可读性代码?下面一个幽默: f(x,y) -> 清晰明了,是实用编程的标志。 f x y -> 在 shell 脚本中可以接受,但有点奇怪。 (f x y) -> 令人费解。请谨慎使用! 有两种.

Java中可变对象与不可变对象

43 5K

在 Java 中使用对象时,了解可变对象和不可变对象之间的区别至关重要。这些概念影响 Java 代码的行为和设计。在本教程中,我们将探讨可变对象和不可变对象的定义、示例、优点和注意事项。什么是不可变对.

Java中用流stream计算加权平均值

54 9K

在本文中,我们将探讨解决同一问题的几种不同方法 - 计算一组值的加权平均值。什么是加权平均值?我们通过将所有数字相加然后除以数字的数量来计算一组数字的标准平均值。例如,数字 1、3、5、7、9 的平均.

编程语言的复杂性与理解性

41 8K

如果语法糖和更多的语言功能对于有经验的用户来说是一种方便,那么 为什么 Java 在非常简单的情况下却取得了如此大的成功呢? 为什么 Go 能够成功? 为什么Swift 问世时受到质疑? 为什么如此厌.

Java中不可变数组实现两种方法

49 4K

在Java中,数组是一种可变的数据结构,一旦创建其大小就固定了。在这篇文章中,我们将讨论如何在 Java 中实现不可变数组。不可变意味着我们无法修改它。如果在Java中有一个不可变数组,则指的是初始化.

使用Java泛型实现构建器Builder模式与继承

59 11K

在本教程中,我们将了解在处理层次继承时实现构建器设计模式的挑战。分层继承的一个示例可以是电动汽车、汽车和车辆之间的继承。构建器模式是一种创造性的设计模式,它有助于在方法链的帮助下,在逐步过程中简化构建.

Java中的函数式构建器方法

52 8K

在 Java 中,构建器是一种非常经典的模式,用于创建具有大量属性的复杂对象。构建器的一个好处是,它们有助于减少需要创建的构造函数的数量,特别是当并非所有属性都需要设置时(或者如果它们具有默认值)。n.

什么是软件开发中的不可变对象

65 4K

在编程领域,理解不可变对象和可变对象之间的区别至关重要。这些知识不仅提高了代码质量,还为开发人员提供了有关数据处理和应用程序架构做出明智决策的工具。不可变对象提供了一系列优势,从改进的安全性到可预测的.

Spring中WebMvc.fn函数式端点

80 13K

Spring Web MVC 的演变见证了WebMvc.fn的引入带来的变革,标志着从传统的带注释的控制器到函数式端点的转变。这一变化符合软件开发领域函数式编程的增长趋势。Spring Web MVC.

Java中流收集器方法

38 2K

本文探讨了 Collector 方法的演变,重点关注从传统方法到最新便捷方法的转变。通过了解这些变化,开发人员可以编写更可读、更高效、更简洁的代码。使用旧的收集器方法:Collectors.toLis.

动态规划 (动态编程DP) 教程

109 11K

动态规划(Dynamic Programming :DP、动态编程 、动态程序设计)被定义为一种在多项式时间内解决某些特定类型问题的技术。动态规划解决方案比指数暴力法更快,并且可以轻松证明其正确性。动.

Golang中有“final”等不变性概念吗?

82

在变量前面加上“final”的意义在于:变量不能重新分配其值/引用。这有助于提高代码的可读性和可预测性(IMO),因为它是不可变编程的构建块之一。Go 有编译时常量,但它们仅限于字面“原始”值,而不是.

Java中Collection与Stream比较

82 2K

在Java中,集合和流是用于处理和处理数据的两个不同的概念,并且它们具有不同的目的。Java集合Java 中的集合是将多个元素分组为一个单元的对象。它提供了各种数据结构来存储、检索和操作元素。 Jav.

Python中聚合操作

131 3K

在Python中,聚合操作通常与迭代器和生成器一起使用,用于对数据集合进行处理。Python提供了一些内置的聚合函数以及一些灵活的工具,例如map、filter和reduce。内置聚合函数:聚合操作是.

Java中的聚合操作

70 8K

在 Java 编程领域中,数据处理是一项常见任务,通常涉及操作对象集合。在 Java 8 发布之前,对集合执行操作需要使用循环或外部库编写冗长且容易出错的代码。然而,随着 Stream API 和聚合.

Java中使用 Lambda 实现字符串反转

87 5K

Java8以后lambda 表达式函数使编写更短、更具表现力的代码行成为可能。您可以使用 lambda 表达式有效地将代码作为数据传输或将函数视为方法参数。它们经常用于函数式编程,从而产生了一种更简洁.

Python中8种Functools使用方法

212 9K

在本文中,我们来看看functools 标准库模块以及您可以用它做的 6 件很酷的事情1. 缓存可以使用@cache装饰器(以前称为@lru_cache)作为“简单的轻量级无界函数缓存”。典型的例子是.

REST与RPC = 面向对象和函数编程

260 1 4K

REST 与 RPC 的争论:REST API ! = HTTP 远程过程调用作为开发人员,每当需要 API 时,我们常听到的一句话就是 "哦,我们可以为此开发一个 REST API"。好吧,这没什么.

Rust中使用冒号的5种方式

227 3K

在 Rust 中,冒号(:)用于不同的上下文。下面是 Rust 中冒号的一些常见用法:1、类型注解:在变量和函数参数声明中使用冒号来指定类型。let x: i32 = 42;在 Rust 中,当指定变.