分布式系统笔记 (3)-GFS
本系列文章是学习课程 6.824: Distributed Systems 时的一些学习笔记,整个课程的相关材料已整理至 DistributedSystemInGo。本文是 LEC3 的内容,介绍了分布式文件系统 GFS,GFS 为 MapReduce 提供了存储,同样是出自 Google,同样是年代久远,但是其中的一些设计思想同样值得我们参考。
本系列文章是学习课程 6.824: Distributed Systems 时的一些学习笔记,整个课程的相关材料已整理至 DistributedSystemInGo。本文是 LEC3 的内容,介绍了分布式文件系统 GFS,GFS 为 MapReduce 提供了存储,同样是出自 Google,同样是年代久远,但是其中的一些设计思想同样值得我们参考。
本系列文章是学习课程 6.824: Distributed Systems 时的一些学习笔记,整个课程的相关材料已整理至 DistributedSystemInGo。本文是 LEC2 的内容,主要介绍了 RPC 的概念并通过 RPC 实现了一个简单的 c/s 架构的 kv 数据库;同时介绍了多线程编程并通过两种方式实现了一个多线程爬虫。
一直都想系统性地学习一下分布式系统的一些理论,所以打算开个坑学习一下 MIT 的课程 6.824: Distributed Systems 。本文主要是 LEC 1 中的内容,简单介绍了分布式系统的几个核心问题,以及经典的分布式计算框架 - MapReduce, 虽然这是耳熟能详的一个框架(或者说是编程范式)了,但是其设计思想至今还是非常值得参考的。
EE (Exploitation & Exploration) 问题在计算广告 / 推荐系统中非常常见,甚至在更广义的范围上,任意决策问题都会牵涉到 EE 问题。简单来说,这个问题就是要解决的是在决策时到底是根据已有经验选择最优的策略 (Exploitation),还是去探索一些新的策略来提升未来的收益 (Exploration)。本文主要介绍解决这个问题的三种比较常见的方法:随机方法,UCB 方法,Thompson sampling 方法,侧重于方法的具体流程和基本思想。
题目有点拗口,其实就是给定一个数组,要求给出某个元素作为最小值或最小值的那些 continous subarrays 中最长的长度,如对于数组 [1, 2, 5, 6]
, 元素 5 作为最大值的 continous subarrays 有三个: [5], [2, 5], [1, 2, 5]
,长度最长的是 3。遍历的解法找出一个元素要 \(O(n)\) 的时间复杂度,找出所有元素则需要 \(O(n^2)\) 的时间复杂度,而通过栈能够在 \(O(n)\) 的时间复杂度内解决这个问题。
最近在魔改 loss function,涉及到很多矩阵运算,而矩阵运算中维度的对齐免不了要多次的调试;沿袭着之前的 print 大法弄了一段时间后,不仅代码凌乱不堪,而且心累:每次 import tensorflow as tf
都要十几秒,然后 print 完之后想进一步看其他变量的信息,又要重新执行一遍。后来找到了 ipdb 这个好用的工具,才发现自己过去调试程序的方法是多么的低效和 naive。
本文主要介绍 python 中几个重要的 "器"(迭代器、生成器、上下文管理器)的原理、实现与使用,还有一个装饰器在前面一篇文章已经进行了介绍,本文主要参考了 Python 之旅 中的相关章节。
最近在看 python 一些语法知识,虽然 python 代码写了不少,但是对于一些高级语法的了解还不够深入;因此本文主要记录了一些比较生疏的知识点,主要包括了装饰器,类的特殊方法,常量类这三个方面的知识。
本文内容是之前的文章 Makefile 简介 的补充,详细介绍了 Makefile 中的变量(包括变量的定义、批量替换、局部变量等)、条件判断和函数(内置函数和自定义函数)。
本文内容是之前的文章 Makefile 简介 的补充,详细介绍了 Makefile 中的文件搜索(即通过 VPATH 和 vpath 进行源文件的搜索)、伪目标(定义多个生成目标)以及执行多条命令的一些做法。