《Clojure数据分析秘笈》——3.1节引言

第3章
使用并发编程管理复杂度
3.1 引言
设计和创建一个计算机系统是一个均衡行为:不断地添加特性和功能并保持代码简单和系统性能合理。数据分析系统也是如此。事实上,数据分析系统问题更糟糕。通常而言,数据只是部分一致,在开始分析之前需要采取多种策略来抽取有用数据。
这会导致问题失控。
Clojure有一系列可以帮助管理系统复杂性的工具。这些最强大的工具之一是并发编程。这使得可以使用另外一种方式设计程序。与之前一段代码做很多事情并且有非常直接、紧密的依赖关系不同,可以通过将许多完成不同功能的独立模块整合来使程序结构更模块化。这些模块之间使用简单的、设计良好的协议进行通信。但是它们均独立并发(也就是说在同一时间)地工作。Clojure中完成并发功能的基本工具非常简单:一款内置的软件事务主存系统(Software Transactional Memory,STM,参见http://clojure.org/refs)。这个工具采用了大多数开发人员熟悉的数据库事务的语义,并将其应用到计算机内存中。
Clojure中也有并发消息处理系统—构建于STM之上的agent。agent包含状态信息,通过向其发送函数消息来并发更新状态。STM与agent一起提供了一种将程序设计为可维护且易理解结构的方式。
之所以这些都起作用是因为所有的本地Clojure数据结构都是不可变的。它们不能被改变。由于处理不可变数据,尽管在高并发的环境下STM也可以保证其事务的一致性和安全性。这些保证很有用,因为它们可以帮助我们分析并解释数据和程序,并且帮助管理正在构建的系统的复杂性。
需要注意的是,并发(concurrent)描述了程序按什么样的架构来工作。每个进程可能做不同的事情。人们期望并发会提升速度,但是并发通常只是组织程序、将涉及不同任务的程序的各个组成部分分离并去耦合的一种好方式。如果你不停地做同一件事情并且想做得更快,那就是并行(parallelism)。我们将在第4章中学习与其相关的方法。

时间: 2024-11-08 20:19:43

《Clojure数据分析秘笈》——3.1节引言的相关文章

《Unity开发实战》——3.1节引言

第3章制作贴图和材质 3.1 引言大多数材质都需要纹理贴图,贴图实际上就是位图文件(不考虑文件扩展名),创建贴图需要用到图片编辑器,如Adobe Photoshop(它基本上是行业标准了,Unity也支持它的原生格式).GIMP等.为了方便本节的学习,强烈建议安装这类软件.在保存纹理贴图时,尤其是带有alpha通道的贴图,可能需要选择一个合适的文件格式.PSD是Photoshop的原生格式,对于分层保存原始插图很实用.TGA格式也可以保存alpha通道,但是图层会被拼合(flattened).在

《Unity开发实战》——1.1节引言

第1章Unity 4.X 入门 1.1 引言本章是为那些准备开始,或刚开始使用Unity的读者量身打造的.本章中会有一些入门的步骤引导读者上手和熟悉Unity引擎.

《Unity开发实战》——1.3节设置首选项

1.3 设置首选项对有些人来说,将编辑器设置成自己喜欢的样子可能没必要.但是这样能加快开发速度,并且能让Unity用起来更顺手.本节将介绍如何将某些设置项调整成自己的首选项. 1.3.1 操作步骤请按照下面的步骤设置首选项:1)在Unity编辑器中,在菜单上选择Edit(编辑)| Preference(首选项设置)(如果你用的是Mac系统,则是Unity | Preference(首选项设置)).2)当Preference 窗口显示出来后,注意窗口中有几部分:General(通用).Extern

《Unity开发实战》——3.6节使用cookie纹理模拟多云的户外环境

3.6 使用cookie纹理模拟多云的户外环境 在很多第一人称射击和恐怖逃生游戏中,光照和阴影可以使场影变得很复杂,有助于营造游戏气氛.本节中,将使用cookie纹理创建多云的户外环境. 3.6.1 准备工作 如果没有图片编辑器软件,或者想跳过自己制作图片的步骤,而把精力放在实现上,可以直接用0423_03_05文件夹中cloudCookie.tga图片. 3.6.2 操作步骤 请按照下面的步骤模拟多云的户外环境: 1)在图片编辑器中,创建一张512×512的图片. 2)使用黑色作为前景色,白色

《Unity开发实战》——2.4节自定义镜头光晕效果

2.4 自定义镜头光晕效果 过去15年里,在户外环境玩过游戏的任何玩家都知道:镜头光晕(lens flare)效果用于模拟明亮的光照穿透玩家的视野.虽然这个技术现在已经用滥了,但仍然出现在各类游戏中.本节将练习创建镜头光晕效果. 2.4.1 准备工作 强烈建议读者用图片编辑器(Adobe Photoshop或GIMP)打开图片.示例代码中的0423_02_03文件夹中有本节需要用到的镜头纹理(lens texture)的源代码. 2.4.2 操作步骤 请按照下面的步骤创建一个新的镜头光晕纹理并应

《Unity开发实战》——1.9节导入自定义包到项目中

1.9 导入自定义包到项目中 各种资源都可以放在自定义的Unity包里,这在开发项目时非常有用. 1.9.1 准备工作 如题所述,需要准备好一个自定义包用于导入,可以在示例代码文件夹中找到一个名为 "0423_01_09-11"的包用于测试. 1.9.2 操作步骤 请按下面的步骤导入自定义包: 1)打开Unity编辑器中的Assets菜单. 2)进入Import Package子菜单,选择Custom Package(自定义包)选项. 3)浏览硬盘上的包,点击Open(打开)按钮. 4

《Unity开发实战》——3.11节禁用材质剔除

3.11 禁用材质剔除当创建一个透明或半透明对象的时候,可能想看它的内部表面.但是默认情况下Unity的透明着色器让其不可见.本节将编辑Unity中的内置透明着色器以让其对用户可见. 3.11.1 准备工作请从网址 http://unity3d.com/unity/download/archive下载Unity的内置shaders的源码以便完成本节的学习, 还需要一个带有透明通道的纹理,在文件夹0423_03_10中可以找到名为grid.tga的图片. 3.11.2 操作步骤请按照下面的步骤禁止

《Unity开发实战》——3.5节创建透明纹理贴图

3.5 创建透明纹理贴图如果想让玩家的视线穿透一个物体,则需要透明或半透明的材质.塑料薄膜.剪贴画.网格等人工产品是可以用透明纹理贴图制作的. 3.5.1 准备工作本节会创建一个材质来模拟塑料薄膜,选它的主要原因是这种材质允许我们使用全透明制作边框的rounded borders,也可以使用半透明显示薄膜(film)本身.本节其余部分假设读者已经能够使用图片编辑器创建图片,比如一张有斜面的圆角矩形图片.如果不会操作,随时使用示例代码中名为"0423_03_04"的文件夹中的准备材料.

《Unity开发实战》——3.4节创建高光纹理贴图

3.4 创建高光纹理贴图有些表面可能既有光滑的区域,又有粗糙的区域,为了达到这个效果,可以使用高光贴图(specular maps). 3.4.1 准备工作为了便于讲解,本节将创建一个生锈的金属材质来演示specular属性如何增强现实.如果读者还没有用于生成高光材质的基础纹理,示例代码中名为"0423_03_03"的文件夹中有本节需要用到的素材. 3.4.2 操作步骤请按照下面的步骤创建高光材质:1)创建一个新的材质,命名为:rustyMetalMaterial.2)选择此材质.在I

《Unity开发实战》——2.2节创建画中画效果

2.2 创建画中画效果在很多情况下,用多个视角显示是很有用的.比如,想显示不同地点同时发生的事件,或者多人对战(hot-seat multiplayer)游戏中为每个玩家显示单独的窗口,虽然也可以手动调整摄像机的Normalized Viewport Rect(标准化视口矩形)参数.本节包含一系列附加的首选项设置,使之独立于用户的显示器配置. 2.2.1 准备工作示例代码的0423_02_01_02的文件夹中有一个名为 basicLevel 的包是专为本节准备的,包中有一个场景. 2.2.2 操