领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Sebastien Auvray 译者 李明(nasi) 发布于 2009年7月15日
Ruby因为其1.8版本的用户空间线程模型而饱受批评。Luc Castera在RubyNation会议上给出了通过Ruby和元组空间进行并行编程的演讲。在介绍了目前诸多应用(如Ruby 1.8、Ruby 1.9、JRuby和Erlang等)所实现的不同的线程模型之后,Luc介绍了Ruby的多进程模型(图片和引文均来自于该演讲):

- 优点:
- 不再需要共享内存
- 可利用多CPU来提升性能
- 在调用阻塞的系统调用之时不会阻塞全部的线程
- 可伸缩性
- 容错性
- 缺点:
- 进程的创建、执行和清理代价都很大
- 需要使用大量内存(将Ruby虚拟机载入每个进程之中)
- 需要一种方式来实现进程间通信
实现进程间通信有多种选择:数据库(例如在Mongrel或者Thin等应用服务器集群中使用)、RabbitMQ等队列(Nantie的解决方案)、DRB、ActiveMQ,或者元组空间。
Luc比较了两个元组空间的实现:Rinda和他自己开发的Blackboard。元组空间提供了一个元组的容器,可以实现并行访问。元组一般提供三个访问原语:write(将一个元组写入元组空间),read(从元组空间中读取一个元组),take(从元组空间中读取一个元组并将其移除)。
Linda是一个协调模型,由David Gelernter和Nicholas Carriero提出,用于解决全局对象协调的问题。
Rinda是Linda的Ruby实现,而且是一个内置程序库。一个Rinda元组可能看起来是这个样子的:t1 = [:add, 5, 9],客户端可能会将其解释为一个将两个数相加的任务。
Rinda最大的缺陷是其不支持持久化,这样一旦程序停止或崩溃的话,所有在元组空间中的元组则会丢失。
这便是Luc开发Blackboard的原动力。Blackboard是一个基于Key-Value数据库Redis的一个元组空间实现,这样它便拥有了持久化的能力。
[Redis]和memcached很相似,但是数据集不易失。取值可以为字符串,就如同memcached一样,但是还支持使用原子操作来push/pop诸如列表和集合之类的元素
该API的使用范例如下:
ts = Blackboard::TupleSpace.new ts.write [:calculator, :add, 1, 2] ts.take [:calculator, :add, nil, nil]
基准测试显示了Rinda和Blackboard的区别(摘自该演讲):
| Rinda | Blackboard | |
| Write (1000) | 0.042749 | 0.253068 |
| Take (500) | 0.082744 | 15.844250 |
| Read (500) | 0.020098 | 20.098478 |
当前的实现只是第一步,Luc计划弃用Redis而实现一个Erlang的Blackboard定制实现,这样就可以方便地使用Ruby这样的第三方语言进行调用。
查看英文原文:Exploring Tuple Spaces Persistence In Ruby With Blackboard
译者 李明(nasi) 毕业于东北大学,曾供职于百度网页搜索部,从事分布式网络爬虫及其国际化的研发工作。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复