真心不想再神戳戳的用Guava写FP了

保姆级教程:在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV(从BIOS到虚拟机配置) 本文提供在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV的详细教程,涵盖BIOS设置、固件配置、驱动优化及虚拟机部署。通过SR-IOV技术,显著提升虚拟化环境中的网络性能,适用于高性能计算、AI训练等场景。 阅读详情

函数式编程这段时间真心是吵的火热,Java也不甘寂寞。Google的程序库Guava的一个重要的Feature就是Functional Idiom。

大家都觉得,狗日的这个东西有点儿霸道哦,整起。认为我们应该用Guava在Java中实现Functional Programming。但是我以为,这就好比逼着四川人说普通话一样的。。。“整啥子函数式编程嘛,吃多求了,写出来弯儿隔揪的,弄都弄不称头,应是装疯迷窍的”。。。



Guava写不出简洁的FP代码,是会非常的限制我们的思维。

举一个例子:

去除List中连续重复的元素。如对于List:[1, 1, 1, 2, 2, 3, 2]结果会变为[1, 2, 3, 2]。


嗯~~~,如果你是写Java的背时娃儿,用Guava写是什么样子的呢:

算了,我都不想动手了,我还真的觉得这种情况下,还不如用Java的for循环来的实在:

把相邻元素进行比较吧,把不相同的弄出来。嗯,很好,写for循环写出神韵了。


你可能说,你娃吹的凶,牛B完了,你来整个哇:

Clojure如下:

(defn de-consecutive-duplicate [coll]
  (map first (partition-by identity coll)))

(de-consecutive-duplicate [1 1 1 2 2 3 2])

#=> (1 2 3 2)


????什么,什么跟什么。

好吧,简单的说,这个功能可以有两个小函数组合完成:一个是拆分原有的list,第二个是map/transform这个list

第一个小函数:

(parition-by identity coll)

#=> ((1 1 1) (2 2) (3) (2))

第二个小函数:

(map first coll)

#=>(1 2 3 2)

更幸运的是,这两个小函数都是Clojure原生支持的,真是欢喜呢


简洁的Clojure让我们更容易,更愿意写FP。至于Java的Guava?还是用来写写FP的Hello World就算了吧。


计算机网络实验六 RIP 配置实验 Man! What can I say? 阅读详情

相关推荐

一步一步教你写股票走势图——K线图一(概述)

股票分时图部分已经开发完毕,受到了广大开发者的好评!界面、功能都挺完美,解决了好一些MP开发者的问题,博主甚是欣悦,更有动力去开源K线图。这里说一下,如果有问题直接留言或者发邮件,github上个人信息有邮件,我看到基本都会回复,博主不加qq的,体谅O(∩_∩)O。分析好了,废话不多说,我们分析下K线图吧,首先我们看下自选股K线图的效果吧效果还是很赞的,经过分时图的研究后,博主越来越确信自选股用的应

体验Android编程之美 3万+

Guava简介(详细)

Guava简介(详细、全)

weixin_42326851的博客 2万+

学习stm32H7之路开始(STM32H7系列1) 前期准备,HAL库框架

2020.01.07 几个重要的参考网址 1.电子工程世界网 http://tags.eeworld.com.cn/tags/STM32H7 链接: link. 2.转:https://blog.youkuaiyun.com/simon223/article/list/2?t=1 链接: link. ———————————————— 版权声明:本文为优快云博主「Simon223」的原创文章,遵循 CC 4....

kengkengkeng963的博客 3408

guava缓存原理--get操作

V get(K key, CacheLoader<? super K, V> loader) throws ExecutionException { int hash = hash(checkNotNull(key)); //这里使用了分段的hash表,原理参考ConcurrentHashMap return segmentFor(hash).get(key, ...

weixin_40632321的博客 1465

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 406

Flutter版本升级踩坑实录:从3.27到3.35,我们是如何修复Impeller引擎导致的花屏问题的?

本文详细记录了团队在Flutter版本升级过程中遇到的Impeller引擎导致的花屏问题及解决方案。从问题诊断到最终升级至稳定版3.35,文章分享了排查步骤、升级策略和性能对比数据,为开发者提供了实用的参考经验。

weixin_26854555的博客 502

guava集合操作类的使用_使用Guava进行测试集合的实现

guava集合操作类的使用 我目前正在为LibFX添加一项新功能,为此我创建了一些类似于Java Collections Framework的自定义集合。 我一直在寻找可以与之对抗的测试,并很高兴发现Google的Guava包含了我所需要的:一个庞大的测试套件,可以验证JDK和Guava的所有集合接口实现的每个细节。 让我们快速浏览一下。 总览 这篇文章将首先展示如何设置项目,然后再着...

最佳 Java 编程 272

Blazor Session设置

微软官方封装了一些浏览器的操作,其中就有Session的操作的封装ProtectedSessionStorage 微软文档因为我们知道,依赖注入的生命周期是Singleton程序Scoped网页:刷新,url直接跳转都会重置。Transient路由C# Blazor 学习笔记(10):依赖注入但是没有一个和浏览器绑定的生命周期。即浏览器关闭才会退出。这个是后端无法获取的,因为后端根本不知道浏览器何时关闭。这个只能用浏览器自带的缓存。

qq_44695769的博客 1786

特性(Feature)与功能(Function)的差异

参考http://www.englishvincent.com/?p=171一文,对特性与功能差异做一个总结: Feature,特性,在词典中的解释是:A feature of something is an interestingor important part or characteristic of it。feature本意是指特点,指事务有鲜明特征方面的属性,对应到产品或解决方案所具有

渔歌唱晚 1万+

电赛控制组入门到实战:从电路板到PID算法的完整路径

本文详细介绍了电赛控制组从电路板制作到PID算法实战的完整学习路径。涵盖嘉立创电路设计、Keil5开发环境搭建、STM32F103C8T6核心板外设应用,重点解析PID算法在电机速度环与位置环中的调试技巧,并探讨OpenMV视觉模块与主控制器的协同工作,为电赛参赛者提供系统化的实战指南。

oauth7security的博客 745

手把手教你用运放和基准源,把±10V信号变成ADC能吃的0-4V(附完整计算过程)

本文详细介绍了如何利用OP07运放和REF5040基准源设计工业级信号调理电路,将±10V传感器信号转换为0-4V ADC可接受范围。通过七步流程,包括需求分析、元器件选型、电路设计、理论计算、PCB布局、实测验证与性能优化,帮助工程师解决信号不匹配问题,提升系统精度与稳定性。

weixin_28731223的博客 466

5个guava值得留意的用法

在http://blog.takipi.com/google-guava-5-things-you-never-knew-it-can-do/中, 提到了5个guava值得留意的用法,其中个人认为有4个还是不错的,值得留意 1 哈希功能 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换。此外,使用...

jackyrongvip的专栏 936

梯度提升决策树GBDT原理与代码实例讲解

梯度提升决策树GBDT原理与代码实例讲解 1.背景介绍 1.1 机器学习发展历程 机器学习是人工智能领域的一个重要分支,旨在使计算机具备学习和改进自身性能的能力。随着大数据时代的到来,海量的数据为机器学习算法提供了广阔的应用空间。在

AI天才研究院 1081

Spark灰度发布在十万级节点上的实践

Spark CI 持续集成实践CI 介绍持续集成是指,及时地将最新开发的且经过测试的代码集成到主干分支中。持续集成的优点快速发现错误 每次更新都及时集成到主干分支中,并进行测试,可以快速发现错误,方便定位错误避免子分支大幅偏离主干分支 主干在不断更新,如果不经常集成,会产生后期集成难度变大,甚至难以集成,并造成不同开发人员间不必要的重复开发为快速迭代提供保障 持续集成为后文介绍的持续发布与持续部署...

cpongo011702 409

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Guava中Graph的操作说明(Guava 23)

来源: https://github.com/google/guava/wiki/GraphsExplained Graphs, Explained Guava's common.graph is a library for modeling graph-structured data, that is, entities and the relationships between the...

kanpiaoxue的专栏 4183

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大规模特征构建实践总结

背景 一般大公司的机器学习团队,才会尝试构建大规模机器学习模型,如果去看百度、头条、阿里等分享,都有提到过这类模型。当然,大家现在都在说深度学习,但在推荐、搜索的场景,据我所知,ROI并没有很高,大家还是参考wide&deep的套路做,其中的deep并不是很deep。而大规模模型,是非常通用的一套框架,这套模型的优点是一种非常容易加特征,所以本质是拼特征的质和量,比如百度、头条号称特征到...

大快搜索DKhadoop的博客 422

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Guava 15新特性介绍

原文:http://www.javacodegeeks.com/2013/10/guava-15-new-features.html Guava 是众所周知的google出品的开源工具包,十分好用,本月退出了version 15的版本,其中主要的几个新特性有: 1 Escapers字符转义器 其目的就是在于将特殊字符进行转移,比如有: HtmlEscapers XmlEsc...

jackyrongvip的专栏 258

Java -- common基础类库Google Guava和Guice

很久没更新文章了,最近忙于系统上线,同时拾起来一年多没写过的Java,做一些平台化,系统组件的开发。之后准备通过拜读一下HBase的代码来提升自己对Java的认识。以前写c/c++时,可选的Base库并不是特别多,boost、libev、libaio取之可数。最近用到了写Java的基础框架的库(SSH之类的就不说了),比如MyBaties、DBCP、Guice、Guava等。准备拿出些比较经典的和

曦轩 技术茶话小屋 8166

Google Guava的5个鲜为人知的特性

Google Guava有哪些比较冷门但却又实用的特性呢? 它是最流行的开源库之一,你应该听过它的大名,它诞生的地方正是人们举办真正的魁地奇比赛的地方(起码实习期内是这样的)。它虽然不是来自哈利波特中的霍格沃兹学校,但却有着自己的专属魔力:Google Guava库包含着许多诞生于Google的核心Java库,这些都是公开发布后在生产环境经历过了各种检验的。在Java 8之前它就已经包含Optio...

ScutKevinYzy的博客 777

Google Guava - FunctionalExplained(Guava函数式风格说明)

FunctionalExplained  函数式风格说明 Functional idioms in Guava, explained.  explained Updated Apr 10, 2013 by lowas...@google.com 重要说明 直到 Java 7, 想要在 Java 中实现函数式编程,只能通过笨重的匿名类来达到近似效果。这种情况在 Java 8 会有所

AIGC搞起 2573

27-spark各版本对比

spark各版本对比

huaxing_ba的博客 5052

Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍

最近在看一个同学代码的时候,发现代码中大量使用了 Google 开源的 Guava 核心库中的内容,让代码简单清晰了不少,故学习分享出 Guava 中我认为最实用的功能。Guava 项目...

Java知音 1824

Guava Predicate

Predicate<泛型>(断言,断定),是Guava中的一个基础接口,其内部只有一个方法`boolean apply(T input)`,这个方法输入是一个泛型对象,输出是一个布尔值,非常简单,下面来看一下这个小东西能帮助我们做

寻道 7116

Guava并发:SettableFuture与CheckedFuture

上一篇介绍了下guava关于并发的实现与支持,其中涉及到两个内置接口实现,分别是SettableFuture与Checkedfuture,今天分别介绍下这两种内置实现: 1、SettableFuture       查看源码,我们可以发现,SettableFuture继承了AbstractFuture抽象 类,AbstractFuture抽象类实现了ListenableFuture接口,所以S

哈哈的博客 6782

为什么推荐 Java 程序员使用 Google Guava 编程?

作者:张丰哲来源:www.jianshu.com/p/97778b21bd00对,你没看错,本文就是教你写出让同事无法维护的代码。这篇文章的原文在这里(http://mindprod.c...

程序员闪充宝 1503

Guava介绍

https://code.google.com/p/guava-libraries/wiki/GuavaExplained?tm=6 User Guide 用户指南 The Guava project contains several ofGoogle's core libraries that we rely on in our Java-based projects:collection

Base 2684
上一篇: 【转】Clojure FP之6大规则
下一篇: 一起来Story Review吧!
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值