春天花會(huì)開

          ***********

          統(tǒng)計(jì)

          留言簿(4)

          閱讀排行榜

          評(píng)論排行榜

          2006年7月7日 #

          Windows GDI、GDI+ 繪圖 防閃爍

          “閃爍”的原因是擦除背景(用背景色重新填充)與繪制前景圖像之間有時(shí)間差,而且背景和前景顏色有差異,導(dǎo)致眼睛看上去好像在閃爍。
          “閃爍”并不主要是因?yàn)镚DI或GDI+效率低造成的。

          解決這個(gè)問題需從兩個(gè)方面入手:1.縮短(或消除)前后景繪圖時(shí)間差,2.減少繪制次數(shù)
          1.縮短(或消除)前后景繪圖時(shí)間差
          OnEraseBkgnd(CDC* pDC)
          {
              return TRUE;
          }

          實(shí)際上背景填充是必須,否則前景圖像與殘留的背景混在一起非常雜亂,
          這里取消的步驟,其實(shí)移到繪圖過程了(見2.),合成一張完整圖像。

          2.減少繪制次數(shù)
          采用“雙緩沖”技術(shù),先在內(nèi)存緩沖區(qū)中完成繪圖,再貼到屏幕上
          另外如果緩沖圖像內(nèi)容不是變化的,應(yīng)存為成員對(duì)象之類,不要每次去畫
          一般在OnDraw(CDC* pDC)中完成
          ///////////////////////////--GDI --////////////////////////////////////
          int nWidth=1000;
          int nHeight=1000;
          CDC MemDC; //首先定義一個(gè)顯示設(shè)備對(duì)象
          CBitmap MemBitmap;//定義一個(gè)位圖對(duì)象
          //隨后建立與屏幕顯示兼容的內(nèi)存顯示設(shè)備
          MemDC.CreateCompatibleDC(pDC); //這時(shí)還不能繪圖,因?yàn)闆]有地方畫 ^_^
          //下面建立一個(gè)與屏幕顯示兼容的位圖,至于位圖的大小嘛,可以用窗口的大小
          //,也可以自己定義(如:有滾動(dòng)條時(shí)就要大于當(dāng)前窗口的大小,在BitBlt時(shí)決定拷貝內(nèi)存的哪部分到屏幕上)

          MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
          //將位圖選入到內(nèi)存顯示設(shè)備中
          //只有選入了位圖的內(nèi)存顯示設(shè)備才有地方繪圖,畫到指定的位圖上

          CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
          //先用背景色將位圖清除干凈,這里用原背景色作為背景
          //你也可以用自己應(yīng)該用的顏色

          MemDC.FillSolidRect(0,0,nWidth,nHeight,pDC->GetBkColor());
          //繪圖
          CBrush brush(RGB(0,255,0));
           for(int i=0;i<50;i++)
           {
            for(int j=0;j<80;j++)
            {
             //MemDC.Rectangle(10*j,10*i,9,9);
             CRect rc(10*j,10*i,10*j+8,10*i+8);
             MemDC.FillRect(&rc,&brush);
            }
           }
          //將內(nèi)存中的圖拷貝到屏幕上進(jìn)行顯示
          pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
          //繪圖完成后的清理
          MemBitmap.DeleteObject();
          MemDC.DeleteDC();


          ///////////////////////////--GDI+ --////////////////////////////////////
           Bitmap* buf=new Bitmap(2000,2000) ;
           Graphics gc(buf);//Graphics.FromImage(buf);
           //反鋸齒
           //gc.SetSmoothingMode(SmoothingModeAntiAlias);
           SolidBrush bgbrush(Color(255,255,255,255));
           gc.FillRectangle(&bgbrush,0,0,2000,2000);//背景填充
           Pen      pen(Color(255, 0, 0, 255));
           SolidBrush sbrush(Color(255,0,255,255));
           for(int i=0;i<60;i++)
           {
            for(int j=0;j<60;j++)
             gc.FillRectangle(&sbrush,10*j,10*i,9,9);
           }
           Graphics G(pDC->GetSafeHdc()); 
           G.DrawImage(buf ,0,0);

           

          posted @ 2010-06-19 16:09 春天花會(huì)開 閱讀(2639) | 評(píng)論 (1)編輯 收藏

          Visual studio 2008/2010 MFC程序Menu、Toolbar字體偏小解決辦法

          首先,這是一個(gè)MFC的Bug
          http://connect.microsoft.com/VisualStudio/feedback/details/505466/mfc-visual-style-font-size-too-small-to-display-chinese-character-clearly-on-windows-xp

          解決時(shí)間暫時(shí)還不確定,臨時(shí)的方案如下:
          App在InitInstance中加入:

          LOGFONT logfont = {0};
          :: SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &logfont, 0);
          afxGlobalData.SetMenuFont(&logfont,true);

          注釋:

          字體的設(shè)置保存在一個(gè)全局變量afxGlobalData中,此變量定義AfxGlobals.h中。
          AFX_GLOBAL_DATA中有一個(gè)SetMenuFont可以設(shè)定字體屬性,影響Menu、Toolbar、Dock Pane等的caption字體。
          但是這個(gè)設(shè)置對(duì)tooltip無影響,臨時(shí)解決:在上面代碼基礎(chǔ)上在加入

          if(afxGlobalData.fontTooltip.GetSafeHandle() != NULL)
           {
            ::DeleteObject(afxGlobalData.fontTooltip.Detach());
           }
           afxGlobalData.fontTooltip.CreateFontIndirect(&logfont);

          posted @ 2010-06-09 08:49 春天花會(huì)開 閱讀(2415) | 評(píng)論 (2)編輯 收藏

          DC/DC的工作原理!

          根據(jù)調(diào)整管的工作狀態(tài),我們常把穩(wěn)壓電源分成兩類:線性穩(wěn)壓電源開關(guān)穩(wěn)壓電源

             

              線性穩(wěn)壓電源,是指調(diào)整管工作在線性狀態(tài)下的穩(wěn)壓電源。而在開關(guān)電源中則不一樣,開關(guān)管(在開關(guān)電源中,我們一般把調(diào)整管叫做開關(guān)管)是工作在開、關(guān)兩種狀態(tài)下的:開——電阻很小;關(guān)——電阻很大

               開關(guān)電源是一種比較新型的電源。它具有效率高,重量輕,可升、降壓,輸出功率大等優(yōu)點(diǎn)。但是由于電路工作在開關(guān)狀態(tài),所以噪聲比較大 通過下圖,我們來簡(jiǎn)單的說說降壓型開關(guān)電源的工作原理。如圖所示,電路由開關(guān)K(實(shí)際電路中為三極管或者場(chǎng)效應(yīng)管),續(xù)流二極管D儲(chǔ)能電感L濾波電容C等構(gòu)成。當(dāng)開關(guān)閉合時(shí),電源通過開關(guān)K、電感L負(fù)載供電,并將部分電能儲(chǔ)存在電感L以及電容C中。由于電感L的自感,在開關(guān)接通后,電流增大得比較緩慢,即輸出不能立刻達(dá)到電源電壓值。一定時(shí)間后,開關(guān)斷開,由于電感L的自感作用(可以比較形象的認(rèn)為電感中的電流有慣性作用),將保持電路中的電流不變,即從左往右繼續(xù)流。這電流流過負(fù)載,從地線返回,流到續(xù)流二極管D的正極,經(jīng)過二極管D返回電感L的左端,從而形成了一個(gè)回路。通過控制開關(guān)閉合跟斷開的時(shí)間(PWM——脈沖寬度調(diào)制),就可以控制輸出電壓。如果通過檢測(cè)輸出電壓來控制開、關(guān)的時(shí)間,以保持輸出電壓不變,這就實(shí)現(xiàn)了穩(wěn)壓的目的。

           

           500)this.width=500" border="0">

          在開關(guān)閉合期間,電感存儲(chǔ)能量;在開關(guān)斷開期間,電感釋放能量,所以電感L叫做儲(chǔ)能電感。二極管D在開關(guān)斷開期間,負(fù)責(zé)給電感L提供電流通路,所以二極管D叫做續(xù)流二極管

           

           在實(shí)際的開關(guān)電源中,開關(guān)K由三極管或場(chǎng)效應(yīng)管代替。當(dāng)開關(guān)斷開時(shí),電流很小;當(dāng)開關(guān)閉合時(shí),電壓很小,所以發(fā)熱功率U×I就會(huì)很小。這就是開關(guān)電源效率高的原因。

           

          看過完兩個(gè)關(guān)于電源的FAQ后,大家可能對(duì)電源的效率計(jì)算還不了解。在后面的FAQ中,我們將專門給大家介紹。

          摘自網(wǎng)絡(luò).

          posted @ 2009-07-13 14:42 春天花會(huì)開 閱讀(395) | 評(píng)論 (0)編輯 收藏

          MySQL 備份和恢復(fù)

          http://imysql.cn/mysql_backup_and_recover


          作/譯者:葉金榮,來源:http://imysql.cn,轉(zhuǎn)載請(qǐng)注明作/譯者和出處,并且不能用于商業(yè)用途,違者必究。

          日期:2006/10/01

          本文討論 MySQL 的備份和恢復(fù)機(jī)制,以及如何維護(hù)數(shù)據(jù)表,包括最主要的兩種表類型:MyISAMInnodb,文中設(shè)計(jì)的 MySQL 版本為 5.0.22。

          目前 MySQL 支持的免費(fèi)備份工具有:mysqldump、mysqlhotcopy,還可以用 SQL 語法進(jìn)行備份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者備份二進(jìn)制日志(binlog),還可以是直接拷貝數(shù)據(jù)文件和相關(guān)的配置文件。MyISAM 表是保存成文件的形式,因此相對(duì)比較容易備份,上面提到的幾種方法都可以使用。Innodb 所有的表都保存在同一個(gè)數(shù)據(jù)文件 ibdata1 中(也可能是多個(gè)文件,或者是獨(dú)立的表空間文件),相對(duì)來說比較不好備份,免費(fèi)的方案可以是拷貝數(shù)據(jù)文件備份 binlog,或者用 mysqldump

          1、mysqldump

          1.1 備份

          mysqldump 是采用SQL級(jí)別的備份機(jī)制,它將數(shù)據(jù)表導(dǎo)成 SQL 腳本文件,在不同的 MySQL 版本之間升級(jí)時(shí)相對(duì)比較合適,這也是最常用的備份方法。
          現(xiàn)在來講一下 mysqldump 的一些主要參數(shù):

          • --compatible=name

            它告訴 mysqldump,導(dǎo)出的數(shù)據(jù)將和哪種數(shù)據(jù)庫或哪個(gè)舊版本的 MySQL 服務(wù)器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個(gè)值,用逗號(hào)將它們隔開。當(dāng)然了,它并不保證能完全兼容,而是盡量兼容。

          • --complete-insert,-c

            導(dǎo)出的數(shù)據(jù)采用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會(huì)受到 max_allowed_packet 參數(shù)的影響而導(dǎo)致插入失敗。因此,需要謹(jǐn)慎使用該參數(shù),至少我不推薦。

          • --default-character-set=charset

            指定導(dǎo)出數(shù)據(jù)時(shí)采用何種字符集,如果數(shù)據(jù)表不是采用默認(rèn)的 latin1 字符集的話,那么導(dǎo)出時(shí)必須指定該選項(xiàng),否則再次導(dǎo)入數(shù)據(jù)后將產(chǎn)生亂碼問題。

          • --disable-keys

            告訴 mysqldumpINSERT 語句的開頭和結(jié)尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */;/*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因?yàn)樗窃诓迦胪晁袛?shù)據(jù)后才重建索引的。該選項(xiàng)只適合 MyISAM 表。

          • --extended-insert = true|false

            默認(rèn)情況下,mysqldump 開啟 --complete-insert 模式,因此不想用它的的話,就使用本選項(xiàng),設(shè)定它的值為 false 即可。

          • --hex-blob

            使用十六進(jìn)制格式導(dǎo)出二進(jìn)制字符串字段。如果有二進(jìn)制數(shù)據(jù)就必須使用本選項(xiàng)。影響到的字段類型有 BINARY、VARBINARY、BLOB

          • --lock-all-tables,-x

            在開始導(dǎo)出之前,提交請(qǐng)求鎖定所有數(shù)據(jù)庫中的所有表,以保證數(shù)據(jù)的一致性。這是一個(gè)全局讀鎖,并且自動(dòng)關(guān)閉 --single-transaction--lock-tables 選項(xiàng)。

          • --lock-tables

            它和 --lock-all-tables 類似,不過是鎖定當(dāng)前導(dǎo)出的數(shù)據(jù)表,而不是一下子鎖定全部庫下的表。本選項(xiàng)只適用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 選項(xiàng)。

          • --no-create-info,-t

            只導(dǎo)出數(shù)據(jù),而不添加 CREATE TABLE 語句。

          • --no-data,-d

            不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)。

          • --opt

            這只是一個(gè)快捷選項(xiàng),等同于同時(shí)添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 選項(xiàng)。本選項(xiàng)能讓 mysqldump 很快的導(dǎo)出數(shù)據(jù),并且導(dǎo)出的數(shù)據(jù)能很快導(dǎo)回。該選項(xiàng)默認(rèn)開啟,但可以用 --skip-opt 禁用。注意,如果運(yùn)行 mysqldump 沒有指定 --quick--opt 選項(xiàng),則會(huì)將整個(gè)結(jié)果集放在內(nèi)存中。如果導(dǎo)出大數(shù)據(jù)庫的話可能會(huì)出現(xiàn)問題。

          • --quick,-q

            該選項(xiàng)在導(dǎo)出大表時(shí)很有用,它強(qiáng)制 mysqldump 從服務(wù)器查詢?nèi)〉糜涗浿苯虞敵龆皇侨〉盟杏涗浐髮⑺鼈兙彺娴絻?nèi)存中。

          • --routines,-R

            導(dǎo)出存儲(chǔ)過程以及自定義函數(shù)。

          • --single-transaction

            該選項(xiàng)在導(dǎo)出數(shù)據(jù)之前提交一個(gè) BEGIN SQL語句,BEGIN 不會(huì)阻塞任何應(yīng)用程序且能保證導(dǎo)出時(shí)數(shù)據(jù)庫的一致性狀態(tài)。它只適用于事務(wù)表,例如 InnoDBBDB
            本選項(xiàng)和 --lock-tables 選項(xiàng)是互斥的,因?yàn)?LOCK TABLES 會(huì)使任何掛起的事務(wù)隱含提交。
            要想導(dǎo)出大表的話,應(yīng)結(jié)合使用 --quick 選項(xiàng)。

          • --triggers

            同時(shí)導(dǎo)出觸發(fā)器。該選項(xiàng)默認(rèn)啟用,用 --skip-triggers 禁用它。

          其他參數(shù)詳情請(qǐng)參考手冊(cè),我通常使用以下 SQL 來備份 MyISAM 表:

          /usr/local/mysql/bin/mysqldump -uyejr -pyejr \
          --default-character-set=utf8 --opt --extended-insert=false \
          --triggers -R --hex-blob -x db_name > db_name.sql
          

          使用以下 SQL 來備份 Innodb 表:

          /usr/local/mysql/bin/mysqldump -uyejr -pyejr \
          --default-character-set=utf8 --opt --extended-insert=false \
          --triggers -R --hex-blob --single-transaction db_name > db_name.sql
          

          另外,如果想要實(shí)現(xiàn)在線備份,還可以使用 --master-data 參數(shù)來實(shí)現(xiàn),如下:

          /usr/local/mysql/bin/mysqldump -uyejr -pyejr \
          --default-character-set=utf8 --opt --master-data=1 \
          --single-transaction --flush-logs db_name > db_name.sql
          

          它只是在一開始的瞬間請(qǐng)求鎖表,然后就刷新binlog了,而后在導(dǎo)出的文件中加入CHANGE MASTER 語句來指定當(dāng)前備份的binlog位置,如果要把這個(gè)文件恢復(fù)到slave里去,就可以采用這種方法來做。

          1.2 還原

          mysqldump 備份出來的文件是一個(gè)可以直接倒入的 SQL 腳本,有兩種方法可以將數(shù)據(jù)導(dǎo)入。

          • 直接用 mysql 客戶端

            例如:

            /usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
                

             

          • 用 SOURCE 語法

            其實(shí)這不是標(biāo)準(zhǔn)的 SQL 語法,而是 mysql 客戶端提供的功能,例如:

            SOURCE /tmp/db_name.sql;
                

            這里需要指定文件的絕對(duì)路徑,并且必須是 mysqld 運(yùn)行用戶(例如 nobody)有權(quán)限讀取的文件。

          2、 mysqlhotcopy

          2.1 備份

          mysqlhotcopy 是一個(gè) PERL 程序,最初由Tim Bunce編寫。它使用 LOCK TABLES、FLUSH TABLEScpscp 來快速備份數(shù)據(jù)庫。它是備份數(shù)據(jù)庫或單個(gè)表的最快的途徑,但它只能運(yùn)行在數(shù)據(jù)庫文件(包括數(shù)據(jù)表定義文件、數(shù)據(jù)文件、索引文件)所在的機(jī)器上。mysqlhotcopy 只能用于備份 MyISAM,并且只能運(yùn)行在 類UnixNetWare 系統(tǒng)上。

          mysqlhotcopy 支持一次性拷貝多個(gè)數(shù)據(jù)庫,同時(shí)還支持正則表達(dá)。以下是幾個(gè)例子:

          root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr \
          db_name /tmp (把數(shù)據(jù)庫目錄 db_name 拷貝到 /tmp 下)
          root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr \
          db_name_1 ... db_name_n /tmp
          root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr \
          db_name./regex/ /tmp
          

          更詳細(xì)的使用方法請(qǐng)查看手冊(cè),或者調(diào)用下面的命令來查看 mysqlhotcopy 的幫助:

          perldoc /usr/local/mysql/bin/mysqlhotcopy
          

          注意,想要使用 mysqlhotcopy,必須要有 SELECT、RELOAD(要執(zhí)行 FLUSH TABLES) 權(quán)限,并且還必須要能夠有讀取 datadir/db_name 目錄的權(quán)限。

          2.2 還原

          mysqlhotcopy 備份出來的是整個(gè)數(shù)據(jù)庫目錄,使用時(shí)可以直接拷貝到 mysqld 指定的 datadir (在這里是 /usr/local/mysql/data/)目錄下即可,同時(shí)要注意權(quán)限的問題,如下例:

          root#cp -rf db_name /usr/local/mysql/data/
          root#chown -R nobody:nobody /usr/local/mysql/data/ (將 db_name 目錄的屬主改成 mysqld 運(yùn)行用戶)
          

           

          3、 SQL 語法備份

          3.1 備份

          BACKUP TABLE 語法其實(shí)和 mysqlhotcopy 的工作原理差不多,都是鎖表,然后拷貝數(shù)據(jù)文件。它能實(shí)現(xiàn)在線備份,但是效果不理想,因此不推薦使用。它只拷貝表結(jié)構(gòu)文件和數(shù)據(jù)文件,不同時(shí)拷貝索引文件,因此恢復(fù)時(shí)比較慢。
          例子:

          BACK TABLE tbl_name TO '/tmp/db_name/';
          

          注意,必須要有 FILE 權(quán)限才能執(zhí)行本SQL,并且目錄 /tmp/db_name/ 必須能被 mysqld 用戶可寫,導(dǎo)出的文件不能覆蓋已經(jīng)存在的文件,以避免安全問題。

          SELECT INTO OUTFILE 則是把數(shù)據(jù)導(dǎo)出來成為普通的文本文件,可以自定義字段間隔的方式,方便處理這些數(shù)據(jù)。
          例子:

          SELECT * INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name;
          

          注意,必須要有 FILE 權(quán)限才能執(zhí)行本SQL,并且文件 /tmp/db_name/tbl_name.txt 必須能被 mysqld 用戶可寫,導(dǎo)出的文件不能覆蓋已經(jīng)存在的文件,以避免安全問題。

          3.2 恢復(fù)

          BACKUP TABLE 方法備份出來的文件,可以運(yùn)行 RESTORE TABLE 語句來恢復(fù)數(shù)據(jù)表。
          例子:

          RESTORE TABLE FROM '/tmp/db_name/';
          

          權(quán)限要求類似上面所述。

          SELECT INTO OUTFILE 方法備份出來的文件,可以運(yùn)行 LOAD DATA INFILE 語句來恢復(fù)數(shù)據(jù)表。
          例子:

          LOAD DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name;
          

          權(quán)限要求類似上面所述。倒入數(shù)據(jù)之前,數(shù)據(jù)表要已經(jīng)存在才行。如果擔(dān)心數(shù)據(jù)會(huì)發(fā)生重復(fù),可以增加 REPLACE 關(guān)鍵字來替換已有記錄或者用 IGNORE 關(guān)鍵字來忽略他們。

          4、 啟用二進(jìn)制日志(binlog)

          采用 binlog 的方法相對(duì)來說更靈活,省心省力,而且還可以支持增量備份。

          啟用 binlog 時(shí)必須要重啟 mysqld。首先,關(guān)閉 mysqld,打開 my.cnf,加入以下幾行:

          server-id	= 1
          log-bin		= binlog
          log-bin-index	= binlog.index
          

          然后啟動(dòng) mysqld 就可以了。運(yùn)行過程中會(huì)產(chǎn)生 binlog.000001 以及 binlog.index,前面的文件是 mysqld 記錄所有對(duì)數(shù)據(jù)的更新操作,后面的文件則是所有 binlog 的索引,都不能輕易刪除。關(guān)于 binlog 的信息請(qǐng)查看手冊(cè)。

          需要備份時(shí),可以先執(zhí)行一下 SQL 語句,讓 mysqld 終止對(duì)當(dāng)前 binlog 的寫入,就可以把文件直接備份,這樣的話就能達(dá)到增量備份的目的了:

          FLUSH LOGS;

          如果是備份復(fù)制系統(tǒng)中的從服務(wù)器,還應(yīng)該備份 master.inforelay-log.info 文件。

          備份出來的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 來查看,如:

          /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001
          

          該工具允許你顯示指定的數(shù)據(jù)庫下的所有 SQL 語句,并且還可以限定時(shí)間范圍,相當(dāng)?shù)姆奖悖敿?xì)的請(qǐng)查看手冊(cè)。

          恢復(fù)時(shí),可以采用類似以下語句來做到:

          /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name
          

          mysqlbinlog 輸出的 SQL 語句直接作為輸入來執(zhí)行它。

          如果你有空閑的機(jī)器,不妨采用這種方式來備份。由于作為 slave 的機(jī)器性能要求相對(duì)不是那么高,因此成本低,用低成本就能實(shí)現(xiàn)增量備份而且還能分擔(dān)一部分?jǐn)?shù)據(jù)查詢壓力,何樂而不為呢?

          5、 直接備份數(shù)據(jù)文件

          相較前幾種方法,備份數(shù)據(jù)文件最為直接、快速、方便,缺點(diǎn)是基本上不能實(shí)現(xiàn)增量備份。為了保證數(shù)據(jù)的一致性,需要在靠背文件前,執(zhí)行以下 SQL 語句:

          FLUSH TABLES WITH READ LOCK;

          也就是把內(nèi)存中的數(shù)據(jù)都刷新到磁盤中,同時(shí)鎖定數(shù)據(jù)表,以保證拷貝過程中不會(huì)有新的數(shù)據(jù)寫入。這種方法備份出來的數(shù)據(jù)恢復(fù)也很簡(jiǎn)單,直接拷貝回原來的數(shù)據(jù)庫目錄下即可。

          注意,對(duì)于 Innodb 類型表來說,還需要備份其日志文件,即 ib_logfile* 文件。因?yàn)楫?dāng) Innodb 表損壞時(shí),就可以依靠這些日志文件來恢復(fù)。

          6、 備份策略

          對(duì)于中等級(jí)別業(yè)務(wù)量的系統(tǒng)來說,備份策略可以這么定:第一次全量備份,每天一次增量備份,每周再做一次全量備份,如此一直重復(fù)。而對(duì)于重要的且繁忙的系統(tǒng)來說,則可能需要每天一次全量備份,每小時(shí)一次增量備份,甚至更頻繁。為了不影響線上業(yè)務(wù),實(shí)現(xiàn)在線備份,并且能增量備份,最好的辦法就是采用主從復(fù)制機(jī)制(replication),在 slave 機(jī)器上做備份。

          7、 數(shù)據(jù)維護(hù)和災(zāi)難恢復(fù)

          作為一名DBA(我目前還不是,呵呵),最重要的工作內(nèi)容之一是保證數(shù)據(jù)表能安全、穩(wěn)定、高速使用。因此,需要定期維護(hù)你的數(shù)據(jù)表。以下 SQL 語句就很有用:

          CHECK TABLE 或 REPAIR TABLE,檢查或維護(hù) MyISAM 表
          OPTIMIZE TABLE,優(yōu)化 MyISAM 表
          ANALYZE TABLE,分析 MyISAM 表
          

          當(dāng)然了,上面這些命令起始都可以通過工具 myisamchk 來完成,在這里不作詳述。

          Innodb 表則可以通過執(zhí)行以下語句來整理碎片,提高索引速度:

          ALTER TABLE tbl_name ENGINE = Innodb;
          

          這其實(shí)是一個(gè) NULL 操作,表面上看什么也不做,實(shí)際上重新整理碎片了。

          通常使用的 MyISAM 表可以用上面提到的恢復(fù)方法來完成。如果是索引壞了,可以用 myisamchk 工具來重建索引。而對(duì)于 Innodb 表來說,就沒這么直接了,因?yàn)樗阉械谋矶急4嬖谝粋€(gè)表空間了。不過 Innodb 有一個(gè)檢查機(jī)制叫 模糊檢查點(diǎn),只要保存了日志文件,就能根據(jù)日志文件來修復(fù)錯(cuò)誤。可以在 my.cnf 文件中,增加以下參數(shù),讓 mysqld 在啟動(dòng)時(shí)自動(dòng)檢查日志文件:

          innodb_force_recovery	= 4
          

          關(guān)于該參數(shù)的信息請(qǐng)查看手冊(cè)。

          8、 總結(jié)

          做好數(shù)據(jù)備份,定只好合適的備份策略,這是一個(gè)DBA所做事情的一小部分,萬事開頭難,就從現(xiàn)在開始吧!

          posted @ 2009-05-16 22:01 春天花會(huì)開 閱讀(146) | 評(píng)論 (1)編輯 收藏

          [轉(zhuǎn)]CListCtrl使用技巧--學(xué)習(xí)用

               摘要: 1. CListCtrl 風(fēng)格
          2. 設(shè)置listctrl 風(fēng)格及擴(kuò)展風(fēng)格
          3. 插入數(shù)據(jù)
          4. 一直選中item
          5. 選中和取消選中一行
          6. 得到listctrl中所有行的checkbox的狀態(tài)
          7. 得到listctrl中所有選中行的序號(hào)
          8. 得到item的信息
          9. 得到listctrl的所有列的header字符串內(nèi)容
          10. 使listctrl中一項(xiàng)可見,即滾動(dòng)滾動(dòng)條
          11. 得到listctrl列數(shù)
          12. 刪除所有列
          13. 得到單擊的listctrl的行列號(hào)
          14. 判斷是否點(diǎn)擊在listctrl的checkbox上
          15. 右鍵點(diǎn)擊listctrl的item彈出菜單
          16. item切換焦點(diǎn)時(shí)(包括用鍵盤和鼠標(biāo)切換item時(shí)),狀態(tài)的一些變化順序
          17. 得到另一個(gè)進(jìn)程里的listctrl控件的item內(nèi)容
          18. 選中l(wèi)istview中的item
          19. 如何在CListView中使用CListCtrl的派生類 閱讀全文

          posted @ 2009-04-30 11:20 春天花會(huì)開| 編輯 收藏

          [轉(zhuǎn)載]MIME郵件的編碼方式

          轉(zhuǎn)自:http://book.csdn.net/bookfiles/402/10040214756.shtml

          MIME郵件的編碼方式

          由于每個(gè)ASCII碼字符只占用一個(gè)字節(jié)(8個(gè)bit位),且最高bit位總為0,即ASCII碼字符中的有真正意義的信息只是后面的7個(gè)低bit位,而傳統(tǒng)的SMTP協(xié)議又是基于ASCII碼字符設(shè)計(jì)的,因此,一些基于傳統(tǒng)SMTP協(xié)議設(shè)計(jì)的SMTP服務(wù)器在處理郵件內(nèi)容時(shí)只取出每個(gè)字節(jié)中的7個(gè)低bit位進(jìn)行處理,而將最高bit位忽略不計(jì)。顯然,這樣的SMTP服務(wù)器在處理包含有非ASCII碼字符的郵件內(nèi)容時(shí),會(huì)出現(xiàn)嚴(yán)重的問題,這就限制了郵件中只能出現(xiàn)英文的ASCII碼字符,而不能出現(xiàn)中文字符或二進(jìn)制數(shù)據(jù)。

          為了能夠在郵件內(nèi)容中包含中文、圖像或聲音等非ASCII字符的數(shù)據(jù),人們想到了采用某種編碼方式將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成可打印的ASCII字符后再發(fā)送,郵件閱讀程序則按照相應(yīng)的解碼方式從郵件中還原出原始數(shù)據(jù)即可,比較常用的兩種郵件編碼方式為BASE64和Quoted-printable。后來的擴(kuò)展SMTP協(xié)議允許直接在郵件中傳遞二進(jìn)制數(shù)據(jù),而不用對(duì)它們進(jìn)行郵件編碼,人們將這種沒有進(jìn)行郵件編碼的二進(jìn)制數(shù)據(jù)的郵件內(nèi)容稱為8bit編碼,為了與此相區(qū)別,人們將沒有進(jìn)行郵件編碼的純ASCII碼字符的郵件稱為7bit編碼。MIME消息體的郵件編碼方式通過MIME消息頭中的Content- Transfer- Encoding頭字段指定,每種郵件編碼方式的介紹如下:

          —  7Bit

          指消息體內(nèi)容全部是沒有經(jīng)過編碼的ASCII字符。

          —  8Bit

          指消息體內(nèi)容是沒有經(jīng)過編碼的原始數(shù)據(jù),且其中包含有非ASCII字符的數(shù)據(jù)。現(xiàn)在的郵件服務(wù)器基本上都支持8Bit編碼,使用支持8Bit編碼的郵件服務(wù)器可以簡(jiǎn)化郵件的處理過程。

          —  BASE64

          Base64是將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成可打印的ASCII字符的一種最常見的編碼方式,它的基本原理是將一組連續(xù)的字節(jié)數(shù)據(jù)按6個(gè)bit位進(jìn)行分組,然后對(duì)每組數(shù)據(jù)用一個(gè)ASCII字符來表示。6個(gè)bit位最多能表示26=64個(gè)數(shù)值,因此可以使用64個(gè)ASCII字符來對(duì)應(yīng)這64個(gè)數(shù)值,這64個(gè)ASCII字符為:

          "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

          其中每個(gè)字符表示的數(shù)值就是該字符在上面的排列中的索引號(hào),索引號(hào)從0開始編號(hào)。假設(shè)在內(nèi)存中有如下三個(gè)連續(xù)的字節(jié)數(shù)據(jù):

          [0110,0001] [0110,0010] [0110,0011]

          將它們按6個(gè)bit位進(jìn)行分組后的形式如下:

          [0110,00] [01,0110,] [0010,01] [10,0011]

          分組后得到了四組數(shù)據(jù),每組數(shù)據(jù)對(duì)應(yīng)的十進(jìn)制數(shù)值分別為24、22、9、35,它們分別對(duì)應(yīng)Y、W、J、j這四個(gè)字符,所以,對(duì)[0110,0001] [0110,0010] [0110,0011]這三個(gè)字節(jié)的數(shù)據(jù)進(jìn)行BASE64編碼后的結(jié)果是“YWJj”。

          BASE64編碼要求把3個(gè)8位字節(jié)(即24個(gè)bit)的數(shù)據(jù)轉(zhuǎn)化為4個(gè)6位字節(jié)(也是24個(gè)bit)的數(shù)據(jù),如果原來的8位字節(jié)數(shù)據(jù)的字節(jié)個(gè)數(shù)不能被3整除,其余數(shù)只能是1或2,那么如何對(duì)余下的1個(gè)或2個(gè)8位字節(jié)數(shù)據(jù)進(jìn)行處理呢?對(duì)于這種情況,仍然按6個(gè)bit位對(duì)剩余的字節(jié)進(jìn)行分組,在最后不夠6個(gè)bit位的內(nèi)容后面添加幾個(gè)為0的bit位來湊成6個(gè)bit位,例如,如果最后剩下的一個(gè)8位字節(jié)的內(nèi)容如下:

          [0110,0001]

          對(duì)它進(jìn)行分組后的結(jié)果如下:

          [0110,00] [01,0000]

          其中用黑斜體標(biāo)識(shí)的0為填充的bit位,所以,最后剩下的這個(gè)字節(jié)的BASE64編碼結(jié)果為“YQ”。BASE64編碼還有規(guī)定,如果編碼后的整個(gè)結(jié)果文本的字符個(gè)數(shù)不是4的整數(shù)倍,那么需要在最后填充“=”字符來湊成4的倍數(shù),所以,在最后這個(gè)字節(jié)編碼的結(jié)果后面還要添加兩個(gè)“=”字符,即“YQ==”。顯然,如果最后剩下兩個(gè)8位字節(jié)的內(nèi)容,它可以被編碼成三個(gè)字符,最后還需要添加一個(gè)“=”字符。對(duì)一大段數(shù)據(jù)進(jìn)行BASE64編碼時(shí),可以在編碼結(jié)果中的適當(dāng)位置加入回車換行,MIME規(guī)范建議BASE64編碼結(jié)果中的每行最多76個(gè)字符。

          —  Quoted-printable

          Quoted-printable也是一種將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成可打印的ASCII字符的編碼方式,它對(duì)ASCII字符不進(jìn)行轉(zhuǎn)換,只對(duì)非ASCII字符的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)化。每個(gè)非ASCII字符的字節(jié)數(shù)據(jù),都被轉(zhuǎn)換成一個(gè)"="號(hào)后跟這個(gè)字節(jié)的十六進(jìn)制數(shù)據(jù),例如,“ab中國”的Quoted-printable編碼結(jié)果為“ab=d6=d0=b9= fa”。顯然,由于"="號(hào)在Quoted-printable編碼中具有的特殊意義,所以,原始數(shù)據(jù)中的"="號(hào)字符也需要進(jìn)行編碼轉(zhuǎn)換,用“=3d”表示。

          對(duì)一大段數(shù)據(jù)進(jìn)行Quoted-printable編碼時(shí),可以在編碼結(jié)果中的適當(dāng)位置加入回車換行,在回車換行前需要額外再加入一個(gè)“=”字符,以表示后面的換行是因編碼而造成的軟回車,而非原始數(shù)據(jù)中原有的回車換行。例如,對(duì)于下面一段Quoted-printable編碼后的數(shù)據(jù):

          =D5=E2=CA=C7=CD=A8=D0=C5=B5=C4=B3=CC=D0=

          =F2, =C7=EB=D6=B8=BD=CC!

          在第一行末尾的“=”字符和換行,都是由于編碼后生成的。

          posted @ 2008-07-31 10:52 春天花會(huì)開 閱讀(2663) | 評(píng)論 (0)編輯 收藏

          幾個(gè)MIME相關(guān)有用資源

          記錄幾個(gè)MIME相關(guān)有用資源,以備后用:
          http://www.mhonarc.org/~ehood/MIME/
          http://www.cppblog.com/javenstudio
          《javamail開發(fā)詳解》試讀
          MIME面面觀

          posted @ 2008-07-31 09:20 春天花會(huì)開 閱讀(154) | 評(píng)論 (0)編輯 收藏

          微軟副總裁張亞勤:用人

            Q:在你的用人之道里,你比較看重的是什么?

            A:誠信永遠(yuǎn)是第一位的,然后是智慧、熱情和團(tuán)隊(duì)精神。我認(rèn)為人的素質(zhì)有先天和后天兩個(gè)方面。我把前者定義為IQ’,IQ’由原始智商加冒險(xiǎn)精神組成。一個(gè)人有沒有冒險(xiǎn)精神,敢不敢賭一把,敢不敢承擔(dān)風(fēng)險(xiǎn),這些都是先天的成分,不容易改變。先天的素質(zhì)有點(diǎn)像操作系統(tǒng),預(yù)裝了就很難動(dòng)了。而后天的素質(zhì)我定義為EQ’,這是可以改變的,相當(dāng)于應(yīng)用軟件和用戶界面。

            過去由于工作關(guān)系,我跟全球最頂尖的500個(gè)公司的CEO有不同程度接觸,發(fā)現(xiàn)他們很不一樣,有的人熱情、奔放,有的人內(nèi)斂,甚至有點(diǎn)害羞,有的人口才很好,有的人結(jié)巴。但這些領(lǐng)袖有一些共性,第一是簡(jiǎn)化抽象問題的能力;第二是信心,這是后天培養(yǎng)的,如果你看這些人的眼睛,都透著自信,盡管他們可能說話很溫和,聲調(diào)不高,語言不一定優(yōu)美,但是他們總是有信念的;第三是判斷力,這完全可以通過后天學(xué)習(xí)培養(yǎng),好的領(lǐng)導(dǎo)者很重要的能力在于判斷,特別是沒有充分的數(shù)據(jù)情況下,可以及時(shí)作出決定的能力。其實(shí)在管理一個(gè)大公司時(shí),缺的不是聰明的人,重要的是用什么樣的人;缺的不是想法,有的時(shí)候有太多的想法,重要的是選擇哪個(gè)想法,什么時(shí)候做判斷,做什么樣的判斷。另外一點(diǎn)是心態(tài)很重要,所有的優(yōu)秀領(lǐng)袖都很堅(jiān)韌,他們每個(gè)人都不是一帆風(fēng)順的,既有輝煌也有失落,但他們?cè)谑鋾r(shí)也可以保持平和的心態(tài),與外界表現(xiàn)出一種和諧。這在談判、研發(fā)時(shí)都很重要。

            Q:你不能容忍的品質(zhì)是什么?

            A:有三種人我不能容忍。一種是雙面人,其中包括兩面三刀的和老好人。后者為了不得罪人,見不同人會(huì)說不同話,其實(shí)這樣的人沒有壞的動(dòng)機(jī),但是會(huì)弱化大家的判斷力,而且大家對(duì)后者沒有防備。

            第二種是負(fù)面人,對(duì)任何事情都不同意,其實(shí)這樣的人自己也不一定有觀點(diǎn)。人們可以有不同意的觀點(diǎn),但一定要有建設(shè)性,以正面的方式提出來。這種人是具有傳染性的,一定要清除。

            第三種是玩世不恭的人,他們對(duì)任何事情無所謂。

            這三種人能給機(jī)會(huì)可以盡量給機(jī)會(huì),否則一定要清除。領(lǐng)導(dǎo)最重要的是找到對(duì)的人,但同樣重要的是,能夠清除不合適的人。


          張亞勤個(gè)人檔案
            1966年出生于山西太原,12歲考入中國科技大學(xué)少年班,23歲獲得美國喬治·華盛頓大學(xué)電氣工程博士學(xué)位。

            1999年回國參與創(chuàng)辦微軟亞洲研究院;2004年赴微軟總部負(fù)責(zé)移動(dòng)通信及嵌入式系統(tǒng)設(shè)備部門的軟件研發(fā);2006年再次回國出任微軟中國研發(fā)集團(tuán)總裁。

            加盟微軟之前,先后在美國 Sarnoff 公司任多媒體實(shí)驗(yàn)室總監(jiān),以及美國GTE 實(shí)驗(yàn)室任高級(jí)研究員。

          posted @ 2007-03-15 11:49 春天花會(huì)開 閱讀(357) | 評(píng)論 (0)編輯 收藏

          漢字簡(jiǎn)介

          漢字是漢語書寫的最基本單元,其使用最晚始于商代,歷經(jīng)甲骨文、大篆、小篆、隸書、楷書(草書、行書)諸般書體變化。秦始皇統(tǒng)一中國,李斯整理小篆,“書同文”的歷史從此開始。盡管漢語方言發(fā)音差異很大,但是書寫系統(tǒng)的統(tǒng)一減少了方言差異造成的交流障礙。

            東漢許慎在《說文解字》中將漢字構(gòu)造規(guī)律概括為“六書”:象形、指事、會(huì)意、形聲、轉(zhuǎn)注、假借。其中,象形、指事、會(huì)意、形聲四項(xiàng)為造字原理,是“造字法”;而轉(zhuǎn)注、假借則為用字規(guī)律,是“用字法”。

            三千余年來,漢字的書寫方式變化不大,使得后人得以閱讀古文而不生窒礙。但近代西方文明進(jìn)入東亞之后,整個(gè)漢字文化圈的各個(gè)國家紛紛掀起了學(xué)習(xí)西方的思潮,其中,放棄使用漢字是這場(chǎng)運(yùn)動(dòng)的一個(gè)重要方面。這些運(yùn)動(dòng)的立論以為:跟西方拼音文字相比,漢字是繁瑣笨拙的。許多使用漢字國家即進(jìn)行了不同程度的漢字簡(jiǎn)化,甚至還有完全拼音化的嘗試。日文假名的拉丁轉(zhuǎn)寫方案以及漢語多種拼音方案的出現(xiàn)都是基于這種思想。中國大陸將漢字筆劃參考行書草書加以省簡(jiǎn),于1956年1月28日審訂通過《簡(jiǎn)化字總表》,在中國及新加坡使用至今。臺(tái)灣則一直使用繁體中文。

            目前在使用漢語的地區(qū),大都使用兩種規(guī)范漢字,分別是繁體中文(繁體字)和簡(jiǎn)體中文(簡(jiǎn)體字)。


            漢字,是記錄漢語的文字系統(tǒng),并仍然或曾經(jīng)在日語和朝鮮語、越南語中使用。漢字是世界上最古老的文字之一,擁有4500年以上的歷史。狹義地說,它是漢族的文字;廣義地言,它是漢字文化圈共同的文字。

            漢字是承載文化的重要工具,目前留有大量用漢字書寫的典籍。不同的方言都使用漢字作為共同書寫體系,因而漢字在歷史上對(duì)中華文明的傳播起到了重要作用,并成為東南亞文化圈形成的內(nèi)在紐帶。在漢字發(fā)展過程中,留下了大量詩詞、對(duì)聯(lián)等文化,并形成了獨(dú)特的漢字書法藝術(shù)。

            一個(gè)漢字一般具有多種含義,也具有很強(qiáng)的組詞能力,且很多漢字可獨(dú)立成詞。這導(dǎo)致了漢字極高的“使用效率”,2000左右常用字即可覆蓋98%以上的書面表達(dá)方式。加之漢字表意文字的特性,漢字的閱讀效率很高。漢字具備比字母文字更高的信息密度,因此,平均起來,同樣內(nèi)容的中文表達(dá)比其他任何字母語言的文字都短。

            目前的漢字體系分為繁體字和簡(jiǎn)體字,前者用于臺(tái)灣、香港、澳門和北美的華人圈中,后者用于中國大陸和新加坡以及東南亞的華人社區(qū)。通常說來,兩種漢字書寫系統(tǒng)雖然有差異,常用漢字的個(gè)體差異不到25%。

            由于漢字書寫復(fù)雜,“漢字落后論”的說法存在了很長(zhǎng)時(shí)間,認(rèn)為漢字是教育及信息化瓶頸,并有“漢字拉丁化”甚至廢除漢字的推動(dòng)行為。現(xiàn)在一般認(rèn)為漢字也有突出優(yōu)點(diǎn),初始學(xué)習(xí)難度雖大,但掌握常用字后不存在類似海量英文單詞的繼續(xù)學(xué)習(xí)問題,且其表意特性也能充分調(diào)動(dòng)人腦的學(xué)習(xí)能力。在計(jì)算機(jī)輸入問題基本解決后,“漢字落后論”及“漢字拉丁化”已實(shí)際上逐漸被大多數(shù)人拋棄。

            目前漢字系統(tǒng)已經(jīng)基本穩(wěn)定,但漢字的規(guī)范化、生僻字的自然消亡仍在繼續(xù)進(jìn)行。

            關(guān)于漢字編碼

            為進(jìn)行信息交換,各漢字使用地區(qū)都制訂了一系列漢字字符集標(biāo)準(zhǔn)。

            ① GB2313字符集,收入漢字6763個(gè),符號(hào)715個(gè),總計(jì)7478個(gè)字符,這是大陸普遍使用的簡(jiǎn)體字符集。楷體-GB2313、仿宋-GB2313、華文行楷等市面上絕大多數(shù)字體支持顯示這個(gè)字符集,亦是大多數(shù)輸入法所采用的字符集。市面上絕大多數(shù)所謂的繁體字體,其實(shí)采用的是GB-2313字符集簡(jiǎn)體字的編碼,用字體顯示為繁體字,而不是直接用GBK字符集中繁體字的編碼,錯(cuò)誤百出。

            ② BIG-5字符集,收入13060個(gè)繁體漢字,808個(gè)符號(hào),總計(jì)13868個(gè)字符,目前普遍使用于臺(tái)灣、香港等地區(qū)。臺(tái)灣教育部標(biāo)準(zhǔn)宋體楷體等港臺(tái)大多數(shù)字體支持這個(gè)字符集的顯示。

            ③ GBK字符集,又稱大字符集(GB=GuóBiāo國標(biāo),K=擴(kuò)展),包含以上兩種字符集漢字,收入21003個(gè)漢字,882個(gè)符號(hào),共計(jì)21885個(gè)字符,包括了中日韓(CJK)統(tǒng)一漢字20902個(gè)、擴(kuò)展A集(CJK Ext-A) 中的漢字52個(gè)。Windows 95\98簡(jiǎn)體中文版就帶有這個(gè)GBK.txt文件。宋體、隸書、黑體、幼圓、華文中宋、華文細(xì)黑、華文楷體、標(biāo)楷體(DFKai-SB)、Arial Unicode MS、MingLiU、PMingLiU等字體支持顯示這個(gè)字符集。微軟拼音輸入法2003、全拼、紫光拼音等輸入法,能夠錄入如镕镕炁夬喆嚞姤赟赟龑昳堃慜靕臹等GBK簡(jiǎn)繁體漢字。

            BIG-5 (繁體中文)與GB-2313 (簡(jiǎn)體中文),編碼不相兼容,字符在不同的操作系統(tǒng)中便產(chǎn)生亂碼。文本文字的簡(jiǎn)體與繁體(文字及編碼)之間的轉(zhuǎn)換,可用BabelPad、TextPro或Convertz之類的轉(zhuǎn)碼軟件來解決。若是程序,Windows XP操作系統(tǒng),可用Microsoft AppLocale Utility 1.0解決;Windows 2000的操作系統(tǒng),大概只有用:中文之星、四通利方、南極星、金山快譯之類的轉(zhuǎn)碼軟件方能解決了。

            ④ GB18030字符集,包含GBK字符集、CJK Ext-A 全部6582個(gè)漢字,共計(jì)27533個(gè)漢字。宋體-18030、方正楷體(FZKai-Z03)、書同文楷體(MS Song)宋體(ht_cjk+)、香港華康標(biāo)準(zhǔn)宋體(DFSongStd)、華康香港標(biāo)準(zhǔn)楷體、CERG Chinese Font、韓國New Gulim,以及微軟Windows Vista操作系統(tǒng)提供的宋黑楷仿宋等字體亦支持這個(gè)字符集的顯示。Windows 98支持這個(gè)字符集,以下的字符集則不支持。手寫輸入法逍遙筆4.0版支持GB18030字符集及方正超大字符集漢字的錄入。

            ⑤ 方正超大字符集,包含GB18030字符集、CJK Ext-B中的36862個(gè)漢字,共計(jì)64395個(gè)漢字。宋體-方正超大字符集支持這個(gè)字符集的顯示。Microsoft Office XP或2003簡(jiǎn)體中文版就自帶有這個(gè)字體。Windows 2000的操作系統(tǒng)需安裝超大字符集支持包“Surrogate更新”。

            ⑥ ISO/IEC 10646 / Unicode字符集,這是全球可以共享的編碼字符集,兩者相互兼融,涵蓋了世界上主要語文的字符,其中包括簡(jiǎn)繁體漢字,計(jì)有:CJK統(tǒng)一漢字20902個(gè),CJK Ext-A 6582個(gè),Ext-B 42711個(gè),共計(jì)70195個(gè)漢字。SimSun-ExtB(宋體)、MingLiU-ExtB(細(xì)明體)能顯示全部Ext-B漢字。至今尚無單獨(dú)一款字體能夠顯示全部70195個(gè)漢字,但可用海峰五筆、新概念五筆、倉頡輸入法世紀(jì)版、新版的微軟新注音、倉頡輸入法 6.0 版(單碼功能)等輸入法錄入。Ext-C還有2萬多個(gè)漢字。詳情請(qǐng)參閱香港中文大學(xué)網(wǎng)站、馬來西亞倉頡之友網(wǎng)站、福建陳清鈺個(gè)人網(wǎng)站。

            ⑦ 漢字構(gòu)形數(shù)據(jù)庫2.3版,內(nèi)含楷書字形60082個(gè)、小篆11100個(gè)、楚系簡(jiǎn)帛文字2627個(gè)、金文3459個(gè)、甲骨文177個(gè)、異體字12768組。可以安裝該程序,亦可以解壓后使用其中的字體文件,對(duì)于整理某些古代文獻(xiàn)十分有用。

            如果超出了輸入法所支持的字符集,就不能錄入計(jì)算機(jī)。如果沒有相應(yīng)字體的支持,則顯示為黑框、方框或空白。如果操作系統(tǒng)或應(yīng)用軟件不支持該字符集,則顯示為問號(hào)(一個(gè)或兩個(gè))。在網(wǎng)頁上亦存在同樣的情況。

            關(guān)于Unicode

            由于各國國家標(biāo)準(zhǔn)字集所收的漢字字?jǐn)?shù)、常用字的差異,雖然象中國兩岸GB/BIG5字集常用字基本類似,轉(zhuǎn)換后閱讀并不成問題,但是這種編碼轉(zhuǎn)換的混亂關(guān)系,對(duì)文字交流始終是一種障礙。因此相關(guān)國家的標(biāo)準(zhǔn)化組織和文字工作者經(jīng)過共同努力,終于在93年完成了包含中日韓(CJK)漢字的Unicode 漢字標(biāo)準(zhǔn)ISO 10646.1。 Unicode是完全雙字節(jié)表示的多國文字編碼體系,編碼空間0x0000-0xFFFF。 ISO 10646.1漢字標(biāo)準(zhǔn)使用編碼0x4E00-9FA5,共包含20902個(gè)漢字。其中:大陸(S)提出的漢字17124個(gè),臺(tái)灣(T)提出的漢字17258個(gè); S與T的并集,即中國(C)提出的漢字為20158個(gè)。日本(J)提出的漢字為12157個(gè),中國未提出的690個(gè)(Ja); 韓國(K)提出的漢字為7477個(gè),其中中國未提出的90個(gè)(Ka); Ja與Ka并集共744字。 支持Unicode編碼的相關(guān)電腦系統(tǒng)軟件,如Unix, Win95已有推出,但是由于Unicode的ASCII碼是用雙字節(jié)編碼(即一般電腦系統(tǒng)中的單字節(jié)ASCII碼前加 0x00),同時(shí)其漢字編碼與各國的現(xiàn)有編碼也不兼容,造成現(xiàn)有的軟件和數(shù)據(jù)不能直接使用,所以目前完全使用Unicode軟件系統(tǒng)的用戶并不多,大多數(shù)只將它此作為一個(gè)國際語言編碼標(biāo)準(zhǔn)來使用。

          posted @ 2007-01-25 19:59 春天花會(huì)開 閱讀(324) | 評(píng)論 (0)編輯 收藏

          [原創(chuàng)]javascript封裝的Tab類-附源碼

          Web UI中常常用到Tab,每次寫一堆HTML+css有點(diǎn)煩了,于是花了點(diǎn)時(shí)間整理了這個(gè)class,留備后用。
          為了方便我引入了prototype 1.4,省掉一串鍵盤敲擊。
          類比:www.live.com的Tab page
          用法:
          //首先載入: 'tab.js','prototype.js' and 'tab.css' in HTML page
          //? ?mytab1=new Tab('tab1',top,left,width,height);//創(chuàng)建新Tab
          //?? mytab1.addItem(name,contentid,type);//添加TabItem
          //?? mytab1.delItem(name);//刪除TabItem
          //?? 當(dāng)然一般情況下操作鼠標(biāo)即可完成添加/刪去工作.
          //???點(diǎn)擊TabItem時(shí)動(dòng)態(tài)調(diào)用 <li>標(biāo)簽rev屬性指定的方法(要不要ajax就隨你喜歡了)
          例子:

          o_LuTab.png
          <html>
          <head>
          <script src='prototype.js'></script>
          <script src='tab.js'></script>
          <link
          rel=stylesheet type="text/css" href='tab.css'/>
          </head>
          <body>
          <script><!--
          //Test case
          tab1=new Tab("tab1",100,10,600,300);
          tab2=new Tab("tab2",180,60,600,300);
          tab3=new Tab("tab3",260,110,600,300);

          tab1.addItem('hello','id','CONTENT');
          tab1.delItem('t2');
          tab1.addItem();tab1.addItem();

          tab2.addItem('hi','id','CONTENT');
          tab2.addItem();tab2.addItem();

          tab1.display();
          tab2.display();
          tab3.display();

          --></script>
          </body>
          </html>

          下載Tab.rar

          posted @ 2006-10-17 09:16 春天花會(huì)開 閱讀(2188) | 評(píng)論 (3)編輯 收藏

          javascript vml 封裝的3D餅圖

          原型是在網(wǎng)上找的,對(duì)vml我不是很熟悉,基本上是一樣畫葫蘆。
          做的最主要的事情是把vml用javascript封裝成Pie3D類,方便重用。
          Snap1.png

          Pie3D.js代碼太長(zhǎng),我已打包,需要的話自行下載。javascript vml 封裝的3D餅圖

          <html?xmlns:v="urn:schemas-microsoft-com:vml"?xmlns:o="urn:schemas-microsoft-com:office:office">?
          <head>????????
          <!--?樣式表?-->
          <STYLE>
          v\:*?{Behavior:?url(#default#VML)?}
          o\:*?{behavior:?url(#default#VML)?}
          body{font-family:arial}
          </STYLE>
          <title>3D?Pie</title>
          <script?src=Pie3D.js?></script>
          </head>
          <body>
          <div?id='pieChart'></div>
          <script>
          xxColor=new?Array("#ccc","#b5cc88","#6B8E23","#3CB371","#f59d56","yellow","#d8d8d8","#708090","#4682B4","red","#ffc20e");
          //參數(shù)('容器div的id',寬度,高度,'圖表標(biāo)題')
          var
          ?pie=new?Pie3D('pieChart',320,192,'TEST?3D?PIE');
          //測(cè)試數(shù)據(jù),數(shù)據(jù)格式("項(xiàng)目名稱",值,"顏色")
          //此處可結(jié)合Ajax,取得數(shù)據(jù)后動(dòng)態(tài)更新

          for(var?i=0;i<10;i++){
          dcake=new?Array("cake"+i,Math.random()*10,xxColor[i]);
          pie.Cakes[i]=dcake;
          //賦值
          }

          pie.draw();//畫圖
          </script>
          </body></html>

          posted @ 2006-08-18 15:40 春天花會(huì)開 閱讀(5205) | 評(píng)論 (11)編輯 收藏

          Virtual Fab(虛擬工廠)

          posted @ 2006-08-15 12:07 春天花會(huì)開 閱讀(553) | 評(píng)論 (0)編輯 收藏

          LuEmail 客戶端+服務(wù)器代碼全部開放

          因?yàn)闀r(shí)間的原因我無法再花大量的精力在LuEmail的后續(xù)開發(fā)上,所以決定把客戶端+服務(wù)器代碼全部開放,希望有興趣的朋友可以幫忙繼續(xù)下去。當(dāng)然,也希望這個(gè)project的一些片段能為初學(xué)者帶來啟發(fā)。
          我沒有把js和css分出來,總共1500行左右,放在一起比較方便查找。
          總體來說第一部分css(格式),第二部分js(功能),第三部分html(頁面)。


          補(bǔ)充:7/20 8:15 補(bǔ)充進(jìn)用到的所有圖表+自動(dòng)完成js+郵件編輯器js
          LuEmail 客戶端代碼
          LuEmail 服務(wù)器代碼

          posted @ 2006-07-19 17:39 春天花會(huì)開 閱讀(1314) | 評(píng)論 (7)編輯 收藏

          javascript 滑動(dòng)框架的制作

          function ?drag(o,r){

          //o.firstChild.onmousedown=function(){return?false;};

          o.onmousedown=function(a){

          var ?d=document;

          if (!a)a=window.event;

          o.style.backgroundColor="#0066ff"

          var ?x=a.layerX?a.layerX:a.offsetX,y=a.layerY?a.layerY:a.offsetY;

          //-------------for?resize

          var ?leftdiv=document.getElementById("leftregion");

          var ?leftdivwidth=parseInt(leftdiv.style.width);

          //leftdiv.innerHTML+="width:"+leftdivwidth+"<br>"

          var ?rightdiv=document.getElementById("rightregion");

          var ?rightdivwidth=parseInt(rightdiv.style.width);

          var ?xx=a.pageX?a.pageX:a.clientX,yy=a.pageY?a.lpageY:a.clientY;

          var ?oleft=parseInt(o.style.left)//xx-x;

          var ?rightdivleft=parseInt(rightdiv.style.left);

          //leftdiv.innerHTML+=o.style.width;//only?for?tracing

          if (o.setCapture)

          o.setCapture();

          else ?if(window.captureEvents)

          window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

          d.onmousemove=function(a){

          if (!a)a=window.event;

          if (!a.pageX)a.pageX=a.clientX;

          if (!a.pageY)a.pageY=a.clientY;

          //clientX:?distance?between?explorer?and?mouse?point

          var ?tx=a.pageX-x,ty=a.pageY-y;

          //------------for?resize

          var ?txx=a.pageX-xx,tyy=a.pageY-yy

          o.style.left=tx<r[0]?r[0]:tx>r[1]?r[1]:tx;

          //o.style.top=ty<r[2]?r[2]:ty>r[3]?r[3]:ty;

          move_x=parseInt(o.style.left)-oleft;

          //move_y=otop-o.style.top

          //leftdiv.innerHTML+="width:"+leftdiv.style.width+"?move:"+move_x+"<br>"

          //rightdiv.innerHTML+="o?left:"+o.style.left+"?move:"+move_x+"<br>"

          leftdiv.style.width=(leftdivwidth+move_x)+"px"

          rightdiv.style.width=(rightdivwidth-move_x)+"px"

          rightdiv.style.left=(rightdivleft+move_x)+"px"

          } ;

          d.onmouseup=function(){

          o.style.backgroundColor="#FFFFFF"

          if (o.releaseCapture)

          o.releaseCapture();

          else ?if(window.captureEvents)

          window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

          d.onmousemove=null;

          d.onmouseup=null;

          } ;

          } ;

          }

          posted @ 2006-07-07 21:20 春天花會(huì)開 閱讀(842) | 評(píng)論 (0)編輯 收藏

          Servlet獲取Ajax POST數(shù)據(jù)亂碼的一種解法

          1. 對(duì)中文參數(shù)編碼encodeURI(chinesePara);
          ? poststr = "username="+encodeURI("中文");

          2.服務(wù)器端獲取參數(shù)后解碼

          String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF8");??

          ? -----------------------------------------------------------

          ? http_request.open("POST", url, true);
          ??http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
          ??http_request.send(poststr);

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

          posted @ 2006-07-07 21:17 春天花會(huì)開 閱讀(2656) | 評(píng)論 (1)編輯 收藏

          LuEmail主界面構(gòu)架

          文字我就不多說了,大家看圖~

          ReadStructure.PNG

          WriteStructure.PNG

          posted @ 2006-07-07 09:12 春天花會(huì)開 閱讀(851) | 評(píng)論 (6)編輯 收藏

          LuEmail 我想做的更好

          基本上可以work了,現(xiàn)在暫時(shí)沒有空間~

          基于Web的郵件客戶端,后端郵件服務(wù)器暫時(shí)只測(cè)試了Open WebMail

          HTML+javascript+Ajax+Servlet+Javamail+Tomcat

          頁面構(gòu)架上采用CSS布局。

        1. 標(biāo)記功能可以讓您方便為每一封郵件添加提醒
        2. 雙擊郵件閱讀區(qū)域即可切換視圖,讓您立刻擁有開闊的視野
        3. 通過閱讀窗格使您無需離開收件箱,即可快速查看郵件內(nèi)容
        4. 單擊右鍵,輕松回復(fù),刪除及轉(zhuǎn)發(fā)
        5. 支持直接插入本地圖片,無須先手動(dòng)上傳再Copy Url
        6. 實(shí)時(shí)搜索,輸入不超過3個(gè)字母即可找到您要的郵件(主題、收件人)
        7. 自動(dòng)補(bǔ)全,寫信時(shí)不必記憶長(zhǎng)竄的Email地址Main.PNG
        8. posted @ 2006-07-07 08:27 春天花會(huì)開 閱讀(1023) | 評(píng)論 (10)編輯 收藏

          主站蜘蛛池模板: 永嘉县| 滦南县| 拜城县| 虎林市| 嘉禾县| 儋州市| 普宁市| 潍坊市| 汾阳市| 林芝县| 沧州市| 万荣县| 宝兴县| 富川| 抚宁县| 孟连| 儋州市| 罗源县| 康平县| 安顺市| 仲巴县| 静宁县| 都昌县| 广水市| 天等县| 安顺市| 商洛市| 浑源县| 龙门县| 苏州市| 高淳县| 凤山县| 鸡泽县| 淮南市| 商水县| 镇雄县| 观塘区| 墨玉县| 龙陵县| 孟津县| 嘉祥县|