原创 Erlang 學習筆記

函數的返回值 函數不會顯示地返回值,函數中最後一條語句的執行結果將作爲函數的返回值。   main(_) -> {A, B} = test(), io:format("A = ~w, B = ~s~n", [A, B]).

原创 nginx源碼閱讀筆記

  最近做一個收集客戶端數據的項目, 後臺使用nginx, 通過實現nginx的模塊來處理業務.  nginx的模塊編寫不難, 但寫完後對nginx的內部機制還是雲裏霧裏, 趁週末好好閱讀一下nginx的源代碼.  下面記錄一些閱讀過

原创 Linux進程通信 之 管道

    管道可用於具有親緣關係進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係進程間的通信。  管道是Linux支持的最初Unix IPC形式之一,具有以下特點: 管道是半雙工的,數據只

原创 Memcached內存管理機制

Slab 分配機制   Memcached 不是把所有大小的數據都放在一起的,而是預先分配一系列的 slab,每個 slab 負責一定範圍內的數據存儲。 初始時,Memcached 爲每一個 slab 分配 一個Page(1M) 的內存

原创 Linux進程間通信 之 消息隊列(轉)

原文地址: http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/ 消息隊列(也叫做報文隊列)能夠克服早期unix通信機制的一些缺點。作爲早期unix通信機制之一的信號能夠傳送的

原创 epoll在LT和ET模式下的讀寫方式

在一個非阻塞的socket上調用read/write函數, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK) 從字面上看, 意思是: * EAGAIN: 再試一次 * EWOULDBLOCK:

原创 Linux進程通信 之 信號燈(semphore)

  一. 信號燈簡介 信號燈與其他進程間通信方式不大相同,它主要提供對進程間共享資源訪問控制機制。 相當於內存中的標誌,進程可以根據它判定是否能夠訪問某些共享資源,同時,進程 也可以修改該標誌。除了用於訪問控制外,還可用於進程同步。 信號

原创 學習使用epoll

epoll是Linux下多路複用IO接口select/poll的增強版本,它能顯著減少程序在大量併發連接中只有少量活躍的情況下的系統CPU利用率。     一、epoll的優點 支持一個進程打開大數目的socket描述符。 IO效率不

原创 mmap詳解

  共享內存可以說是最有用的進程間通信方式,也是最快的IPC形式, 因爲進程可以直接讀寫內存,而不需要任何 數據的拷貝。對於像管道和消息隊列等通信方式,則需要在內核和用戶空間進行四次的數據拷貝,而共享內存則 只拷貝兩次數據: 一次從輸入文

原创 Linux進程通信 之 共享內存

一. 共享內存介紹 系統V共享內存指的是把所有共享數據放在共享內存區域(IPC shared memory region),任何想要訪問該數據的 進程都必須在本進程的地址空間新增一塊內存區域,用來映射存放共享數據的物理內存頁面。系統調用m

原创 使用python的logging模塊

一、從一個使用場景開始   開發一個日誌系統, 既要把日誌輸出到控制檯, 還要寫入日誌文件   import logging # 創建一個logger logger = logging.getLogger('mylogger') log

原创 Yaf源碼閱讀之框架的啓動(一)

(一)Yaf是什麼 Yaf,全稱 Yet Another Framework,是一個C語言編寫的、基於PHP擴展開發的PHP框架, 相比於一般的PHP框架,它更快,快到被譽爲最快的PHP開發框架。 它提供了Bootstrap、路由、分發

原创 Yaf源碼閱讀之請求的處理(二)

上一篇文章 我們分析了Yaf框架的啓動,包括配置文件的初始化以及框架類的加載。本文將分析Yaf 處理一次Web請求的詳細過程,這是一個Web框架最核心的部分,理解了這點,就理解了Yaf的實現原理。   (一)框架類的實例化 在上一篇文章

原创 screen的配置

# Set default encoding using utf8 defutf8 on ## 解決中文亂碼,這個要按需配置 defencoding utf8 encoding utf8 utf8 #兼容shell 使得.bash

原创 MySQL分組排序求Top N

表結構   按照grp分組,按照num排序,每組取Top 3,輸出結果如下:     源代碼: SELECT * FROM score AS t3 WHERE ( SELECT COUNT(*) FROM score AS t1