2009年5月9日

          一個(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 蔣耘 閱讀(385) | 評(píng)論 (1)編輯 收藏

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

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


          1、非IoC方式


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

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

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

          sizeof:對(duì)齊問(wèn)題

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

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

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

          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的對(duì)齊方式是1,s28double),所以在s3s4中才有這樣的差異。

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

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

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

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

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

          posted @ 2009-05-16 18:07 蔣耘 閱讀(6272) | 評(píng)論 (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 蔣耘 閱讀(1095) | 評(píng)論 (0)編輯 收藏

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

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

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

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

               摘要: 索引

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

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

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

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

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

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

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

          posted @ 2009-05-12 17:51 蔣耘 閱讀(3826) | 評(píng)論 (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 蔣耘 閱讀(6997) | 評(píng)論 (0)編輯 收藏

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

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

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

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

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

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 和静县| 青阳县| 宁德市| 电白县| 芮城县| 尼木县| 苍梧县| 鸡西市| 河池市| 高台县| 天长市| 陵川县| 汤阴县| 台中市| 德惠市| 清流县| 万年县| 岑巩县| 山阳县| 壤塘县| 德昌县| 会昌县| 清水河县| 宁城县| 都安| 临夏市| 浦北县| 抚松县| 定日县| 卫辉市| 岐山县| 闻喜县| 宾川县| 乡宁县| 新龙县| 淳化县| 富川| 北川| 泽普县| 泰兴市| 丰都县|