欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      GridCtrl使用小結(jié)

      時(shí)間:2019-05-13 19:13:48下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《GridCtrl使用小結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《GridCtrl使用小結(jié)》。

      第一篇:GridCtrl使用小結(jié)

      http://004km.cn/

      GridCtrl使用詳解

      CGridCtrl類主要是通過grid樣式顯示數(shù)據(jù) 在單文檔中的使用方法

      步驟一 初始化 在CView類的.h頭文件中包含文件:

      #include “Gridctrl.h” 并且手寫加入如下的成員函數(shù):

      CGridCtrl * m_pGridCtrl;步驟二 構(gòu)造與析構(gòu) 構(gòu)造函數(shù)中:

      m_pGridCtrl = NULL;析構(gòu)函數(shù)中:

      if(m_pGridCtrl)

      delete m_pGridCtrl;步驟三 如果需要打印功能的話添加同名打印函數(shù)代碼 在CView類的OnBeginPrinting()函數(shù)中添加如下代碼: if(m_pGridCtrl)

      m_pGridCtrl->OnBeginPrinting(pDC,pInfo);//簡(jiǎn)單吧,這就是類的好處其它兩個(gè)打印函數(shù)也一樣的做法.步驟四 在OnInitaUpdate()函數(shù)中或者你自己添加的要顯示Grid的消息函數(shù)中如下初始化: //創(chuàng)建非模式對(duì)話框 CDlg *dlg;dlg=new CDlg();dlg->Create(IDD_Dlg,this);

      //初始化GridCtrl控件 if(m_pGridCtrl!=NULL){ deletem_pGridCtrl;m_pGridCtrl=NULL;} if(m_pGridCtrl == NULL){ // Create the Gridctrl object m_pGridCtrl = new CGridCtrl;if(!m_pGridCtrl)return 0;// Create the Gridctrl window CRectrect;GetClientRect(rect);m_pGridCtrl->Create(rect, this, 100);// fill it up with stuff m_pGridCtrl->SetEditable(false);m_pGridCtrl->SetTextBkColor(RGB(0xFF, 0xFF, 0xE0));//黃色背景 m_pGridCtrl->EnableDragAndDrop(false);try { m_pGridCtrl->SetRowCount(k);//設(shè)置行數(shù)為k行 m_pGridCtrl->SetColumnCount(4);//k列

      m_pGridCtrl->SetFixedRowCount(1);//標(biāo)題行為一行

      http://004km.cn/

      m_pGridCtrl->SetFixedColumnCount(1);//同上 } catch(CMemoryException* e){ e->ReportError();e->Delete();return 0;} //填充列標(biāo)題 int row=0;for(int col=0;col<4;col++){ GV_ITEM Item;Item.mask = GVIF_TEXT|GVIF_FORMAT;Item.row = row;Item.col = col;if(col==0){ Item.nFormat = DT_CENTER|DT_WORDBREAK;Item.strText.Format(_T(“【類別】”),col);} else if(col==1){ Item.nFormat = DT_LEFT|DT_WORDBREAK;Item.strText.Format(_T(“第一列”),col);} else if(col==2){ Item.nFormat = DT_LEFT|DT_WORDBREAK;Item.strText.Format(_T(“第二列”),col);} m_pGridCtrl->SetItem(&Item);} // fill rows/cols with text for(row = 1;row < k;row++)for(col = 0;col < h;col++){ GV_ITEM Item;Item.mask = GVIF_TEXT|GVIF_FORMAT;Item.row = row;Item.col = col;if(col < 1){ //行標(biāo)題頭

      Item.nFormat = DT_CENTER|DT_VCENTER |DT_SINGLELINE|DT_END_ELLIPSIS |DT_NOPREFIX;Item.strText.Format(_T(“%d”),row);

      http://004km.cn/

      } else if(col==1){ //第一列的值 Item.nFormat = DT_CENTER|DT_VCENTER |DT_SINGLELINE|DT_END_ELLIPSIS |DT_NOPREFIX;str=“aa”;Item.strText.Format(_T(“%s”),str);}else if(col==2){ //第二列第值 Item.nFormat = DT_CENTER|DT_VCENTER |DT_SINGLELINE|DT_END_ELLIPSIS |DT_NOPREFIX;CStringstr;str=“bb”;Item.strText.Format(_T(“%s”),str);} m_pGridCtrl->SetItem(&Item);} m_pGridCtrl->AutoSize();

      //--------------設(shè)置行列距------------------for(int a=1;aSetRowHeight(a,21);//設(shè)置各行高 m_pGridCtrl->SetRowHeight(0,24);//設(shè)置0行高 m_pGridCtrl->SetColumnWidth(1,110);//設(shè)置2列寬 m_pGridCtrl->SetColumnWidth(2,160);//設(shè)置3列寬 m_pGridCtrl->SetColumnWidth(3,100);//設(shè)置4列寬 } 上例取自實(shí)際工程,稍有修改!部分注釋: void SetVirtualMode(TRUE)//設(shè)為虛模式 BOOL SetRowCount(intnRows)//設(shè)置總的行數(shù)。BOOL SetFixedRowCount(intnFixedRows = 1)//設(shè)置固定的行數(shù)據(jù) BOOL SetColumnCount(intnCols)//設(shè)置列數(shù) BOOL SetFixedColumnCount(intnFixedCols = 1)//設(shè)置固定的列數(shù)

      步驟五: 添加WM_SIZE消息,調(diào)整控件的界面占屏幕大小

      if(m_pGridCtrl->GetSafeHWnd())

      {

      CRectrect;

      GetClientRect(rect);

      m_pGridCtrl->MoveWindow(rect);

      }

      在對(duì)話框中的使用方法 步驟一 創(chuàng)建數(shù)據(jù)顯示表格對(duì)話框

      在資源管理器中新創(chuàng)建一個(gè)對(duì)話框,假設(shè)為CDlgTestReportBox。從工具箱中加入Custom Control,就是人頭像的那個(gè),將其區(qū)域拉伸至要顯示數(shù)據(jù)表格的大小,充滿整個(gè)對(duì)話框。

      在CDlgTestReportBox類的頭文件中: #include “GridCtrl.h”

      http://004km.cn/

      再定義成員變量: CGridCtrl* m_pGrid;添加OnShowWindow()消息處理函數(shù)如下:

      voidCDlgTestReportBox::OnShowWindow(BOOL bShow, UINT nStatus){ CDialog::OnShowWindow(bShow, nStatus);// TODO: Add your message handler code here if(m_pGrid!=NULL){ deletem_pGrid;m_pGrid=NULL;} if(m_pGrid==NULL){ m_pGrid=new CGridCtrl;CRectrect;GetDlgItem(IDC_ReportAera)->GetWindowRect(rect);//得到顯示區(qū)域 ScreenToClient(&rect);m_pGrid->Create(rect,this,100);m_pGrid->SetEditable(false);m_pGrid->SetTextBkColor(RGB(0xFF, 0xFF, 0xE0));//黃色背景 try { m_pGrid->SetRowCount(10);//初始為10行

      m_pGrid->SetColumnCount(11);//初始化為11列 m_pGrid->SetFixedRowCount(1);//表頭為一行 m_pGrid->SetFixedColumnCount(1);//表頭為一列 } catch(CMemoryException* e){ e->ReportError();e->Delete();// return FALSE;} for(int row = 0;row GetRowCount();row++)for(int col = 0;col GetColumnCount();col++){ //設(shè)置表格顯示屬性 GV_ITEM Item;Item.mask = GVIF_TEXT|GVIF_FORMAT;Item.row = row;Item.col = col;if(row==0&&col==0)//第(0,0)格

      http://004km.cn/

      { Item.nFormat = DT_CENTER|DT_WORDBREAK;Item.szText.Format(_T(“報(bào)表顯示”),col);} else if(row < 1)//設(shè)置0行表頭顯示 { Item.nFormat = DT_CENTER|DT_WORDBREAK;Item.szText.Format(_T(“ 項(xiàng)目%d”),col);} else if(col < 1)//設(shè)置0列表頭顯示 { if(rowGetRowCount()-4){ Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;Item.szText.Format(_T(“第%d次”),row);} } else { Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;Item.szText.Format(_T(“"),2);} m_pGrid->SetItem(&Item);} m_pGrid->Invalidate();} //--------------設(shè)置行列距------------------for(int a=0;aGetRowCount();a++)m_pGrid->SetRowHeight(a,16);//設(shè)置各行高 m_pGrid->SetColumnWidth(0,58);//設(shè)置0列寬 for(int b=1;bGetColumnCount();b++)m_pGrid->SetColumnWidth(b,59);//設(shè)置各列寬 }

      步驟二 嵌入上面的對(duì)話框 顯示數(shù)據(jù)

      在你需要顯示數(shù)據(jù)的對(duì)話框上的頭文件中,假設(shè)為CDlgTest,加入 #include ”GridCtrl.h“ CDlgTestReportBox* m_pTestReportBox;將數(shù)據(jù)顯示對(duì)話框放入你的對(duì)話框相應(yīng)位置上,在CDlgTest::OnInitDialog()中:

      if(!m_pTestReportBox){

      m_pTestReportBox=new CDlgTestReportBox(this);} m_pTestReportBox->Create(IDD_DlgTestReportBox,this);

      http://004km.cn/

      //定義區(qū)域變量 CRectrectDraw;GetDlgItem(IDC_AeraReport)->GetWindowRect(rectDraw);ScreenToClient(&rectDraw);//動(dòng)態(tài)測(cè)試數(shù)據(jù)顯示區(qū)域rectDraw //將對(duì)應(yīng)的對(duì)話框放到指定區(qū)域 m_pTestReportBox->MoveWindow(rectDraw);m_pTestReportBox->ShowWindow(SW_SHOW);自定義填充數(shù)據(jù)的函數(shù):CDlgTest::FillGrid()如下: CGridCtrl* pGrid=m_pTestReportBox->m_pGrid;for(int row = pGrid->GetRowCount()-1;row >= pGrid->GetRowCount()-3;row--){ for(int col = 1;col <= pGrid->GetColumnCount();col++){ GV_ITEM Item;Item.mask = GVIF_TEXT|GVIF_FORMAT;Item.row = row;Item.col = col;if(row==pGrid->GetRowCount()-3&&col>0)//平均值 { if(col==10){ Item.nFormat = DT_CENTER|DT_WORDBREAK;Item.szText.Format(_T(” %6.2f “),avjch);} else{ Item.nFormat = DT_CENTER|DT_WORDBREAK;Item.szText.Format(_T(” %6.2f “),av[col-1]);} } pGrid->SetItem(&Item);//提交數(shù)據(jù) if(row==0||col==0){ COLORREF clr = RGB(0, 0, 0);pGrid->SetItemBkColour(row, col, clr);pGrid->SetItemFgColour(row, col, RGB(255,0,0));} }//循環(huán)結(jié)束

      pGrid->Invalidate();} CGRIFCTRL原理:

      DBGRID和一般的GRID的不同之處在于,一般的GRID并不適合顯示大的數(shù)據(jù)量,如果一個(gè)表中有上萬條記錄都要插入到GRID中,這將是一個(gè)很慢的過程,并且在GRID中移動(dòng)滾動(dòng)條時(shí),它的記錄的滾動(dòng)也是很慢。而DBGRID并不會(huì)真正把這些記錄的數(shù)據(jù)全部插入到控件中,當(dāng)DBGRID的滾動(dòng)條滾動(dòng)時(shí),它會(huì)根據(jù)DBGRID的顯示面積的大小和查詢得到的總記錄數(shù)計(jì)算出當(dāng)前應(yīng)該顯示哪些行,然后插入

      http://004km.cn/

      到表格中,這樣一來,速度肯定快,而且沒有數(shù)據(jù)量多少的限制。幸運(yùn)的是,CGridCtrl類已經(jīng)為我們提供了這種機(jī)制,它是采用虛模式實(shí)現(xiàn)的。使用這種方式,即使你向這個(gè)該控件插入一百萬條數(shù)據(jù),它并不會(huì)真的生成一百萬行,而是隨著你的滾動(dòng)條的滾動(dòng),計(jì)算出在屏幕上要顯示的行和列,然后會(huì)向你提供一個(gè)接口,通過這個(gè)接口,你可以在這兒設(shè)置你要顯示的數(shù)據(jù)。下面給出使用CGridCtrl控件的虛模式的步驟: 步驟一 初始化

      在視圖的初始化函數(shù)里添加如下代碼:

      void SetVirtualMode(TRUE)

      設(shè)為虛模式

      BOOL SetRowCount(intnRows)

      設(shè)置總的行數(shù)。

      BOOL SetFixedRowCount(intnFixedRows = 1)

      設(shè)置固定的行數(shù)據(jù) BOOL SetColumnCount(intnCols)

      設(shè)置列數(shù) BOOL SetFixedColumnCount(intnFixedCols = 1)設(shè)置固定的列數(shù) 步驟二 響應(yīng)消息 顯示數(shù)據(jù)

      我們假設(shè)CGridCtrl是放在單文檔視圖中,而且它關(guān)聯(lián)的變量是m_GridCtrl,利用ClassWizard添加視圖的OnNotify響應(yīng)函數(shù)。這個(gè)響應(yīng)函數(shù)的寫法是固定的,類似下面的代碼:

      BOOL CGridCtrlTestView::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult){ if(wParam ==(WPARAM)m_Grid.GetDlgCtrlID()){ *pResult = 1;GV_DISPINFO *pDispInfo =(GV_DISPINFO*)lParam;if(GVN_GETDISPINFO == pDispInfo->hdr.code){ //這是添加的函數(shù),在這個(gè)函數(shù)里設(shè)置當(dāng)前要顯示的數(shù)據(jù) SetGridItem(pDispInfo);return TRUE;} } returnCGridCtrlTestView::OnNotify(wParam, lParam, pResult);} 在上面的代碼中,SetGridItem(pDispInfo)是添加的函數(shù),在這個(gè)函數(shù)里我們?cè)O(shè)置當(dāng)前要顯示的數(shù)據(jù)。pDispInfo是一個(gè)GV_DISPINFO的結(jié)構(gòu)體對(duì)象,它包含了每個(gè)單元格的信息,如行號(hào),列號(hào),有沒有位圖,背景色,前景色等。CGRIDCTRL會(huì)把當(dāng)前要顯示那個(gè)單元格行號(hào),列號(hào)傳遞給我們,我們只要設(shè)置里面顯示的數(shù)據(jù)就可以了。如下面是一個(gè)顯示數(shù)據(jù)的例子。

      voidCGridCtrlTestView::SetGridItem(GV_DISPINFO *pDispInfo){

      pDispInfo->item.strText.Format(”row%d,col%d",pDispInfo->it

      http://004km.cn/

      em.row, pDispInfo->item.col);}

      第二篇:sqlldr使用小結(jié)

      sqlldr使用小結(jié)

      sqlldr userid=lgone/tiger control=a.ctl

      LOAD DATA

      INFILE ’t.dat’ // 要導(dǎo)入的文件

      // INFILE ’tt.date’ // 導(dǎo)入多個(gè)文件

      // INFILE * // 要導(dǎo)入的內(nèi)容就在control文件里 下面的BEGINDATA后面就是導(dǎo)入的內(nèi)容

      INTO TABLE table_name // 指定裝入的表

      BADFILE ’c:\bad.txt’ // 指定壞文件地址

      ************* 以下是4種裝入表的方式

      APPEND // 原先的表有數(shù)據(jù) 就加在后面

      // INSERT // 裝載空表 如果原先的表有數(shù)據(jù) sqlloader會(huì)停止 默認(rèn)值

      // REPLACE // 原先的表有數(shù)據(jù) 原先的數(shù)據(jù)會(huì)全部刪除

      // TRUNCATE // 指定的內(nèi)容和replace的相同 會(huì)用truncate語句刪除現(xiàn)存數(shù)據(jù)

      ************* 指定的TERMINATED可以在表的開頭 也可在表的內(nèi)部字段部分

      FIELDS TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’“’

      // 裝載這種數(shù)據(jù): 10,lg,”“"lg”“",”lg,lg“

      // 在表中結(jié)果: 10 lg ”lg“ lg,lg

      // TERMINATED BY X ’0Array’ // 以十六進(jìn)制格式 ’0Array’ 表示的// TERMINATED BY WRITESPACE // 裝載這種數(shù)據(jù): 10 lg lg

      TRAILING NULLCOLS ************* 表的字段沒有對(duì)應(yīng)的值時(shí)允許為空

      ************* 下面是表的字段

      (col_1 , col_2 ,col_filler FILLER // FILLER 關(guān)鍵字 此列的數(shù)值不會(huì)被裝載

      // 如: lg,lg,not 結(jié)果 lg lg)

      // 當(dāng)沒聲明FIELDS TERMINATED BY ’,’ 時(shí)

      //(// col_1 [interger external] TERMINATED BY ’,’ ,// col_2 [date ”dd-mon-yyy“] TERMINATED BY ’,’ , // col_3 [char] TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’lg’

      //)

      // 當(dāng)沒聲明FIELDS TERMINATED BY ’,’用位置告訴字段裝載數(shù)據(jù)

      //(// col_1 position(1:2),// col_2 position(3:10),// col_3 position(*:16), // 這個(gè)字段的開始位置在前一字段的結(jié)束位置

      // col_4 position(1:16),// col_5 position(3:10)char(8)// 指定字段的類型

      //)

      BEGINDATA // 對(duì)應(yīng)開始的 INFILE * 要導(dǎo)入的內(nèi)容就在control文件里

      10,Sql,what

      20,lg,show

      =======================================

      //////////// 注意begindata后的數(shù)值前面不能有空格***** 普通裝載

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’”’

      (DEPTNO,DNAME,LOC)

      BEGINDATA

      10,Sales,“"”USA“"”

      20,Accounting,“Virginia,USA”

      30,Consulting,Virginia

      40,Finance,Virginia

      50,“Finance”,“",Virginia // loc 列將為空

      60,”Finance“,Virginia // loc 列將為空***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x’0Array’ 的情況

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY WHITESPACE

      --FIELDS TERMINATED BY x’0Array’

      (DEPTNO,DNAME,LOC)

      BEGINDATA Sales Virginia ***** 指定不裝載那一列

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’”’

      (DEPTNO,F(xiàn)ILLER_1 FILLER, // 下面的 “Something Not To Be Loaded” 將不會(huì)被裝載

      DNAME,LOC)

      BEGINDATA

      20,Something Not To Be Loaded,Accounting,“Virginia,USA” ***** position的列子

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      (DEPTNO position(1:2),DNAME position(*:16), // 這個(gè)字段的開始位置在前一字段的結(jié)束位置

      LOC position(*:2Array),ENTIRE_LINE position(1:2Array))

      BEGINDATA

      10Accounting Virginia,USA

      ***** 使用函數(shù) 日期的一種表達(dá) TRAILING NULLCOLS的使用

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’

      TRAILING NULLCOLS // 其實(shí)下面的ENTIRE_LINE在BEGINDATA后面的數(shù)據(jù)中是沒有直接對(duì)應(yīng)

      // 的列的值的 如果第一行改為

      10,Sales,Virginia,1/5/2000, 就不用TRAILING NULLCOLS了

      (DEPTNO,DNAME “upper(:dname)”, // 使用函數(shù)

      LOC “upper(:loc)”,LAST_UPDATED date ’dd/mm/yyyy’, // 日期的一種表達(dá)方式 還有’dd-mon-yyyy’ 等

      ENTIRE_LINE “:deptno||:dname||:loc||:last_updated”)

      BEGINDATA

      10,Sales,Virginia,1/5/2000

      20,Accounting,Virginia,21/6/1ArrayArrayArray 30,Consulting,Virginia,5/1/2000

      40,Finance,Virginia,15/3/2001 ***** 使用自定義的函數(shù) // 解決的時(shí)間問題

      create or replace

      function my_to_date(p_string in varchar2)return date

      as

      type fmtArray is table of varchar2(25);

      l_fmts fmtArray := fmtArray(’dd-mon-yyyy’, ’dd-month-yyyy’,’dd/mm/yyyy’,’dd/mm/yyyy hh24:mi:ss’);

      l_return date;

      begin

      for i in 1..l_fmts.count

      loop

      begin

      l_return := to_date(p_string, l_fmts(i));

      exception

      when others then null;

      end;EXIT when l_return is not null;

      end loop;

      if(l_return is null)

      then

      l_return :=

      new_time(to_date(’01011Array70’,’ddmmyyyy’)+ 1/24/60/60 *

      p_string, ’GMT’, ’EST’);

      end if;

      return l_return;

      end;

      /

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’

      TRAILING NULLCOLS

      (DEPTNO, DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED “my_to_date(:last_updated)” // 使用自定義的函數(shù))

      BEGINDATA

      10,Sales,Virginia,01-april-2001

      20,Accounting,Virginia,13/04/2001

      30,Consulting,Virginia,14/04/2001 12:02:02

      40,Finance,Virginia,Array872682Array7

      50,Finance,Virginia,02-apr-2001

      60,Finance,Virginia,Not a date ***** 合并多行記錄為一行記錄

      LOAD DATA

      INFILE *

      concatenate 3 // 通過關(guān)鍵字concatenate 把幾行的記錄看成一行記錄

      INTO TABLE DEPT

      replace

      FIELDS TERMINATED BY ’,’

      (DEPTNO, DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED date ’dd/mm/yyyy’)

      BEGINDATA

      10,Sales, // 其實(shí)這3行看成一行 10,Sales,Virginia,1/5/2000

      Virginia,1/5/2000

      // 這列子用 continueif list=“,” 也可以

      告訴sqlldr在每行的末尾找逗號(hào) 找到逗號(hào)就把下一行附加到上一行

      LOAD DATA

      INFILE *

      continueif this(1:1)= ’-’ // 找每行的開始是否有連接字符-有就把下一行連接為一行

      // 如-10,Sales,Virginia,// 1/5/2000 就是一行 10,Sales,Virginia,1/5/2000

      // 其中1:1 表示從第一行開始 并在第一行結(jié)束 還有continueif next 但continueif list最理想

      INTO TABLE DEPT replace

      FIELDS TERMINATED BY ’,’

      (DEPTNO,DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED date ’dd/mm/yyyy’)

      BEGINDATA // 但是好象不能象右面的那樣使用

      -10,Sales,Virginia,-10,Sales,Virginia,1/5/2000 1/5/2000

      -40, 40,Finance,Virginia,13/04/2001

      Finance,Virginia,13/04/2001 ***** 載入每行的行號(hào)

      load data

      infile *

      into table t

      replace

      (seqno RECNUM //載入每行的行號(hào)

      text Position(1:1024))

      BEGINDATA fsdfasj //自動(dòng)分配一行號(hào)給載入 表t 的seqno字段 此行為 1

      fasdjfasdfl // 此行為 2...Array ***** 載入有換行符的數(shù)據(jù)

      注意: unix 和 windows 不同 \\n & /n

      < 1 > 使用一個(gè)非換行符的字符

      LOAD DATA

      INFILE *

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’

      TRAILING NULLCOLS

      (DEPTNO,DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED “my_to_date(:last_updated)”,COMMENTS “replace(:comments,’\n’,chr(10))” // replace 的使用幫助轉(zhuǎn)換換行符)

      BEGINDATA

      10,Sales,Virginia,01-april-2001,This is the Sales\nOffice in Virginia

      20,Accounting,Virginia,13/04/2001,This is the Accounting\nOffice in Virginia

      30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting\nOffice in Virginia

      40,Finance,Virginia,Array872682Array7,This is the Finance\nOffice in Virginia

      < 2 > 使用fix屬性

      LOAD DATA

      INFILE demo17.dat “fix 101”

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’

      TRAILING NULLCOLS

      (DEPTNO,DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED “my_to_date(:last_updated)”,COMMENTS)

      demo17.dat 10,Sales,Virginia,01-april-2001,This is the Sales

      Office in Virginia

      20,Accounting,Virginia,13/04/2001,This is the Accounting

      Office in Virginia

      30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting

      Office in Virginia

      40,Finance,Virginia,Array872682Array7,This is the Finance

      Office in Virginia

      // 這樣裝載會(huì)把換行符裝入數(shù)據(jù)庫 下面的方法就不會(huì) 但要求數(shù)據(jù)的格式不同

      LOAD DATA

      INFILE demo18.dat “fix 101”

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’“’

      TRAILING NULLCOLS

      (DEPTNO, DNAME ”upper(:dname)“,LOC ”upper(:loc)“,LAST_UPDATED ”my_to_date(:last_updated)“,COMMENTS)

      demo18.dat

      10,Sales,Virginia,01-april-2001,”This is the Sales

      Office in Virginia“

      20,Accounting,Virginia,13/04/2001,”This is the Accounting

      Office in Virginia“

      30,Consulting,Virginia,14/04/2001 12:02:02,”This is the Consulting

      Office in Virginia“

      40,Finance,Virginia,Array872682Array7,”This is the Finance

      Office in Virginia“

      < 3 > 使用var屬性

      LOAD DATA

      INFILE demo1Array.dat ”var 3“

      // 3 告訴每個(gè)記錄的前3個(gè)字節(jié)表示記錄的長(zhǎng)度 如第一個(gè)記錄的 071 表示此記錄有 71 個(gè)字節(jié)

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’

      TRAILING NULLCOLS

      (DEPTNO,DNAME ”upper(:dname)“,LOC ”upper(:loc)“,LAST_UPDATED ”my_to_date(:last_updated)“,COMMENTS)

      demo1Array.dat

      07110,Sales,Virginia,01-april-2001,This is the Sales

      Office in Virginia

      07820,Accounting,Virginia,13/04/2001,This is the Accounting

      Office in Virginia

      08730,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting

      Office in Virginia

      07140,Finance,Virginia,Array872682Array7,This is the Finance

      Office in Virginia

      < 4 > 使用str屬性

      // 最靈活的一中 可定義一個(gè)新的行結(jié)尾符 win 回車換行 : chr(13)||chr(10)

      此列中記錄是以 a|\r\n 結(jié)束的select utl_raw.cast_to_raw(’|’||chr(13)||chr(10))from dual;

      結(jié)果 7C0D0A

      LOAD DATA

      INFILE demo20.dat ”str X’7C0D0A’“

      INTO TABLE DEPT

      REPLACE

      FIELDS TERMINATED BY ’,’

      TRAILING NULLCOLS

      (DEPTNO,DNAME ”upper(:dname)“,LOC ”upper(:loc)“,LAST_UPDATED ”my_to_date(:last_updated)",COMMENTS)

      demo20.dat 10,Sales,Virginia,01-april-2001,This is the Sales

      Office in Virginia|

      20,Accounting,Virginia,13/04/2001,This is the Accounting

      Office in Virginia|

      30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting

      Office in Virginia|

      40,Finance,Virginia,Array872682Array7,This is the Finance

      Office in Virginia|

      ================================

      象這樣的數(shù)據(jù) 用 nullif 子句

      10-jan-200002350Flipper seemed unusually hungry today.10510-jan-20000ArrayArray45Spread over three meals.id position(1:3)nullif id=blanks // 這里可以是blanks 或者別的表達(dá)式

      // 下面是另一個(gè)列子 第一行的 1 在數(shù)據(jù)庫中將成為 null

      LOAD DATA INFILE *

      INTO TABLE T

      REPLACE

      (n position(1:2)integer external nullif n=’1’,v position(3:8))

      BEGINDATA 10

      20lg

      -----------------------------

      第三篇:git使用小結(jié)

      git使用小結(jié)

      1.git-config 配置git,一般需要配置的是user.name,user.email,有時(shí)sendemail.smtpserver也要配置,比如,我使用msmtp:

      git-config –global sendemail.smtpserver /usr/local/bin/msmtp 如果你僅僅是想給這一個(gè)項(xiàng)目配置,把–global選項(xiàng)去掉。查看配置的選項(xiàng)是–list。2.git-pull git-pull沒必要帶后面那長(zhǎng)長(zhǎng)的url(-_-b 我那么用了好多次,不過我用的是!git-pull)。如果你在給Linux內(nèi)核這樣的項(xiàng)目工作,記得git-pull之前檢查是不是在master分支。3.git-format-patch 如果發(fā)送多于一個(gè)補(bǔ)丁,最好用[PATCH n/m]的形式,加上-n。加signed-off-by那行是-s。指定為幾次commit生成補(bǔ)丁,直接加數(shù)字,比如,$ git-format-patch-3 檢查補(bǔ)丁是–check,最好加上這個(gè)。4.git-send-email 如果一次提交補(bǔ)丁比較多,最好用–no-chain-reply-to,因?yàn)槿绻挥玫脑?,在thread嵌套會(huì)太深,不利于別人閱讀。這個(gè)也可以通過選項(xiàng)sendemail.chainreplyto來控制。–signed-off-by-cc,要加上,可以省去手工處理的麻煩。–compose用來編輯[PATCH 0/m],這個(gè)一般是對(duì)整個(gè)patchset的描述。–smtp-server,如果你不想用git-config指定的話,用它也行。–cc和–to就不用說了。5.git-commit 在git-commit之前最好git-add。git-commit幾個(gè)常用的選項(xiàng)有:-s 會(huì)增加Signed-off-by行,-e編輯commit message,-a表示all,-m是指定commit信息。同樣,刪除文件是先git-rm。查看commit列表用git-rev-list,查看某個(gè)commit用git-show,查看commit的日志用git-log,-p是以補(bǔ)丁的形式查看。6.其它 git-diff也可以比較不同版本之間的差異,某個(gè)版本的某個(gè)文件的差異,如: $ git-diff v2.6.22 $ git diff v2.6.20 init/main.c $ git-diff v2.6.23 v2.6.24-rc1 init/main.c git-whatchanged也差不多: $ git-whatchanged-p init/main.c 7.錯(cuò)誤提交了commit怎么辦? a)git-revert 這個(gè)本身就會(huì)產(chǎn)生一個(gè)commit,如果用得多了會(huì)讓你的log看起來不那么干凈。;-)b)git-reset 用這個(gè)要當(dāng)心,它會(huì)把那個(gè)commit之后的commit全部刪除。一個(gè)好的辦法是:先建立一個(gè)臨時(shí)的分支,然后再git-reset,再git-rebase,最后再刪除臨時(shí)的分支。詳細(xì)可以看這里。

      第四篇:ICC使用小結(jié)

      ICC使用小結(jié)

      (1)ICC的輸入文件

      MilkyWay(physical library),TLUPlus文件(interconnect文件),lib文件(logical library),netlist,constraints(sdc),floorplan文件(.fp或.def)

      由于ICC會(huì)使用MilkyWay數(shù)據(jù)格式,因此有必要先熟悉MilkyWay格式的產(chǎn)生。

      (2)ICC的步驟流程

      ICC的流程如下:(1)import design(netlist/sdc/database)——(2)create_floorplan或adjust floorplan——(3)placement ——(4)cts——(5)route——(6)final signoff(3)具體每一步過程及注意點(diǎn)(操作點(diǎn))(4)Import design具體操作:

      set_link_library xxx set_target_library xxx create_mu_lib design_library –technology xxx.tf –mw_reference_library ref_library open set_tlu_plus_file –max_tluplus max_file –min_tluplus min_file –tech2itf_map map_file read_verilog xxx.v current_design xxx link read_def xxx.def derive_pg_connection –power_net xxx_power_net –power_pin xxx_power_pin –ground_net xxx_ground_net –ground_pin xxx_ground_pin derive_pg_connection –power_net xxx_power_net –power_pin xxx_power_pin –ground_net xxx_ground_net –ground_pin xxx_ground_pin-tie read_floorplan xxx.fp或新創(chuàng)建一個(gè)floorplan接下來的任務(wù)了。

      (5)Create_floorplan具體操作:

      Create_floorplan針對(duì)讀入的設(shè)計(jì)以及def,開始進(jìn)行floorplan的規(guī)劃,包括IO以及macro的擺放,電源規(guī)劃等。

      首先要?jiǎng)?chuàng)建一個(gè)floorplan,創(chuàng)建floorplan之前需要讀入IO的約束信息,3101項(xiàng)目將IO視作macro對(duì)待。具體的io constraint信號(hào)可以使用set_pad_physical_constraints來設(shè)置。

      Create_floorplan –control_type width_and_height –core_width xxx –core_height xxx Remove_terminal *-keep_macro_place –keep_std_cell_place,只有設(shè)置了keep之后,才能create_fp_place完成,否則會(huì)報(bào)utility超出。

      設(shè)置好floorplan之后就需要對(duì)macro和standcell進(jìn)行place了。Macro的place可以使用腳本set_obj*和set_attribute來設(shè)置,而standcell可以使用create_fP_placement來完成。這個(gè)過程中先需要設(shè)置placement以及route的blockage。create_place_blockage和create_route_guide來完成blockage的設(shè)置。

      接著設(shè)置在Design Planning的task任務(wù)下,進(jìn)行place macros和standcells?;蛘呤褂胏reate_fp_placement –timing_driven –no_hierarchy_gravity 設(shè)置完macro和standcell之后,就可以進(jìn)行電源規(guī)劃了,可以通過產(chǎn)生power_ring或power_strap來進(jìn)行。create_power_strap –direction horizontal –net {VDD12 VSS_PAD} –layer M5 –configure step_end_stop –start_at 1290 –stop 2170 –step 50 –width 5 –start_low_ends coordinate –start_low_ends_coordinate 583 –start_high_ends coordinate –start_high_ends_coordinate 1710 –extend_low_ends off –extend_high_ends off –keep_floating_wire_pieces –ignore_parallel_targets –define_parallel_targets_by_wire_directions 下面對(duì)上面這個(gè)strap的創(chuàng)建進(jìn)行解釋說明下,上面的power_strap表示要在位置區(qū)域?yàn)閧{1290 583} {2170 1710}}的方形區(qū)域創(chuàng)建間距為50,線寬為5的水平方向power_strap。

      (6)placement的具體操作

      place_opt進(jìn)行之前需要先查看report_constraints –all看看主要的violation是哪些,同時(shí)也應(yīng)該查看congestion情況以選擇合適的place_opt策略。也需要檢查設(shè)計(jì)及物理信息,check_physical_design –for_placement以及check_design –physical,設(shè)置set_ignore_layers –max/-min,接著create_placement –timing_driven/-congestion等,若有congestion,可以設(shè)置set_congestion_options來設(shè)置合理的值,設(shè)置好placement的一些參數(shù)后,可以進(jìn)行place_opt了。

      (7)cts的具體操作

      cts可以通過GUI—>New Clock Tree Synthesis Window/New Interactive CTS Window查看時(shí)鐘樹的直觀形狀,可以設(shè)置clock_routing_rule來合理安排時(shí)鐘樹的線寬(NDR,Non-Default Rule)。設(shè)置OCV和bc_wc的工作條件。

      (8)route的具體操作

      需要先check_physical_design –for_routing檢查布線的物理設(shè)計(jì),以及check_routeability。Set_route_options可以設(shè)置route設(shè)置相關(guān)的選項(xiàng),route_opt包括route clock nets,route signal nets,set_route_opt_strategy可以設(shè)置route相關(guān)的策略。分析route的結(jié)果可以使用verify_route和verify_drc(使用hercules),postroute delay calculation using Arnoldi algorithm。考慮si的route需要設(shè)置set_si_options。Spread_eco_cells/insert_spare_cells,place_freezen_silicon/route_eco

      第五篇:Heritrix使用小結(jié)

      Heritrix使用小結(jié)

      1.Heritrix 簡(jiǎn)介

      Heritrix是一個(gè)專門為互聯(lián)網(wǎng)上的網(wǎng)頁進(jìn)行存檔而開發(fā)的網(wǎng)頁檢索器。它使用Java編寫并且完全開源。它主要的用戶界面可以通過一個(gè)web流量器來訪問并通過它來控制檢索器的行為,另外,它還有一個(gè)命令行工具來供用戶選擇調(diào)用。

      Heritrix是由互聯(lián)網(wǎng)檔案館和北歐國(guó)家圖書館聯(lián)合規(guī)范化編寫于2003年初。第一次正式發(fā)布是在2004年1月,并不斷的被互聯(lián)網(wǎng)檔案館和其他感興趣的第三方改進(jìn)著。到現(xiàn)在已經(jīng)成為一個(gè)成熟的開源爬蟲,并被廣泛使用。

      Heritrix的操作模型:

      從模型中可以看到,利用Heritrix我們可以輕松從互聯(lián)網(wǎng)上獲取信息并將它們?nèi)看鎯?chǔ)下來,然后可以任意的訪問獲取到的網(wǎng)頁信息并可以查看報(bào)告。

      Heritrix的整體結(jié)構(gòu)簡(jiǎn)圖如下: 它的工作流程是一個(gè)循環(huán),具體流程是:

      在預(yù)定的URI中選擇一個(gè)。

      從選擇的URI的網(wǎng)址下載遠(yuǎn)程文件

      分析,歸檔下載到的內(nèi)容 從分析到的內(nèi)容里面選擇感興趣的URI。加入預(yù)定隊(duì)列。

      標(biāo)記已經(jīng)處理過的URI

      在大概的了解了Heritrix及它的工作機(jī)制之后,我們就可以開始Heritrix的使用了。

      2.Heritrix 的配置與使用

      1)安裝與配置 從官方網(wǎng)站http://crawler.archive.org/下載最新版本的Heritrix運(yùn)行包,解壓到一個(gè)文件夾內(nèi)。其中,Heritrix所用到的工具類庫都存于lib下,另外,在Heritrix目錄下有一個(gè)conf目錄,其中包含了一個(gè)很重要的文件:heritrix.properties 在 heritrix.properties中配置了大量與Heritrix運(yùn)行息息相關(guān)的參數(shù),這些參數(shù)主要是配置了Heritrix運(yùn)行時(shí)的一些默認(rèn)工具類、WebUI的啟動(dòng)參數(shù),以及Heritrix的日志格式等。當(dāng)?shù)谝淮芜\(yùn)行Heritrix時(shí),只需要修改該文件,為其加入WebUI的登錄名和密碼。在“heritrix.cmdline.admin=”后面增加賬戶和密碼,比如heritrix.cmdline.admin=admin:admin。其中,用戶名和密碼是以一個(gè)冒號(hào)進(jìn)行分隔,使用者可以指定任何的字符串做為用戶名密碼。

      新建一個(gè)文件Heritrix.cmd 作為啟動(dòng)Heritrix的命令文件,在文件內(nèi)寫入:

      (假設(shè)文件夾路徑為D:heritrix)

      運(yùn)行上述腳本,在瀏覽器輸入http://localhost:8080/,輸入之前設(shè)置的用戶名密碼,即可進(jìn)入Heritrix管理頁面。

      2)新建抓取任務(wù)(1)單擊菜單欄上的“Jobs”標(biāo)簽,就可以進(jìn)入任務(wù)創(chuàng)建頁面。如下圖所示:

      (2)在任務(wù)創(chuàng)建頁面中,有4種創(chuàng)建任務(wù)的方式,具體含義如下:

      ??Based on existing job:以一個(gè)已經(jīng)有的抓取任務(wù)為模板,創(chuàng)建所有抓取屬性和抓取起始URL的列表

      ??Based on a recovery:在以前的某個(gè)任務(wù)中,可能設(shè)置過一些狀態(tài)點(diǎn),新的任務(wù)將從這個(gè)設(shè)置的狀態(tài)點(diǎn)開始。

      ??Based on a profile:專門為不同的任務(wù)設(shè)置了一些模板,新建的任務(wù)將按照模板來生成。

      ??With defaults:這個(gè)最簡(jiǎn)單,表示按默認(rèn)的配置來生成一個(gè)任務(wù)。

      (3)單擊With defaults鏈接,創(chuàng)建一個(gè)新的抓取任務(wù)。

      (4)在新建任務(wù)的名稱上,填入任務(wù)名稱。在Description中隨意填入字符,然后再在seeds框中,填入待抓取的起始網(wǎng)址。如下圖所示:

      (5)單擊“Modules”按鈕,就進(jìn)入了配置抓取時(shí)的處理鏈的頁面。

      在倒數(shù)第三項(xiàng) “Select Writers ”內(nèi)刪除默認(rèn)的“org.archive.crawler.writer.ARCWriterProcess”,加

      ”org.archive.crawler.writer.MirrorWriterProcessor",這樣執(zhí)行任務(wù)的時(shí)候抓取到的頁面會(huì)以鏡像的方式放在本地的目錄結(jié)構(gòu)中,而不是生成ARC存檔文件。如下圖:

      (6)單擊“Settings” 按鈕,進(jìn)入了屬性設(shè)置的頁面。

      在屬性設(shè)置頁面上有非常多的輸入域,Heritrix在抓取網(wǎng)頁時(shí),這些域是用來對(duì)的各個(gè)組件的值進(jìn)行預(yù)設(shè)。由于頁面上的內(nèi)容非常多,使用者可能無法全部了解它們的作用。所以Heritrix提供了一個(gè)輔助功能,來在最大程度上讓使用者了解每個(gè)參數(shù)的含義。在每個(gè)屬性的右側(cè)都有一個(gè)小問號(hào),當(dāng)單擊問號(hào)時(shí),就會(huì)彈出一個(gè)Javascript的Alert提示框,上面介紹了當(dāng)前屬性的作用。

      當(dāng)在第一次使用Heritrix時(shí),所需要設(shè)置的參數(shù)并不多,以默認(rèn)設(shè)置為主。但有一些參數(shù)是必須在第一次使用時(shí)就設(shè)置好的,就是HTTP-Header這個(gè)屬性域。

      如下圖所示,紅色框內(nèi)是修改前后對(duì)照。其中“user-agent”中的“PROJECT_URL_HERE”對(duì)應(yīng)自己的完整URL地址,“from”中設(shè)置自己的合法email地址,這兩項(xiàng)設(shè)置其實(shí)可隨便設(shè)置,只要格式規(guī)則合法即可。圖中的@VERSION@設(shè)置為1.12.1,即1.12.1版本的。

      (7)設(shè)置完成后,點(diǎn)擊“Submit job”,即完成全部任務(wù)的建立工作。這時(shí)就可以在Console頁面中點(diǎn)擊start啟動(dòng)任務(wù)。

      抓取到的所有文件在” %Heritrix_HOME%/jobs/任務(wù)名-任務(wù)時(shí)間/mirror”這個(gè)路徑下,按照域名分開存放。

      3.Heritrix 的擴(kuò)展開發(fā)

      1)Heritrix 結(jié)構(gòu)分析

      從上圖可以看出,Heritrix總體上是一個(gè)平臺(tái)結(jié)構(gòu),內(nèi)部的組件都具有松耦合的特點(diǎn)。任何一個(gè)部分都可以進(jìn)行拆卸并替換,這就給我們進(jìn)行基于Heritrix的自定義開發(fā)提供了條件。

      下面簡(jiǎn)單介紹一下每個(gè)組件的作用: 1.CrawlController

      CrawlController(中央控制器)是抓取任務(wù)的核心組件,它控制著整個(gè)抓取的流程。

      2.CrawlOrder

      CrawlOrder(抓取任務(wù))是整個(gè)抓取工作的起點(diǎn),它記錄了任務(wù)的所有屬性,即在創(chuàng)建任務(wù)時(shí)的一系列設(shè)置。

      3.Frontier

      Frontier(鏈接制造工廠)負(fù)責(zé)所有鏈接的處理。將已經(jīng)爬過的URI做標(biāo)記,并將未處理的鏈接放入待處理隊(duì)列。

      4.ToeThread

      ToeThread(處理線程)Heritrix是多線程的,每個(gè) URL 被一個(gè)線程處理,這個(gè)線程就叫做 ToeThread,每個(gè)線程都會(huì)包括一條處理鏈,如下圖所示。

      5.Processor

      Processor(處理器)代表著單個(gè)的處理器,所有的處理器都是它的子類。它包括以下幾種:PreProcessor(預(yù)處理器)、Fetcher(獲取器)、Extractor(抽取器)、Writer(存儲(chǔ)器)、PostProcessor(后處理器)。

      2)Heritrix 的組件開發(fā)

      在使用Heritrix的過程中,可能會(huì)需要一些特定功能,比如說只想抓取一個(gè)域名下的網(wǎng)頁等。這時(shí)就需要擴(kuò)展原有的Heritrix,自己寫一些組件來滿足這些要求。

      (1)擴(kuò)展FrontierScheduler

      首先在Heritrix工程中創(chuàng)建類包my.processor.,之后新建類MyFrontierScheduler。代碼如下:

      之后打開Heritrix目錄下的module文件夾,里面是所有模塊的配置文件。打開Processor.options,在里面加入一行my.processor.MyFrontierScheduler|MyFrontierScheduler。然后保存退出,之后你就可以在新建任務(wù)的時(shí)候選擇使用自己擴(kuò)展的FrontierScheduler了。

      (2)擴(kuò)展MirrorWriterProcessor

      有的時(shí)候我們需要在網(wǎng)頁下載之前將網(wǎng)頁進(jìn)行分析并提取有效內(nèi)容存儲(chǔ)起來,這時(shí)我們可以擴(kuò)展MirrorWriterProcessor這個(gè)模塊。利用一個(gè)開源的包htmlparser分析網(wǎng)頁結(jié)構(gòu),并將結(jié)果存儲(chǔ)起來。htmlparser可以在http://htmlparser.sourceforge.net 獲得。將下載的包添加到項(xiàng)目的引用列表中。

      新建MyMirrorWriterProcessor,將之前MirrorWriterProcessor的代碼復(fù)制過來,改掉類名及構(gòu)造函數(shù)的名稱。添加新的引用:

      新建一個(gè)方法AnalysisFile(),在writeToPath這個(gè)函數(shù)中調(diào)用它:

      之后就可以在AnalysisFile()中處理dest這個(gè)文件,將其進(jìn)行分析并保存為想要的格式。以下例子將其去掉Html標(biāo)簽之后封裝進(jìn)一個(gè)XML文件: 4.Heritrix 的常用技巧 1)只保存html類型的文件

      對(duì)于大多數(shù)的搜索引擎,我們所要做的只是對(duì)于純文本的搜索。因此只需要保存html類型的內(nèi)容。Heritrix的官方文檔”Heritrix User Manual”中給出了一個(gè)解決方案

      在新建任務(wù)時(shí)點(diǎn)擊”submodules”,如下圖:

      添加一個(gè)新的規(guī)則,類型為NotMatchesFilePatternDecideRule,并將其放置在PrerequisiteAccept-DecideRule之前,不然dns將不會(huì)被正確解析。之后在設(shè)置面板中如下設(shè)置:

      這樣設(shè)置之后,爬蟲就會(huì)只抓取html類型的文件,而將其它類型的文件都忽略掉。

      2)Queue-assignment-policy的設(shè)置。

      當(dāng)我們?cè)O(shè)置了在特定的域名下爬行的時(shí)候,經(jīng)常會(huì)碰到永遠(yuǎn)只有一個(gè)線程在運(yùn)行的情況,導(dǎo)致爬行十分緩慢。這是因?yàn)樵谀J(rèn)的情況下,Heritrix使用HostnameQueueAssignmentPolicy來產(chǎn)生key值,從這個(gè)策略的名字,我們也可以很容易的看出,key跟hostname是有關(guān)系的。而事實(shí)上,這個(gè)策略正是用hostname作為key值的。因此一個(gè)域名下的所有鏈接都會(huì)放到同一個(gè)線程中去。為解決這個(gè)問題,我們新建一個(gè)策略:

      這樣用ELF hash算法把url盡量平均分部到各個(gè)隊(duì)列中去,采集的速度大大的加快了。

      下載GridCtrl使用小結(jié)word格式文檔
      下載GridCtrl使用小結(jié).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Latex使用小結(jié)

        LATEX使用小結(jié)2010-10-03 09:04:49| 分類: 默認(rèn)分類|字號(hào) 訂閱 原文地址:LATEX使用小結(jié)作者:丁三家的小包子 虛擬打印機(jī)轉(zhuǎn)換eps格式 1. 建立一個(gè)虛擬打印機(jī):控制面板->printer......

        NB-IOT使用小結(jié)

        一、NB-IOT簡(jiǎn)介 萬物互聯(lián)的時(shí)代正以極其迅速的腳步走進(jìn)我們的生活,據(jù)估計(jì)2020年大約有500億臺(tái)設(shè)備連接到互聯(lián)網(wǎng)。而實(shí)現(xiàn)萬物互聯(lián)的基礎(chǔ)之一在于安全、可靠的數(shù)據(jù)傳輸。隨著5G......

        LoadRunner檢查點(diǎn)使用小結(jié)

        LoadRunner檢查點(diǎn)使用小結(jié) LR中檢查點(diǎn)有兩種:圖片和文字。這兩種檢查點(diǎn)可用以下三個(gè)函數(shù)實(shí)現(xiàn):web_find()、web_reg_find()和web_image_check() 下面分別介紹三種函數(shù)的用法 1......

        LoadRunner檢查點(diǎn)使用小結(jié)

        LR中檢查點(diǎn)有兩種:圖片和文字。 常用檢查點(diǎn)函數(shù)如下: 1)web_find()函數(shù)用于從 HTML 頁中搜索指定的文本字符串; 2)web_reg_find()函數(shù)注冊(cè)一個(gè)請(qǐng)求,以在下一個(gè)操作函數(shù)(如 web_url)......

        xcap使用小結(jié)1.3

        Xcap使用小結(jié) _gyb山窮水復(fù)Xcap是一款比較好用的抓包和發(fā)包工具。只需將文件解壓后就可以使用(先安裝Wincap,只要裝了wireshark都會(huì)有這個(gè)軟件)。 一、第一次打開xcap時(shí),會(huì)顯示......

        GIS使用技術(shù)小結(jié)

        GIS實(shí)用技巧小結(jié)01 1、用圖框或范圍顯示自己想實(shí)現(xiàn)的內(nèi)容 Data Frame Properties —— Data Frame 下設(shè)置Clip Option屬性。(在Exclude Layer中選擇需顯示的內(nèi)容,,選中選擇)。 2......

        Wireshark的簡(jiǎn)單使用小結(jié)

        Wireshark的簡(jiǎn)單使用小結(jié) Wireshark(前稱Ethereal)是一個(gè)網(wǎng)絡(luò)封包分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是截取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。在過去,網(wǎng)絡(luò)封包......

        體育室使用小結(jié)

        2012小學(xué)體育器材保管員個(gè)人工作總結(jié) 我熱愛祖國(guó),擁護(hù)中國(guó)共產(chǎn)黨的領(lǐng)導(dǎo) ; 遵紀(jì)守法,自覺遠(yuǎn)離 “ 黃、賭、毒 ” ,自覺維護(hù)**團(tuán)結(jié)的局面,促進(jìn)社會(huì)和諧。 讀哲學(xué)、讀文學(xué),從書中認(rèn)識(shí)......