函数依赖

js中的require、define、export、import【转】

筅森魡賤 提交于 2019-12-01 14:02:31
原文链接: https://www.cnblogs.com/libin-1/p/7127481.html 为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也就没有”模块”(module)了。 require时代 Javascript社区做了很多努力,在现有的运行环境中,实现”模块”的效果。 原始写法 模块就是实现特定功能的一组方法。 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。 1 2 3 4 5 6 function m1( ){   //... } function m2( ){   //... } 上面的函数m1()和m2(),组成一个模块。使用的时候,直接调用就行了。 这种做法的缺点很明显:”污染”了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。 对象写法 为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面 1 2 3 4 5 6 7 8 9 var module1 = new Object({ _count : 0,   m1 : function ( ){    //... },   m2 : function ( ){    //...

指令式Callback,函数式Promise:对node.js的一声叹息

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 01:12:46
所谓promises,就是不会受不断变化的情况影响。 -- Frank Underwood, ‘House of Cards’ 人们常说Javascript是'函数式'编程语言。而这仅仅因为函数是它的一等值,可函数式编程的很多其他特性,包括不可变数据,递归比循环更招 人待见,代数类型系统,规避副作用等,它都不俱备。尽管把函数作为一等公民确实管用,也让码农可以根据自己的需要决定是否采用函数式的风格编程,但宣称 JS是函数式的往往会让JS码农们忽略函数式编程的一个核心理念:用值编程。 '函数式编程'是一个使用不当的词,因为它会让人们以为这是'用函数编程'的意思,把它跟用对象编程相对比。但如果面向对象编程是把一切都当作对 象,那函数式编程是把一切都当作值,不仅函数是值,而是一切都是值。这其中当然包括显而易见的数值、字符串、列表和其它数据,还包括我们这些OOP狗一般 不会看成值的其它东西:IO操作和其它副作用,GUI事件流,null检查,甚至是函数调用序列的概念。如果你曾听说过'可编程的分号' 1 这个短语,你应该就能明白我在说什么了。 1 指 单子 。 In functional programming, a monad is a structure that represents computations. A type with a monad structure defines

Spark学习之路Spark之RDD

眉间皱痕 提交于 2019-11-29 14:08:29
Spark学习之路Spark之RDD 目录 一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做 弹性分布式数据集 , 是Spark中最基本的数据抽象 ,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 1.2 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner

vue部分知识点

感情迁移 提交于 2019-11-29 11:29:11
1. vue渐进式   把框架分层:视图层 =》组件机制 =》 路由机制 =》 状态管理 =》 构建工具   即可以使用最核心的视图层渲染功能来开发需求,也可以根据需求加入其他模块。 2. 变化侦测   渲染:状态 =》DOM =》 用户界面   vue响应式系统赋予框架重渲染的能力,主要归功于变化侦测,即检测数据的变化,当数据变化时驱动视图更新 3. Object的变化侦测   Object.defineProperty将属性转换成getter/setter的形式来追踪变化,读取数据时会触发getter,修改时间时触发setter;   在getter中收集有哪些依赖使用了数据,当触发setter时,通知getter中收集的依赖数据发生了变化;   收集的依赖存储在Dep中,Dep用来收集依赖/删除依赖/向依赖发送消息;   依赖,即Watcher,只有Watcher触发的getter才会收集依赖,哪个Watcher触发了getter,就把哪个Watcher收集到Dep中;当数据发生变化时会循环依赖列表,把所有Watcher都通知一遍;      Watcher:先把自己设置到全局唯一的指定位置,如window.target,再读取数据,触发getter,在getter中从全局唯一的那个位置读取当前正则读取数据的Watcher,并把这个Watcher收集到Dep中

技术分享:Spark RDD详解

痞子三分冷 提交于 2019-11-28 19:48:59
  1、RDD是什么   RDD:Spark的核心概念是RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。   为什么会产生RDD?   (1)传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。RDD正是解决这一缺点的抽象方法   (2)RDD的具体描述RDD(弹性数据集)是Spark提供的最重要的抽象的概念,它是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编   操作集合的方式,进行各种并行操作。可以将RDD理解为一个具有容错机制的特殊集合,它提供了一种只读、只能有已存在的RDD变换而来的共享内存,然后将   所有数据都加载到内存中,方便进行多次重用。a.他是分布式的,可以分布在多台机器上,进行计算。b.他是弹性的,计算过程中内错不够时它会和磁盘进行数   据交换。c.这些限制可以极大的降低自动容错开销d.实质是一种更为通用的迭代并行计算框架,用户可以显示的控制计算的中间结果,然后将其自由运用于之后   的计算。   (3)RDD的容错机制实现分布式数据集容错方法有两种:数据检查点和记录更新RDD采用记录更新的方式:记录所有更新点的成本很高。所以

Spark基础

纵饮孤独 提交于 2019-11-28 19:48:19
Spark基本知识 1、简单架构 (重点) 2、主要数据抽象RDD RDD ——弹性分布式数据集 (重点) RDD特性 (重点) RDD创建 RDD分区器 3、RDD的依赖关系 (重点) 依赖关系对比 Shuffle过程 触发shuffle的算子 4、DAG工作原理 5、算子 (重点) 转换算子(Transformation) 动作算子(Actions): 6、RDD持久化 缓存cache 检查点 7、共享变量 广播变量 累加器 8、分区及优化 分区设计 数据倾斜 9、常见数据源的装载 装载CSV数据源 装载Json文件 10、基于RDD的Spark程序开发 Spark与MapReduce对比 Spark是一种有别于MR的计算框架,它偏向于使用内存处理数据,并且尽可能的减少数据写入磁盘和shuffle的过程。 Spark = 基于内存的分布式计算框架 + SCALA + Schema的应用 为什么是schema而不是sql ? 尽管Spark提供了众多拓展SQL的组件和接口,但不可否认的是它并不是一个数据库,数据往往存储在另一个分布式的存储系统上,Spark同hive一样仅维护关于数据的元数据库。 2014年Spark超过MapReduce成为排序的排行榜第一 MapReduce缺点: 只有Map和Reduce两个操作,复杂逻辑需要繁杂的代码支持

[转]Makefile 使用总结

烈酒焚心 提交于 2019-11-28 16:45:31
1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 1.1 Makefile 主要的 5个部分 (显示规则, 隐晦规则, 变量定义, 文件指示, 注释) Makefile基本格式如下: target: prerequisites command ... ... 其中: target :: 目标文件, 可以是 Object File, 也可以是可执行文件 prerequisites :: 生成 target 所需要的文件或者目标 command :: make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 Tab [\t] 开头 显示规则 :: 说明如何生成一个或多个目标文件(包括 生成的文件, 文件的依赖文件, 生成的命令) 隐晦规则 :: make的自动推导功能所执行的规则 变量定义 :: Makefile中定义的变量 文件指示 :: Makefile中引用其他Makefile; 指定Makefile中有效部分; 定义一个多行命令 注释 ::

gcc Makefile 入门

久未见 提交于 2019-11-27 22:15:19
使用 make 命令编译项目文件 入门 目录: 一、 make 命令的运行过程 二、基本gcc编译命令 三、简单Makefile文件的编写 四、实例 一、 make 命令的运行过程 在shell的提示符号下,若输入" make ",则它会到目前的目录下找寻Makefile这个文件.然后依照Makefile中所记录的步骤一步一步的来执行.在我们写 程序的 时候,如果事先就把compiler程式所需要的步骤先写在Makefile中的话,想要compiler 程序的 时候就只要打入 make 的指令.只要程序无误的话,就可以获得所需要的结果了! 在项目文件中,如果有成百上千个源程序,每次修改其中的一个都需要全部重新编译是不可想象的事情.但通过编辑Makefile文件,利用 make 命令就可以只针对其中修改的源文件进行编译,而不需要全体编译.这就是 make 命令在编译项目文件时体现出来的优势.能做到这点,主要是基于Makefile文件的编写,和 make 命令对Makefile文件的调用.Makefile文件作为 make 命令的默认参数,使一个基于依赖关系编写的结构文件. 大家经常看到使用 make all, make install, make clean等命令,而他们处理的目标都是一个Makefile文件,那么all、install

SPARK总结之RDD

安稳与你 提交于 2019-11-27 19:25:01
一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做 弹性分布式数据集 , 是Spark中最基本的数据抽象 ,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 1.2 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner,即RDD的分片函数

watch和computed

微笑、不失礼 提交于 2019-11-27 10:13:35
watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依赖数据)发生变化的时候,所有依赖这个数据的“相关”数据“自动”发生变化,也就是自动调用相关的函数去实现数据的变动。 computed: 例如: computed:{ fullName: function () { return aa } } 在用的时候,用this.fullName去取用,就和取data一样(不要当成函数调用!!) watch:类似于监听机制+事件机制: 例如: watch: { firstName: function (val) { this .fullName = val } } firstName这个变量的改变是这个特殊“事件”被触发的条件,而firstName对应的函数就相当于监听到事件发生后执行的方法 watch和computed的对比 1.watch擅长处理的场景:一个数据影响多个数据 2.computed擅长处理的场景:一个数据受多个数据影响 来源: https://www.cnblogs.com/zhouyideboke/p/9413887.html