西西软件下载最安全的下载网站、值得信赖的软件下载站!
缂傚倷绶¢崹闈涚暦閻㈤潧鍨濋柛婵嗗閸熷懘鏌曟径鍫濆姎鐎靛府鎷�
U濠电姰鍨归悥銏ゅ礃椤忓棙鍟4.7.37.56 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷U濠电姰鍨归悥銏ゅ礃椤忓棙鍟4.7.37.56 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷
HD Tune  Prov5.75 婵犳鍠氶幊鎾凰囬婧惧亾娴e啫鐨虹紒杈ㄥ浮閹虫顢涘鍏碱棏闂備胶绮〃鍫ュ箠閹捐鏄ラ柛鈩冪⊕閸嬪鏌ㄩ悤鍌涘HD Tune Prov5.75 婵犳鍠氶幊鎾凰囬婧惧亾娴e啫鐨虹紒杈ㄥ浮閹虫顢涘鍏碱棏闂備胶绮〃鍫ュ箠閹捐鏄ラ柛鈩冪⊕閸嬪鏌ㄩ悤鍌涘
DiskGenius 濠电偞鍨堕幐濠氬箰妞嬪海绠旈柣鏂垮悑閸嬪鏌涢敂鍏煎5.2.1.941 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷DiskGenius 濠电偞鍨堕幐濠氬箰妞嬪海绠旈柣鏂垮悑閸嬪鏌涢敂鍏煎5.2.1.941 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
360闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮娑撳秹鏌嶉妷锕€澧柛鐔插亾v7.5.0.1460 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�360闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮娑撳秹鏌嶉妷锕€澧柛鐔插亾v7.5.0.1460 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
Cpu-Z濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌涜閹凤拷1.98.0 缂傚倸鍊峰ù鍥磿缂佹ḿ鐝跺┑鐘插暟閳绘梹銇勯幘璺烘瀾闁诲寒鍣i弻锝呂旂€n偄顏�Cpu-Z濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌涜閹凤拷1.98.0 缂傚倸鍊峰ù鍥磿缂佹ḿ鐝跺┑鐘插暟閳绘梹銇勯幘璺烘瀾闁诲寒鍣i弻锝呂旂€n偄顏�
缂傚倸鍊搁崯顖炲垂閸︻厼鍨濋悹杞拌閸熷懘鏌曟径鍫濆姎鐎靛府鎷�
闂備胶鍘ч悘姘暦濮椻偓椤㈡瑩宕卞☉娆忎缓婵炶揪绲介崯顐g珶鐎n剛纾奸柣姗嗗亐閸嬫捇骞囨担鍛婃珒V15.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闂備胶鍘ч悘姘暦濮椻偓椤㈡瑩宕卞☉娆忎缓婵炶揪绲介崯顐g珶鐎n剛纾奸柣姗嗗亐閸嬫捇骞囨担鍛婃珒V15.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
office2016婵犵數濮烽。浠嬪磻閹惧绠鹃柤濂割杺閸ゆ瑥霉閸忕厧濮嶇€规洘顨堢划姘跺绩瀹告19.5.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�office2016婵犵數濮烽。浠嬪磻閹惧绠鹃柤濂割杺閸ゆ瑥霉閸忕厧濮嶇€规洘顨堢划姘跺绩瀹告19.5.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂佸搫顦弲娑㈠箠濡ソ褰掓晸閿燂拷11闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯椤拷11.3.6.1870 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂佸搫顦弲娑㈠箠濡ソ褰掓晸閿燂拷11闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯椤拷11.3.6.1870 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
360闂備胶枪缁绘劗绮旈悜钘夊瀭闁稿﹤鍎穎i5.3.0.5000 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�360闂備胶枪缁绘劗绮旈悜钘夊瀭闁稿﹤鍎穎i5.3.0.5000 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
360闂佽娴烽幊鎾凰囬鐐茬煑闊洦鎷嬬涵鍛杸婵ê鍚嬬紞宀勬⒑闂堚晝绉堕柟鍑ゆ嫹2022v13.1.5188.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�360闂佽娴烽幊鎾凰囬鐐茬煑闊洦鎷嬬涵鍛杸婵ê鍚嬬紞宀勬⒑闂堚晝绉堕柟鍑ゆ嫹2022v13.1.5188.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
濠电姰鍨奸崺鏍嚌妤e啯鍋橀柣鏂挎啞婵挳鏌熼悙顒€鍔舵い顐嫹
闂傚倷妞掗崡鎶藉绩闁秴鍨傛繝濠傜墛椤ュ﹪鏌涜箛鎾村櫧妞ゆ柨娲弻锝夊煛鐎n偄顏�2022v9.1.6.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闂傚倷妞掗崡鎶藉绩闁秴鍨傛繝濠傜墛椤ュ﹪鏌涜箛鎾村櫧妞ゆ柨娲弻锝夊煛鐎n偄顏�2022v9.1.6.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂備礁鎼Λ娆撳箰閹跺壙澶愬箻楠炲じ姹楅梻渚囧墮缁夊爼宕i敓锟�2021V5.81.0202.1111闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闂備礁鎼Λ娆撳箰閹跺壙澶愬箻楠炲じ姹楅梻渚囧墮缁夊爼宕i敓锟�2021V5.81.0202.1111闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂傚⿴鍋勫ù鍌炲磻閸涙潙绠伴柨鐕傛嫹5.0婵犳鍠楅敃銏ゅ疾閼碱剛绠斿鑸靛姇绾偓闂佹悶鍎弲鐘绘偘閹剧粯鐓熸俊銈咁儐鐎氾拷5.0.80 濠德板€楁慨浼村礉瀹€鍕﹂柡鍐ㄧ墛閸嬪鏌ㄩ悤鍌涘闂傚⿴鍋勫ù鍌炲磻閸涙潙绠伴柨鐕傛嫹5.0婵犳鍠楅敃銏ゅ疾閼碱剛绠斿鑸靛姇绾偓闂佹悶鍎弲鐘绘偘閹剧粯鐓熸俊銈咁儐鐎氾拷5.0.80 濠德板€楁慨浼村礉瀹€鍕﹂柡鍐ㄧ墛閸嬪鏌ㄩ悤鍌涘
濠电偞娼欓崥瀣晝閵忋倕鐭楅柨鐕傛嫹2022闂佽楠哥粻宥夊垂濞差亜鏄ユ繛鎴炴皑閸楁岸鏌i妶蹇斿8.0.9.11050 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�濠电偞娼欓崥瀣晝閵忋倕鐭楅柨鐕傛嫹2022闂佽楠哥粻宥夊垂濞差亜鏄ユ繛鎴炴皑閸楁岸鏌i妶蹇斿8.0.9.11050 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂備胶绮悧鏇炵暦椤掑嫨鈧啫鐣濋崟顒€娈炴俊銈忛檮椤戞瑥岣块幒鎳虫盯鎮ч崼婵嗘辈13.1.5闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷闂備胶绮悧鏇炵暦椤掑嫨鈧啫鐣濋崟顒€娈炴俊銈忛檮椤戞瑥岣块幒鎳虫盯鎮ч崼婵嗘辈13.1.5闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
闂備焦鎮堕崕鏌ュ磿閹惰姤鍤嬪ù鍏兼綑閻愬﹪鏌熼鍡楀暙婢癸拷
photoshop cs6 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘13.1.2.3 闂備胶枪缁绘劗绮旈悜钘夊瀭闁稿本绋撻埢鏃€銇勯幘璺烘瀾闁诲寒鍣i弻锝呂旂€n偄顏�photoshop cs6 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘13.1.2.3 闂備胶枪缁绘劗绮旈悜钘夊瀭闁稿本绋撻埢鏃€銇勯幘璺烘瀾闁诲寒鍣i弻锝呂旂€n偄顏�
Autodesk 3ds Max 2012闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾跺垝婵犳艾鐒垫い鎺嶇劍婵挳鏌熼幑鎰敿闁告﹩鍓熼弻锟犲磼濮橆厼绐涙繝鈷€鍕垫殰32&64]Autodesk 3ds Max 2012闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾跺垝婵犳艾鐒垫い鎺嶇劍婵挳鏌熼幑鎰敿闁告﹩鍓熼弻锟犲磼濮橆厼绐涙繝鈷€鍕垫殰32&64]
CAD2007闂備胶枪缁绘劗绮旈悜钘夊瀭闁稿本绋撻埢鏃€銇勯幘璺烘瀾闁诲寒鍣i弻锝呂旂€n偄顏�CAD2007闂備胶枪缁绘劗绮旈悜钘夊瀭闁稿本绋撻埢鏃€銇勯幘璺烘瀾闁诲寒鍣i弻锝呂旂€n偄顏�
vc闂佸搫顦弲婊堝礉濮椻偓閵嗕線骞嬮悙鏉戝妳闂佽法鍣﹂幏锟�2019闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯椤拷2019.3.2(32&64濠电偠鎻紞鍥箯閿燂拷)vc闂佸搫顦弲婊堝礉濮椻偓閵嗕線骞嬮悙鏉戝妳闂佽法鍣﹂幏锟�2019闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯椤拷2019.3.2(32&64濠电偠鎻紞鍥箯閿燂拷)
.NET Framework 4.8闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷4.8.3646.NET Framework 4.8闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷4.8.3646
闂備胶鍘у畷顒勬晝閵堝桅濠㈣埖鍔栭崵鍌炴煛閸愩劌鈧骞戦敓锟�
QQ2022v9.5.6.28129 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�QQ2022v9.5.6.28129 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闁诲海鏁婚崑濠囧窗閺囩喓鈹嶅┑鐘叉处閸嬨劌霉閿濆懎鏆欏鐟邦儔閺岋絽螖鐎n偄顏�2022v3.5.0.44 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闁诲海鏁婚崑濠囧窗閺囩喓鈹嶅┑鐘叉处閸嬨劌霉閿濆懎鏆欏鐟邦儔閺岋絽螖鐎n偄顏�2022v3.5.0.44 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂備礁鎲¢〃鍛村疮閻楀牊娅犲ù鍏兼綑绾偓闂佸搫璇炵仦鑺ユ珒闁诲氦顫夐幃鍫曞磿閹殿喚绀婇柡鍐ㄧ墢瀹撲線鏌涢幇顓炵祷闂佹壆婀�9.02.02N 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂備礁鎲¢〃鍛村疮閻楀牊娅犲ù鍏兼綑绾偓闂佸搫璇炵仦鑺ユ珒闁诲氦顫夐幃鍫曞磿閹殿喚绀婇柡鍐ㄧ墢瀹撲線鏌涢幇顓炵祷闂佹壆婀�9.02.02N 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
QT闂佽崵濮村ù鍌炲矗閸愵喗鍋傜紒鍌︽嫹4.6.80.18262闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�QT闂佽崵濮村ù鍌炲矗閸愵喗鍋傜紒鍌︽嫹4.6.80.18262闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
濠碉紕鍋涢鍥磻濡崵鈹嶉柨鐕傛嫹2018V6.2.0700 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�濠碉紕鍋涢鍥磻濡崵鈹嶉柨鐕傛嫹2018V6.2.0700 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂備礁鎲¢弻锝夊礉鐎n剛绀婇柡鍌濓骏閳ь剚甯″畷銊︾節閸屾粈绨�
濠电偞鎸诲銊︽叏瀹勬噴鍝勵吋閸♀晜效闂佺粯鍔橀崺鏍姳閻樼數纾介柛鎰綖缁ㄧ厧霉閸忓吋宕岄柡灞界墦閹稿﹥寰勫畝濠佺礈
濠德板€楁慨鐢稿垂閸ф鐓橀柛顐ゅ枔閳绘棃骞栨潏鍓ф偧闁糕晛妫濋弻鈩冨緞閸℃ぞ澹曠紓鍌氬€烽懗鍓佹崲濠靛瑙︽い鎰╁焺閸ゆ霉閿濆牜娼愮紒鐙呮嫹
闂備焦鍎崇换鎴﹀礉閺嵭跨細闁告劦鍠栭崒銊╂煟閺冨倹鐒块柛鈺嬫嫹2
濠电偛顕慨浼村磿閺屻儱绠┑鐘崇閸庡秹鏌涢弴銊ュ箻婵炲鍨介弻娑橆潩閻愵剙顏�
闂備礁鎼ˇ顐﹀磻閹剧粯鐓欑痪鏉款槹鐎氾拷5闂佽崵濮嶅鍥╂殸闂佸憡锕幏锟�
FPS闂佽绻愮换鎰偓姘煎墴瀹曠敻鏁撻敓锟�
H1Z1濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘
闂佽瀛╃粙蹇涘磹閺囥垺鍎楁繝闈涱儏缁犳艾鈹戦悩鍙夊窛闁圭》鎷�3
濠电偞鍨堕幐鎼佀囬幎鏂ょ稏婵°倐鍋撻悡銈夋煠绾板崬澧い銉︻殘缁辨帗寰勬繝鍕懷囨煕鎼淬垺灏︽慨濠傘偢閺佹捇鏁撻敓锟�6闂備胶鎳撻悺銊╂晝閵忕姈锝夋晜閻e备鏋欓柣搴秵娴滄粓鎮楅敓锟�
濠电偠鎻徊浠嬫倶濠靛绠犻柨鐔哄Т閻銇勯幒鍡椾壕闂佽桨绶ら幏锟�8:闂備胶绮划鎾汇€傞敃鍌氳埞妞ゆ帒瀚粻锝嗕繆椤栨碍璐¢柟闈╂嫹3
闂備礁鎲¢懝楣冩偋閹捐闂柛鎾楀嫬鏅抽梺鍛婁緱閸欏骸危閿燂拷5:婵°倗濮烽崑鐘茬暦闂堟党娑㈡晸閿燂拷
缂傚倷鐒﹀濠氬磻閵堝鐒垫い鎺戝€搁弸鎴︽煟閺嵮呭煟妤犵偛顑夐弫鎾绘晸閿燂拷
婵犵數鍋涢弻宀勫礋椤愩倕鎼搁梻浣告啞椤﹀綊濡堕崱娆戞碀婵犵妲呴崹顏堝礈濠靛牃鍋撳鐐2
闂備礁鎼崯顐︻敄閸緷褰掑幢濡顫″銈嗘煥閻忔繈宕滈敓锟�
闂備礁鎼鍕矆娓氣偓楠炴牞顦虫い锔垮嵆閹瑩鎳滈悽鐢垫碀18
缂傚倷妞掗懗鍫曞磻濞戞瑦鍙忛煫鍥ㄦ礈閻捇鏌熸潏鍓у埌缂佹鎷�
F1 2015
闂備礁鎲¢崝鏍暜閳ユ枼鏋嶉柟鐐灱閺岋附绻涢崱妯虹仸缁炬拝鎷�
闂備胶鎳撻悺銊╁垂閻熸壋鏋旈柟瀵稿仧閳绘棃鏌″搴′簼婵炲拑鎷�1.8.2
婵犵數鍋涢ˇ杈ㄦ櫠濡や礁鍨旀繛宸簼閸嬶繝鏌i幇顓烆棆闁艰鎷�
濠德板€栭妵婊堝磿閺夋垹鏆﹂柨鐕傛嫹:婵犵數鍋涢顓㈠礂濡洅鎺楁晸閿燂拷
闂備礁鎼€氼噣宕伴幘璇茬柧妞ゆ劧绲剧紞鍥煟閻旂厧浜伴柡鍡嫹
闂備礁鎼悧鍐磻閹剧粯鐓曟慨姗嗗墯閹癸綁鏌℃担瑙勫鞍婵炶壈顕ц灒閹煎瓨鎸告禍楣冩煕閺嶎偄绶ㄩ梻浣虹帛椤ㄦ劙骞忛敓锟�
缂傚倷鐒︾粙鎺楁偋濠婂牆姹查柟閭﹀厵閳ь剚甯″畷銊︾節閸屾粈绨�
闂備礁鎼崐绋棵洪敃鈧嵄闁跨噦鎷�5:缂傚倸鍊稿ú銈囪姳婵傚憡鈷旈柛鏇ㄥ灠濡ê螞妫颁浇鍏岄柣鐕佸灦閺岋綁鏁愯箛鏂款伓
濠电偞鍨堕幐鎼佀囬姣懓螖閸曨厾鏉搁梺璺ㄥ櫐閹凤拷12濠电姷鏁搁崑妯肩矆娴h鍙忛煫鍥ㄧ☉缁€澶愭煟濡绲荤紒璁崇窔閺岋絽螖鐎n偄顏�
濠电儑绲藉ù鍕崲濠靛姹查弶鍫涘妿閳绘洟鎮楅敐搴℃灈婵炲拑缍侀弻锟犲醇椤掍礁顏�14濠电姷鏁搁崑妯肩矆娴h鍙忛煫鍥ㄧ☉缁€澶愭煟濡绲荤紒璁崇窔閺岋絽螖鐎n偄顏�
闂傚倸鍊搁崯顖溾偓绗涘棎浜瑰〒姘e亾妤犵偛绻橀弫鎾绘晸閿燂拷:闂備胶枪缁诲牓宕濋幋婵佺細濞村吋娼欑粻锝嗕繆椤栨碍璐¢柟闈╂嫹
闂佹眹鍩勯崹杈╂崲閸屾鐟拔旈崨顓犵潉闂佸搫鐗撳ḿ褔寮敓锟�2闁诲海鏁婚。锕傛倿閿曗偓閿曘垽宕堕浣告畬闂佽法鍣﹂幏锟�
闂備焦鐪归崹濠氬窗閹邦剦娓婚柛褎顨呯€氬鈧箍鍎遍幊搴綖閿燂拷
闂備浇銆€閸嬫挻銇勯弽銊ф噮閻㈩垱鐩幃妤冩喆閸曨厾鐤勯梺鍦归悥鐓庣暦閻樼粯鏅搁柨鐕傛嫹(Alipay)V10.2.53.7000 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備浇銆€閸嬫挻銇勯弽銊ф噮閻㈩垱鐩幃妤冩喆閸曨厾鐤勯梺鍦归悥鐓庣暦閻樼粯鏅搁柨鐕傛嫹(Alipay)V10.2.53.7000 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備浇鐨崟顐㈠Б闁诲氦顫夋繛濠傜暦閻戣棄绾ч柟绋挎捣椤╊參鏌f惔婵堢シ濠㈢懓鐗撳畷娲晸閿燂拷2022V15.12.10 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗嗙粻銉╂倵閿濆骸浜濈紒銊﹀哺閺岋絽螖鐎n偄顏�闂備浇鐨崟顐㈠Б闁诲氦顫夋繛濠傜暦閻戣棄绾ч柟绋挎捣椤╊參鏌f惔婵堢シ濠㈢懓鐗撳畷娲晸閿燂拷2022V15.12.10 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗嗙粻銉╂倵閿濆骸浜濈紒銊﹀哺閺岋絽螖鐎n偄顏�
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墯缁绘盯鏁愰崰銏╀邯閹潡宕掑┃鎯т壕妤犵偛鐏濋悘顏堟煕閳哄倻銆掔紒顔规櫊閹偓闁跨噦鎷�10.8.40闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墯缁绘盯鏁愰崰銏╀邯閹潡宕掑┃鎯т壕妤犵偛鐏濋悘顏堟煕閳哄倻銆掔紒顔规櫊閹偓闁跨噦鎷�10.8.40闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂備椒绱徊浠嬪箠濮椻偓閸┾偓妞ゆ帊鐒﹂埛鎺旂磽瀹ュ拋妯€妤犵偛绉堕埀顒婄秵閸嬪懐鑺卞鑸靛€垫鐐茬仢閻忣亪鏌涢埡鍌溿€掔紒顔规櫊閹偓闁跨噦鎷�5.6.9 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備椒绱徊浠嬪箠濮椻偓閸┾偓妞ゆ帊鐒﹂埛鎺旂磽瀹ュ拋妯€妤犵偛绉堕埀顒婄秵閸嬪懐鑺卞鑸靛€垫鐐茬仢閻忣亪鏌涢埡鍌溿€掔紒顔规櫊閹偓闁跨噦鎷�5.6.9 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂備礁鎲¢〃鍛村疮閾忣偆顩插ù鐓庣摠閸庢鏌曟径鍫濆婵″弶娲熼弻锟犲醇濠靛熆銏犫攽椤旀儳澹僷pv4.5.1闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂備礁鎲¢〃鍛村疮閾忣偆顩插ù鐓庣摠閸庢鏌曟径鍫濆婵″弶娲熼弻锟犲醇濠靛熆銏犫攽椤旀儳澹僷pv4.5.1闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
闁荤喐绮堥崡铏閸洘鍋傞柛顐f礀缁犵粯銇勯幘璺烘瀾闁哄鎷�
p2psearcher闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�7.3  闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴閺岋絽螖鐎n偄顏�p2psearcher闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�7.3 闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴閺岋絽螖鐎n偄顏�
闂傚倷妞掗崡鎶剿夐幘鍨涘亾濮橆剛效婵☆偄鎳樺畷妤呭川椤栵絽鏁�2022闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜斿畷鐑芥晸閿燂拷11.0.8 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷闂傚倷妞掗崡鎶剿夐幘鍨涘亾濮橆剛效婵☆偄鎳樺畷妤呭川椤栵絽鏁�2022闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜斿畷鐑芥晸閿燂拷11.0.8 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
闂備胶绮悧鏇炵暦椤掑嫨鈧啫鐣濋崟顒€娈為梺缁樺灦閿氭い銈勭窔閺岋繝宕奸敐鍡╀哗婵犫拃鍕垫蕉13.1.0闂備胶绮悧鏇炵暦椤掑嫨鈧啫鐣濋崟顒€娈為梺缁樺灦閿氭い銈勭窔閺岋繝宕奸敐鍡╀哗婵犫拃鍕垫蕉13.1.0
闂備浇鐨崟顐㈠Б闁诲海鎳撻悿鍥Φ閹扮増鐒肩€广儱娲ゅ锟�7.13.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備浇鐨崟顐㈠Б闁诲海鎳撻悿鍥Φ閹扮増鐒肩€广儱娲ゅ锟�7.13.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闁荤喐绮堥崡铏閸洘鍋傞柛顐f礀缁€鍌炴煕椤愮姴鍔滈柡浣烘篂6.9.0 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗嗙粻銉╂倵閿濆骸浜濈紒銊﹀哺閺岋絽螖鐎n偄顏�闁荤喐绮堥崡铏閸洘鍋傞柛顐f礀缁€鍌炴煕椤愮姴鍔滈柡浣烘篂6.9.0 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗嗙粻銉╂倵閿濆骸浜濈紒銊﹀哺閺岋絽螖鐎n偄顏�
闂傚倸鍊搁崯顐﹀箠閹炬椿鏁嬮柡澶嬵儥閸熷懘鏌曟径鍫濆姎鐎靛府鎷�
闂備胶鍘ч悘姘暦濮椻偓椤㈡瑩宕卞☉妯碱槷闂侀潧饪甸梽鍕倵閻烇拷9.11.5 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備胶鍘ч悘姘暦濮椻偓椤㈡瑩宕卞☉妯碱槷闂侀潧饪甸梽鍕倵閻烇拷9.11.5 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电偞鍨跺Λ鎴︽⒔閸曨倠娑樜旈崘褏鍓ㄩ棅顐㈡处閸戝綊宕靛☉銏$厱闊洦鎸惧暩闂佹悶鍔岄崐鍧楀箖瑜斿畷濂告偄閸涘﹤顏皏11.5.5.153 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�濠电偞鍨跺Λ鎴︽⒔閸曨倠娑樜旈崘褏鍓ㄩ棅顐㈡处閸戝綊宕靛☉銏$厱闊洦鎸惧暩闂佹悶鍔岄崐鍧楀箖瑜斿畷濂告偄閸涘﹤顏皏11.5.5.153 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
QQ闂傚倸鍊搁崯顐﹀箠閹炬椿鏁嬪ù鍏兼綑闂傤垶鏌嶉悜妯哄挤pV7.7.1.910 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�QQ闂傚倸鍊搁崯顐﹀箠閹炬椿鏁嬪ù鍏兼綑闂傤垶鏌嶉悜妯哄挤pV7.7.1.910 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂備胶顢婂▍鏇犳暜婵犲倐褎寰勯幇顓炰患闂佸憡渚楅崢浠嬪磿閺冨牊鐓曟慨妯煎帶閸樻悂鏌涢弮鍌氬ppv7.1.5 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷闂備胶顢婂▍鏇犳暜婵犲倐褎寰勯幇顓炰患闂佸憡渚楅崢浠嬪磿閺冨牊鐓曟慨妯煎帶閸樻悂鏌涢弮鍌氬ppv7.1.5 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
闂佽崵濮嶉崶鑸殿棖闂佺ǹ顑戠徊鍧楀箯閻樺灚濯奸柛鎰絻椤嚰pp闂備礁鎼崐瑙勭珶閸℃ɑ娅犳俊銈呮噹鐎氬鏌ㄩ悤鍌涘20227.9.186 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂佽崵濮嶉崶鑸殿棖闂佺ǹ顑戠徊鍧楀箯閻樺灚濯奸柛鎰絻椤嚰pp闂備礁鎼崐瑙勭珶閸℃ɑ娅犳俊銈呮噹鐎氬鏌ㄩ悤鍌涘20227.9.186 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂傚倷绀佸鍫曞垂婵傚憡鍊垫繛宸簼閸嬬娀鏌涢埄鍐闁稿鎷�
婵°倗濮烽崑娑㈠疮閸ф鍋╅柕濞у嫬鐝版繛杈剧悼鏋柣鎾寸墵閹鎮烽幍鏂ュ亾閿曞倹鐓熼柣鎰级椤ワ繝鏌涚仦鍛婃珶9.1.0.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷婵°倗濮烽崑娑㈠疮閸ф鍋╅柕濞у嫬鐝版繛杈剧悼鏋柣鎾寸墵閹鎮烽幍鏂ュ亾閿曞倹鐓熼柣鎰级椤ワ繝鏌涚仦鍛婃珶9.1.0.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
婵犵數鍋涢顓㈠礂濮椻偓閸┾偓妞ゆ帊妞掓禍銏ゆ煟閿曗偓椤﹂潧鐣峰璺哄窛濠电姴鍋嗛弶褰掓⒑閸濆嫮澧f繛鍜冪稻閺呭爼鏁撻敓锟�(e婵犵數鍋涢顓㈠礂濮椻偓閸┾偓妞ゆ帊妞掓禍銏ゆ煕瀹€瀣)8.71 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷婵犵數鍋涢顓㈠礂濮椻偓閸┾偓妞ゆ帊妞掓禍銏ゆ煟閿曗偓椤﹂潧鐣峰璺哄窛濠电姴鍋嗛弶褰掓⒑閸濆嫮澧f繛鍜冪稻閺呭爼鏁撻敓锟�(e婵犵數鍋涢顓㈠礂濮椻偓閸┾偓妞ゆ帊妞掓禍銏ゆ煕瀹€瀣)8.71 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
濠电偞鍨堕幐鑽ゅ垝瀹ュ绠查柨婵嗘处鐎氭艾霉閿濆毥褰掓偂閺嵮€妲堥柟鎯ь嚟閻鏌熼惂鍝ョМ闁诡喖鐖煎畷鍗烆潩椤掆偓娴滐拷4.0.5 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�濠电偞鍨堕幐鑽ゅ垝瀹ュ绠查柨婵嗘处鐎氭艾霉閿濆毥褰掓偂閺嵮€妲堥柟鎯ь嚟閻鏌熼惂鍝ョМ闁诡喖鐖煎畷鍗烆潩椤掆偓娴滐拷4.0.5 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电偞鍨堕幖鈺呭矗閸愵喖绠洪弶鍫氭櫆鐎氭艾霉閿濆毥褰掓偂閺嶎偆纾煎璺哄瘨閸ゆ瑥鈹戦瑙勬珚闁诡喖鐖煎畷鍗烆潩椤掆偓娴滃爼鏌℃径灞藉壉闁割煈鍨伴埢搴ㄦ晸閿燂拷6.02.010 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷濠电偞鍨堕幖鈺呭矗閸愵喖绠洪弶鍫氭櫆鐎氭艾霉閿濆毥褰掓偂閺嶎偆纾煎璺哄瘨閸ゆ瑥鈹戦瑙勬珚闁诡喖鐖煎畷鍗烆潩椤掆偓娴滃爼鏌℃径灞藉壉闁割煈鍨伴埢搴ㄦ晸閿燂拷6.02.010 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
闂備礁鎲¢〃鍛存煀閿濆洦顐界€规洖娲︾€氭艾霉閿濆毥褰掓偂閺嶎厽鍊堕煫鍥ㄦ尵缁犲鏌涢敐澶岀暫妤犵偛绉堕埀顒婄秵閸嬪懐鑺卞鑸电厽闁绘劕寮堕ˉ锟犳煕鐏炶濡芥繛纰变邯椤㈡稑鈻庨幇闈涗缓3.2.4 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備礁鎲¢〃鍛存煀閿濆洦顐界€规洖娲︾€氭艾霉閿濆毥褰掓偂閺嶎厽鍊堕煫鍥ㄦ尵缁犲鏌涢敐澶岀暫妤犵偛绉堕埀顒婄秵閸嬪懐鑺卞鑸电厽闁绘劕寮堕ˉ锟犳煕鐏炶濡芥繛纰变邯椤㈡稑鈻庨幇闈涗缓3.2.4 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴濮婃椽鎮欓鈧崝鑸点亜椤喗瀚�
缂傚倷绀侀崐鍝ユ崲閹邦喚纾介柟鎹愵嚙缁€鍐╃節婵犲倸顏紓宥嗗灥鑿愰柛銉╊棑绾惧潡鏌℃担闈涒偓妤冨垝閸儲鍊锋い鎺嗗亾妞ゃ倓绶氶弻锟犲醇閻旀悶浠㈤梺鐟扳偓鐔跺惈闁诡喗澹嗘禒锔剧驳鐎n亝鍊曢梻浣筋潐閹告娊藟閹炬椿鏁傞柨鐕傛嫹2.3.4 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�缂傚倷绀侀崐鍝ユ崲閹邦喚纾介柟鎹愵嚙缁€鍐╃節婵犲倸顏紓宥嗗灥鑿愰柛銉╊棑绾惧潡鏌℃担闈涒偓妤冨垝閸儲鍊锋い鎺嗗亾妞ゃ倓绶氶弻锟犲醇閻旀悶浠㈤梺鐟扳偓鐔跺惈闁诡喗澹嗘禒锔剧驳鐎n亝鍊曢梻浣筋潐閹告娊藟閹炬椿鏁傞柨鐕傛嫹2.3.4 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備礁鎼€氼參骞愰幖浣告槬婵°倓鐒︽刊瀛樼節婵犲倹锛嶆繛鍏煎笒铻為柣妤€鐗嗛悘銉ヮ熆閸忓浜鹃梺鍝勵槸閻楀﹪宕i—绉�4.1.16闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備礁鎼€氼參骞愰幖浣告槬婵°倓鐒︽刊瀛樼節婵犲倹锛嶆繛鍏煎笒铻為柣妤€鐗嗛悘銉ヮ熆閸忓浜鹃梺鍝勵槸閻楀﹪宕i—绉�4.1.16闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備浇銆€閸嬫挻銇勯弽銊ф噮閻㈩垱鐩幃妤冩喆閸曨厾鐤勯梺鍦归悥鐓庣暦閻樼粯鏅搁柨鐕傛嫹(Alipay)V10.2.53.7000 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備浇銆€閸嬫挻銇勯弽銊ф噮閻㈩垱鐩幃妤冩喆閸曨厾鐤勯梺鍦归悥鐓庣暦閻樼粯鏅搁柨鐕傛嫹(Alipay)V10.2.53.7000 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电偞鍨堕幖鈺呭储閻撳篃鐟拔旈埀顒勵敊韫囨稑唯闁靛闄勯悵婊堟⒒娴e搫浜鹃柛搴°偢閵嗕線骞嬮敃鈧粻銉╂倵閿濆骸浜濈紒銊﹀哺濮婃椽鎮欓鈧崝鑸点亜閵忊€冲綘ppV7.0.1.2.5 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�濠电偞鍨堕幖鈺呭储閻撳篃鐟拔旈埀顒勵敊韫囨稑唯闁靛闄勯悵婊堟⒒娴e搫浜鹃柛搴°偢閵嗕線骞嬮敃鈧粻銉╂倵閿濆骸浜濈紒銊﹀哺濮婃椽鎮欓鈧崝鑸点亜閵忊€冲綘ppV7.0.1.2.5 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电偞鍨堕幖鈺呭储閻撳篃鐟拔旈崨顔惧弰闂佽鍨堕崑濠囧绩娴犲鐓欓梻鍫熶緱閸庢劖绻濊閸嬫捇姊绘担鍝勪壕闁稿骸銈搁妴渚€骞嬮悩顐壕妤犵偛鐏濋悘顏堟煕閳哄倻銆掔紒顔规櫊閺佹捇鏁撻敓锟�7.2.5 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷濠电偞鍨堕幖鈺呭储閻撳篃鐟拔旈崨顔惧弰闂佽鍨堕崑濠囧绩娴犲鐓欓梻鍫熶緱閸庢劖绻濊閸嬫捇姊绘担鍝勪壕闁稿骸銈搁妴渚€骞嬮悩顐壕妤犵偛鐏濋悘顏堟煕閳哄倻銆掔紒顔规櫊閺佹捇鏁撻敓锟�7.2.5 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
濠电偞娼欓崥瀣垂閸啣娑欑鐎n偄鍓繝鐢靛Т閸燁垶顢旈敓锟�
闂備胶鍘ч悘姘暦濮椻偓椤㈡瑩宕卞☉娆忎粡闁瑰吋鐣崝宀勩€冨▎鎾崇骇闁割偅绻傜紞鏍ㄦ叏閻熼偊妯€妤犵偛绉堕埀顒婄秵閸嬪懐鑺卞鑸电厽婵°倐鍋撴繝鈧敓锟�2.3.0.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷闂備胶鍘ч悘姘暦濮椻偓椤㈡瑩宕卞☉娆忎粡闁瑰吋鐣崝宀勩€冨▎鎾崇骇闁割偅绻傜紞鏍ㄦ叏閻熼偊妯€妤犵偛绉堕埀顒婄秵閸嬪懐鑺卞鑸电厽婵°倐鍋撴繝鈧敓锟�2.3.0.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
闂備礁鎲″Λ浣轰焊椤忓牆鍨傞柛顐f礀閻愬﹪鏌曡箛鏇炐ラ柡鍡╁弮閺岋繝宕掑┑鎰秷濡炪倖甯楃划鎾诲箖瑜斿畷濂告偄婵傚婢掓繝鐢靛仦閹搁箖顢旈敓锟�1.2.1闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂備礁鎲″Λ浣轰焊椤忓牆鍨傞柛顐f礀閻愬﹪鏌曡箛鏇炐ラ柡鍡╁弮閺岋繝宕掑┑鎰秷濡炪倖甯楃划鎾诲箖瑜斿畷濂告偄婵傚婢掓繝鐢靛仦閹搁箖顢旈敓锟�1.2.1闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
濠德板€栭妵婊堝磿閻㈢ǹ围闁圭ǹ绨烘禒鍫ユ煏婵炵偓娅呮い銊︾懇瀵爼鍩¢崒婧炬闁诲骸鐏氶悡鈥愁嚕椤曗偓閹晝绱掑鍡忓亾濞嗘挻鈷戦柛濠勫枎閸氬綊鏌i幘宕囧煟闁诡啫鍥ч敜闁跨噦鎷�7.8.0.0闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�濠德板€栭妵婊堝磿閻㈢ǹ围闁圭ǹ绨烘禒鍫ユ煏婵炵偓娅呮い銊︾懇瀵爼鍩¢崒婧炬闁诲骸鐏氶悡鈥愁嚕椤曗偓閹晝绱掑鍡忓亾濞嗘挻鈷戦柛濠勫枎閸氬綊鏌i幘宕囧煟闁诡啫鍥ч敜闁跨噦鎷�7.8.0.0闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
婵犵绱曢崑娑氱矓閼稿灚娅犻柟绋块缁剁偟鎲告惔銊ュ瀭妞ゆ帒瀚壕浠嬫⒒閸喓鈯曟い銏犵Ч閺屾稖绠涚€n亜顬夊┑鈥冲级閸ㄥ灝顕f导瀛樻櫢闁跨噦鎷�1.0.91 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�婵犵绱曢崑娑氱矓閼稿灚娅犻柟绋块缁剁偟鎲告惔銊ュ瀭妞ゆ帒瀚壕浠嬫⒒閸喓鈯曟い銏犵Ч閺屾稖绠涚€n亜顬夊┑鈥冲级閸ㄥ灝顕f导瀛樻櫢闁跨噦鎷�1.0.91 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備礁鎲¢弻锝夊礉鐎n剛绀婇柡鍐ㄥ€烽悞濠囨煕閺囥劌浜滄慨锝忔嫹
闂備線娼荤粻鎾汇€傞敂鍓х當闁告稒娼欓弰銉╁箹鏉堝墽鎮肩€规洘鍔欓弻娑㈠箣閻愭惌娼¢梺閫炲苯澧€规洘鍞搁梻浣虹帛椤ㄦ劙骞忛敓锟�1.6.3 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂備線娼荤粻鎾汇€傞敂鍓х當闁告稒娼欓弰銉╁箹鏉堝墽鎮肩€规洘鍔欓弻娑㈠箣閻愭惌娼¢梺閫炲苯澧€规洘鍞搁梻浣虹帛椤ㄦ劙骞忛敓锟�1.6.3 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
闂佽崵鍠嶇粈渚€骞婇幇鏉挎瀬闁规儼濮ら崵鍌炴煛閸愩劌鈧湱绮堥敓锟�1.325.157 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂佽崵鍠嶇粈渚€骞婇幇鏉挎瀬闁规儼濮ら崵鍌炴煛閸愩劌鈧湱绮堥敓锟�1.325.157 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備線娼荤拋锝囧緤妤e啫鍑犻柣鏂挎憸閻濊埖銇勯幇鍓佺ɑ鐞氭繈姊哄ú璇插箲闁搞劏妫勯埢鏃堟晜閸撗咃紲闂佸湱銆嬮幏锟�4.2.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備線娼荤拋锝囧緤妤e啫鍑犻柣鏂挎憸閻濊埖銇勯幇鍓佺ɑ鐞氭繈姊哄ú璇插箲闁搞劏妫勯埢鏃堟晜閸撗咃紲闂佸湱銆嬮幏锟�4.2.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂傚倷绶¢崜锕傚窗閺嶎厼桅闁跨噦鎷�3D闂備礁缍婂ḿ褔顢栭崱娑欏亯闁跨噦鎷�1.0.9闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂傚倷绶¢崜锕傚窗閺嶎厼桅闁跨噦鎷�3D闂備礁缍婂ḿ褔顢栭崱娑欏亯闁跨噦鎷�1.0.9闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电娀娼чˇ鏉课涢崘銊庯絿鎷犵仦鍌楀亾閹烘宸濆┑鐘插€绘禍锟�
闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鍠氬〒鑽も偓骞垮劚濞层倝鍩涢弽褜鐔嗛柛顐㈡鐎氼剟鎮樺☉銏$厱鐎广儱顦板☉褎淇婂Δ瀣2濠殿喗甯楃粙鎺楀垂鐠鸿 鏋旀い鎰剁畱缁秹鏌¢崼銉︽锭闁轰讲鏅涜彁闁搞儴娉涢弸鐔兼煛娴f悶鍋㈤柟顔ㄥ洤鎹堕柨鐕傛嫹1.9.5 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鍠氬〒鑽も偓骞垮劚濞层倝鍩涢弽褜鐔嗛柛顐㈡鐎氼剟鎮樺☉銏$厱鐎广儱顦板☉褎淇婂Δ瀣2濠殿喗甯楃粙鎺楀垂鐠鸿 鏋旀い鎰剁畱缁秹鏌¢崼銉︽锭闁轰讲鏅涜彁闁搞儴娉涢弸鐔兼煛娴f悶鍋㈤柟顔ㄥ洤鎹堕柨鐕傛嫹1.9.5 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷
濠电偞鍨跺Λ浣广仈閹间礁鍑犻柣鏃傚劋閸熷潡鏌熺粙鎸庢崳闁糕晪鎷�2v1.0.150闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�濠电偞鍨跺Λ浣广仈閹间礁鍑犻柣鏃傚劋閸熷潡鏌熺粙鎸庢崳闁糕晪鎷�2v1.0.150闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电儑绲藉ú锔炬崲閸屾氨鏆﹀┑鍌氭啞婵増绻濋棃娑欘棞婵$儑鎷�3闂備礁鎼崯鐗堢箾閳ь剚淇婇悙顒併仢闁哄矉绠撻幊锟犲Χ閸パ冪翻闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯椤拷2.0.0.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�濠电儑绲藉ú锔炬崲閸屾氨鏆﹀┑鍌氭啞婵増绻濋棃娑欘棞婵$儑鎷�3闂備礁鎼崯鐗堢箾閳ь剚淇婇悙顒併仢闁哄矉绠撻幊锟犲Χ閸パ冪翻闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯椤拷2.0.0.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備礁鎲¢悷杈╃礊閳ь剚銇勯敐鍕祮闁瑰磭鍠栭弻鍡楊吋閸℃瑯鏆撻梻浣告啞椤ㄥ棗煤濡 鏀﹂柍褜鍓熼弻锝呂旂€n偄顏�1.2.0 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備礁鎲¢悷杈╃礊閳ь剚銇勯敐鍕祮闁瑰磭鍠栭弻鍡楊吋閸℃瑯鏆撻梻浣告啞椤ㄥ棗煤濡 鏀﹂柍褜鍓熼弻锝呂旂€n偄顏�1.2.0 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂佽绻愮换鎰崲閹扮増鍎嶆い鎺戝缁€鍐╃箾閹寸倖鎴犵矆鐎n喗鍊甸柣鐔煎亰濡插摜鈧娲樼划鎾诲箖瑜旈弫鎾绘晸閿燂拷2.7.4 闂備礁鎼崯鐗堢箾閳ь剚淇婇悙顒併仢闁哄苯鐭傞獮瀣攽閸偂绱欏┑鐑囩到濞村倿宕板Δ鍛瀬濠靛倸鎲¢崑瀣煥閻曞倹瀚�闂佽绻愮换鎰崲閹扮増鍎嶆い鎺戝缁€鍐╃箾閹寸倖鎴犵矆鐎n喗鍊甸柣鐔煎亰濡插摜鈧娲樼划鎾诲箖瑜旈弫鎾绘晸閿燂拷2.7.4 闂備礁鎼崯鐗堢箾閳ь剚淇婇悙顒併仢闁哄苯鐭傞獮瀣攽閸偂绱欏┑鐑囩到濞村倿宕板Δ鍛瀬濠靛倸鎲¢崑瀣煥閻曞倹瀚�
闂佽崵濮嶉崟顓х伇濠电姍鍐╁櫧缂侇喒鏅犻幃娆撳级閹崇鎷�
闂備浇鐨崱鈺佹闂佸憡鐗楅〃鍫ュ箰瑜嶉埥澶娾堪閸曨厾娉�2闂備礁缍婂ḿ褔顢栭崱娑欏亯闁跨噦鎷�1.47.1  闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備浇鐨崱鈺佹闂佸憡鐗楅〃鍫ュ箰瑜嶉埥澶娾堪閸曨厾娉�2闂備礁缍婂ḿ褔顢栭崱娑欏亯闁跨噦鎷�1.47.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电偞鍨堕幐鎾磻閹剧粯鍋g憸鏃堝绩閸楃偍缂氶柛顭戝亽濡插綊鏌i幇顖氱厫缂併劎濞€閹鎮烽柇锔叫﹂悗瑙勬礃缁捇骞冭瀹曟悂鏁撻敓锟�2.9.14 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷濠电偞鍨堕幐鎾磻閹剧粯鍋g憸鏃堝绩閸楃偍缂氶柛顭戝亽濡插綊鏌i幇顖氱厫缂併劎濞€閹鎮烽柇锔叫﹂悗瑙勬礃缁捇骞冭瀹曟悂鏁撻敓锟�2.9.14 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷
闂佽崵濮烽崕銈夊垂閼测晝鐜婚柛銉墮绾偓闂佺偨鍎寸亸娆擃敂閺屻儱绾ч柣鎴濇喘濡绢喖顭胯缁挸顕i悽鍛婃優闁荤喖鍋婇弳顓㈡煟鎼淬値娼愰拑閬嶆煛瀹€鈧崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ絿纾�1.16.2 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂佽崵濮烽崕銈夊垂閼测晝鐜婚柛銉墮绾偓闂佺偨鍎寸亸娆擃敂閺屻儱绾ч柣鎴濇喘濡绢喖顭胯缁挸顕i悽鍛婃優闁荤喖鍋婇弳顓㈡煟鎼淬値娼愰拑閬嶆煛瀹€鈧崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ絿纾�1.16.2 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂備胶绮悷銉╁磹閸ф闂悷娆忓濡茶绻涢崱妯虹瑲缂侇煉鎷�8闂備礁鎼鍕濮樿泛鐒垫い鎺戝€搁弸搴ㄦ煕閿濆鏁辩紒鍌氱Ч楠炲饪伴崟顐紟闂備浇銆€閸嬫捇鏌涢敂璇插箹妞わ綇鎷�(闂備胶枪缁绘劗绮旈悽绋挎辈闁绘梻鍘х粻鍙夈亜閺冨倸甯堕柣锔兼嫹)v4.6.0j 闂傚倷绀佸鍫曞垂閻㈢數鍗氶柣銏⑶圭猾宥夋煟濡偐甯涙い搴㈢懇閺岋絽螖鐎n偄顏�闂備胶绮悷銉╁磹閸ф闂悷娆忓濡茶绻涢崱妯虹瑲缂侇煉鎷�8闂備礁鎼鍕濮樿泛鐒垫い鎺戝€搁弸搴ㄦ煕閿濆鏁辩紒鍌氱Ч楠炲饪伴崟顐紟闂備浇銆€閸嬫捇鏌涢敂璇插箹妞わ綇鎷�(闂備胶枪缁绘劗绮旈悽绋挎辈闁绘梻鍘х粻鍙夈亜閺冨倸甯堕柣锔兼嫹)v4.6.0j 闂傚倷绀佸鍫曞垂閻㈢數鍗氶柣銏⑶圭猾宥夋煟濡偐甯涙い搴㈢懇閺岋絽螖鐎n偄顏�
闂備浇鐨崘銊х◤缂備胶濮抽崡鍐茬暦閿熺姴绀冩い蹇撳缁繝姊虹涵鍜佹綈婵炶尙鍠愮缓浠嬫晸閿燂拷2021闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷5.78 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂備浇鐨崘銊х◤缂備胶濮抽崡鍐茬暦閿熺姴绀冩い蹇撳缁繝姊虹涵鍜佹綈婵炶尙鍠愮缓浠嬫晸閿燂拷2021闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷5.78 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
闂佽崵鍠愰悷锔炬暜閻斿摜鐝跺┑鐘叉搐缁犮儲銇勯弮鍌涙珪鐎归潻鎷�
婵犳鍠栭オ鐢电不閹寸偛绶為柣鏃傚帶缁€鍫ユ煙鏉堝墽鍒伴柣蹇ョ畵閺屻倝寮堕幐搴℃閻熸粍婢橀ˇ鐢哥嵁閳ь剙霉閿濆懏鎯堟い锝忔嫹1.0.1.2闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�婵犳鍠栭オ鐢电不閹寸偛绶為柣鏃傚帶缁€鍫ユ煙鏉堝墽鍒伴柣蹇ョ畵閺屻倝寮堕幐搴℃閻熸粍婢橀ˇ鐢哥嵁閳ь剙霉閿濆懏鎯堟い锝忔嫹1.0.1.2闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
濠电偛顕慨鐢告偡閵夆斂鈧倿濡搁敃鈧閬嶆煟濡顒熼柛銈嗙o濠电姰鍨煎▔娑氱矓閹绢喖鐭楅悗鐢电《閸嬫捇鎮烽柇锔叫﹂悗瑙勬礃缁捇骞冭閺佹捇鏁撻敓锟�1.20.3闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷濠电偛顕慨鐢告偡閵夆斂鈧倿濡搁敃鈧閬嶆煟濡顒熼柛銈嗙o濠电姰鍨煎▔娑氱矓閹绢喖鐭楅悗鐢电《閸嬫捇鎮烽柇锔叫﹂悗瑙勬礃缁捇骞冭閺佹捇鏁撻敓锟�1.20.3闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧☉椤ュ顭胯閹凤拷
婵犳鍠栭オ鐢电不閹寸偛绶為柣鏃傚劋鐎氭碍绻涢幋鐑嗘畼闁肩ǹ鐖奸弻鐔兼濞戝崬鍓遍梺缁樼墪閻栧ジ骞冭閺佹捇鏁撻敓锟�1.3.6 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷婵犳鍠栭オ鐢电不閹寸偛绶為柣鏃傚劋鐎氭碍绻涢幋鐑嗘畼闁肩ǹ鐖奸弻鐔兼濞戝崬鍓遍梺缁樼墪閻栧ジ骞冭閺佹捇鏁撻敓锟�1.3.6 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾诲焵椤掑倹鍤€妞わ富鍨伴悾宄扳堪閸喎浜遍梺璺ㄥ櫐閹凤拷
闂備胶绮划宀勵敄閸儱鐒垫い鎺嗗亾闁硅櫕鎸搁悾鐑藉箮閼恒儱娈岄梺閫炲懏鍋�3.72.1.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗嗙€氬鏌嶈閸撶喎顕i鍕骇閻犳亽鍔嶅В澶愭⒑閸濆嫬鈧ǹ锕㈡潏銊︽珷闁跨噦鎷�闂備胶绮划宀勵敄閸儱鐒垫い鎺嗗亾闁硅櫕鎸搁悾鐑藉箮閼恒儱娈岄梺閫炲懏鍋�3.72.1.1 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗嗙€氬鏌嶈閸撶喎顕i鍕骇閻犳亽鍔嶅В澶愭⒑閸濆嫬鈧ǹ锕㈡潏銊︽珷闁跨噦鎷�
闂佽崵濮撮鍕矆娓氣偓椤㈡瑥顓奸崶锔惧墾闂婎偄娲︾喊宥囪姳閻樼鍋撳▓鍨灓闁稿簺鍊栭弲璺衡堪閸繂鐝橀梺鎯х箳閹虫捇銆傜槐锟�1.0.49 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�闂佽崵濮撮鍕矆娓氣偓椤㈡瑥顓奸崶锔惧墾闂婎偄娲︾喊宥囪姳閻樼鍋撳▓鍨灓闁稿簺鍊栭弲璺衡堪閸繂鐝橀梺鎯х箳閹虫捇銆傜槐锟�1.0.49 闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鐗婇崑瀣煥閻曞倹瀚�
缂傚倷绶¢崹闈涚暦閻㈤潧鍨濋柣鎴炆戞慨婊勩亜閺嶃劎鎳勬い鎰舵嫹
mac缂備焦鍎宠ぐ鐐烘嚄鐠哄ソ楦跨疀濞戞ḿ顦梺绯曞墲椤ㄥ懘姊惧Ο灏栧亾鐟欏嫭鍋犻柛搴ㄤ憾瀹曪綁鏁撻敓锟�(Paragon Camptune X)V10.8.12闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�mac缂備焦鍎宠ぐ鐐烘嚄鐠哄ソ楦跨疀濞戞ḿ顦梺绯曞墲椤ㄥ懘姊惧Ο灏栧亾鐟欏嫭鍋犻柛搴ㄤ憾瀹曪綁鏁撻敓锟�(Paragon Camptune X)V10.8.12闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂備礁鍚嬪Σ鎺楋綖婢舵劖鍊跺鑸靛姇缁犺偐鈧箍鍎辩€氼喚绮欐繝鍕<妞ゆ牗绻傞崥鍦磼椤斿墽妲籄COSX 10.9.4 Mavericks闂佽娴烽幊鎾绘嚐椤栫偛鐭楅煫鍥ㄧ☉缁€鍌溾偓骞垮劚閻楀棝鎮楅銏$厽婵°倕顑嗙€氾拷闂備礁鍚嬪Σ鎺楋綖婢舵劖鍊跺鑸靛姇缁犺偐鈧箍鍎辩€氼喚绮欐繝鍕<妞ゆ牗绻傞崥鍦磼椤斿墽妲籄COSX 10.9.4 Mavericks闂佽娴烽幊鎾绘嚐椤栫偛鐭楅煫鍥ㄧ☉缁€鍌溾偓骞垮劚閻楀棝鎮楅銏$厽婵°倕顑嗙€氾拷
Rar闂佽崵鍠愰悷杈╁緤閻e本鏆滈柛銉墮缁€鍡涙煃鏉炴壆鍔嶉柣婵愭ac闂備胶绮〃鍛熆閿燂拷1.4 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍х暦濡も偓椤撳ジ宕煎┑鍫氬亾椤撱垺鐓熸俊銈咁儐鐎氾拷Rar闂佽崵鍠愰悷杈╁緤閻e本鏆滈柛銉墮缁€鍡涙煃鏉炴壆鍔嶉柣婵愭ac闂備胶绮〃鍛熆閿燂拷1.4 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍х暦濡も偓椤撳ジ宕煎┑鍫氬亾椤撱垺鐓熸俊銈咁儐鐎氾拷
Mac闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鍚橀悢鐓庣労闁告劑鍔庤ぐ鏌ユ⒑闂堚晝绉堕柟鍑ゆ嫹(ARC Welder)v1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�Mac闂佽娴烽幊鎾凰囬姘辨殾婵犲﹤鍚橀悢鐓庣労闁告劑鍔庤ぐ鏌ユ⒑闂堚晝绉堕柟鍑ゆ嫹(ARC Welder)v1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
Charles for MacV3.9.3闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷Charles for MacV3.9.3闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
缂傚倸鍊搁崯顖炲垂閸︻厼鍨濋悹杞拌閸熷懘鏌曟径鍫濆姎鐎靛府鎷�
闂備胶鎳撻崥瀣垝鎼达絺鍋撳顒傂㈤棁澶愮叓閸ャ劌鍤繛鍏兼閺屾盯鏁愰崒娑欘吙ac闂備胶绮〃鍛熆閿燂拷5.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闂備胶鎳撻崥瀣垝鎼达絺鍋撳顒傂㈤棁澶愮叓閸ャ劌鍤繛鍏兼閺屾盯鏁愰崒娑欘吙ac闂備胶绮〃鍛熆閿燂拷5.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂傚倷鐒︾€笛囧礉閺嵮呮殼閹艰揪绲洪崑鎾荤嵁閸喚浠鹃梺绯曟櫆缁嬫挾鍒掗埡鍛剦闁荤儐鏌€闂備胶绮〃鍛耿閿燂拷1.33闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂傚倷鐒︾€笛囧礉閺嵮呮殼閹艰揪绲洪崑鎾荤嵁閸喚浠鹃梺绯曟櫆缁嬫挾鍒掗埡鍛剦闁荤儐鏌€闂備胶绮〃鍛耿閿燂拷1.33闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂傚⿴鍋勫ù鍌炲磻閸℃ɑ娅犻柣銏㈢c闂備胶绮〃鍛熆閿燂拷1.3.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闂傚⿴鍋勫ù鍌炲磻閸℃ɑ娅犻柣銏㈢c闂備胶绮〃鍛熆閿燂拷1.3.2 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂備礁鎼鍕嚄閸洖纾婚柨婵嗘椤╂煡鏌¢崘銊モ偓濠氬箠婵夊穬c闂備胶绮〃鎰板箯閿燂拷7.13婵犳鍠楃换鎰緤閻e本顫曢柨鐔哄У閸嬪鏌ㄩ悤鍌涘闂備礁鎼鍕嚄閸洖纾婚柨婵嗘椤╂煡鏌¢崘銊モ偓濠氬箠婵夊穬c闂備胶绮〃鎰板箯閿燂拷7.13婵犳鍠楃换鎰緤閻e本顫曢柨鐔哄У閸嬪鏌ㄩ悤鍌涘
濠电姵顔栭崹杈╂暜婵犲嫮绀婇悗锝庝憾閸熷懘鏌曟径鍫濆姎鐎靛府鎷�
Apple Logic Pro xV10.3.2Apple Logic Pro xV10.3.2
Adobe Premiere Pro CC 2017 mac闂備胶绮〃鍛熆閿燂拷11.0.0 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘Adobe Premiere Pro CC 2017 mac闂備胶绮〃鍛熆閿燂拷11.0.0 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘
闂備礁鎲¢〃鍛村疮椤愩垻鏆﹂柛顐犲劜椤ュ牊绻涢崱妤冪闁稿孩鎽c闂備胶绮〃鍛耿閿燂拷9.1.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備礁鎲¢〃鍛村疮椤愩垻鏆﹂柛顐犲劜椤ュ牊绻涢崱妤冪闁稿孩鎽c闂備胶绮〃鍛耿閿燂拷9.1.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
Mac缂傚倸鍊搁崯顖炲垂閸︻厼鍨濋柛顐f礃閸庡酣鎮楀☉娅虫垹浜搁敓鐘茬骇闁绘垵妫楅悘鐔哥箾閸☆厽瀚�(MacTV)v0.121 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�Mac缂傚倸鍊搁崯顖炲垂閸︻厼鍨濋柛顐f礃閸庡酣鎮楀☉娅虫垹浜搁敓鐘茬骇闁绘垵妫楅悘鐔哥箾閸☆厽瀚�(MacTV)v0.121 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
Adobe Fireworks CS6 Mac闂備胶绮〃鍛耿閹憋拷6闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾跺垝婵犳艾鐒垫い鎺嶇劍婵挳鏌熼幑鎰敿闁告﹩鍓熼弻锟犲磼濮橆厼绐涙繝鈷€宥嗗Adobe Fireworks CS6 Mac闂備胶绮〃鍛耿閹憋拷6闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎾跺垝婵犳艾鐒垫い鎺嶇劍婵挳鏌熼幑鎰敿闁告﹩鍓熼弻锟犲磼濮橆厼绐涙繝鈷€宥嗗
闂備焦鎮堕崕鏌ュ磿閹惰姤鍤嬪ù鍏兼綑閻愬﹪鏌熼鍡楀暙婢癸拷
AutoCAD2015 mac濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌涢銈呮瀾闁归婀�1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�AutoCAD2015 mac濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌涢銈呮瀾闁归婀�1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
Adobe Photoshop cs6 mac闂備胶绮〃鍛熆閿燂拷13.0.3 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎰矙婢舵劦鏁囬柣鏂挎憸閳ь剦鍣i弻锝呂旂€n偄顏�Adobe Photoshop cs6 mac闂備胶绮〃鍛熆閿燂拷13.0.3 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎰矙婢舵劦鏁囬柣鏂挎憸閳ь剦鍣i弻锝呂旂€n偄顏�
Mac闂備焦妞块崢褰掑垂娴犲闂柧蹇撴贡绾惧吋淇婇婊冨妺缂佸倸鐗撳鍫曟倻閸℃浠у┑鐐叉4閹凤拷(Sketch mac)v3.3.2 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘Mac闂備焦妞块崢褰掑垂娴犲闂柧蹇撴贡绾惧吋淇婇婊冨妺缂佸倸鐗撳鍫曟倻閸℃浠у┑鐐叉4閹凤拷(Sketch mac)v3.3.2 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘
Adobe After Effects cs6 mac闂備胶绮〃鍛熆閿燂拷1.0濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘Adobe After Effects cs6 mac闂備胶绮〃鍛熆閿燂拷1.0濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘
Adobe InDesign cs6 mac1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎰矙婢舵劦鏁囬柣鏂挎憸閳ь剦鍣i弻锝呂旂€n偄顏�Adobe InDesign cs6 mac1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鎰矙婢舵劦鏁囬柣鏂挎憸閳ь剦鍣i弻锝呂旂€n偄顏�
闂佸湱鍘ч悺銊ヮ潖婵犳艾鏋侀柕鍫濇婵粍銇勯弽銊ф噭妞ゆ劧鎷�
Mac闂備胶绮〃鍛存偋閸℃稑绠甸柍鍝勬噹缁犲鏌ㄩ悤鍌涘1.1.26 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘當婵犙傞儭mg]Mac闂備胶绮〃鍛存偋閸℃稑绠甸柍鍝勬噹缁犲鏌ㄩ悤鍌涘1.1.26 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘當婵犙傞儭mg]
Mac闂佽崵濮村ú鈺咁敋瑜斿畷顖炲箵濡ょ稛S(Paragon NTFS for Mac)12.1.62 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�Mac闂佽崵濮村ú鈺咁敋瑜斿畷顖炲箵濡ょ稛S(Paragon NTFS for Mac)12.1.62 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂佸搫顦弲娑㈠箠濡ソ褰掓晸閿燂拷10 for macv3.4.1.4368 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂佸搫顦弲娑㈠箠濡ソ褰掓晸閿燂拷10 for macv3.4.1.4368 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
Mac濠电偞鍨堕幐鎼侇敄閸℃ぜ鈧帞鎹勬笟顖氭闂佸憡绻傜€氥劍绂嶉敐澶嬬厽闁靛ǹ鍎遍顐︽⒑椤旂⒈鍤熺紒杈ㄥ浮閹垽宕妷顔荤穿闂備浇宕甸崑娑樜涘Δ浣割嚤闁圭増婢樼粈鍌炴煥閻曞倹瀚�(CleanMyMac for mac)v3.1.1 婵犳鍠楃换鎰緤閻e本顫曢柨鐔哄У閸嬪鏌ㄩ悤鍌涘Mac濠电偞鍨堕幐鎼侇敄閸℃ぜ鈧帞鎹勬笟顖氭闂佸憡绻傜€氥劍绂嶉敐澶嬬厽闁靛ǹ鍎遍顐︽⒑椤旂⒈鍤熺紒杈ㄥ浮閹垽宕妷顔荤穿闂備浇宕甸崑娑樜涘Δ浣割嚤闁圭増婢樼粈鍌炴煥閻曞倹瀚�(CleanMyMac for mac)v3.1.1 婵犳鍠楃换鎰緤閻e本顫曢柨鐔哄У閸嬪鏌ㄩ悤鍌涘
闂備礁鍚嬪Σ鎺楋綖婢舵劖鍊跺┑澶嗗亾ootCamp5.1.5640 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備礁鍚嬪Σ鎺楋綖婢舵劖鍊跺┑澶嗗亾ootCamp5.1.5640 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
ios缂傚倷璁查崑鎾绘煕濞嗗秴鍔滈柛鐐差樀閺屻倝宕¢悜鍥т紣闂侀潧娴勯幏锟�
闁诲海鏁婚崑濠囧窗閺囩喓鈹嶅┑鍌滄枾ad闂備胶绮〃鎰板箯閿燂拷2020v7.0.12 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闁诲海鏁婚崑濠囧窗閺囩喓鈹嶅┑鍌滄枾ad闂備胶绮〃鎰板箯閿燂拷2020v7.0.12 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
iphone闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞呮儶q2021v8.5.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷iphone闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞呮儶q2021v8.5.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
闂備礁鎼€氼參骞愰柨瀣攳濠靛倻绗係闂備胶绮〃鍛熆閿燂拷7.3.13 iPhone闂備胶绮〃鎰板箯閿燂拷闂備礁鎼€氼參骞愰柨瀣攳濠靛倻绗係闂備胶绮〃鍛熆閿燂拷7.3.13 iPhone闂備胶绮〃鎰板箯閿燂拷
闂傚倸鍊哥€氼剟鎯岄崒姘肩€堕柨鐕傛嫹 iphoneV8.32.4 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�闂傚倸鍊哥€氼剟鎯岄崒姘肩€堕柨鐕傛嫹 iphoneV8.32.4 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰搴綖閵忋倖鏅查柛娑卞灣椤㈠懘姊虹紒姗嗘闁瑰嚖鎷�
闂備礁鎲¢〃鍛村疮閻楀牊娅犻柨鐕傛嫹 iphone闂備胶绮〃鎰板箯閿燂拷9.2.5 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂備礁鎲¢〃鍛村疮閻楀牊娅犻柨鐕傛嫹 iphone闂備胶绮〃鎰板箯閿燂拷9.2.5 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
ios闂備焦鐪归崹濠氬窗閹邦剦娓婚柛褎顨呯€氬鈧箍鍎遍幊搴綖閿燂拷
99濠电偞鍨堕幐鍫曞磿閻㈢ǹ鐒垫い鎺嗗亾妞わ附婢橀妴鎺楀醇閺囩偞顥濋梺瑙勵問閸犳牠銆傜化锟�1.3.699濠电偞鍨堕幐鍫曞磿閻㈢ǹ鐒垫い鎺嗗亾妞わ附婢橀妴鎺楀醇閺囩偞顥濋梺瑙勵問閸犳牠銆傜化锟�1.3.6
闂傚⿴鍋勫ù鍌炲磻閸℃ɑ娅犻柣銏⑽攈one闂備胶绮〃鎰板箯閿燂拷5.7.3 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂傚⿴鍋勫ù鍌炲磻閸℃ɑ娅犻柣銏⑽攈one闂備胶绮〃鎰板箯閿燂拷5.7.3 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
婵犵數鍎戠徊楣冩晪闂佹眹鍊ч幏锟� for iPhonev9.5.15 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�婵犵數鍎戠徊楣冩晪闂佹眹鍊ч幏锟� for iPhonev9.5.15 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
濠电姭鎷冩担绋款潊闂佺鍩栭〃鍡楊嚗閸曨垰鐓涢柛灞剧矋閻︼拷 for iphoneV7.5.3闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ絿纭癙A濠电姭鎷冩担绋款潊闂佺鍩栭〃鍡楊嚗閸曨垰鐓涢柛灞剧矋閻︼拷 for iphoneV7.5.3闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ絿纭癙A
闂佽崵濮撮澶愬绩闁秵鍋ら柡鍥ュ灩閹瑰爼鏌℃径瀣嚋缂佸倸娼焢hone(Google Maps)4.54  濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘闂佽崵濮撮澶愬绩闁秵鍋ら柡鍥ュ灩閹瑰爼鏌℃径瀣嚋缂佸倸娼焢hone(Google Maps)4.54 濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘
ios闁荤喐绮堥崡铏閸洘鍋傞柤鍝ユ暩缁犻箖鏌涘▎鎰ョ細妞ゆ棑鎷�
闂傚⿴鍋勫ù鍌炲磻閸涙潙绠伴梺顒€绉甸崵鎰版偡濞嗗繐顏ù婊庡灦閺岋絽螖閳ь剙锕㈤敓锟�3.3.35 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜斿畷椋庡寲缁涚禈]闂傚⿴鍋勫ù鍌炲磻閸涙潙绠伴梺顒€绉甸崵鎰版偡濞嗗繐顏ù婊庡灦閺岋絽螖閳ь剙锕㈤敓锟�3.3.35 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜斿畷椋庡寲缁涚禈]
闂備礁鎲¢懝楣兯囬鐐茬畺闊洦鍝庢禍褰掓⒑椤掆偓缁夊爼宕fィ鍐╃厵缂備降鍨归獮妤呮煛閸屾瑧绐旂€规洘濞婇崺锟犅ㄧ粊宥夋⒑缂佹﹩娈i柟鍑ゆ嫹1.0.1017 闂備礁鍚嬪Σ鎺楋綖婢舵劖鍊跺┑澶屾箲ad闂備胶绮〃鎰板箯閿燂拷闂備礁鎲¢懝楣兯囬鐐茬畺闊洦鍝庢禍褰掓⒑椤掆偓缁夊爼宕fィ鍐╃厵缂備降鍨归獮妤呮煛閸屾瑧绐旂€规洘濞婇崺锟犅ㄧ粊宥夋⒑缂佹﹩娈i柟鍑ゆ嫹1.0.1017 闂備礁鍚嬪Σ鎺楋綖婢舵劖鍊跺┑澶屾箲ad闂備胶绮〃鎰板箯閿燂拷
闁荤喐绮堥崡铏閸洘鍋傞柛顐f礀缁€鍌炴煕椤愮姴鍔滈柡渚€浜堕弻鐔虹磼閵忕姴绠洪梺鍝勫€风欢姘暦閹惰棄鐓涙い褏顨掗梻浣虹帛椤ㄦ劙骞忛敓锟�2.8.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闁荤喐绮堥崡铏閸洘鍋傞柛顐f礀缁€鍌炴煕椤愮姴鍔滈柡渚€浜堕弻鐔虹磼閵忕姴绠洪梺鍝勫€风欢姘暦閹惰棄鐓涙い褏顨掗梻浣虹帛椤ㄦ劙骞忛敓锟�2.8.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
闂備礁鎼崐褰掋€冩繝鍐檮闁哄啫鐗婇崕搴ㄦ倵濞戞鎴犱焊閿熺姵鍊垫鐐茬仢閻忣亪鏌涢埡鍌溿€掔紒顔规櫊閹偓闁绘牕鐛遍梻浣虹帛椤ㄦ劙骞忛敓锟�7.0.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備礁鎼崐褰掋€冩繝鍐檮闁哄啫鐗婇崕搴ㄦ倵濞戞鎴犱焊閿熺姵鍊垫鐐茬仢閻忣亪鏌涢埡鍌溿€掔紒顔规櫊閹偓闁绘牕鐛遍梻浣虹帛椤ㄦ劙骞忛敓锟�7.0.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂傚倷妞掗崡鎶剿夐幘鍨涘亾濮橆剛效婵☆偄鎳樺畷妤呭川椤栵絽鏁� for iPhonev10.9.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂傚倷妞掗崡鎶剿夐幘鍨涘亾濮橆剛效婵☆偄鎳樺畷妤呭川椤栵絽鏁� for iPhonev10.9.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
ios闂備焦鎮堕崕鏌ュ磿閹惰姤鍤嬪ù鍏兼綑閻愬﹪鏌熼鍡楀暙婢癸拷
How old do I look ios闂備胶绮〃鎰板箯閿燂拷1.02 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷How old do I look ios闂備胶绮〃鎰板箯閿燂拷1.02 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
缂傚倸鍊稿ú銈嗩殽缁嬫5鐟拔熼懖鈺冪厠闂侀€炲苯澧扮紒顔芥閸┾偓闁荤偟婢媓one闂備胶绮〃鍛耿閿燂拷8.6.62 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧矊椤e吋銇勯幒鎾剁煀妞ゆ洩缍€缁犳盯寮撮悜鍡樻瘔缂傚倸鍊稿ú銈嗩殽缁嬫5鐟拔熼懖鈺冪厠闂侀€炲苯澧扮紒顔芥閸┾偓闁荤偟婢媓one闂備胶绮〃鍛耿閿燂拷8.6.62 闂備礁鎼悧鍐磻閹剧粯鐓涢柛灞剧矊椤e吋銇勯幒鎾剁煀妞ゆ洩缍€缁犳盯寮撮悜鍡樻瘔
婵犳鍠楄摫婵炲吋鐟ラ悾鐢稿礃椤旇В鎸€闂佺粯鏌ㄩ崥瀣掗幇鐗堢厾闁哄嫬娴氬ḿ鎰版煟韫囨搩妯€闁诡啫鍥ч敜闁跨噦鎷�1.0.0婵犳鍠楄摫婵炲吋鐟ラ悾鐢稿礃椤旇В鎸€闂佺粯鏌ㄩ崥瀣掗幇鐗堢厾闁哄嫬娴氬ḿ鎰版煟韫囨搩妯€闁诡啫鍥ч敜闁跨噦鎷�1.0.0
濠电姰鍨归悘鍫ュ疾濞戙垹桅濠靛鎮傞弻娑㈠Ψ瑜忛埞濉竌d闂備胶绮〃鎰板箯閿燂拷5.7.4 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷濠电姰鍨归悘鍫ュ疾濞戙垹桅濠靛鎮傞弻娑㈠Ψ瑜忛埞濉竌d闂備胶绮〃鎰板箯閿燂拷5.7.4 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
闂傚⿴鍋勫ù鍌炲磻閸涱喗娅犳繛鎾崇崻s闂備胶绮〃鍛耿閿燂拷9.6.30 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷闂傚⿴鍋勫ù鍌炲磻閸涱喗娅犳繛鎾崇崻s闂備胶绮〃鍛耿閿燂拷9.6.30 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷
ios婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱鎷嬮崯鍛存煏婢跺牆鍔氱€靛府鎷�
闂備胶鍘ч崯鍧楁嚐椤栨壕鍋撻崹顐€跨€规洜鍏樺鍫曞箰鎼达綆娲痠os闂備胶绮〃鎰板箯閿燂拷1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備胶鍘ч崯鍧楁嚐椤栨壕鍋撻崹顐€跨€规洜鍏樺鍫曞箰鎼达綆娲痠os闂備胶绮〃鎰板箯閿燂拷1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴閹鎮烽柇锔叫﹂梺鍛婄懃缁绘ê鐣峰┑瀣厸闁稿本鍑归弶褰掓⒑閸忓吋顫楁い顐㈩樀閹ɑ寰勯幇顓炰罕闂佺宥嗗1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴閹鎮烽柇锔叫﹂梺鍛婄懃缁绘ê鐣峰┑瀣厸闁稿本鍑归弶褰掓⒑閸忓吋顫楁い顐㈩樀閹ɑ寰勯幇顓炰罕闂佺宥嗗1.0 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍ь嚕閻㈢ǹ鐒垫い鎺戝濡﹢鏌熷▓鍨灈妞わ綇鎷�
UC婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱顦梻顖炴煃閻氬瓨瀚�113.5.5.1555濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘UC婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱顦梻顖炴煃閻氬瓨瀚�113.5.5.1555濠电偞鍨堕幖鈺呭储娴犲鍑犻柛鎰靛枟閸嬪鏌ㄩ悤鍌涘
360婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱顦梻顖炴煃閳轰緡鏀� for iPadV4.1.3  婵犳鍠楃换鎰緤閻e本顫曢柨鐔哄У閸嬪鏌ㄩ悤鍌涘360婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱顦梻顖炴煃閳轰緡鏀� for iPadV4.1.3 婵犳鍠楃换鎰緤閻e本顫曢柨鐔哄У閸嬪鏌ㄩ悤鍌涘
iPhone闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞呮倵Q婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱顦梻顖炴煃閻氬瓨瀚�8.9.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷iPhone闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞呮倵Q婵犵數鍋炲ḿ娆戞崲濡ゅ拑缍栫€广儱顦梻顖炴煃閻氬瓨瀚�8.9.1 闂佽姘﹂~澶庢懌闂佸搫鐬奸崰鏍箖瑜旈弫鎾绘晸閿燂拷

首页编程开发ASP.NET → Asp.net 开发中Session是如何实现存储的?

Asp.net 开发中Session是如何实现存储的?

相关文章发表评论 来源:西西整理时间:2012/11/28 21:32:54字体大小:A-A+

作者:西西点击:0次评论:0次标签: Session

  • 类型:磁盘工具大小:18.8M语言:中文 评分:5.0
  • 标签:
立即下载

我们还是简单的来复习一下Session吧:Session的数据时保存在服务器端,并且每个客户端对应不同Session。那么Session究竟是如何保存,如何区分客服端的了?我们还是沿用以前的方法来讲吧,以一个demo开始:

protected void Page_Load(object sender, EventArgs e)  
       {  
           string name = this.Request["Name"];  
           object sessionName = Session["Name"];  
           if (string.IsNullOrEmpty(name) && sessionName==null)  
           {  
               Response.Write("Please Enter your name!");  
           }  
           else   
           {  
               if (sessionName == null)  
               {  
                   Session.Add("Name", name);  
                   Response.Write("Set Session name and Session ID:"+Session.SessionID);  
               }  
               else  
               {  
                   Response.Write("Get Session Name and Session ID:"+ Session.SessionID);  
               }  
               Response.Write(" Name:" + name);  
           }  
       }

 假设我们的请求路径为http://localhost:18385/WebForm1.aspx?name=majiang

第一次请求数据如下:

第二次请求数据了:

这里我们看见在第一次请求的返回头里面有一个ASP.NET_SessionId,在第二次请求过程中这个请求头里面也含有ASP.NET_SessionId,并且它的值刚好是Session.SessionID(我这里用的是asp.net4.5),我们可以猜测这个ASP.NET_SessionId就是用来区分不同的客户端请求。那么这个值是什么时候生成的又是什么时候输出的了?

首先我们需要知道我们用到的那个Session具体在什么地方定义的,其实它是定义于HttpContext的Session属性中,我们一般的page也只是调用这个属性而已。

public HttpSessionState Session
{
    get
    {
        if (this.HasWebSocketRequestTransitionCompleted)
        {
            return null;
        }
        if (this._sessionStateModule != null)
        {
            lock (this)
            {
                if (this._sessionStateModule != null)
                {
                    this._sessionStateModule.InitStateStoreItem(true);
                    this._sessionStateModule = null;
                }
            }
        }
        return (HttpSessionState) this.Items["AspSession"];
    }
}
 
这里用到一个_sessionStateModule的变量,那么究竟在什么地方操作它们的了?在HttpContext中有两个操作sessionStateModule方法如下:
  internal void AddDelayedHttpSessionState(SessionStateModule module)
    {
        if (this._sessionStateModule != null)
        {
            throw new HttpException(SR.GetString("Cant_have_multiple_session_module"));
        }
        this._sessionStateModule = module;
    }

    internal void RemoveDelayedHttpSessionState()
    {
        this._sessionStateModule = null;
    }

这两个方法干什么的我就不说了,它们是在什么地方调用的了。如果你开发过asp.net,那么你应该知道在SessionStateModule 类,它是一个IHttpModule的实现者专门用来管理Session的,在这个类中有一个InitModuleFromConfig方法,该方法主要是在该类的Init中调用,如丧我们来看看它的具体实现吧:

private void InitModuleFromConfig(HttpApplication app, SessionStateSection config) { if (config.Mode != SessionStateMode.Off) { app.AddOnAcquireRequestStateAsync(new BeginEventHandler(this.BeginAcquireState), new EndEventHandler(this.EndAcquireState)); app.ReleaseRequestState += new EventHandler(this.OnReleaseState); app.EndRequest += new EventHandler(this.OnEndRequest); this._partitionResolver = this.InitPartitionResolver(config); switch (config.Mode) { case SessionStateMode.InProc: if (HttpRuntime.UseIntegratedPipeline) { s_canSkipEndRequestCall = true; } this._store = new InProcSessionStateStore(); this._store.Initialize(null, null); break; case SessionStateMode.StateServer: if (HttpRuntime.UseIntegratedPipeline) { s_canSkipEndRequestCall = true; } this._store = new OutOfProcSessionStateStore(); ((OutOfProcSessionStateStore) this._store).Initialize(null, null, this._partitionResolver); break; case SessionStateMode.SQLServer: this._store = new SqlSessionStateStore(); ((SqlSessionStateStore) this._store).Initialize(null, null, this._partitionResolver); break; case SessionStateMode.Custom: this._store = this.InitCustomStore(config); break; } this._idManager = this.InitSessionIDManager(config); if (((config.Mode == SessionStateMode.InProc) || (config.Mode == SessionStateMode.StateServer)) && this._usingAspnetSessionIdManager) { this._ignoreImpersonation = true; } } }

这里主要是设置 this._store和  this._idManager 它们两个变量,其中 this._store的设置根据Session的存储类型不同设置为不同的实例,这里的存储方式有以下四种

public enum SessionStateMode
{
    Off,
    InProc,
    StateServer,
    SQLServer,
    Custom
}
默认的是SessionStateMode.InProc,所以默认的this._store是一个InProcSessionStateStore实例,而this._idManager默认是一个SessionIDManager实例。这个方法结束后我们的 this._store和  this._idManager这两个变量就已经有值了。在SessionStateModule类中还有一个很重要的方法 BeginAcquireState:

private IAsyncResult BeginAcquireState(object source, EventArgs e, AsyncCallback cb, object extraData) { IAsyncResult result; bool sessionStateItem = true; bool flag3 = false; this._acquireCalled = true; this._releaseCalled = false; this.ResetPerRequestFields(); this._rqContext = ((HttpApplication) source).Context; this._rqAr = new HttpAsyncResult(cb, extraData); this.ChangeImpersonation(this._rqContext, false); try { if (EtwTrace.IsTraceEnabled(4, 8)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_SESSION_DATA_BEGIN, this._rqContext.WorkerRequest); } this._store.InitializeRequest(this._rqContext); bool requiresSessionState = this._rqContext.RequiresSessionState; if (this._idManager.InitializeRequest(this._rqContext, false, out this._rqSupportSessionIdReissue)) { this._rqAr.Complete(true, null, null); if (EtwTrace.IsTraceEnabled(4, 8)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_SESSION_DATA_END, this._rqContext.WorkerRequest); } return this._rqAr; } if ((s_allowInProcOptimization && !s_sessionEverSet) && (!requiresSessionState || !((SessionIDManager) this._idManager).UseCookieless(this._rqContext))) { flag3 = true; } else { this._rqId = this._idManager.GetSessionID(this._rqContext); } if (!requiresSessionState) { if (this._rqId != null) { this._store.ResetItemTimeout(this._rqContext, this._rqId); } this._rqAr.Complete(true, null, null); if (EtwTrace.IsTraceEnabled(4, 8)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_SESSION_DATA_END, this._rqContext.WorkerRequest); } return this._rqAr; } this._rqExecutionTimeout = this._rqContext.Timeout; if (this._rqExecutionTimeout == DEFAULT_DBG_EXECUTION_TIMEOUT) { this._rqExecutionTimeout = s_configExecutionTimeout; } this._rqReadonly = this._rqContext.ReadOnlySessionState; if (this._rqId != null) { sessionStateItem = this.GetSessionStateItem(); } else if (!flag3) { bool flag4 = this.CreateSessionId(); this._rqIdNew = true; if (flag4) { if (s_configRegenerateExpiredSessionId) { this.CreateUninitializedSessionState(); } this._rqAr.Complete(true, null, null); if (EtwTrace.IsTraceEnabled(4, 8)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_SESSION_DATA_END, this._rqContext.WorkerRequest); } return this._rqAr; } } if (sessionStateItem) { this.CompleteAcquireState(); this._rqAr.Complete(true, null, null); } result = this._rqAr; } finally { this.RestoreImpersonation(); } return result; }

在这个方法中有以下3句比较重要

    this._rqId = this._idManager.GetSessionID(this._rqContext);
   sessionStateItem = this.GetSessionStateItem();
    this.CompleteAcquireState();

第一句获取SessionID,第二句货物SessionStateItem,第三句主要是调用一个CompleteAcquireState方法,而这个方法里面有一句  SessionStateUtility.AddDelayedHttpSessionStateToContext(this._rqContext, this);或则this.InitStateStoreItem(true); 这个方法主要对应一句

 SessionStateUtility.AddHttpSessionStateToContext(this._rqContext, this._rqSessionState);,在这个类中还有一个方法OnReleaseState里面有这么一句

 SessionStateUtility.RemoveHttpSessionStateFromContext(this._rqContext, delayed);

我们首先来可看看SessionStateUtility的AddHttpSessionStateToContext、RemoveHttpSessionStateFromContext方法的实现吧。

internal static void AddDelayedHttpSessionStateToContext(HttpContext context, SessionStateModule module){ context.AddDelayedHttpSessionState(module);}internal void AddDelayedHttpSessionState(SessionStateModule module){ if (this._sessionStateModule != null) { throw new HttpException(SR.GetString("Cant_have_multiple_session_module")); } this._sessionStateModule = module;}public static void AddHttpSessionStateToContext(HttpContext context, IHttpSessionState container) { HttpSessionState state = new HttpSessionState(container); try { context.Items.Add("AspSession", state); } catch (ArgumentException) { throw new HttpException(SR.GetString("Cant_have_multiple_session_module")); } } internal static void RemoveHttpSessionStateFromContext(HttpContext context, bool delayed) { if (delayed) { context.RemoveDelayedHttpSessionState(); } else { context.Items.Remove("AspSession"); } }

其中HttpContext的RemoveDelayedHttpSessionState就一句    this._sessionStateModule = null;我想对于SessionStateUtility里面的这几个方法我就不多说吧,很简单。

我们还是回头看看前面那2句吧,

public string GetSessionID(HttpContext context){ string id = null; this.CheckInitializeRequestCalled(context); if (this.UseCookieless(context)) { return (string) context.Items["AspCookielessSession"]; } HttpCookie cookie = context.Request.Cookies[Config.CookieName]; if ((cookie != null) && (cookie.Value != null)) { id = this.Decode(cookie.Value); if ((id != null) && !this.ValidateInternal(id, false)) { id = null; } } return id;}

默认情况下我们的cookie是可用的,这里的Config.CookieName实际上就是SessionStateSection的CookieName属性

[ConfigurationProperty("cookieName", DefaultValue="ASP.NET_SessionId")]public string CookieName{ get { return (string) base[_propCookieName]; } set { base[_propCookieName] = value; }}

到这里大家应该知道为什么Http请求和返回关于Session对应Cookie的id是ASP.NET_SessionId了吧。不过大家要注意一点这里的SessionIDManager 在操作cookie做了一些数据验证处理,如果在特殊情况需要自定义验证规则我们可以自己来实现ISessionIDManager接口。这里我们可以看到第一次请求是没有sessionid的,所以sessionStateItem = this.GetSessionStateItem();这句代码不会执行,sessionStateItem默认为true,但是第二次请求时有sessionid这句代码就会执行。GetSessionStateItem()的实现这里我们就忽略了吧,这个方法设置一个SessionStateStoreData的实例 this._rqItem ,如果 this._rqItem为null则返回false。一般我们的Session都是可读写的。GetSessionStateItem方法主要是调用  this._rqItem = this._store.GetItemExclusive(this._rqContext, this._rqId, out flag2, out span, out this._rqLockId, out this._rqActionFlags);

现在我们回到CompleteAcquireState方法中来:

  if (flag)
            {
                SessionStateUtility.AddDelayedHttpSessionStateToContext(this._rqContext, this);
                this._rqSessionState = s_delayedSessionState;
            }
            else
            {
                this.InitStateStoreItem(true); //SessionStateUtility.AddHttpSessionStateToContext(this._rqContext, this._rqSessionState);
            }

这里是flag默认是false,里面具体判断就不说,InitStateStoreItem方法主要代码:

if (this._rqItem == null)
            {
                this._rqItem = this._store.CreateNewStoreData(this._rqContext, s_timeout);
            }

this._rqSessionItems = this._rqItem.Items;

   this._rqSessionState = new HttpSessionStateContainer(this, this._rqId, this._rqSessionItems, this._rqStaticObjects, this._rqItem.Timeout, this._rqIsNewSession, s_configCookieless, s_configMode, this._rqReadonly);
            SessionStateUtility.AddHttpSessionStateToContext(this._rqContext, this._rqSessionState);

这里InProcSessionStateStore 的CreateNewStoreData方法实际就是调用SessionStateUtility.CreateLegitStoreData:

internal static SessionStateStoreData CreateLegitStoreData(HttpContext context, ISessionStateItemCollection sessionItems, HttpStaticObjectsCollection staticObjects, int timeout){ if (sessionItems == null) { sessionItems = new SessionStateItemCollection(); } if ((staticObjects == null) && (context != null)) { staticObjects = GetSessionStaticObjects(context); } return new SessionStateStoreData(sessionItems, staticObjects, timeout);}

其中SessionStateItemCollection的定义如下:

public sealed class SessionStateItemCollection : NameObjectCollectionBase, ISessionStateItemCollection, ICollection, IEnumerable

这里创建了一个  HttpSessionStateContainer实例。我想大家到这里就应该明白我们的Session实际上就是一个HttpSessionStateContainer实例。

好现在我来看 Session.SessionID这个是怎么实现的
public string SessionID
{
    get
    {
        if (this._id == null)
        {
            this._id = this._stateModule.DelayedGetSessionId();
        }
        return this._id;
    }
}

而SessionStateModule的DelayedGetSessionId方法实现如下:

internal string DelayedGetSessionId()
{
    this.ChangeImpersonation(this._rqContext, false);
    try
    {
        this._rqId = this._idManager.GetSessionID(this._rqContext);
        if (this._rqId == null)
        {
            this.CreateSessionId();
        }
    }
    finally
    {
        this.RestoreImpersonation();
    }
    return this._rqId;
}
这里的CreateSessionId具体是怎么创建我就不说了吧,知道它是真正创建sessionid的就可以。而session的实际操作都是在ISessionStateItemCollection里面如HttpSessionStateContainer的Add方法:

public void Add(string name, object value)
{
    this._sessionItems[name] = value;
}

而这里的_sessionItems实际上是this._rqItem.Items,本来想忽略_rqItem的创建,看来这个实例比较强啊。

 this._rqItem = this._store.GetItemExclusive(this._rqContext, this._rqId, out flag2, out span, out this._rqLockId, out this._rqActionFlags);
        if ((((this._rqItem == null) && !flag2) && (this._rqId != null)) && ((s_configCookieless != HttpCookieMode.UseUri) || !s_configRegenerateExpiredSessionId))
        {
            this.CreateUninitializedSessionState();
            this._rqItem = this._store.GetItemExclusive(this._rqContext, this._rqId, out flag2, out span, out this._rqLockId, out this._rqActionFlags);
        }

这里的CreateUninitializedSessionState方法实际就是调用this._store.CreateUninitializedItem(this._rqContext, this._rqId, s_timeout);

我们前面知道this._store这个可以取很多实例的,是SessionStateStoreProviderBase类型,这里我们也已默认的 InProcSessionStateStore(继承SessionStateStoreProviderBase)来说说吧,相关方法:

private SessionStateStoreData DoGet(HttpContext context, string id, bool exclusive, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actionFlags)
{
    bool flag;
    string key = this.CreateSessionStateCacheKey(id);
    InProcSessionState state = (InProcSessionState) HttpRuntime.CacheInternal.Get(key);
    if (state == null)
    {
        return null;
    }
  ......
    return SessionStateUtility.CreateLegitStoreData(context, state._sessionItems, state._staticObjects, state._timeout);
}

public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
{
    string key = this.CreateSessionStateCacheKey(id);
    SessionIDManager.CheckIdLength(id, true);
    InProcSessionState state = new InProcSessionState(null, null, timeout, false, DateTime.MinValue, NewLockCookie, 1);
    try
    {
    }
    finally
    {
        if (HttpRuntime.CacheInternal.UtcAdd(key, state, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, timeout, 0), CacheItemPriority.NotRemovable, this._callback) == null)
        {
            PerfCounters.IncrementCounter(AppPerfCounter.SESSIONS_TOTAL);
            PerfCounters.IncrementCounter(AppPerfCounter.SESSIONS_ACTIVE);
        }
    }
}

现在我们终于明白一个Sessionid对应一个SessionStateStoreData,所以它能区分不同的用户请求,这里的id就是我们前面的this._rqId了。

现在我们也总结一下吧,我们的HttpContext的Session属性实际上是一个HttpSessionStateContainer实例(HttpSessionStateContainer继承IHttpSessionState),而它数据成员都是保存在ISessionStateItemCollection实例中,每一次http请求我们都会去获取它的Sessionid,第一次请求sessionid问null,我们没有对应的SessionStateStoreData数据,这时我们在SessionStateModule的 InitStateStoreItem方法调用SessionStateStoreProviderBase的CreateNewStoreData方法来创建一个SessionStateStoreData实例,其中该实例有一个成员变量类型是ISessionStateItemCollection用来保存用户session的数据。同一个用户第二次请求我们能获取到它的sessionid,默认也能获取到SessionStateStoreData实例(session过期则取不到)。一个用户对应一个SessionStateStoreData,每个SessionStateStoreData里面有一个ISessionStateItemCollection实例用来保存用户数据,至于sessionid也就是用户身份的区别依赖于ISessionIDManager的实现。

相关评论

阅读本文后您有什么感想? 已有人给出评价!

  • 8 喜欢喜欢
  • 3 顶
  • 1 难过难过
  • 5 囧
  • 3 围观围观
  • 2 无聊无聊

热门评论

最新评论

发表评论 查看所有评论(0)

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)
推荐文章

没有数据

最新文章
    没有数据