Subs

Spark 学习(四)RDD自定义分区和缓存

爷,独闯天下 提交于 2021-02-19 05:52:01
一,简介 二,自定义分区规则   2.1 普通的分组TopN实现   2.2 自定义分区规则TopN实现 三,RDD的缓存   3.1 RDD缓存简介   3.2 RDD缓存方式 正文 一,简介    在之前的文章中,我们知道RDD的有一个特征:就是一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。这个分配的规则我们是可以自己定制的。同时我们一直在讨论Spark快,快的方式有那些方面可以体现,RDD缓存就是其中的一个形式,这里将对这两者进行介绍。 二,自定义分区规则   分 组求TopN的方式有多种,这里进行简单的几种。这里尊卑一些数据: 点击下载   2.1 普通的分组TopN实现    实现思路一:先对数据进行处理,然后聚合。最后进行分组排序。 package cn.edu360.sparkTwo import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object SubjectTopNone { def main(args: Array[String]): Unit =

实现Vue的双向绑定

久未见 提交于 2021-02-17 10:57:36
一、概述 之前有讲到过 vue实现整体的整体流程 ,讲到过数据的响应式,是通过Object.defineProperity来实现的,当时只是举了一个小小的例子,那么再真正的vue框架里是如何实现数据的双向绑定呢?是如何将vm.data中的属性通过“v-model”和“{{}}”绑定到页面上的呢?下面我们先抛弃vue中DOM渲染的机制,自己来动手实现一双向绑定的demo。 二、实现步骤 1、html部分 根据Vue的语法,定义html需要绑定的DOM,如下代码 2、js部分 由于直接操作DOM是非常损耗性能的,所以这里我们使用DocumentFragment(以下简称为文档片段),由于createDocumentFragment是在内存中创建的一个虚拟节点对象,所以往文档片段里添加DOM节点是不太消耗性能的;此处我们将app下面的节点都劫持到文档片段中,在文档片段中对DOM进行一些操作,然后将文档片段总体重新插入app容器里面去,而且此处插入到app中的节点都是属于文档片段的子孙节点。代码如下: 1 // 劫持DOM节点到DocumentFragment中 2 function nodeToFragment(node) { 3 var flag = document.createDocumentFragment(); 4 while (node.firstChild) { 5

vue 双向绑定

Deadly 提交于 2021-02-17 10:28:45
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue双向绑定原理分析</title> </head> <style> body{ margin: 0; padding: 0; } </style> <body> <div id="app"> {{name}} </div> </body> <script> //vue类 class Vue { constructor(options={}) { this.data = options.data this.el = options.el // 数据劫持 observe(this.data) // 模版编译 compile(this.el || document.body,this) } } class Ovserver { constructor(data) { this.data = data this.walk(this.data) } walk(data) { Object.keys(data).forEach(key=>objectDefinedDate(data,key,data[key])) } } observe=(data)=>{ if (!data || typeof data !=='object') { return }

多项式最小二乘法拟合

和自甴很熟 提交于 2021-02-10 10:28:11
实用计算方法实验二——多项式最小二乘法拟合 实用计算方法实验二——多项式最小二乘法拟合 采用mlx,即matlab的实时脚本,便于观察结果和发布过程。 二次多项式 三次多项式 指数函数 评价拟合效果 附录:Doolittle函数解矛盾方程组 二次多项式 %二次多项式 最小二乘法 解矛盾方程组 拟合 %形如a0*1+a1*x+a2*x^2的拟合 clear clc x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; y=[352 211 197 160 142 106 104 60 56 38 36 32 21 19 15]; m=size(x,2); %获得数据点个数 %n=input('请输入phi(x)的个数:'); n=3; %n即为phi(x)的个数 syms symsx f = symfun([1,symsx,symsx^2],symsx); %在这里可以修改phi(x)的表达式的形式与个数,如symsx^2,在建立法方程时的值为x^2,cos(symsx)则建立法方程时为cos(x) expr = formula(f); 表达式分别为 expr(1) ans = expr(2) ans = expr(3) ans = 构建的法方程的A与Y A=zeros(m,n); %构造法方程所需的A和Y for j=1:n temp =subs

手动实现vue2.0的双向数据绑定原理

只愿长相守 提交于 2021-02-07 09:32:29
vue2.0的双向数据绑定原理(手动实现) 一句话概括:数据劫持(Object.defineProperty)+发布订阅模式 一.首先了解什么是发布订阅模式 二.new Vue()的时候做了什么? 一句话概括:数据劫持(Object.defineProperty)+发布订阅模式 双向数据绑定有三大核心模块(dep 、observer、watcher),它们之间是怎么连接的,下面来一一介绍。 为了大家更好的理解双向数据绑定原理以及它们之间是如何实现关联的,先带领大家复习一下发布订阅模式。 一.首先了解什么是发布订阅模式 直接上代码: 一个简单的发布订阅模式,帮助大家更好的理解双向数据绑定原理 //发布订阅模式 function Dep ( ) { this . subs = [ ] //收集依赖(也就是手机watcher实例), } Dep . prototype . addSub = function ( sub ) { //添加订阅者 this . subs . push ( sub ) ; //实际上添加的是watcher这个实例 } Dep . prototype . notify = function ( sub ) { //发布,这个方法的作用是遍历数组,让每个订阅者的update方法去执行 this . subs . forEach ( ( sub ) => sub .

STM32延时函数的四种方法

本小妞迷上赌 提交于 2021-01-21 09:38:51
单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms()。本文基于STM32F207介绍4种不同方式实现的延时函数。 1、普通延时 这种延时方式应该是大家在51单片机时候,接触最早的延时函数。这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,在某些编译器下,代码会被优化,导致精度较低,用于一般的延时,对精度不敏感的应用场景中。 //微秒级的延时 void delay_us(uint32_t delay_us) { volatile unsigned int num; volatile unsigned int t; for (num = 0; num < delay_us; num++) { t = 11; while (t != 0) { t--; } } } //毫秒级的延时 void delay_ms(uint16_t delay_ms) { volatile unsigned int num; for (num = 0; num < delay_ms; num++) { delay_us(1000); } } 上述工程源码仓库: https://github.com/strongercjd/STM32F207VCT6/tree/master/02-Template 2、定时器中断 定时器具有很高的精度

youtube-dl命令参考

别等时光非礼了梦想. 提交于 2020-11-27 23:56:44
youtube-dl 命令参数简译 USAGE: youtube - dl [ OPTIONS ] URL [ URL ... ] OPTIONS: 通用选项 - h , -- help 打印帮助文档 -- version 打印版本信息 - U , -- update 更新到最新版 ( 需要权限 ) - i , -- ignore - errors 遇到下载错误时跳过 -- abort - on - error 遇到下载错误时终止 -- dump - user - agent 显示当前使用的浏览器 ( User - agent ) -- list - extractors 列出所有的提取器 ( 支持的网站 ) -- extractor - descriptions 同上 -- force - generic - extractor 强制使用通用提取器下载 -- default - search PREFIX 使用此前缀补充不完整的URLs,例如: "ytsearch2 yt-dl" 从youtube搜索并下载两个关于yt - dl视频 . 使用 "auto" youtube - dl就会猜一个,一般效果等价于 "ytsearch" ( "auto_warning" 猜测时加入警告 ) . 我已知支持的PREFIX:ytsearch ( youtube ) ,

SSE图像算法优化系列二十四: 基于形态学的图像后期抗锯齿算法--MLAA优化研究。

与世无争的帅哥 提交于 2020-10-26 21:32:57
偶尔看到这样的一个算法,觉得还是蛮有意思的,花了将近10天多的时间研究了下相关代码。 以下为百度的结果:MLAA全称Morphological Antialiasing,意为形态 抗锯齿 是AMD推出的完全基于CPU处理的 抗锯齿 解决方案。对于游戏厂商使用的MSAA 抗锯齿 技术不同,Intel最新推出的MLAA将跨越边缘像素的前景和背景色进行混合,用第2种颜色来填充该像素,从而更有效地改进图像边缘的变现效果,这就是MLAA技术。   其实就是这个是由Intel的工程师先于2009年提出的技术,但是由AMD将其发发扬光大。   整个算法的渲染工作全部是交给 CPU 来完成,在这里GPU的作用只是将最终渲染出来的画面传给显示器。所以这项技术最大的优势是可以让GPU不再承担 抗锯齿 的工作,大大降低GPU在运行3D游戏时的压力。相对于以前的 抗锯齿 技术,MLAA采用Post-filtering(后滤波)机制,好处就在于可以按照颜色是否连续来驱动抗锯齿,而以前只能在初始边缘来抗锯齿。   也就是说这项技术可以在后期来修补那些由锯齿的图,因此我们可以想到其另外一些用处,后续会对这方面进行一个简单的扩展。    如上面两图,左侧图中树叶的边缘有明显的锯齿状图像,而右侧为经过MLAA算法处理后的图,边缘光滑了许多,而且其他部位未受任何的画质影响。   关于这方面的论文和资料主要有

音视频格式转换神器与html视频元素加字幕

假如想象 提交于 2020-08-11 17:26:54
音视频格式转换神器——格式工厂 如果您下载了上一篇《为HTML页面添加音频、视频的方法——零基础自学网页制作》(目录在结尾)中的素材,您会看到有这样一个文件,如图 因为格式工厂是免费软件,所以大家直接安装就可以了,不需要序列号,安装过程如下: 1.双击安装程序 2.选择安装盘符 3.等待进度条跑完就好了。大家注意, 安装时一定要阅读提示,一些没必要的捆绑软件记得不要安装! 完成安装后,点击"开始"菜单,如图: 这样我们就可以打开格式工厂了,打开后如图: 通过这个菜单我们可知,这个软件不仅可以为音频、视频转换格式,还可以给图片转换格式。如图: 下面我们就来操作一下如何为视频转换格式。 step1.点击"视频" 点击后是这样的,点击"AVI FLV MOVE"这个区域。 效果如下,出现了一个新的菜单。 step2.选择要转换的格式,如图,我们先选择ogg,点击! 点击"确定" 弹出这样一个菜单: step3.选择文件,如图,点击"添加文件" 我们使用"利维坦.mp4"这个文件进行转换,如图: 点击"打开"后,跳到这个界面,如下图,然后点击确定。 这时界面就跳回最初的界面上,如下图,点击开始,如红框中。 step4.等待转换完成,如图所示: 然后点击"输出文件夹"按钮找到转换好的文件,如图: 这时,我们可以把这个转换好的文件拷走。 完成之后,大家可以按照上述步骤继续转换出swf

vue甘特图gantt

一个人想着一个人 提交于 2020-07-29 06:33:42
  vue做甘特图,先大致介绍下核心功能: (1)横轴、纵轴拖拽; (2)自定义监听点击事件(双击、右键等)(3)任务之间显示父子层级关系;(4)左侧列表信息,右侧时间轴表示任务;(5)每个任务可以订制样式,并且可以动态修改样式;(6)自定义时间粒度显示(小时、天、星期、月、年);(7)支持大批量数据渲染;(8) 支持同行多节点渲染;(9)支持选中,以及批量选中;(9)优秀的扩展性,支持第三方插件。等等还有其他的一些功能。这里先看一下效果图:   接下来会介绍用什么实现的,怎么使用,怎么添加拖拽、点击等各种功能,我以vue为例进行开发。 1、使用GSTC做甘特图开发   Git项目地址: https://github.com/neuronetio/gantt-schedule-timeline-calendar#weekendhighlight-plugin   官方vue实例: https://github.com/neuronetio/vue-gantt-schedule-timeline-calendar   npm指令: npm i gantt-schedule-timeline-calendar   官方做了 3 大主流框架的封装,具体看Git链接,这里我也附上了vue版本的 npm 包地址。   基本使用如下: ps:文章末尾我会贴一个完整的代码