锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鏈榪戦亣鍒頒竴涓緢濂囨殑闂錛屽啓浜嗕竴涓晫闈㈢▼搴忥紝鍒氬紑濮嬫病鏈?璁劇疆瀛椾綋錛屾晥鐜囪繕鍙互錛屼絾鏄粯璁ゅ瓧浣撶湅鐫姣旇緝闅劇湅錛屽氨鏀圭敤浜嗕竴涓瓧浣擄紝璋佺煡閬撳湪jdk1.4鎵歸噺嫻嬭瘯榪囩▼涓紝鏁堢巼灞呯劧姣斿師鏉ヨ浣庨潪甯擱潪甯哥殑澶氥?br />
鍚庢潵鍙戠幇濡傛灉鏄痡dk1.5鍙婁互涓婄増鏈袱鑰呮晥鐜囧嚑涔庝竴鏍鳳紝瑙侀檮浠舵埅鍥俱?br />
鑰屼笖灝盨wing鏁堢巼鍜屽寮哄姛鑳芥潵璁詫紝JDK1.6u10鍙婁互涓婄増鏈湁闈炲父澶х殑鎻愰珮錛?br />
鎵浠ュ鏋滄潯浠惰繍琛岋紝榪樻槸寤鴻閮芥敼鎴怞DK1.6u10鍙婁互涓婄増鏈?/font> 嫻嬭瘯浠g爜濡備笅:
]]>
銆銆鎶鏈枃绔犲尯錛?a >http://twaver.servasoft.com/
銆銆涓枃璁哄潧鍖猴細http://twaver.servasoft.com/forum/
]]>
public class FontDemo extends JPanel {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setTitle("TWaver涓枃紺懼尯");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(new FontDemo());
f.setSize(800, 600);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
private TDataBox box = new TDataBox();
private BarChart chart = new BarChart(box);
private static final int times = 1000;
private static final int style = Font.BOLD;
private static final int size = 16;
public FontDemo() {
initBox();
initChart();
initGUI();
}
private void initGUI() {
this.setLayout(new BorderLayout());
JScrollPane pane = new JScrollPane(chart.getLegendPane());
this.add(chart, BorderLayout.CENTER);
this.add(pane, BorderLayout.EAST);
}
private void initBox() {
final List localFonts = new ArrayList();
List nativeFonts = new ArrayList();
// get all available fontFamily names
Font[] fonts = SunGraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
for (int i = 0; i < fonts.length; i++) {
// separate logical and native font
if (SunGraphicsEnvironment.isLogicalFont(fonts[i])) {
localFonts.add(fonts[i]);
}
else {
nativeFonts.add(fonts[i]);
}
}
System.out.println("///////////// localFonts test /////////////");
for (int i = 0; i < localFonts.size(); i++) {
Font font = (Font) localFonts.get(i);
long start = System.currentTimeMillis();
for (int k = 0; k < times; k++) {
createFont(font);
}
long spendTime = System.currentTimeMillis() - start;
Node n = new Node();
n.setName(font.getName());
n.putChartValue(spendTime);
n.putChartColor(Color.GREEN);
box.addElement(n);
// System.out.println(">" + spendTime + "\t" + font.getName());
}
System.out.println("\n///////////// nativeFonts test /////////////");
for (int i = 0; i < nativeFonts.size(); i++) {
Font font = (Font) nativeFonts.get(i);
long start = System.currentTimeMillis();
for (int k = 0; k < times; k++) {
createFont(font);
}
long spendTime = System.currentTimeMillis() - start;
Node n = new Node();
n.setName(font.getName());
n.putChartValue(spendTime);
n.putChartColor(Color.RED);
box.addElement(n);
// System.out.println(">" + spendTime + "\t" + font.getName());
}
System.out.println("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
}
private void createFont(Font font) {
// font.deriveFont(style, size);
new Font(font.getName(), style, size);
}
private void initChart() {
chart.setLegendLayout(TWaverConst.LEGEND_LAYOUT_VERTICAL);
chart.setLegendOrientation(TWaverConst.LABEL_ORIENTATION_HORIZONTAL);
chart.setYScaleTextVisible(true);
chart.setShadowOffset(1);
}
}
1.4嫻嬭瘯緇撴灉
1.6嫻嬭瘯緇撴灉
榪囧幓鏁板勾闂達紝鑻規灉鍏徃鐨勫彂灞曞巻紼嬫伆浼艱埅澶╃伀綆殑鍙戝皠榪囩▼鈥斺斺斾竴緋誨垪蹇熺揣瀵嗘湁搴忕殑鐖嗙偢鑰屽悗鐩村啿鑻嶇┕銆傝嫻鏋滃叕鍙告湰韜紝瀹冪殑棰嗗鑰呭強瀹冪殑浜у搧宸茬粡鍙樻垚浜嗕竴縐嶆枃鍖栦笂鐨勯氱敤璇傛埓灝斿叕鍙告兂鎴愪負鍟嗕笟棰嗗煙鐨勮嫻鏋滃叕鍙革紝Zipcar浜︽兂鍦ㄦ苯杞﹀叡浜鍩熸垚涓鴻嫻鏋滃叕鍙革紝鎴忓墽婕斿憳姣斿皵·椹但鐢氳嚦璇達紝濡傛灉鑻規灉鍏徃鎬昏鍋氭葷粺錛屾斂搴滃皢鑳芥彁渚涙洿濂界殑鏈嶅姟銆?/span>
涓涓叕鍙告垨涓漢鎬庢牱鎵嶈兘鎴愪負“鏌愭煇棰嗗煙鐨勮嫻鏋?#8221;錛熷湪涓庤嫻鏋滃叕鍙稿墠闆囧憳錛岀幇浠誨悎浼欎漢浠ュ強鍏朵粬涓浜涢暱鏈熷叧娉ㄨ嫻鏋滅殑涓撲笟浜哄+榪涜鎺㈣浜ゆ祦鍚庯紝鎴戜滑鍙互娓呮櫚鍦扮湅鍒拌繖涓棶棰樼殑絳旀錛屽畠浠洿緇曚互涓嬪崄澶у叧閿洜绱犲睍寮銆?/span>
1
涓嶈惤淇楀
鍦?1980騫翠唬棰嗗鑻規灉宸ヤ綔鍥㈤槦璁捐浜у搧鏃訛紝鍦?#8220;絎旇鏈?/span>鐪嬭搗鏉ュ簲璇ュ儚浠涔?#8221;榪欎釜闂涓婏紝鏂拏鑺?#183;涔斿竷鏂粡甯鎬翰鑷寚瀵煎伐紼嬪笀浠?#8220;鏈変竴嬈′粬鍦ㄧ櫨璐у晢搴楃湅鍒頒竴涓紓甯哥簿緹庣殑鍘ㄥ叿”錛屽畨榪?#183;璧吂鑿插皵寰瘋錛?#8220;鐒跺悗浠栧氨瑕佹眰璁捐甯堟妸絎旇鏈璁℃垚浠栫湅鍒扮殑閭d釜妯℃牱”“榪樻湁涓嬈′粬瑕佽璁″笀鎶婁駭鍝佽璁℃垚淇濇椂鎹風殑妯℃牱”銆傚畨榪?#183; 璧吂鑿插皵寰鋒槸鑻規灉鍒涘宸ョ▼甯堜箣涓錛屽茍钁楁湁銆婄璋烽噷鐨勯潻鍛斤細鑻規灉鍏徃鎴愰暱鐨勪紵澶у巻鍙層嬩竴涔︺?/span>
璁$畻鏈虹湅璧鋒潵鏇村簲璇ュ儚璺戣濺鍜屽帹鍏鳳紝鑰岃嫻鏋滃叕鍙哥殑榪介殢鑰呮伆鏄珮绔漢緹も斺斺旈偅浜涘凡涔版垨鑰呮槸灝嗕拱淇濇椂鎹風殑浜恒傚緢鏄庢樉錛屼粎閫氳繃璺熼殢紜呰胺鐨勫競鍦哄姩鍚戯紝閫氳繃鎶鏈笓瀹舵垨鏄叾瀹冧織濂楃殑璁捐錛屼綘寰堥毦鍚稿紩浠栦滑銆傝岃嫻鏋滅殑欖斿姏錛屾伆鎭板湪浜庤嚜宸遍捇鐮旓紝浠庤屼笉钀戒織濂楀湴鍚稿紩鍏剁洰鏍囧鎴楓?/span>
2
閫捐秺甯歌
鎶鏈笓瀹舵櫘閬嶈涓猴紝婧愪唬鐮佸紑鏀炬槸澶у娍鎵瓚嬶紝涓斾綋鐜板叡浜師鍒欍傚湪榪欎竴鑳屾櫙涓嬶紝鑻規灉琚涓虹暐鏄懼皝闂?/span>
浣嗗湪鑻規灉鐨勫摬瀛﹂噷錛屽皝闂笌鑷敱騫朵笉鍐茬獊銆?#8220;鎴戜滑姝g灝芥墍鑳界殑璁╃敤鎴蜂綋楠屽埌棰勬兂鏁堟灉錛?#8221;涔斿竷鏂湪緇欒幈鎭?#183;濉旂壒鐨勭數瀛愰偖浠朵腑鍐欓亾銆傛鍓嶏紝鑾辨仼鍦ㄥ崥瀹腑鎶ㄥ嚮鑻規灉紱佹鍦╥Phone鍜宨Pad涓婁嬌鐢‵lash鎶鏈?#8220;浣犲彲浠ヤ笉璧炲悓鎴戜滑錛屼絾鎴戜滑鐨勫姩鏈烘槸綰磥鐨勩?#8221;涔斿竷鏂啓閬擄紝“紱佹璇ユ妧鏈槸鍥犱負鑻規灉鍟嗗簵鎻愪緵浜嗗お澶氳嚜鐢憋紝浣犺兘涔板埌鐩楀彇涓漢闅愮鐨勭▼搴忥紝涔熻兘涔板埌鎽ф瘉鐢墊睜鐨勭▼搴忥紝榪樿兘涔拌壊鎯呭獎鐗囥?#8221;
灝界濡傛錛岀▼搴忓憳浠竴鐩存姳鎬ㄨ嫻鏋滃晢搴楄繃浜庡皝闂紝浠栦滑璁や負鑻規灉鍟嗗簵鍦ㄨ璁″簲鐢ㄧ▼搴忎笂涓鐩存寔鐙鎬佸害銆傚嵆闂涓嶅湪浜庡畠鏄皝闂殑錛岃屽湪浜庡畠鍦ㄨ鍒欏埗瀹氭柟闈㈡槸鐙柇涓撹鐨勶紝闅愯斀鐨勶紝棰戠箒鍙樺姩鐨勩傚鏋滆嫻鏋滃叕鍙歌兘鏀懼閫忔槑搴︼紝灝辮兘閬垮厤涓婅堪澶ч儴鍒嗕簤璁?/span>
浣嗘牴鏈笂錛岃嫻鏋滀笉鍦ㄤ箮浜夎銆傝櫧鐒舵壒鍒や粛鍦ㄦ寔緇紝浣嗘槸鑻規灉鍟嗗簵宸茬粡鍙栧緱浜嗗法澶х殑鎴愬姛錛屽氨榪炲叾鍙嶅鑰呬篃涓嶅緱涓嶆壙璁ゅ畠鏋佸叾渚挎嵎涓斿瓚fí鐢熴?/span>
3
鎷掔粷澶嶆潅
“鎷掔粷”鍙兘鏄箶甯冩柉鍦ㄨ嫻鏋滃叕鍙告墍鎵紨鐨勯瑕佽鑹層?#8220;浠栫畝鐩存槸涓繃婊ゅ櫒錛?#8221;鑻規灉鐢佃剳宸ョ▼甯堣但鍏硅彶灝斿痙璇淬傛瘡涓澶╅兘浼氭湁璁捐鑰呭悜涔斿竷鏂睍紺哄叧浜庢柊浜у搧鍜屽湪鐜版湁浜у搧涓婂姞鍏ユ柊鐗瑰緛鐨勫垱鎰忥紝鑰屼粬鐨勫洖絳斿嚑涔庨兘鏄嫆緇濄?#8220;鎴戜負閭d簺鎴戜滑娌℃湁鍘誨仛鐨勪駭鍝佹劅鍒伴獎鍌詫紝姝e鍚屾垜涓洪偅浜涙垜浠仛鍑烘潵鐨勪駭鍝佹劅鍒伴獎鍌蹭竴鏍楓?#8221;涔斿竷鏂湪 2004騫存帴鍙楅噰璁挎椂璇淬?/span>
涔斿竷鏂嫆緇濈殑鍘熷洜錛屼笉浠呭嚭浜庡澶嶆潅璁捐鐨勪竴璐弽鎰燂紝榪樻湁鎴愭湰鑰冭檻錛屽茍鍒墮犳湡寰呮晥搴斻傚涓浜涘鏉傜殑璁捐璇翠笉鍙互浣挎垚鏈檷寰楁洿浣庯紝鍑忓皯涓浜涗駭鍝佺殑鐗瑰緛榪樿兘鍒墮犱竴縐嶆湡寰呫?#8220;鏁呮剰蹇界暐涓欏逛漢浠兂鎷ユ湁鐨勪駭鍝佺壒寰侊紝浼氭縺鍙戜漢浠瀹冪殑娓存湜銆?#8221;鑻規灉鍏徃鐨勫墠宸ョ▼甯堥浄寰瘋錛?#8220;褰撲綘鍦ㄦ柊鐗堟湰涓皢榪欎釜鍔熻兘鍔犲叆鏃訛紝鐢ㄦ埛寰楀伩鎵鎰匡紝鍒欐洿鍔犻珮鍏淬?#8221;
鑻規灉鍏徃涓閬嶅張涓閬嶅湴榪愮敤鐫榪欎釜絳栫暐錛屾渶鏂扮殑渚嬪瓙鏄痠Phone O S4錛屽畠娣誨姞浜嗗浠誨姟鎿嶄綔鍔熻兘銆備簨瀹炰笂錛岃鍔熻兘鐢ㄦ埛浠粠2007騫磋搗灝卞紑濮嬭姹傘傚啀鏉ョ湅鐪媔Pad錛岀湡鐨勬病娉曟坊鍔犳憚鍍忚緗悧錛?/span>
4
鏈嶅姟瀹㈡埛
涓嶇浣犵殑浜у搧鏈夊濂斤紝瀹冩繪湁鍑洪棶棰樼殑鏃跺欍傝繎騫存潵錛屽湪絎旇鏈拰鎵嬫満棰嗗煙錛岃嫻鏋滅殑绔炰簤瀵規墜浠ぇ澶氶噰鍙栧洖閬垮鎴瘋岄潪鏈嶅姟瀹㈡埛鐨勭瓥鐣ャ傚畠浠叧鎺変簡鑷韓鐨勫鎴鋒湇鍔¢儴闂紝騫跺皢榪欓」涓氬姟澶栧寘緇欑敱浣庤柂鍛樺伐緇勬垚鐨勭數璇濇湇鍔′腑蹇冦傚畠浠敋鑷寵瀹㈡埛鑷繁鍘葷綉涓婂鎵懼父瑙侀棶棰樼殑瑙g瓟銆?/span>
鑰屼簩鍗佸勾鍓嶏紝鑻規灉鍏徃鍒惰闆跺敭絳栫暐鏃訛紝灝辨槑紜簡涓涓帇鍊掍竴鍒囩殑浼樺厛鐩爣錛屽嵆鍒涚珛涓縐嶈瀹㈡埛瀹屽叏鑱旀兂涓嶅埌璁$畻鏈哄伐涓氱殑闆跺敭鍟嗗簵銆備粬浠嚧鍔涗簬鍦ㄥ晢搴椾腑钀ラ犱竴縐嶇被浼煎洓瀛i厭搴楀ぇ鍫傜殑鍙嬪ソ姘涘洿銆?/span>
G eniusB ar 渚挎槸浠h〃銆侴 eniusBar閲岀殑宸ヤ綔浜哄憳浼氫負浣犺瘖鏂瘡涓嬈捐嫻鏋滃叕鍙哥殑浜у搧錛岃屼笉綆′綘浠庡摢閲屼拱鐨勩傞櫎闈炶繃浜嗕繚璐ㄦ湡錛屽叕鍙稿涓婅堪鏈嶅姟涓嶆敹鍙栦換浣曡垂鐢ㄣ傝嫻鏋滃叕鍙鎬負浣曞姝ゆ叿鎱ㄥ憿錛熸浘鍦℅ enius Bar宸ヤ綔榪囩殑寰峰皵璇達細“鏈夋椂鍊欏鎴瘋繘鏉ユ椂鏄負瀵繪眰甯姪錛屼絾鍦ㄧ寮鏃跺嵈璐拱浜嗘柊浜у搧銆?#8221;
5
蹇界暐鎰忚
涔斿竷鏂繪槸鍦ㄥ悇縐嶅満鍚堥綣佸紩鐢ㄤ酣鍒?#183;紱忕壒鐨勫悕璦錛?#8220;濡傛灉鎴戦棶瀹㈡埛浠栦滑闇瑕佷粈涔堬紝浠栦滑鎬繪槸璇磋‘涓鍖規洿蹇殑椹紒’”
涔斿竷鏂敤榪欏彞璇濓紝鏉ヨ鏄庤嫻鏋滃叕鍙告墍淇″鐨勫摬瀛︼紝鍗充漢浠鎯充笉鍒頒粬浠湡姝i渶瑕佺殑涓滆タ銆傚鎴蜂細鍛婅瘔浣犱竴澶у爢浠栦滑鎵闇瑕佺殑涓滆タ錛屼絾鏄綋浣犳寜鐓т粬浠殑鎰忓浘鍒墮犲嚭鏉ユ椂錛岃繖鍙堜笉鏄粬浠兂瑕佺殑銆傚皢閭d簺灝氫笉瀛樺湪鐨勪笢瑗垮艦璞″寲錛屽茍涓嶆槸涓浠跺鏄撶殑浜嬨?/span>
涓嶈繃涔斿竷鏂篃涓嶆槸灝嗗鎴風殑鍙嶉瑙嗕負鏃犵墿銆備粬灝嗗叾鐪嬪仛鏄紦鑸烇紝鑰岄潪鏂瑰悜錛涙槸鏂瑰紡錛岃岄潪緇撴灉銆傛墍浠ヨ嫻鏋滄繪槸鑳芥帹鍑烘棦鑳芥弧瓚沖鎴烽渶姹傚悓鏃跺張瓚呰秺瀹㈡埛鎯寵薄鐨勬柊浜у搧銆?/span>
6
澶勫钀ラ攢
濡傚悓G enius Bar宸茶璇佹槑鏄ぉ鎵嶅垱鎰忎竴鏍鳳紝濡備粖椋庤鍏ㄧ悆鐨勮嫻鏋滃浼犲彛鍙?#8220;鎹㈢鏂瑰紡鎬濊?#8221;涔熻璇佹槑涓嶆槸絀鴻瘽錛屽洜涓鴻嫻鏋滅矇涓濅滑鐨勬濊冩柟寮忕‘瀹炰笌浼椾笉鍚屻傜矇涓濆鑻規灉鐨勫繝璇氬害鍫瘮鍩虹潱寰掑鑰剁ǎ鐨勫繝璇氬害銆傝嫻鏋滅殑鍝佺墝鏄姝ょ殑寮哄ぇ鍜屾湁鍚稿紩鍔涳紝浠ヨ嚦浜庡鏈変簺浜鴻岃█錛岃嫻鏋滃凡緇忔垚浜嗕竴縐嶄俊浠般?/span>
鑻規灉鍏徃閫氳繃涓緋誨垪綺劇粏鍏ュ井鐨勬柟寮忥紝鏉ュ煿鍏葷矇涓濆鑻規灉鍝佺墝鐨勫畻鏁欒埇鐨勭媯鐑傚寘鎷覆鏌撲駭鍝佺殑紲炵絳夈傝屾渶閲嶈鐨勬柟寮忥紝鏄己鍖栬嫻鏋滀駭鍝佺殑璞″緛鎰忎箟錛屾渶鏈夋晥鐨勫競鍦鴻惀閿絳栫暐鍒欐鏍逛簬浜у搧鏈韓銆傝嫻鏋滃叕鍙哥敤棰滆壊銆佸0闊熾佸艦鐘剁瓑鍏冪礌鐨勭粍鍚堬紝鏋勫緩浜嗘竻鏅扮殑鍝佺墝褰㈣薄銆傝嫻鏋滈氳繃榪欎簺絳栫暐浣垮叾鍝佺墝褰㈣薄娣辨浜哄績銆?/span>
榪欎竴鐐瑰湪鑻規灉鍙戝竷鏂頒駭鍝佹椂琛ㄧ幇寰楀挨涓烘槑鏄俱傞氳繃涓緋誨垪緇熶竴鍗忚皟鐨勬楠わ紝鑻規灉璋冨姩澶т紬鐨勮儍鍙o紝鍚稿紩鏇村浜哄叧娉ㄣ傚湪鍏紬鐨勬敞鎰忓姏楂樺害闆嗕腑鏃訛紝鑻規灉鍐嶉傛椂瀵瑰鍏竷鍏舵棭灝卞噯澶囧ソ鐨勪俊鎭垨鏂頒駭鍝併傝繖涓鍒囬兘鏄洿緇曠潃钀ラ攢榪涜鐨勩?/span>
7
鎺ㄩ檲鍑烘柊
濡傛灉鏈夊ぉ鑻規灉鎺ㄥ嚭浜嗕竴嬈炬病鏈夋闈㈢殑鐢佃剳錛岃涓嶈鎰熷埌鎯婅銆?/span>
浠呬粎鏄夠鎯沖悧錛熺粷瀵逛笉鏄紝榪欎簺閮藉皢鍐欒繘鑻規灉鐨勪笓鍒╃敵璇鋒枃浠墮噷銆傝櫧鐒惰繕娌℃湁鐪嬪埌榪欎簺浜у搧錛屼絾鎴戜滑涓濇涓嶅簲鎬鐤戣嫻鏋滅殑鍒涙柊鑳藉姏銆備簨瀹炰笂錛屾病鏈変換浣曚竴瀹跺叕鍙稿儚鑻規灉閭f牱棰戠箒鍦板鎵鍦ㄩ鍩熺殑鍩虹鐜妭榪涜鍙嶆濆拰閲嶆瀯銆備粎浠呭湪榪囧幓鐨勭煭鐭嚑騫撮棿錛岃嫻鏋滃叕鍙稿氨瀵瑰叾絎旇鏈數鑴戠殑鐢熶駭宸ヨ壓榪涜浜嗗ぇ騫呭害闈╂柊錛岃繖涔熸槸絎旇鏈敓浜ц璁¢鍩熸湁鍙蹭互鏉ユ墍榪涜鐨勬渶榪呮嵎鏈澶ц妯$殑闈╂柊錛岄櫎鑻規灉澶栵紝娌℃湁浠諱綍鍏跺畠鍏徃鍋氬埌榪欎簺銆?/span>
鑻規灉瀹屽叏鏃犺IT棰嗗煙鎵寮鴻皟鐨勫吋瀹規х殑姒傚康錛岃繖瀵硅濡傚井杞繖鏍風殑绔炰簤鑰呮潵璇存槸紱忎害鏄ジ銆傚湪鑻規灉鍏徃鐨勫巻鍙蹭笂錛屽畠鏁版閲囩敤鏂扮殑鎿嶄綔緋葷粺鍜屾柊鐨勮姱鐗囨瀯閫狅紝榪欎簺鍐沖畾鎬繪槸浣垮畠鍘熸潵鐨勭敓浜х粍瑁呭熀鍦扮珛鍒誨彉寰楄繃鏃躲傝嫻鏋滄繪槸涓嶅仠鍦板惁瀹氳繃鍘昏璁′腑鐨勪笉鍚堢悊鍙婁笉瓚充箣澶勶紝涓嶆柇鍦版帹闄堝嚭鏂幫紝浣垮叾浜у搧鎬昏兘浠ョ嫭鐗圭殑椋庢牸鍌茬珛浜庢椂浠e墠娌褲?/span>
8
閫傚綋“鐙”
2000騫達紝浣滀負鑻規灉闃挎柉濉旂壒緹庡浗涓氬姟鍒嗛儴鐨勮繍钀ョ粡鐞嗭紝楹﹀厠·浼婁竾鏉版潕鏂壒璐熻矗D V D鍒誨綍鎶鏈爺鍙戯紝鍗沖皢榪欑D V D瑁呭湪楂樼鐢佃剳涓婏紝騫朵笖鍦ㄦ湭鏉ュ皢鍏惰漿鍙樹負iD V D銆傝欏圭洰鐣岄潰鍛堢幇鍑烘潵鐨勶紝鏄縐嶅鏍風殑紿楀彛鍜岃彍鍗曢夐」錛屼互鍙婂ぇ孌電殑鍔熻兘瑙i噴鏂囧瓧銆?/span>
“榪欐椂涔斿竷鏂蛋浜嗚繘鏉ワ紝”浼婁竾鏉版潕鏂壒鍥炲繂璇達紝“浠栨病鏈変粩緇嗙湅鎴戜滑鐨勫伐浣滐紝鑰屾槸鍦ㄧ櫧鏉跨敾浜嗕竴涓銆?#8221;“榪欏氨鏄柊璁捐銆?#8221;涔斿竷鏂錛?#8220;鍙涓涓獥鍙o紝灝嗛煶鍍忚祫鏂欐帹鍏ョ獥鍙o紝鐒跺悗鐐瑰嚮涓涓彨鎾斁鐨勬寜閽紝榪欐槸鎴戜滑瑕佺殑銆?#8221;
“鎵鏈変漢鍛嗚嫢鏈ㄩ浮錛?#8221;浼婁竾鏉版潕鏂壒璇達紝榪欑椋庢牸涓庝粬浠ュ墠鎵灝辮亴鐨勫叕鍙歌駿寮傘傛妧鏈鍩熻拷姹傚叿鏈夊寘瀹規х殑銆佸交搴曠殑銆侀泦鍚堝ぇ浼楁櫤鎱х殑鍒涙柊銆傝岃嫻鏋滅殑宸ョ▼甯堝垯瑕佽姳璐?100%鐨勬椂闂村幓璁捐鐢變竴灝忛儴鍒嗚祫娣辯粡鐞嗘垨鏄箶甯冩柉涓涓漢璁″垝鐨勪駭鍝併傛湁鏉冨仛鍑哄喅絳栫殑浜烘槸濡傛涔嬪皯錛屼互鑷充簬鑻規灉涓騫翠粎鑳藉鎺ㄥ嚭涓欏規垨涓ら」鍒涙柊浜у搧銆?/span>
9
閲嶆柊鍙戞槑
“闈╁懡鎬?#8221;鏄箶甯冩柉鏈鍠滄鐨勮瘝涔嬩竴銆備粬鏋佸姏澶歌禐鑻規灉鐨勬瘡涓彂鏄庡垱閫犻兘鏄嫭涓鏃犱簩鐨勫拰鏈夊垱閫犳х殑銆?/span>
鑻規灉鐨勪駭鍝佸埌搴曞叿涓嶅叿鏈夐潻鍛芥э紝鍙栧喅浜庢垜浠闈╁懡鎬ц繖涓瘝鐨勫畾涔夈傝嫻鏋滃叕鍙告搮浜庢悳闆嗘眹鎬繪妧鏈鍩熺殑鏈鏂板垱鎰忥紝騫墮氳繃杞寲灝嗗叾鍙樹負宸辨湁銆傝嫻鏋滄搮闀垮彂鐜板埆鐨勫悓綾諱駭鍝佷笂瀛樺湪鐨勯棶棰樺拰涓嶈凍錛屽茍鍦ㄥ叾鎺ㄥ嚭鐨勪駭鍝佷笂灝嗕笂榪伴棶棰樺拰涓嶈凍浜堜互瑙e喅錛屾垨鑰呮槸瀵硅揣鏋朵笂鐨勫叾瀹冨悓綾諱駭鍝佸湪鑻規灉鐨勬ā寮忎笅榪涜鏀硅壇闈╂柊銆?/span>
iPad 灝辨槸涓涓吀鍨嬩緥瀛愩傛棭鍦?001騫?/span>姣斿皵·鐩栬尐灝辨帹鍑轟簡涓嬈懼叿澶囧嚑涔庣浉鍚屽姛鑳界殑寤虹珛鍦╳ indow s鎿嶄綔緋葷粺鍩虹涓婄殑浜у搧錛屼絾鏄綋鏃跺湪浜や簰鐣岄潰錛屽簲鐢ㄨ蔣浠跺紑鍙戞柟闈㈠瓨鍦ㄨ澶氶渶瑕佽В鍐崇殑闂錛屽井杞叕鍙稿氨娌℃湁緇х畫鍧氭寔涓嬪幓銆備箶甯冩柉鍙戠幇鍦ㄨ嫻鏋滃叕鍙哥幇鏈夌殑鎶鏈熀紜涓婏紝涓婅堪鐨勯棶棰橀兘涓嶆垚鍏朵負闂錛屼簬鏄痠Pad妯┖鍑轟笘銆傚湪鍒氭帹鍑虹殑涓や釜鏈堥噷錛宨Pad灝卞崠鍑轟簡200涓囧彴銆?/span>
10
鏈夋潯涓嶇磰
鍦?iPad涓婂競鍑犲懆鍚庯紝鎯犳櫘銆佸井杞強鍏跺畠涓浜涘叕鍙哥浉緇ф帹榪熶簡鍚岀被浜у搧鐨勪笂甯傘傚畠浠璇曞浘鍒朵綔鍑烘瘮iPad鏇村姞綺懼瘑銆佸姛鑳芥洿鍔犻綈鍏ㄧ殑浜у搧銆傚畠浠鑷村姏浜庡垱閫犺嚜宸辯増鏈殑‘蹇┈’錛屼簬鏄畠浠帹榪熼潰甯傦紝鍙堝洖鍒頒簡璁捐瀹ゃ備笌姝ゅ悓鏃訛紝鑻規灉鐨勫叾瀹冪珵浜夎呭Google錛孖ntel絳変篃蹇┈鍔犻灜鍦板湪璇ラ鍩熸帓鍏靛竷闃點?/span>
鑻規灉鍏徃騫舵病鏈変負榪欑绔炰簤鎬佸娍鎵鐗靛埗錛屽畠涓ユ牸鍦版寜鐓ц嚜宸辯殑鏃墮棿琛ㄨ浜嬨傝嫻鏋滃叕鍙哥殑鏃墮棿琛ㄦ槸涓ユ牸鎸夌収鍏惰嚜韜殑緇忚惀絳栫暐鍜岄暱鏈熸効鏅洰鏍囨潵鍒跺畾鐨勶紝鍏跺彈甯傚満鎬佸娍鍜岀珵浜夎呯姸鍐電殑褰卞搷杈冧負杞誨井錛岃繖鏍瘋嫻鏋滃叕鍙告昏兘鎺屾彙涓誨姩鏉冿紝閫傛椂鍦版帹鍑轟竴浜涙柊浜у搧錛屽崰灝藉競鍦哄厛鏈恒?/span>
JavaGUI搴旂敤紼嬪簭閮ㄧ講
JavaGUI紼嬪簭鍙戝竷鍒嗙被
1) Applet錛氬彲浠ュ祵鍏ュ埌嫻忚鍣ㄤ腑錛岄氳繃緗戦〉鐨勬柟寮忓睍紺虹粰鐢ㄦ埛
2) application 錛氭湁涓ょ鍙戝竷鏂瑰紡
ü 鎵撳寘鎴恓ar鍖呴氳繃bat鐨勬柟寮忚繍琛岋紝鎴栬呴氳繃絎笁鏂硅蔣浠舵墦鎴恊xe(鍚庣畫浼氬啀璇︾粏浠嬬粛)
ü 閫氳繃Java Web Start鐨勬柟寮忓彂甯冨埌鏈嶅姟鍣ㄧ錛岄氳繃JNLP榪愯
鐩稿鏉ヨ絎簩縐嶆柟寮忓彲鑳芥洿濂戒竴浜涳紝鍏嶉櫎浜嗘洿鏂扮殑楹葷儲銆?/span>
鐢╝pplet鎴栬卝ws鐨勬柟寮忓彂甯冿紝澶ч儴鍒嗛兘闇瑕佹暟瀛楃鍚嶃?br />
涓轟粈涔堣絳懼悕
鍏跺疄絳懼悕涓嶆槸蹇呴』鐨勶紝濡傛灉浣犵殑紼嬪簭鍙槸鍗曠函鐨勭粯鍥撅紝鏄劇ず錛屽彧瑕佷笉璁塊棶緗戠粶璧勬簮涔熶笉璁塊棶鏈湴鏂囦歡錛屾槸涓嶇敤絳懼悕鐨勶紝
浣嗘槸濡傛灉瑕佽闂湰鍦版垨緗戜笂璧勬簮灝卞繀欏葷鍚嶏紝
姣斿璇誨彇鏈湴鏂囦歡鎴栬呰闂暟鎹簱錛岃繖鏄敱java鐨勬矙綆辨満鍒跺喅瀹氱殑錛屽嵆jvm鍐呴儴鏈変竴緇勫畨鍏ㄦ鏌ヨ鍒欙紝瑕侀氳繃媯鏌ヤ箣鍚庢墠鑳借闂壒瀹氳祫婧愩?/span>
濡傛灉瑕佺獊鐮磋繖涓鍒欙紝鍙互鏈変袱涓柟娉?
1) 淇敼jre鏉冮檺鏂囦歡濡備笅
java.policy涓篻rant {
permission java.security.AllPermission;
};
涓鑸潈闄愭枃浠剁殑鐩綍濡備笅C:"Program Files"Java"jre6"lib"security
浣嗘槸淇敼姣忎釜瀹㈡埛绔殑鏉冮檺鏂囦歡錛屾棤璁轟粠鏃墮棿榪樻槸鎿嶄綔涓婇兘鏄緢楹葷儲鐨勩?/span>
2) 絳懼悕錛屾剰鎬濆氨鏄憡璇夌敤鎴鳳紝榪欎釜紼嬪簭鏄皝鍙戝竷鐨勶紝鏄笉鏄兘淇′換錛屽鏋滃鎴風‘瀹氾紝ok錛岃繖涓猘pplet鎴栬卝ws灝卞彲浠ヨ闂閮ㄨ祫婧愪簡銆?br />
濡備綍絳懼悕
1)棣栧厛紜繚浣犲凡緇忓畬鍏ㄥ畨瑁呬簡Java2鐨勭幆澧冿紝鏈塳eytool宸ュ叿錛屽畠浣嶄簬JDK鐨刡in鐩綍涓嬨傝繖涓鑸笉浼氭湁闂銆?/span>
2)鍒癉os鐘舵佷笅錛岃繘鍏ヤ綘闇鍙戝竷搴旂敤紼嬪簭鐨刯ar鍖呮墍鍦ㄧ殑鐩綍錛岃繍琛屼笅闈㈣繖鍙ヨ瘽
keytool -genkey -keystore myKeystore -alias jwstest -validity 1000
瀹冨皢浼氭彁紺轟綘杈撳叆鐢ㄦ埛鍚嶃佸瘑鐮佺瓑錛屾寜鐓ф彁紺洪殢渚胯緭鍏ュ嵆鍙紝涓嶈緭鍏ョ洿鎺ュ洖杞﹀嵆鍙紝
浣嗕竴瀹氳璁頒綇瀵嗙爜銆傝繍琛岀粨鏉熷畠灝嗕細鍦ㄥ綋鍓嶈礬寰勪笅鍒涘緩鍚嶄負myKeystore鐨勬枃浠躲?/span>
3)濡傛灉浣犳兂鏌ョ湅涓涓嬪垰鎵嶇敓鎴愮殑myKeystore鏂囦歡鐨勫唴瀹癸紝鍙互浣跨敤涓嬮潰榪欏彞璇濓細
keytool -list -keystore myKeystore
鏄劇ず鍑烘潵搴旇綾諱技濡備笅錛?br />
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry:
jwstest, Tue Nov 23 19:29:32 PST 2001, keyEntry,
Certificate fingerprint (Test):
C3:A9:CD:F3:D3:AC:4D:3F:3C:5B:AF:9E:CF:0D:46:5C
4)瀵逛綘闇鍙戝竷搴旂敤紼嬪簭鐨刯ar鍖呰繘琛岀鍚嶏紝榪愯涓嬮潰榪欏彞璇濓細
jarsigner -keystore myKeystore yourtest.jar jwstest
鍏朵腑yourtest.jar鏄綘鐨刯ar鍖呭悕錛屼綘闇瑕佷慨鏀瑰畠錛屽埆鐨勫氨涓嶅繀淇敼浜嗐?br />
榪愯鏃朵細鎻愮ず浣犺緭鍏ュ瘑鐮侊紝灝辨槸浣犲垰鎵嶅湪鐢熸垚myKeystore鏂囦歡鏃惰瀹氱殑瀵嗙爜銆?br />
濡傛灉鏈夊緢澶歫ar鍖呮庝箞鍔?/span>
鍦ㄥ紑鍙戠殑榪囩▼涓緢鍙兘浼氬紩鐢ㄥ埌絎笁鏂圭殑jar鍖咃紝鑰岀涓夋柟鐨刯ar鍖呭張鍙兘寮曠敤鍒板叾瀹冪殑錛屾墍浠ュ彲鑳芥湁寰堝鐨刯ar鍖咃紝闇瑕佸拰applet涓璧峰彂甯冿紝鏈変袱涓柟娉?br />
1) 鍒嗗埆鎵撳寘絳懼悕錛屼嬌鐢ㄤ簬鍖呮瘮杈冨皯錛屾瘮濡傚彧鏈?銆?涓殑鎯呭喌
2) 鍙?鎶奱pplet鐨刯ar鍖呯鍚嶏紝璁╃敤鎴風‘璁よ闂巿鏉冿紝applet宸茬粡琚敤鎴鋒巿鏉冿紝閭d箞灝卞彲浠ュ湪applet閲屾敼鍙樺畨鍏ㄧ鐞嗗櫒錛圫ecurityManager錛?br />
鍙渶瑕佺戶鎵縎ecurityManager綾伙紝鍒涘緩鑷繁鐨勫畨鍏ㄧ鐞嗗櫒綾伙紝鐒跺悗瑕嗙洊checkPermission鏂規硶錛屽厑璁歌闂換浣曡祫婧愩?br />
鍦╝pplet鐨刬nit鏂規硶涓皟鐢⊿ystem.setSecurityManager鎶婂畨鍏ㄧ鐞嗗櫒璁劇疆涓烘垜浠嚜瀹氫箟鐨勫嵆鍙?/span>
class CustomManager extends SecurityManager {
public void checkPermission(Permission perm, Object context) {
}
public void checkPermission(Permission perm) {
}
}
鍏跺畠涓浜涚浉鍏寵祫鏂欏涓?/span>
JDK涓璳eytool甯哥敤鍛戒護
-genkey 鍦ㄧ敤鎴蜂富鐩綍涓垱寤轟竴涓粯璁ゆ枃浠?.keystore",榪樹細浜х敓涓涓猰ykey鐨勫埆鍚嶏紝mykey涓寘鍚敤鎴風殑鍏挜銆佺閽ュ拰璇佷功
-alias 浜х敓鍒悕
-keystore 鎸囧畾瀵嗛挜搴撶殑鍚嶇О(浜х敓鐨勫悇綾諱俊鎭皢涓嶅湪.keystore鏂囦歡涓?br />
-keyalg 鎸囧畾瀵嗛挜鐨勭畻娉?nbsp;
-validity 鎸囧畾鍒涘緩鐨勮瘉涔︽湁鏁堟湡澶氬皯澶?br />
-keysize 鎸囧畾瀵嗛挜闀垮害
-storepass 鎸囧畾瀵嗛挜搴撶殑瀵嗙爜
-keypass 鎸囧畾鍒悕鏉$洰鐨勫瘑鐮?br />
-dname 鎸囧畾璇佷功鎷ユ湁鑰呬俊鎭?渚嬪錛?nbsp; "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list 鏄劇ず瀵嗛挜搴撲腑鐨勮瘉涔︿俊鎭?nbsp; keytool -list -v -keystore sage -storepass ....
-v 鏄劇ず瀵嗛挜搴撲腑鐨勮瘉涔﹁緇嗕俊鎭?br />
-export 灝嗗埆鍚嶆寚瀹氱殑璇佷功瀵煎嚭鍒版枃浠?nbsp; keytool -export -alias caroot -file caroot.crt
-file 鍙傛暟鎸囧畾瀵煎嚭鍒版枃浠剁殑鏂囦歡鍚?br />
-delete 鍒犻櫎瀵嗛挜搴撲腑鏌愭潯鐩?nbsp; keytool -delete -alias sage -keystore sage
-keypasswd 淇敼瀵嗛挜搴撲腑鎸囧畾鏉$洰鍙d護 keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
-import 灝嗗凡絳懼悕鏁板瓧璇佷功瀵煎叆瀵嗛挜搴?nbsp; keytool -import -alias sage -keystore sagely -file sagely.crt
瀵煎叆宸茬鍚嶆暟瀛楄瘉涔︾敤keytool -list -v 浠ュ悗鍙互鏄庢樉鍙戠幇澶氫簡璁よ瘉閾鵑暱搴︼紝騫朵笖鎶婃暣涓狢A閾懼叏閮ㄦ墦鍗板嚭鏉ャ?/span>
Keytool 鏄畨鍏ㄩ挜鍖欎笌璇佷功鐨勭鐞嗗伐鍏?瀹冪鐞嗕竴涓瓨鍌ㄤ簡縐佹湁閽ュ寵鍜岄獙璇佺浉搴斿叕鍏遍挜鍖欑殑涓庡畠浠浉鍏寵仈鐨刋.509 璇佷功閾劇殑keystore(鐩稿綋涓涓暟鎹簱).
Keytool 鏄竴涓湁鏁堢殑瀹夊叏閽ュ寵鍜岃瘉涔︾殑綆$悊宸ュ叿. 瀹冭兘澶熶嬌鐢ㄦ埛浣跨敤鏁板瓧絳懼悕鏉ョ鐞嗕粬浠嚜宸辯殑縐佹湁/鍏叡閽ュ寵瀵?綆$悊鐢ㄦ潵浣滆嚜鎴戦壌瀹氱殑鐩稿叧鐨勮瘉涔?綆$悊鏁版嵁瀹屾暣鎬у拰閴村畾鏈嶅姟.瀹冭繕鑳戒嬌鐢ㄦ埛鍦ㄩ氫俊鏃剁紦瀛樺畠浠殑鍏叡閽ュ寵.
涓涓瘉涔︽槸鏌愪竴瀹炰綋(涓漢,鍏徃絳?鐨勬暟瀛楃鍚?鎸囧嚭鍏朵粬瀹炰綋鐨勫叕鍏遍挜鍖?鎴栧叾浠栦俊鎭?鐨勮緇嗙殑鍊?褰撴暟鎹絳懼悕鍚?榪欎釜絳懼悕淇℃伅琚敤鏉ユ楠屾暟鎹殑瀹屾暣鎬у拰鐪熷疄鎬?瀹屾暣鎬ф寚鏁版嵁娌℃湁琚慨鏀瑰拰綃℃敼,鐪熷疄鎬ф寚鏁版嵁浠庝換浣曚駭鐢熷拰絳懼悕鐨勪竴鏂圭湡姝g殑浼犺緭鍒拌揪.
Keytool 鎶婇挜鍖欏拰璇佷功鍌ㄥ瓨鍒頒竴涓猭eystore.榛樹換鐨勫疄鐜発eystore鐨勬槸涓涓枃浠?瀹冪敤涓涓瘑鐮佷繚鎶ら挜鍖?
鑰屽彟澶栫殑涓涓伐鍏穓arsigner鐢╧eystore涓殑淇℃伅浜х敓鎴栨楠孞ava aRchive(jar鏂囦歡)涓殑鏁板瓧絳懼悕.
Keystore鏈変袱涓笉鍚岀殑鍏ュ彛:
1.閽ュ寵鍏ュ彛:淇濆瓨浜嗛潪甯告晱鎰熺殑鍔犲瘑鐨勯挜鍖欎俊鎭?騫朵笖鏄敤涓涓繚鎶ょ殑鏍煎紡瀛樺偍浠ラ槻姝㈡湭琚巿鏉冪殑璁塊棶.浠ヨ繖縐嶅艦寮忓瓨鍌ㄧ殑閽ュ寵鏄瀵嗛挜鍖?鎴栨槸涓涓搴旇瘉涔﹂摼涓叕鏈夐挜鍖欑殑縐佹湁閽ュ寵.
2.淇′換璇佷功鍏ュ彛:鍖呭惈涓涓睘浜庡叾浠栭儴鍒嗙殑鍗曚竴鍏叡閽ュ寵璇佷功.瀹冧箣鎵浠ヨ縐頒負"淇′換璇佷功",鏄洜涓簁eystore淇′換鐨勮瘉涔︿腑鐨勫叕鍏遍挜鍖欑湡姝e睘浜庤瘉涔︽墍鏈夎呯殑韜喚璇嗗埆.
Keystore鐨勫埆鍚?
鎵鏈夌殑keystore鍏ュ彛(閽ュ寵鍜屼俊浠昏瘉涔﹀叆鍙?鏄氳繃鍞竴鐨勫埆鍚嶈闂?鍒悕鏄?涓嶅尯鍒嗗ぇ灝忓啓鐨?濡傚埆鍚岺ugo鍜宧ugo鎸囧悜鍚屼竴涓猭eystore鍏ュ彛.
鍙互鍦ㄥ姞涓涓叆鍙e埌keystore鐨勬椂鍊欎嬌鐢?genkey鍙傛暟鏉ヤ駭鐢熶竴涓挜鍖欏(鍏叡閽ュ寵鍜岀鏈夐挜鍖?鏃舵寚瀹氬埆鍚?涔熷彲浠ョ敤-import鍙傛暟鍔犱竴涓瘉涔︽垨璇佷功閾懼埌淇′換璇佷功.
濡?
keytool -genkey -alias duke -keypass dukekeypasswd
鍏朵腑duke涓哄埆鍚?dukekeypasswd涓篸uke鍒悕鐨勫瘑鐮?榪欒鍛戒護鐨勪綔鐢ㄦ槸浜х敓涓涓柊鐨勫叕鍏?縐佹湁閽ュ寵瀵?
鍋囧浣犳兂淇敼瀵嗙爜,鍙互鐢?
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass
灝嗘棫瀵嗙爜dukekeypasswd鏀逛負newpass.
Keystore鐨勪駭鐢?
1.褰撲嬌鐢?genkey 鎴?import鎴?identitydb鍛戒護娣誨姞鏁版嵁鍒頒竴涓猭eystore,鑰屽綋榪欎釜keystore涓嶅瓨鍦ㄦ椂,浜х敓涓涓猭eystore.榛樿鍚嶆槸.keystore,瀛樻斁鍒皍ser-home鐩綍.
2.褰撶敤-keystore鎸囧畾鏃?灝嗕駭鐢熸寚瀹氱殑keystore.
Keystore鐨勫疄鐜?
Keytool 綾諱綅浜巎ava.security鍖呬笅,鎻愪緵涓涓潪甯稿ソ鐨勬帴鍙e幓鍙栧緱鍜屼慨鏀逛竴涓猭eystore涓殑淇℃伅. 鐩墠鏈変袱涓懡浠よ:keytool鍜宩arsinger,涓涓狦UI宸ュ叿Policy 鍙互瀹炵幇keystore.鐢變簬keystore鏄叕寮鐨?鐢ㄦ埛鍙互鐢ㄥ畠鍐欎竴浜涢澶栫殑瀹夊叏搴旂敤紼嬪簭.
Keystore榪樻湁涓涓猻un鍏徃鎻愪緵鐨勫収鍦ㄥ疄鐜?瀹冩妸keystore浣滀負涓涓枃浠舵潵瀹炵幇.鍒╃敤浜嗕竴涓猭eystore綾誨瀷(鏍煎紡)"JKS".瀹冪敤鍗曠嫭鐨勫瘑鐮佷繚鎶ゆ瘡涓涓鏈夐挜鍖?涔熺敤鍙兘涓嶅悓鐨勫瘑鐮佷繚鎶ゆ暣涓猭eystore鐨勫畬鏁存?
鏀寔鐨勭畻娉曞拰閽ュ寵澶у皬:
keytool鍏佽鐢ㄦ埛鎸囧畾閽ュ寵瀵瑰拰娉ㄥ唽瀵嗙爜鏈嶅姟渚涘簲鑰呮墍鎻愪緵鐨勭鍚嶇畻娉?緙虹渷鐨勯挜鍖欏浜х敓綆楁硶鏄?DSA".鍋囧縐佹湁閽ュ寵鏄?DSA"綾誨瀷,緙虹渷絳懼悕綆楁硶鏄?SHA1withDSA",鍋囧縐佹湁閽ュ寵鏄?RSA"綾誨瀷,緙虹渷綆楁硶鏄?MD5withRSA".
褰撲駭鐢熶竴涓狣SA閽ュ寵瀵?閽ュ寵蹇呴』鍦?12-1024浣嶄箣闂?瀵逛換浣曠畻娉曠殑緙虹渷閽ュ寵澶у皬鏄?024浣?
璇佷功:
涓涓瘉涔︽槸涓涓疄浣撶殑鏁板瓧絳懼悕,鎸囧嚭鍏朵粬瀹炰綋鐨勫叕鍏遍挜鍖欐湁鏄庣‘鐨勫?
1.鍏叡閽ュ寵 :鏄悓涓涓緇嗙殑瀹炰綋鐨勬暟瀛楀叧鑱?騫舵湁鎰忚鎵鏈夋兂鍚岃繖涓疄浣撳彂鐢熶俊浠誨叧緋葷殑鍏朵粬瀹炰綋鐭ラ亾.鍏叡閽ュ寵鐢ㄦ潵媯楠岀鍚?
2.鏁板瓧絳懼悕:鍋囧鏁版嵁宸茶絳懼悕,騫剁敤韜喚瀛樺偍鍦ㄤ竴涓疄浣撲腑,涓涓鍚嶈兘澶熻瘉鏄庤繖涓疄浣撶煡閬撹繖涓暟鎹?榪欎釜鏁版嵁鐢ㄥ疄浣撶鏈夐挜鍖欑鍚嶅茍閫掍氦;
3.韜喚:鐭ラ亾瀹炰綋鐨勬柟娉?鍦ㄤ竴浜涚郴緇熶腑韜喚鏄叕鍏遍挜鍖?鍏朵粬緋葷粺涓彲浠ユ槸浠庝竴涓猉.509鍚嶅瓧鐨勯偖浠跺湴鍧鐨刄nix UID鏉ョ殑浠諱綍涓滆タ;
4.絳懼悕:涓涓鍚嶇敤鐢ㄥ疄浣撶鏈夐挜鍖欐潵璁$畻鏌愪簺鍔犲瘑鏁版嵁;
5.縐佹湁閽ュ寵:鏄竴浜涙暟瀛?姣忎竴涓鏈夐挜鍖欏彧鑳借鐗瑰畾鐨勬嫢鏈夎縐佹湁閽ュ寵鐨勫疄浣撶煡閬?縐佹湁鍜屽叕鍏遍挜鍖欏瓨鍦ㄦ墍鏈夌敤鍏叡閽ュ寵鍔犲瘑鐨勭郴緇熺殑閽ュ寵瀵逛腑.涓涓叕鍏遍挜鍖欏姞瀵?濡侱SA),涓涓鏈夐挜鍖欎笌涓涓紜殑鍏叡閽ュ寵閫氫俊.縐佹湁閽ュ寵鐢ㄦ潵璁$畻絳懼悕.
6.瀹炰綋:涓涓疄浣撳彲浠ユ槸涓涓漢,涓涓粍緇?涓涓▼搴?涓鍙拌綆楁満,涓涓晢涓?涓涓摱琛?鎴栧叾浠栦綘鎯充俊浠葷殑涓滆タ.
Keytool搴旂敤瀹炰緥:
1.浜х敓涓涓猭eystore:
keytool -genkey -alias User(keystore鐨勫埆鍚? -keyalg RSA -validity 7 -keystore keystore(鎸囧畾keystore).
榪愯榪欎釜鍛戒護,緋葷粺鎻愮ず:
Enter keystore password:yourpassword(杈撳叆瀵嗙爜)
What is your first and last name?
[Unknown]: your name(杈撳叆浣犵殑鍚嶅瓧)
What is the name of your organizational unit?
[Unknown]:your organizational(杈撳叆浣犳墍鍦ㄧ粍緇囧崟浣嶇殑鍚嶅瓧)
What is the name of your organization?
[Unknown]:your organization name (杈撳叆浣犳墍鍦ㄧ粍緇囩殑鍚嶅瓧)
What is the name of your City or Locality?
[Unknown]:your city name(杈撳叆鎵鍦ㄥ煄甯傜殑鍚嶅瓧)
What is the name of your State or Province?
[Unknown]:your provice name(杈撳叆鎵鍦ㄧ渷浠藉悕瀛?
What is the two-letter country code for this unit?
[Unknown]:cn(杈撳叆鍥藉鍚嶅瓧)
Is CN=your name, OU=your organizaion, O="your organization name",
L=your city name, ST=your province name, C=cn correct?
[no]: yes
2.媯鏌ヤ竴涓猭eystore:
keytool -list -v -keystore keystore
Enter keystore password:your password(杈撳叆瀵嗙爜)
灝嗘樉紺簁eystore鍏у濡?
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: yourname
Creation date: Dec 20, 2001
Entry type: keyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=yourname, OU=your organization, O="your organization name",
L=your city name, ST=your province name, C=CN
Issuer: CN=Duke, OU=Java Software, O="Sun Microsystems, Inc.", L=Palo Alto, ST=CA, C=US
Serial number: 3c22adc1
Valid from: Thu Dec 20 19:34:25 PST 2001 until: Thu Dec 27 19:34:25 PST 2001
Certificate fingerprints:
MD5: F1:5B:9B:A1:F7:16:CF:25:CF:F4:FF:35:3F:4C:9C:F0
SHA1: B2:00:50:DD:B6:CC:35:66:21:45:0F:96:AA:AF:6A:3D:E4:03:7C:74
3.杈撳嚭keystore鍒頒竴涓枃浠?testkey:
keytool -export -alias duke -keystore keystore -rfc -file testkey
緋葷粺杈撳嚭:
Enter keystore password:your password(杈撳叆瀵嗙爜)
Certificate stored in file < td>
4.杈撳叆璇佷功鍒頒竴涓柊鐨則ruststore:
keytool -import -alias dukecert -file testkey -keystore truststore
Enter keystore password:your new password.(杈撳叆truststore鏂板瘑鐮?
5.媯鏌ruststore:
keytool -list -v -keystore truststore
緋葷粺灝嗘樉紺簍ruststore鐨勪俊鎭?
鐜板湪鍙互鐢ㄩ傚綋鐨刱eystore榪愯浣犵殑搴旂敤紼嬪簭.濡?
java -Djavax.net.ssl.keyStore=keystore -Djavax.net.ssl.keyStorePassword=password Server
鍜? java -Djavax.net.ssl.trustStore=truststore
-Djavax.net.ssl.trustStorePassword=trustword Client
by
寮犳稕
zht_dream@hotmail.com
寰堝鏃跺欙紝鎴戜滑闇瑕佸湪鐣岄潰鍒濆鍖栦互鍚庡紼嬪簭榪涜鏌愪簺璁劇疆錛屼婦涓緥瀛愶紝褰撶晫闈㈠憟鐜板嚭鏉ヤ互鍚庯紝璁劇疆涓?/span>SplitPane鐨勭殑鐧懼垎姣?/span>(鍏充簬榪欎釜涓轟粈涔堝繀欏昏繖涔堝鐞嗚鍙傝?/span>java婧愪唬鐮?/span>)銆傚緢瀹規槗鎴戜滑灝辨兂鍒扮粰紼嬪簭娣誨姞ComponentListener鐩戝惉錛岀劧鍚庡湪鐩戝惉涓綔澶勭悊錛屽涓嬫墍紺?/span>
panel.addComponentListener(new ComponentAdapter() {
public void componentShown(ComponentEvent e) {
System.out.println("panel:shown");
}
});
浣嗘槸騫舵病鏈夊拰鎴戜滑鎯寵薄鐨勯偅鏍鳳紝褰撶粍浠跺湪鐣岄潰涓婃樉紺哄嚭鏉ョ殑鏃跺?/span>fire鍑?/span>componentShown綾誨瀷鐨勪簨浠剁殑錛屼笅闈㈡垜浠氳繃鐮旂┒婧愪唬鐮佸垎鏋愪笅鍘熷洜
棣栧厛鐨勯棶棰樻槸鍦ㄤ粈涔堝湴鏂逛細fire鍑?/span>ComponentEvent
閫氳繃鏌ョ湅婧愪唬鐮侊紝鎴戜滑鍙互鐪嬪埌瀹炲湪Component鐨?/span>show()鏂規硶涓?/span>
ComponentEvent e = new ComponentEvent(this,ComponentEvent.COMPONENT_SHOWN);
Toolkit.getEventQueue().postEvent(e);
鍏蜂綋浠g爜錛岃鍙傝?/span>java婧愮▼搴?/span>
涔熷氨鏄鍙湁鍦ㄧ粍浠惰皟鐢ㄥ埌setVisible(true)鐨勬椂鍊欐墠浼?/span>fire鍑?/span>ComponentEvent
浣嗘槸浣犱細鍙戠幇錛屽嵆渚挎槸鎴戜滑璋冪敤JComponent鐨?/span>setVisible(true)錛屼篃涓嶄細鐩戝惉鍒?/span>shown浜嬩歡
鍘熷洜涓昏鏄?/span>JComponent閲嶈澆浜?/span>setVisible鏂規硶
濡備笅
public void setVisible(boolean aFlag) {
if(aFlag != isVisible()) {
super.setVisible(aFlag);
Container parent = getParent();
if(parent != null) {
Rectangle r = getBounds();
parent.repaint(r.x,r.y,r.width,r.height);
}
// Some (all should) LayoutManagers do not consider components
// that are not visible. As such we need to revalidate when the
// visible bit changes.
revalidate();
}
}
鍥犱負JComponent鐨?/span>visible灞炴ч粯璁ゅ氨鏄?/span>true錛屾墍浠ヤ笉浼氳皟鐢ㄥ埌Component鐨?/span>setVisible鏂規硶錛屾墍浠ヤ篃涓嶄細fire鍑?/span>ComponentEvent錛屽綋鐒訛紝濡傛灉浣犺皟鐢ㄤ笅JComponent鐨?/span>setVisible(false)+setVisible(true)鏄細fire鍑?/span>ComponentEvent.COMPONENT_SHOWN浜嬩歡鐨勶紝錛堜絾鏄湪閲岄潰寰堝彲鑳藉緱涓嶅埌褰撳墠緇勪歡鐨勫ぇ灝忎俊鎭垨鑰呬笉鑳?/span>SplitPane璁劇疆鍒嗗壊姣斾緥錛屽洜涓鴻繖涓椂鍊欑晫闈㈣繕娌℃湁鍒濆鍖栵級錛岃屼笖濡傛灉鏄?/span>JFrame錛?/span>JDialog錛?/span>JApplet絳変篃鏄病闂鐨勶紝鍥犱負浠栦滑璋冪敤鐨勯兘鏄?/span>Component鐨?/span>setVisible鏂規硶(鎵浠ョ粰榪欎簺欏跺眰緇勪歡娣誨姞ComponentListener鏄病鏈夐棶棰樼殑錛岄兘浼氱洃鍚埌)
濡傛灉涓嶆兂浣跨敤涓婅堪鏂規硶錛岃繕鏈夊彟澶栦竴縐嶆柟寮忓氨鏄坊鍔?/span>HierarchyListener鐩戝惉錛屽洜涓哄綋欏跺眰緇勪歡(JFrame,JDialog絳?/span>)setVisible(true)鐣岄潰鏄劇ず鐨勬椂鍊欙紝閲岄潰閮戒細fire鍑?/span>HierarchyEvent錛屽叿浣撲唬鐮佸涓?/span>(璇︾粏浠g爜璇峰弬鑰?/span>Component鐨?/span>show()鏂規硶)
createHierarchyEvents(HierarchyEvent.HIERARCHY_CHANGED,
this, parent,
HierarchyEvent.SHOWING_CHANGED,
Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_EVENT_MASK));
鑰?/span>createHierarchyEvents鏂規硶浼氬湪姣忎釜緇勪歡涓?/span>fire鍑?/span>HierarchyEvent錛岃嚦浜庡叿浣撶粏鑺傦紝鏈夋椂闂寸殑鍙互dubug涓嬶紝鍏蜂綋鐨勮В鍐蟲柟娉曞涓?/span>
panel.addHierarchyListener(new HierarchyListener() {
public void hierarchyChanged(HierarchyEvent e) {
if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {
if (e.getComponent().isShowing()) {
System.out.println(panel.getBounds());
System.out.println("panel:hshow");
}
else {
System.out.println("panel:hhide");
}
}
}
});
嫻嬭瘯浠g爜濡備笅