原创 curl源碼編譯安裝

https://curl.haxx.se/download.html 首先去curl官網下載對應版本,這裏有個坑需要注意。如果下載的源碼版本太高,編譯是成功的,但是curl可執行文件訪問https的時候還是會報各種奇怪的錯誤。所以我這裏的

原创 SftpDrive位置不可用

之前分享過《在windows下寫linux代碼直接編譯》,用的SftpDrive,以前都沒有發現它不支持win10,在win10上面映射磁盤connect的時候會報錯位置不可用。 然後我有一段時間都沒法方便的編碼,今天找到了一個功能更強

原创 source insight解決對namespace不友好的辦法

我們在頭文件中使用using namespace xxx;如果這個頭文件用的目錄結構路徑,直接在source insight裏面點擊無法找到的頭文件,這樣對於命名空間實際上source insight是沒有解析到的,那麼代碼裏面直接引用命

原创 curl常用功能

最簡單的get訪問(-X GET可選): curl www.test.com 使用用戶名和密碼: curl -u name:passwd http://www.test.com 查看詳細訪問過程: curl -v www.test.

原创 map2str和str2map

舉個例子: http://www.test.cn:8080/max/123.html?name=kevinchuang&pwd=123456#first 通常http鏈接部分都是固定,我們需要關心的是從“?”到“#”部分的數據部分。 比如

原创 避免不必要的內存拷貝和清0

對於網絡編程中,一般都喜歡使用memset清0和memcpy拷貝操作,舉個例子: char buffer[1024]; memset(buffer, 0, 1024); memcpy(buffer, proxy_hdr, IPC_HE

原创 udp接收緩衝設置多大

先說一下保護消息邊界,就是指傳輸協議把數據當作一條獨立的消息在網上傳輸,接收端只能接收獨立的消息。這個機制決定了udp的特性: 1. udp可以多線程對同一個fd進行發包操作,如果是tcp多線程發送,會讓流亂序,接收端完全無法解析出

原创 MySQL C API預處理函數call存儲過程

drop procedure if exists SelectAll; delimiter $ create procedure SelectAll(in TableName char(64)) begin set @sql =

原创 python查看模塊,對象的函數

這段時間在用libev的python版本事件模型,總共只有一個py.so文件,沒有.py文件查看源碼查看接口,最開始用shell命令直接查看.so的接口不盡人意。然後發現python提供了查詢的接口在代碼中可以直接打印出來看。 第一個:

原创 linux查看.so導出函數

方法一 nm -D *.so 方法二 objdump -tT *.so

原创 把函數返回值轉爲異常處理機制

我們這裏要使用的是#include <stdexcept>,可以參考官方文檔 先舉一個例子,比如調用recv的函數返回值處理: int ret = recv(fd...); if (ret > 0){} if (ret == 0){}

原创 python的libev庫pyev一點心得

http://pythonhosted.org/pyev/examples.html 這是官方文檔給的例子,基本需求對照着看了就可以寫了,一般用事件模型,無非就是關心一個有連接可以accept,一個有數據可以read的事件,然後就是定時

原创 從epoll源碼分析它的使用

首先來看看epoll_create的真身 SYSCALL_DEFINE1(epoll_create, int, size) { if (size <= 0) return -EINVAL; //也就是說參數size

原创 has been changed outside of Source Insight

在使用Source Insight寫代碼時,遇到它頻繁彈窗提示代碼在外部被更改 我們可以通過Options->Preferences->Files 就不會再提示了。 注意:這個解決方法,你要保證確實沒有外部在修改你正在編輯的

原创 非阻塞套接字connect

EINPROGRESS The socket is nonblocking and the connection cannot be completed immediately. It is possible to select