使用备忘录模式(Memoization Pattern)提高性能
这个模式说白了,就是将需要进行大量计算的结果缓存起来,然后在下次需要的时候直接取得就好了。因此,底层只需要使用一个Map就够了。
但是需要注意的是,只有一组参数对应得到的是同一个值时,该模式才有用武之地。
在很多算法中,典型的比如分治法,动态规划(Dynamic Programming)等算法中,这个模式运用的十分...
分类:
编程语言 时间:
2014-10-30 10:23:31
阅读次数:
207
递归优化
很多算法都依赖于递归,典型的比如分治法(Divide-and-Conquer)。但是普通的递归算法在处理规模较大的问题时,常常会出现StackOverflowError。处理这个问题,我们可以使用一种叫做尾调用(Tail-Call Optimization)的技术来对递归进行优化。同时,还可以通过暂存子问题的结果来避免对子问题的重复求解,这个优化方法叫做备忘录(Memoizatio...
分类:
编程语言 时间:
2014-10-29 10:54:45
阅读次数:
395
利用懒操作
代码中的很多操作都是Eager的,比如在发生方法调用的时候,参数会立即被求值。总体而言,使用Eager方式让编码本身更加简单,然而使用Lazy的方式通常而言,即意味着更好的效率。
本篇文章就是为了展示Java 8中新特性是如何让我们能够更方便的写出Lazy方式代码。
延迟初始化
对于会消耗较多资源的对象,使用延迟初始化是比较好的选择。这不仅能够节省一些资源,同时...
分类:
编程语言 时间:
2014-10-27 10:55:00
阅读次数:
352
遍历一个字符串
在Java 8中,CharSequence接口新添加了一个方法叫做chars(),方法的签名是这个样子的:
public default IntStream chars()
default关键字修饰的接口方法是Java 8中新添加的特性,目的是向接口中添加已经实现的方法。chars()方法返回了一个IntStream类型,所以chars()实际上是为所有实现...
分类:
编程语言 时间:
2014-10-23 09:28:02
阅读次数:
797
文章导读:
以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解。
-------
在编程语言中,函数的应用:
1. 代码块重复,这时候必须考虑用到函数,降低程序的冗余度
2. 代码块复杂,这时候可以考虑用到函数,降低程序的可读性
在Python,有两种函数,一种是def定义,一种是lambda函数
#假如要求两个数之和,用普通函数或匿名函数如下:
1. def func(x,y):return x+y
2. lambda x,...
分类:
编程语言 时间:
2014-10-15 15:14:51
阅读次数:
293
python中lambda关键字,用来定义一个lambda匿名函数。形式如:lambda 参数:表达式。lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回 。 lambda函数跟def定义的函数相比,有...
分类:
编程语言 时间:
2014-10-14 12:29:38
阅读次数:
168
一、lambda函数
例如:
fun1 = lambda x,y: x + y
print fun1(3,4)输出:7
lambda生成一个函数对象。该函数参数为x,y,返回值为x+y。函数对象赋给func。
func的调用与正常函数无异。
上面的代码等价于:
def fun2(x, y):
return x + y
二、函数作为参数
函数可以作为一个对象,进行参数...
分类:
编程语言 时间:
2014-10-11 11:55:25
阅读次数:
175
# python 使用lambda函数 ## 学习资源 1. [lambda函数学习](http://woodpecker.org.cn/diveintopython/power_of_introspection/lambda_functions.html) 2. [list comprehension](http://www.cainiao8.com/python/...
分类:
编程语言 时间:
2014-09-28 02:19:30
阅读次数:
183
本文举了几个例子,用代码来说明原先需要借助Guava来实现的功能,如何用Java7或Java8实现。...
分类:
编程语言 时间:
2014-09-23 19:45:53
阅读次数:
1210
熟悉函数式编程的同学都了解lambda表达式,程序设计语言里的lambda表达式来源于1936年邱奇发明的lambda演算。Y-Combinator正是lambda演算里最富有神秘色彩的一种函数。它的作用是在只有匿名函数的lambda演算里实现递归函数调用。本篇向读者揭示了如何反复重构一个普通的阶乘函数从而推导出Y-Combinator。文章的推导方法来源于Jim Weirich在ruby conference 2012上的一次分享。...
分类:
编程语言 时间:
2014-09-21 14:53:00
阅读次数:
309