18 yqj2065

尚未进行身份认证

我要认证

《编程导论(Java)》作者

等级
TA的排名 3k+

5.5 Map-Reduce(映射-归约)模型

Java8引入的流即java.util.stream.Stream,被称为具有函数式编程风格。其流水线操作就属于本章的主题:封闭性操作。对流的认识和把握,可以溯源于映射-归约模型。Map-Reduce/映射-归约,是一种借鉴信号处理过程、对大规模数据进行处理的模型。它包含3方面:对于一个数据序列,. 对(数据序列的)每一个数据进行转换,Map-Reduce中的Map,指从一个数据序列得到另一个数据序列。转换操作,包括函数映射/map、过滤/filter等操作; 对这个数据序列进行归约。Map-R

2020-06-13 22:36:40

增强内容,归整博客

CSDN上的博客,有技术含量的高质量文章,越来越少了。我的博客,也很少发新东西。一直在将原有的文章加以补充、整理和系统化。修改原来的文章、删除垃圾文章,留下来的为学习资料。...

2020-05-20 13:22:48

6.2访问者模式(5.11)

6.1 Java模拟 双分派(Double Dispatch)上节[6.1 Java模拟双分派]重点关注源代码的变化。本节讨论实验结果的意义——访问者(Visitor)模式使用双分派技术,能够为被访问者添加新的操作。【注:Java模拟双分派,解决了Visitor模式的结构和实现方面的问题。本节讲大道理】6.2.1表达式问题通常情况下,Shape所需的一些方法draw()和area(...

2019-12-14 12:25:36

桥接模式(4.2)

桥接模式,将2次以上的策略选择串接起来形成大策略。

2019-12-02 01:42:30

写作思考:命令模式(5.2)

命令模式是一个学习起来相对较难的模式。难点在于Invoker为什么会想到不管不顾地依赖Command,而后者封装一个普适方法exe ()。另一方面,在于GoF对于命令模式意图的描述夸大其词,使得命令模式与策略模式/行为参数化混淆。命令模式(5.2)放在哪里讲,一直定不下来。可以放在第二章行为参数化中,现在放在《第四章策略模式的演变》中,命令模式不是演变,是对立/对比。还有个问题:适配器应该在命...

2019-11-24 13:45:22

定义Java的三元函数

java.util.function包Function家族很庞大,共25个函数接口。但是Java 库只提供单个参数和两个参数的函数映射接口。如果需要更多参数,如三元函数,可以自己编写,还可以采用柯里化技术先获得BiFunction对象。package chap2.closure.currying;import java.util.function.BiFunction;/** * 三...

2019-11-18 20:22:19

2.2 模板方法模式(5.10)

看一本关于设计模式的书,首先翻阅其模板方法模式。一方面,模板方法模式极为基础,也包含很多设计思考;另一方面,它反映作者对设计模式的理解程度,这一章写得不好,一定是水货师傅。

2019-11-15 11:37:32

0.1编程语言的掌握

搞了一个GitChat,作为第0章基础-0.1三大抽象。人们常说:“编程语言只是工具,重要的是学会编程的思想”,那么,什么是编程的思想呢?更现实的说法,(一个合格的老师)在讲授一门语言时,应该介绍什么呢? 本次活动,介绍在编程语言的共性方面的编程的思想,即编程语言对程序员的一般性需求的支持。不论命令范式、函数范式或面向对象范式语言,都需要对程序员的数据抽象、行为抽象加以支持,而面向对象范式语言...

2019-06-21 17:32:48

什么是依赖注入——板砖拍Martin Fowler

今天yqj2065用板砖,拍一下Martin Fowler的《IoC容器和依赖注入模式》(Inversion of Control Containers and the Dependency Injection pattern[1] )。将我在其他博客中关于他这篇文章的吐槽,条理化。1.Martin Fowler介绍Martin Fowler(马丁·福勒),国际著名的OO专家,敏捷开发方法...

2018-08-11 11:55:09

拍到什么程度

写一本《OOD(Java8)》,最难的地方,在于OOD领域存在大量错误认识,而我们又必须建立完整的逻辑体系。在讲解OOD的“正确”知识时,我就需要拍一下GoF、Robert C. Martin、Martin Fowler。对于GoF,我是心怀敬意的,但是Robert C. Martin的DIP,就要把它拍到粪坑中去,因为DIP论文,夸张滴说,错误无处不在(1.2 抛弃依赖倒置原则)。现在多...

2018-07-13 08:56:25

2017-2018-2 OOD试卷AB

一、 编程论述题:框架设计者1. 以SortTest和IntSort为例,说明什么是控制反转IoC(7分)2.什么是抽象依赖原则,它与应用程序、框架的关系(5分)3. 有一个接口如下 package util;@FunctionalInterface  public interface  DoubleOP {     double op(double m,double n) ;}编写应用程序App...

2018-06-26 20:00:17

《OOD实战(Java8)》难产中

虽然yqj2065自认为不是一个很负责的老师,但是比起绝大多数老师,我算得上对得起我的学生。我讲课的内容,全世界独一无二。你们不会在任何其他人那里获得,除了我的博客中,零零散散。我也准备了大量例程、文字...但是将它们搞成一本书,还差得远。但是,我有更有趣的事情要做,身体也不宜久坐,写书挺无趣。最最重要的是,我对待出书,有洁癖般的要求。那就是当我死的时候,它应该有资格陪我进火葬场。我也不想写什么论...

2018-06-24 22:39:07

我是OO砖家

yqj2065是OO砖家.作为OO砖家,我都不屑拍国内的设计模式书籍的作者,都是垃圾书,有什么好拍的。要拍的是GoF、Robert C. Martin、Martin Fowler这些装逼的货。   并且,要求学生一起拍。拍得不好,我挂你!...

2018-06-10 21:40:34

同学们写学习笔记——认识IoC、DI和DIP

【2018.8.3】我准备了一个Chat,介绍如下:面向对象设计/OOD领域充满混乱。当我们建立 OOD 的完整的逻辑体系时,需要澄清一些错误认识。特别是依赖倒置原则/DIP、控制反转/IoC 和依赖注入/DI 搅合在一起,成为“那些年搞不懂的高深术语”,本活动的出发点,旨在解释这些高深术语,以及为什么它们会“成为”高深术语。本活动通过实例,介绍 OOD 中的基本原则——针对接口编程,什么...

2018-05-25 14:13:46

OOD/设计模式学习的编程环境

本书介绍OOD/设计模式的使用的语言主要为Java,还用到C和Scheme语言。Java开发环境为BlueJ;使用的其他语言环境:C语言:Pelles cScheme语言:DrRacket...

2018-05-17 13:28:16

什么是闭包?

对于吃,人们有一个基本理解——填肚子。正是因为有一个公认的基础,所以人们容易理解更复杂的说法,如吃饭/吃酒、吃苦/吃醋/吃亏、吃货、吃人。当我以Java作为通常的工作语言时,yqj2065一般不使用闭包这个术语——我不希望你从Java中知道了闭包概念,在别的语言中又要重新理解这个概念。由于在讲行为参数化时,需要讲到嵌套函数,所以,这里给大家一个比较完整的闭包(计算机科学)的定义,作为“公认”基...

2018-01-27 19:57:03

0.1.1编程类课程的问题

本文已经纳入编程语言应该学些什么,作为引子。在讲授一门语言时,应该介绍什么呢?我认为,简单地说,三大抽象(如果是面向对象的语言)+其编程范式。我国绝大多数高校,是从C语言教学开始的。从数据抽象、行为抽象的角度看,C语言并不是合适的入门级编程语言(后面再解释)。现行教学体系中,编程类课程有一个存在很久的问题:语法派的教学。教学方式上,很多人不是在讲授如何编程,而是在讲一门语言的语法。以谭浩...

2018-01-18 19:43:08

考前提示

 考试前请学生们注意:1.本课程开卷,不限制你带任何书籍和资料。我不知道教务处有没有限制你们不得使用手机,但是我不建议你们用手机,因为你肯定不懂才到处查资料,而你查到的网上的资料,大多数我会认为是错误的。2.不得大篇幅抄袭我的博客中的内容。你不会的,抄唐诗宋词比较好。抄我的,驴头不对马嘴,会让我心烦。3.考试前,我不会整合博客内容。和考试关联度高的博客,我可能会暂时隐藏。4.看...

2018-01-14 23:42:23

1.4.2 依赖倒置原则(Dependency Inversion Principle、DIP)的错误

摘要:依赖倒置原则(Dependency Inversion Principle、DIP)是一个错误的尝试,Robert C. Martin希望将针对接口编程和控制反转两个概念纳入其DIP中,却形成了一个思路混乱的、不知所云的原则。作为正文,不能够喜怒笑骂。草稿抛弃依赖倒置原则将被修改为吐槽版。1.4.2 抛弃依赖倒置原则(DIP)在讨论OOD原则时,常常被提到的一个原则叫依赖倒...

2017-12-29 21:55:10

动态类型+面向对象 = shit

动态类型+面向对象 = shit1.动态类型动态类型语言,属于看起来方便,用后麻烦的东西,我不喜欢它们。除非不需要考虑软件工程场合——如作为脚本语言。动态类型+高阶函数,使得Scheme定义的op非常强大,如同酒驾的司机,非常狂野。(define (op a b how-op)( how-op a b) )op可以对两个参数a,b进行“某种”how-op操作...

2017-12-26 18:30:54

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。