2017-09-22 Robert Zhang
学习一门语言的最佳方式是实践——但“Hello, World!”之类的实践太过简单,然而太复杂的实践(比如一个复杂的项目代码)又让人十分痛苦。本文提供了一个不那么简单、又不会让人过于痛苦的算法用于编程实践。同时,它还提供了若干种不同编程语言对这一算法的实现——通过比较它们,我们可以对这些语言有更好的理解。 继续阅读 »
2017-10-04 Robert Zhang
Java和C#在某种程度上都“源自于”C++,但这些语言在发展过程中也相互借鉴。C++也在不断进化着,C++11的出现和广泛支持让我们需要重新认识一下这门“古老”语言的新面貌。另外,通过对比Java和C#,我们或许能够对这些语言有更深入的认识。 继续阅读 »
2017-09-25 Robert Zhang
C#和Java相似:它们都把程序编译成某种“字节码”,然后在某种“虚拟机”上执行该字节码。此外,它们的语法形式都深受C++影响。另外,它们还是相互竞争的关系。因此,把它们放在一起比较是有意义的。 继续阅读 »
2018-10-09 Mithrilwoodrat
前言 除了上一篇中提到的使用 Shell 处理日志等文本数据,我们在日常工作中更多时候需要处理各种结构化数据。 存储结构化数据的组件通常而言是关系型数据库,各种各样的业务数据和统计数据通常都会存放到关系型数据库中。 继续阅读 »
2018-09-08 Mithrilwoodrat
假设我们现在有这样一个任务,需要快速从 Nignx logs 中统计出访问量前10的 ip 及其访问次数。 以 github 上的nginx_logs 为例 (格式参考官方文档) 继续阅读 »
2018-10-21 Mithrilwoodrat
什么是 ELK ELK 是三个开源项目的首字母缩写,分别为: Elasticsearch,Logstash 和 Kibana。 分别解决什么问题 1. Logstash 继续阅读 »
2018-09-08 Mithrilwoodrat
在日常的工作过程中,我们常常会遇到各种需要分析数据的场景,简单的比如说统计今天服务访问中有多少请求的 status_code 是 500,或是从几天的后台服务 log 中寻找特定的 log 来定位错误。复杂的情况下可能涉及到多天的数据聚合发现异常,或是从实时日志中统计用户信息,甚至是从TB、PB级别的数据中检索、聚合出需要的信息。 继续阅读 »