年终小结

一年的最后,想和大家回顾一下今年讲过的技术和书,用一些问答,一起来提炼一下精华。

Spark

为什么需要分布式计算?

计算的增长速度超过了硬件的增长,单一服务器无法负荷。多服务器带来的是复杂度的提升,分布式计算就是解决这种复杂性问题的。

为什么不能对Oracle横向扩容实现分布式?

计算服务不止是满足计算功能,更重要是保证计算的稳定和可靠。

多服务器在可靠性方面,会出现一种单机不存在的问题:部分服务器故障。在部分故障情况下仍保持正常计算,我们称为分区容忍性(P)。

Oracle在可靠性方面是同时满足了一致性(C)和可用性(A),通过思想实验,发现CAP三者是无法全部达到的。

所以对Oracle横向扩容是无法满足P的,会引入不可靠运行的风险。

Spark是什么?

解决方法是牺牲CAP中的某一特性。

一般来说,对分布式计算来说,在CAP中,P是必须满足的,C和A相比,A在大多数场景下更为重要,所以选择牺牲C成本最低。

Spark是一种AP的解决方案,但是需要注意的是,并不是完全牺牲C,而是用最终一致性来替代强一致性。

在具体实现上,Spark延续了Hadoop的思路,对传统数据库技术进行了完全的推倒重来,是一种更为纯粹的分布式技术,非常值得学习。

《例外处理的逆袭》

为什么选择分享这本书?

这是我今年分享的第一本书,最主要的原因是作者的文笔实在是太好了,一本既好看,又有用的书,当然要分享了。

什么是例行处理的逆袭?

核心思想是分而治之,将例外处理分为了fault、error、failure三类,识别难度由高到低,应对难度由低到高,通过标准化的应对方式,可以最大化确保系统运行的稳定。

这本书最大的惊喜是什么?

应该是这句话:fault是无法全部识别的,但是failure确实可以保证的。缺陷无法全部排除,这是一个真相,但是我们往往不愿意正视,这本书让我重新认识了质量工作的方向。测试工作长期占据了统治的地位,但是针对的其实还是缺陷,其实就算再努力,效果也是有效的。如果把视角放到failure上,把质量工作拓展到全生命周期,才能真的切实提高。

《Clean Code》

这本书为什么经典?

作者Uncle Bob是程序员界的大神,他曾经参加了敏捷宣言的制定,提出了OO中非常重要的SOLID原则。而这本书是Uncle Bob自己最为得意的著作之一,我认为业界顶尖人物的思想是我们从业者都不能错过的。

Uncle Bob想说点什么?

整本书内容非常零散,讨论了非常多的主题,但是核心内容就是三个字"整洁感",作者认为这个是程序员的一项核心能力,而整本书是从编程的各个细节出发,来诠释整洁感这个概念。

Uncle Bob为什么要写这本书?

看到过对Uncle Bob的访谈,程序员是一个非常年轻的职业,年轻的职业缺点就在于缺乏思想的沉淀。在编程语言上,Java、Python、C等等各相争鸣,编程范式上OO逐渐主流,但是过程式、FP等也非常活跃,框架技术更是层出不穷。在这种多元化背景下,程序员是非常容易迷失的,Uncle Bob致力于寻找一些在多样化下面的东西,一些可以成为"元能力"的东西。在协作方面提出了敏捷宣言,而在工程实践上,就是"整洁感"。

小结

今年一共分享了15次课程,感谢大家的参与,我也收获良多,希望明年可以和大家一起获得更多不一样的体验。

小课堂week15 年终小结的更多相关文章

  1. 小课堂Week12 Clean Code Part1

    小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...

  2. 小课堂Week10 例外处理设计的逆袭Part3

    小课堂Week10 例外处理设计的逆袭Part3 今天是<例外处理设计的逆袭>这本书阅读的第三天,也是最后一天,我们会主要通过实例,对Part2中提出的例外处理等级进行解读. Level1 ...

  3. 小课堂Week8 例外处理设计的逆袭Part1

    小课堂Week8 例外处理设计的逆袭Part1 今天和大家讲一本书,书名是<例外处理设计的逆袭>. 为什么想讲这本书,是因为,例外处理在程序代码中到处存在,但是这些到底该如何写好,总觉得有 ...

  4. Spark小课堂Week7 从Spark中一个例子看面向对象设计

    Spark小课堂Week7 从Spark中一个例子看面向对象设计 今天我们讨论了个问题,来设计一个Spark中的常用功能. 功能描述:数据源是一切处理的源头,这次要实现下加载数据源的方法load() ...

  5. Spark小课堂Week3 FirstSparkApp(Dataframe开发)

    Spark小课堂Week3 FirstSparkApp(代码优化) RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lamb ...

  6. Spark小课堂Week3 FirstSparkApp(RDD开发)

    Spark小课堂Week3 FirstSparkApp 问题:Java有哪些数据结构 大致有如下几种,其中List与Map是最重要的: List Map Set Array Heap Stack Qu ...

  7. 小课堂Week11 会说话的代码

    小课堂Week11 会说话的代码 今天主要讨论下,在编码过程中和"命名"相关的问题.因为命名方法比较自由,如果要提高可读性,我们需要尽量使其符合正规的英文语法习惯. 变量/属性 通 ...

  8. 小课堂Week9 例外处理设计的逆袭Part2

    小课堂Week9 例外处理设计的逆袭Part2 今天继续阅读<例外处理设计的逆袭>这本书,我们先看两个案例: 案例1 问:如果要设计一个依据学号到数据库中查询学生资料的函数,当找不到符合条 ...

  9. Spark小课堂Week6 启动日志详解

    Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...

随机推荐

  1. JAXB注解【转】

    http://blog.csdn.net/lw371496536/article/details/6942045 JAXB(Java API for XML Binding),提供了一个快速便捷的方式 ...

  2. JBPM的引擎内核学习

    http://atongyeye.iteye.com/blog/2093505 流程引擎 http://www.cnblogs.com/aspnetx/archive/2009/09/24/15735 ...

  3. Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1)

      Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1) 转到底部 In this Documen ...

  4. iOS开发-文件管理(一)

    iOS开发-文件管理(一) 一.iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立.封闭.安全的空间,叫做沙盒.它一般存放着程序包文件(可执行文件).图片.音频.视频.pli ...

  5. 简单的as3操作xml

    package { import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import ...

  6. Flash与IE奇怪的关键字冲突

    我有一个小小的swf文件,用来播放声音,加入到HTML后,在Firefox/chrome下播放正常,唯独IE8提示 消息: 对象不支持此属性或方法 行: 48 字符: 3 代码: 0 URI: ... ...

  7. 使用JAR命令打EAR包

    恩,我又得了一个发布应用的活,常常使用JAR命令来打EAR包,所以下面记录一下,以免忘记! 前提条件如下: 1)我的WEB服务器是WebLogic Server (版本是: 10.3.6.0) 2)假 ...

  8. ios如何获取位置权限

    获取当前位置需要改plist文件  在plist文件加入   NSLocationWhenInUseUsageDescription  字段 /** 初始化一个管理器对象 */ locationMan ...

  9. SQL:认识数据库约束

    讲了关于数据库的很多内容,也讲了很多约束,对唯一和主键.核查和规则.外键约束很感兴趣. 一.唯一和主键(实体完整性) 区别: 数量:一张表只可以有一个主键约束,却可以有多个唯一约束. 是否空值:主键不 ...

  10. 【.NET】对文件的对称加密

    using System;using System.IO;using System.Security.Cryptography;namespace ConsoleApp_SymmetricalEncr ...