锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓板瘜鐨勬暟鎹粨鏋勪嬌寰梤edis鐨勮璁¢潪甯哥殑鏈夎叮銆備笉鍍忓叧緋誨瀷鏁版嵁搴撻偅鏍鳳紝DEV鍜孌BA闇瑕佹繁搴︽矡閫氾紝review姣忚sql璇彞錛屼篃涓嶅儚memcached閭f牱錛屼笉闇瑕丏BA鐨勫弬涓庛俽edis鐨凞BA闇瑕佺啛鎮(zhèn)夋暟鎹粨鏋勶紝騫惰兘浜?jiǎn)瑙d娇鐢ㄥ満鏅?/p>
涓嬮潰涓句竴浜涘父瑙侀傚悎kv鏁版嵁搴撶殑渚嬪瓙鏉ヨ皥璋堥敭鍊肩殑璁捐錛屽茍涓庡叧緋誨瀷鏁版嵁搴撳仛涓涓姣旓紝鍙戠幇鍏崇郴鍨嬬殑涓嶈凍涔嬪銆?/p>
璁板綍鐢ㄦ埛鐧誨綍淇℃伅鐨勪竴涓郴緇燂紝 鎴戜滑綆鍖栦笟鍔″悗鍙暀涓嬩竴寮犺〃銆?/p>
user_id琛ㄧ殑涓婚敭錛宯ame琛ㄧず鐢ㄦ埛鍚嶏紝login_times琛ㄧず璇ョ敤鎴風(fēng)殑鐧誨綍嬈℃暟錛屾瘡嬈$敤鎴風(fēng)櫥褰曞悗錛宭ogin_times浼?xì)鑷锛岃宭ast_login_time鏇存柊涓哄綋鍓嶆椂闂淬?/p>
鍏崇郴鍨嬫暟鎹漿鍖栦負(fù)KV鏁版嵁搴擄紝鎴戠殑鏂規(guī)硶濡備笅錛?/p>
key 琛ㄥ悕錛氫富閿鹼細(xì)鍒楀悕 value 鍒楀?/p>
涓鑸嬌鐢ㄥ啋鍙峰仛鍒嗗壊絎︼紝榪欐槸涓嶆垚鏂囩殑瑙勭煩銆傛瘮濡傚湪php-admin for redis緋葷粺閲岋紝灝辨槸榛樿浠ュ啋鍙峰垎鍓詫紝浜庢槸user:1 user:2絳塳ey浼?xì)鍒嗘垚涓緇勩備簬鏄互涓婄殑鍏崇郴鏁版嵁杞寲鎴恔v鏁版嵁鍚庤褰曞涓嬶細(xì) 榪欐牱鍦ㄥ凡鐭ヤ富閿殑鎯呭喌涓嬶紝閫氳繃get銆乻et灝卞彲浠ヨ幏寰楁垨鑰呬慨鏀圭敤鎴風(fēng)殑鐧誨綍嬈℃暟鍜屾渶鍚庣櫥褰曟椂闂村拰濮撳悕銆?/p>
涓鑸敤鎴鋒槸鏃犳硶鐭ラ亾鑷繁鐨刬d鐨勶紝鍙煡閬撹嚜宸辯殑鐢ㄦ埛鍚嶏紝鎵浠ヨ繕蹇呴』鏈変竴涓粠name鍒癷d鐨勬槧灝勫叧緋伙紝榪欓噷鐨勮璁′笌涓婇潰鐨勬湁鎵涓嶅悓銆?/p>
榪欐牱姣忔鐢ㄦ埛鐧誨綍鐨勬椂鍊欎笟鍔¢昏緫濡備笅錛坧ython鐗堬級(jí)錛宺鏄痳edis瀵硅薄錛宯ame鏄凡緇忚幏鐭ョ殑鐢ㄦ埛鍚嶃?/p>
濡傛灉闇姹備粎浠呮槸宸茬煡id錛屾洿鏂版垨鑰呰幏鍙栨煇涓敤鎴風(fēng)殑鏈鍚庣櫥褰曟椂闂達(dá)紝鐧誨綍嬈℃暟錛屽叧緋誨瀷鍜宬v鏁版嵁搴撴棤鍟ュ尯鍒備竴涓氳繃btree pk錛屼竴涓氳繃hash錛屾晥鏋滈兘寰堝ソ銆?/p>
鍋囪鏈夊涓嬮渶姹傦紝鏌ユ壘鏈榪戠櫥褰曠殑N涓敤鎴楓傚紑鍙戜漢鍛樼湅鐪嬶紝榪樻槸姣旇緝綆鍗曠殑錛屼竴涓猻ql鎼炲畾銆?/p>
DBA浜?jiǎn)瑙i渶姹傚悗錛岃冭檻鍒頒互鍚庤〃濡傛灉姣旇緝澶э紝鎵浠ュ湪last_login_time涓婂緩涓儲(chǔ)寮曘傛墽琛岃鍒掍粠绱㈠紩leafblock 鐨勬渶鍙寵竟寮濮嬭闂甆鏉¤褰曪紝鍐嶅洖琛∟嬈★紝鏁堟灉寰堝ソ銆?/p>
榪囦簡(jiǎn)涓ゅぉ錛屽張鏉ヤ竴涓渶姹傦紝闇瑕佺煡閬撶櫥褰曟鏁版渶澶氱殑浜烘槸璋併傚悓鏍風(fēng)殑鍏崇郴鍨嬪浣曞鐞嗭紵DEV璇寸畝鍗?/p>
DBA涓鐪嬶紝鍙堣鍦╨ogin_time涓婂緩绔嬩竴涓儲(chǔ)寮曘傛湁娌℃湁瑙夊緱鏈夌偣闂鍛紝琛ㄤ笂姣忎釜瀛楁涓婇兘鏈夌礌寮曘?/p>
鍏崇郴鍨嬫暟鎹簱鐨勬暟鎹瓨鍌ㄧ殑鐨勪笉鐏墊椿鏄棶棰樼殑婧愬ご錛屾暟鎹粎鏈変竴縐嶅偍瀛樻柟娉曪紝閭e氨鏄寜琛屾帓鍒楃殑鍫嗚〃銆傜粺涓鐨勬暟鎹粨鏋勬剰鍛崇潃浣犲繀欏諱嬌鐢ㄧ儲(chǔ)寮曟潵鏀瑰彉sql鐨勮闂礬寰勬潵蹇熻闂煇涓垪鐨勶紝鑰岃闂礬寰勭殑澧炲姞鍙堟剰鍛崇潃浣犲繀欏諱嬌鐢ㄧ粺璁′俊鎭潵杈呭姪錛屼簬鏄竴澶у爢鐨勯棶棰樺氨鍑虹幇浜?jiǎn)銆?/p>
娌℃湁绱㈠紩錛屾病鏈夌粺璁¤鍒掞紝娌℃湁鎵ц璁″垝錛岃繖灝辨槸kv鏁版嵁搴撱?/p>
redis閲屽浣曟弧瓚充互涓婄殑闇姹傚憿錛?瀵逛簬姹傛渶鏂扮殑N鏉℃暟鎹殑闇姹傦紝閾捐〃鐨勫悗榪涘悗鍑虹殑鐗圭偣闈炲父閫傚悎銆傛垜浠湪涓婇潰鐨勭櫥褰曚唬鐮佷箣鍚庢坊鍔犱竴孌典唬鐮侊紝緇存姢涓涓櫥褰曠殑閾捐〃錛屾帶鍒朵粬鐨勯暱搴︼紝浣垮緱閲岄潰姘歌繙淇濆瓨鐨勬槸鏈榪戠殑N涓櫥褰曠敤鎴楓?/p>
榪欐牱闇瑕佽幏寰楁渶鏂扮櫥褰曚漢鐨刬d錛屽涓嬬殑浠g爜鍗沖彲 鍙﹀錛屾眰鐧誨綍嬈℃暟鏈澶氱殑浜猴紝瀵逛簬鎺掑簭錛岀Н鍒嗘榪欑被闇姹傦紝sorted set闈炲父鐨勯傚悎錛屾垜浠妸鐢ㄦ埛鍜岀櫥褰曟鏁扮粺涓瀛樺偍鍦ㄤ竴涓猻orted set閲屻?/p>
榪欐牱鍋囧鏌愪釜鐢ㄦ埛鐧誨綍錛岄澶栫淮鎶や竴涓猻orted set錛屼唬鐮佸姝?/p>
閭d箞濡備綍鑾峰緱鐧誨綍嬈℃暟鏈澶氱殑鐢ㄦ埛鍛紝閫嗗簭鎺掑垪鍙栫殑鎺掑悕絎琋鐨勭敤鎴峰嵆鍙?/p>
鍙互鐪嬪嚭錛孌EV闇瑕佹坊鍔?琛屼唬鐮侊紝鑰孌BA涓嶉渶瑕佽冭檻绱㈠紩浠涔堢殑銆?/p>
tag鍦ㄤ簰鑱旂綉搴旂敤閲屽挨鍏跺瑙侊紝濡傛灉浠ヤ紶緇熺殑鍏崇郴鍨嬫暟鎹簱鏉ヨ璁℃湁鐐逛笉浼︿笉綾匯傛垜浠互鏌ユ壘涔︾殑渚嬪瓙鏉ョ湅鐪媟edis鍦ㄨ繖鏂歸潰鐨勪紭鍔褲?/p>
涓ゅ紶琛紝涓寮燽ook鐨勬槑緇嗭紝涓寮爐ag琛紝琛ㄧず姣忔湰鐨則ag錛屼竴鏈功瀛樺湪澶氫釜tag銆?/p>
tag琛ㄨ嚜鍏寵仈2嬈″啀涓巄ook鍏寵仈錛岃繖涓猻ql榪樻槸姣旇緝澶嶆潅鐨勶紝濡傛灉瑕佹眰鍗硆uby錛屼絾涓嶆槸web鏂歸潰鐨勪功綾嶅憿錛?/p>
鍏崇郴鍨嬫暟鎹叾瀹炲茍涓嶅お閫傚悎榪欎簺闆嗗悎鎿嶄綔銆?/p>
棣栧厛book鐨勬暟鎹偗瀹氳瀛樺偍鐨勶紝鍜屼笂闈竴鏍楓?/p>
tag琛ㄦ垜浠嬌鐢ㄩ泦鍚堟潵瀛樺偍鏁版嵁錛屽洜涓洪泦鍚堟搮闀挎眰浜ら泦銆佸茍闆?/p>
閭d箞錛屽嵆灞炰簬ruby鍙堝睘浜巜eb鐨勪功錛?/p>
鍗沖睘浜巖uby錛屼絾涓嶅睘浜巜eb鐨勪功錛?/p>
灞炰簬ruby鍜屽睘浜巜eb鐨勪功鐨勫悎闆嗭紵 綆鍗曞埌涓嶈闃褲?/p>
浠庝互涓?涓緥瀛愬彲浠ョ湅鍑哄湪鏌愪簺鍦烘櫙閲岋紝鍏崇郴鍨嬫暟鎹簱鏄笉澶傚悎鐨勶紝浣犲彲鑳借兘澶熻璁″嚭婊¤凍闇姹傜殑緋葷粺錛屼絾鎬繪槸鎰熻鐨勬殑錛屾湁縐嶇敓鎼‖濂楃殑鎰熻銆?/p>
灝ゅ叾鐧誨綍緋葷粺榪欎釜渚嬪瓙錛岄綣佺殑涓轟笟鍔″緩绔嬬儲(chǔ)寮曘傛斁鍦ㄤ竴涓鏉傜殑緋葷粺閲岋紝ddl錛堝垱寤虹儲(chǔ)寮曪級(jí)鏈夊彲鑳芥敼鍙樻墽琛岃鍒掋傚鑷村叾瀹冪殑sql閲囩敤涓嶅悓鐨勬墽琛岃 鍒掞紝涓氬姟澶嶆潅鐨勮佺郴緇燂紝榪欎釜闂鏄緢闅鵑浼扮殑錛宻ql鍗冨鐧炬傝姹侱BA瀵硅繖涓郴緇熼噷鎵鏈夌殑sql閮戒簡(jiǎn)瑙o紝榪欑偣澶毦浜?jiǎn)銆傝繖涓棶棰樺湪oracle閲屽挨鍏朵弗 閲嶏紝姣忎釜DBA浼拌閮界鍒拌繃銆傚浜嶮ySQL榪欑被緋葷粺錛宒dl鍙堜笉鏂逛究錛堣櫧鐒剁幇鍦ㄦ湁online ddl鐨勬柟娉曪級(jí)銆傜鍒板ぇ琛紝DBA鍑屾櫒鐖搗鏉ュ湪涓氬姟浣庡嘲鏈熸搷浣滐紝榪欎簨鎴戞病灝戝共榪囥傝岃繖縐嶉渶姹傛斁鍒皉edis閲屽氨寰堝ソ澶勭悊錛孌BA浠呬粎瀵瑰閲忚繘琛岄浼板嵆鍙?/p>
鏈潵鐨凮LTP緋葷粺搴旇鏄痥v鍜屽叧緋誨瀷鐨勭揣瀵嗙粨鍚堛?/p>
鏉ユ簮錛?a target="_blank" rel="nofollow">www.hoterran.info 銆銆(1)闈為潤(rùn)鎬佸璞$殑鍒濆鍖?/p>
銆銆鍦ㄥ垱寤哄璞℃椂錛屽璞℃墍鍦ㄧ被鐨勬墍鏈夋暟鎹垚鍛樹(shù)細(xì)棣栧厛榪涜鍒濆鍖栥?/p>
銆銆鍩烘湰綾誨瀷錛?a class="bluekey" target="_blank">int鍨嬶紝鍒濆鍖栦負(fù)0銆?/p>
銆銆濡傛灉涓哄璞★細(xì)榪欎簺瀵硅薄浼?xì)鎸墮搴搴忓垵濮嬪寲銆?/p>
銆銆鈥誨湪鎵鏈夌被鎴愬憳鍒濆鍖栧畬鎴愪箣鍚庯紝鎵嶈皟鐢ㄦ湰綾葷殑鏋勯犳柟娉曞垱寤哄璞°?/p>
銆銆鏋勯犳柟娉曠殑浣滅敤灝辨槸鍒濆鍖栥?/p>
銆銆(2)闈?rùn)鎬佸璞$殑鍒濆鍖?/p>
銆銆紼嬪簭涓富綾葷殑闈?rùn)鎬佸彉閲忎細(xì)鍦╩ain鏂規(guī)硶鎵ц鍓嶅垵濮嬪寲銆?/p>
銆銆涓嶄粎絎竴嬈″垱寤哄璞℃椂錛岀被涓殑鎵鏈夐潤(rùn)鎬佸彉閲忛兘鍒濆鍖栵紝騫朵笖絎竴嬈¤闂煇綾?娉ㄦ剰姝ゆ椂鏈垱寤烘綾誨璞?鐨勯潤(rùn)鎬佸璞℃椂錛屾墍鏈夌殑闈?rùn)鎬佸彉閲忎篃瑕佹寜瀹冧滑鍦ㄧ被涓殑欏哄簭鍒濆鍖栥?/p>
銆銆2銆佺戶(hù)鎵挎椂錛屽璞$殑鍒濆鍖栬繃紼? 銆銆(1)涓葷被鐨勮秴綾葷敱楂樺埌浣庢寜欏哄簭鍒濆鍖栭潤(rùn)鎬佹垚鍛橈紝鏃犺闈?rùn)鎬佹垚鍛樻槸鍚︿負(fù)private銆?/p>
銆銆(2)涓葷被闈?rùn)鎬佹垚鍛樼殑鍒濆鍖栥?/p>
銆銆(3)涓葷被鐨勮秴綾葷敱楂樺埌浣庤繘琛岄粯璁ゆ瀯閫犳柟娉曠殑璋冪敤銆傛敞鎰忥紝鍦ㄨ皟鐢ㄦ瘡涓涓秴綾葷殑榛樿鏋勯犳柟娉曞墠錛屽厛榪涜瀵規(guī)瓚呯被榪涜闈為潤(rùn)鎬佸璞$殑鍒濆鍖栥?/p>
銆銆(4)涓葷被闈為潤(rùn)鎬佹垚鍛樼殑鍒濆鍖栥?/p>
銆銆(5)璋冪敤涓葷被鐨勬瀯閫犳柟娉曘?/p>
銆銆3銆佸叧浜庢瀯閫犳柟娉?/font> 銆銆(1)綾誨彲浠ユ病鏈夋瀯閫犳柟娉曪紝浣嗗鏋滄湁澶氫釜鏋勯犳柟娉曪紝灝卞簲璇ヨ鏈夐粯璁ょ殑鏋勯犳柟娉曪紝鍚﹀垯鍦ㄧ戶(hù)鎵挎綾繪椂錛岄渶瑕佸湪瀛愮被涓樉寮忚皟鐢ㄧ埗綾葷殑鏌愪竴涓潪榛樿鐨勬瀯閫犳柟娉曚簡(jiǎn)銆?/p>
銆銆(2)鍦ㄤ竴涓瀯閫犳柟娉曚腑錛屽彧鑳借皟鐢ㄤ竴嬈″叾浠栫殑鏋勯犳柟娉曪紝騫朵笖璋冪敤鏋勯犳柟娉曠殑璇彞蹇呴』鏄涓鏉¤鍙ャ?/p>
銆銆4銆佹湁鍏硃ublic銆乸rivate鍜宲rotected 銆銆(1)鏃爌ublic淇グ鐨勭被錛屽彲浠ヨ鍏朵粬綾昏闂殑鏉′歡鏄細(xì)a.涓や釜綾誨湪鍚屼竴鏂囦歡涓紝b.涓や釜綾誨湪鍚屼竴鏂囦歡澶逛腑錛宑.涓や釜綾誨湪鍚屼竴杞歡鍖呬腑銆?/p>
銆銆(2)protected錛氱戶(hù)鎵跨被鍜屽悓涓杞歡鍖呯殑綾誨彲璁塊棶銆?/p>
銆銆(3)濡傛灉鏋勯犳柟娉曚負(fù)private錛岄偅涔堝湪鍏朵粬綾諱腑涓嶈兘鍒涘緩璇ョ被鐨勫璞°?br />
銆銆5銆佹娊璞$被
銆銆(1)鎶借薄綾諱笉鑳藉垱寤哄璞°?/p>
銆銆(2)濡傛灉涓涓被涓竴涓柟娉曚負(fù)鎶借薄鏂規(guī)硶錛屽垯榪欎釜綾誨繀欏諱負(fù)abstract鎶借薄綾匯?/p>
銆銆(3)緇ф壙鎶借薄綾葷殑綾誨湪綾諱腑蹇呴』瀹炵幇鎶借薄綾諱腑鐨勬娊璞℃柟娉曘?/p>
銆銆(4)鎶借薄綾諱腑鍙互鏈夋娊璞℃柟娉曪紝涔熷彲鏈夐潪鎶借薄鏂規(guī)硶銆傛娊璞℃柟娉曚笉鑳戒負(fù)private銆?/p>
銆銆(5)闂存帴緇ф壙鎶借薄綾葷殑綾誨彲浠ヤ笉緇欏嚭鎶借薄鏂規(guī)硶鐨勫畾涔夈?/p>
銆銆6銆乫inal鍏抽敭瀛?/font>
銆銆(1)涓涓璞℃槸甯擱噺錛屼笉浠h〃涓嶈兘杞彉瀵硅薄鐨勬垚鍛橈紝浠嶅彲浠ュ叾鎴愬憳榪涜鎿嶄綔銆?/p>
銆銆(2)甯擱噺鍦ㄤ嬌鐢ㄥ墠蹇呴』璧嬪鹼紝浣嗛櫎浜?jiǎn)鍦ㄥ0鏄庣殑鍚屾椂鍒濆鍖栧锛尀鍙兘鍦ㄦ瀯閫犳柟娉曚腑鍒濆鍖栥?/p>
銆銆(3)final淇グ鐨勬柟娉曚笉鑳借閲嶇疆(鍦ㄥ瓙綾諱腑涓嶈兘鍑虹幇鍚屽悕鏂規(guī)硶)銆?/p>
銆銆(4)濡傛灉澹版槑涓涓被涓篺inal錛屽垯鎵鏈夌殑鏂規(guī)硶鍧囦負(fù)final錛屾棤璁哄叾鏄惁琚玣inal淇グ錛屼絾鏁版嵁鎴愬憳鍙負(fù)final涔熷彲涓嶆槸銆?/p>
銆銆7銆佹帴鍙?/font>interface(鐢╥mplements鏉ュ疄鐜版帴鍙? 銆銆(1)鎺ュ彛涓殑鎵鏈夋暟鎹潎涓簊tatic鍜宖inal鍗抽潤(rùn)鎬佸父閲忋傚敖綆″彲浠ヤ笉鐢ㄨ繖涓や釜鍏抽敭瀛椾慨楗幫紝浣嗗繀欏葷粰甯擱噺璧嬪垵鍊箋?/p>
銆銆(2)鎺ュ彛涓殑鏂規(guī)硶鍧囦負(fù)public錛屽湪瀹炵幇鎺ュ彛綾諱腑錛屽疄鐜版柟娉曞繀欏誨彲public鍏抽敭瀛椼?/p>
銆銆(3)濡傛灉浣跨敤public鏉ヤ慨楗版帴鍙o紝鍒欐帴鍙e繀欏諱笌鏂囦歡鍚嶇浉鍚屻?/p>
銆銆8銆佸閲嶇戶(hù)鎵?
銆銆(1)涓涓被緇ф壙浜?jiǎn)涓涓被鍜屾帴鍙o紝閭d箞蹇呴』灝嗙被鍐欏湪鍓嶉潰錛屾帴鍙e啓鍦ㄥ悗闈紝鎺ュ彛涔嬮棿鐢ㄩ楀彿鍒嗛殧銆?/p>
銆銆(2)鎺ュ彛涔嬮棿鍙閲嶇戶(hù)鎵匡紝娉ㄦ剰浣跨敤鍏抽敭瀛梕xtends銆?/p>
銆銆(3)涓涓被铏藉彧瀹炵幇浜?jiǎn)涓涓帴鍙o紝浣嗕笉浠呰瀹炵幇榪欎釜鎺ュ彛鐨勬墍鏈夋柟娉曪紝榪樿瀹炵幇榪欎釜鎺ュ彛緇ф壙鐨勬帴鍙g殑鏂規(guī)硶錛屾帴鍙d腑鐨勬墍鏈夋柟娉曞潎欏誨湪綾諱腑瀹炵幇銆?/p>
銆銆9銆佹帴鍙g殑宓屽叆 銆銆(1)鎺ュ彛宓屽叆綾諱腑錛屽彲浠ヤ嬌鐢╬rivate淇グ銆傛鏃訛紝鎺ュ彛鍙兘鍦ㄦ墍鍦ㄧ殑綾諱腑瀹炵幇錛屽叾浠栫被涓嶈兘璁塊棶銆?/p>
銆銆(2)宓屽叆鎺ュ彛涓殑鎺ュ彛涓瀹氳涓簆ublic銆? 銆銆(1)綾誨彲浠ュ祵鍏ュ彟涓涓被涓紝浣嗕笉鑳藉祵鍏ユ帴鍙d腑銆?/p>
銆銆} 銆銆(2)鍦ㄩ潤(rùn)鎬佹柟娉曟垨鍏朵粬鏂規(guī)硶涓紝涓嶈兘鐩存帴鍒涘緩鍐呴儴綾誨璞★紝闇閫氳繃鎵嬫鏉ュ彇寰椼?/p>
銆銆鎵嬫鏈変袱縐嶏細(xì) 銆銆class A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 鎴栬呮槸 A.B ab = a.new B(); } 銆銆(3)涓涓被緇ф壙浜?jiǎn)鍙︿竴涓被鐨勫唴閮ㄧ被錛屽洜涓鴻秴綾繪槸鍐呴儴綾伙紝鑰屽唴閮ㄧ被鐨勬瀯閫犳柟娉曚笉鑳借嚜鍔ㄨ璋冪敤錛岃繖鏍峰氨闇瑕佸湪瀛愮被鐨勬瀯閫犳柟娉曚腑鏄庣‘鐨勮皟鐢ㄨ秴綾葷殑鏋勯犳柟娉曘傛帴涓婁緥錛?/p>
銆銆class C extends A.B { C() { new A().super(); // 榪欎竴鍙ュ氨瀹炵幇浜?jiǎn)瀵瑰唴閮ňc繪瀯閫犳柟娉曠殑璋冪敤銆?} } 銆銆鏋勯犳柟娉曚篃鍙繖鏍峰啓錛?/p>
銆銆C(A a) { a.super(); } // 浣跨敤榪欎釜鏋勯犳柟娉曞垱寤哄璞★紝瑕佸啓鎴怌 c = new C(a); a鏄疉鐨勫璞°?/p>
銆銆11銆佸紓甯哥被JAVA涓櫎浜?jiǎn)RunTimeException綾伙紝鍏朵粬寮傚父鍧囬』鎹曡幏鎴栨姏鍑恒?/p>
鍘熸枃鍦板潃錛?a id="viewpost1_TitleUrl" href="/hill/archive/2009/06/12/281852.html" target="_blank">Struts2 濡備綍鍦?jdk 1.4涓嬭繍琛?/font> xwork-j4-2.0-beta-1.jar<J4鏂囦歡澶?gt; retrotranslator-runtime-1.0.8.jar<J4鏂囦歡澶?gt; retrotranslator-transformer-1.0.8.jar<J4鏂囦歡澶?gt; freemarker-2.3.4.jar<lib鏂囦歡澶?gt; commons-logging-1.0.4.jar<lib鏂囦歡澶?gt; backport-util-concurrent.jar<J4鏂囦歡澶?gt;聽(tīng)聽(tīng) 聽(tīng)聽(tīng) ognl-2.6.7.jar<lib鏂囦歡澶?gt; struts2-api-j4-2.0.1.jar<J4鏂囦歡澶?gt; 寮蹇?jī)杩囧ソ姣忎竴澶┿傘傘傘傘?/p>
鐢ㄦ埛鐧誨綍緋葷粺
鍏崇郴鍨嬫暟鎹簱鐨勮璁?/h4>
mysql> select * from login;
+---------+----------------+-------------+---------------------+
| user_id | name聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) | login_times | last_login_time聽(tīng)聽(tīng)聽(tīng)聽(tīng) |
+---------+----------------+-------------+---------------------+
|聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1 | ken thompson聽(tīng)聽(tīng) |聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 5 | 2011-01-01 00:00:00 |
|聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2 | dennis ritchie |聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1 | 2011-02-01 00:00:00 |
|聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 3 | Joe Armstrong聽(tīng) |聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2 | 2011-03-01 00:00:00 |
+---------+----------------+-------------+---------------------+
REDIS鐨勮璁?/h4>
Set login:1:login_times 5
Set login:2:login_times 1
Set login:3:login_times 2
Set login:1:last_login_time 2011-1-1
Set login:2:last_login_time 2011-2-1
Set login:3:last_login_time 2011-3-1
set login:1:name 鈥漦en thompson鈥?
set login:2:name 鈥渄ennis ritchie鈥?
set login:3:name 鈥滼oe Armstrong鈥?/pre>
set "login:ken thompson:id" 聽(tīng) 1
set "login:dennis ritchie:id"聽(tīng)聽(tīng)聽(tīng) 2
set "login:聽(tīng)Joe Armstrong:id"聽(tīng) 3
1
#鑾峰緱鐢ㄦ埛鐨刬d
2
uid
=
r.get(
"login:%s:id"
%
name)
3
#鑷鐢ㄦ埛鐨勭櫥褰曟鏁?/code>
4
ret
=
r.incr(
"login:%s:login_times"
%
uid)
5
#鏇存柊璇ョ敤鎴風(fēng)殑鏈鍚庣櫥褰曟椂闂?/code>
6
ret
=
r.
set
(
"login:%s:last_login_time"
%
uid, datetime.datetime.now())
1
select
*
from
login
order
by
last_login_time
desc
limit N
1
select
*
from
login
order
by
login_times
desc
limit N
1
#鎶婂綋鍓嶇櫥褰曚漢娣誨姞鍒伴摼琛ㄩ噷
2
ret
=
r.lpush(
"login:last_login_times"
, uid)
3
#淇濇寔閾捐〃鍙湁N浣?/code>
4
ret
=
redis.ltrim(
"login:last_login_times"
,
0
, N
-
1
)
1
last_login_list
=
r.lrange(
"login:last_login_times"
,
0
, N
-
1
)
zadd login:login_times 5 1
zadd login:login_times 1 2
zadd login:login_times 2 3
1
#瀵硅鐢ㄦ埛鐨勭櫥褰曟鏁拌嚜澧?
2
ret
=
r.zincrby(
"login:login_times"
,
1
, uid)
1
ret
=
r.zrevrange(
"login:login_times"
,
0
, N
-
1
)
TAG緋葷粺
鍏崇郴鍨嬫暟鎹簱鐨勮璁?/h4>
mysql> select * from book;
+------+-------------------------------+----------------+
| id | name | author |
+------+-------------------------------+----------------+
| 1 | The Ruby Programming Language | Mark Pilgrim |
| 1 | Ruby on rail | David Flanagan |
| 1 | Programming Erlang | Joe Armstrong |
+------+-------------------------------+----------------+
mysql> select * from tag;
+---------+---------+
| tagname | book_id |
+---------+---------+
| ruby | 1 |
| ruby | 2 |
| web | 2 |
| erlang | 3 |
+---------+---------+
鍋囧鏈夊姝ら渶姹傦紝鏌ユ壘鍗蟲(chóng)槸ruby鍙堟槸web鏂歸潰鐨勪功綾嶏紝濡傛灉浠ュ叧緋誨瀷鏁版嵁搴撲細(xì)鎬庝箞澶勭悊錛?/pre>
1
select
b.
name
, b.author聽(tīng)
from
tag t1, tag t2, book b
2
where
t1.tagname =
'web'
and
t2.tagname =
'ruby'
and
t1.book_id = t2.book_id
and
b.id = t1.book_id
REDIS鐨勮璁?/h4>
set book:1:name聽(tīng)聽(tīng) 聽(tīng)鈥漈he Ruby Programming Language鈥?
Set book:2:name聽(tīng)聽(tīng) 聽(tīng) 鈥漅uby on rail鈥?
Set book:3:name聽(tīng)聽(tīng) 聽(tīng) 鈥漃rogramming Erlang鈥?
set book:1:author聽(tīng)聽(tīng) 聽(tīng)鈥滿ark Pilgrim鈥?
Set book:2:author聽(tīng)聽(tīng) 聽(tīng) 鈥滵avid Flanagan鈥?
Set book:3:author聽(tīng)聽(tīng) 聽(tīng) 鈥滼oe Armstrong鈥?/pre>
sadd tag:ruby 1
sadd tag:ruby 2
sadd tag:web 2
sadd tag:erlang 3
inter_list = redis.sinter("tag.web", "tag:ruby")
inter_list = redis.sdiff("tag.ruby", "tag:web")
inter_list = redis.sunion("tag.ruby", "tag:web")
#
聽(tīng)娉ㄦ剰鍗曚綅闂錛氬綋闇瑕佽緗唴瀛樺ぇ灝忕殑鏃跺欙紝鍙互浣跨敤綾諱技1k銆?GB銆?M榪欐牱鐨勫父瑙佹牸寮忥細(xì)
#
#
聽(tīng)1k聽(tīng)=>聽(tīng)1000聽(tīng)bytes
#
聽(tīng)1kb聽(tīng)=>聽(tīng)1024聽(tīng)bytes
#
聽(tīng)1m聽(tīng)=>聽(tīng)1000000聽(tīng)bytes
#
聽(tīng)1mb聽(tīng)=>聽(tīng)1024*1024聽(tīng)bytes
#
聽(tīng)1g聽(tīng)=>聽(tīng)1000000000聽(tīng)bytes
#
聽(tīng)1gb聽(tīng)=>聽(tīng)1024*1024*1024聽(tīng)bytes
#
#
聽(tīng)鍗曚綅鏄ぇ灝忓啓涓嶆晱鎰熺殑錛屾墍浠?GB聽(tīng)1Gb聽(tīng)1gB鐨勫啓娉曢兘鏄畬鍏ㄤ竴鏍風(fēng)殑銆?/span>
#
聽(tīng)Redis榛樿鏄笉浣滀負(fù)瀹堟姢榪涚▼鏉ヨ繍琛岀殑銆備綘鍙互鎶婅繖涓緗負(fù)"yes"璁╁畠浣滀負(fù)瀹堟姢榪涚▼鏉ヨ繍琛屻?/span>
#
聽(tīng)娉ㄦ剰錛屽綋浣滀負(fù)瀹堟姢榪涚▼鐨勬椂鍊欙紝Redis浼?xì)鎶姌q涚▼ID鍐欏埌聽(tīng)/var/run/redis.pid
daemonize聽(tīng)no
#
聽(tīng)褰撲互瀹堟姢榪涚▼鏂瑰紡榪愯鐨勬椂鍊欙紝Redis浼?xì)鎶姌q涚▼ID榛樿鍐欏埌聽(tīng)/var/run/redis.pid銆備綘鍙互鍦ㄨ繖閲屼慨鏀硅礬寰勩?/span>
pidfile聽(tīng)
/
var
/
run
/
redis.pid
#
聽(tīng)鎺ュ彈榪炴帴鐨勭壒瀹氱鍙o紝榛樿鏄?379銆?/span>
#
聽(tīng)濡傛灉绔彛璁劇疆涓?錛孯edis灝變笉浼?xì)鐩戝惉TCP濂楁帴瀛椼?/span>
port聽(tīng)
6379
#
聽(tīng)濡傛灉浣犳兂鐨勮瘽錛屼綘鍙互緇戝畾鍗曚竴鎺ュ彛錛涘鏋滆繖閲屾病鍗曠嫭璁劇疆錛岄偅涔堟墍鏈夋帴鍙g殑榪炴帴閮戒細(xì)琚洃鍚?/span>
#
#
聽(tīng)bind聽(tīng)127.0.0.1
#
聽(tīng)鎸囧畾鐢ㄦ潵鐩戝惉榪炴帴鐨剈nxi濂楁帴瀛楃殑璺緞銆傝繖涓病鏈夐粯璁ゅ鹼紝鎵浠ュ鏋滀綘涓嶆寚瀹氱殑璇濓紝Redis灝變笉浼?xì)閫氳繃unix濂楁帴瀛楁潵鐩戝惉銆?/span>
#
#
聽(tīng)unixsocket聽(tīng)/tmp/redis.sock
#
聽(tīng)unixsocketperm聽(tīng)755
#
涓涓鎴風(fēng)絀洪棽澶氬皯縐掑悗鍏抽棴榪炴帴銆?0浠h〃紱佺敤錛屾案涓嶅叧闂?
timeout聽(tīng)0
#
聽(tīng)璁劇疆鏈嶅姟鍣ㄨ皟璇曠瓑綰с?/span>
#
聽(tīng)鍙兘鍊鹼細(xì)
#
聽(tīng)debug聽(tīng)錛堝緢澶氫俊鎭紝瀵瑰紑鍙?嫻嬭瘯鏈夌敤錛?/span>
#
聽(tīng)verbose聽(tīng)錛堝緢澶氱簿綆鐨勬湁鐢ㄤ俊鎭紝浣嗘槸涓嶅儚debug絳夌駭閭d箞澶氾級(jí)
#
聽(tīng)notice聽(tīng)錛堥傞噺鐨勪俊鎭紝鍩烘湰涓婃槸浣犵敓浜х幆澧冧腑闇瑕佺殑紼嬪害錛?/span>
#
聽(tīng)warning聽(tīng)錛堝彧鏈夊緢閲嶈/涓ラ噸鐨勪俊鎭細(xì)璁板綍涓嬫潵錛?/span>
loglevel聽(tīng)verbose
#
聽(tīng)鎸囨槑鏃ュ織鏂囦歡鍚嶃備篃鍙互浣跨敤"stdout"鏉ュ己鍒惰Redis鎶婃棩蹇椾俊鎭啓鍒版爣鍑嗚緭鍑轟笂銆?/span>
#
聽(tīng)娉ㄦ剰錛氬鏋淩edis浠ュ畧鎶よ繘紼嬫柟寮忚繍琛岋紝鑰屼綘璁劇疆鏃ュ織鏄劇ず鍒版爣鍑嗚緭鍑虹殑璇濓紝閭d箞鏃ュ織浼?xì)鍙戦佸埌聽(tīng)/dev/null
logfile聽(tīng)stdout
#
聽(tīng)瑕佷嬌鐢ㄧ郴緇熸棩蹇楄褰曞櫒寰堢畝鍗曪紝鍙璁劇疆聽(tīng)"syslog-enabled"聽(tīng)涓郝?yes"聽(tīng)灝卞彲浠ヤ簡(jiǎn)銆?/span>
#
聽(tīng)鐒跺悗鏍規(guī)嵁闇瑕佽緗叾浠栦竴浜泂yslog鍙傛暟灝卞彲浠ヤ簡(jiǎn)銆?/span>
#
聽(tīng)syslog-enabled聽(tīng)no
#
聽(tīng)鎸囨槑syslog韜喚
#
聽(tīng)syslog-ident聽(tīng)redis
#
聽(tīng)鎸囨槑syslog鐨勮澶囥傚繀欏繪槸涓涓敤鎴鋒垨鑰呮槸聽(tīng)LOCAL0聽(tīng)~聽(tīng)LOCAL7聽(tīng)涔嬩竴銆?/span>
#
聽(tīng)syslog-facility聽(tīng)local0
#
聽(tīng)璁劇疆鏁版嵁搴撲釜鏁般傞粯璁ゆ暟鎹簱鏄?tīng)DB聽(tīng)0錛屼綘鍙互閫氳繃SELECT聽(tīng)<dbid>聽(tīng)WHERE聽(tīng)dbid錛?锝?databases'聽(tīng)-聽(tīng)1錛夋潵涓烘瘡涓繛鎺ヤ嬌鐢ㄤ笉鍚岀殑鏁版嵁搴撱?/span>
databases聽(tīng)
16
#
###############################聽(tīng)蹇収聽(tīng)#################################
#
#
聽(tīng)鎶婃暟鎹簱瀛樺埌紓佺洏?shù)?
#
#
聽(tīng)聽(tīng)聽(tīng)save聽(tīng)<seconds>聽(tīng)<changes>
#
聽(tīng)聽(tīng)聽(tīng)
#
聽(tīng)聽(tīng)聽(tīng)浼?xì)鍦ㄦ寚瀹毧U掓暟鍜屾暟鎹彉鍖栨鏁頒箣鍚庢妸鏁版嵁搴撳啓鍒扮鐩樹(shù)笂銆?/span>
#
#
聽(tīng)聽(tīng)聽(tīng)涓嬮潰鐨勪緥瀛愬皢浼?xì)杩涜鎶婃暟鎹啓鍏ゼ倎鐩樼殑鎿嶄?
#
聽(tīng)聽(tīng)聽(tīng)900縐掞紙15鍒嗛挓錛変箣鍚庯紝涓旇嚦灝?嬈″彉鏇?/span>
#
聽(tīng)聽(tīng)聽(tīng)300縐掞紙5鍒嗛挓錛変箣鍚庯紝涓旇嚦灝?0嬈″彉鏇?/span>
#
聽(tīng)聽(tīng)聽(tīng)60縐掍箣鍚庯紝涓旇嚦灝?0000嬈″彉鏇?/span>
#
#
聽(tīng)聽(tīng)聽(tīng)娉ㄦ剰錛氫綘瑕佹兂涓嶅啓紓佺洏鐨勮瘽灝辨妸鎵鏈壜?save"聽(tīng)璁劇疆娉ㄩ噴鎺夊氨琛屼簡(jiǎn)銆?/span>
save聽(tīng)
900
聽(tīng)
1
save聽(tīng)
300
聽(tīng)
10
save聽(tīng)
60
聽(tīng)
10000
#
聽(tīng)褰撳鍑哄埌聽(tīng).rdb聽(tīng)鏁版嵁搴撴椂鏄惁鐢↙ZF鍘嬬緝瀛楃涓插璞°?/span>
#
聽(tīng)榛樿璁劇疆涓郝?yes"錛屾墍浠ュ嚑涔庢繪槸鐢熸晥鐨勩?/span>
#
聽(tīng)濡傛灉浣犳兂鑺傜渷CPU鐨勮瘽浣犲彲浠ユ妸榪欎釜璁劇疆涓郝?no"錛屼絾鏄鏋滀綘鏈夊彲鍘嬬緝鐨刱ey鐨勮瘽錛岄偅鏁版嵁鏂囦歡灝變細(xì)鏇村ぇ浜?jiǎn)銆?/span>
rdbcompression聽(tīng)yes
#
聽(tīng)鏁版嵁搴撶殑鏂囦歡鍚?/span>
dbfilename聽(tīng)dump.rdb
#
聽(tīng)宸ヤ綔鐩綍
#
#
聽(tīng)鏁版嵁搴撲細(xì)鍐欏埌榪欎釜鐩綍涓嬶紝鏂囦歡鍚嶅氨鏄笂闈㈢殑聽(tīng)"dbfilename"聽(tīng)鐨勫箋?/span>
#
聽(tīng)
#
聽(tīng)绱姞鏂囦歡涔熸斁榪欓噷銆?/span>
#
聽(tīng)
#
聽(tīng)娉ㄦ剰浣犺繖閲屾寚瀹氱殑蹇呴』鏄洰褰曪紝涓嶆槸鏂囦歡鍚嶃?/span>
dir聽(tīng).
/
#
################################聽(tīng)鍚屾聽(tīng)#################################
#
#
聽(tīng)涓諱粠鍚屾銆傞氳繃聽(tīng)slaveof聽(tīng)閰嶇疆鏉ュ疄鐜癛edis瀹炰緥鐨勫浠姐?/span>
#
聽(tīng)娉ㄦ剰錛岃繖閲屾槸鏈湴浠庤繙绔鍒舵暟鎹備篃灝辨槸璇達(dá)紝鏈湴鍙互鏈変笉鍚岀殑鏁版嵁搴撴枃浠躲佺粦瀹氫笉鍚岀殑IP銆佺洃鍚笉鍚岀殑绔彛銆?/span>
#
#
聽(tīng)slaveof聽(tīng)<masterip>聽(tīng)<masterport>
#
聽(tīng)濡傛灉master璁劇疆浜?jiǎn)瀵嗙爜锛堥氳繃涓嬮潰鐨劼?requirepass"聽(tīng)閫夐」鏉ラ厤緗級(jí)錛岄偅涔坰lave鍦ㄥ紑濮嬪悓姝ヤ箣鍓嶅繀欏昏繘琛岃韓浠介獙璇侊紝鍚﹀垯瀹冪殑鍚屾璇鋒眰浼?xì)琚嫆缁濄?/span>
#
#
聽(tīng)masterauth聽(tīng)<master-password>
#
聽(tīng)褰撲竴涓猻lave澶卞幓鍜宮aster鐨勮繛鎺ワ紝鎴栬呭悓姝ユ鍦ㄨ繘琛屼腑錛宻lave鐨勮涓烘湁涓ょ鍙兘錛?/span>
#
#
聽(tīng)1)聽(tīng)濡傛灉聽(tīng)slave-serve-stale-data聽(tīng)璁劇疆涓郝?yes"聽(tīng)(榛樿鍊?錛宻lave浼?xì)鐟?hù)緇搷搴斿鎴風(fēng)璇鋒眰錛屽彲鑳芥槸姝e父鏁版嵁錛屼篃鍙兘鏄繕娌¤幏寰楀肩殑絀烘暟鎹?/span>
#
聽(tīng)2)聽(tīng)濡傛灉聽(tīng)slave-serve-stale-data聽(tīng)璁劇疆涓郝?no"錛宻lave浼?xì)鍥炲?姝e湪浠巑aster鍚屾錛圫YNC聽(tīng)with聽(tīng)master聽(tīng)in聽(tīng)progress錛?鏉ュ鐞嗗悇縐嶈姹傦紝闄や簡(jiǎn)聽(tīng)I(yíng)NFO聽(tīng)鍜屄?tīng)SLAVEOF聽(tīng)鍛戒護(hù)銆?/span>
#
slave
-
serve
-
stale
-
data聽(tīng)yes
#
聽(tīng)slave鏍規(guī)嵁鎸囧畾鐨勬椂闂撮棿闅斿悜鏈嶅姟鍣ㄥ彂閫乸ing璇鋒眰銆?/span>
#
聽(tīng)鏃墮棿闂撮殧鍙互閫氳繃聽(tīng)repl_ping_slave_period聽(tīng)鏉ヨ緗?/span>
#
聽(tīng)榛樿10縐掋?/span>
#
#
聽(tīng)repl-ping-slave-period聽(tīng)10
#
聽(tīng)涓嬮潰鐨勯夐」璁劇疆浜?jiǎn)澶у潡鏁版嵁I/O銆佸悜master璇鋒眰鏁版嵁鍜宲ing鍝嶅簲鐨勮繃鏈熸椂闂淬?/span>
#
聽(tīng)榛樿鍊?0縐掋?/span>
#
#
聽(tīng)涓涓緢閲嶈鐨勪簨鎯呮槸錛氱‘淇濊繖涓兼瘮聽(tīng)repl-ping-slave-period聽(tīng)澶э紝鍚﹀垯master鍜宻lave涔嬮棿鐨勪紶杈撹繃鏈熸椂闂存瘮棰勬兂鐨勮鐭?/span>
#
#
聽(tīng)repl-timeout聽(tīng)60
#
#################################聽(tīng)瀹夊叏聽(tīng)###################################
#
聽(tīng)瑕佹眰瀹㈡埛绔湪澶勭悊浠諱綍鍛戒護(hù)鏃墮兘瑕侀獙璇佽韓浠藉拰瀵嗙爜銆?/span>
#
聽(tīng)榪欏湪浣犱俊涓嶈繃鏉ヨ鑰呮椂寰堟湁鐢ㄣ?/span>
#
#
聽(tīng)涓轟簡(jiǎn)鍚戝悗鍏煎鐨勮瘽錛岃繖孌靛簲璇ユ敞閲婃帀銆傝屼笖澶у鏁頒漢涓嶉渶瑕佽韓浠介獙璇侊紙渚嬪錛氬畠浠繍琛屽湪鑷繁鐨勬湇鍔″櫒涓娿傦級(jí)
#
聽(tīng)
#
聽(tīng)璀﹀憡錛氬洜涓篟edis澶揩浜?jiǎn)锛屾墍浠ュ眳蹇?jī)涓嶈壇鐨勪汉鍙互姣徔U掑皾璇?50k鐨勫瘑鐮佹潵璇曞浘鐮磋В瀵嗙爜銆?/span>
#
聽(tīng)榪欐剰鍛崇潃浣犻渶瑕佷竴涓珮寮哄害鐨勫瘑鐮侊紝鍚﹀垯鐮磋В澶鏄撲簡(jiǎn)銆?/span>
#
#
聽(tīng)requirepass聽(tīng)foobared
#
聽(tīng)鍛戒護(hù)閲嶅懡鍚?/span>
#
#
聽(tīng)鍦ㄥ叡浜幆澧冧笅錛屽彲浠ヤ負(fù)鍗遍櫓鍛戒護(hù)鏀瑰彉鍚嶅瓧銆傛瘮濡傦紝浣犲彲浠ヤ負(fù)聽(tīng)CONFIG聽(tīng)鏀逛釜鍏朵粬涓嶅お瀹規(guī)槗鐚滃埌鐨勫悕瀛楋紝榪欐牱浣犺嚜宸變粛鐒跺彲浠ヤ嬌鐢紝鑰屽埆浜哄嵈娌℃硶鍋氬潖浜嬩簡(jiǎn)銆?/span>
#
#
聽(tīng)渚嬪:
#
#
聽(tīng)rename-command聽(tīng)CONFIG聽(tīng)b840fc02d524045429941cc15f59e41cb7be6c52
#
#
聽(tīng)鐢氳嚦涔熷彲浠ラ氳繃緇欏懡浠よ祴鍊間竴涓┖瀛楃涓叉潵瀹屽叏紱佺敤榪欐潯鍛戒護(hù)錛?/span>
#
#
聽(tīng)rename-command聽(tīng)CONFIG聽(tīng)""
#
##################################聽(tīng)闄愬埗聽(tīng)####################################
#
#
聽(tīng)璁劇疆鏈澶氬悓鏃惰繛鎺ュ鎴風(fēng)鏁伴噺銆?/span>
#
聽(tīng)榛樿娌℃湁闄愬埗錛岃繖涓叧緋誨埌Redis榪涚▼鑳藉鎵撳紑鐨勬枃浠舵弿榪扮鏁伴噺銆?/span>
#
聽(tīng)鐗規(guī)畩鍊?0"琛ㄧず娌℃湁闄愬埗銆?/span>
#
聽(tīng)涓鏃﹁揪鍒拌繖涓檺鍒訛紝Redis浼?xì)鍏抽棴鎵鏈夋柊榪炴帴騫跺彂閫侀敊璇?杈懼埌鏈澶х敤鎴鋒暟涓婇檺錛坢ax聽(tīng)number聽(tīng)of聽(tīng)clients聽(tīng)reached錛?
#
#
聽(tīng)maxclients聽(tīng)128
#
聽(tīng)涓嶈鐢ㄦ瘮璁劇疆鐨勪笂闄愭洿澶氱殑鍐呭瓨銆備竴鏃﹀唴瀛樹(shù)嬌鐢ㄨ揪鍒頒笂闄愶紝Redis浼?xì)鏍规嵁閫夊畾鐨勫洖鏀剁瓥鐣ワ紙鍙傝錛歮axmemmory-policy錛夊垹闄ey銆?/span>
#
#
聽(tīng)濡傛灉鍥犱負(fù)鍒犻櫎絳栫暐闂Redis鏃犳硶鍒犻櫎key錛屾垨鑰呯瓥鐣ヨ緗負(fù)聽(tīng)"noeviction"錛孯edis浼?xì)鍥炲闇瑕佹洿澶氬唴瀛樼殑閿欒淇℃伅緇欏懡浠ゃ?/span>
#
聽(tīng)渚嬪錛孲ET,LPUSH絳夌瓑銆備絾鏄細(xì)緇х畫(huà)鍚堢悊鍝嶅簲鍙鍛戒護(hù)錛屾瘮濡傦細(xì)GET銆?/span>
#
#
聽(tīng)鍦ㄤ嬌鐢≧edis浣滀負(fù)LRU緙撳瓨錛屾垨鑰呬負(fù)瀹炰緥璁劇疆浜?jiǎn)纭у唴瀛橀檺鍒剁殑鏃跺欙紙浣跨敤聽(tīng)"noeviction"聽(tīng)絳栫暐錛夌殑鏃跺欙紝榪欎釜閫夐」榪樻槸婊℃湁鐢ㄧ殑銆?/span>
#
#
聽(tīng)璀﹀憡錛氬綋涓鍫唖lave榪炰笂杈懼埌鍐呭瓨?shù)笂闄愮殑瀹炰緥鐨勬椂鍊欙紝鍝嶅簲slave闇瑕佺殑杈撳嚭緙撳瓨鎵闇鍐呭瓨?shù)笉璁〗帡鍦ㄤ娇鐢ㄥ唴瀛樺綋涓?/span>
#
聽(tīng)榪欐牱褰撹姹備竴涓垹闄ゆ帀鐨刱ey鐨勬椂鍊欏氨涓嶄細(xì)瑙﹀彂緗戠粶闂錛忛噸鏂板悓姝ョ殑浜嬩歡錛岀劧鍚巗lave灝變細(xì)鏀跺埌涓鍫嗗垹闄ゆ寚浠わ紝鐩村埌鏁版嵁搴撶┖浜?jiǎn)湄?fù)姝€?/span>
#
#
聽(tīng)綆鑰岃█涔嬶紝濡傛灉浣犳湁slave榪炰笂涓涓猰aster鐨勮瘽錛岄偅寤鴻浣犳妸master鍐呭瓨闄愬埗璁懼皬鐐瑰効錛岀‘淇濇湁瓚沖鐨勭郴緇熷唴瀛樼敤浣滆緭鍑虹紦瀛樸?/span>
#
聽(tīng)錛堝鏋滅瓥鐣ヨ緗負(fù)"noeviction"鐨勮瘽灝變笉鏃犳墍璋撲簡(jiǎn)錛?/span>
#
#
聽(tīng)maxmemory聽(tīng)<bytes>
#
聽(tīng)鍐呭瓨絳栫暐錛氬鏋滆揪鍒板唴瀛橀檺鍒朵簡(jiǎn)錛孯edis濡備綍鍒犻櫎key銆備綘鍙互鍦ㄤ笅闈簲涓瓥鐣ラ噷闈㈤夛細(xì)
#
聽(tīng)
#
聽(tīng)volatile-lru聽(tīng)->聽(tīng)鏍規(guī)嵁LRU綆楁硶鐢熸垚鐨勮繃鏈熸椂闂存潵鍒犻櫎銆?/span>
#
聽(tīng)allkeys-lru聽(tīng)->聽(tīng)鏍規(guī)嵁LRU綆楁硶鍒犻櫎浠諱綍key銆?/span>
#
聽(tīng)volatile-random聽(tīng)->聽(tīng)鏍規(guī)嵁榪囨湡璁劇疆鏉ラ殢鏈哄垹闄ey銆?/span>
#
聽(tīng)allkeys->random聽(tīng)->聽(tīng)鏃犲樊鍒殢鏈哄垹銆?/span>
#
聽(tīng)volatile-ttl聽(tīng)->聽(tīng)鏍規(guī)嵁鏈榪戣繃鏈熸椂闂存潵鍒犻櫎錛堣緟浠TL錛?/span>
#
聽(tīng)noeviction聽(tīng)->聽(tīng)璋佷篃涓嶅垹錛岀洿鎺ュ湪鍐欐搷浣滄椂榪斿洖閿欒銆?/span>
#
聽(tīng)
#
聽(tīng)娉ㄦ剰錛氬鎵鏈夌瓥鐣ユ潵璇達(dá)紝濡傛灉Redis鎵句笉鍒板悎閫傜殑鍙互鍒犻櫎鐨刱ey閮戒細(xì)鍦ㄥ啓鎿嶄綔鏃惰繑鍥炰竴涓敊璇?/span>
#
#
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)榪欓噷娑夊強(qiáng)鐨勫懡浠わ細(xì)set聽(tīng)setnx聽(tīng)setex聽(tīng)append
#
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)incr聽(tīng)decr聽(tīng)rpush聽(tīng)lpush聽(tīng)rpushx聽(tīng)lpushx聽(tīng)linsert聽(tīng)lset聽(tīng)rpoplpush聽(tīng)sadd
#
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)sinter聽(tīng)sinterstore聽(tīng)sunion聽(tīng)sunionstore聽(tīng)sdiff聽(tīng)sdiffstore聽(tīng)zadd聽(tīng)zincrby
#
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)zunionstore聽(tīng)zinterstore聽(tīng)hset聽(tīng)hsetnx聽(tīng)hmset聽(tīng)hincrby聽(tīng)incrby聽(tīng)decrby
#
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)getset聽(tīng)mset聽(tīng)msetnx聽(tīng)exec聽(tīng)sort
#
#
聽(tīng)榛樿鍊煎涓嬶細(xì)
#
#
聽(tīng)maxmemory-policy聽(tīng)volatile-lru
#
聽(tīng)LRU鍜屾渶灝廡TL綆楁硶鐨勫疄鐜伴兘涓嶆槸寰堢簿紜紝浣嗘槸寰堟帴榪戯紙涓轟簡(jiǎn)鐪佸唴瀛橈級(jí)錛屾墍浠ヤ綘鍙互鐢ㄦ牱渚嬪仛嫻嬭瘯銆?/span>
#
聽(tīng)渚嬪錛氶粯璁edis浼?xì)妫鏌ヤ笁涓猭ey鐒跺悗鍙栨渶鏃х殑閭d釜錛屼綘鍙互閫氳繃涓嬮潰鐨勯厤緗」鏉ヨ緗牱鏈殑涓暟銆?/span>
#
#
聽(tīng)maxmemory-samples聽(tīng)3
#
#############################聽(tīng)綰瘡鍔犳ā寮徛?##############################
#
聽(tīng)榛樿鎯呭喌涓嬶紝Redis鏄紓姝ョ殑鎶婃暟鎹鍑哄埌紓佺洏?shù)笂銆傝繖縐嶆儏鍐典笅錛屽綋Redis鎸傛帀鐨勬椂鍊欙紝鏈鏂扮殑鏁版嵁灝變涪浜?jiǎn)銆?/span>
#
聽(tīng)濡傛灉涓嶅笇鏈涗涪鎺変換浣曚竴鏉℃暟鎹殑璇濆氨璇ョ敤綰瘡鍔犳ā寮忥細(xì)涓鏃﹀紑鍚繖涓ā寮忥紝Redis浼?xì)鎶婃瘡娆″啓鍏ョ殑鏁版嵁鍦ㄦ帴鏀跺悗閮藉啓鍏ヂ?tīng)appendonly.aof聽(tīng)鏂囦歡銆?/span>
#
聽(tīng)姣忔鍚姩鏃禦edis閮戒細(xì)鎶婅繖涓枃浠剁殑鏁版嵁璇誨叆鍐呭瓨閲屻?/span>
#
#
聽(tīng)娉ㄦ剰錛屽紓姝ュ鍑虹殑鏁版嵁搴撴枃浠跺拰綰瘡鍔犳枃浠跺彲浠ュ茍瀛橈紙浣犲緱鎶婁笂闈㈡墍鏈?save"璁劇疆閮芥敞閲婃帀錛屽叧鎺夊鍑烘満鍒訛級(jí)銆?/span>
#
聽(tīng)濡傛灉綰瘡鍔犳ā寮忓紑鍚簡(jiǎn)錛岄偅涔圧edis浼?xì)鍦ㄥ惎鍔ㄦ椂铦插叆鏃ュ織鏂囦欢鑰屽拷鐣ュ鍑虹殑聽(tīng)dump.rdb聽(tīng)鏂囦歡銆?/span>
#
#
聽(tīng)閲嶈錛氭煡鐪嬄?tīng)BGREWRITEAOF聽(tīng)鏉ヤ簡(jiǎn)瑙e綋绱姞鏃ュ織鏂囦歡澶ぇ浜?jiǎn)涔嬪悗锛屾庝箞鍦ㄥ悗鍙伴噸鏂板鐞嗚繖涓棩蹇楁枃浠躲?/span>
appendonly聽(tīng)no
#
聽(tīng)綰瘡鍔犳枃浠跺悕瀛楋紙榛樿錛?appendonly.aof"錛?/span>
#
聽(tīng)appendfilename聽(tīng)appendonly.aof
#
聽(tīng)fsync()聽(tīng)璇鋒眰鎿嶄綔緋葷粺椹笂鎶婃暟鎹啓鍒扮鐩樹(shù)笂錛屼笉瑕佸啀絳変簡(jiǎn)銆?/span>
#
聽(tīng)鏈変簺鎿嶄綔緋葷粺浼?xì)鐪熺殑鎶婃暟鎹┈涓婂埛鍒凹倎鐩樹(shù)笂锛涙湁浜涘垯瑕伡偍韫竴涓嬶紝浣嗘槸浼?xì)灏藉揩鍘诲仛銆?/span>
#
#
聽(tīng)Redis鏀寔涓夌涓嶅悓鐨勬ā寮忥細(xì)
#
#
聽(tīng)no錛氫笉瑕佺珛鍒誨埛錛屽彧鏈夊湪鎿嶄綔緋葷粺闇瑕佸埛鐨勬椂鍊欏啀鍒楓傛瘮杈冨揩銆?/span>
#
聽(tīng)always錛氭瘡嬈″啓鎿嶄綔閮界珛鍒誨啓鍏ュ埌aof鏂囦歡銆傛參錛屼絾鏄渶瀹夊叏銆?/span>
#
聽(tīng)everysec錛氭瘡縐掑啓涓嬈°傛姌琛鋒柟妗堛?/span>
#
#
聽(tīng)榛樿鐨劼?everysec"聽(tīng)閫氬父鏉ヨ鑳藉湪閫熷害鍜屾暟鎹畨鍏ㄦт箣闂村彇寰楁瘮杈冨ソ鐨勫鉤琛°?/span>
#
聽(tīng)濡傛灉浣犵湡鐨勭悊瑙d簡(jiǎn)榪欎釜鎰忓懗鐫浠涔堬紝閭d箞璁劇疆"no"鍙互鑾峰緱鏇村ソ鐨勬ц兘琛ㄧ幇錛堝鏋滀涪鏁版嵁鐨勮瘽錛屽垯鍙兘鎷垮埌涓涓笉鏄緢鏂扮殑蹇収錛夛紱
#
聽(tīng)鎴栬呯浉鍙嶇殑錛屼綘閫夋嫨聽(tīng)"always"聽(tīng)鏉ョ壓鐗查熷害紜繚鏁版嵁瀹夊叏銆佸畬鏁淬?/span>
#
#
聽(tīng)濡傛灉鎷夸笉鍑嗭紝灝辯敤聽(tīng)"everysec"
#
聽(tīng)appendfsync聽(tīng)always
appendfsync聽(tīng)everysec
#
聽(tīng)appendfsync聽(tīng)no
#
聽(tīng)濡傛灉AOF鐨勫悓姝ョ瓥鐣ヨ緗垚聽(tīng)"always"聽(tīng)鎴栬吢?everysec"錛岄偅涔堝悗鍙扮殑瀛樺偍榪涚▼錛堝悗鍙板瓨鍌ㄦ垨鍐欏叆AOF鏃ュ織錛変細(xì)浜х敓寰堝紓佺洏I(yè)/O寮閿銆?/span>
#
聽(tīng)鏌愪簺Linux鐨勯厤緗笅浼?xì)鋴蒖edis鍥犱負(fù)聽(tīng)fsync()聽(tīng)鑰岄樆濉炲緢涔呫?/span>
#
聽(tīng)娉ㄦ剰錛岀洰鍓嶅榪欎釜鎯呭喌榪樻病鏈夊畬緹庝慨姝o紝鐢氳嚦涓嶅悓綰跨▼鐨劼?tīng)fsync()聽(tīng)浼?xì)闃诲鎴戜滑鐨劼?tīng)write(2)聽(tīng)璇鋒眰銆?/span>
#
#
聽(tīng)涓轟簡(jiǎn)緙撹В榪欎釜闂錛屽彲浠ョ敤涓嬮潰榪欎釜閫夐」銆傚畠鍙互鍦?tīng)BGSAVE聽(tīng)鎴柭?tīng)BGREWRITEAOF聽(tīng)澶勭悊鏃墮樆姝⒙?tīng)fsync()銆?/span>
#
聽(tīng)
#
聽(tīng)榪欏氨鎰忓懗鐫濡傛灉鏈夊瓙榪涚▼鍦ㄨ繘琛屼繚瀛樻搷浣滐紝閭d箞Redis灝卞浜?涓嶅彲鍚屾"鐨勭姸鎬併?/span>
#
聽(tīng)榪欏疄闄呬笂鏄錛屽湪鏈宸殑鎯呭喌涓嬪彲鑳戒細(xì)涓㈡帀30縐掗挓鐨勬棩蹇楁暟鎹傦紙榛樿Linux璁懼畾錛?/span>
#
聽(tīng)
#
聽(tīng)濡傛灉浣犳湁寤惰繜鐨勯棶棰橀偅灝辨妸榪欎釜璁句負(fù)聽(tīng)"yes"錛屽惁鍒欏氨淇濇寔聽(tīng)"no"錛岃繖鏄繚瀛樻寔涔呮暟鎹殑鏈瀹夊叏鐨勬柟寮忋?/span>
no
-
appendfsync
-
on
-
rewrite聽(tīng)no
#
聽(tīng)鑷姩閲嶅啓AOF鏂囦歡
#
#
聽(tīng)濡傛灉AOF鏃ュ織鏂囦歡澶у埌鎸囧畾鐧懼垎姣旓紝Redis鑳藉閫氳繃聽(tīng)BGREWRITEAOF聽(tīng)鑷姩閲嶅啓AOF鏃ュ織鏂囦歡銆?/span>
#
聽(tīng)
#
聽(tīng)宸ヤ綔鍘熺悊錛歊edis璁頒綇涓婃閲嶅啓鏃禔OF鏃ュ織鐨勫ぇ灝忥紙鎴栬呴噸鍚悗娌℃湁鍐欐搷浣滅殑璇濓紝閭e氨鐩存帴鐢ㄦ鏃剁殑AOF鏂囦歡錛夛紝
#
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)鍩哄噯灝哄鍜屽綋鍓嶅昂瀵稿仛姣旇緝銆傚鏋滃綋鍓嶅昂瀵歌秴榪囨寚瀹氭瘮渚嬶紝灝變細(xì)瑙﹀彂閲嶅啓鎿嶄綔銆?/span>
#
#
聽(tīng)浣犺繕闇瑕佹寚瀹氳閲嶅啓鏃ュ織鐨勬渶灝忓昂瀵革紝榪欐牱閬垮厤浜?jiǎn)杈惧埌绾﹀畾鐧惧垎姣斾絾灏哄粛鐒跺緢灝忕殑鎯呭喌榪樿閲嶅啓銆?/span>
#
#
聽(tīng)鎸囧畾鐧懼垎姣斾負(fù)0浼?xì)绂佺敤AOF鑷姩閲嶅啓鐗規(guī)с?/span>
auto
-
aof
-
rewrite
-
percentage聽(tīng)
100
auto
-
aof
-
rewrite
-
min
-
size聽(tīng)64mb
#
#################################聽(tīng)鎱㈡煡璇㈡棩蹇椔?##################################
#
聽(tīng)Redis鎱㈡煡璇㈡棩蹇楀彲浠ヨ褰曡秴榪囨寚瀹氭椂闂寸殑鏌ヨ銆傝繍琛屾椂闂翠笉鍖呮嫭鍚勭I/O鏃墮棿銆?/span>
#
聽(tīng)渚嬪錛氳繛鎺ュ鎴風(fēng)錛屽彂閫佸搷搴旀暟鎹瓑銆傚彧璁$畻鍛戒護(hù)榪愯鐨勫疄闄呮椂闂達(dá)紙榪欐槸鍞竴涓縐嶅懡浠よ繍琛岀嚎紼嬮樆濉炶屾棤娉曞悓鏃朵負(fù)鍏朵粬璇鋒眰鏈嶅姟鐨勫満鏅級(jí)
#
聽(tīng)
#
聽(tīng)浣犲彲浠ヤ負(fù)鎱㈡煡璇㈡棩蹇楅厤緗袱涓弬鏁幫細(xì)涓涓槸瓚呮爣鏃墮棿錛屽崟浣嶄負(fù)寰錛岃褰曡秴榪囦釜鏃墮棿鐨勫懡浠ゃ?/span>
#
聽(tīng)鍙︿竴涓槸鎱㈡煡璇㈡棩蹇楅暱搴︺傚綋涓涓柊鐨勫懡浠よ鍐欒繘鏃ュ織鐨勬椂鍊欙紝鏈鑰佺殑閭d釜璁板綍浼?xì)琚垹鎺夈?/span>
#
#
聽(tīng)涓嬮潰鐨勬椂闂村崟浣嶆槸寰錛屾墍浠?000000灝辨槸1縐掋傛敞鎰忥紝璐熸暟鏃墮棿浼?xì)绂佺敤鎱㈡煡璇㈡棩蹇楀Q岃?鍒欎細(xì)寮哄埗璁板綍鎵鏈夊懡浠ゃ?/span>
slowlog
-
log
-
slower
-
than聽(tīng)
10000
#
聽(tīng)榪欎釜闀垮害娌℃湁闄愬埗銆傚彧瑕佹湁瓚沖鐨勫唴瀛樺氨琛屻備綘鍙互閫氳繃聽(tīng)SLOWLOG聽(tīng)RESET聽(tīng)鏉ラ噴鏀懼唴瀛樸傦紙璇戣呮敞錛氭棩蹇楀眳鐒舵槸鍦ㄥ唴瀛橀噷鐨凮rz錛?/span>
slowlog
-
max
-
len聽(tīng)
128
#
###############################聽(tīng)铏氭嫙鍐呭瓨聽(tīng)###############################
#
##聽(tīng)璀﹀憡錛佽櫄鎷熷唴瀛樺湪Redis聽(tīng)2.4鏄弽瀵圭殑銆?/span>
#
##聽(tīng)闈炲父涓嶉紦鍔變嬌鐢ㄨ櫄鎷熷唴瀛橈紒錛?/span>
#
聽(tīng)铏氭嫙鍐呭瓨鍙互浣縍edis鍦ㄥ唴瀛樹(shù)笉澶熺殑鎯呭喌涓嬩粛鐒跺彲浠ュ皢鎵鏈夋暟鎹簭鍒椾繚瀛樺湪鍐呭瓨閲屻?/span>
#
聽(tīng)涓轟簡(jiǎn)鍋氬埌榪欎竴鐐癸紝楂橀key浼?xì)璋冨埌鍐呭瓨閲屽Q岃屼綆棰慿ey浼?xì)铦{鍒頒氦鎹㈡枃浠墮噷錛屽氨鍍忔搷浣滅郴緇熶嬌鐢ㄥ唴瀛橀〉涓鏍楓?/span>
#
#
聽(tīng)瑕佷嬌鐢ㄨ櫄鎷熷唴瀛橈紝鍙鎶娐?vm-enabled"聽(tīng)璁劇疆涓郝?yes"錛屽茍鏍規(guī)嵁闇瑕佽緗笅闈笁涓櫄鎷熷唴瀛樺弬鏁板氨鍙互浜?jiǎn)銆?/span>
vm
-
enabled聽(tīng)no
#
聽(tīng)vm-enabled聽(tīng)yes
#
聽(tīng)榪欐槸浜ゆ崲鏂囦歡鐨勮礬寰勩備及璁′綘鐚滃埌浜?jiǎn)锛屼氦鎹㈡枃錃g涓嶈兘鍦ㄥ涓猂edis瀹炰緥涔嬮棿鍏變韓錛屾墍浠ョ‘淇濇瘡涓猂edis瀹炰緥浣跨敤涓涓嫭绔嬩氦鎹㈡枃浠躲?/span>
#
#
聽(tīng)鏈濂界殑淇濆瓨?shù)氦鎹㈡枃錃g錛堣闅忔満璁塊棶錛夌殑浠嬭川鏄浐鎬佺‖鐩橈紙SSD錛夈?/span>
#
#
聽(tīng)***聽(tīng)璀﹀憡聽(tīng)***聽(tīng)濡傛灉浣犱嬌鐢ㄥ叡浜富鏈猴紝閭d箞榛樿鐨勪氦鎹㈡枃浠舵斁鍒奧?tmp聽(tīng)涓嬫槸涓嶅畨鍏ㄧ殑銆?/span>
#
聽(tīng)鍒涘緩涓涓猂edis鐢ㄦ埛鍙啓鐨勭洰褰曪紝騫墮厤緗甊edis鍦ㄨ繖閲屽垱寤轟氦鎹㈡枃浠躲?/span>
vm
-
swap
-
file聽(tīng)
/
tmp
/
redis.swap
#
聽(tīng)"vm-max-memory"聽(tīng)閰嶇疆铏氭嫙鍐呭瓨鍙敤鐨勬渶澶у唴瀛樺閲忋?/span>
#
聽(tīng)濡傛灉浜ゆ崲鏂囦歡榪樻湁絀洪棿鐨勮瘽錛屾墍鏈夎秴鏍囬儴鍒嗛兘浼?xì)鏀惧堫C氦鎹㈡枃浠墮噷銆?/span>
#
#
聽(tīng)"vm-max-memory"聽(tīng)璁劇疆涓?琛ㄧず緋葷粺浼?xì)鐢ㄦ帀鎵鏈夊彲鐢ㄥ唴瀛樸?/span>
#
聽(tīng)榪欓粯璁ゅ間笉鍜嬪湴錛屽彧鏄妸浣犺兘鐢ㄧ殑鍐呭瓨鍏ㄧ敤鎺変簡(jiǎn)錛岀暀鐐逛綑閲忎細(xì)鏇村ソ銆?/span>
#
聽(tīng)渚嬪錛岃緗負(fù)鍓╀綑鍐呭瓨鐨?0%-80%銆?/span>
vm
-
max
-
memory聽(tīng)0
#
聽(tīng)Redis浜ゆ崲鏂囦歡鏄垎鎴愬涓暟鎹〉鐨勩?/span>
#
聽(tīng)涓涓彲瀛樺偍瀵硅薄鍙互琚繚瀛樺湪澶氫釜榪炵畫(huà)欏甸噷錛屼絾鏄竴涓暟鎹〉鏃犳硶琚涓璞″叡浜?/span>
#
聽(tīng)鎵浠ワ紝濡傛灉浣犵殑鏁版嵁欏靛お澶э紝閭d箞灝忓璞″氨浼?xì)娴匆?guī)帀寰堝絀洪棿銆?/span>
#
聽(tīng)濡傛灉鏁版嵁欏靛お灝忥紝閭g敤浜庡瓨鍌ㄧ殑浜ゆ崲絀洪棿灝變細(xì)鏇村皯錛堝亣瀹氫綘璁劇疆鐩稿悓鐨勬暟鎹〉鏁伴噺錛?/span>
#
#
聽(tīng)濡傛灉浣犱嬌鐢ㄥ緢澶氬皬瀵硅薄錛屽緩璁垎欏靛昂瀵鎬負(fù)64鎴?2涓瓧鑺傘?/span>
#
聽(tīng)濡傛灉浣犱嬌鐢ㄥ緢澶氬ぇ瀵硅薄錛岄偅灝辯敤澶т竴浜涚殑灝哄銆?/span>
#
聽(tīng)濡傛灉涓嶇‘瀹氾紝閭e氨鐢ㄩ粯璁ゅ悸?)
vm
-
page
-
size聽(tīng)
32
#
聽(tīng)浜ゆ崲鏂囦歡閲屾暟鎹〉鎬繪暟銆?/span>
#
聽(tīng)鏍規(guī)嵁鍐呭瓨?shù)腑鍒啓宓琛ㄥQ堝凡鐢?鏈敤鐨勬暟鎹〉鍒嗗竷鎯呭喌錛夛紝紓佺洏?shù)笂姣?涓暟鎹〉浼?xì)娑堣楀唴瀛橀噷1涓瓧鑺傘?/span>
#
#
聽(tīng)浜ゆ崲鍖哄閲徛?聽(tīng)vm-page-size聽(tīng)*聽(tīng)vm-pages
#
#
聽(tīng)鏍規(guī)嵁榛樿鐨?2瀛楄妭鐨勬暟鎹〉灝哄鍜?34217728鐨勬暟鎹〉鏁版潵綆楋紝Redis鐨勬暟鎹〉鏂囦歡浼?xì)鍗?GB錛岃屽唴瀛橀噷鐨勫垎欏佃〃浼?xì)娑堣?6MB鍐呭瓨銆?/span>
#
#
聽(tīng)涓轟綘鐨勫簲楠岀▼搴忚緗渶灝忎笖澶熺敤鐨勬暟瀛楁瘮杈冨ソ錛屼笅闈㈣繖涓粯璁ゅ煎湪澶у鏁版儏鍐典笅閮芥槸鍋忓ぇ鐨勩?/span>
vm
-
pages聽(tīng)
134217728
#
聽(tīng)鍚屾椂鍙繍琛岀殑铏氭嫙鍐呭瓨I(yè)/O綰跨▼鏁般?/span>
#
聽(tīng)榪欎簺綰跨▼鍙互瀹屾垚浠庝氦鎹㈡枃浠惰繘琛屾暟鎹鍐欑殑鎿嶄綔錛屼篃鍙互澶勭悊鏁版嵁鍦ㄥ唴瀛樹(shù)笌紓佺洏闂寸殑浜や簰鍜岀紪鐮?瑙g爜澶勭悊銆?/span>
#
聽(tīng)澶氫竴浜涚嚎紼嬪彲浠ヤ竴瀹氱▼搴︿笂鎻愰珮澶勭悊鏁堢巼錛岃櫧鐒禝/O鎿嶄綔鏈韓渚濊禆浜庣墿鐞嗚澶囩殑闄愬埗錛屼笉浼?xì)鍥犱负鏇村鐨劸U跨▼鑰屾彁楂樺崟嬈¤鍐欐搷浣滅殑鏁堢巼銆?/span>
#
#
聽(tīng)鐗規(guī)畩鍊?浼?xì)鍏抽棴绾拷E嬬駭I/O錛屽茍浼?xì)寮鍚樆濉炶櫄鎷熷唴瀛樻満鍒躲?/span>
vm
-
max
-
threads聽(tīng)
4
#
##############################聽(tīng)楂樼駭閰嶇疆聽(tīng)###############################
#
聽(tīng)褰撴湁澶ч噺鏁版嵁鏃訛紝閫傚悎鐢ㄥ搱甯岀紪鐮侊紙闇瑕佹洿澶氱殑鍐呭瓨錛夛紝鍏冪礌鏁伴噺涓婇檺涓嶈兘瓚呰繃緇欏畾闄愬埗銆?/span>
#
聽(tīng)浣犲彲浠ラ氳繃涓嬮潰鐨勯夐」鏉ヨ瀹氳繖浜涢檺鍒訛細(xì)
hash
-
max
-
zipmap
-
entries聽(tīng)
512
hash
-
max
-
zipmap
-
value聽(tīng)
64
#
聽(tīng)涓庡搱甯岀浉綾諱技錛屾暟鎹厓绱犺緝?yōu)畱鐨勬儏鍐典笅锛屽彲浠ョ敤鍙︿竴縐嶆柟寮忔潵緙栫爜浠庤岃妭鐪佸ぇ閲忕┖闂淬?/span>
#
聽(tīng)榪欑鏂瑰紡鍙湁鍦ㄧ鍚堜笅闈㈤檺鍒剁殑鏃跺欐墠鍙互鐢細(xì)
list
-
max
-
ziplist
-
entries聽(tīng)
512
list
-
max
-
ziplist
-
value聽(tīng)
64
#
聽(tīng)榪樻湁榪欐牱涓縐嶇壒孌婄紪鐮佺殑鎯呭喌錛氭暟鎹叏鏄?4浣嶆棤絎﹀彿鏁村瀷鏁板瓧鏋勬垚鐨勫瓧絎︿覆銆?/span>
#
聽(tīng)涓嬮潰榪欎釜閰嶇疆欏瑰氨鏄敤鏉ラ檺鍒惰繖縐嶆儏鍐典笅浣跨敤榪欑緙栫爜鐨勬渶澶т笂闄愮殑銆?/span>
set
-
max
-
intset
-
entries聽(tīng)
512
#
聽(tīng)涓庣涓銆佺浜岀鎯呭喌鐩鎬技錛屾湁搴忓簭鍒椾篃鍙互鐢ㄤ竴縐嶇壒鍒殑緙栫爜鏂瑰紡鏉ュ鐞嗭紝鍙妭鐪佸ぇ閲忕┖闂淬?/span>
#
聽(tīng)榪欑緙栫爜鍙傚悎闀垮害鍜屽厓绱犻兘絎﹀悎涓嬮潰闄愬埗鐨勬湁搴忓簭鍒楋細(xì)
zset
-
max
-
ziplist
-
entries聽(tīng)
128
zset
-
max
-
ziplist
-
value聽(tīng)
64
#
聽(tīng)鍝堝笇鍒鋒柊錛屾瘡100涓狢PU姣浼?xì)鎷垮?涓縐掓潵鍒鋒柊Redis鐨勪富鍝堝笇琛紙欏剁駭閿兼槧灝勮〃錛夈?/span>
#
聽(tīng)redis鎵鐢ㄧ殑鍝堝笇琛ㄥ疄鐜幫紙瑙乨ict.c錛夐噰鐢ㄥ歡榪熷搱甯屽埛鏂版満鍒訛細(xì)浣犲涓涓搱甯岃〃鎿嶄綔瓚婂錛屽搱甯屽埛鏂版搷浣滃氨瓚婇綣侊紱
#
聽(tīng)鍙嶄箣錛屽鏋滄湇鍔″櫒闈炲父涓嶆椿璺冮偅涔堜篃灝辨槸鐢ㄧ偣鍐呭瓨?shù)繚瀛樺搱甯岃〃鑰屽凡銆?/span>
#
聽(tīng)
#
聽(tīng)榛樿鏄瘡縐掗挓榪涜10嬈″搱甯岃〃鍒鋒柊錛岀敤鏉ュ埛鏂板瓧鍏革紝鐒跺悗灝藉揩閲婃斁鍐呭瓨銆?/span>
#
#
聽(tīng)寤鴻錛?/span>
#
聽(tīng)濡傛灉浣犲寤惰繜姣旇緝鍦ㄦ剰鐨勮瘽灝辯敤聽(tīng)"activerehashing聽(tīng)no"錛屾瘡涓姹傚歡榪?姣涓嶅お濂藉槢銆?/span>
#
聽(tīng)濡傛灉浣犱笉澶湪鎰忓歡榪熻屽笇鏈涘敖蹇噴鏀懼唴瀛樼殑璇濆氨璁劇疆聽(tīng)"activerehashing聽(tīng)yes"銆?/span>
activerehashing聽(tīng)yes
#
#################################聽(tīng)鍖呭惈聽(tīng)###################################
#
聽(tīng)鍖呭惈涓涓垨澶氫釜鍏朵粬閰嶇疆鏂囦歡銆?/span>
#
聽(tīng)榪欏湪浣犳湁鏍囧噯閰嶇疆妯℃澘浣嗘槸姣忎釜redis鏈嶅姟鍣ㄥ張闇瑕佷釜鎬ц緗殑鏃跺欏緢鏈夌敤銆?/span>
#
聽(tīng)鍖呭惈鏂囦歡鐗規(guī)у厑璁鎬綘寮曚漢鍏朵粬閰嶇疆鏂囦歡錛屾墍浠ュソ濂藉埄鐢ㄥ惂銆?/span>
#
#
聽(tīng)include聽(tīng)/path/to/local.conf
#
聽(tīng)include聽(tīng)/path/to/other.conf
鍚姩jvm鐩戞帶鏈嶅姟銆傚畠鏄竴涓熀浜巖mi鐨勫簲鐢紝鍚戣繙紼嬫満鍣ㄦ彁渚涙湰鏈簀vm搴旂敤紼嬪簭鐨勪俊鎭傞粯璁ょ鍙?099銆?br />瀹炰緥錛歫statd -J-Djava.security.policy=my.policy
my.policy鏂囦歡闇瑕佽嚜宸卞緩绔嬶紝鍐呭濡備笅錛?br />grant codebase "file:$JAVA_HOME/lib/tools.jar" {
聽(tīng)permission java.security.AllPermission;
};
榪欐槸瀹夊叏絳栫暐鏂囦歡錛屽洜涓簀dk瀵筳vm鍋氫簡(jiǎn)jaas鐨勫畨鍏ㄦ嫻嬶紝鎵浠ユ垜浠繀欏昏緗竴浜涚瓥鐣ワ紝浣垮緱jstatd琚厑璁鎬綔緗戠粶鎿嶄綔
jps
鍒楀嚭鎵鏈夌殑jvm瀹炰緥
瀹炰緥錛?br />jps
鍒楀嚭鏈満鎵鏈夌殑jvm瀹炰緥
jps 192.168.0.77
鍒楀嚭榪滅▼鏈嶅姟鍣?92.168.0.77鏈哄櫒鎵鏈夌殑jvm瀹炰緥錛岄噰鐢╮mi鍗忚錛岄粯璁よ繛鎺ョ鍙d負(fù)1099
錛堝墠鎻愭槸榪滅▼鏈嶅姟鍣ㄦ彁渚沯statd鏈嶅姟錛?br />
杈撳嚭鍐呭濡備笅錛?br />jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps
6286 Jps
6174聽(tīng) Jstat
jconsole
涓涓浘褰㈠寲鐣岄潰錛屽彲浠ヨ瀵熷埌java榪涚▼鐨刧c錛宑lass錛屽唴瀛樼瓑淇℃伅銆傝櫧鐒舵瘮杈冪洿瑙傦紝浣嗘槸涓漢榪樻槸姣旇緝鍊懼悜浜庝嬌鐢╦stat鍛戒護(hù)錛堝湪鏈鍚庝竴閮ㄥ垎浼?xì)瀵筳stat浣滆緇嗙殑浠嬬粛錛夈?br />
jinfo錛坙inux涓嬬壒鏈夛級(jí)
瑙傚療榪愯涓殑java紼嬪簭鐨勮繍琛岀幆澧冨弬鏁幫細(xì)鍙傛暟鍖呮嫭Java System灞炴у拰JVM鍛戒護(hù)琛屽弬鏁?br />瀹炰緥錛歫info 2083
鍏朵腑2083灝辨槸java榪涚▼id鍙鳳紝鍙互鐢╦ps寰楀埌榪欎釜id鍙楓?br />杈撳嚭鍐呭澶浜?jiǎn)锛屼笉鍦q欓噷涓涓鍒椾婦錛屽ぇ瀹跺彲浠ヨ嚜宸卞皾璇曡繖涓懡浠ゃ?br />
jstack錛坙inux涓嬬壒鏈夛級(jí)
鍙互瑙傚療鍒癹vm涓綋鍓嶆墍鏈夌嚎紼嬬殑榪愯鎯呭喌鍜岀嚎紼嬪綋鍓嶇姸鎬?br />jstack 2083
杈撳嚭鍐呭濡備笅錛?br />
jmap錛坙inux涓嬬壒鏈夛紝涔熸槸寰堝父鐢ㄧ殑涓涓懡浠わ級(jí)
瑙傚療榪愯涓殑jvm鐗╃悊鍐呭瓨鐨勫崰鐢ㄦ儏鍐點(diǎn)?br />鍙傛暟濡備笅錛?strong>
-heap錛氭墦鍗癹vm heap鐨勬儏鍐?br />-histo錛?/strong>鎵撳嵃jvm heap鐨勭洿鏂瑰浘銆傚叾杈撳嚭淇℃伅鍖呮嫭綾誨悕錛屽璞℃暟閲忥紝瀵硅薄鍗犵敤澶у皬銆?br />-histo錛歭ive 錛?/strong>鍚屼笂錛屼絾鏄彧絳斿簲瀛樻椿瀵硅薄鐨勬儏鍐?br />-permstat錛?/strong>鎵撳嵃permanent generation heap鎯呭喌
鍛戒護(hù)浣跨敤錛?br />jmap -heap 2083
鍙互瑙傚療鍒癗ew Generation錛圗den Space錛孎rom Space錛孴o Space錛?tenured generation,Perm Generation鐨勫唴瀛樹(shù)嬌鐢ㄦ儏鍐?br />杈撳嚭鍐呭錛?br />
jmap -histo 2083 锝?jmap -histo:live 2083
鍙互瑙傚療heap涓墍鏈夊璞$殑鎯呭喌錛坔eap涓墍鏈夌敓瀛樼殑瀵硅薄鐨勬儏鍐碉級(jí)銆傚寘鎷璞℃暟閲忓拰鎵鍗犵┖闂村ぇ灝忋?br />杈撳嚭鍐呭錛?br />
鍐欎釜鑴氭湰錛屽彲浠ュ緢蹇妸鍗犵敤heap鏈澶х殑瀵硅薄鎵懼嚭鏉ワ紝瀵逛粯鍐呭瓨娉勬紡鐗瑰埆鏈夋晥銆?br />
jstat
鏈鍚庤閲嶇偣浠嬬粛涓嬭繖涓懡浠ゃ?br />榪欐槸jdk鍛戒護(hù)涓瘮杈冮噸瑕侊紝涔熸槸鐩稿綋瀹炵敤鐨勪竴涓懡浠わ紝鍙互瑙傚療鍒癱lassloader錛宑ompiler錛実c鐩稿叧淇℃伅
鍏蜂綋鍙傛暟濡備笅錛?br />-class錛氱粺璁lass loader琛屼負(fù)淇℃伅
-compile錛氱粺璁$紪璇戣涓轟俊鎭?br />-gc錛氱粺璁dk gc鏃秇eap淇℃伅
-gccapacity錛氱粺璁′笉鍚岀殑generations錛堜笉鐭ラ亾鎬庝箞緲昏瘧濂斤紝鍖呮嫭鏂扮敓鍖猴紝鑰佸勾鍖猴紝permanent鍖猴級(jí)鐩稿簲鐨刪eap瀹歸噺鎯呭喌
-gccause錛氱粺璁c鐨勬儏鍐碉紝錛堝悓-gcutil錛夊拰寮曡搗gc鐨勪簨浠?br />-gcnew錛氱粺璁c鏃訛紝鏂扮敓浠g殑鎯呭喌
-gcnewcapacity錛氱粺璁c鏃訛紝鏂扮敓浠eap瀹歸噺
-gcold錛氱粺璁c鏃訛紝鑰佸勾鍖虹殑鎯呭喌
-gcoldcapacity錛氱粺璁c鏃訛紝鑰佸勾鍖篽eap瀹歸噺
-gcpermcapacity錛氱粺璁c鏃訛紝permanent鍖篽eap瀹歸噺
-gcutil錛氱粺璁c鏃訛紝heap鎯呭喌
-printcompilation錛氫笉鐭ラ亾騫蹭粈涔堢殑錛屼竴鐩存病鐢ㄨ繃銆?br />
涓鑸瘮杈冨父鐢ㄧ殑鍑犱釜鍙傛暟鏄細(xì)
jstat -class 2083 1000 10 錛堟瘡闅?縐掔洃鎺т竴嬈★紝涓鍏卞仛10嬈★級(jí)
杈撳嚭鍐呭鍚箟濡備笅錛?br />Loaded Number of classes loaded. Bytes Number of Kbytes loaded. Unloaded Number of classes unloaded. Bytes Number of Kbytes unloaded. Time Time spent performing class load and unload operations.
jstat -gc 2083 2000 20錛堟瘡闅?縐掔洃鎺т竴嬈★紝鍏卞仛10錛?br />杈撳嚭鍐呭鍚箟濡備笅錛?br />S0C Current survivor space 0 capacity (KB). EC Current eden space capacity (KB). EU Eden space utilization (KB). OC Current old space capacity (KB). OU Old space utilization (KB). PC Current permanent space capacity (KB). PU Permanent space utilization (KB). YGC Number of young generation GC Events. YGCT Young generation garbage collection time. FGC Number of full GC events. FGCT Full garbage collection time. GCT Total garbage collection time.
杈撳嚭鍐呭錛?br />
濡傛灉鑳界啛緇冭繍鐢ㄨ繖浜涘懡浠わ紝灝ゅ叾鏄湪linux涓嬶紝閭d箞瀹屽叏鍙互浠f浛jprofile絳夌洃鎺у伐鍏蜂簡(jiǎn)錛岃皝璁╁畠鏀惰垂鍛€傚懙鍛點(diǎn)?br />鐢ㄥ懡浠ょ殑濂藉灝辨槸閫熷害蹇紝騫朵笖杈呭姪浜庡叾浠栧懡浠わ紝姣斿grep gawk sed絳夛紝鍙互緇勮澶氱絎﹀悎鑷繁闇姹傜殑宸ュ叿銆?
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)10銆佺被鐨勫祵鍏?/font>
int j = i;//鎷嗙
import
聽(tīng)java.util.Arrays;
public
聽(tīng)
class
聽(tīng)ArraysTester聽(tīng)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
private
聽(tīng)
int
[]聽(tīng)ar;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
public
聽(tīng)ArraysTester(
int
聽(tīng)numValues)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ar聽(tīng)
=
聽(tīng)
new
聽(tīng)
int
[numValues];
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
for
(
int
聽(tīng)i
=
0
;i
<
ar.length;i
++
)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ar[i]聽(tīng)
=
聽(tīng)(
1000
-
(
300
+
i));
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
public
聽(tīng)
int
[]聽(tīng)get()
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
return
聽(tīng)ar;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
/**聽(tīng)*/
/**
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*聽(tīng)
@param
聽(tīng)args
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
*/
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
public
聽(tīng)
static
聽(tīng)
void
聽(tīng)main(String[]聽(tīng)args)聽(tīng)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
聽(tīng)TODO聽(tīng)Auto-generated聽(tīng)method聽(tīng)stub
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ArraysTester聽(tīng)test聽(tīng)
=
聽(tīng)
new
聽(tīng)ArraysTester(
50
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
int
[]聽(tīng)myArray聽(tīng)
=
聽(tīng)test.get();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
int
[]聽(tīng)myOtherArray聽(tīng)
=
聽(tīng)test.get().clone();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
if
(Arrays.equals(myArray,聽(tīng)myOtherArray))
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
鐩哥瓑
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
else
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
涓嶇浉絳?/span>
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)Arrays.fill(myOtherArray,聽(tīng)
2
,
10
,
new
聽(tīng)Double(Math.PI).intValue());
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)myArray[
30
]聽(tīng)
=
聽(tīng)
98
;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
榪欐槸涓涓湭鎺掑簭鐨勬暟緇?img src="http://m.tkk7.com/images/dot.gif" />
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(Arrays.toString(myArray));
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)Arrays.sort(myArray);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
榪欐槸涓涓帓搴忕殑鏁扮粍
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(Arrays.toString(myArray));
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
int
聽(tīng)index聽(tīng)
=
聽(tīng)Arrays.binarySearch(myArray,聽(tīng)
98
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
98琚畾浣嶅湪絎?/span>
"
+
index
+
"
涓綅緗笂
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)String[][]聽(tīng)ticTacToe聽(tīng)
=
聽(tīng)
{
{
"
X
"
,
"
0
"
,
"
0
"
}
,
{
"
0
"
,
"
X
"
,
"
X
"
}
,
{
"
X
"
,
"
0
"
,
"
X
"
}
}
;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(Arrays.deepToString(ticTacToe));
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)String[][]聽(tīng)ticTacToe2聽(tīng)
=
聽(tīng)
{
{
"
0
"
,
"
0
"
,
"
X
"
}
,
{
"
0
"
,
"
X
"
,
"
X
"
}
,
{
"
X
"
,
"
0
"
,
"
X
"
}
}
;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)String[][]聽(tīng)ticTacToe3聽(tīng)
=
聽(tīng)
{
{
"
X
"
,
"
0
"
,
"
0
"
}
,
{
"
0
"
,
"
X
"
,
"
X
"
}
,
{
"
X
"
,
"
0
"
,
"
X
"
}
}
;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
if
(Arrays.deepEquals(ticTacToe,聽(tīng)ticTacToe2))
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
鐩哥瓑
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
else
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
涓嶇浉絳?/span>
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
if
(Arrays.deepEquals(ticTacToe,聽(tīng)ticTacToe3))
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
鐩哥瓑
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
else
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(
"
涓嶇浉絳?/span>
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
}
Arrays.equals(myArray, myOtherArray)---鐩存帴姣旇緝涓や釜鏁扮粍鏄惁鐩哥瓑
Arrays.fill(a, val)---灝嗘暟緇刟涓墍鏈夊厓绱犻兘鐢╲al鏉ュ~鍏?br />Arrays.fill(a, 2,10,val);---灝嗘暟緇刟錛屼粠绱㈠紩涓?鐨勫厓绱犲埌絎?0鐨勫厓绱犵敤val鏉ュ~鍏?br />Arrays.sort(a);---鎸夌収鑷劧瑙勫緥鎺掑簭錛屽崌搴?br />Arrays.binarySearch(myArray, 98);---鎼滅儲(chǔ)myArray涓間負(fù)98鐨勭儲(chǔ)寮曞彿錛屽茍榪斿洖绱㈠紩
Arrays.toString(a)--鎵撳嵃鏁扮粍a鏍煎紡錛歔2asdf, 3asd, afas]
Arrays.deepToString(ticTacToe)--鎵撳嵃澶氱淮鏁扮粍ticTacToe
Arrays.deepEquals(ticTacToe, ticTacToe2)---姣旇緝涓や釜澶氱淮鏁扮粍
List<String> d = Arrays.asList(a);---灝嗘暟緇勮漿鎹負(fù)List
棣栧厛璁蹭竴涓婼truts2鐨勬爣鍑嗗紑鍙戠幆澧冿細(xì)
1.Servlet API 2.4
2.JSP API 2.0
3.Java 5
(榪樼畻鏄瘮杈冩爣鍑嗗惂錛熷懙鍛?
浣嗘槸錛屽湪鏌愪簺鎯呭喌涓嬩綘寰椾嬌鐢↗DK1.4鏉ュ紑鍙?姣斿鎴戝弬涓庣殑欏圭洰)錛屽緢鏄劇劧涓嶇鍚圝ava 5鐨勮繖涓爣鍑嗭紝鎬庝箞鍔烇紵涓嶈鎱岋紝Struts2鐨勫紑鍙戜漢鍛樺凡緇忔兂鍒頒簡(jiǎn)銆傚厛璁蹭竴涓媠truts2鐨勫寘鐨勭洰褰曠粨鏋勫惂錛岃В鍘媠truts2鐨剒ip鍖?鎴戣繖閲屾槸 struts-2.0.1-all.zip鍖咃紝瀹樼綉涓嬬殑)錛屼細(xì)鏈夊涓嬪嚑涓洰褰曞拰鏂囦歡錛?br />
apps錛氶噷闈竴浜泈ar鏂囦歡錛屽簲璇ユ槸涓浜涚敤struts2寮鍙戠殑涓浜涗緥瀛愶紝鎴戞病璺戣繃錛岀寽寰椼?br />docs錛氬寘鍚簡(jiǎn)API銆丗AQs絳夌瓑鏂囦歡錛屾墦寮docs鏇寸洰褰曚笅闈㈢殑index.jsp鑷繁鎱㈡參嫻忚鍚с?br />j4錛?涓浜?jar鏂囦歡鍜屽叾浠栨枃妗f枃浠躲?br />lib錛?寰堟樉鐒舵槸struts2鎻愪緵鐨勬爣鍑嗙殑鎺ュ彛鏂囦歡銆?br />src錛?struts2鐨勬簮浠g爜銆?br />LICENSE.txt錛氫笉瑙i噴錛?br />NOTICE.txt錛?涓嶈В閲婏紒
濂戒簡(jiǎn)錛宻truts2鐨勫寘緇撴瀯瑙i噴灝辮繖鏍鳳紝濡傛灉浣犳槸浣跨敤鏍囧噯鐨勫紑鍙戠幆澧?鏂囩珷澶磋榪囩殑)錛岄偅涔堜綘鍙渶瑕佸皢lib鐩綍涓嬮潰鐨勬枃浠跺叏閮╟opy鍒頒綘鐨刲ib鐩綍涓嬪氨琛屼簡(jiǎn)銆?br />鎴戣浣跨敤JDK1.4鐨勫紑鍙戠幆澧冩庝箞鍔烇紵閭d箞灝變嬌鐢↗4鐩綍涓殑涓滆タ鍟︼紒
鍦↗4鐩綍涓?宸茬粡灝哠truts2鍩烘湰鐨勪袱涓猨ar鏂囦歡杞ソ浜?鍒嗗埆鏄痵truts2-core-j4-2.0.1.jar鍜寈work-j4-2.0-beta-1.jar銆?br />
鐢ㄨ繖涓や釜鍖呮浛鎹㈡帀lib閲岄潰鐨剆truts2-core-2.0.1.jar鍜寈work-2.0-beta-1.jar涓や釜鍖呭氨琛屼簡(jiǎn)錛屽鏋滀綘鐨勭▼搴忎腑榪樼敤鍒扮殑鍏朵粬鐨刯ar鍖?鍙互閫氳繃鑴氭湰鎶妀ar鍖呰漿鎴怞4鐗堟湰鐨勶紝姣斿錛?br />java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar ../lib/<鍚嶅瓧1>.jar -destjar <鍚嶅瓧1>.jar
鍙互灝嗗畠浠啓鍒頒竴涓狟at鏂囦歡涓?濡傛灉浣犵敤鐨勬槸Windows鐨勭郴緇熺殑璇?br />
鑷蟲(chóng),浣犵殑紼嬪簭搴旇灝卞彲浠ュ湪JDK1.4涓婅繍琛屼簡(jiǎn).
鐢↗DK1.4寮鍙戦渶瑕佺殑鍑犱釜鍩烘湰jar鍖呭涓嬶細(xì)
娉ㄦ剰錛氬湪jdk1.4涓嬭繍琛屾椂錛屼笉瑕佸鍔爅ar鍖呫俿truts2-core,xwork榪欎袱涓漿鎹㈡垚jdk1.4涓嬬殑鐗堟湰鍚庯紝鍒殑涓嶄細(xì)鍐嶈漿浜?jiǎn)銆傚鏋滀嬌鐢ㄥ埆鐨勫寘鏃訛紝杞竴涓姞涓涓瘯璇曪紝struts2鍦ㄥ姞鍏ar鍖呮椂錛屽彲鑳芥湁闂錛屼嬌鐢ㄦ椂灝忓績(jī)銆?/strong>
TopicID | Title | Boardid | PollID | LockTopic | Child | PostUsername | PostUserid | DateAndTime | hits | Expression | VoteTotal | LastPost | LastPostTime | istop | isvote | isbest | PostTable | SmsUserList | IsSmsTopic | LastSmsTime | TopicMode | Mode | GetMoney | UseTools | GetMoneyType | HideName |
201314 | 浜插惢鍖椾含錛佲斺旀垜浠紵澶х殑紲栧浗錛?/td> | 37 | 0 |
鍦ㄥ緢澶氭搷浣滀腑錛屾瘮濡傚緩绔嬬洰褰?鏁版嵁搴撹繛鎺ラ兘闇瑕佽繖鏍風(fēng)殑鍗曠嚎紼嬫搷浣溿?/p>
榪樻湁, singleton鑳藉琚姸鎬佸寲; 榪欐牱錛屽涓崟鎬佺被鍦ㄤ竴璧峰氨鍙互浣滀負(fù)涓涓姸鎬佷粨搴撲竴鏍峰悜澶栨彁渚涙湇鍔★紝姣斿錛屼綘瑕佽鍧涗腑鐨勫笘瀛愯鏁板櫒錛屾瘡嬈℃祻瑙堜竴嬈¢渶瑕佽鏁幫紝鍗曟佺被鑳藉惁淇濇寔浣忚繖涓鏁幫紝騫朵笖鑳絪ynchronize鐨勫畨鍏ㄨ嚜鍔ㄥ姞1錛屽鏋滀綘瑕佹妸榪欎釜鏁板瓧姘鎬箙淇濆瓨鍒版暟鎹簱錛屼綘鍙互鍦ㄤ笉淇敼鍗曟佹帴鍙g殑鎯呭喌涓嬫柟渚跨殑鍋氬埌銆?/p>
鍙﹀鏂歸潰錛孲ingleton涔熻兘澶熻鏃犵姸鎬佸寲銆傛彁渚涘伐鍏鋒ц川鐨勫姛鑳斤紝
Singleton妯″紡灝變負(fù)鎴戜滑鎻愪緵浜?jiǎn)杩欐牱瀹炵幇鐨勫彲鑳姐備嬌鐢⊿ingleton鐨勫ソ澶勮繕鍦ㄤ簬鍙互鑺傜渷鍐呭瓨錛屽洜涓哄畠闄愬埗浜?jiǎn)瀹炰緥鐨勪釜鏁板Q屾湁鍒╀簬Java鍨冨溇鍥炴敹錛坓arbage collection錛夈?/p>
鎴戜滑甯稿父鐪嬪埌宸ュ巶妯″紡涓被瑁呭叆鍣?class loader)涓篃鐢⊿ingleton妯″紡瀹炵幇鐨?鍥犱負(fù)琚鍏ョ殑綾誨疄闄呬篃灞炰簬璧勬簮銆?/p>
鍏蜂綋瀹炴柦:
鐢ㄩ潤(rùn)鎬佹柟娉曞疄鐜?Singleton
榪欑鏂規(guī)硶鏄嬌鐢ㄩ潤(rùn)鎬佹柟娉曟潵鐩戣瀹炰緥鐨勫垱寤?涓轟簡(jiǎn)闃叉鍒涘緩涓涓互涓婄殑瀹炰緥,鎴戜滑鏈濂芥妸鏋勯犲櫒澹版槑涓?private.
榪欐牱鍙互闃叉瀹㈡埛紼嬪簭鍛橀氳繃闄ょ敱鎴戜滑鎻愪緵鐨勬柟娉曚箣澶栫殑浠繪剰鏂瑰紡鏉ュ垱寤轟竴涓疄渚?濡傛灉涓嶆妸鏋勯犲櫒澹版槑涓簆rivate,緙栬瘧鍣ㄥ氨浼?xì)鑷綔鑱槑鐨勮嚜鍔ㄥ悓姝ヤ竴涓粯璁ょ殑friendly鏋勯犲櫒.榪欑瀹炵幇鏂規(guī)硶鏄渶甯歌鐨?