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