在Thinking in scala (5)----高阶函数* 里面,我们演示了如何把一个函数作为参数传递给另外一个函数。在本文里面,我们来演示函数式编程另外一个重要的特性:返回一个函数。首先来看这么一段代码:code piece 1:def sum(f:Int=>Int):(Int,Int)=>I...
分类:
其他好文 时间:
2014-10-31 11:40:31
阅读次数:
165
趁着自己重装Linux 虚拟机的机会,把安装 haskell 的过程记录一下,顺便帮那些还犹豫徘徊在haskell门外的读者入门。基本概念:Haskell : 是一门通用函数式语言,差点儿能够进行不论什么种类的开发,包含命令行,GUI,数据库,Web.源码能够跨平台: Linux,Mac, Wind...
分类:
其他好文 时间:
2014-10-30 10:50:01
阅读次数:
168
使用备忘录模式(Memoization Pattern)提高性能
这个模式说白了,就是将需要进行大量计算的结果缓存起来,然后在下次需要的时候直接取得就好了。因此,底层只需要使用一个Map就够了。
但是需要注意的是,只有一组参数对应得到的是同一个值时,该模式才有用武之地。
在很多算法中,典型的比如分治法,动态规划(Dynamic Programming)等算法中,这个模式运用的十分...
分类:
编程语言 时间:
2014-10-30 10:23:31
阅读次数:
207
“面向对象”其实好比是人类成年期学习和整理知识的方法 ——把知识分门别类 比如猫、老虎,都属于猫科动物 class?猫?extends?猫科动物 class?老虎?extends?猫科动物 描述的就是这种认知世界的方式 而“原型...
分类:
其他好文 时间:
2014-10-29 17:18:30
阅读次数:
181
递归优化
很多算法都依赖于递归,典型的比如分治法(Divide-and-Conquer)。但是普通的递归算法在处理规模较大的问题时,常常会出现StackOverflowError。处理这个问题,我们可以使用一种叫做尾调用(Tail-Call Optimization)的技术来对递归进行优化。同时,还可以通过暂存子问题的结果来避免对子问题的重复求解,这个优化方法叫做备忘录(Memoizatio...
分类:
编程语言 时间:
2014-10-29 10:54:45
阅读次数:
395
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,是函数式编程的一种衍生范型。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。...
分类:
其他好文 时间:
2014-10-28 17:48:30
阅读次数:
243
Functions are values too.在函数式语言中中函数都是变量,比如在javascript中package main import ( "fmt" "math")func main() { hypot := func(x,y float64) float64 { ...
分类:
其他好文 时间:
2014-10-28 00:39:13
阅读次数:
130
本篇将讲述lamdba表达式的排序,本例包含一个Player对象的集合[稍后定义],通过每个player的分数高低对列表的player进行排序,类定义001如下
public class SortingPlayer {
public static void main(String[] args) {
List playerList = new ArrayList<>();
pla...
分类:
数据库 时间:
2014-10-27 22:59:57
阅读次数:
261
利用懒操作
代码中的很多操作都是Eager的,比如在发生方法调用的时候,参数会立即被求值。总体而言,使用Eager方式让编码本身更加简单,然而使用Lazy的方式通常而言,即意味着更好的效率。
本篇文章就是为了展示Java 8中新特性是如何让我们能够更方便的写出Lazy方式代码。
延迟初始化
对于会消耗较多资源的对象,使用延迟初始化是比较好的选择。这不仅能够节省一些资源,同时...
分类:
编程语言 时间:
2014-10-27 10:55:00
阅读次数:
352
资源处理
Java本身自带了垃圾回收(Garbage Collection)功能,但是只有垃圾回收的目标是内部资源(Internal Resource),典型的比如堆上分配的内存区域等。对于外部资源(External Resource),如数据库连接,文件句柄,套接字等资源,还是需要在程序中进行显式回收的。
使用Lambda表达式可以实现一种叫做Execute Around的模式,用来...
分类:
编程语言 时间:
2014-10-26 11:44:13
阅读次数:
305