dm_vincent的专栏

后端工程师,前端技术爱好者。

[Java 8 & Spring JDBC] 使用Spring JDBC和Lambda表达式简化DAO

使用Spring JDBC和Lambda表达式简化DAO 如果你需要向数据库中插入一条Item记录,那么会有类似下面的代码: Item对应的实体类型为: public class Item { public int name; public BigDecimal pric...

2015-07-09 10:48:27

阅读数 6331

评论数 3

Effective JavaScript Item 50 优先使用遍历方法而非循环

优先使用遍历方法而非循环 在使用循环的时候,很容易违反DRY(Don't Repeat Yourself)原则。这是因为我们通常会选择复制粘贴的方法来避免手写一段段的循环语句。但是这样做回让代码中出现大量重复代码,开发人员也在没有意义地"重复造轮子"。更重要的是,在复制粘...

2014-11-12 10:06:18

阅读数 3431

评论数 0

[Java 8] (11) 使用Lambda的原则

要想更好的使用函数式编程,仅仅熟悉其语法结构是远远不够的。必须从思想和设计层面,去考虑它,去接纳它。这种编程范式和大多数开发人员所熟知的面向对象编程范式是不同的。 下面我们从以下几个方面来回顾一下使用函数式编程的要点: 多用声明式,少用命令式 要想更好的使用函数式编程,首先必须要...

2014-11-07 10:16:39

阅读数 5278

评论数 1

[Java 8] (10) 使用Lambda完成函数组合,Map-Reduce以及并行化

Java 8中同时存在面向对象编程(OOP)和函数式编程(FP, Functional Programming)这两种编程范式。实际上,这两种范式并不矛盾,只是着重点不同。在OOP中,着重于通过丰富的类型系统对需要解决的问题进行建模;而FP中则着重于通过高阶函数和Lambda表达式来完成计算。所以...

2014-11-06 10:09:44

阅读数 27953

评论数 2

[Java 8] (9) Lambda表达式对递归的优化(下) - 使用备忘录模式(Memoization Pattern)

使用备忘录模式(Memoization Pattern)提高性能 这个模式说白了,就是将需要进行大量计算的结果缓存起来,然后在下次需要的时候直接取得就好了。因此,底层只需要使用一个Map就够了。 但是需要注意的是,只有一组参数对应得到的是同一个值时,该模式才有用武之地。 在很多算法中,典型的...

2014-10-30 09:58:15

阅读数 7087

评论数 2

[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归

递归优化 很多算法都依赖于递归,典型的比如分治法(Divide-and-Conquer)。但是普通的递归算法在处理规模较大的问题时,常常会出现StackOverflowError。处理这个问题,我们可以使用一种叫做尾调用(Tail-Call Optimization)的技术来对递归进行优化。同时...

2014-10-29 09:56:32

阅读数 12479

评论数 1

[Java 8] (7) 利用Stream类型的"懒"操作

利用懒操作 代码中的很多操作都是Eager的,比如在发生方法调用的时候,参数会立即被求值。总体而言,使用Eager方式让编码本身更加简单,然而使用Lazy的方式通常而言,即意味着更好的效率。 本篇文章就是为了展示Java 8中新特性是如何让我们能够更方便的写出Lazy方式代码。 延迟初始化 ...

2014-10-27 10:14:10

阅读数 15411

评论数 0

[Java 8] (6) Lambda与资源管理

资源处理 Java本身自带了垃圾回收(Garbage Collection)功能,但是只有垃圾回收的目标是内部资源(Internal Resource),典型的比如堆上分配的内存区域等。对于外部资源(External Resource),如数据库连接,文件句柄,套接字等资源,还是需要在程序中进行...

2014-10-26 11:33:03

阅读数 4389

评论数 0

[Java 8] (5) 使用Lambda表达式进行设计

使用Lambda表达式进行设计 在前面的几篇文章中,我们已经见识到了Lambda表达式是如何让代码变的更加紧凑和简洁的。 这一篇文章主要会介绍Lambda表达式如何改变程序的设计,如何让程序变的更加轻量级和简洁。如何让接口的使用变得更加流畅和直观。 使用Lambda表达式来实现策略模式 假...

2014-10-25 06:37:22

阅读数 6445

评论数 3

[Java 8] (4) 列举目录下的所有文件和监视文件变化

列举目录中的所有文件 首先给出代码: Files.list(Paths.get(".")).forEach(System.out::println); Files.list方法得到的是一个Stream类型的对象,它代表了目标路径下所有的文件。如果只想获取目标路径下的所...

2014-10-24 10:18:54

阅读数 12499

评论数 1

[Java 8] (3) 字符串遍历和Comparator接口

遍历一个字符串 在Java 8中,CharSequence接口新添加了一个方法叫做chars(),方法的签名是这个样子的: public default IntStream chars() default关键字修饰的接口方法是Java 8中新添加的特性,目的是向接口中添加已经实现的方法。...

2014-10-23 09:16:23

阅读数 11686

评论数 2

[Java 8] (2) Lambda在集合中的使用

Lambda在集合中的使用 列表的遍历 提起对于集合的遍历,恐怕下面的这种方式已经是一种思维定式了吧: final ListString> friends = Arrays.asList("Brian", "Nate", "Neal&q...

2014-10-21 09:54:25

阅读数 33552

评论数 12

[Java 8] (1) 函数式编程简介

思维方式的转变 以从一个城市集合中寻找是否存在Chicago为例: 习惯的方式 boolean found = false; for(String city : cities) { if(city.equals("Chicago")) { foun...

2014-10-17 13:49:01

阅读数 18088

评论数 1

提示
确定要删除当前文章?
取消 删除