个人简介

Echo Blog


江湖无名 安心练剑
  • 函数式编程-04-让 java 更加函数式
    从邮箱验证说起 验证邮箱的合法性,是一个非常常见的需求。 如果邮件格式合法,就发送对应的验证邮件;如果非法,则提示错误信息。 我们一般的实现方式如下: import java.util.regex.Pattern; /** * @author 老马啸西风 * @since 1.0.0 */ public class EmailValid { private fina...
    2020-06-05 09:42:59 | Pattern
  • 函数式编程-03-java 中的函数式接口和 lambda 简介
    Java 8 的函数式接口 lambda 被用于接收特定接口的地方, Java 正是以此来决定调用哪个方法的。 Java 并不对命名加以限制,有些语言则不然。 唯一的限制是所用的接口必须要明确,这通常意味着它应该有且仅有一个抽象方法。(实际上会更复杂一些,因为有些方法不算在内。) 这样的接口就是SAM (single abstract method, 单一抽象方法)类型,被称为函数式...
    2020-06-05 09:42:59 | Pattern
  • 函数式编程-02-函数中的方法
    Java 中的函数 在第1 章中,你用了我称之为函数的东西,但实际上它们是方法。 方法是一种在传统的Java 里在某种程度上表示函数的方式。 函数式的方法 一个方法可以是函数式的,只要它满足纯函数的要求: 它不能修改函数外的任何东西。外部观测不到内部的任何变化。 它不能修改自己的参数。 它不能抛出错误或异常。 ...
    2020-06-05 09:42:59 | Pattern
  • 函数式编程-01-什么是函数?
    本章要点 理解现实世界中的函数 在 Java 中表示函数 使用lambda 使用高阶函数 使用柯里化函数 用函数式接口编程 学习目标 为了理解函数式编程是如何工作的, 我们会使用一些函数式库提供的函数式组件,还有Java 8 标准库里可用的少许组件。 不仅如此,...
    2020-06-05 09:42:59 | Pattern
  • 函数式编程-00-什么是函数式编程
    序言 学习 java 函数式编程的目的主要有 2 个: (1)运用下 jdk8 (2)重新理解这种编程思想 实际上很多东西都要反复学些。 准备工作 你可以同时阅读下列内容: java8 系列学习 本系列学习方式 (1)以书本为核心,做发散式学习。 统计 10 篇左右博客,直到没有特别新颖的内容为止。 (2)笔记 本系列博客就是一个笔记。 同时源码也会做备份,...
    2020-06-05 09:42:59 | Pattern
  • 编译原理系列-06-LR
    3.3 LR分析 LL(k)预测法的弱点是它必须预测下一个将被使用的产生式,并且需要向前查看一个字符、LR(k)是一个更有效的分析法,它可以在看见与整个产生式相关的所有输人记号以后再做出决定(多于k个记号)。 LR(k)分别代表由左自右的分析、最右推导、向前查看k个记号。最右推导的使用看起来有些奇怪,怎样用最右推导进行由左向右的分析呢? 图3.18说明了在文法3.1程序中的LR分析过程...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-05-Predictive analysis 预测分析
    3.2 预测分析 有些文法使用了像递归下降这样的简单算法来简化分析。 实际上,就是把每个文法产生式转换成一个递归函数的子句。 如文法3.11所示。 文法3.11 S→if E then S else S L→end S→beginS L L→;SL S→print E E→num=num 这...
    2020-06-04 05:34:28 | Java
  • 编译原理系列-04-parsing 语法分析之上下文无关文法
    语法分析 前儿章讨论过了用符号代替正则表达式的简化机制,这种机制在使用时是很方便的: digits=[0-9] + sum=(digits“+") *digits 这些正则表达式定义了28+301+9的和。又如: digits=[0-9] + Sum=expr“+"expr expr="("sum") " | digits 所定义的表达形式如下所示: (109+23) 61 ...
    2020-06-04 05:34:28 | Java