原创 【GoLang筆記】A Tour of Go - Exercise: Web Crawler

本文是GoLang學習教程中的一道習題,具體題目要求及代碼實現如下。 備註:由於天朝GFW屏蔽了GAE,所以GoLang官網及學習教程需要翻牆才能訪問。 Exercise: Web Crawler In this exercise you

原创 【GoLang筆記】實例分析GoLang built-in數據結構map的賦值引用行爲

備註1:本文旨在介紹Go語言中map這個內置數據結構的引用行爲,並用實例來說明如何避免這種引用行爲帶來的“副作用”。 備註2:文末列出的參考資料均來自GoLang.org官方文檔,需翻牆訪問。 1. map internalsmap是go

原创 日誌收集系統Flume調研筆記第1篇 - Flume簡介

用戶行爲數據的收集無疑是構建推薦系統的先決條件,而Apache基金會下的Flume項目正是爲分佈式的日誌收集量身打造的,本文是Flume調研筆記的第1篇,主要介紹Flume的基本架構,下篇筆記將會以實例說明Flume的部署和使用步驟。 本

原创 【Python筆記】如何編譯不依賴lapack和atlas庫的NumPy包

NumPy是科學計算方面的一個Python庫,在數據挖掘或機器學習或科學統計等領域經常被用到,官網在這裏。在實際業務中,爲發揮NumPy的高性能,在編譯NumPy時會依賴一些經過特別優化的第三方科學計算庫。對於初次接觸NumPy的新手來說

原创 【Python筆記】如何源碼編譯依賴LAPACK和ATLAS庫的NumPy包

上篇筆記介紹了不依賴lapack和atlas庫的NumPy包源碼編譯/安裝方法,但“純淨版”的NumPy會損失性能,故本篇筆記說明如何源碼編譯安裝依賴lapack和atlas庫的NumPy包。 特別提醒:由於atlas編譯時會根據當前機器

原创 【龍書筆記】用Python實現一個簡單數學表達式從中綴到後綴語法的翻譯器(採用遞歸下降分析法)

上篇筆記介紹了語法分析相關的一些基礎概念,本篇筆記根據龍書第2.5節的內容實現一個針對簡單表達式的後綴式語法翻譯器Demo。 備註:原書中的demo是java實例,我給出的將是邏輯一致的Python版本的實現。在簡單後綴翻譯器代碼實現之前

原创 【龍書筆記】編譯器簡介及程序構建過程綜述

備註:本文是近期重新閱讀編譯器經典教材<Compilers Principles, Techniques, & Tools>一書(又稱DragonBook,龍書)的其中一篇讀書筆記。 1. 什麼是編譯器從本質來看,平時提到的“編程語言”其

原创 【龍書筆記】語法分析涉及的基礎概念簡介

本篇筆記是我對龍書第2.3-2.5節內容的理解,主要介紹編譯器前端關於語法分析的衆多基礎概念。下篇筆記將根據本篇筆記的主要內容,實現一個針對簡單表達式的後綴式語法翻譯器Demo(原書中是java實例,我給出的將是邏輯一致的Python版本

原创 【GoLang筆記】淺析Go語言Interface類型的語法行爲及用法

Go不是一種典型的OO語言,它在語法上不支持類和繼承的概念。 沒有繼承是否就無法擁有多態行爲了呢?答案是否定的,Go語言引入了一種新類型—Interface,它在效果上實現了類似於C++的“多態”概念,雖然與C++的多態在語法上並非完全對

原创 【Linux筆記】如何利用logrotate工具自動切分滾動中的日誌文件

在很多實際項目中,應用程序會持續寫日誌,如果程序代碼中沒有調用支持自動切分(如按filesize或date切割)的日誌庫,則日誌文件會很快增長到G級別。單機操作大文件對後續跟進日誌來說非常不方便。 本文介紹如何利用logrotate這個工

原创 【MySQL筆記】SQL優化利器 - explain命令的輸出格式詳解

有MySQL使用經驗的同學在實際項目中可能會遇到SQL慢查詢的場景,有些場景很容易定位問題所在(如單表操作有慢查詢SQL時,仔細check SQL語句通常很容易定位索引問題),而有些複雜業務場景下(如多表聯合查詢幾十個字段並做group或

原创 【GoLang筆記】遍歷map時的key隨機化問題及解決方法

之前的一篇筆記曾分析過,Go的map在底層是用hashmap實現的。由於高效的hash函數肯定不是對key做順序散列的,所以,與其它語言實現的hashmap類似,在使用Go語言map過程中,key-value的插入順序與遍歷map時key

原创 如何用Fabric實現無密碼輸入提示的遠程自動部署

上篇筆記介紹了Fabric的概念、支持的元操作及task的定義方法,本篇筆記旨在說明如何在多臺目標機器上正確地執行tasks以實現遠程自動部署或運維。特別地,文中會說明如何配置fabric task以便遠程執行命令時不會彈出密碼輸入提示。

原创 supervisorctl報錯"error: <class 'socket.gaierror'>, [Errno -2] Name or service not known"的解決方法

如果用Python寫過線上的後端服務,相信對Supervisor不會陌生,它包含兩個主要工具: 1)supervisord: 用來實現進程守護 2)supervisorctl: 用來實現supervisord對其守護進程的控制,如re

原创 NOSQL數據庫簡介

近年來,相信IT從業者對NOSQL這個名詞不會陌生,根據WikiPedia的定義,NOSQL是”non SQL”或”Not Only SQL”的簡稱。其實早在1960年前後,計算機領域就出現過類似的系統,但NOSQL系統真正的爆發點是在W