0%

2019 年对于蛋卷来说,是一个重要的人生转折点。在过去的这一年中,我开启了全新的生活方式。告别了父母的管束,可以和 Grace 一起支配属于我们自己的时间。由于有了时间支配上的自由,我在人生的不同方面都有了新的发展。

Read more »

Go 语言概览

本文摘要:本文非常笼统地总结了 Go 语言的定义、生态系统和实现方式,也尽力给出了与不同的需求所对应的参考文档,详情参见本文末尾。

每当我们说起“Go 语言”的时候,可能会因为场景的不同聊到很多完全不同的东西。因此,我尝试着对 Go 语言和其生态系统做一个概述,并在各部分内容中都列出相关的文档(这可能有点像是大杂烩,其中还包含了我最近实际遇到的许多问题)。让我们开始吧:

Read more »

原理

可通过 Integer.MAX_VALUE 和 Integer.MIN_VALUE 查看 int 类型的最大和最小值,分别为 0x7fffffff(2^31-1) 和 0x80000000(2^31),其中 0 即为 0,正数的最高位为 0,负数的最高位为 1。

Java 中负数的表示方式为正数的补码(例:原码 00,反码 11,补码 00,补码的计算方式为反码加一,此处丢弃溢出位)。采用这种方式的原因是 0 的交叉(zero crossing)问题,即 0 和 -0 需要用同一种方式表示,见补码计算例子。如果采用反码表示负数的话,0 就会有两种表示:所有位全为 0、所有位全为 1。

因此 Java 中 0 的所有位全为 0,1 为 0000…0001,-1 的所有位全为 1,Integer.MAX_VALUE 为 0111…1111,Integer.MIN_VALUE 为 1000…0000。

Read more »

我们从招聘技术经理的过程中学到了什么

在过去的一年里,我们对于理解负责 CircleCI 的技术经理所需的优秀品质有了重要的转变,并从中了解到我们作为一个组织的需求和价值观。我们大幅改变了招聘流程,通过这些努力,我们聘用了一些出色的人才,使我们技术管理团队的人数翻了一番。现在,我们想和大家分享这些经验。

Read more »

Spring 的分布式事务实现 — 使用和不使用 XA — 第一部分

Spring 的 7 种事务处理模式

虽然在 Spring 中分布式事务通常使用 Java Transaction API 和 XA 协议实现,但也有其他的实现方式。最好的实现方式取决于应用程序所使用资源的类型,以及你是否愿意在性能、安全性、可靠性和数据完整性之间做出权衡。针对这个 Java 中的典型问题,Spring 的开发者 David Syer 将会介绍 7 种 Spring 分布式应用的实现方式,其中 3 种实现使用了 XA 协议,另外 4 种使用了其他的实现方式。(中级知识点)

Read more »

背景

从去年开始筹备婚礼之后,自己的情绪就变得逐渐“难以控制”起来。在以前,即使偶尔和父母有矛盾,也仅仅只是不开心,很少有能够影响好几天的情况发生。而现在,一旦因为某些事情不顺心,可以被悲观的情绪影响好多天。被消极的想法支配的感觉真的很不好。

在被悲观情绪支配的情况愈演愈烈之后,我极度想要做出一些改变。

Read more »

用 Rust 打造你的第一个命令行工具

在精彩的编程世界里,你可能听说过这种名为 Rust 的新语言。它是一种开源的系统级编程语言。它专注于性能、内存安全和并行性。你可以像 C/C++ 那样用它编写底层应用程序。

你可能已经在 Web Assembly 网站上见到过它了。Rust 能够编译 WASM 应用程序,你可以在 Web Assembly FAQ 上找到很多例子。它也被认为是 servo 的基石,servo 是一个在 Firefox 中实现的高性能浏览器引擎。

这可能会让你望而却步,但这不是我们要在这里讨论的内容。我们将介绍如何使用它构建命令行工具,而你可能会从中发现很多有意思的东西。

Read more »

如何用 Python 从零开始构建你自己的神经网络

一个帮助初学者理解深度神经网络内部工作机制的指南

写作动机: 为了使我自己可以更好地理解深度学习,我决定在没有像 TensorFlow 这样的深度学习库的情况下,从零开始构建一个神经网络。我相信,理解神经网络的内部工作原理对任何有追求的数据科学家来说都很重要。

这篇文章包含了我所学到的东西,希望对你们也有用。

Read more »

Java 中的双重检查锁

不知道从什么时候开始,双重锁检机制开始在 Java 程序员中流传开来,并被一些不成熟的程序员所称道。然而,双重锁检机制无论在 Java 的什么年代,都是一个不折不扣的代码陷阱。

1
2
3
4
5
6
7
8
9
10
11
12
13
// double-checked-locking - don't do this!

private static Something instance = null;

public Something getInstance() {
if (instance == null) {
synchronized (this) {
if (instance == null)
instance = new Something();
}
}
return instance;
}

这段代码粗看上去使用了很“神奇”的 Java 多线程技巧,“巧妙”利用重复地两次检查对象是否为空来避免了大部分情况下 synchronized 关键字的性能消耗。

Read more »

什么是搜索引擎?

日常生活中的搜索引擎

搜索引擎是一种用来在互联网上搜索信息的应用程序。当然,现在说是应用程序已经不太确切了,称为服务会更准确一些。像 Google、Baidu 等互联网搜索引擎人们都已经习以为常。通过搜索引擎,人们可以很轻松方便地从网络上查找到自己需要的资源,很难以想象没有搜索引擎的时代人们需要怎样去获取信息。

搜索引擎 VS 数据库

同样提供存储和查询功能,但是搜索引擎和数据库在设计理念和工作方式上差异还是非常大的。数据库的功能更为的全面,是一种通用的数据存取引擎,搜索引擎则重点处理大数据量的文本数据,并且只侧重于获取数据的性能和方式。

Read more »