一個(gè)找出素?cái)?shù)的程序

          找出0到cap范圍內(nèi)的素?cái)?shù):
          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 蔣耘 閱讀(386) | 評論 (1)編輯 收藏

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

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


          1、非IoC方式


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

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

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

          sizeof:對齊問題

          因?yàn)閷R問題使結(jié)構(gòu)體的sizeof變得比較復(fù)雜,看下面的例子:(默認(rèn)對齊方式下)

          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

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

            
          這里有個(gè)陷阱,對于結(jié)構(gòu)體中的結(jié)構(gòu)體成員,不要認(rèn)為它的對齊方式就是他的大小,看下面的例子:

          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中才有這樣的差異。

            
          所以,在自己定義結(jié)構(gòu)體的時(shí)候,如果空間緊張的話,最好考慮對齊因素來排列結(jié)構(gòu)體里的元素。

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

          同步/異步與阻塞/非阻塞的區(qū)別(轉(zhuǎn))

               摘要: 首先來解釋同步和異步的概念,這兩個(gè)概念與消息的通知機(jī)制有關(guān).

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

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

          關(guān)于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 蔣耘 閱讀(1096) | 評論 (0)編輯 收藏

          關(guān)于SQL 數(shù)據(jù)庫表中的聚集索引和非聚集索引等(轉(zhuǎn))

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

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

          數(shù)據(jù)庫的索引

               摘要: 索引

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

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

          在數(shù)據(jù)庫關(guān)系圖中,您可以在選定表的“索引/鍵”屬性頁中創(chuàng)建、編輯或刪除每個(gè)索引類型。當(dāng)保存索引所附加到的表,或保存該表所在的關(guān)系圖時(shí),索引將保存在數(shù)據(jù)庫中。有關(guān)詳細(xì)信息,請參見創(chuàng)建索引。

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

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

          單向鏈表反轉(zhuǎn)(轉(zhuǎn))

               摘要: 單向鏈表反轉(zhuǎn)算法  閱讀全文

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

          TCP/IP協(xié)議頭部結(jié)構(gòu)體(轉(zhuǎn))

               摘要: // 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 蔣耘 閱讀(6998) | 評論 (0)編輯 收藏

          C++虛函數(shù)表解析(轉(zhuǎn))

               摘要: C++中的虛函數(shù)的作用主要是實(shí)現(xiàn)了多態(tài)的機(jī)制。關(guān)于多態(tài),簡而言之就是用父類型別的指針指向其子類的實(shí)例,然后通過父類的指針調(diào)用實(shí)際子類的成員函數(shù)。這種技術(shù)可以讓父類的指針有“多種形態(tài)”,這是一種泛型技術(shù)。所謂泛型技術(shù),說白了就是試圖使用不變的代碼來實(shí)現(xiàn)可變的算法。比如:模板技術(shù),RTTI技術(shù),虛函數(shù)技術(shù),要么是試圖做到在編譯時(shí)決議,要么試圖做到運(yùn)行時(shí)決議。

          關(guān)于虛函數(shù)的使用方法,我在這里不做過多的闡述。大家可以看看相關(guān)的C++的書籍。在這篇文章中,我只想從虛函數(shù)的實(shí)現(xiàn)機(jī)制上面為大家 一個(gè)清晰的剖析。

          當(dāng)然,相同的文章在網(wǎng)上也出現(xiàn)過一些了,但我總感覺這些文章不是很容易閱讀,大段大段的代碼,沒有圖片,沒有詳細(xì)的說明,沒有比較,沒有舉一反三。不利于學(xué)習(xí)和閱讀,所以這是我想寫下這篇文章的原因。也希望大家多給我提意見。

          言歸正傳,讓我們一起進(jìn)入虛函數(shù)的世界。
            閱讀全文

          posted @ 2009-05-09 16:53 蔣耘 閱讀(290) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共2頁: 1 2 下一頁 
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 万源市| 达日县| 吉木萨尔县| 绿春县| 榆社县| 个旧市| 潍坊市| 疏勒县| 门头沟区| 鄱阳县| 连州市| 株洲市| 昌都县| 墨竹工卡县| 虹口区| 翁牛特旗| 来安县| 明光市| 东乡| 遵义市| 仲巴县| 筠连县| 柘城县| 通榆县| 博客| 长沙县| 固阳县| 正安县| 黑山县| 福贡县| 高碑店市| 康保县| 濉溪县| 南木林县| 杭州市| 上饶县| 金堂县| 阿合奇县| 安义县| 靖安县| 铜山县|