函数式编程指南
-
Spring中WebMvc.fn函数式端点
172 13KSpring Web MVC 的演变见证了WebMvc.fn的引入带来的变革,标志着从传统的带注释的控制器到函数式端点的转变。这一变化符合软件开发领域函数式编程的增长趋势。Spring Web MVC.
-
Java中流收集器方法
71 2K本文探讨了 Collector 方法的演变,重点关注从传统方法到最新便捷方法的转变。通过了解这些变化,开发人员可以编写更可读、更高效、更简洁的代码。使用旧的收集器方法:Collectors.toLis.
-
动态规划 (动态编程DP) 教程
140 10K动态规划(Dynamic Programming :DP、动态编程 、动态程序设计)被定义为一种在多项式时间内解决某些特定类型问题的技术。动态规划解决方案比指数暴力法更快,并且可以轻松证明其正确性。动.
-
Golang中有“final”等不变性概念吗?
135在变量前面加上“final”的意义在于:变量不能重新分配其值/引用。这有助于提高代码的可读性和可预测性(IMO),因为它是不可变编程的构建块之一。Go 有编译时常量,但它们仅限于字面“原始”值,而不是.
-
Java中Collection与Stream比较
117 2K在Java中,集合和流是用于处理和处理数据的两个不同的概念,并且它们具有不同的目的。Java集合Java 中的集合是将多个元素分组为一个单元的对象。它提供了各种数据结构来存储、检索和操作元素。 Jav.
-
Python中聚合操作
153 3K在Python中,聚合操作通常与迭代器和生成器一起使用,用于对数据集合进行处理。Python提供了一些内置的聚合函数以及一些灵活的工具,例如map、filter和reduce。内置聚合函数:聚合操作是.
-
Java中的聚合操作
108 8K在 Java 编程领域中,数据处理是一项常见任务,通常涉及操作对象集合。在 Java 8 发布之前,对集合执行操作需要使用循环或外部库编写冗长且容易出错的代码。然而,随着 Stream API 和聚合.
-
Java中使用 Lambda 实现字符串反转
129 5KJava8以后lambda 表达式函数使编写更短、更具表现力的代码行成为可能。您可以使用 lambda 表达式有效地将代码作为数据传输或将函数视为方法参数。它们经常用于函数式编程,从而产生了一种更简洁.
-
Python中8种Functools使用方法
248 9K在本文中,我们来看看functools 标准库模块以及您可以用它做的 6 件很酷的事情1. 缓存可以使用@cache装饰器(以前称为@lru_cache)作为“简单的轻量级无界函数缓存”。典型的例子是.
-
REST与RPC = 面向对象和函数编程
297 1 4KREST 与 RPC 的争论:REST API ! = HTTP 远程过程调用作为开发人员,每当需要 API 时,我们常听到的一句话就是 "哦,我们可以为此开发一个 REST API"。好吧,这没什么.
-
Rust中使用冒号的5种方式
359 3K在 Rust 中,冒号(:)用于不同的上下文。下面是 Rust 中冒号的一些常见用法:1、类型注解:在变量和函数参数声明中使用冒号来指定类型。let x: i32 = 42;在 Rust 中,当指定变.
-
Java中迭代Map和List最简单直接办法
188这里介绍可以迭代 Map 和 List 最简单直接办法,代码量最少。方法 1:标准for方法:List:for(String item:sList) {..}Map:for(Map.Entry<Str.
-
拦截器责任链也是函数式编程
112 5K拦截器是一种强大的机制,可以监视、重写和重试调用。拦截器可以被链接起来。假设您同时拥有压缩拦截器和校验和拦截器:您需要决定是压缩数据然后进行校验和,还是进行校验和然后压缩。OkHttp使用列表来跟踪拦.
-
Java中列表List的可变性和不变性
226 11K以下Java代码示例List分可变的,不可变的两种:1、可变ArrayList 是 List 的可变实现@Testpublic void arrayList(){ // Mutable L.
-
Python数据管道中的设计模式
321 14K使用适当的代码设计模式可以使您的代码易于阅读、可扩展,并且可以无缝地修改现有逻辑、调试,并使开发人员能够更快地上手。为了演示代码设计模式,我们将构建一个简单的 ETL 项目,让我们从 Reddit 中.
-
为什么Java引入List.of()方法?
181Java 9 中引入的 `List.of()` 方法提供了生成不可变列表的便捷方法。这是 JDK 开发人员为提供简洁而富有表现力的方法来处理集合而迈出的进步一步。 添加此方法背后的主要背景和灵感是跟随.
-
什么是一阶逻辑?
348 2K一阶逻辑(FOL)是指句子或陈述的谓词只能指单个主语Subject的逻辑。一阶逻辑也称为谓词逻辑或一阶谓词逻辑,它不但能以更简便的方式表达对象信息,还能表达这些对象之间的关系。一阶逻辑(像自然语言一样.
-
编程范式列表
141 3K本文中介绍的编程范例的列表: 结构化编程 函数式编程 面向对象编程 面向数据的编程 可组合编程 依赖注入 声明式编程 自上而下与自下而上 极简主义与极简主义 自适应编程 渐进式软件开发 自我驱动的开.
-
Rust有面向对象特性吗?
192structs、traits 和 impls 被解释为在 Rust 中进行 OOP 的一种方式。关于语言的哲学比较: Rust 具有对象特性,但并不以它们为导向。 Java 现在具有函数式特性,但仍然.
-
一张图说明继承的缺点
218多轮继承以后,无法确定结果类型。解决方法: 1、只限制一轮继承 2、只限制在业务功能上的继承,如领域模型实体和值对象 3、默认使用组合,类似Golang Rust语言直接迫使你使用组合,完全形式化与函. -
数学证明和计算机程序等同
177 2K数学证明可以表示为计算机程序,反之亦然。这种对应关系被称为库里-霍华德同构,它在逻辑和计算机科学的概念之间建立了等价关系。逻辑中的命题相当于编程中的类型,证明相当于程序。具体来说,证明一个陈述为真可以.
-
JEP 草案:不能为null的值类型
87Java 目前有类class 和记录record 引用类型。他们仍在计划添加值记录value record和值类型value class。 增加了!,Long!是 Long 的非空版本。 增加了隐式构.
-
代数化函数式领域建模的案例
124 2K我们可以完全实现一个运算,而不需要查看任何组合运算的具体实现。就像你在数学中操作代数表达式一样。假设将generateTrades作为领域服务 TradingService 的一部分。其目的是生成当天.
-
Go-memoize:缓存函数调用结果的开源工具
167这是一个简单、简洁的 Go 记忆器。缓存昂贵的函数调用。Go-memoize 已经投入生产几年了。在内存中缓存昂贵的函数调用,并具有可配置的超时和清除间隔:import ( "time" .
-
DDD:从聚合到函数组合的改变
278 2来自OSKAR DUDYCZ的DDD变化旅程。这是我目前所处的进化阶段:我从经典聚合开始,遵循领域驱动设计和典型的面向对象战术模式。因此,将数据和行为封装在一个类中。然后,仅允许通过公共方法进行更改,.
-
Java 21模式匹配标志Java正式支持函数式编程
360 1 8K来自WSCP 的博客:Java 21 将于 2023 年 9 月 19 日发布,支持 switch 块和表达式中的记录模式。这种语法是具有里程碑意义的,它标志着 Java 可以被认为以类似于 Kotl.
-
不变性是一种更好的调试器?
257 2K来自Marc's Blog的文章:不变性是推理算法、数据结构和分布式系统的强大工具。对于您设计或实现的任何复杂系统或算法,都值得考虑一组不变性。以这样的方式构建您的实现也是值得的,即使是全局不变性也可.
-
如何阅读类型系统符号?
419 20K对于许多对类型系统和类型理论感兴趣的人来说,他们第一次接触文献时会看到以下内容:这种语法虽然看起来很复杂,但实际上相当简单。基本思想来自形式逻辑:整个表达式是一个蕴涵implication ,上半部分. -
Unchecked开源工具让你永远告别Java异常检查
612 1 4KUnchecked将 Java 的检查出异常”破解为“未检查出任何异常Exception”。当你遭遇Exception异常时,你需要使用try{}捕获处理这个异常,或者将这个异常依然抛出,只有这两种选.
-
函数式编程与面向对象编程比较分析
444函数式编程和面向对象编程是软件开发领域中最流行的两种编程范式。两者都有自己独特的优势和劣势,两者的选择往往取决于项目的具体要求。在这篇文章中,我们将对函数式编程和面向对象编程进行比较分析,突出它们的主.