deterministic 和 determinat 翻译过来都是“确定性的”,但这并不代表它们可以互相混用,在并行计算的语境下,它们有着一些根本的差别。
流计算核心概念解析之 window
流计算是当前备受关注的一个大数据研究与应用领域,旨在实时或近实时地处理大量无界数据。区别于批处理,流处理中处理的数据集是无界的,所以聚集操作(如 reduce、sum、count 等)无法应用于整个数据集,否则聚集操作的结果可能永远都不会输出。我们需要将无界的数据集切分成一些有界的片段,将聚集操作应用于这些片段,从而能够在无界的数据集上得到持续的聚集操作输出结果,这一切分过程即被称为 window。流计算领域的许多概念、系统设计、实现细节都围绕着 window 展开,window 的支持程度也是我们对众多的流计算框架进行选型的重要依据。要理解 window,我们需要回答以下关键问题:
- 如何根据window进行数据划分?
- 如何定义在window相关的操作中涉及的时间概念?
- 如何输出基于window的操作的处理结果?
下文将逐一回答这些关键问题,并在最后比较当前较热门的各流计算框架对 window 的支持程度。
Git Cheat Sheet
Git 本地更改操作
初始化
- 初始化一个 Git 仓库:
git init
提交修改
- 添加文件到暂存区:
git add <file>
- 添加所有修改到暂存区:
git add .
- 添加所有修改到暂存区:
- 将暂存区的修改提交到版本库:
git commit
-> 编辑 commit message -> 保存- commit message 较简单时,可以:
git commit -m "<message>"
- commit message 较简单时,可以:
- 为文件添加执行权限,并将修改添加到暂存区:
git update-index --chmod=+x <file>
回退修改
- 回退工作区的修改:
git checkout -- <file>
- 回退工作区的修改,但保存现场:
git stash
- 恢复现场:
git stash pop
- 查看保存的现场:
git stash list
- 恢复现场:
- 回退暂存区的修改到工作区:
git reset HEAD <file>
- 回退版本库的修改到工作区:
git reset <commit>
或git reset –-mixed <commit>
- 回退版本库的修改到暂存区:
git reset –-soft <commit>
- 回退版本库的修改(不保留):
git reset --hard <commit>
- 如果错误执行了该回退操作,可以通过
git reflog
查看命令历史,命令历史中记载了回退前的 commit id,可以执行git reset --hard <commit>
回退该回退操作
- 如果错误执行了该回退操作,可以通过
- 回退所有未被跟踪的文件:
git clean -df
删除文件
- 从暂存区 + 工作区中删除:
git rm <file>
- 从暂存区中删除:
git rm --cached <file>
跟踪文件
- 强制跟踪指定文件:
git update-index --no-assume-unchanged <file>
- 强制不跟踪指定文件:
git update-index --assume-unchanged <file>
使用 Travis 自动部署博客到 Github Pages
由于博客的源码和生成站点位于不同的代码仓库中(源码位于 uchuhimo/uchuhimo.me,生成的静态站点位于 uchuhimo/uchuhimo.github.io,即个人 GitHub Pages 的仓库),文章的发布过程需要提交两次。作为拥有懒惰这种美德的程序员,自然会开始折腾只需要提交一次、博客就自动部署到 GitHub Pages 上的方法——这里就轮到 Travis 登场了。
接下来,我会先介绍自动部署的原理,再讲解搭建的过程。
如何使用 Hexo 和 GitHub Pages 搭建这个博客
一个博客的搭建过程分为三步:
- 编写:包含内容的书写与格式的配置
- 构建:从编写的原始内容生成可发布的最终内容
- 发布:让待发布的内容对读者可见
依托于博客平台(如博客园、新浪博客等)发布内容的用户只需要关注编写部分,但要搭建一个独立的个人博客则以上三方面都需要关心。幸运的是,现在有大量的工具帮助我们简化这个过程:丰富的 Markup 语言简化了编写;强大的静态站点生成器简化了构建;友好的托管平台简化了发布。
这个博客的诞生也得益于这些工具:
- 编写:使用 Markdown,内置大量层级、列表、超链接、代码等的简便语法支持
- 构建:使用 Hexo,几条命令完成生成、预览、发布步骤
- 发布:使用 GitHub Pages 进行托管,方便又免费
接下来我会按以下顺序介绍如何基于这些工具完成整个博客的搭建过程:
- 环境准备
- Hexo 和 NexT 主题的使用
- GitHub Pages 的配置与部署
- 绑定自定义域名(可选)
- Hexo 的详细配置过程