原创 golang匿名函數和閉包

匿名函數和閉包: 閉包和匿名函數經常一起使用,可以使用閉包來訪問函數中的局部變量(被訪問操作的變量爲指針指向關係,操作的是同一個局部變量)如: func closure(x int) (func(), func(int)) {

原创 Go 語言中的方法,接口和嵌入類型

本文爲轉載技術翻譯,原翻譯地址:http://se77en.cc/2014/05/05/methods-interfaces-and-embedded-types-in-golang/ 原文地址:http://www.goinggo

原创 ngx_event_pipe_write_to_downstream分析

概述         這篇博客中我們重點闡述nginx http proxy模塊如何向客戶端發送響應。這也是一個比較複雜的過程,我們在敘述的過程中省略去一些過濾模塊的鉤子函數,直接進入發送響應數據的處理邏輯,http proxy模塊觸發發

原创 nginx http proxy接收響應過程(一)

        本篇博客主要闡述nginx如何從上游服務器接收響應的過程,響應包括響應header和響應body,在這裏我們比較關注響應body的接收過程。         因爲nginx採用了全異步事件驅動模型,從上游服務器接收數據和向

原创 Go Data Structures: Interfaces

From:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, December 1, 2009. 

原创 ngx_event_pipe_read_upstream分析

        前面一篇博客中我們闡述了nginx有讀、寫事件到來時是如何觸發相應處理函數來執行的,並且執行的大致邏輯是怎樣,我們這裏就仔細地深入分析nginx是怎樣從上游服務器讀取響應數據,具體的實現爲ngx_event_pipe_re

原创 nginx http proxy模塊緩衝區管理

        最近在工作中使用了nginx,我們使用的是openresty,使用的是http proxy模塊,即將nginx作爲後端服務器的反向代理來使用。這裏我們主要分析nginx作爲反向代理服務器時的緩存管理。         這裏

原创 內存映射文件原理探索

一直都對內存映射文件這個概念很模糊,不知道它和虛擬內存有什麼區別,而且映射這個詞也很讓人迷茫,今天終於搞清楚了。。。下面,我先解釋一下我對映射這個詞的理解,再區分一下幾個容易混淆的概念,之後,什麼是內存映射就很明朗了。   原理

原创 Linux文件系統預讀(三)

        前面兩篇關於文件系統的預讀我們通過實例闡述了應用程序的順序讀而觸發操作系統對文件大小預取情況,本篇博客我們主要描述預讀如何解決交織讀的問題。所謂的交織讀指的是多線程(進程)讀同一個打開的文件描述符,單個線程的順序讀在操作系

原创 Go 語言的錯誤處理機制

轉載自:http://blog.iwinux.info/blog/2012/12/error-handling-in-go.html 這段時間在學習 Go 語言,接觸到一些比較“另類”的語言特性,其中一個就是它的錯誤處理機制,跟我以

原创 go channel實現

go channel實現 轉載自:http://alpha-blog.wanglianghome.org/2012/04/13/go-channel-implementation/ G語言經過多年的發展,於最近推出了第一個

原创 SO_RCVTIMEO理解

        這個成員用來設置每個socket上的讀超時,主要對應了struct sock的sk_rcvtimeo成員,可以通過setsockop

原创 Linux 下iptables使用以及簡單原理

前言 最近由於工作需要經常會使用iptables,故而整理了下iptables的簡單使用方法以及一些原理方面的東西,寫的很淺,以備自己將來需要的時候可以隨時翻看,節省時間。 原理簡介 這裏簡單介紹下iptables的簡單原理以及其功能。i

原创 golang: 類型轉換和類型斷言

本文爲轉載,原文地址:http://blog.go-china.org/22-type-assert 類型轉換在程序設計中都是不可避免的問題。當然有一些語言將這個過程給模糊了,大多數時候開發者並不需要去關注這方面的問題。但是gol

原创 Go 語言方法接受者類型的選擇

概述 很多人(特別是新手)在寫 Go 語言代碼時經常會問一個問題,那就是一個方法的接受者類型到底應該是值類型還是指針類型呢,Go 的 wiki 上對這點做了很好的解釋,我來翻譯一下。 何時使用值類型 如果接受者是一個 map,func 或