原创 巧妙獲取結構體大小

在/sys/un.h中有這麼一個宏: #define SUN_LEN(ptr) ((size_t)(((struct sockaddr_un *)0) ->sun_path) + strlen((ptr)->sun_path))

原创 Linux 下手動編譯動態庫(.so)

    A shared library (also known as a shared object, or as a dynamically linked library) is similar to a archive in tha

原创 如何寫出高質量程序

先來看一段僞代碼: /*一個下載器的簡單僞代碼*/ void downloader(){ /*創建一個套接字*/ int fd = socket(...); /*填寫sockaddr結構體地址*/

原创 非阻塞I/O

最近在做服務器上協程的一些工作,遇到了一些問題,在這裏分享一下. 背景: 當我們需要自己在用戶空間進行協程的調度的時候,不得不對一些I/O等待型的操作進行特殊的處理,常見的這些操作有:connect/accept, read/wr

原创 防禦式編程

防禦式編程:這個概念其實來源於駕駛員,簡單來說,當你開車上路的時候要時刻保持警覺,假設路上你遇到的每一輛車都有可能向你撞過來造成危險。在coding裏面,要假設每個輸入都不一定符合設計之初的假設,要使用一定的語句對輸入進行限定。儘

原创 代碼大全:啓程

## 開始 ## 去年7月份畢業後開始工作,開始了程序員的職業生涯。 以前學生時代並無接觸太多業界中專業性很強的東西,直到看了Steve McConnell 的代碼大全2後才發現原來軟件是這樣被研發出來的。以前我一直只把讀書筆記記

原创 Eclipse調試出現value optimized out的解決方法

今天在ubuntu上用eclipse調試程序時,發現有許多變量值顯示爲 value optimized out 其實這是因爲編譯的時候開啓了優化選項 -On (n=1,2,3),經過優化後gdb有時候不能正確的顯示源

原创 Epoll的實現代碼淺析

這篇文章寫的通俗易懂,特定轉來。附上原文地址:https://raw.githubusercontent.com/lijie/kernel-doc/master/comment/eventpoll.c /* * 在深入瞭解epoll的實

原创 Android編譯器優化導致的奇怪問題

最近在調試一個協程庫的時候遇到奇怪的問題:在Ubuntu 10.04上調試協程一直正常,但是將協程庫編譯成.so文件後放入Android設備中,在應用程序中調用此庫卻出現強制退出的問題,剛開始遇到十分不解。 因爲該協程庫是利用單

原创 利用tcpdump解決無法收到組播的問題

項目上遇到一個這麼的奇怪現象:一個包含有組播地址的對象,只能收到一次組播,不論這個組播是自己發送的還是別的客戶端發送的,第二次變無法收到組播。 用tcpdump檢查包發現這個對象不論發送多少次組播,底層協議棧只收到了一次組播包

原创 Linux vmstat命令實戰詳解

最近需要做服務器壓力測試,轉一篇合適的命令指引文章,原文: http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html vmstat命令是最常見的Linux/Unix

原创 Go語言 beego快速入門

你對beego一無所知?沒關係,這篇文檔會很好的詳細介紹beego的各個方面,看這個文檔之前首先確認你已經安裝了beego,如果你沒有安裝的話,請看這篇beego安裝指南 最小應用 一個最小最簡單的應用如下代碼所示: [AppleS

原创 vim顯示行號、語法高亮、自動縮進的設置

在UBUNTU中vim的配置文件存放在/etc/vim目錄中,配置文件名爲vimrc  在Fedora中vim的配置文件存放在/etc目錄中,配置文件名爲vimrc 在Red Hat Linux 中vim的配置文件存放在/etc目錄中

原创 向Linus學管理

1.1. 導言 Linus Torvalds 在2004年把一篇講"Linux內核的管理風格"的文章放在了內核源碼文檔裏。這篇文章有意對應他以前寫的關於編碼 風格的文章(比如燒書儀式),也有技術人員熟悉的Dilbert卡通的影子。 H

原创 epoll_wait 時 POLLERR 與 POLLIN 同時返回的現象解析

今天code review時,同事B對我代碼中的poll()的處理做法提出了異議。於是做了些研究,還發現了一些好玩的故事。 異議的代碼 我的代碼是參考manpage寫的,類似下面的做法。同事B說沒有處理POLLERR、而且應當使用e