假装自己是人类
分享创造 rargs

rargs 是一个 rust 实现的命令行工具,它解 决的是 xargsparallel 等批量处理工具中无法自由引用输入的痛点。rargs 支持用正则表达式来匹配输入中的任意内容。例如,我们想恢复一些以 .bak 结尾的备 份文件,用 rargs 可以这么做:

ls *.bak | rargs -p '(.*)\.bak' mv {0} {1}
Python 元类 (MetaClass) 小教程

可能是 Ruby 带的头,大家喜欢把“元编程”称作魔法,其实哪有什么魔法,一切都是科学。而 meta classes 就是 Python 里最魔法的科学,也是 99% 的人用不到的科学。只是谁还不想学点魔法呢?

QQA: Python 中的 str 与 repr

有时候,你会需要为你的类实现 __str____repr__ 方法,你知道它们的作用 是什么吗?它们有什么区别吗?这个问题的答案一搜就能找到,如果恰巧这是你第一次看 到这个问题,不妨看看吧。

QQA: 为什么 java 中要写 getter/setter?

java 有一个不成文的规定,如果要访问一个类的 private 字段,就需要写 getter/setter 方法。但我们在其它语言却很少见到类似的约定,为什么?

QQA: Rust 中 Send 与 Sync 有什么区别

SendSync 是两个十分相近的 trait,它们是一起保证了 Rust 的线程安全,它 们又有什么异同点呢?

(Quick Question and Answer 系列旨在对小问题做简短解答)

QQA: 什么是 Servlet

Servlet 没有标准的中文译名,我们会在学习 Java Web 编程(如 Spring)时遇到,你知道它是什么吗?

QQA: 如何启用 @Autowired

@Autowired 是 Spring 提供的一个注解,作用是自动装配 Bean 所需要的依赖。但 @Autowired 只是告诉 Spring 当前的 Bean 依赖了其它的 Bean,那么如何让 Spring 真正“启用”自动装配的功能呢?

(Quick Question and Answer 系列旨在对小问题做简短解答)

WGAN 笔记

Wasserstein GAN(WGAN) 解决传统 GAN 的训练难,训练过程不稳定等问题了。WGAN 的背后有强劲的数学支撑,因此要想理解这它的原理,需要理解许多数学公式的推导。这个笔记尽量尝试从直觉的角度来理解 WGAN 背后的原理。

ƒ-divergence GAN 笔记

f-divergence GAN 是对 GAN 框架的理论统一,本文学习过程中的一些笔记,包括基本公式的推导和重要概念的理解。

学习资料是李宏毅老师 关于 WGAN 的教学视频 视频里深入浅出地介绍了许多 GAN 的相关知识。不需要太多的数学基础就能听懂,强力 推荐。

Back Propagation 笔记

Michael Nielsen 的 深度学习 文章里对 BP 算法有了相当全面的介绍,网上也有中文翻译版本。本文是自己学习的一些笔记,主要是抄一遍公式的证明来加强记忆。

逻辑回归实验

最近在看 Andrew Ng 老师的 机器学习课程 ,这篇文章试图通过编程的方式,一步步实验课程中的知识点,验证其中的一些结论,从而加深对逻辑回归的理解。

性能优化三件套

提高性能最怕是没有方向,没有头绪的时候不妨试试三件套:并行、异步、加缓存。

决策树 (decision tree)

通过训练,我们可以从样本中学习到决策树,作为预测模型来预测其它样本。两个问题:

  1. 我们说要训练/学习,训练/学习什么?
  2. 为什么决策树可以用来预测?或者说它的泛化能力的来源是哪?
核密度估计(kernel density estimation)

有一些数据,想“看看”它长什么样,我们一般会画直方图(Histogram)。现在你也可以用核密度估计。

线段树 (区间树)

不查不知道,一查吓一跳,“线段树”这个名字的定义真是混乱到一定程度了。

维基百科 Segment Tree 说它是一种 数据结构,用来存储区间或线段,用来在 O(log n) 的时间内查找包含某个点的所有区 间。一般线段树是静态的结构,不需要修改的,但一些教程又很强调线段树的修改,比如 说“lazy 节点是线段树的精髓“。与此同时,另一种结构区间树(Interval Tree) 在结构和功能上和线段树又十 分接近。看来看去,线段树,区间树在维基百科、教材、博客里的介绍经常大不相同。

本文里,我们以解决区间最小值(RMQ)问题中使用的数据结构为基准,讲讲“线段树”的基本思想。