小课堂week15 年终小结
年终小结
一年的最后,想和大家回顾一下今年讲过的技术和书,用一些问答,一起来提炼一下精华。
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 年终小结的更多相关文章
- 小课堂Week12 Clean Code Part1
小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...
- 小课堂Week10 例外处理设计的逆袭Part3
小课堂Week10 例外处理设计的逆袭Part3 今天是<例外处理设计的逆袭>这本书阅读的第三天,也是最后一天,我们会主要通过实例,对Part2中提出的例外处理等级进行解读. Level1 ...
- 小课堂Week8 例外处理设计的逆袭Part1
小课堂Week8 例外处理设计的逆袭Part1 今天和大家讲一本书,书名是<例外处理设计的逆袭>. 为什么想讲这本书,是因为,例外处理在程序代码中到处存在,但是这些到底该如何写好,总觉得有 ...
- Spark小课堂Week7 从Spark中一个例子看面向对象设计
Spark小课堂Week7 从Spark中一个例子看面向对象设计 今天我们讨论了个问题,来设计一个Spark中的常用功能. 功能描述:数据源是一切处理的源头,这次要实现下加载数据源的方法load() ...
- Spark小课堂Week3 FirstSparkApp(Dataframe开发)
Spark小课堂Week3 FirstSparkApp(代码优化) RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lamb ...
- Spark小课堂Week3 FirstSparkApp(RDD开发)
Spark小课堂Week3 FirstSparkApp 问题:Java有哪些数据结构 大致有如下几种,其中List与Map是最重要的: List Map Set Array Heap Stack Qu ...
- 小课堂Week11 会说话的代码
小课堂Week11 会说话的代码 今天主要讨论下,在编码过程中和"命名"相关的问题.因为命名方法比较自由,如果要提高可读性,我们需要尽量使其符合正规的英文语法习惯. 变量/属性 通 ...
- 小课堂Week9 例外处理设计的逆袭Part2
小课堂Week9 例外处理设计的逆袭Part2 今天继续阅读<例外处理设计的逆袭>这本书,我们先看两个案例: 案例1 问:如果要设计一个依据学号到数据库中查询学生资料的函数,当找不到符合条 ...
- Spark小课堂Week6 启动日志详解
Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...
随机推荐
- 对Javascript异步执行的理解
简单的查看了下Javascript异步编程的代码.按照网上的说法,Javascript异步编程的核心就在于setTimeout.这个系统函数让我们将函数的执行放在了一个指定的新“线程”中.于是本来的顺 ...
- android 提高进程优先级 拍照永不崩溃(闪退)
首先科普一下Android系统进程的优先级: 当系统的内存不足时, android系统将根据进程优先级选择杀死一些不太重要的进程. 进程优先级从高到低分别为: 1. 前台进程. 以下的进程为前台进程: ...
- 一步一步学习Unity3d学习笔记系1.4单服模式架构
单服模式更适合做手游,只有一个服务器,在程序中通过代码模块来实现各功能,而不是物理模块划分. 登录模块实现,账号数据处理, 用户模块,处理角色权限处理, 匹配模块,匹配战斗 好友模块,负责好友管理 战 ...
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification) 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比 ...
- Hadoop的奇技淫巧
(2-6为性能优化)(7-9为函数介绍) 1.在JobHistory里面可以看到job相关的一些信息,用start-all启动Hadoop时便可以进入端口号8088查看查看信息,但是无法进入端口号19 ...
- .net重启iis线程池和iis站点程序代码【转】
转:http://www.jb51.net/article/44162.htm 重启站点: 复制代码代码如下: /// <summary> /// 根据名字重启站点.(没重 ...
- nginx 完全关闭 access_log
修改nginx.config access_log off;
- mac下的一些常识
1,环境变量 EddydeMacBook-Pro:~ eddy$ vi ~/.bash_profile EddydeMacBook-Pro:~ eddy$ vim /etc/profile Eddyd ...
- 运用Ntop监控网络流量(视频Demo)
运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量 ...
- APUE第五章:标准IO库
5.2流和file对象 #include <wchar.h> int fwide(FILE *fp, int mode); Returns: positive if stream is w ...