原创 線程安全的無鎖RingBuffer的實現【一個讀線程,一個寫線程】

在程序設計中,我們有時會遇到這樣的情況,一個線程將數據寫到一個buffer中,另外一個線程從中讀數據。所以這裏就有多線程競爭的問題。通常的解決辦法是對競爭資源加鎖。但是,一般加鎖的損耗較高。其實,對於這樣的一個線程寫,一個線程讀的特殊情況

原创 初探GF-Complete(伽羅瓦運算庫)

GF-Complete 是一個開源、綜合性的伽羅瓦運算庫,相應的文章發表在FAST13 中(見參考文獻【1】)。作者是大名鼎鼎的Jim Plank

原创 SpinWait的性能高於Thread.Sleep

在進行多線程開發時,我們經常會用到Thread.Sleep(timeout_ms)來等待或者騰出時間來讓其他線程處理。不過,即使我們把timeout_ms設置爲0,Thread.Sleep還是會執行等待操作。這就讓人很納悶了,我明明指定

原创 大型網站架構演化歷程(下)

大型網站的挑戰主要來自龐大的用戶,高併發的訪問和海量數據,任何簡單的業務一旦需要處理數以P計的數據和麪對數以億計的用戶,問題就會變得棘手。大型網站架構主要就是解決這類問題。 本文內容大部分來自《大型網站技術架構》,這本書很值得一看,強烈

原创 線程安全的無鎖RingBuffer的實現【多個寫線程一個讀線程】

在之前的一篇博客中,寫了一個在特殊情況下,也就是隻有一個讀線程和一個寫線程的情況下,的無鎖隊列的實現。其中甚至都沒有利用特殊的原子加減操作,只是普通的運算。這樣做的原因是,即使是特殊的原子加減操作,也比普通的加減運算複雜度高很多。因此文中

原创 Windows下高精度定時器討論

獲得高精度時間點是可能的,但高精度時間段是比較難的,精度越高受到各方面的影響越大 只有QueryPerformanceCounter能突破1ms,內

原创 橋樑模式應用場景

抽象與實現 抽象不應該依賴於實現細節,實現細節應該依賴於抽象。 問題在於如果抽象B由於固有的原因,本身並不穩定,也有可能變化,怎麼辦?   舉例來說 假如我們需要開發一個同時支持PC和手機的坦克遊戲,遊戲在PC和手機上功能都一樣,都有同

原创 gdb結合coredump定位崩潰進程

Linux環境下經常遇到某個進程掛掉而找不到原因,我們可以通過生成core file文件加上gdb來定位。   如何產生core file? 我們可以使用ulimit這條命令對core file文件的大小進行設定。 一般默認情

原创 C# 之泛型詳解

什麼是泛型        我們在編寫程序時,經常遇到兩個模塊的功能非常相似,只是一個是處理int數據,另一個是處理string數據,或者其他自定義的數據類型,但我們沒有辦法,只能分別寫多個方法處理每個數據類型,因爲方法的參數類型不同。

原创 Python安裝後刪除鍵方向鍵不可用

#pythonPython 2.4.3 (#1, Sep 17 2008, 16:07:0 [GCC 4.1.2 20071124 (Red Hat 4.1.2-41)] on linux2Type "help", "copyright"

原创 Linux內核的整體架構簡介

1. 前言 本文是“Linux內核分析”系列文章的第一篇,會以內核的核心功能爲出發點,描述Linux內核的整體架構,以及架構之下主要的軟件子系統。之後,會介紹Linux內核源文件的目錄結構,並和各個軟件子系統對應。 注:本文和其它的“Li

原创 AppDomain的作用

AppDomain 類似於一個輕量級進程,它是 .net / mono 代碼運行時的一個邏輯容器。 一般情況下,我們開發的代碼都運行在“運行時”爲我們創建的 AppDomain 中(即默認 AppDomain),察覺不到 AppDomai

原创 Net中大對象分配出現OutOfMemoryException

Usually, .NET developers don’t need to think too much about how their objects are being laid out in physical memory: af

原创 Net實現高精度計時器

using System; namespace MicroLibrary { /// <summary> /// MicroStopwatch class /// </summary> public c

原创 centos7安裝後不能上網

vmware安裝的centos7中沒有出現eth0網卡,也沒有ip,不能上網,輸入ifconfig後如下圖 解決辦法 1.編輯網卡的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 將裏