MongoDB CRUD Cookbook

This post is just a cookbook for me to look up all those MongoDB operations, so there won’t be too many basic concepts about MongoDB or advanced usage. I’ll try to make this post perfect for those who don’t know MongoDB at all to get the hang of it as easily as possible.

In this post, I’ll show you MongoDB’s basic CRUD operations. Note that this post will not teach you how to install MongoDB on your computer or how to open its shell. For these basic usage, you should check out the official tutorial.

阅读更多

Java TreeMap 源码解析

在本文中,我们将详细解析 java.util.TreeMap 的源代码。本文将首先讲述红黑树及其相关操作的基本原理,并结合 TreeMap 中的相关代码加深印象,继而再对 TreeMap 中的其他代码进行详析。

阅读更多

Java String Formatting

Printing or producing a simple String message has been really trivial in Java. Most of the time, we use concatenation to create String instance we want:

1
2
int a = 3;
String str = "Integer `a` has value `" + a + "`";

Though modern Java compiler uses StringBuilder to optimize statements like these, using concatention to construct String has its limitations, which include:

  • The pattern of the String is not reusable;
  • The statements can be unacceptably long if we try to construct a complicated message;
  • It is impossible to designate the precision of a floating point number.

Fortunately, Java SE 5.0 brought back the venerable printf method from the C library, which also come with the basic feature of string formatting.

阅读更多

Java8 时间 API

Java8 中最为人津津乐道的新改变恐怕当属函数式 API 的加入。但实际上,Java8 所加入的新功能远不止这个。本文将基于《Java SE8 for the Really Impatient》的第 5 章,归纳一下 Java8 加入的位于 java.time 包下的日期和时间 API。

阅读更多

MongoDB 存储引擎

2015 年 3 月份,MongoDB 发布了 3.0.1 版,从原本的 2.2、2.4、2.6 升级到了最新的 3.0。大量的新功能在 3.0 版本中引入,其中包括了 MongoDB Java 驱动的大幅更新。但对于 MongoDB 数据库本身来说,可更换的数据存储引擎算得上是 3.0 最重大的更新之一。

在 3.0 之前,MongoDB 是不能像 MySQL 那样随意选择存储引擎的。而到了 3.0,MongoDB 的所使用的存储引擎可由用户自行指定。目前,用户可选择的存储引擎包括 MMAPv1WiredTiger

阅读更多

Spark Core 源码解析:RDD

我的上一个系列的 Spark 源码解析已经完结了一段时间了。当时我出于实习工作的需要阅读了 SparkSQL 以及 Spark REPL 的源代码,并顺势写下了那个系列的源码解析文章。但读 Spark 源代码怎么能只读那些外围插件的源代码呢?于是我又开一个新坑了。

阅读更多

Spark Catalyst 进阶:Join

在之前的文章中,我们已经了解了 SparkSQL 把 SQL 语句变为 SparkJob 的过程。这个过程我们只是做了一个 Overview,具体不同的语句会变为怎样的 Job 我们并未一一列举。实际上列举起来是一件相当大工程的事。

在那么多的 SQL 操作中,有那么一个操作十分常用,但又十分耗时,那就是 Join 操作。在这篇文章里,我们将深入探讨 SparkSQL 会对不同的 Join 做出怎样的操作。

阅读更多