不积小流,无以成江海
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)问题中使用的数据结构为基准,讲讲“线段树”的基本思想。

二叉索引树

二叉索引树(Binary Indexed Tree) 也称为 Fenwick tree,中文也称树状数组。它可以在 O(log n) 的时间内得到数组的前缀和(A[1] + A[2] + … + A[i]),且在 O(log n) 时间内支持动态修改数组的值。

Git: merge vs rebase

Merge 还是 Rebase,这是一个问题。网上有许多教程说明二者的区别,之前我写的一个 关于 Git 的 PPT 里也说过两者的区别。这篇文章里,我们从分支图的角度,看看两种策略下产生的分支图有什么区别。