[置顶] 从函数字面量发现函数式编程

版权声明:本文由本人撰写并发表于2015年3月下半月的《程序员》杂志,原文题目《从字面量发现函数式编程》,本文版权归《程序员》杂志所有,未经许可不得转载。 引言 我相信很多像我一样初次接触函数式编程的程序员来说,对于“函数字面量”这个概念会感到迷惑和不解。伴随着深入地学习,在清晰地理解了这个概念之后,我进行了一些梳理和回溯,作为函数式编程思想延伸到最基层的语言元素,我深刻地觉得“函数字面量”这...
阅读(6441) 评论(2)

[置顶] HBase高性能复杂条件查询引擎

版权声明:本文由本人撰写并发表于2014年7月份的InfoQ,HBase的PMC成员Ted Yu先生参与了审稿并于给予了肯定。该方案设计之初仅寄希望于通过二级索引提升查询性能,由于在前期架构时充分考虑了通用性以及对复杂条件的支持,在后来的演变中逐渐被剥离出来形成了一个通用的查询引擎。HBase在大数据领域的应用越来越广泛,成为目前NoSQL数据库中表现最耀眼,呼声最高的产品之一,但就应对复杂条件的查询来说,一般认为它并不是非常适合,熟悉HBase的开发人员对此应该有一定的体会,但是基于普遍的需求,开发者们希...
阅读(24261) 评论(28)

[置顶] 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

版权声明:本文由本人撰写并发表于2012年9月份的《程序员》杂志,原文题目《一种支持自由规划的Sharding扩容方案——主打无须数据迁移和修改路由代码》,此处作为本系列的第五篇文章进行转载, 本文版权归《程序员》杂志所有,未经许可不得转载!作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段...
阅读(49850) 评论(51)

[置顶] 从MVC框架看MVC架构的设计

从MVC框架看MVC架构的设计尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点。本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些问题的,揭示其中所折射出的设计思想与设计理念。MVC回顾作为一种经典到不能再经典的架构模式,MVC的成功有其必然的道理,这个道理不同的人会有不同的解读,笔者最认同的一种观...
阅读(72265) 评论(83)

[置顶] 领域驱动设计(Domain Driven Design)参考架构详解

领域驱动设计(Domain Driven Design)参考架构详解摘要本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces、Applications和Domain三层以及包含各类基础设施的Infrastructure。本文会对架构中一些重要组件和问题进行讨论,给出一些分析结论。本文原文连接:http://blog.csdn.net/b...
阅读(39699) 评论(12)

Scala之自身类型(Self Type)与蛋糕模式(Cake Pattern)

目录设计一辆车 第一版的实现基于继承 第二版的实现基于组合 引入自身类型Self Type 引入蛋糕模式Cake Pattern 利弊得失 本文基于Gregor Heine分享的PPT《Scala Self-Types》注解式地介绍自身引用(Self Type)和蛋糕模式(Cake Pattern),原PPT解释地非常好,感兴趣的朋友可以自行下载阅读。设计一辆车一辆汽车往往会包含这样一些组件: En...
阅读(757) 评论(0)

站在新语言平台上再谈"组合"与"继承"

长久以来,OO编程思想的一个重要信条是:多用组合,少用继承,这被广为接受和认可。Scala引入Trait(特质)之后,这一点“似乎”受到了冲击,你可以看到,在很多Scala代码里出现了通过继承多个Trait为一个Class混入(追加)新功能的案例,而其中有不少案例是过去我们在传统OO语言(例如Java)中不会或不建议的做法,因为看上去那确实是在滥用继承。举个简单的例子,日志功能是非常普遍的需求,传统...
阅读(1183) 评论(0)

我们为什么放弃SBT回归Maven

显然,我是在说Scala项目。在我们讨论这个话题时,SBT的稳定版本是0.13,我想再过几年,本文提及的问题会一一得到解决,从而让SBT成为一个真正成熟强大的构建工具。在我们目前开发的系统中,有一个基于AKKA的组件,使用Scala语言进行编程。绝大多数情况下,构建Scala项目首选的工具是SBT,作为新一代的构建工具,SBT吸收了众多前辈的优点,简单易用,能够满足基本的应用场景。但是SBT确实还不...
阅读(2221) 评论(0)

Scala之::的研究

一个很细节的问题,简单总结一下。::在Scala里有两种含义,一种是List集合的一个方法,用于把一个元素添加到集合的前面;另一种表示一个非空的List集合,往往应用于模式匹配中。第一种用法: List的一个方法,用于在头部添加新元素示例代码1 :: List(2, 3) = List(2, 3).::(1) = List(1, 2, 3)这种写法在Scala里极为常见,但是会让初学者感到困惑:既然...
阅读(880) 评论(0)

基于Akka-Streams的HTTP代理的实现

Akka-Streams是一个让人激动的Reactive Streams的框架,Akka-Http也是构建在其之上,除了内置背压模式的支持,使用其DSL构建一个Graph也是一个让人惊艳的过程。对于Akka-Streams的介绍会在后续的文章中逐一展开,本文只奉上一段代码,实现的是HTTP代理功能,同时可以对请求和响应做一些修饰。import akka.NotUsed import akka.act...
阅读(1485) 评论(1)

OpenTSDB安装极简备忘

1. Downloadhttps://github.com/OpenTSDB/opentsdb/releases 2. Install Depenency: Gnuplotyum -y install gnuplot 3. Installrpm -ihv opentsdb-2.2.1.rpm 4. Configurevim /etc/opentsdb/opentsdb.conf tsd.st...
阅读(1224) 评论(3)

Scala之集合上常见的函数式风格的操作汇总

目录过滤相关的操作 filter 解释 示例 partition 解释 示例 find 解释 示例 takeWhile 解释 示例 映射相关的操作 map 解释 示例 flatMap 解释 示例 示例 扁平化相关的操作 flatten 解释 示例 折叠相关的操作 reduceLeft 解释 示例 reduceRight 解释 示例 foldLeft 解释 示例 foldRight 解释 示例正文函数...
阅读(1840) 评论(0)

AKKA-HTTP DSL源码解读

AKKA-HTTP的DSL设计简洁而优雅,让人禁不住一窥其内部的实现,内部浓浓的函数式编程风格也是学习函数式编程很好参考,因此这部分代码非常值得仔细咀嚼一番。我们先看一个DSL的应用代码示例:import akka.actor.ActorSystem import akka.http.scaladsl.Http import akka.http.scaladsl.model._ import akk...
阅读(2317) 评论(0)

Actor系统的错误处理

Actor的层次结构 Guardian Actor Actor路径 一个Actor层次机构的示例 崩溃了怎办 监管策略 指令 默认策略 Actor的生命周期 Actor的消亡 自愈系统 错误的核心 超时 Death Watch 总结 本文原文标题:《The Neophyte’s Guide to Scala Part 15: Dealing With Failure in Actor Systems...
阅读(2050) 评论(0)

基于Actor的并发方案

共享可变状态的问题 Actor模型 Actor系统 定义Actor 消息处理 副作用 非类型化 异步和非阻塞 创建一个Actor 发送消息 消息应答 问询Ask机制 有状态的Actor 小结 译者注: 本文原文标题:《The Neophyte’s Guide to Scala Part 14: The Actor Approach to Concurrency》,作者:Daniel Westheid...
阅读(3239) 评论(0)

Scala之小括号和花括号(Parentheses & Crurly Braces)

尽管这是一个非常基础的问题,但是如果不仔细梳理一下,还是会导致在某些场景下误读代码,原因是Scala对这个两兄弟的使用实在是太灵活了,甚至有些“随便”了,让我们分情况逐讨论一下。在调用函数时人们会笼统地说在函数调用时,小括号和花括号是通用的,但实际上,情况会复杂的如果你要调用的函数有两个或两个以上的参数,那么你只能使用“小括号”请看下面的示例:scala> var add = (x: Int,y:...
阅读(1957) 评论(0)

一份关于AKKA的初步的琐碎的笔记

Actor系统An actor is a container for State, Behavior, a Mailbox, Child Actors and a Supervisor Strategy. All of this is encapsulated behind an Actor Reference.Actor像是一个容器,它包含了:它自己的状态,行为,一个Mailbox,一些Child...
阅读(1277) 评论(0)

Spark连接外部数据源解读

本文以连接HBase数据库为例,介绍Spark DataSource API的结构。项目源码:https://github.com/hortonworks-spark/shc 注:由于某些原因,尚无充裕时间进行更深入的解读,本文先着重数据源注册和写入两个流程,后续文章会继续跟进。注册流程位置:org.apache.spark.sql.execution.datasources.hbase.examp...
阅读(2888) 评论(2)

Cassandra的一致性哈希(Consistent Hashing)和虚拟节点(Virtual Nodes)的关系

Cassandra的一致性哈希(Consistent Hashing)和虚拟节点(Virtual Nodes)的关系一致性哈希所要解决的问题一般的哈希算法存在的问题是:当“模”发生变化时,所有的值都需要重新哈希,而一致性哈希算法的特别之处就是它能把这种变化带来的影响降低到最小。关于这一点不再赘述,可以参考http://www.cnblogs.com/haippy/archive/2011/12/10...
阅读(2394) 评论(1)

Scala之若干细小问题汇总

Scala中下划线的应用场景一 Scala中下划线的应用场景二 identity方法的应用场景Scala中下划线的应用场景(一)1、作为“通配符”,类似Java中的*。如import scala.math._2、:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就是将1 to 5当作参数序列处理。3、指代一个集合中的每个元素。例如我们要在...
阅读(1293) 评论(0)

Scala之TypeTags and Manifests

Scala之TypeTags和Manifests注:本文为译文,原文是Scala官方文档中的一篇,这里翻译出来作为本系列的一篇文章。原文链接: http://docs.scala-lang.org/overviews/reflection/typetags-manifests.html。 Scala之TypeTags和Manifests 获取一个TypeTag 通过typeTagclassTag或w...
阅读(1383) 评论(0)

Scala之“逆变”合理性的思考

Scala之“逆变”合理性的思考对于逆变的概念可以参考本系列的前一篇文章: Scala之类型参数化:Type Parameterization 本文的重点是要解释“逆变”的合理性。在思考“逆变”的合理性这个问题上,我们需要清晰地认识到一个前提,即父类与子类之间的关系实质,我们说:如果类A是类B的父类,那么所有出现类A声明的地方,我们都可以使用类B的实例进行替换,或者说所有适用于类A的操作同样适用于类...
阅读(1214) 评论(1)

Scala之类型参数化:Type Parameterization

Scala之类型参数化:Type ParameterizationScala之类型参数化Type Parameterization 型变Variance 不变 Invariant 协变Covariant 逆变Contravariant 类型参数的边界控制 下界Lower Bound 上界Upper Bound 视界View Bound 上下文边界Context Bound型变:Variance型变试...
阅读(1202) 评论(0)

Kubernetes常用命令与常见问题

常用命令重启Master节点for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do sudo systemctl restart $SERVICE sudo systemctl enable $SERVICE sudo systemctl status $SERVICE d...
阅读(3307) 评论(0)

Kubernetes DNS服务的安装与配置

架构Kubernetes的DNS服务是基于SkyDNS实现的,同时又需要和API Server紧密沟通,它的基本工作方式是通过API Server监视服务创建,一旦有新的服务创建就通知SkyDNS创建一条域名解析记录。沟通API Server和SkyDNS的工作都是由Kube2Sky完成的,Kube2sky和Skydns都需要使用ETCD实现共享配置和服务发现。以下是ETCD的架构图,它清晰地阐明了...
阅读(4583) 评论(3)
291条 共15页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:3515699次
    • 积分:28911
    • 等级:
    • 排名:第174名
    • 原创:274篇
    • 转载:8篇
    • 译文:3篇
    • 评论:593条
    关于作者
    架构师,CSDN博客专家,目前正从事大数据领域的研究和开发工作,对企业级应用架构、分布式存储、SaaS和领域驱动设计有丰富的实践经验,热衷函数式编程,喜欢摄影和旅行。
    博客专栏
    最新评论