<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2009年5月12日

    一個找出素數的程序

    找出0到cap范圍內的素數:
    void primes(int cap)
    {
    int i, j, composite;
    for(i = 2; i < cap; ++i) {
    composite = 0;
    for(j = 2; j * j < i; ++j) {
    composite += !(i % j);
    }
    if(!composite){
    printf("%d\t", i);
    }
    }
    }
    int main()
    {
    primes(100);
    }
    

    posted @ 2009-05-31 12:03 蔣耘 閱讀(380) | 評論 (1)編輯 收藏

    struts2中獲得request response session對象(轉)

         摘要: 在struts2中有兩種方式可以得到這些對象


    1、非IoC方式


    要獲得上述對象,關鍵Struts 2中com.opensymphony.xwork2.ActionContext類。我們可以通過它的靜態方法getContext()獲取當前Action的上下文對象。有了這個對象我們想獲得其他幾個對象就好辦了
    ActionContext ctx = ActionContext.getContext();
    Map session = ctx.getSession();

    細心的朋友可以發現這里的session是個map對象在Struts2中底層的session都被封裝成了Map類型我們可以直接操作這個map 進行對session的寫入和讀取操作而不用去直接操作HttpSession對象
      閱讀全文

    posted @ 2009-05-20 00:26 蔣耘 閱讀(773) | 評論 (0)編輯 收藏

    sizeof:對齊問題

    因為對齊問題使結構體的sizeof變得比較復雜,看下面的例子:(默認對齊方式下)

    struct s1
    {
    char a;
    double b;
    int c;
    char d; 
    };

    struct s2
    {
    char a;
    char b;
    int c;
    double d;
    };

    cout<<sizeof(s1)<<endl; // 24
    cout<<sizeof(s2)<<endl; // 16

      
    同樣是兩個char類型,一個int類型,一個double類型,但是因為對界問題,導致他們的大小不同。計算結構體大小可以采用元素擺放法,我舉例子說明一下:首先,CPU判斷結構體的對界,根據上一節的結論,s1s2的對界都取最大的元素類型,也就是double類型的對界8。然后開始擺放每個元素。
      
    對于s1,首先把a放到8的對界,假定是0,此時下一個空閑的地址是1,但是下一個元素ddouble類型,要放到8的對界上,離1最接近的地址是8了,所以d被放在了8,此時下一個空閑地址變成了16,下一個元素c的對界是416可以滿足,所以c放在了16,此時下一個空閑地址變成了20,下一個元素d需要對界1,也正好落在對界上,所以d放在了20,結構體在地址21處結束。由于s1的大小需要是8的倍數,所以21-23的空間被保留,s1的大小變成了24。
      
    對于s2,首先把a放到8的對界,假定是0,此時下一個空閑地址是1,下一個元素的對界也是1,所以b擺放在1,下一個空閑地址變成了2;下一個元素c的對界是4,所以取離2最近的地址4擺放c,下一個空閑地址變成了8,下一個元素d的對界是8,所以d擺放在8,所有元素擺放完畢,結構體在15處結束,占用總空間為16,正好是8的倍數。

      
    這里有個陷阱,對于結構體中的結構體成員,不要認為它的對齊方式就是他的大小,看下面的例子:

    struct s1
    {
    char a[8];
    };

    struct s2
    {
    double d;
    };

    struct s3
    {
    s1 s;
    char a;
    };

    struct s4
    {
    s2 s;
    char a; 
    };

    cout<<sizeof(s1)<<endl; // 8
    cout<<sizeof(s2)<<endl; // 8
    cout<<sizeof(s3)<<endl; // 9
    cout<<sizeof(s4)<<endl; // 16;

      s1
    s2大小雖然都是8,但是s1的對齊方式是1s28double),所以在s3s4中才有這樣的差異。

      
    所以,在自己定義結構體的時候,如果空間緊張的話,最好考慮對齊因素來排列結構體里的元素。

    posted @ 2009-05-16 18:11 蔣耘 閱讀(664) | 評論 (0)編輯 收藏

    同步/異步與阻塞/非阻塞的區別(轉)

         摘要: 首先來解釋同步和異步的概念,這兩個概念與消息的通知機制有關.

    舉個例子,比如我去銀行辦理業務,可能選擇排隊等候,也可能取一個小紙條上面有我的號碼,等到排到我這一號時由柜臺的人通知我輪到我去辦理業務了.
    前者(排隊等候)就是同步等待消息,而后者(等待別人通知)就是異步等待消息.在異步消息處理中,等待消息者(在這個例子中就是等待辦理業務的人)往往注冊一個回調機制,在所等待的事件被觸發時由觸發機制(在這里是柜臺的人)通過某種機制(在這里是寫在小紙條上的號碼)找到等待該事件的人.
    而在實際的程序中,同步消息處理就好比簡單的read/write操作,它們需要等待這兩個操作成功才能返回;而異步處理機制就是類似于select/poll之類的多路復用IO操作,當所關注的消息被觸發時,由消息觸發機制通知觸發對消息的處理.  閱讀全文

    posted @ 2009-05-16 18:07 蔣耘 閱讀(6269) | 評論 (2)編輯 收藏

    關于VC2008下提示找不到MSVCP90D.dll的解決辦法

    Same problem MSCVP90D.dill not found,

    went to "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library"

    and set Multi-threaded Debug (/MTd)

    did build generated error messages...

    then reset

    "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library"

    to

    Multi-threaded Debug DLL (/MDd)

    posted @ 2009-05-15 22:21 蔣耘 閱讀(1093) | 評論 (0)編輯 收藏

    關于SQL 數據庫表中的聚集索引和非聚集索引等(轉)

         摘要: 1.概念
    索引是在數據庫表或者視圖上創建的對象,目的是為了加快對表或視圖的查詢的速度(簡單理解)。
    索引是一個單獨的、物理的數據庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單(深刻理解)。
    按照存儲方式分為:聚集與非聚集索引(需要重視和區別的概念,后面詳解)
    按照維護與管理索引角度分為:唯一索引、復合索引和系統自動創建的索引(相對簡單,如下解釋:)
    1).唯一索引:惟一索引可以確保索引列不包含重復的值.
    可以用多個列,但是索引可以確保索引列中每個值組合都是唯一的,
    即下面的姓不能有重復,同時名也不能有重復:
    姓 名
    李 二
      閱讀全文

    posted @ 2009-05-14 19:19 蔣耘 閱讀(1759) | 評論 (1)編輯 收藏

    數據庫的索引

         摘要: 索引

    使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓(lname)列。如果要按姓查找特定職員,與必須搜索表中的所有行相比,索引會幫助您更快地獲得該信息。

    索引提供指向存儲在表的指定列中的數據值的指針,然后根據您指定的排序順序對這些指針排序。數據庫使用索引的方式與您使用書籍中的索引的方式很相似:它搜索索引以找到特定值,然后順指針找到包含該值的行。

    在數據庫關系圖中,您可以在選定表的“索引/鍵”屬性頁中創建、編輯或刪除每個索引類型。當保存索引所附加到的表,或保存該表所在的關系圖時,索引將保存在數據庫中。有關詳細信息,請參見創建索引。

    注意;并非所有的數據庫都以相同的方式使用索引。有關更多信息,請參見數據庫服務器注意事項,或者查閱數據庫文檔。
    作為通用規則,只有當經常查詢索引列中的數據時,才需要在表上創建索引。索引占用磁盤空間,并且降低添加、刪除和更新行的速度。在多數情況下,索引用于數據檢索的速度優勢大大超過它的。  閱讀全文

    posted @ 2009-05-14 00:41 蔣耘 閱讀(281) | 評論 (0)編輯 收藏

    單向鏈表反轉(轉)

         摘要: 單向鏈表反轉算法  閱讀全文

    posted @ 2009-05-12 17:51 蔣耘 閱讀(3824) | 評論 (1)編輯 收藏

    TCP/IP協議頭部結構體(轉)

         摘要: // i386 is little_endian.
    #ifndef LITTLE_ENDIAN
    #define LITTLE_ENDIAN (1) //BYTE ORDER
    #else
    #error Redefine LITTLE_ORDER
    #endif  閱讀全文

    posted @ 2009-05-12 15:37 蔣耘 閱讀(6994) | 評論 (0)編輯 收藏

    <2009年5月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 四虎影视在线永久免费观看| 免费看污成人午夜网站| 免费在线观看黄网| 国产亚洲Av综合人人澡精品| 在线观看无码的免费网站| 亚洲日韩国产AV无码无码精品| 国产h视频在线观看免费| 亚洲一区二区三区高清视频| 青青草免费在线视频| 亚洲熟妇自偷自拍另欧美| 麻豆国产入口在线观看免费| 偷自拍亚洲视频在线观看99| 亚洲色偷拍区另类无码专区| GOGOGO免费观看国语| 亚洲成人精品久久| 国产精彩免费视频| 亚洲人成色777777精品| 男人的天堂亚洲一区二区三区| 中文字幕乱码亚洲精品一区| 国产免费69成人精品视频| 国产精品免费αv视频| 亚洲精品福利视频| 99视频在线精品免费观看6| 无码色偷偷亚洲国内自拍| 红杏亚洲影院一区二区三区| 无码人妻精品中文字幕免费 | 免费人成视网站在线观看不卡| 成人免费观看男女羞羞视频| 亚洲人精品午夜射精日韩| 亚洲成人免费在线观看| 国产精品亚洲AV三区| 亚洲午夜久久久久久久久久 | 四虎成人免费网址在线| h视频免费高清在线观看| 亚洲AV日韩AV永久无码免下载 | 亚洲成熟xxxxx电影| 成人毛片18女人毛片免费96 | 蜜桃精品免费久久久久影院| 久久精品无码免费不卡| 亚洲第一成年人网站| 免费二级毛片免费完整视频|