锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
闂灝辮В鍐沖暒錛佸搱鍝堬紒
Q錛欵rror C1189 Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
A:Go to the project properties (Project menu, Properties). Set 'Use of MFC' to "Use MFC in a Shared DLL". You have to make this change for both the debug and release configurations
]]>
1錛宑onst char*錛圕椋庢牸瀛楃涓詫級(jí)涓巗tring涔嬮棿杞崲錛?/span>
錛?錛?const char*鍙互鐩存帴瀵箂tring綾誨瀷璧嬪鹼紝渚嬪錛?/span>
const char* pchar = "qwerasdf";
stringstr = pchar;
錛?錛?string閫氳繃c_str()鍑芥暟杞崲涓篊椋庢牸瀛楃涓詫紝渚嬪錛?/span>
string str = "qwerasdf";
const char* pchar = str.c_str();
2錛宑onst char*綾誨瀷鍙互鐩存帴緇機(jī)String綾誨瀷璧嬪鹼紝渚嬪錛?/span>
const char* pchar = "qwerasdf";
CString str = pchar;
3錛宻tring綾誨瀷鍙橀噺杞負(fù)涓篊string綾誨瀷鍙橀噺
CString綾誨瀷鍙橀噺鍙互鐩存帴緇檚tring綾誨瀷鍙橀噺璧嬪鹼紝浣嗘槸string綾誨瀷涓嶈兘瀵笴String綾誨瀷鐩存帴璧嬪箋傞氳繃鍓嶄袱綾?/span>
杞崲鎴戜滑鍙互寰楀埌錛?/span>string綾誨瀷鍙橀噺杞崲涓篶onst char*綾誨瀷錛岀劧鍚庡啀鐩存帴璧嬪煎氨鍙互浜?jiǎn)銆備緥濡傦細(xì)
CString cstr錛?/span>
sring str = “asdasd”錛?/span>
cstr = str.c_str();
鍚岀悊錛孋Strng綾誨瀷鍙橀噺鍏堣漿鎹負(fù)string綾誨瀷鍦ㄨ皟鐢╟_str()鍑芥暟灝卞彲浠ュ畬鎴愬悜const char*綾誨瀷鐨勮漿鎹€備緥濡傦細(xì)
CString cStr = "adsad";
string str = cStr;
const char* pchar = str.c_str();
4錛宒ouble錛宨nt杞瑂tring
double temp;
stringstream strStream;
strStream<<temp;
string ss = strStream.str()
string 杞琩ouble錛宨nt
string.atoi , string.atof
浠庝笂闈㈡垜浠彲浠ヤ笂闈㈢湅鍑猴紝閫氳繃綾誨瀷涔嬮棿鐨勭浉浜掕漿鍖栵紝浼?xì)鋴涉湰鏉ヨ閫氳繃澶嶆潅鐨勫嚱鏁版潵瀹屾垚鐨勭被鍨嬭漿鎹㈠彉寰楃畝鍗曟槗鎳傘?/span>
TinyXML鏄竴涓紑婧愮殑瑙f瀽XML鐨勮В鏋愬簱錛岃兘澶熺敤浜?/span>C++錛岃兘澶熷湪Windows鎴?/span>Linux涓紪璇戙傝繖涓В鏋愬簱鐨勬ā鍨嬮氳繃瑙f瀽XML鏂囦歡錛岀劧鍚庡湪鍐呭瓨涓敓鎴?/span>DOM妯″瀷錛屼粠鑰岃鎴戜滑寰堟柟渚跨殑閬嶅巻榪欐5XML鏍?wèi)銆?/span>
DOM妯″瀷鍗蟲枃妗e璞℃ā鍨嬶紝鏄皢鏁翠釜鏂囨。鍒嗘垚澶氫釜鍏冪礌錛堝涔︺佺珷銆佽妭銆佹絳夛級(jí)錛屽茍鍒╃敤鏍?wèi)鍨嬀l撴瀯琛ㄧず榪欎簺鍏冪礌涔嬮棿鐨勯『搴忓叧緋諱互鍙?qiáng)宓屽鍖呭惈鍏尘p匯?br /> 涓嶈繃TinyXml闇瑕佷嬌鐢ㄨ呮墜鍔ㄩ噴鏀緉ew鍑虹殑鍐呭瓨銆傚垵瀛++鑰呭線寰瀹規(guī)槗閫犳垚鍐呭瓨娉勯湶銆?/span>
CWnd::GetClientRect
Parameters:
lpRect
Remarks:
CWnd::GetWindowRect
void GetWindowRect( LPRECT lpRect ) const;
Parameters:
lpRect
Points to a CRect object or a RECT structure that will receive the screen coordinates of the upper-left and lower-right corners.
Remarks:
Copies the dimensions of the bounding rectangle of the CWnd object to the structure pointed to by lpRect. The dimensions are given in screen coordinates relative to the upper-left corner of the display screen. The dimensions of the caption, border, and scroll bars, if present, are included.
GetWindowRect() 寰楀埌鐨勬槸鍦ㄥ睆騫曞潗鏍囩郴涓嬬殑RECT錛涳紙鍗充互灞忓箷宸︿笂瑙掍負(fù)鍘熺偣錛?br />GetClientRect() 寰楀埌鐨勬槸鍦ㄥ鎴峰尯鍧愭爣緋諱笅鐨凴ECT錛?錛?font color="#800000">鍗充互鎵鍦ㄧ獥鍙e乏涓婅涓哄師鐐?/font>錛?br />
GetWindowRect()鍙栫殑鏄暣涓獥鍙g殑鐭╁艦錛?br />GetClientRect()鍙栫殑浠呮槸瀹㈡埛鍖虹殑鐭╁艦錛屼篃灝辨槸璇翠笉鍖呮嫭鏍囬鏍忥紝澶栨絳夛紱
絎竴涓嚱鏁拌幏寰楃殑鏄獥鍙e湪灞忓箷涓婄殑浣嶇疆錛屽緱鍒扮殑緇撴灉鍙兘鏄繖鏍稢Rect(10,10,240,240);
絎簩涓嚱鏁板拰瀹冧笉鍚岋紝瀹冨彧鑾峰緱浜?jiǎn)瀹㈡埛鍖虹殑澶畯锛屽洜姝ゅ緱鍒扮殑缁撴灉鎬繪槸榪欐牱CRect(0,0,width,height);
ScreenToClient() 灝辨槸鎶婂睆騫曞潗鏍囩郴涓嬬殑RECT鍧愭爣杞崲涓哄鎴峰尯鍧愭爣緋諱笅鐨凴ECT鍧愭爣銆?/font>
The GetClientRect function retrieves the coordinates of a window's client area. The client coordinates specify the upper-left and lower-right corners of the client area. Because client coordinates are relative to the upper-left corner of a window's client area, the coordinates of the upper-left corner are (0,0).
GetClientRect寰楀埌鐨勬槸瀹㈡埛鍖虹殑澶у皬錛屼篃灝辨槸璇磋繖鏍峰緱鍒扮殑宸︿笂瑙掓案榪滄槸錛?錛?錛?/font>
The GetWindowRect function retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen.
GetWindowRect 鏄獥鍙g浉瀵逛簬鏁翠釜灞忓箷鐨勫潗鏍囷紝灞忓箷宸︿笂鐐逛負(fù)0錛?
鐩鎬簰杞寲鐢⊿creenToClient 鎴栬?ClientToScreen
ClientToScreen
The ClientToScreen function converts the client coordinates of a specified point to screen coordinates.
BOOL ClientToScreen(
);
Parameters
hWnd
Handle to the window whose client area is used for the conversion.
lpPoint
Pointer to a POINT structure that contains the client coordinates to be converted. The new screen coordinates are copied into this structure if the function succeeds.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
铏界劧瀛樺湪璋冪敤GetWindowRect鍚庡啀璋冪敤ScreenToClient==GetClientRect錛屼絾ScreenToClient錛堬級(jí)鍜孋lientToScreen()涓よ呴兘鏄睘浜嶹INDOWS API鍑芥暟錛屽彲鑳芥槸瀛樺湪涓瀹氱殑鍐椾綑璁捐錛屼絾鎰忎箟涓嶅悓銆?br />涓嶈繃鍦?Net Framework涓嬪WINDOWS API鍑芥暟榪涜浜?jiǎn)閲嶆柊鏁寸悊鍜屼紭鍖栧Q屽湪鑾峰彇鎺т歡鎴栫獥鍙g殑灞忓箷鍧愭爣鍜屽鎴峰尯鍧愭爣鏃舵洿鏂逛究鐨勫錛屽彧闇瑕佸緱鍒頒笌鎺т歡鎴栫獥鍙g浉瀵瑰簲灞忓箷鍧愭爣鍜屽鎴峰尯鍧愭爣灞炴у煎氨鍙互浜?/font>銆?/font>
錛?/p>
1) NOOP
NOOP綆楁硶鐨勫叏鍐欎負(fù)No Operation銆傝綆楁硶瀹炵幇浜?jiǎn)鏈鏈綆鍗曠殑FIFO闃熷垪錛屾墍鏈塈O璇鋒眰澶ц嚧鎸夌収鍏堟潵鍚庡埌鐨勯『搴忚繘琛屾搷浣溿備箣鎵浠ヨ“澶ц嚧”錛?/p>
鍘熷洜鏄疦OOP鍦‵IFO鐨勫熀紜涓婅繕鍋氫簡(jiǎn)鐩擱偦IO璇鋒眰鐨勫悎騫訛紝騫朵笉鏄畬瀹屽叏鍏ㄦ寜鐓у厛榪涘厛鍑虹殑瑙勫垯婊¤凍IO璇鋒眰銆侼OOP鍋囧畾I/O璇鋒眰鐢遍┍鍔ㄧ▼搴忔垨鑰呰
澶囧仛浜?jiǎn)浼樺寲鎴栬呴噸鎺掍簡(jiǎn)欏哄簭(灝卞儚涓涓櫤鑳芥帶鍒跺櫒瀹屾垚鐨勫伐浣滈偅鏍?銆傚湪鏈変簺SAN鐜涓嬶紝榪欎釜閫夋嫨鍙兘鏄渶濂介夋嫨銆侼oop 瀵逛簬 IO 涓嶉偅涔堟搷
蹇?jī)锛屽?guī)墍鏈夌殑 IO璇鋒眰閮界敤 FIFO 闃熷垪褰㈠紡澶勭悊錛岄粯璁よ涓?IO 涓嶄細(xì)瀛樺湪鎬ц兘闂銆傝繖涔熶嬌寰?CPU 涔熶笉鐢ㄩ偅涔堟搷蹇?jī)銆?a >www.linuxidc.com褰撶劧
錛屽浜庡鏉備竴鐐圭殑搴旂敤綾誨瀷錛屼嬌鐢ㄨ繖涓皟搴﹀櫒錛岀敤鎴瘋嚜宸卞氨浼?xì)闈炲父鎿嶅績(jī)銆?
2) Deadline scheduler
DEADLINE鍦–FQ鐨勫熀紜涓婏紝瑙e喅浜?jiǎn)IO璇鋒眰楗挎鐨勬瀬绔儏鍐點(diǎn)傞櫎浜?jiǎn)CFQ鏈韓鍏鋒湁鐨処O鎺掑簭闃熷垪涔嬪錛孌EADLINE棰濆鍒嗗埆涓鴻IO鍜屽啓IO鎻愪緵浜?jiǎn)FIFO
闃熷垪銆傝FIFO闃熷垪鐨勬渶澶х瓑寰呮椂闂翠負(fù)500ms錛屽啓FIFO闃熷垪鐨勬渶澶х瓑寰呮椂闂翠負(fù)5s銆侳IFO闃熷垪鍐呯殑IO璇鋒眰浼樺厛綰ц姣擟FQ闃熷垪涓殑楂橈紝錛岃岃FIFO
闃熷垪鐨勪紭鍏堢駭鍙堟瘮鍐橣IFO闃熷垪鐨勪紭鍏堢駭楂樸備紭鍏堢駭鍙互琛ㄧず濡備笅錛?
FIFO(Read) > FIFO(Write) > CFQ
deadline 綆楁硶淇濊瘉瀵逛簬鏃㈠畾鐨?IO 璇鋒眰浠ユ渶灝忕殑寤惰繜鏃墮棿錛屼粠榪欎竴鐐圭悊瑙o紝瀵逛簬 DSS 搴旂敤搴旇浼?xì)鏄緢閫傚悎鐨勩?/p>
3) Anticipatory scheduler
CFQ鍜孌EADLINE鑰冭檻鐨勭劍鐐瑰湪浜庢弧瓚抽浂鏁O璇鋒眰涓娿傚浜庤繛緇殑IO璇鋒眰錛屾瘮濡傞『搴忚錛屽茍娌℃湁鍋氫紭鍖栥備負(fù)浜?jiǎn)婊…懗闅忔満IO鍜岄『搴廔O娣峰悎鐨勫満鏅紝
Linux榪樻敮鎸丄NTICIPATORY璋冨害綆楁硶銆侫NTICIPATORY鐨勫湪DEADLINE鐨勫熀紜涓婏紝涓烘瘡涓IO閮借緗簡(jiǎn)6ms 鐨勭瓑寰呮椂闂寸獥鍙c傚鏋滃湪榪?ms鍐匫S鏀?/p>
鍒頒簡(jiǎn)鐩擱偦浣嶇疆鐨勮IO璇鋒眰錛屽氨鍙互绔嬪嵆婊¤凍
Anticipatory scheduler錛坅s) 鏇劇粡涓搴︽槸 Linux 2.6 Kernel 鐨?IO scheduler 銆侫nticipatory 鐨勪腑鏂囧惈涔夋槸”棰勬枡鐨? 棰勬兂鐨?#8221;, 榪欎釜
璇嶇殑紜彮紺轟簡(jiǎn)榪欎釜綆楁硶鐨勭壒鐐癸紝綆鍗曠殑璇達(dá)紝鏈変釜 IO 鍙戠敓鐨勬椂鍊欙紝濡傛灉鍙堟湁榪涚▼璇鋒眰 IO 鎿嶄綔錛屽垯灝嗕駭鐢熶竴涓粯璁ょ殑 6 姣鐚滄祴鏃墮棿錛岀寽嫻?/p>
涓嬩竴涓?榪涚▼璇鋒眰 IO 鏄騫蹭粈涔堢殑銆傝繖瀵逛簬闅忓嵆璇誨彇浼?xì)閫犳垚姣旇緝澶х殑寤舵椂錛屽鏁版嵁搴撳簲鐢ㄥ緢緋熺硶錛岃屽浜?Web Server 絳夊垯浼?xì)琛ㄧ幇鐨勪笉閿欍?/p>
榪欎釜綆楁硶涔熷彲浠ョ畝鍗曠悊瑙d負(fù)闈㈠悜浣庨熺鐩樼殑錛屽洜涓洪偅涓?#8221;鐚滄祴”瀹為檯涓婄殑鐩殑鏄負(fù)浜?jiǎn)鍑彏畱纾佸ご绉诲姩鏃堕棿銆?/p>
4錛塁FQ
CFQ綆楁硶鐨勫叏鍐欎負(fù)Completely Fair Queuing銆傝綆楁硶鐨勭壒鐐規(guī)槸鎸夌収IO璇鋒眰鐨勫湴鍧榪涜鎺掑簭錛岃屼笉鏄寜鐓у厛鏉ュ悗鍒扮殑欏哄簭鏉ヨ繘琛屽搷搴斻?
鍦ㄤ紶緇熺殑SAS鐩樹笂錛岀鐩樺閬撹姳鍘諱簡(jiǎn)緇濆ぇ澶氭暟鐨処O鍝嶅簲鏃墮棿銆侰FQ鐨勫嚭鍙戠偣鏄IO鍦板潃榪涜鎺掑簭錛屼互灝介噺灝戠殑紓佺洏鏃嬭漿嬈℃暟鏉ユ弧瓚沖敖鍙兘澶氱殑
IO璇鋒眰銆傚湪CFQ綆楁硶涓嬶紝SAS鐩樼殑鍚炲悙閲忓ぇ澶ф彁楂樹簡(jiǎn)銆備絾鏄浉姣斾簬NOOP鐨勭己鐐規(guī)槸錛屽厛鏉ョ殑IO璇鋒眰騫朵笉涓瀹氳兘琚弧瓚籌紝鍙兘浼?xì)鍑虹幇楗挎潥勬儏鍐点?
Completely Fair Queuing 錛坈fq, 瀹屽叏鍏鉤闃熷垪) 鍦?2.6.18 鍙栦唬浜?Anticipatory scheduler 鎴愪負(fù) Linux Kernel 榛樿鐨?IO scheduler
銆俢fq 瀵規(guī)瘡涓繘紼嬬淮鎶や竴涓?IO 闃熷垪錛屽悇涓繘紼嬪彂鏉ョ殑 IO 璇鋒眰浼?xì)琚?cfq 浠ヨ疆寰柟寮忓鐞嗐備篃灝辨槸瀵規(guī)瘡涓涓?IO 璇鋒眰閮芥槸鍏鉤鐨勩傝繖浣垮緱
cfq 寰堥傚悎紱繪暎璇葷殑搴旂敤(eg: OLTP DB)銆傛垜鎵鐭ラ亾鐨勪紒涓氱駭 Linux 鍙戣鐗堜腑錛孲USE Linux 濂藉儚鏄渶鍏堥粯璁ょ敤 cfq 鐨?
鏌ョ湅鍜屼慨鏀笽O璋冨害鍣ㄧ殑綆楁硶闈炲父綆鍗曘傚亣璁炬垜浠瀵箂da榪涜鎿嶄綔錛屽涓嬫墍紺猴細(xì)
cat /sys/block/sda/queue/scheduler
echo “cfq” > /sys/block/sda/queue/scheduler
鎬葷粨:
1 CFQ鍜孌EADLINE鑰冭檻鐨勭劍鐐瑰湪浜庢弧瓚抽浂鏁O璇鋒眰涓娿傚浜庤繛緇殑IO璇鋒眰錛屾瘮濡傞『搴忚錛屽茍娌℃湁鍋氫紭鍖栥備負(fù)浜?jiǎn)婊…懗闅忔満IO鍜岄『搴廔O娣峰悎鐨勫満鏅?/p>
錛孡inux榪樻敮鎸丄NTICIPATORY璋冨害綆楁硶銆侫NTICIPATORY鐨勫湪DEADLINE鐨勫熀紜涓婏紝涓烘瘡涓IO閮借緗簡(jiǎn)6ms鐨勭瓑寰呮椂闂寸獥鍙c傚鏋滃湪榪?ms鍐匫S鏀?/p>
鍒頒簡(jiǎn)鐩擱偦浣嶇疆鐨勮IO璇鋒眰錛屽氨鍙互绔嬪嵆婊¤凍銆?/p>
IO璋冨害鍣ㄧ畻娉曠殑閫夋嫨錛屾棦鍙栧喅浜庣‖浠剁壒寰侊紝涔熷彇鍐充簬搴旂敤鍦烘櫙銆?
鍦ㄤ紶緇熺殑SAS鐩樹笂錛孋FQ銆丏EADLINE銆丄NTICIPATORY閮芥槸涓嶉敊鐨勯夋嫨錛涘浜庝笓灞炵殑鏁版嵁搴撴湇鍔″櫒錛孌EADLINE鐨勫悶鍚愰噺鍜屽搷搴旀椂闂撮兘琛ㄧ幇鑹ソ銆?/p>
鐒惰屽湪鏂板叴鐨勫浐鎬佺‖鐩樻瘮濡係SD銆丗usion IO涓婏紝鏈綆鍗曠殑NOOP鍙嶈屽彲鑳芥槸鏈濂界殑綆楁硶錛屽洜涓哄叾浠栦笁涓畻娉曠殑浼樺寲鏄熀浜庣緝鐭閬撴椂闂寸殑錛岃?/p>
鍥烘佺‖鐩樻病鏈夋墍璋撶殑瀵婚亾鏃墮棿涓擨O鍝嶅簲鏃墮棿闈炲父鐭?/p>
2 瀵逛簬鏁版嵁搴撳簲鐢? Anticipatory Scheduler 鐨勮〃鐜版槸鏈宸殑銆侱eadline 鍦?DSS 鐜琛ㄧ幇姣?cfq 鏇村ソ涓鐐癸紝鑰?cfq 緇煎悎鏉ョ湅琛ㄧ幇鏇村ソ涓
浜涖傝繖涔熼毦鎬?RHEL 4 榛樿鐨?IO 璋冨害鍣ㄨ緗負(fù) cfq. 鑰?RHEL 4 姣?RHEL 3錛屾暣浣?IO 鏀硅繘榪樻槸涓嶅皬鐨勩?