锘??xml version="1.0" encoding="utf-8" standalone="yes"?>最近中文字幕mv在线一区二区三区四区 ,亚洲成色www8888,99成人免费视频http://m.shnenglu.com/wmuu/鍚瑧鍗婃鐧槸鐢ㄨ渹铚溿佸窛璐濄佹姊椼佸姞涓婂ぉ灞遍洩鑾查厤鍒惰屾垚錛屼笉闇鍐瘋棌錛屼篃娌℃湁闃茶厫鍓傦紝闄や簡姣掓х寷鐑堜箣澶栵紝鍛抽亾榪樺緢濂藉悆錛佽屽悆浜嗗惈絎戝崐姝ョ櫕鐨勬湅鍙嬶紝欏懼悕鎬濅箟緇濆涓嶈兘璧板崐姝ヨ礬鎴栨槸闈㈤湶絎戝錛屽惁鍒欎篃浼氬叏韜垎鐐歌屾銆傚疄鍦ㄦ槸灞呭鏃呰錛屾潃浜虹伃鍙o紝蹇呭鑹嵂錛? zh-cnSun, 16 Nov 2025 02:28:20 GMTSun, 16 Nov 2025 02:28:20 GMT60mysql 甯哥敤鍛戒護(璁板綍)http://m.shnenglu.com/wmuu/archive/2008/01/11/40943.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Fri, 11 Jan 2008 01:55:00 GMThttp://m.shnenglu.com/wmuu/archive/2008/01/11/40943.htmlhttp://m.shnenglu.com/wmuu/comments/40943.htmlhttp://m.shnenglu.com/wmuu/archive/2008/01/11/40943.html#Feedback0http://m.shnenglu.com/wmuu/comments/commentRss/40943.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/40943.html  緋葷粺鎻愮ず絎︿笅 mysql --user=root -p
   use mysql
GRANT ALL PRIVILEGES ON *.* TO root@finapp IDENTIFIED BY "123"
grant all privieges on database.table to user@IpOrName identified by "password"









]]>
MySQL鎬ц兘浼樺寲鐩稿叧(杞? 浣滆咃細andyaohttp://m.shnenglu.com/wmuu/archive/2008/01/09/40838.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Wed, 09 Jan 2008 15:52:00 GMThttp://m.shnenglu.com/wmuu/archive/2008/01/09/40838.htmlhttp://m.shnenglu.com/wmuu/comments/40838.htmlhttp://m.shnenglu.com/wmuu/archive/2008/01/09/40838.html#Feedback0http://m.shnenglu.com/wmuu/comments/commentRss/40838.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/40838.html鍘熸枃link: http://andyao.javaeye.com/admin/show/144033
杞澆璇風暀鍚?br>
1. 綆浠?/strong>
鍦╓eb搴旂敤紼嬪簭浣撶郴鏋舵瀯涓紝鏁版嵁鎸佷箙灞傦紙閫氬父鏄竴涓叧緋繪暟鎹簱錛夋槸鍏抽敭鐨勬牳蹇冮儴鍒嗭紝瀹冨緋葷粺鐨勬ц兘鏈夐潪甯擱噸瑕佺殑褰卞搷銆侻ySQL鏄洰鍓嶄嬌鐢ㄦ渶澶氱殑寮婧愭暟鎹簱錛屼絾鏄疢ySQL鏁版嵁搴撶殑榛樿璁劇疆鎬ц兘闈炲父鐨勫樊錛屼粎浠呮槸涓涓帺鍏鋒暟鎹簱銆傚洜姝ゅ湪浜у搧涓嬌鐢∕ySQL鏁版嵁搴撳繀欏昏繘琛屽繀瑕佺殑浼樺寲銆?br>浼樺寲鏄竴涓鏉傜殑浠誨姟錛屾湰鏂囨弿榪癕ySQL鐩稿叧鐨勬暟鎹簱璁捐鍜屾煡璇紭鍖栵紝鏈嶅姟鍣ㄧ浼樺寲錛屽瓨鍌ㄥ紩鎿庝紭鍖栥?br>
2. 鏁版嵁搴撹璁″拰鏌ヨ浼樺寲
鍦∕ySQL Server鎬ц兘璋冧紭涓紝棣栧厛瑕佽冭檻鐨勫氨鏄疍atabase Schema璁捐錛岃繖涓鐐規槸闈炲父閲嶈鐨勩備竴涓碂緋曠殑Schema璁捐鍗充嬌鍦ㄦц兘璋冧紭鐨凪ySQL Server涓婅繍琛岋紝涔熶細琛ㄧ幇鍑哄緢宸殑鎬ц兘錛涘拰Schema鐩鎬技錛屾煡璇㈣鍙ョ殑璁捐涔熶細褰卞搷MySQL鐨勬ц兘錛屽簲璇ラ伩鍏嶅啓鍑轟綆鏁堢殑SQL鏌ヨ銆傝繖涓鑺傚皢璇︾粏璁ㄨ榪欎袱鏂歸潰鐨勪紭鍖栥?br>
2.1 Schema Design
Schema鐨勪紭鍖栧彇鍐充簬灝嗚榪愯浠涔堟牱鐨剄uery錛屼笉鍚岀殑query浼氭湁涓嶅悓鐨凷chema浼樺寲鏂規銆?.2鑺傚皢浠嬬粛Query Design鐨勪紭鍖栥係chema璁捐鍚屾牱鍙楀埌棰勬湡鏁版嵁闆嗗ぇ灝忕殑褰卞搷銆係chema璁捐鏃朵富瑕佽冭檻錛氭爣鍑嗗寲錛屾暟鎹被鍨嬶紝绱㈠紩銆?br>
2.1.1 鏍囧噯鍖?/font>

鏍囧噯鍖栨槸鍦ㄦ暟鎹簱涓粍緇囨暟鎹殑榪囩▼銆傚叾涓寘鎷紝鏍規嵁璁捐瑙勫垯鍒涘緩琛ㄥ茍鍦ㄨ繖浜涜〃闂村緩绔嬪叧緋伙紱閫氳繃鍙栨秷鍐椾綑搴︿笌涓嶄竴鑷寸浉鍏蟲э紝璇ヨ璁¤鍒欏彲浠ュ悓鏃朵繚鎶ゆ暟鎹茍鎻愰珮鏁版嵁鐨勭伒媧繪с傞氬父鏁版嵁搴撴爣鍑嗗寲鏄鏁版嵁搴撹璁$鍚堟煇涓綰у埆鐨勮寖寮忥紝閫氬父婊¤凍絎笁鑼冨紡鍗沖彲銆備篃鏈夌鍥涜寖寮忥紙涔熺О涓?Boyce Codd鑼冨紡錛孊CNF)錛変笌絎簲鑼冨紡瀛樺湪錛屼絾鏄湪瀹為檯璁捐涓緢灝戣冭檻銆傚拷瑙嗚繖浜涜鍒欏彲鑳戒嬌寰楁暟鎹簱鐨勮璁′笉澶畬緹庯紝浣嗚繖涓嶅簲褰卞搷鍔熻兘銆?br>鏍囧噯鍖栫殑鐗圭偣錛?br>
1) 鎵鏈夌殑“瀵硅薄”閮藉湪瀹冭嚜宸辯殑table涓紝娌℃湁鍐椾綑銆?br>2) 鏁版嵁搴撻氬父鐢盓-R鍥劇敓鎴愩?br>3) 綆媧侊紝鏇存柊灞炴ч氬父鍙渶瑕佹洿鏂板緢灝戠殑璁板綍銆?br>4) Join鎿嶄綔姣旇緝鑰楁椂銆?br>5) Select錛宻ort浼樺寲鎺柦姣旇緝灝戙?br>6) 閫傜敤浜嶰LTP搴旂敤銆?br>
闈炴爣鍑嗗寲鐨勭壒鐐癸細
1) 鍦ㄤ竴寮犺〃涓瓨鍌ㄥ緢澶氭暟鎹紝鏁版嵁鍐椾綑銆?br>2) 鏇存柊鏁版嵁寮閿寰堝ぇ錛屾洿鏂頒竴涓睘鎬у彲鑳戒細鏇存柊寰堝琛紝寰堝璁板綍銆?br>3) 鍦ㄥ垹闄ゆ暟鎹槸鏈夊彲鑳戒涪澶辨暟鎹?br>4) Select錛宱rder鏈夊緢澶氫紭鍖栫殑閫夋嫨銆?br>5) 閫傜敤浜嶥SS搴旂敤銆?br>

鏍囧噯鍖栧拰闈炴爣鍑嗗寲閮芥湁鍚勮嚜鐨勪紭緙虹偣錛岄氬父鍦ㄤ竴涓暟鎹簱璁捐涓彲浠ユ販鍚堜嬌鐢紝涓閮ㄥ垎琛ㄦ牸鏍囧噯鍖栵紝涓閮ㄥ垎琛ㄦ牸淇濈暀涓浜涘啑浣欐暟鎹細
1) 瀵筄LTP浣跨敤鏍囧噯鍖栵紝瀵笵SS浣跨敤闈炴爣鍑嗗寲
2) 浣跨敤鐗╁寲瑙嗗浘銆侻ySQL涓嶇洿鎺ユ敮鎸佽鏁版嵁搴撶壒鎬э紝浣嗘槸鍙互鐢∕yISAM琛ㄤ唬鏇褲?br>3) 鍐椾綑涓浜涙暟鎹湪琛ㄦ牸涓紝渚嬪灝唕ef_id鍜宯ame瀛樺湪鍚屼竴寮犺〃涓備絾鏄娉ㄦ剰鏇存柊闂銆?br>4) 瀵逛簬涓浜涚畝鍗曠殑瀵硅薄錛岀洿鎺ヤ嬌鐢╲alue浣滀負寤恒備緥濡侷P address絳?br>5) Reference by PRIMARY/UNIQUE KEY銆侻ySQL鍙互浼樺寲榪欑鎿嶄綔錛屼緥濡傦細
java 浠g爜
  1. select city_name
  2. from city,state
  3. where state_id=state.id and state.code=‘CA’” converted to “select city_name from city where state_id=12

2.1.2 鏁版嵁綾誨瀷
鏈鍩烘湰鐨勪紭鍖栦箣涓灝辨槸浣胯〃鍦ㄧ鐩樹笂鍗犳嵁鐨勭┖闂村敖鍙兘灝忋傝繖鑳藉甫鏉ユц兘闈炲父澶х殑鎻愬崌錛屽洜涓烘暟鎹皬錛岀鐩樿鍏ヨ緝蹇紝騫朵笖鍦ㄦ煡璇㈣繃紼嬩腑琛ㄥ唴瀹硅澶勭悊鎵鍗犵敤鐨勫唴瀛樻洿灝戙傚悓鏃訛紝鍦ㄦ洿灝忕殑鍒椾笂寤虹儲寮曪紝绱㈠紩涔熶細鍗犵敤鏇村皯鐨勮祫婧愩?br>鍙互浣跨敤涓嬮潰鐨勬妧鏈彲浠ヤ嬌琛ㄧ殑鎬ц兘鏇村ソ騫朵笖浣垮瓨鍌ㄧ┖闂存渶灝忥細
1) 浣跨敤姝g‘鍚堥傜殑綾誨瀷錛屼笉瑕佸皢鏁板瓧瀛樺偍涓哄瓧絎︿覆銆?br>2) 灝藉彲鑳藉湴浣跨敤鏈鏈夋晥(鏈灝?鐨勬暟鎹被鍨嬨侻ySQL鏈夊緢澶氳妭鐪佺鐩樼┖闂村拰鍐呭瓨鐨勪笓涓氬寲綾誨瀷銆?br>3) 灝藉彲鑳戒嬌鐢ㄨ緝灝忕殑鏁存暟綾誨瀷浣胯〃鏇村皬銆備緥濡傦紝MEDIUMINT緇忓父姣擨NT濂戒竴浜涳紝鍥犱負MEDIUMINT鍒椾嬌鐢ㄧ殑絀洪棿瑕佸皯25%銆?br>4) 濡傛灉鍙兘錛屽0鏄庡垪涓篘OT NULL銆傚畠浣夸換浣曚簨鎯呮洿蹇屼笖姣忓垪鍙互鑺傜渷涓浣嶃傛敞鎰忓鏋滃湪搴旂敤紼嬪簭涓‘瀹為渶瑕丯ULL錛屽簲璇ユ鏃犵枒闂嬌鐢ㄥ畠錛屽彧鏄伩鍏?榛樿鍦板湪鎵鏈夊垪涓婃湁瀹冦?br>5) 瀵逛簬MyISAM琛紝濡傛灉娌℃湁浠諱綍鍙橀暱鍒?VARCHAR銆乀EXT鎴朆LOB鍒?錛屼嬌鐢ㄥ浐瀹氬昂瀵哥殑璁板綍鏍煎紡銆傝繖姣旇緝蹇絾鏄笉騫稿湴鍙兘浼氭氮璐逛竴浜涚┖闂淬傚嵆浣夸綘宸茬粡鐢–REATE閫夐」璁¬ARCHAR鍒?span class=hilite1>ROW_FORMAT=fixed錛屼篃鍙互鎻愮ず鎯充嬌鐢ㄥ浐瀹氶暱搴︾殑琛屻?br>6) 浣跨敤sample character set錛屼緥濡俵atin1銆傚敖閲忓皯浣跨敤utf-8錛屽洜涓簎tf-8鍗犵敤鐨勭┖闂存槸latin1鐨?鍊嶃傚彲浠ュ湪涓嶉渶瑕佷嬌鐢╱tf-8鐨勫瓧孌典笂闈嬌鐢╨atin1錛屼緥濡俶ail錛寀rl絳夈?br>

2.1.3 绱㈠紩
鎵鏈塎ySQL鍒楃被鍨嬪彲浠ヨ绱㈠紩銆傚鐩稿叧鍒椾嬌鐢ㄧ儲寮曟槸鎻愰珮SELECT鎿嶄綔鎬ц兘鐨勬渶浣抽斿緞銆備嬌鐢ㄧ儲寮曞簲璇ユ敞鎰忎互涓嬪嚑鐐癸細
1) MySQL鍙細浣跨敤鍓嶇紑錛屼緥濡俴ey(a, b) …where b=5 灝嗕嬌鐢ㄤ笉鍒扮儲寮曘?br>2) 瑕侀夋嫨鎬х殑浣跨敤绱㈠紩銆傚湪鍙樺寲寰堝皯鐨勫垪涓婁嬌鐢ㄧ儲寮曞茍涓嶆槸寰堝ソ錛屼緥濡傛у埆鍒椼?br>3) 鍦║nique鍒椾笂瀹氫箟Unique index銆?br>4) 閬垮厤寤虹珛浣跨敤涓嶅埌鐨勭儲寮曘?br>5) 鍦˙tree index涓紙InnoDB浣跨敤Btree錛夛紝鍙互鍦ㄩ渶瑕佹帓搴忕殑鍒椾笂寤虹珛绱㈠紩銆?br>6) 閬垮厤閲嶅鐨勭儲寮曘?br>7) 閬垮厤鍦ㄥ凡鏈夌儲寮曠殑鍓嶇紑涓婂緩绔嬬儲寮曘備緥濡傦細濡傛灉瀛樺湪index錛坅錛宐錛夊垯鍘繪帀index錛坅錛夈?br>8) 鎺у埗鍗曚釜绱㈠紩鐨勯暱搴︺備嬌鐢╧ey錛坣ame錛?錛夛級鍦ㄦ暟鎹殑鍓嶉潰鍑犱釜瀛楃寤虹珛绱㈠紩銆?br>9) 瓚婃槸鐭殑閿艱秺濂斤紝鏈濂戒嬌鐢╥nteger銆?br>10) 鍦ㄦ煡璇腑瑕佷嬌鐢ㄥ埌绱㈠紩錛堜嬌鐢╡xplain鏌ョ湅錛夛紝鍙互鍑忓皯璇葷鐩樼殑嬈℃暟錛屽姞閫熻鍙栨暟鎹?br>11) 鐩歌繎鐨勯敭鍊兼瘮闅忔満濂姐侫uto_increment灝辨瘮uuid濂姐?br>12) Optimize table鍙互鍘嬬緝鍜屾帓搴廼ndex錛屾敞鎰忎笉瑕侀綣佽繍琛屻?br>13) Analyze table鍙互鏇存柊鏁版嵁銆?br>
2.2 Designing queries
鏌ヨ璇彞鐨勪紭鍖栨槸涓涓狢ase by case鐨勯棶棰橈紝涓嶅悓鐨剆ql鏈変笉鍚岀殑浼樺寲鏂規錛屽湪榪欓噷鎴戝彧鍒楀嚭涓浜涢氱敤鐨勬妧宸с?br>
1) 鍦ㄦ湁index鐨勬儏鍐典笅錛屽敖閲忎繚璇佹煡璇嬌鐢ㄤ簡姝g‘鐨刬ndex銆傚彲浠ヤ嬌鐢‥XPLAIN select …鏌ョ湅緇撴灉錛屽垎鏋愭煡璇€?br>2) 鏌ヨ鏃朵嬌鐢ㄥ尮閰嶇殑綾誨瀷銆備緥濡俿elect * from a where id=5錛?濡傛灉榪欓噷id鏄瓧絎︾被鍨嬶紝鍚屾椂鏈塱ndex錛岃繖鏉℃煡璇㈠垯浣跨敤涓嶅埌index錛屼細鍋氬叏琛ㄦ壂鎻忥紝閫熷害浼氬緢鎱€傛紜殑搴旇鏄?… where id=”5” 錛屽姞涓婂紩鍙瘋〃鏄庣被鍨嬫槸瀛楃銆?br>3) 浣跨敤--log-slow-queries –long-query-time=2鏌ョ湅鏌ヨ姣旇緝鎱㈢殑璇彞銆傜劧鍚庝嬌鐢╡xplain鍒嗘瀽鏌ヨ錛屽仛鍑轟紭鍖栥?br>
3. 鏈嶅姟鍣ㄧ浼樺寲
3.1 MySQL瀹夎
MySQL鏈夊緢澶氬彂琛岀増鏈紝鏈濂戒嬌鐢∕ySQL AB鍙戝竷鐨勪簩榪涘埗鐗堟湰銆備篃鍙互涓嬭澆婧愪唬鐮佽繘琛岀紪璇戝畨瑁咃紝浣嗘槸緙栬瘧鍣ㄥ拰綾誨簱鐨勪竴浜沚ug鍙兘浼氫嬌緙栬瘧瀹屾垚鐨凪ySQL瀛樺湪娼滃湪鐨勯棶棰樸?br>濡傛灉瀹夎MySQL鐨勬湇鍔″櫒浣跨敤鐨勬槸Intel鍏徃鐨勫鐞嗗櫒錛屽彲浠ヤ嬌鐢╥ntel c++緙栬瘧鐨勭増鏈紝鍦↙inux World2005鐨勪竴綃嘝PT涓彁鍒幫紝浣跨敤intel C++緙栬瘧鍣ㄧ紪璇戠殑MySQL鏌ヨ閫熷害姣旀甯哥増鏈揩30%宸﹀彸銆侷ntel c++緙栬瘧鐗堟湰鍙互鍦∕ySQL瀹樻柟緗戠珯涓嬭澆銆?br>
3.2 鏈嶅姟鍣ㄨ緗紭鍖?/font>
MySQL榛樿鐨勮緗ц兘寰堝樊錛屾墍浠ヨ鍋氫竴浜涘弬鏁扮殑璋冩暣銆傝繖涓鑺備粙緇嶄竴浜涢氱敤鐨勫弬鏁拌皟鏁達紝涓嶆秹鍙婂叿浣撶殑瀛樺偍寮曟搸錛堜富瑕佹寚MyISAM錛孖nnoDB錛岀浉鍏充紭鍖栧湪4涓粙緇嶏級銆?br>
--character-set錛氬鏋滄槸鍗曚竴璇█浣跨敤綆鍗曠殑character set渚嬪latin1銆傚敖閲忓皯鐢║tf-8錛寀tf-8鍗犵敤絀洪棿杈冨銆?br>--memlock錛氶攣瀹歁ySQL鍙兘榪愯鍦ㄥ唴瀛樹腑錛岄伩鍏峴wapping錛屼絾鏄鏋滃唴瀛樹笉澶熸椂鏈夊彲鑳藉嚭鐜伴敊璇?br>--max_allowed_packet錛氳瓚沖澶э紝浠ラ傚簲姣旇緝澶х殑SQL鏌ヨ錛屽鎬ц兘娌℃湁澶ぇ褰卞搷錛屼富瑕佹槸閬垮厤鍑虹幇packet閿欒銆?br>--max_connections錛歴erver鍏佽鐨勬渶澶ц繛鎺ャ傚お澶х殑璇濅細鍑虹幇out of memory銆?br>--table_cache錛歁ySQL鍦ㄥ悓涓鏃墮棿淇濇寔鎵撳紑鐨則able鐨勬暟閲忋傛墦寮table寮閿姣旇緝澶с備竴鑸緗負512銆?br>--query_cache_size錛?鐢ㄤ簬緙撳瓨鏌ヨ鐨勫唴瀛樺ぇ灝忋?br>--datadir錛歮ysql瀛樻斁鏁版嵁鐨勬牴鐩綍錛屽拰瀹夎鏂囦歡鍒嗗紑鍦ㄤ笉鍚岀殑紓佺洏鍙互鎻愰珮涓鐐規ц兘銆?br>
4. 瀛樺偍寮曟搸浼樺寲
MySQL鏀寔涓嶅悓鐨勫瓨鍌ㄥ紩鎿庯紝涓昏浣跨敤鐨勬湁MyISAM鍜孖nnoDB銆?br>
4.1 MyISAM
MyISAM綆$悊闈炰簨鍔¤〃銆傚畠鎻愪緵楂橀熷瓨鍌ㄥ拰媯绱紝浠ュ強鍏ㄦ枃鎼滅儲鑳藉姏銆侻yISAM鍦ㄦ墍鏈塎ySQL閰嶇疆閲岃鏀寔錛屽畠鏄粯璁ょ殑瀛樺偍寮曟搸錛岄櫎闈為厤緗甅ySQL榛樿浣跨敤鍙﹀涓涓紩鎿庛?br>
4.1.1 MyISAM鐗規?/font>
4.1.1.1 MyISAM Properties
1) 涓嶆敮鎸佷簨鍔★紝瀹曟満浼氱牬鍧忚〃
2) 浣跨敤杈冨皬鐨勫唴瀛樺拰紓佺洏絀洪棿
3) 鍩轟簬琛ㄧ殑閿侊紝騫跺彂鏇存柊鏁版嵁浼氬嚭鐜頒弗閲嶆ц兘闂
4) MySQL鍙紦瀛業ndex錛屾暟鎹敱OS緙撳瓨
4.1.1.2 Typical MyISAM usages
1) 鏃ュ織緋葷粺
2) 鍙鎴栬呯粷澶ч儴鍒嗘槸璇繪搷浣滅殑搴旂敤
3) 鍏ㄨ〃鎵弿
4) 鎵歸噺瀵煎叆鏁版嵁
5) 娌℃湁浜嬪姟鐨勪綆騫跺彂璇?鍐?br>
4.1.2 MyISAM浼樺寲瑕佺偣
1) 澹版槑鍒椾負NOT NULL錛屽彲浠ュ噺灝戠鐩樺瓨鍌ㄣ?br>2) 浣跨敤optimize table鍋氱鐗囨暣鐞嗭紝鍥炴敹絀洪棽絀洪棿銆傛敞鎰忎粎浠呭湪闈炲父澶х殑鏁版嵁鍙樺寲鍚庤繍琛屻?br>3) Deleting/updating/adding澶ч噺鏁版嵁鐨勬椂鍊欑姝嬌鐢╥ndex銆備嬌鐢ˋLTER TABLE t DISABLE KEYS銆?br>4) 璁劇疆myisam_max_[extra]_sort_file_size瓚沖澶э紝鍙互鏄捐憲鎻愰珮repair table鐨勯熷害銆?br>
4.1.3 MyISAM Table Locks
1) 閬垮厤騫跺彂insert錛寀pdate銆?br>2) 鍙互浣跨敤insert delayed錛屼絾鏄湁鍙兘涓㈠け鏁版嵁銆?br>3) 浼樺寲鏌ヨ璇彞銆?br>4) 姘村鉤鍒嗗尯銆?br>5) 鍨傜洿鍒嗗尯銆?br>6) 濡傛灉閮戒笉璧蜂綔鐢紝浣跨敤InnoDB銆?br>
4.1.4 MyISAM Key Cache
1) 璁劇疆key_buffer_size variable銆侻yISAN鏈涓昏鐨刢ache璁劇疆錛岀敤浜庣紦瀛楳yISAM琛ㄦ牸鐨刬ndex鏁版嵁錛岃鍙傛暟鍙MyISAM鏈夊獎鍝嶃傞氬父鍦ㄥ彧浣跨敤MyISAM鐨凷erver涓緗?5-33%鐨勫唴瀛樺ぇ灝忋?br>2) 鍙互浣跨敤鍑犱釜涓嶅悓鐨凨ey Caches錛堝涓浜沨ot data錛夈?br>
a) SET GLOBAL test.key_buffer_size=512*1024;
b) CACHE INDEX t1.i1, t2.i1, t3 IN test;
2) Preload index鍒癈ache涓彲浠ユ彁楂樻煡璇㈤熷害銆傚洜涓簆reloading index鏄『搴忕殑錛屾墍浠ラ潪甯稿揩銆?br>
a) LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVES錛?br>

4.2 InnoDB
InnoDB緇橫ySQL鎻愪緵浜嗗叿鏈夋彁浜わ紝鍥炴粴鍜屽穿婧冩仮澶嶈兘鍔涚殑浜嬪姟瀹夊叏錛圓CID鍏煎錛夊瓨鍌ㄥ紩鎿庛侷nnoDB鎻愪緵row level lock錛屽茍涓斾篃鍦⊿ELECT璇彞鎻愪緵涓涓狾racle椋庢牸涓鑷寸殑闈為攣瀹氳銆傝繖浜涚壒鑹插鍔犱簡澶氱敤鎴烽儴緗插拰鎬ц兘銆傛病鏈夊湪InnoDB涓墿澶ч攣瀹氱殑闇瑕侊紝鍥犱負鍦↖nnoDB涓璻ow level lock閫傚悎闈炲父灝忕殑絀洪棿銆侷nnoDB涔熸敮鎸丗OREIGN KEY綰︽潫銆傚湪SQL鏌ヨ涓紝浣犲彲浠ヨ嚜鐢卞湴灝咺nnoDB綾誨瀷鐨勮〃涓庡叾瀹僊ySQL鐨勮〃鐨勭被鍨嬫販鍚堣搗鏉ワ紝鐢氳嚦鍦ㄥ悓涓涓煡璇腑涔熷彲浠ユ販鍚堛?br>InnoDB鏄負鍦ㄥ鐞嗗法澶ф暟鎹噺鏃惰幏寰楁渶澶фц兘鑰岃璁$殑銆傚畠鐨凜PU浣跨敤鏁堢巼闈炲父楂樸?br>InnoDB瀛樺偍寮曟搸宸茬粡瀹屽叏涓嶮ySQL鏈嶅姟鍣ㄦ暣鍚堬紝InnoDB瀛樺偍寮曟搸涓哄湪鍐呭瓨涓紦瀛樻暟鎹拰绱㈠紩鑰岀淮鎸佸畠鑷繁鐨勭紦鍐叉睜銆?InnoDB瀛樺偍瀹冪殑琛紗绱㈠紩鍦ㄤ竴涓〃絀洪棿涓紝琛ㄧ┖闂村彲浠ュ寘鍚暟涓枃浠訛紙鎴栧師濮嬬鐩樺垎鍖猴級銆傝繖涓嶮yISAM琛ㄤ笉鍚岋紝姣斿鍦∕yISAM琛ㄤ腑姣忎釜琛ㄨ瀛樺湪鍒嗙鐨勬枃浠朵腑銆侷nnoDB 琛ㄥ彲浠ユ槸浠諱綍澶у皬錛屽嵆浣垮湪鏂囦歡灝哄琚檺鍒朵負2GB鐨勬搷浣滅郴緇熶笂銆?br>璁稿闇瑕侀珮鎬ц兘鐨勫ぇ鍨嬫暟鎹簱绔欑偣涓婁嬌鐢ㄤ簡InnoDB寮曟搸銆傝憲鍚嶇殑Internet鏂伴椈绔欑偣Slashdot.org榪愯鍦↖nnoDB涓娿?Mytrix, Inc.鍦↖nnoDB涓婂瓨鍌ㄨ秴榪?TB鐨勬暟鎹紝榪樻湁涓浜涘叾瀹冪珯鐐瑰湪InnoDB涓婂鐞嗗鉤鍧囨瘡縐?00嬈℃彃鍏?鏇存柊鐨勮礋鑽楓?br>4.2.1 InnoDB鐗規?/font>
4.2.1.1 InnoDB Properties
1) 鏀寔浜嬪姟錛孉CID錛屽閿?br>2) Row level locks銆?
3) 鏀寔涓嶅悓鐨勯殧紱葷駭鍒?br>4) 鍜孧yISAM鐩告瘮闇瑕佽緝澶氱殑鍐呭瓨鍜岀鐩樼┖闂淬?br>5) 娌℃湁閿帇緙┿?br>6) 鏁版嵁鍜岀儲寮曢兘緙撳瓨鍦ㄥ唴瀛榟ash琛ㄤ腑銆?br>
4.2.1.2 InnoDB Good For
1) 闇瑕佷簨鍔$殑搴旂敤銆?br>2) 楂樺茍鍙戠殑搴旂敤銆?br>3) 鑷姩鎭㈠銆?br>4) 杈冨揩閫熺殑鍩轟簬涓婚敭鐨勬搷浣溿?br>
4.2.2 InnoDB浼樺寲瑕佺偣
1) 灝介噺浣跨敤short錛宨nteger鐨勪富閿?br>2) Load/Insert鏁版嵁鏃舵寜涓婚敭欏哄簭銆傚鏋滄暟鎹病鏈夋寜涓婚敭鎺掑簭錛屽厛鎺掑簭鐒跺悗鍐嶈繘琛屾暟鎹簱鎿嶄綔銆?br>3) 鍦↙oad鏁版嵁鏄負璁劇疆SET UNIQUE_CHECKS=0錛孲ET FOREIGN_KEY_CHECKS=0錛屽彲浠ラ伩鍏嶅閿拰鍞竴鎬х害鏉熸鏌ョ殑寮閿銆?br>4) 浣跨敤prefix keys銆傚洜涓篒nnoDB娌℃湁key鍘嬬緝鍔熻兘銆?br>
4.2.3 InnoDB鏈嶅姟鍣ㄧ璁懼畾
innodb_buffer_pool_size錛氳繖鏄疘nnoDB鏈閲嶈鐨勮緗紝瀵笽nnoDB鎬ц兘鏈夊喅瀹氭х殑褰卞搷銆傞粯璁ょ殑璁劇疆鍙湁8M錛屾墍浠ラ粯璁ょ殑鏁版嵁搴撹緗笅闈nnoDB鎬ц兘寰堝樊銆傚湪鍙湁InnoDB瀛樺偍寮曟搸鐨勬暟鎹簱鏈嶅姟鍣ㄤ笂闈紝鍙互璁劇疆60-80%鐨勫唴瀛樸傛洿綺劇‘涓鐐癸紝鍦ㄥ唴瀛樺閲忓厑璁哥殑鎯呭喌涓嬮潰璁劇疆姣擨nnoDB tablespaces澶?0%鐨勫唴瀛樺ぇ灝忋?br>
innodb_data_file_path錛氭寚瀹氳〃鏁版嵁鍜岀儲寮曞瓨鍌ㄧ殑絀洪棿錛屽彲浠ユ槸涓涓垨鑰呭涓枃浠躲傛渶鍚庝竴涓暟鎹枃浠跺繀欏繪槸鑷姩鎵╁厖鐨勶紝涔熷彧鏈夋渶鍚庝竴涓枃浠跺厑璁歌嚜鍔ㄦ墿鍏呫傝繖鏍鳳紝褰撶┖闂寸敤瀹屽悗錛岃嚜鍔ㄦ墿鍏呮暟鎹枃浠跺氨浼氳嚜鍔ㄥ闀匡紙浠?MB涓哄崟浣嶏級浠ュ綰抽澶栫殑鏁版嵁銆備緥濡傦細 innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend涓や釜鏁版嵁鏂囦歡鏀懼湪涓嶅悓鐨勭鐩樹笂銆傛暟鎹鍏堟斁鍦╥bdata1涓紝褰撹揪鍒?00M浠ュ悗錛屾暟鎹氨鏀懼湪ibdata2涓備竴鏃﹁揪鍒?0MB錛宨bdata2灝嗕互8MB涓哄崟浣嶈嚜鍔ㄥ闀褲傚鏋滅鐩樻弧浜嗭紝闇瑕佸湪鍙﹀鐨勭鐩樹笂闈㈠鍔犱竴涓暟鎹枃浠躲?br>
innodb_data_home_dir錛氭斁緗〃絀洪棿鏁版嵁鐨勭洰褰曪紝榛樿鍦╩ysql鐨勬暟鎹洰褰曪紝璁劇疆鍒板拰MySQL瀹夎鏂囦歡涓嶅悓鐨勫垎鍖哄彲浠ユ彁楂樻ц兘銆?br>
innodb_log_file_size錛氳鍙傛暟鍐沖畾浜唕ecovery speed銆傚お澶х殑璇漴ecovery灝變細姣旇緝鎱紝澶皬浜嗗獎鍝嶆煡璇㈡ц兘錛屼竴鑸彇256M鍙互鍏奸【鎬ц兘鍜宺ecovery鐨勯熷害
銆?br>innodb_log_buffer_size錛氱鐩橀熷害鏄緢鎱㈢殑錛岀洿鎺ュ皢log鍐欓亾紓佺洏浼氬獎鍝岻nnoDB鐨勬ц兘錛岃鍙傛暟璁懼畾浜唋og buffer鐨勫ぇ灝忥紝涓鑸?M銆傚鏋滄湁澶х殑blob鎿嶄綔錛屽彲浠ラ傚綋澧炲ぇ銆?br>
innodb_flush_logs_at_trx_commit=2錛?璇ュ弬鏁拌瀹氫簡浜嬪姟鎻愪氦鏃跺唴瀛樹腑log淇℃伅鐨勫鐞嗐?br>
1) =1鏃訛紝鍦ㄦ瘡涓簨鍔℃彁浜ゆ椂錛屾棩蹇楃紦鍐茶鍐欏埌鏃ュ織鏂囦歡錛屽鏃ュ織鏂囦歡鍋氬埌紓佺洏鎿嶄綔鐨勫埛鏂般俆ruly ACID銆傞熷害鎱€?br>2) =2鏃訛紝鍦ㄦ瘡涓簨鍔℃彁浜ゆ椂錛屾棩蹇楃紦鍐茶鍐欏埌鏂囦歡錛屼絾涓嶅鏃ュ織鏂囦歡鍋氬埌紓佺洏鎿嶄綔鐨勫埛鏂般傚彧鏈夋搷浣滅郴緇熷穿婧冩垨鎺夌數鎵嶄細鍒犻櫎鏈鍚庝竴縐掔殑浜嬪姟錛屼笉鐒朵笉浼氫涪澶變簨鍔°?br>3) =0鏃訛紝 鏃ュ織緙撳啿姣忕涓嬈″湴琚啓鍒版棩蹇楁枃浠訛紝騫朵笖瀵規棩蹇楁枃浠跺仛鍒扮鐩樻搷浣滅殑鍒鋒柊銆備換浣昺ysqld榪涚▼鐨勫穿婧冧細鍒犻櫎宕╂簝鍓嶆渶鍚庝竴縐掔殑浜嬪姟
innodb_file_per_table錛氬彲浠ュ瓨鍌ㄦ瘡涓狪nnoDB琛ㄥ拰瀹冪殑绱㈠紩鍦ㄥ畠鑷繁鐨勬枃浠朵腑銆?br>
transaction-isolation=READ-COMITTED: 濡傛灉搴旂敤紼嬪簭鍙互榪愯鍦≧EAD-COMMITED闅旂綰у埆錛屽仛姝よ瀹氫細鏈変竴瀹氱殑鎬ц兘鎻愬崌銆?br>
innodb_flush_method錛?璁劇疆InnoDB鍚屾IO鐨勬柟寮忥細
1) Default – 浣跨敤fsync錛堬級銆?br>2) O_SYNC 浠ync妯″紡鎵撳紑鏂囦歡錛岄氬父姣旇緝鎱€?br>3) O_DIRECT錛屽湪Linux涓婁嬌鐢―irect IO銆傚彲浠ユ樉钁楁彁楂橀熷害錛岀壒鍒槸鍦≧AID緋葷粺涓娿傞伩鍏嶉澶栫殑鏁版嵁澶嶅埗鍜宒ouble buffering錛坢ysql buffering 鍜孫S buffering錛夈?br>
innodb_thread_concurrency錛?InnoDB kernel鏈澶х殑綰跨▼鏁般?br>
1) 鏈灝戣緗負(num_disks+num_cpus)*2銆?br>2) 鍙互閫氳繃璁劇疆鎴?000鏉ョ姝㈣繖涓檺鍒?br>
5. 緙撳瓨
緙撳瓨鏈夊緢澶氱錛屼負搴旂敤紼嬪簭鍔犱笂閫傚綋鐨勭紦瀛樼瓥鐣ヤ細鏄捐憲鎻愰珮搴旂敤紼嬪簭鐨勬ц兘銆傜敱浜庡簲鐢ㄧ紦瀛樻槸涓涓瘮杈冨ぇ鐨勮瘽棰橈紝鎵浠ヨ繖涓閮ㄥ垎榪橀渶瑕佽繘涓姝ヨ皟鐮斻?

6. Reference
1) http://www.mysqlperformanceblog.com/
2) Advanced MySQL Performance Optimization, Peter Zaitsev, Tobias Asplund, MySQL Users Conference 2005
3) Improving MySQL Server Performance with Intel C++ Compiler錛孭eter Zaitsev錛孡inux World 2005
4) MySQL Performance Optimization, Peter Zaitsev, Percona Ltd, OPEN SOURCE DATABASE CONFERENCE 2006
5) MySQL Server Settings Tuning, Peter Zaitsev, co-founder, Percona Ltd, 2007
6) MySQL Reference Manual

]]>
jni璇曠敤璧勬枡http://m.shnenglu.com/wmuu/archive/2008/01/05/40462.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Sat, 05 Jan 2008 08:17:00 GMThttp://m.shnenglu.com/wmuu/archive/2008/01/05/40462.htmlhttp://m.shnenglu.com/wmuu/comments/40462.htmlhttp://m.shnenglu.com/wmuu/archive/2008/01/05/40462.html#Feedback0http://m.shnenglu.com/wmuu/comments/commentRss/40462.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/40462.html

緙栬瘧HelloWorld綾?br>
 1 public class HelloWorld {
 2     public native void displayHelloWorld();
 3 
 4     public native void printxx(String str);
 5 
 6     static {
 7         System.loadLibrary("hello");
 8         // System.load("hello");
 9     }
10 
11     public static void main(String[] args) {
12         HelloWorld hw = new HelloWorld();
13         hw.displayHelloWorld();
14         for (int i = 0;; ++i) {
15             hw
16                     .printxx("wo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kaowo kao");
17             if (i % 1000 == 0) {
18                 try {
19                     Thread.sleep(10);
20                 } catch (InterruptedException e) {
21                 }
22             }
23         }
24     }
25 }

瀵圭紪璇戝畬鐨刢lass鎵ц
javah HelloWorld

 1 /* DO NOT EDIT THIS FILE - it is machine generated */
 2 #include <jni.h>
 3 /* Header for class HelloWorld */
 4 
 5 #ifndef _Included_HelloWorld
 6 #define _Included_HelloWorld
 7 #ifdef __cplusplus
 8 extern "C" {
 9 #endif
10 /*
11  * Class:     HelloWorld
12  * Method:    displayHelloWorld
13  * Signature: ()V
14  */
15 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
16   (JNIEnv *, jobject);
17 
18 /*
19  * Class:     HelloWorld
20  * Method:    printxx
21  * Signature: (Ljava/lang/String;)V
22  */
23 JNIEXPORT void JNICALL Java_HelloWorld_printxx
24   (JNIEnv *, jobject, jstring);
25 
26 #ifdef __cplusplus
27 }
28 #endif
29 #endif
30 

緙栬瘧
cl -I%java_home%\include -I%java_home%\include\win32 -LDHelloWorld.c -Fehello.dll

 1 #include <jni.h>
 2 #include "HelloWorld.h"
 3 #include <stdio.h>
 4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
 5 {
 6 printf("Hello world!\n"); 
 7 return;
 8 }
 9 
10 JNIEXPORT void JNICALL Java_HelloWorld_printxx
11   (JNIEnv *env, jobject obj, jstring prompt){
12 
13 const char *str = (*env)->GetStringUTFChars(env, prompt, 0);
14   printf("%s",prompt);
15 (*env)->ReleaseStringUTFChars(env, prompt, str);
16   
17   return;
18   }
19   
20   




3錛嶫ava綾誨瀷鍜屾湰鍦扮被鍨嬪搴?br>銆銆
銆銆鍦ㄥ涓嬫儏鍐典笅錛岄渶瑕佸湪鏈湴鏂規硶涓簲鐢╦ava瀵硅薄鐨勫紩鐢紝灝變細鐢ㄥ埌綾誨瀷涔嬮棿鐨勮漿鎹細
銆銆
銆銆1錛塲ava鏂規硶閲岄潰灝嗗弬鏁頒紶鍏ユ湰鍦版柟娉曪紱
銆銆
銆銆2錛夊湪鏈湴鏂規硶閲岄潰鍒涘緩java瀵硅薄錛?br>銆銆
銆銆3錛夊湪鏈湴鏂規硶閲岄潰return緇撴灉緇檍ava紼嬪簭銆?br>銆銆
銆銆鍒嗕負濡備笅涓ょ鎯呭喌錛?br>銆銆
銆銆Java鍘熷綾誨瀷
銆銆
銆銆鍍廱ooleans銆乮ntegers銆乫loats絳変粠Java紼嬪簭涓紶鍒版湰鍦版柟娉曚腑鐨勫師濮嬬被鍨嬪彲浠ョ洿鎺ヤ嬌鐢紝涓嬮潰鏄痡ava涓殑鍘熷綾誨瀷鍜屾湰鍦版柟娉曚腑鐨勭被鍨嬬殑瀵瑰簲錛?br>銆銆
銆銆Java綾誨瀷銆銆鏈湴綾誨瀷銆銆瀛楄妭(bit)
銆銆
銆銆boolean銆銆 jboolean銆銆 8, unsigned
銆銆byte銆銆銆銆jbyte銆銆銆銆8
銆銆char銆銆銆銆jchar銆銆銆銆16, unsigned
銆銆short銆銆銆 jshort銆銆銆 16
銆銆int銆銆銆銆 jint銆銆銆銆 32
銆銆long銆銆銆銆jlong銆銆銆銆64
銆銆float銆銆銆 jfloat銆銆銆 32
銆銆double銆銆銆jdouble銆銆銆64
銆銆void銆銆銆銆void銆銆銆銆 n/a
銆銆
銆銆涔熷氨鏄濡傛灉鎴戝湪鏂規硶涓紶榪涘幓浜嗕竴涓猙oolean鐨勫弬鏁扮殑璇濓紝閭d箞鎴戝湪鏈湴鏂規硶涓氨鏈塲boolean綾誨瀷涓庝箣瀵瑰簲銆傚悓鐞嗭紝濡傛灉鍦ㄦ湰鍦版柟娉曚腑return涓涓猨int鐨勮瘽錛岄偅涔堝湪java涓氨榪斿洖涓涓猧nt綾誨瀷銆?涓浗緗戠璁哄潧
銆銆
銆銆Java瀵硅薄
銆銆
銆銆Java瀵硅薄鍋氫負寮曠敤琚紶閫掑埌鏈湴鏂規硶涓紝鎵鏈夎繖浜汮ava瀵硅薄鐨勫紩鐢ㄩ兘鏈変竴涓叡鍚岀殑鐖剁被鍨媕object(鐩稿綋浜巎ava涓殑Object綾繪槸鎵鏈夌被鐨勭埗綾諱竴鏍?銆備笅闈㈡槸JNI瀹炵幇鐨勪竴浜沯object鐨勫瓙綾伙細
銆銆
銆銆4錛庢湰鍦版柟娉曚腑璁塊棶java紼嬪簭涓殑鍐呭
銆銆
銆銆1)璁塊棶String瀵硅薄錛?br>銆銆
銆銆浠巎ava紼嬪簭涓紶榪囧幓鐨凷tring瀵硅薄鍦ㄦ湰鍦版柟娉曚腑瀵瑰簲鐨勬槸jstring綾誨瀷錛宩string綾誨瀷鍜宑涓殑char*涓嶅悓錛屾墍浠ュ鏋滀綘鐩存帴褰撳仛char*浣跨敤鐨勮瘽錛屽氨浼氬嚭閿欍傚洜姝ゅ湪浣跨敤涔嬪墠闇瑕佸皢jstring杞崲鎴愪負c/c++涓殑char*錛岃繖閲屼嬌鐢↗NIEnv鐨勬柟娉曡漿鎹€備笅闈㈡槸涓涓緥瀛愶細
銆銆
銆銆浠g爜3錛?br>銆銆
銆銆JNIEXPORT jstring JNICALL Java_Prompt_getLine
銆銆(JNIEnv *env, jobject obj, jstring prompt)
銆銆{
銆銆char buf[128];
銆銆const char *str = (*env)->GetStringUTFChars(env, prompt, 0);
銆銆printf("%s", str);
銆銆(*env)->ReleaseStringUTFChars(env, prompt, str);
銆銆
銆銆榪欓噷浣跨敤GetStringUTFChars鏂規硶灝嗕紶榪涙潵鐨刾rompt錛坖string綾誨瀷錛夎漿鎹㈡垚涓篣TF錛?鐨勬牸寮忥紝灝辮兘澶熷湪鏈湴鏂規硶涓嬌鐢ㄤ簡銆?br>銆銆
銆銆娉ㄦ剰錛氬湪浣跨敤瀹屼綘鎵杞崲涔嬪悗鐨勫璞′箣鍚庯紝闇瑕佹樉紺鴻皟鐢≧eleaseStringUTFChars鏂規硶錛岃JVM閲婃斁杞崲鎴怳TF-8鐨剆tring鐨勫璞$殑絀洪棿錛屽鏋滀笉鏄劇ず鐨勮皟鐢ㄧ殑璇濓紝JVM涓細涓鐩翠繚瀛樿瀵硅薄錛屼笉浼氳鍨冨溇鍥炴敹鍣ㄥ洖鏀訛紝鍥犳灝變細瀵艱嚧鍐呭瓨婧㈠嚭銆?

www.bitsCN.com


銆銆
銆銆涓嬮潰鏄闂甋tring鐨勪竴浜涙柟娉曪細
銆銆
銆銆鈼咷etStringUTFChars灝唈string杞崲鎴愪負UTF-8鏍煎紡鐨刢har*
銆銆
銆銆鈼咷etStringChars灝唈string杞崲鎴愪負Unicode鏍煎紡鐨刢har*
銆銆
銆銆鈼哛eleaseStringUTFChars閲婃斁鎸囧悜UTF-8鏍煎紡鐨刢har*鐨勬寚閽?br>銆銆
銆銆鈼哛eleaseStringChars閲婃斁鎸囧悜Unicode鏍煎紡鐨刢har*鐨勬寚閽?br>銆銆
銆銆鈼哊ewStringUTF鍒涘緩涓涓猆TF-8鏍煎紡鐨凷tring瀵硅薄
銆銆
銆銆鈼哊ewString鍒涘緩涓涓猆nicode鏍煎紡鐨凷tring瀵硅薄
銆銆
銆銆鈼咷etStringUTFLengt鑾峰彇UTF-8鏍煎紡鐨刢har*鐨勯暱搴?br>銆銆
銆銆鈼咷etStringLength鑾峰彇Unicode鏍煎紡鐨刢har*鐨勯暱搴?br>銆銆
銆銆2) 璁塊棶Array瀵硅薄錛?br>銆銆
銆銆鍜孲tring瀵硅薄涓鏍鳳紝鍦ㄦ湰鍦版柟娉曚腑涓嶈兘鐩存帴璁塊棶jarray瀵硅薄錛岃屾槸浣跨敤JNIEnv鎸囬拡鎸囧悜鐨勪竴浜涙柟娉曟潵鏄敤銆?br>銆銆
銆銆璁塊棶Java鍘熷綾誨瀷鏁扮粍錛?br>銆銆
銆銆1錛夎幏鍙栨暟緇勭殑闀垮害錛?br>銆銆
銆銆浠g爜4錛?br>銆銆
銆銆JNIEXPORT jint JNICALL Java_IntArray_sumArray
銆銆(JNIEnv *env, jobject obj, jintArray arr)
銆銆{
銆銆int i, sum = 0;
銆銆jsize len = (*env)->GetArrayLength(env, arr);
銆銆
銆銆濡備唬鐮?鎵紺猴紝榪欓噷鑾峰彇鏁扮粍鐨勯暱搴﹀拰鏅氱殑c璇█涓殑鑾峰彇鏁扮粍闀垮害涓嶄竴鏍鳳紝榪欓噷浣跨敤JNIEvn鐨勪竴涓嚱鏁癎etArrayLength銆?
bitsCN_com

銆銆
銆銆2錛夎幏鍙栦竴涓寚鍚戞暟緇勫厓绱犵殑鎸囬拡錛?br>銆銆
銆銆浠g爜4錛?br>銆銆
銆銆jint *body = (*env)->GetIntArrayElements(env, arr, 0);
銆銆
銆銆浣跨敤GetIntArrayElements鏂規硶鑾峰彇鎸囧悜arr鏁扮粍鍏冪礌鐨勬寚閽堬紝娉ㄦ剰璇ュ嚱鏁扮殑鍙傛暟錛岀涓涓槸JNIEnv錛岀浜屼釜鏄暟緇勶紝絎笁涓槸鏁扮粍閲岄潰絎笁涓槸鏁扮粍閲岄潰寮濮嬬殑鍏冪礌
銆銆
銆銆3錛変嬌鐢ㄦ寚閽堝彇鍑篈rray涓殑鍏冪礌
銆銆
銆銆浠g爜5錛?br>銆銆
銆銆for (i=0; i<len; i++) {
銆銆sum += body[i];
銆銆}
銆銆
銆銆榪欓噷浣跨敤灝卞拰鏅氱殑c涓殑鏁扮粍浣跨敤娌℃湁浠涔堜笉鍚屼簡
銆銆
銆銆4錛夐噴鏀炬暟緇勫厓绱犵殑寮曠敤
銆銆
銆銆浠g爜6錛?br>銆銆
銆銆(*env)->ReleaseIntArrayElements(env, arr, body, 0);
銆銆
銆銆鍜屾搷浣淪tring涓殑閲婃斁String鐨勫紩鐢ㄦ槸涓鏍風殑錛屾彁閱扟VM鍥炴敹arr鏁扮粍鍏冪礌鐨勫紩鐢ㄣ?br>銆銆
銆銆榪欓噷涓劇殑渚嬪瓙鏄嬌鐢╥nt鏁扮粍鐨勶紝鍚屾牱榪樻湁boolean銆乫loat絳夊搴旂殑鏁扮粍銆?br>銆銆
銆銆鑾峰彇鏁扮粍鍏冪礌鎸囬拡鐨勫搴斿叧緋伙細
銆銆
銆銆鍑芥暟銆銆銆銆銆銆銆銆銆銆銆銆鏁扮粍綾誨瀷
銆銆
銆銆GetBooleanArrayElements銆銆 boolean
銆銆GetByteArrayElements銆銆銆銆byte
銆銆GetCharArrayElements銆銆銆銆char bitsCN.nET涓浗緗戠鍗氬
銆銆GetShortArrayElements銆銆銆 short
銆銆GetIntArrayElements銆銆銆銆 int
銆銆GetLongArrayElements銆銆銆銆long
銆銆GetFloatArrayElements銆銆銆 float
銆銆GetDoubleArrayElements銆銆銆double
銆銆
銆銆閲婃斁鏁扮粍鍏冪礌鎸囬拡鐨勫搴斿叧緋伙細
銆銆Function銆銆銆銆銆銆銆銆銆銆銆銆Array Type
銆銆ReleaseBooleanArrayElements銆銆 boolean
銆銆ReleaseByteArrayElements銆銆銆銆byte
銆銆ReleaseCharArrayElements銆銆銆銆char
銆銆ReleaseShortArrayElements銆銆銆 short
銆銆ReleaseIntArrayElements銆銆銆銆 int
銆銆ReleaseLongArrayElements銆銆銆銆long
銆銆ReleaseFloatArrayElements銆銆銆 float
銆銆ReleaseDoubleArrayElements銆銆銆double
銆銆
銆銆璁塊棶鑷畾涔塉ava瀵硅薄鏁扮粍
銆銆
銆銆The JNI provides a separate set of functions to access elements of object arrays. You can use these functions to get and set individual object array elements.
銆銆
銆銆Note:銆You cannot get all the object array elements at once.
銆銆
銆銆GetObjectArrayElement returns the object element at a given index.
www_bitscn_com

銆銆
銆銆SetObjectArrayElement updates the object element at a given index.
銆銆
銆銆3) 璁塊棶Java瀵硅薄鐨勬柟娉曪細
銆銆
銆銆鍦ㄦ湰鍦版柟娉曚腑璋冪敤Java瀵硅薄鐨勬柟娉曠殑姝ラ錛?br>銆銆
銆銆鈶?鑾峰彇浣犻渶瑕佽闂殑Java瀵硅薄鐨勭被錛?br>銆銆
銆銆jclass cls = (*env)->GetObjectClass(env, obj);
銆銆
銆銆浣跨敤GetObjectClass鏂規硶鑾峰彇obj瀵瑰簲鐨刯class銆?br>銆銆
銆銆鈶?鑾峰彇MethodID錛?br>銆銆
銆銆jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V");
銆銆
銆銆浣跨敤GetMethdoID鏂規硶鑾峰彇浣犺浣跨敤鐨勬柟娉曠殑MethdoID銆傚叾鍙傛暟鐨勬剰涔夛細
銆銆
銆銆env??>JNIEnv
銆銆
銆銆cls??>絎竴姝ヨ幏鍙栫殑jclass
銆銆
銆銆"callback"??>瑕佽皟鐢ㄧ殑鏂規硶鍚?br>銆銆
銆銆"(I)V"??>鏂規硶鐨凷ignature
銆銆
銆銆鈶?璋冪敤鏂規硶錛?br>銆銆
銆銆(*env)->CallVoidMethod(env, obj, mid, depth);
銆銆
銆銆浣跨敤CallVoidMethod鏂規硶璋冪敤鏂規硶銆傚弬鏁扮殑鎰忎箟錛?br>銆銆
銆銆env??>JNIEnv
銆銆
銆銆obj??>閫氳繃鏈湴鏂規硶絀胯繃鏉ョ殑jobject
銆銆
銆銆mid??>瑕佽皟鐢ㄧ殑MethodID錛堝嵆絎簩姝ヨ幏寰楃殑MethodID錛?br>銆銆
銆銆depth??>鏂規硶闇瑕佺殑鍙傛暟錛堝搴旀柟娉曠殑闇姹傦紝娣誨姞鐩稿簲鐨勫弬鏁幫級 bitsCN.nET涓浗緗戠鍗氬
銆銆
銆銆娉細榪欓噷浣跨敤鐨勬槸CallVoidMethod鏂規硶璋冪敤錛屽洜涓烘病鏈夎繑鍥炲鹼紝濡傛灉鏈夎繑鍥炲肩殑璇濅嬌鐢ㄥ搴旂殑鏂規硶錛屽湪鍚庨潰浼氭彁鍒般?br>銆銆
銆銆鏂規硶鐨凷ignature
銆銆
銆銆鏂規硶鐨凷ignature鏄敱鏂規硶鐨勫弬鏁板拰榪斿洖鍊肩殑綾誨瀷鍏卞悓鏋勬垚鐨勶紝涓嬮潰鏄粬浠殑緇撴瀯錛?br>銆銆
銆銆"(argument-types)return-type"
銆銆
銆銆鍏朵腑Java紼嬪簭涓弬鏁扮被鍨嬪拰鍏跺搴旂殑鍊煎涓嬶細
銆銆
銆銆Signature銆銆Java涓殑綾誨瀷
銆銆Z銆銆銆銆銆銆銆boolean
銆銆B銆銆銆銆銆銆銆byte
銆銆C銆銆銆銆銆銆銆char
銆銆S銆銆銆銆銆銆銆short
銆銆I銆銆銆銆銆銆銆int
銆銆J銆銆銆銆銆銆銆long
銆銆F銆銆銆銆銆銆銆float
銆銆D銆銆銆銆銆銆銆double
銆銆L fully-qualified-class;銆銆 fully-qualified-class
銆銆
銆銆[ type銆銆type[]
銆銆
銆銆( arg-types ) ret-type銆銆method type
銆銆
銆銆涓涓狫ava綾葷殑鏂規硶鐨凷ignature鍙互閫氳繃javap鍛戒護鑾峰彇錛?br>銆銆
銆銆javap -s -p Java綾誨悕
銆銆
銆銆緇欒皟鐢ㄧ殑鍑芥暟浼犲弬鏁幫細
銆銆
銆銆閫氬父鎴戜滑鐩存帴鍦╩ethodID鍚庨潰灝嗚浼犵殑鍙傛暟娣誨姞鍦ㄥ悗闈紝浣嗘槸榪樻湁鍏朵粬鐨勬柟娉曚篃鍙互浼犲弬鏁幫細
銆銆
銆銆CallVoidMethodV鍙互鑾峰彇涓涓暟閲忓彲鍙樼殑鍒楄〃浣滀負鍙傛暟錛?www_bitscn_com
銆銆
銆銆CallVoidMethodA鍙互鑾峰彇涓涓猽nion銆?br>銆銆
銆銆璋冪敤闈欐佹柟娉曪細
銆銆
銆銆灝辨槸灝嗙浜屾鍜岀涓夋璋冪敤鐨勬柟娉曟敼涓哄搴旂殑錛?br>銆銆
銆銆GetStaticMethodID鑾峰彇瀵瑰簲鐨勯潤鎬佹柟娉曠殑ID
銆銆
銆銆CallStaticIntMethod璋冪敤闈欐佹柟娉?br>銆銆
銆銆璋冪敤瓚呯被鐨勬柟娉曪細
銆銆
銆銆鐢ㄧ殑姣旇緝灝戯紝鑷繁鐪嬪暒銆俕_^銆?br>銆銆
銆銆4)璁塊棶Java瀵硅薄鐨勫睘鎬э細
銆銆
銆銆璁塊棶Java瀵硅薄鐨勫睘鎬у拰璁塊棶Java瀵硅薄鐨勬柟娉曞熀鏈笂涓鏍鳳紝鍙渶瑕佸皢鍑芥暟閲岄潰鐨凪ethod鏀逛負Field鍗沖彲







]]>
qt4鍦╲s2008涓嬬殑浣跨敤璁板綍(鑽夌ǹ)http://m.shnenglu.com/wmuu/archive/2008/01/05/40431.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Fri, 04 Jan 2008 16:07:00 GMThttp://m.shnenglu.com/wmuu/archive/2008/01/05/40431.htmlhttp://m.shnenglu.com/wmuu/comments/40431.htmlhttp://m.shnenglu.com/wmuu/archive/2008/01/05/40431.html#Feedback0http://m.shnenglu.com/wmuu/comments/commentRss/40431.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/40431.htmlqt4 寮婧愮増鏈琿t-win-opensource-src-4.3.3

qt瀹樻柟緗戠珯 http://trolltech.com/


瑙e帇qt4銆?br>浣跨敤Visual Studio 2008 Command Prompt鍒板懡浠よ妯″紡銆?br>鍒皅t鐩綍涓?br>cd bin
configure   (寰堜箙)
namke   (寰堜箙)

寤虹珛欏圭洰

緙栬緫涓涓獂x.cpp鏂囦歡
鍦ㄦ枃浠剁洰褰曚笅鎵ц
qmake -project
qmake -t vcapp




涓嬮潰鐢ㄤ竴涓皬紼嬪簭嫻嬭瘯涓涓?br>
鍒涘緩鏂囦歡鍚嶄負hello.cpp錛岃緭鍏ュ涓嬩唬鐮侊細

#include <QApplication>
#include <QLabel>

int main(int argc, char **argv) {
  QApplication app(argc, argv);
  QLabel *label = new QLabel("Hello World!");
 
  label->show();

  return app.exec();
}
鐒跺悗
prompt> qmake -project -o hello.pro
prompt> qmake
prompt> nmake
灝變細鍦╠ebug鏂囦歡澶逛笅鐢熸垚涓涓?exe鏂囦歡銆?br>




qmake
鐢╲s2008鎵撳紑欏圭洰

緙栬緫ui
鎵цbin鐩綍涓嬬殑designer.exe
瀛樼洏錛?br>uic -o xxx.h xxx.ui
澶嶅埗鍒伴」鐩笅闈?br>鎵цqmake
鐢╲s2008鎵撳紑


瀛楃涓蹭嬌鐢╣bk緙栫爜(鍏ㄥ眬)
main鍑芥暟鍔犲叆
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));.



]]>
java classpath 鎵歸噺璁劇疆鑴氭湰http://m.shnenglu.com/wmuu/archive/2008/01/04/40401.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Fri, 04 Jan 2008 07:45:00 GMThttp://m.shnenglu.com/wmuu/archive/2008/01/04/40401.htmlhttp://m.shnenglu.com/wmuu/comments/40401.htmlhttp://m.shnenglu.com/wmuu/archive/2008/01/04/40401.html#Feedback0http://m.shnenglu.com/wmuu/comments/commentRss/40401.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/40401.html

YOUR_LIB=your_path

for jar in `ls $YOUR_LIB/*.jar`
do
      CLASSPATH="$CLASSPATH:""$jar"
done


windows :


SETLOCAL ENABLEDELAYEDEXPANSION
set LIB=xx
set CLASSPATH=.
FOR %%C IN (LIB\*.jar) DO set CLASSPATH=!CLASSPATH!;%%C
echo %CLASSPATH%



unix ksh:
鏆傛棤



]]>
java涓璂ouble-Checked Locking 鍙岄噸閿佸畾鐨勬祴璇曚唬鐮?/title><link>http://m.shnenglu.com/wmuu/archive/2007/01/19/17782.html</link><dc:creator>鍚瑧鍗婃鐧?/dc:creator><author>鍚瑧鍗婃鐧?/author><pubDate>Fri, 19 Jan 2007 06:59:00 GMT</pubDate><guid>http://m.shnenglu.com/wmuu/archive/2007/01/19/17782.html</guid><wfw:comment>http://m.shnenglu.com/wmuu/comments/17782.html</wfw:comment><comments>http://m.shnenglu.com/wmuu/archive/2007/01/19/17782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/wmuu/comments/commentRss/17782.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/wmuu/services/trackbacks/17782.html</trackback:ping><description><![CDATA[ <p> <br />聽</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #008080">聽1</span>聽<span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">聽test;<br /></span><span style="COLOR: #008080">聽2</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">聽3</span>聽<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">聽testClone聽{<br /></span><span style="COLOR: #008080">聽4</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000">聽isInit;<br /></span><span style="COLOR: #008080">聽5</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">聽6</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000">聽Foo聽foo;<br /></span><span style="COLOR: #008080">聽7</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">聽8</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">聽time聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">聽9</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">聽Foo聽{<br /></span><span style="COLOR: #008080">11</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">聽flg;<br /></span><span style="COLOR: #008080">12</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽Foo()聽{<br /></span><span style="COLOR: #008080">14</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽flg聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">15</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">聽{<br /></span><span style="COLOR: #008080">16</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Thread.sleep(time);<br /></span><span style="COLOR: #008080">17</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}聽</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">聽(InterruptedException聽e)聽{<br /></span><span style="COLOR: #008080">18</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">19</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">flg;<br /></span><span style="COLOR: #008080">20</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Foo聽inited</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">21</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">22</span>聽<span style="COLOR: #000000">聽聽聽聽}<br /></span><span style="COLOR: #008080">23</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">24</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">聽main(String[]聽args)聽</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">聽InterruptedException聽{<br /></span><span style="COLOR: #008080">25</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽testClone聽t聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">聽testClone();<br /></span><span style="COLOR: #008080">26</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽t.test();<br /></span><span style="COLOR: #008080">27</span>聽<span style="COLOR: #000000">聽聽聽聽}<br /></span><span style="COLOR: #008080">28</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">29</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">聽test()聽{<br /></span><span style="COLOR: #008080">30</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">聽(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">聽i聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;聽i聽</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;聽</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i)聽{<br /></span><span style="COLOR: #008080">31</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽WorkThread聽t聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">聽WorkThread();<br /></span><span style="COLOR: #008080">32</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽t.start();<br /></span><span style="COLOR: #008080">33</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">34</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">35</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">聽(;;)聽{<br /></span><span style="COLOR: #008080">36</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">聽{<br /></span><span style="COLOR: #008080">37</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Thread.sleep(</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">38</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}聽</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">聽(InterruptedException聽e)聽{<br /></span><span style="COLOR: #008080">39</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">40</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽time聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">41</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">synchronized</span><span style="COLOR: #000000">聽(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">)聽{<br /></span><span style="COLOR: #008080">42</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽foo聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">43</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">44</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">45</span>聽<span style="COLOR: #000000">聽聽聽聽}<br /></span><span style="COLOR: #008080">46</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">47</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽Foo聽bar()聽{<br /></span><span style="COLOR: #008080">48</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽Foo聽f聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽foo;<br /></span><span style="COLOR: #008080">49</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">聽(f聽</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)聽{<br /></span><span style="COLOR: #008080">50</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">synchronized</span><span style="COLOR: #000000">聽(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">)聽{<br /></span><span style="COLOR: #008080">51</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">聽(foo聽</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)聽{<br /></span><span style="COLOR: #008080">52</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽foo聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">聽Foo();<br /></span><span style="COLOR: #008080">53</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">54</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">聽foo;<br /></span><span style="COLOR: #008080">55</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">56</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">57</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">聽f;<br /></span><span style="COLOR: #008080">58</span>聽<span style="COLOR: #000000">聽聽聽聽}<br /></span><span style="COLOR: #008080">59</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">60</span>聽<span style="COLOR: #000000">聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">聽WorkThread聽</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">聽Thread聽{<br /></span><span style="COLOR: #008080">61</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">聽run()聽{<br /></span><span style="COLOR: #008080">62</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">聽(;;)聽{<br /></span><span style="COLOR: #008080">63</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">聽{<br /></span><span style="COLOR: #008080">64</span>聽<span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">65</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Foo聽f聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽bar();<br /></span><span style="COLOR: #008080">66</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">聽(f.flg聽</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)聽{<br /></span><span style="COLOR: #008080">67</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(f.flg);<br /></span><span style="COLOR: #008080">68</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">69</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">聽(Throwable聽e)聽{<br /></span><span style="COLOR: #008080">70</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();<br /></span><span style="COLOR: #008080">71</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">72</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">73</span>聽<span style="COLOR: #000000">聽聽聽聽聽聽聽聽}<br /></span><span style="COLOR: #008080">74</span>聽<span style="COLOR: #000000">聽聽聽聽}<br /></span><span style="COLOR: #008080">75</span>聽<span style="COLOR: #000000">}<br /></span><span style="COLOR: #008080">76</span>聽<span style="COLOR: #000000"></span></div> <p> <br /> <br />1.4.2jdk緙栬瘧鎵ц銆傞暱鏃墮棿鎵ц娌℃湁鍙戠幇鏈夌綉涓婃墍璇寸殑鐢變簬jit浼樺寲瀵艱嚧鐨勫綋鍒嗛厤瀹孎oo鐨勫唴瀛橈紝Foo鏋勯犲嚱鏁版湭鍒濆鍖栧畬鎴愬氨灝嗗叾鍦板潃璧嬪肩粰foo鐨勯敊璇傜浉淇¤繖鏃跺檍it宸茬粡瀵逛唬鐮佽繘琛屼簡浼樺寲銆?br /><br />鍥藉緗戝潃鍏充簬Double-Checked Locking鐨勬枃绔?a >http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a></p> <h4>A test case showing that it doesn't work</h4> <p>Paul Jakubik found an example of a use of double-checked locking that did not work correctly. <a >A slightly cleaned up version of that code is available here</a>. </p> <p>When run on a system using the Symantec JIT, it doesn't work. In particular, the Symantec JIT compiles </p> <center> <pre>singletons[i].reference = new Singleton();</pre> </center> <p>to the following (note that the Symantec JIT using a handle-based object allocation system). </p> <pre>0206106A mov eax,0F97E78h 0206106F call 01F6B210 ; allocate space for ; Singleton, return result in eax 02061074 mov dword ptr [ebp],eax ; EBP is &singletons[i].reference ; store the unconstructed object here. 02061077 mov ecx,dword ptr [eax] ; dereference the handle to ; get the raw pointer 02061079 mov dword ptr [ecx],100h ; Next 4 lines are 0206107F mov dword ptr [ecx+4],200h ; Singleton's inlined constructor 02061086 mov dword ptr [ecx+8],400h 0206108D mov dword ptr [ecx+0Ch],0F84030h </pre> <p>As you can see, the assignment to <tt>singletons[i].reference</tt> is performed before the constructor for Singleton is called. This is completely legal under the existing Java memory model, and also legal in C and C++ (since neither of them have a memory model). <br />涓婇潰鏄浗澶栫綉绔欑粰鍑虹殑jit浠g爜鍜岃鏄庛?br /><br /><br /></p> <img src ="http://m.shnenglu.com/wmuu/aggbug/17782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/wmuu/" target="_blank">鍚瑧鍗婃鐧?/a> 2007-01-19 14:59 <a href="http://m.shnenglu.com/wmuu/archive/2007/01/19/17782.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>寰蔣鐨勫瀮鍦劇殑鍐呭瓨綆$悊絳栫暐http://m.shnenglu.com/wmuu/archive/2006/11/05/14692.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Sun, 05 Nov 2006 10:42:00 GMThttp://m.shnenglu.com/wmuu/archive/2006/11/05/14692.htmlhttp://m.shnenglu.com/wmuu/comments/14692.htmlhttp://m.shnenglu.com/wmuu/archive/2006/11/05/14692.html#Feedback3http://m.shnenglu.com/wmuu/comments/commentRss/14692.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/14692.html鎴戞満鍣ㄧ殑鍐呭瓨鏄?.5g,騫蟲椂涓鑸彧鐢?00-700m.濡傛灉寮鏈虹姸鎬佷笅,浜虹寮姣旇緝涔?1-2灝忔椂),閭d釜鍨冨溇鐨勭瓥鐣ユ棤瑙嗗皢榪?g鐨勭┖闂插唴瀛?鎶婁笢瑗垮啓鍒拌櫄鎷熷唴瀛?紜洏)浜?鎵浠ユ瘡嬈¢噸鏂版搷浣滄満鍣ㄧ殑鏃跺?閮借蹇嶅彈閭g‖鐩樼殑鍜斿搾澹?濡傛灉鎶婅櫄鎷熷唴瀛樼浜?灝辨病榪欑幇璞′簡,浣嗘槸鎴戞湁鐨勬椂鍊欏張浼氱敤瓚呰繃1.5g鐨勫唴瀛樻墍浠ヤ笉寰椾笉寮铏氭嫙鍐呭瓨.



]]>
涓浜汭nformix SQL鍑芥暟鐨勭敤娉?/title><link>http://m.shnenglu.com/wmuu/archive/2006/10/30/14381.html</link><dc:creator>鍚瑧鍗婃鐧?/dc:creator><author>鍚瑧鍗婃鐧?/author><pubDate>Mon, 30 Oct 2006 06:44:00 GMT</pubDate><guid>http://m.shnenglu.com/wmuu/archive/2006/10/30/14381.html</guid><wfw:comment>http://m.shnenglu.com/wmuu/comments/14381.html</wfw:comment><comments>http://m.shnenglu.com/wmuu/archive/2006/10/30/14381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/wmuu/comments/commentRss/14381.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/wmuu/services/trackbacks/14381.html</trackback:ping><description><![CDATA[ <p> <br />涓銆佸唴閮ㄥ嚱鏁?<br />銆 1銆佸唴閮ㄥ悎璁″嚱鏁?<br />銆銆銆 1錛塁OUNT錛?錛夈銆銆銆銆銆銆銆銆銆榪斿洖琛屾暟 <br />銆銆銆 2錛塁OUNT錛圖ISTINCT COLNAME錛夈銆 榪斿洖鎸囧畾鍒椾腑鍞竴鍊肩殑涓暟 <br />銆銆銆 3錛塖UM錛圕OLNAME/EXPRESSION錛夈銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鏁板煎拰錛?<br />銆銆銆 4錛塖UM錛圖ISTINCT COLNAME錛夈銆銆 榪斿洖鎸囧畾鍒椾腑鍞竴鍊肩殑鍜?<br />銆銆銆 5錛堿VG錛圕OLNAME/EXPRESSION錛夈銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忎腑鐨勬暟鍊煎鉤鍧囧?<br />銆銆銆 6錛堿VG錛圖ISTINCT COLNAME錛夈銆銆 榪斿洖鎸囧畾鍒椾腑鍞竴鍊肩殑騫沖潎鍊?<br />銆銆銆 7錛塎IN錛圕OLNAME/EXPRESSION錛夈銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忎腑鐨勬暟鍊兼渶灝忓?<br />銆銆銆 8錛塎AX錛圕OLNAME/EXPRESSION錛夈銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忎腑鐨勬暟鍊兼渶澶у?<br />銆 2銆佹棩鏈熶笌鏃墮棿鍑芥暟 <br />銆銆銆 1錛塂AY錛圖ATE/DATETIME EXPRESSION錛夈銆銆榪斿洖鎸囧畾琛ㄨ揪寮忎腑鐨勫綋鏈堝嚑鍙?<br />銆銆銆 2錛塎ONTH錛圖ATE/DATETIME EXPRESSION錛夈銆榪斿洖鎸囧畾琛ㄨ揪寮忎腑鐨勬湀浠?<br />銆銆銆 3錛塝EAR錛圖ATE/DATETIME EXPRESSION錛夈銆 榪斿洖鎸囧畾琛ㄨ揪寮忎腑鐨勫勾浠?<br />銆銆銆 4錛塛EEKDAY錛圖ATE/DATETIME EXPRESSION錛夈榪斿洖鎸囧畾琛ㄨ揪寮忎腑鐨勫綋鍛ㄦ槦鏈熷嚑 <br />銆銆銆 5錛塂ATE錛圢OT DATE EXPRESSION錛夈銆銆銆銆榪斿洖鎸囧畾琛ㄨ揪寮忎唬琛ㄧ殑鏃ユ湡鍊?<br />銆銆銆 6錛塗ODAY銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆榪斿洖褰撳墠鏃ユ湡鐨勬棩鏈熷?<br />銆銆銆 7錛塁URRENT[first to last]銆銆銆銆銆銆銆 榪斿洖褰撳墠鏃ユ湡鐨勬棩鏈熸椂闂村?<br />銆銆銆 8錛塁OLNAME/EXPRESSION UNITS PRECISION銆 榪斿洖鎸囧畾綺懼害鐨勬寚瀹氬崟浣嶆暟 <br />銆銆銆 9錛塎DY錛圡ONTH錛孌AY錛孻EAR錛夈銆銆銆銆銆銆榪斿洖鏍囪瘑鎸囧畾騫淬佹湀銆佹棩鐨勬棩鏈熷?<br />銆銆銆 10錛塂ATETIME錛圖ATE/DATETIME EXPRESSION錛塅IRST TO LAST 榪斿洖琛ㄨ揪寮忎唬琛ㄧ殑鏃ユ湡鏃墮棿鍊?<br />銆銆銆 11錛塈NTERVAL錛圖ATE/DATETIME EXPRESSION錛塅IRST TO LAST 榪斿洖琛ㄨ揪寮忎唬琛ㄧ殑鏃墮棿闂撮殧鍊?<br />銆銆銆 12錛塃XTEND錛圖ATE/DATETIME EXPRESSION錛孾first to last]錛夎繑鍥炵粡榪囪皟鏁寸殑鏃ユ湡鎴栨棩鏈熸椂闂?/p> <p>鍊?</p> <p>銆銆銆 渚嬪瓙1銆佸拰UNITS鍚堢敤錛屾寚瀹氭棩鏈熸垨鏃墮棿鍗曚綅(year,month,day,hour,minute,seond,fraction)錛?<br />銆銆銆銆銆銆銆let tmp_date = today + 3 UNITS day <br />銆銆銆 渚嬪瓙2銆乴et tmp_date = MDY(10,30,2002)銆銆-- 2002-10-30 <br />銆銆銆 渚嬪瓙3銆乴et tmp_date = today + interval(7) day to day銆--褰撳墠鏃墮棿鍔犱笂7澶╋紱 <br />銆銆銆銆銆銆銆娉細璇ュ姛鑳戒笌1鐩鎬技錛?<br />銆銆銆 渚嬪瓙4銆丒XTEND杞崲鏃ユ湡鎴栨棩鏈熸椂闂村?<br />銆銆銆銆銆銆銆let tmp_inthour = extend(datetime1,hour to hour) </p> <p>銆 3銆佷唬鏁板嚱鏁?<br />銆銆銆1錛堿BS(COLNAME/EXPRESSION)錛氥銆銆銆銆銆 鍙栫粷瀵瑰?<br />銆銆銆2錛塎OD錛圕OLNAME/EXPRESSION錛孌IVISOR錛夈銆榪斿洖闄や互闄ゆ暟鍚庣殑妯★紙浣欐暟錛?<br />銆銆銆3錛塒OW錛圕OLNAME/EXPRESSION錛孍XPONENT錛夈 榪斿洖涓涓肩殑鎸囨暟鍐?<br />銆銆銆銆 渚嬪瓙錛歭et tmp_float = pow(2,3)銆--8.00000000 </p> <p>銆銆銆4錛塕OOT錛圕OLNAME/EXPRESSION錛孾index]錛夈 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鏍瑰?</p> <p>銆銆銆5錛塖QRT錛圕OLNAME/EXPRESSION錛夈銆銆銆銆銆榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑騫蟲柟鏍瑰?</p> <p>銆銆銆6錛塕OUND錛圕OLNAME/EXPRESSION錛孾factor]錛?榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鍦嗘暣鍖栧?<br />銆銆銆7錛塗RUNC錛圕OLNAME/EXPRESSION錛孾factor]錛?榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鎴熬鍊?<br />銆銆銆銆 璇存槑錛氫笂涓よ呬腑FACTOR鎸囧畾灝忔暟浣嶆暟錛岃嫢涓嶆寚瀹氾紝鍒欎負0錛涜嫢涓鴻礋鏁幫紝鍒欐暣鍖栧埌灝忔暟鐐瑰乏杈癸紱 <br />銆銆銆銆 娉細ROUND鏄湪鎸囧畾浣嶄笂榪涜4鑸?鍏ワ紱TRUNC鏄湪鎸囧畾浣嶄笂鐩存帴鎴柇錛?<br />銆銆銆銆銆let tmp_float = round(4.555,2) --4.56 <br />銆銆銆銆銆let tmp_float = trunc(4.555,2) --4.55 </p> <p>銆 4銆佹寚鏁頒笌瀵規暟鍑芥暟 <br />銆銆銆1錛塃XP錛圕OLNAME/EXPRESSION錛夈銆銆銆榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鎸囨暟鍊?<br />銆銆銆2錛塋OGN錛圕OLNAME/EXPRESSION錛夈銆銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鑷劧瀵規暟鍊?<br />銆銆銆3錛塋OG10錛圕OLNAME/EXPRESSION錛夈銆銆榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑搴曟暟浣?0鐨勫鏁板?</p> <p>銆 5銆佷笁瑙掑嚱鏁?<br />銆銆銆1錛塁OS錛圧ADIAN EXPRESSION錛夈銆銆銆銆榪斿洖鎸囧畾寮у害琛ㄨ揪寮忕殑浣欏雞鍊?<br />銆銆銆2錛塖IN錛圧ADIAN EXPRESSION錛夈銆銆銆銆姝e雞 <br />銆銆銆3錛塗AN錛圧ADIAN EXPRESSION錛夈銆銆銆銆姝e垏 <br />銆銆銆4錛堿COS錛圧ADIAN EXPRESSION錛夈銆銆銆 鍙嶄綑寮?<br />銆銆銆5錛堿SIN錛圧ADIAN EXPRESSION錛夈銆銆銆 鍙嶆寮?<br />銆銆銆6錛堿TAN錛圧ADIAN EXPRESSION錛夈銆銆銆 鍙嶆鍒?<br />銆銆銆7錛堿TAN2錛圶錛孻錛夈銆銆銆銆銆銆銆銆銆 榪斿洖鍧愭爣錛圶錛孻錛夌殑鏋佸潗鏍囪搴︾粍浠?</p> <p>銆 6銆佺粺璁″嚱鏁?<br />銆銆銆1錛塕ANGE錛圕OLNAME錛夈銆銆 榪斿洖鎸囧畾鍒楃殑鏈澶у間笌鏈灝忓間箣宸?= MAX錛圕OLNAME錛?MIN</p> <p>錛圕OLNAME錛?<br />銆銆銆2錛塚ARIANCE錛圕OLNAME錛夈銆榪斿洖鎸囧畾鍒楃殑鏍鋒湰鏂瑰樊錛?<br />銆銆銆3錛塖TDEV錛圕OLNAME錛夈銆銆 榪斿洖鎸囧畾鍒楃殑鏍囧噯鍋忓樊錛?</p> <p>銆 7銆佸叾浠栧嚱鏁?<br />銆銆銆1錛塙SER銆銆銆銆銆銆銆銆銆銆銆銆銆銆榪斿洖褰撳墠鐢ㄦ埛鍚?<br />銆銆銆2錛塇EX錛圕OLNAME/EXPRESSION錛夈銆銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鍗佸叚榪涘埗鍊?<br />銆銆銆3錛塋ENGTH錛圕OLNAME/EXPRESSION錛夈銆榪斿洖鎸囧畾瀛楃鍒楁垨琛ㄨ揪寮忕殑闀垮害 <br />銆銆銆4錛塗RIM錛圕OLNAME/EXPRESSION錛夈銆銆鍒犻櫎鎸囧畾鍒楁垨琛ㄨ揪寮忓墠鍚庣殑瀛楃 <br />銆銆銆5錛塁OLNAME/EXPRESSION || COLNAME/EXPRESSION銆榪斿洖騫跺湪涓璧風殑瀛楃錛?</p> <p>浜屻両DS鍐呴儴鍑芥暟 <br />銆 1銆丏BSERVERNAME銆銆銆榪斿洖鏁版嵁搴撴湇鍔″櫒鍚嶃let tmp_char=DBSERVERNAME <br />銆 2銆丼ITENAME銆銆銆銆銆榪斿洖鏁版嵁搴撴湇鍔″櫒鍚嶃let tmp_char=SITENAME <br />銆銆銆璇存槑錛氫袱鑰呭姛鑳界浉鍚岋紱 </p> <p>銆 3銆丏BINFO錛堚楽PECIAL_KEYWORD')銆銆銆榪斿洖鍙叧閿瓧鍊?<br />銆銆銆渚嬪瓙1錛氳繑鍥炴暟鎹腑姣忎釜琛ㄧ殑DBSPACE鍚嶇О <br />銆銆銆銆 select dbinfo('dbspace',partnum),tabname from systables <br />銆銆銆銆銆where tabid>99 and tabtype='T'銆(OK) <br />銆銆銆渚嬪瓙2錛氳繑鍥炰換浣曡〃涓彃鍏ョ殑鏈鍚庝竴涓猄ERIAL鍊?<br />銆銆銆銆銆select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1 <br />銆銆銆渚嬪瓙3錛氳繑鍥炴渶鍚庝竴涓猄ELECT錛孖NSERT錛孶PDATE錛孌ELETE鎴朎XECUTE PROCEDURE璇彞澶勭悊鐨勮鏁幫紱 <br />銆銆銆銆銆select dbinfo('sqlca.sqlerrd2') from systables where tabid=1; </p> <p> <br /> <br />聽</p> <h3>Date Manipulation</h3> <p>One of the more difficult concepts in Informix's handling of date and time values concerns the use of the variables in arithmetic or relational expressions. You can add or subtract DATE and DATETIME variables from each other. You can add or subtract an INTERVAL to a DATE or DATETIME. Table 1 shows the results of different types of operations on DATE and DATETIME values. </p> <p> <b>Table 1. Operations on DATE and DATETIME Variables</b> </p> <table cellspacing="1" cellpadding="5" border="1"> <tbody> <tr> <td> <font size="2"> <p> <b>First Operand</b> </p> </font> </td> <td> <font size="2"> <b>Operation</b> </font> </td> <td> <font size="2"> <p> <b>Second Operand</b> </p> </font> </td> <td> <font size="2"> <p> <b>Result</b> </p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATE</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATE</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATE</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">-</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+</p> </font> </td> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>CURRENT</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>DATETIME</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>UNITS</p> </font> </td> <td> <font size="2"> <p>DATETIME</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">+-</p> </font> </td> <td> <font size="2"> <p>UNITS</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> <tr> <td> <font size="2"> <p>INTERVAL</p> </font> </td> <td> <font size="2"> <p style="TEXT-ALIGN: center" align="center">*/</p> </font> </td> <td> <font size="2"> <p>NUMBER</p> </font> </td> <td> <font size="2"> <p>INTERVAL</p> </font> </td> </tr> </tbody> </table> <p>Notice that it's always okay to subtract one DATE or DATETIME value from another, as shown here: <font size="3"><pre>CURRENT - "07/01/1950" = INTERVAL (my age) "12/25/2000" 鈥?CURRENT = INTERVAL (how long till Xmas?)</pre><p>In such a case, the result is always an INTERVAL variable. It would make no sense to add two DATE or DATETIME values together. What could such an addition represent? </p><h3>UNITS Keyword</h3><p>When working with INTERVAL values, sometimes it is necessary to specify the precision with which you are dealing. For example, suppose you have the following field defined: <font size="3"></font></p><pre>lead_time INTERVAL DAY to DAY</pre><p>To add 10 days to the lead time you could use a SQL statement like this: <font size="3"></font></p><pre>SELECT lead_time + INTERVAL(10) DAY to DAY FROM orders</pre><p>You could achieve the same results using the UNITS keyword: <font size="3"></font></p><pre>SELECT lead_time + 10 UNITS DAY FROM orders </pre><p>Like most other programming languages, SQL often allows you to achieve the same ends with different statements. Sometimes the choice is one of personal style. Other times, one format fits in better with a structured style of code writing than another format does. </p><h3>Functions</h3><p>There are several built-in functions that affect date and time calculations. They can apply to either DATE or DATETIME values, with some exceptions. </p><h4>TODAY</h4><p>The TODAY function returns a DATE data value representing the current date. For example, you could execute a SQL function like this: <font size="3"></font></p><pre>UPDATE member SET change_date = TODAY WHER member_number = 12345</pre><h4>CURRENT</h4><p>The CURRENT function is similar to the TODAY function, except it returns a DATETIME value. Without specific qualifiers, the default is YEAR to FRACTION(3). You can change the precision by using the same YEAR to FRACTION qualifiers as you use for DATETIMES. Thus, this would be legal: <font size="3"></font></p><pre>SELECT * from member WHERE elapsed_time < CURRENT YEAR to DAY</pre><h4>DATE</h4><p>The DATE function takes as input a non-DATE value such as CHAR, DATETIME, or INTEGER and returns the corresponding DATE value. For example, the following SQL translates a CHARACTER value to a DATE: <font size="3"></font></p><pre>SELECT * from member WHERE enrollment_date > DATE('01/01/99')</pre><h4>DAY</h4><p>This function returns an integer representing the day of the month. Here's an example: <font size="3"></font></p><pre>SELECT * from member WHERE DAY(enrollment_date) > DAY(CURRENT)</pre><h4>MONTH</h4><p>This performs like the DAY function except it returns an integer between 1 and 12 representing the month: <font size="3"></font></p><pre>SELECT * from member WHERE enrollment_date > MONTH('01/01/99')</pre><h4>WEEKDAY</h4><p>This returns an integer representing the day of the week, with 0 being Sunday and 6 being Saturday: <font size="3"></font></p><pre>SELECT * from member WHERE WEEKDAY(enrollment_date) > WEEKDAY(CURRENT)</pre><h4>YEAR</h4><p>This function is like the ones above, only it returns a four-digit integer representing the year. </p><h4>EXTEND</h4><p>This function allows you to use different precisions in a DATETIME than you have specified in the declaration of the variable. It uses the same FIRST to LAST syntax as the DATETIME variables. This function is used to adjust the precision of a DATETIME variable to match the precision of an INTERVAL that you are using in a calculation. If the INTERVAL value has fields that are not part of the DATETIME value that you are using in a calculation, use the EXTEND function to adjust the precision of the DATETIME. EXTEND can either increase or decrease the precision of a DATETIME, depending upon the FIRST and LAST values. </p><p>Suppose myvariable is declared as DATETIME YEAR to DAY. If you want to add or subtract an INTERVAL defined as MINUTE, you first have to extend the DATETIME as follows: <font size="3"><pre>SELECT EXTEND(myvariable, YEAR to MINUTE) 鈥? INTERVAL(5) MINUTE to MINUTE FROM member</pre><p>The resulting value will be DATETIME YEAR to MINUTE. </p><h4>MDY</h4><p>The MDY function converts three-integer values into a DATE format. The first integer is the month and must evaluate to an integer in the range 1鈥?2. The second integer is the day and must evaluate to a number in the range from 1 to however many days are in the particular month (28鈥?1). The third expression is the year and must be a four-digit integer. Thus, the following MDY functions would each be valid: <font size="3"></font></p><pre>MDY(7,1,1950)</pre><p>returns a DATE of "07/01/50" <font size="3"></font></p><pre>MDY(MONTH(TODAY), 1, YEAR(TODAY))</pre><p>returns a DATE equal to the first day of the current month in the current year </p><p>Informix has extensive capabilities for manipulating dates and times, which can make for long and complex SQL statements. Using the three time-related data types and the time-related functions and keywords, you can accomplish almost any type of manipulation of time data. Unfortunately, getting there may be cryptic and painful. If you regularly do extensive date and time manipulation, you should understand all of the intricacies of these data structures. </p><p>Have fun!聽<br /></p></font></p></font><br />聽</p> <img src ="http://m.shnenglu.com/wmuu/aggbug/14381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/wmuu/" target="_blank">鍚瑧鍗婃鐧?/a> 2006-10-30 14:44 <a href="http://m.shnenglu.com/wmuu/archive/2006/10/30/14381.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>嫻佹皳杞歡,嫻佹皳緗戠珯http://m.shnenglu.com/wmuu/archive/2006/08/28/11790.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Mon, 28 Aug 2006 10:31:00 GMThttp://m.shnenglu.com/wmuu/archive/2006/08/28/11790.htmlhttp://m.shnenglu.com/wmuu/comments/11790.htmlhttp://m.shnenglu.com/wmuu/archive/2006/08/28/11790.html#Feedback1http://m.shnenglu.com/wmuu/comments/commentRss/11790.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/11790.html
http://www.duduw.com/
鍢熷槦緗?br />http://59.34.197.176/go6456.asp


]]>
mathcad13娉ㄥ唽鏂囦歡http://m.shnenglu.com/wmuu/archive/2006/07/25/10429.html鍚瑧鍗婃鐧?/dc:creator>鍚瑧鍗婃鐧?/author>Mon, 24 Jul 2006 16:04:00 GMThttp://m.shnenglu.com/wmuu/archive/2006/07/25/10429.htmlhttp://m.shnenglu.com/wmuu/comments/10429.htmlhttp://m.shnenglu.com/wmuu/archive/2006/07/25/10429.html#Feedback3http://m.shnenglu.com/wmuu/comments/commentRss/10429.htmlhttp://m.shnenglu.com/wmuu/services/trackbacks/10429.html聽 聽聽 聽 When asked for serial, click Next->Yes.
聽 聽聽 聽 After installation, when the license is required, please set the
聽 聽聽 聽 file "mcad13.dat" as the license.鈥?br />
"mcad13.dat"鏂囦歡璺緞錛毬?聽聽聽鍘熷瀹夎鏂囦歡鐩綍 \\Mathcad\program files\Mathsoft\Mathcad 13\mcad13.dat

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲激情社区| 亚洲激情电影在线| 亚洲毛片在线| 亚洲国产欧美日韩精品| 久久青草福利网站| 久久国产日韩| 久久综合网络一区二区| 男男成人高潮片免费网站| 欧美成人一区二区三区片免费| 免费欧美在线| 亚洲电影免费观看高清完整版| 亚洲国产一区二区视频| 日韩性生活视频| 亚洲尤物在线| 看片网站欧美日韩| 欧美日韩一区二区视频在线| 欧美午夜在线视频| 狠狠做深爱婷婷久久综合一区 | 久久久久国产精品人| 久久久久久久综合日本| 欧美va天堂在线| 国产精品久久久久久久久免费樱桃| 国产日本欧美在线观看| 亚洲国产一区在线| 午夜在线精品| 亚洲国产美女| 欧美一区二区三区四区在线| 欧美国产日韩在线| 国产亚洲欧美一区二区三区| 99精品视频网| 老司机凹凸av亚洲导航| 夜夜嗨av一区二区三区网页| 国产精品一区二区久久久| 国产午夜精品一区理论片飘花| 亚洲激情视频在线播放| 亚洲一区二区高清| 欧美a级片网| 亚洲欧美日韩国产一区二区三区 | 久久国产精品久久久久久久久久 | 男女激情久久| 国产精品自拍视频| 亚洲久色影视| 麻豆av一区二区三区久久| 99精品国产福利在线观看免费| 久久精品国产69国产精品亚洲| 欧美日韩在线不卡一区| 在线 亚洲欧美在线综合一区| 亚洲综合精品| 亚洲精品一区二区三| 老司机精品视频网站| 国产亚洲精品bv在线观看| 制服丝袜亚洲播放| 亚洲国产精品电影在线观看| 久久精品国产第一区二区三区最新章节| 欧美日在线观看| 亚洲视频国产视频| 日韩一级精品| 国产精品v日韩精品v欧美精品网站| 亚洲精品小视频在线观看| 亚洲高清123| 欧美国产成人在线| 一区二区黄色| 日韩亚洲不卡在线| 国产精品啊v在线| 一区二区三区四区五区精品| 亚洲日本欧美| 欧美图区在线视频| 新67194成人永久网站| 亚洲私人黄色宅男| 国产精品蜜臀在线观看| 亚洲欧美成人一区二区在线电影| 日韩亚洲综合在线| 欧美亚州在线观看| 性欧美18~19sex高清播放| 亚洲一区二区影院| 国产视频欧美视频| 榴莲视频成人在线观看| 久久久久99| 亚洲黄网站黄| 一本色道久久综合亚洲91| 国产精品theporn| 久久精品国产99精品国产亚洲性色| 欧美一区二区| 在线日韩欧美| 99av国产精品欲麻豆| 中文精品视频一区二区在线观看| 欧美性开放视频| 久久成人18免费观看| 欧美一二三视频| 亚洲国产成人精品久久久国产成人一区 | 欧美成人免费va影院高清| 亚洲精品久久久一区二区三区| 亚洲激情校园春色| 国产精品一区二区你懂得| 久久久久久久久久看片| 欧美成人精品影院| 午夜视频在线观看一区| 久久精品人人做人人爽| 日韩一级成人av| 午夜精品久久久| 亚洲国产第一页| 亚洲午夜精品网| 亚洲第一精品在线| 99re热这里只有精品免费视频| 国产亚洲日本欧美韩国| 最新国产拍偷乱拍精品| 国产色爱av资源综合区| 亚洲精品乱码久久久久久日本蜜臀| 国产精品一二三四区| 亚洲高清资源| 国产亚洲欧美日韩美女| 91久久线看在观草草青青| 国产三级欧美三级日产三级99| 91久久精品久久国产性色也91| 国产日韩三区| 夜夜精品视频| 亚洲欧洲精品天堂一级| 香蕉成人久久| 亚洲欧美国内爽妇网| 欧美精品不卡| 欧美成人免费小视频| 国产小视频国产精品| 中日韩午夜理伦电影免费| 日韩一区二区精品视频| 久久深夜福利免费观看| 久久国产精品久久精品国产| 欧美日韩一区二区三区视频 | 亚洲欧美文学| 亚洲综合第一| 欧美视频福利| 亚洲国产欧美一区| 亚洲激情啪啪| 欧美福利小视频| 欧美激情成人在线| 好看不卡的中文字幕| 亚洲在线1234| 欧美亚洲视频在线观看| 国产精品久久久久一区二区三区共| 亚洲精选大片| 中日韩美女免费视频网址在线观看| 欧美黄色小视频| 亚洲精品久久久久久久久| 亚洲精品一区二区三区在线观看| 久久人人97超碰国产公开结果| 久久久久久久精| 国语对白精品一区二区| 久久久久久久一区二区三区| 久久影院亚洲| 欧美精品免费看| 亚洲激情欧美| 亚洲午夜一区二区三区| 欧美日韩在线三区| 亚洲无线观看| 香蕉av777xxx色综合一区| 国产日韩av在线播放| 久久成人精品无人区| 美女爽到呻吟久久久久| 亚洲国内精品| 国产精品成人aaaaa网站| 国产精品99久久久久久有的能看| 亚洲欧美国产高清va在线播| 国产精一区二区三区| 久久久久女教师免费一区| 亚洲第一毛片| 亚洲欧美国产视频| 在线日韩av片| 欧美三级不卡| 久久九九热re6这里有精品| 免费观看久久久4p| 亚洲一区bb| 伊人成年综合电影网| 欧美ed2k| 午夜欧美大尺度福利影院在线看| 久久嫩草精品久久久精品| 最新成人av在线| 国产精品性做久久久久久| 久久久欧美精品sm网站| 日韩一二在线观看| 美乳少妇欧美精品| 亚洲欧美高清| 亚洲乱亚洲高清| 国产亚洲成年网址在线观看| 久久综合色播五月| 亚洲一区二区三区视频播放| 免费在线观看精品| 午夜国产精品视频免费体验区| 在线观看91精品国产入口| 欧美午夜不卡影院在线观看完整版免费| 欧美在线free| 中国av一区| 亚洲国产成人久久| 久久青草欧美一区二区三区| 亚洲三级影院| 国产亚洲人成a一在线v站| 欧美日韩精品一区视频| 老司机免费视频一区二区三区| 亚洲一区免费观看| 亚洲人成亚洲人成在线观看| 久久频这里精品99香蕉| 欧美夜福利tv在线|