把最看到的有趣东西,按月份和时间倒叙展示在这里. 因此,如果你感兴趣我在最近弄什么好玩的东西.你可以从这里找到相关的入口.

温馨提示: 如果文章中的链接你无法打开,请使用国外的代理访问.

2020.03

MapReduce

在我的电脑找到一个关于Google MapReduce的PPT, 估计是什么时候不经意间存下来的. 这个PPT出自佐治亚理工学院计算学院lingliu教授的一个课程, 她的个人主页: LingLiu, PPT下载链接: Simplified Data Processing on Large Clusters. PPT基于Google研究: 原文. 其中提到的有:

  1. MapReduce Motivation: Large Scale Data Processing. Many tasks: Process lots of data(处理大量数据) to produce other data (以生成其它数据)

  2. MapReduce Concept. IBM的这篇Apache MapReduce提到了MapReduce示例:比如多五个文件里面都记录了(地区,最大温度)的Key/Value pairs. 通过五个Map任务分别得到了不同的中间值(键值对),最终Reduce任务结合所有的中间值得到最终结果,例如:(Toronto, 32) (Whitby, 27) (New York, 33) (Rome, 38).

2020.02

  • long time no see! 哈哈, 春节期间最近打了好久的游戏, 做了会网瘾少年.把我的王者荣耀打到了最强王者段位了, 小号也打到星耀二了. 结束了! 心情有点不错, 工作和生活回到正轨.
  • 整理了下自己的一些旧笔记和文档, 有个PDF叫Cmake 实践, 之前在学习Cmake工具的时候用到了它, 真的很不错. 这是我写的一个cmake的项目示例demo, 简述一下CMakeLists.txt写法: 1.约定基本的要素: 版本号, 项目名. 2. 指定源码和编译的目录 3. 使用include包含特定的目录, 以免缺少头文件依赖. 4. 致命令link目录, 以免缺少库的依赖 5.设置源码的变量 6. 使用add_来编译可执行文件或者库.

2019.12

本月学到的新东西: Memoization, Referential transparency, LSM-Tree

  • 计算机科学概念:Memoization, 维基百科的外链给出了几乎所有语言的全部实现. 这个机制是过存储(开销大的)函数调用的结果,并在再次出现相同的输入时返回缓存的结果,通过记忆来加速计算机程序。显然是以空间(需要空间一个额外的映射)换时间(函数调用的时间). 它在函数式编程中重度使用. 我原以为是硬件级别的优化, 实际上是software optimization technique, 比如Python, 它由标准库functoolslru_cache实现. 强烈推荐这个文章, Memoization in Python: How to Cache Function Results, 深入浅出, 在Python中它只是一个带缓存的装饰器.
  • 计算机科学概念:Referential transparency. 在学习Memoization时, 我了解到, 仅当一个函数是引用透明时, 才可能被Memoization(A function can only be memoized if it is referentially transparent), 关于它的概念: Referential transparency and referential opacity are properties of parts of computer programs. An expression is called referentially transparent if it can be replaced with its corresponding value without changing the program’s behavior. This requires that the expression be pure, that is to say the expression value must be the same for the same inputs and its evaluation must have no side effects. An expression that is not referentially transparent is called referentially opaque. 编程时, 我们应始终清醒自己的代码是否是引用透明(没有改变程序自身的行为). 想要了解更多, 推荐SO上的一篇文章:functional programming - What is referential transparency (Prof. Uday S. Reddy, University of Birmingham). 这篇文章写的挺幽默的, 比如: Strachey would be turning in his grave.(译:Strachey的棺材板要压不住了)
  • Python Decorators 虽然我经常使用装饰器, 但是我从没有自己实现过, 准确说, 我并不清楚在何种条件下应该使用它. 我需要再了解更深入, 以确保自己在编程中实践中得心应手地使用. I must get my hands dirty.
  • 课程: Principles of Programming Languages, 在了解Referential transparency概念时, 意外看到了Prof. Uday S. Reddy 教授的一个课程, 它似乎有点意思.
  • 论文:The Log-Structured Merge-Tree (LSM-Tree), LSM-Tree是为了解决高性能事务系统历史记录表的索引问题.基于磁盘的索引结构比如B树有双倍的I/O消耗.LSM Tree实现了以极低的开销实现了实时索引(real-time index).
  • 写完 A Tour of C++的英文笔记.
  • 本月目标: 我必须对自己要求更高一点, 不能只是满足于”知其然”, 更要”知其所以然.” 看了Python的一些标准库组件的代码实现, 我意识到我的代码还远远不够好. 一方面, 我要在工作中提升编程能力; 另一方面, 也要通过私下的自我学习, 弥补自己基础不够扎实和算法不够好的问题. 计算机编程是一门艺术, 也是我的兴趣和爱好, 是我的理想和追求. 珍惜时间, 保持专注, 每天以最大的限度让自己保持进步, 以求超越自我.