函数依赖

CommonJS和AMD/CMD

孤街浪徒 提交于 2020-01-28 14:10:33
先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套! 于是下面三个模块规范出来了,这篇文章也出来了(拼出来的 {捂脸笑})。 JS中的模块规范(CommonJS,AMD,CMD),如果你听过js模块化这个东西,那么你就应该听过或CommonJS或AMD甚至是CMD这些规范咯,我也听过,但之前也真的是听听而已。 现在就看看吧,这些规范到底是啥东西,干嘛的。本文包括这三个规范的来源及对应的产物的原理。 一、CommonJS 1.一开始大家都认为JS是辣鸡,没什么用,官方定义的API只能构建基于浏览器的应用程序,逗我呢,这太狭隘了吧(用了个高端词,嘎嘎),CommonJS就按耐不住了,CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。 在兼容CommonJS的系统中,你可以使用JavaScript开发以下程序: (1).服务器端JavaScript应用程序 (2)

关系数据库的三范式

梦想的初衷 提交于 2020-01-28 00:21:39
简单的说, 第一范式就是原子性,字段不可再分割; 第二范式就是属性完全依赖于主键,没有部分依赖; 第三范式就是没有传递依赖,属性不依赖于其它非主属性。 (1) 第一范式(1NF) 1NF的定义为:符合1NF的关系中的每个属性都不可再分。 下表所示的情况,就不符合1NF的要求。 1NF是所有关系型数据库的最基本要求,也就是说,只要在RDBMS中已经存在的数据表,一定是符合1NF的。如下表所示: (2) 第二范式(2NF) 2NF的定义为:在1NF的基础之上,消除了非主属性对于码的部分函数依赖。 例如: 对于下仅仅符合1NF的下表 仍会存在一些问题: 数据冗余过大: 学号、姓名、系名、系主任这些数据重复多次。每个系与对应的系主任的数据也重复多次 插入异常: 假如学校3月份新建了一个系,等到8月份才招生,那么无法将系名与系主任的数据单独地添加到数据表中去 删除异常: 假如将某个系中所有学生相关的记录都删除,那么所有系与系主任的数据也就随之消失了 修改异常: 假如李小明转系到法律系,那么为了保证数据库中数据的一致性,需要修改三条记录中系与系主任的数据 改进后如下: (3) 第三范式(3NF) 3NF的定义为:在2NF的基础之上,消除了非主属性对于码的传递函数依赖。 仅仅符合2NF的要求,很多情况下还是不够的,原因在于仍然存在非主属性(系主任)对于码(学号)的传递函数依赖。改进后如下: 改进

Spark学习之路 (三)Spark之RDD[转]

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

理解 Android Build 系统

爷,独闯天下 提交于 2020-01-26 10:23:50
摘自: https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/index.html 前言 Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站: http://source.android.com/source/downloading.html 。 Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,Shell 脚本以及 Python 脚本组成,其中最主要的是 Make 文件。 众所周知,Android 是一个开源的操作系统。Android 的源码中包含了大量的开源项目以及许多的模块。不同产商的不同设备对于 Android 系统的定制都是不一样的。 如何将这些项目和模块的编译统一管理起来,如何能够在不同的操作系统上进行编译,如何在编译时能够支持面向不同的硬件设备,不同的编译类型,且还要提供面向各个产商的定制扩展,是非常有难度的。 但 Android Build 系统很好的解决了这些问题,这里面有很多值得我们开发人员学习的地方。 对于 Android 平台开发人员来说,本文可以帮助你熟悉你每天接触到的构建环境。

三级数据库知识点学习(二)

本小妞迷上赌 提交于 2020-01-18 17:28:15
文章目录 一、E-R图 二、概念数据模型 三、B/S结构的数据库应用系统 四、函数依赖 五、smallint 六、内嵌表值函数 七、锁 八、建立索引(补充) 九、分布式数据库(补充) 十、OLTP和OLAP 1.OLTP 2.OLAP 一、E-R图 E-R图 ,即实体联系图。这里仅简单介绍E-R图中的概念和一些简单的E-R图。 E-R图由四个部分组成,分别为 实体:使用矩形框表示,在矩形框中记入实体名称。 联系:使用菱形框表示,在菱形框中记入联系名称,并用实线与实体连接起来。 属性:使用圆形框表示,在圆形框中记入属性名称,实体和联系皆可有属性。 连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。) 在E-R图中存在三种一般性约束,分别为一对一约束、一对多约束和多对多约束。 一对一约束(1:1) 其中实体家庭教师(姓名,教龄)和学生(姓名,年龄)之间的教学联系是1:1的联系,即家庭教师与学生进行一对一教学。 一对多约束(1:n) 其中实体教师(教师号,姓名,教龄)和学生(学号,姓名)之间的教学联系是1:n的联系,即一位教师可以教多位学生。 多对多约束(n:n) 其中实体学生(学号,姓名)与活动(名称

React Hooks

陌路散爱 提交于 2020-01-18 16:34:02
1) what is Hooks? 之前也有函数式组件,但是没有状态,无法保存数据,所以一直用类式组件 class MyCount extends Component { state = { count: 0, } componentDidMount() { this.interval = setInterval(() => { this.setState({ count: this.state.count + 1 }) }, 1000) } componentWillUnmount() { if (this.interval) { clearInterval(this.interval) } } render() { return <span>{this.state.count}</span> } } 引入Hooks函数,重写上述组件 function MyCountFunc() { const [count, setCount] = useState(0) useEffect(() => { const interval = setInterval(() => { setCount(x => x + 1) }, 1000) return () => clearInterval(interval) }) return <span>{count}</span> }

[VUE]computed vs methods

[亡魂溺海] 提交于 2020-01-18 08:04:24
我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。 可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。 https://www.runoob.com/vue2/vue-computed.html 来源: CSDN 作者: 时刻冷静 链接: https://blog.csdn.net/SDN520_1314/article/details/104022685

数据库原理复习——完整性约束

廉价感情. 提交于 2020-01-18 03:01:46
数据库完整性约束指的是数据库格式的规范,只有满足完整性约束的记录才被允许加入数据库。 数据库完整性约束大致分为四种,包括域约束,参照完整性约束,实体完整性约束和用户自定义的约束。域约束是最基本的约束,主要限制的是属性的取值范围,在SQL中用check来定义。参照完整性指的是外键都必须存在。实体完整性指的是所有的值都要在主键的值上有值,而且是唯一的。用户自定义的约束则是用户自己定义的。 断言指的是数据库必须满足的条件,域约束和参照完整性是一类特殊的断言。 触发器指的某一个数据库动作只有在某各另外的时间发生时才会发生,定义为trigger。 函数依赖指的是在数据表中,如果Y的值取决于X,那么我们就称Y到X依赖,记做X->Y。其中X可以是一组属性。函数依赖分为局部函数依赖和完全函数依赖,前者就是X中有的属性是不需要的。传递函数依赖指的是函数依赖的连续性。函数依赖是为了刻画数据库表关系结构的合理性,是否高效是否安排合理。 函数依赖的逻辑蕴含指的是函数依赖通过Armstrong定理可以展开,而闭包就是整个展开的合集。 范式是用来衡量数据库关系规范化程度的,1NF指的表中的属性有原子性就可以了。2NF指的是表中的关系不具有局部函数依赖性,3NF表示关系不具有传递依赖性。最小函数依赖集是不含有任何扩张项的函数依赖集合。 然后我们如何使得关系更加合理呢?通过规范化

压测对登录有依赖的接口,如何只登录一次

二次信任 提交于 2020-01-17 19:11:07
引言 在对一接口做压力测试,该接口需要发送token参数,虽然可以手动登录后将token复制粘贴到jmeter参数中,但是想用一劳永逸的方法 于是找资料发现了 __setProperty 函数,它的作用就是全局变量赋值 就像是postman中的全局变量 开始 一.这里需要设置两个线程组,一个是登录获取token的线程组(只请求一次),一个是要压测接口的线程组 1. 首先要使用json提取器获取token 2.添加BeamShell后置处理器,这里要用 前面说到的函数了,打开函数助手选择__setProperty 函数 ,在这个地方会将tokenq1设置为全局变量 3. 再后面就需要添加第二个线程组了,添加被测接口的http请求,在这里就可以调用全局变量作为参数了__P () 的效果和 __property() 是一样的 来源: https://www.cnblogs.com/dan013/p/12206950.html

Spark优化 – 基础篇

邮差的信 提交于 2020-01-14 19:13:16
  大数据调优总体方向:CPU,内存以及IO(Disk,Network)三个方面来进行。   对于多次使用的数据(RDD/DataFrame),通过cache()或者persis()来进行缓存,避免每一次都从数据源获取(减少磁盘IO); 系统资源优化   如下参数可以进行调优(可以参见附录中介绍的spark和yarn的交互内容): num-executors :executor数量(Spark Job的进程数量);结合executor-core进行考虑,两者相乘的量[40,100],尽量不要超过YARN的总core的指定比例,有的说25%,有的说50% executor-memory :executor内存上线,建议8G左右,申请的内存总量(num-executors*executor-memory)不要超过YARN的80%; executor-cores :executor的核数(线程数),即并行执行task的数据量,建议值4个,总量不要超过YARN总核数的50%; driver-memory :默认1G,足以。 spark.default.parallelizm :spark的并行度,默认数是待处理数据的hdfs的datablock数量;但是如果数据量很大的话明显不合适,task数量>>core的数量会拉低效率;spark官方建议要么是和分配的从cores数量保持一致