《JavaScript ES6函数式编程入门经典》使用JavaScript ES6带你学习函数式 编程。你将学习柯里化、偏函数、高阶函数以及Monad等概念。 目前,编程语言已经将焦点从对象转移到函数。JavaScript支持函数式编 程,并允许开发者编写精心设计的代码。
2022-02-09 14:00:51 46.16MB JavaSc ES6 函数式编程
1
哈斯克尔 Haskell,一种高级的,纯函数式编程语言学习 #100daysofcode挑战的一部分 学习Haskell(纯函数编程)基于项目的方法 为什么选择Haskell? 如果您正在阅读此书,则意味着您对学习Haskell感兴趣。 但是,什么使这种语言特别? 它的编程方法可以概括为五点: Haskell属于功能语言家族, 它的核心体现了纯净的概念,将带有副作用的代码与应用程序的其余部分分开, 评估模型基于懒惰, 类型由编译器静态检查。 此外,Haskell还具有一种类型系统,该类型系统比平时更强大,更具表现力, 它的多态方法基于参数(类似于Java和C#中的泛型)和类型类 为什么要使用纯函数式编程? 函数式编程是编程的样式或范例之一。 编程范例是由不同编程语言共享的一组思想和概念。 例如,Pascal和C是命令式范例的一部分,而Java和C ++将命令式范例与面向对象的
2022-01-21 22:36:51 3KB Haskell
1
# jdk7新特性 ## try-with-resources 是一种声明了`一种或多种资源的try语句`。资源是指在程序用完了之后必须要关闭的对象。try-with-resources语句保证了每个声明了的`资源在语句结束的时候都会被关闭`。任何实现了java.lang.`AutoCloseable`接口的对象,和实现了java .io .`Closeable`接口的对象,`都可以当做资源使用`。 ``` try ( InputStream is = new FileInputStream("xx"); OutputStream os = new FileOutputStream("xx") ) { //xxx //不用关闭了,JVM帮你关闭流 ``` ## 多异常统一处理 在Java 7中,catch代码块得到了升级,用以在`单个catch块中处理多个异常`。如果你要捕获多个异常并且它们包含相似的代码,使用这一特性将会减少代码重复度。 ``` try { //xxx } catch (AException | BException e) { e.printStackTrace(); } ``` 缺点是异常处理细粒度降低 ## 泛型推导 ``` List list = new ArrayList(); ``` `泛型实例`的创建可以通过`类型推断`来简化,`可以去掉`后面new部分的泛型类型,`只用`就可以了。 ## 使用ForkJoin Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行。 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成: ```ascii ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ ``` 还有一种方法,可以把数组拆成两部分,分别计算,最后加起来就是最终结果,这样可以用两个线程并行执行: ```ascii ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ ``` 如果拆成两部分还是很大,我们还可以继续拆,用4个线程并行执行: ```ascii ┌─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┘ ``` 这就是Fork/Join任务的原理:判断一个任务是否足够小,如果是,直接计算,否则,就分拆成几个小任务分别计算。这个过程可以反复“裂变”成一系列小任务。 我们来看如何使用Fork/Join对大数据进行并行求和: ``` public class Main { public static void main(String[] args) throws Exception { // 创建2000个随机数组成的数组: long[] array = new long[2000]; long expectedSum = 0; for (int i = 0; i < array.length; i++) { array[i] = random(); expectedSum += array[i]; } System.out.println("Expected sum: " + expectedSum); // fork/join: ForkJoinTask task = new SumTask(array, 0, array.length); long startTime = System.currentTimeMillis(); Long result = ForkJoinPool.commonPool().invoke(task); long endTime = System.currentTimeMillis(); System.out.println("Fork
2022-01-13 20:03:17 1.51MB jdk8 lambda 函数式编程 stream
1
公司常用到lamda表达式,有了这个资料,走遍天下都不怕
2022-01-10 09:09:48 714KB java
1
Haskell函数式编程入门
2022-01-05 01:15:08 61.26MB Haskell
1
java8 函数式编程 Richard Warburton著 王群峰译,全书源码(包括课后练习源码)
2021-12-30 18:18:27 382KB java8 函数式编程 源码
1
Spark是一种通用内存计算框架,使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集
1
核心内容: 1)讲解JDK8~13核心特性,重点讲解LTS版本,如JDK8包含高性能日期时间处理、JVM新增内存空间讲解 2)lambda表达式、四大函数式接口、自定义函数式编程、集合框架Stream流式处理、Collector聚合统计 3)JDK8新特性综合实战之电商订单数据处理等知识点; 4)玩转JDK9/10/11/12/13 涵盖新特性 Jshell实战、接口私有方法、增强版try-with-resource、增强版                Stream API 5)局部类型推断Var实战、标准版HttpClient玩转GET/POST/异步/http2请求、多行文本块、增强版Switch                等高级知识点
1
JavaScript 轻量级函数式编程 JavaScript 轻量级函数式编程
2021-12-10 13:44:54 598KB JavaScript 轻量级 函数式编程
1
JavaScript函数式编程
2021-11-17 19:02:57 29KB 函数式编程 JavaScript
1