锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!Color getRandColor(int fc, int bc) {//緇欏畾鑼冨洿鑾峰緱闅忔満棰滆壊
Random random = new Random();
if (fc > 255)
fc = 255;
if (bc > 255)
bc = 255;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}%>
<%
//璁劇疆欏甸潰涓嶇紦瀛?br />
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 鍦ㄥ唴瀛樹腑鍒涘緩鍥捐薄
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 鑾峰彇鍥懼艦涓婁笅鏂?br /> Graphics g = image.getGraphics();
//鐢熸垚闅忔満綾?br /> Random random = new Random();
// 璁懼畾鑳屾櫙鑹?br />
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
//璁懼畾瀛椾綋
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
//鐢昏竟妗?br />
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 闅忔満浜х敓155鏉″共鎵扮嚎錛屼嬌鍥捐薄涓殑璁よ瘉鐮佷笉鏄撹鍏跺畠紼嬪簭鎺㈡祴鍒?br />
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}
// 鍙栭殢鏈轟駭鐢熺殑璁よ瘉鐮?4浣嶆暟瀛?
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
// 灝嗚璇佺爜鏄劇ず鍒板浘璞′腑
g.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));
//璋冪敤鍑芥暟鍑烘潵鐨勯鑹茬浉鍚岋紝鍙兘鏄洜涓虹瀛愬お鎺ヨ繎錛屾墍浠ュ彧鑳界洿鎺ョ敓鎴?br />
g.drawString(rand, 13 * i + 6, 16);
}
// 灝嗚璇佺爜瀛樺叆SESSION
session.setAttribute("rand", sRand);
// 鍥捐薄鐢熸晥
g.dispose();
// 杈撳嚭鍥捐薄鍒伴〉闈?br />
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
涓鑸姤java.lang.NullPointerException鐨勫師鍥犳湁浠ヤ笅鍑犵錛?
·瀛楃涓插彉閲忔湭鍒濆鍖栵紱
·鎺ュ彛綾誨瀷鐨勫璞℃病鏈夌敤鍏蜂綋鐨勭被鍒濆鍖栵紝姣斿錛?
List lt錛涗細鎶ラ敊
List lt = new ArrayList()錛涘垯涓嶄細鎶ラ敊浜?
·褰撲竴涓璞$殑鍊間負絀烘椂錛屼綘娌℃湁鍒ゆ柇涓虹┖鐨勬儏鍐點?
浣犲彲浠ヨ瘯鐫鎶婁笅闈㈢殑浠g爜鍓嶅姞涓琛屼唬鐮侊細
if(rb!=null && rb!="")
鏀規垚錛?
if(rb==null);
if(rb!==null&&rb!="")
瑙e喅姝ラ錛?/p>
1銆佹墦寮Console闈㈡澘錛屾壘鍒板嚭閿欎俊鎭?/p>
2銆佷粠鎵撳嵃鍑烘潵鐨勪俊鎭腑鎵懼嚭涓涓枃浠跺強鍏跺嚭閿欒鏁般?/p>
3銆佸湪鍑洪敊琛屽璁劇疆鏂偣錛岄噸鏂版墽琛岀▼搴忋?/p>
4銆佹墦寮Variables瑙嗗浘錛屼粠涓煡鎵懼嚭閿欒鎵鐢ㄥ埌鐨勬墍鏈夊璞″強鍏跺鹼紝濡傛灉鍏朵腑瀵硅薄鐨勫間負絀猴紝鍒欏彲浠ヨ繘涓姝ュ垎鏋愰棶棰樸?/p>
5銆佸鏋滆琛岀殑瀵硅薄閮戒笉涓虹┖鑰屾槸璋冪敤浜嗕竴涓嚱鏁幫紝鍒欏埌榪欎釜鍑芥暟閲岃緗柇鐐癸紙鎴杝tep into F5 錛夛紝緇х畫榪涜璋冭瘯銆傝繖鏃墮渶瑕佺敤F6錛堟墽琛屼竴琛岋級錛岀洿鍒板啀嬈℃姤閿欙紝浠庤屽畾浣嶅埌鍑洪敊澶勩傞噸澶嶆楠?.
6銆佺粨鏉熴?/p>
濡傛灉涓嶄細鏂偣,鏁欎綘涓嫚鐨?浣犳妸鐢ㄥ埌鐨勫彉閲忛兘杈撳嚭鍑烘潵,灝辯煡閬撹皝鏄疦ULL浜?鐒跺悗鍦ㄦ兂鍔炴硶鏀規,灝辯畝鍗曞浜?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/aisitemasu/archive/2008/05/29/2493246.aspx
銆銆絎竴錛氬湪web.xml鏂囦歡<web-app> <servlet>"鎶婁笅闈㈢殑鍐呭鏀懼湪榪欓噷"</servlet></web-app>涓姞鍏?/p>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
銆銆絎簩錛氬湪struts-config.xml涓姞鍏ュ涓嬭緗細
銆銆 <message-resources parameter="ApplicationResources"/>
銆 璇ヨ緗渶濂芥斁鍦細</action-mappings>"鏀懼埌榪欓噷"</struts-config>
銆銆絎笁錛氱‘淇?font color="#0000ff">ApplicationResources.properties鏂囦歡鍦ㄤ綘寤虹珛鐨刉EB-INF\classes鏂囦歡澶逛腑銆?/p>
銆銆鍙互鎶奱pplicationResources.properties鏀懼埌classes鏂囦歡澶逛笅鍏跺畠鐩綍錛屼緥濡傦細
銆銆鎶夾pplicationResources.properties鏀懼叆WEB-INF\classes\mydir鏂囦歡澶逛笅銆?strong>struts-config.xml涓殑璁劇疆蹇呴』鏀?/p>
<message-resources parameter="mydir/ApplicationResources"/>
銆銆
絎洓錛氬氨鍙兘鏄敭鍊肩殑闂錛宻truts鐨勮祫婧愭枃浠朵篃鏄彲浠ュ垎澶氳祫婧愭枃浠墮厤緗殑錛屾瘮濡傞厤澶囨槸榪欐牱鐨?/p>
<message-resources parameter="ApplicationResources" key="myAppRes"/>
濡傛灉鍙湁涓涓甫key鐨勮祫婧愭枃浠訛紝閭e氨浼氭姏鍑?strong> org.apache.struts.action.MESSAGE閿欒浜?鍒犻櫎key鍗沖彲銆?br />
瑙i櫎oracle10g瀵嗙爜閿佸畾
oracle10g瀵嗙爜琚攣瀹氫簡錛岃繖涔堟悶瀹氬畠錛宑md涓?/p>
>sqlplus /nolog
>conn sys/password as sysdba
鏇存敼閿佸畾鐨勫瘑鐮侊細
鎵цALTER USER DBSNMP ACCOUNT UNLOCK錛?/p>
浠庢柊鐢⊿QL/PLUS鐧誨綍錛岃緗敤鎴峰悕銆佸瘑鐮侊紱
娉細鐢變簬鍒氭墠瑙i攣鐨勭敤鎴峰悕鏄疍BSNMP錛屾墍浠ヨ繖閲岃緗殑鐢ㄦ埛鍚嶄篃鏄疍BSNMP
Oracle
Username |
Password |
Description |
See Also |
CTXSYS |
CTXSYS |
The Oracle Text account |
Oracle Text Reference |
DBSNMP |
DBSNMP |
The account used by the Management Agent component of Oracle Enterprise Manager to monitor and manage the database |
Oracle Enterprise Manager Grid Control Installation and Basic Configuration |
LBACSYS |
LBACSYS |
The Oracle Label Security administrator account |
Oracle Label Security Administrator's Guide |
MDDATA |
MDDATA |
The schema used by Oracle Spatial for storing Geocoder and router data |
Oracle Spatial User's Guide and Reference |
MDSYS |
MDSYS |
The Oracle Spatial and Oracle interMedia Locator administrator account |
Oracle Spatial User's Guide and Reference |
DMSYS |
DMSYS |
The Oracle Data Mining account. |
Oracle Data Mining Administrator's Guide Oracle Data Mining Concepts |
OLAPSYS |
MANAGER |
The account used to create OLAP metadata structures. It owns the OLAP Catalog (CWMLite). |
Oracle OLAP Application Developer's Guide |
ORDPLUGINS |
ORDPLUGINS |
The Oracle interMedia user. Plug-ins supplied by Oracle and third party format plug-ins are installed in this schema. |
Oracle interMedia User's Guide |
ORDSYS |
ORDSYS |
The Oracle interMedia administrator account |
Oracle interMedia User's Guide |
OUTLN |
OUTLN |
The account that supports plan stability. Plan stability enables you to maintain the same execution plans for the same SQL statements. OUTLN acts as a role to centrally manage metadata associated with stored outlines. |
Oracle Database Performance Tuning Guide |
SI_INFORMTN_SCHEMA |
SI_INFORMTN_SCHEMA |
The account that stores the information views for the SQL/MM Still Image Standard |
Oracle interMedia User's Guide |
SYS |
CHANGE_ON_INSTALL |
The account used to perform database administration tasks |
Oracle Database Administrator's Guide |
SYSMAN |
CHANGE_ON_INSTALL |
The account used to perform Oracle Enterprise Manager database administration tasks. Note that SYS and SYSTEM can also perform these tasks. |
Oracle Enterprise Manager Grid Control Installation and Basic Configuration |
SYSTEM |
MANAGER |
Another account used to perform database administration tasks. |
鏈枃鏉ヨ嚜寰蜂粩宸ヤ綔瀹?http://www.dezai.cn
String encoding = "gb2312"; char c[] = {'u4f60'}; CharToByteConverter converter = CharToByteConverter.getConverter(encoding); byte b[] = converter.convertAll(c); for (int i = 0; i < b.length; i++) { System.out.println(Integer.toHexString(b[i])); }
String encoding = "gb2312"; char c[] = {'u4f60'}; CharToByteConverter converter = CharToByteConverter.getDefault(); byte b[] = converter.convertAll(c); for (int i = 0; i < b.length; i++) { System.out.println(Integer.toHexString(b[i])); }
String encoding = "gb2312"; InputStreamReader reader = new InputStreamReader(new FileInputStream( "text.txt"), encoding); char c[] = new char[10]; int length = reader.read(c); for (int i = 0; i < length; i++) { System.out.println(c[i]); }
<web-app> <filter> <filter-name>RequestFilter</filter-name> <filter-class>net.golden.uirs.util.RequestFilter</filter-class> <init-param> <param-name>charset</param-name> <param-value>gb2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>RequestFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> </web-app>
public void doFilter(ServletRequest req, ServletResponse res, FilterChain fChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getSession(); String userId = (String) session.getAttribute("userid"); req.setCharacterEncoding(this.filterConfig.getInitParameter("charset")); // 璁劇疆瀛楃闆嗭紵瀹為檯涓婃槸璁劇疆浜哹yte ??銆塩har鐨別ncoding try { if (userId == null || userId.equals("")) { if (!request.getRequestURL().toString().matches( ".*/uirs/logon/logon(Controller){0,1}x2Ejsp$")) { session.invalidate(); response.sendRedirect(request.getContextPath() + "/uirs/logon/logon.jsp"); } } else { // 鐪嬬湅鏄惁鍏鋒湁淇℃伅涓婃姤緋葷粺鐨勬潈闄?/span> if (!net.golden.uirs.util.UirsChecker.check(userId, "淇℃伅涓婃姤緋葷粺", net.golden.uirs.util.UirsChecker.ACTION_DO)) { if (!request.getRequestURL().toString().matches( ".*/uirs/logon/logon(Controller){0,1}x2Ejsp$")) { response.sendRedirect(request.getContextPath() + "/uirs/logon/logonController.jsp"); } } } } catch (Exception ex) { response.sendRedirect(request.getContextPath() + "/uirs/logon/logon.jsp"); } fChain.doFilter(req, res); }
鐩墠緗戠粶涓婂叧浜庡璞″簭鍒楀寲鐨勬枃绔犱笉灝戯紝浣嗘槸鎴戝彂鐜拌緇嗗彊榪扮敤娉曞拰鍘熺悊鐨勬枃绔犲お灝戙傛湰浜烘妸鑷繁緇忚繃緇忛獙鎬葷粨鍜屽疄闄呰繍鐢ㄤ腑鐨勪綋浼氬啓鎴愮殑瀛︿範絎旇璐$尞緇欏ぇ瀹躲傚笇鏈涜兘涓烘暣涓猨ava紺懼尯鐨勭箒鑽e仛涓鐐逛簨鎯呫?br />
搴忓垪鍖栫殑榪囩▼灝辨槸瀵硅薄鍐欏叆瀛楄妭嫻佸拰浠庡瓧鑺傛祦涓鍙栧璞°傚皢瀵硅薄鐘舵佽漿鎹㈡垚瀛楄妭嫻佷箣鍚庯紝鍙互鐢╦ava.io鍖呬腑鐨勫悇縐嶅瓧鑺傛祦綾誨皢鍏朵繚瀛樺埌鏂囦歡涓紝綆¢亾鍒板彟 涓綰跨▼涓垨閫氳繃緗戠粶榪炴帴灝嗗璞℃暟鎹彂閫佸埌鍙︿竴涓繪満銆傚璞″簭鍒楀寲鍔熻兘闈炲父綆鍗曘佸己澶э紝鍦≧MI銆丼ocket銆丣MS銆丒JB閮芥湁搴旂敤銆傚璞″簭鍒楀寲闂鍦ㄧ綉 緇滅紪紼嬩腑騫朵笉鏄渶嬋鍔ㄤ漢蹇冪殑璇鵑錛屼絾鍗寸浉褰撻噸瑕侊紝鍏鋒湁璁稿瀹炵敤鎰忎箟銆?br />
涓錛氬璞″簭鍒楀寲鍙互瀹炵幇鍒嗗竷寮忓璞°?br />
涓昏搴旂敤渚嬪錛歊MI瑕佸埄鐢ㄥ璞″簭鍒楀寲榪愯榪滅▼涓繪満涓婄殑鏈嶅姟錛屽氨鍍忓湪鏈湴鏈轟笂榪愯瀵硅薄鏃朵竴鏍楓?/p>
浜岋細 java瀵硅薄搴忓垪鍖栦笉浠呬繚鐣欎竴涓璞$殑鏁版嵁錛?/font>鑰屼笖閫掑綊淇濆瓨瀵硅薄寮曠敤鐨勬瘡涓璞$殑鏁版嵁銆傚彲浠ュ皢鏁翠釜瀵硅薄灞傛鍐欏叆瀛楄妭嫻佷腑錛屽彲浠ヤ繚瀛樺湪鏂囦歡涓垨鍦ㄧ綉緇滆繛鎺ヤ笂浼?閫掋傚埄鐢ㄥ璞″簭鍒楀寲鍙互榪涜瀵硅薄鐨?#8220;娣卞鍒?#8221;錛屽嵆澶嶅埗瀵硅薄鏈韓鍙婂紩鐢ㄧ殑瀵硅薄鏈韓銆傚簭鍒楀寲涓涓璞″彲鑳藉緱鍒版暣涓璞″簭鍒椼?br />
浠庝笂闈㈢殑鍙欒堪涓紝鎴戜滑鐭ラ亾浜嗗璞″簭鍒楀寲鏄痡ava緙栫▼涓殑蹇呭姝﹀櫒錛岄偅涔堣鎴戜滑浠庡熀紜寮濮嬶紝濂藉ソ瀛︿範涓涓嬪畠鐨勬満鍒跺拰鐢ㄦ硶銆?
java 搴忓垪鍖栨瘮杈冪畝鍗曪紝閫氬父涓嶉渶瑕佺紪鍐欎繚瀛樺拰鎭㈠瀵硅薄鐘舵佺殑瀹氬埗浠g爜銆傚疄鐜癹ava.io.Serializable鎺ュ彛鐨勭被瀵硅薄鍙互杞崲鎴愬瓧鑺傛祦鎴栦粠瀛楄妭嫻佹仮 澶嶏紝涓嶉渶瑕佸湪綾諱腑澧炲姞浠諱綍浠g爜銆傚彧鏈夋瀬灝戞暟鎯呭喌涓嬫墠闇瑕佸畾鍒朵唬鐮佷繚瀛樻垨鎭㈠瀵硅薄鐘舵併傝繖閲岃娉ㄦ剰錛氫笉鏄瘡涓被閮藉彲搴忓垪鍖栵紝鏈変簺綾繪槸涓嶈兘搴忓垪鍖栫殑錛屼緥濡傛秹鍙?綰跨▼鐨勭被涓庣壒瀹欽VM鏈夐潪甯稿鏉傜殑鍏崇郴銆?br />
搴忓垪鍖栨満鍒訛細
搴忓垪鍖栧垎涓轟袱澶ч儴鍒嗭細搴忓垪鍖栧拰鍙嶅簭鍒楀寲銆?搴忓垪鍖栨槸榪欎釜榪囩▼鐨勭涓閮ㄥ垎錛屽皢鏁版嵁鍒嗚В鎴愬瓧鑺傛祦錛屼互渚垮瓨鍌ㄥ湪鏂囦歡涓垨鍦ㄧ綉緇滀笂浼犺緭銆傚弽搴忓垪鍖栧氨鏄墦寮瀛楄妭嫻佸茍閲嶆瀯瀵硅薄銆傚璞″簭鍒楀寲涓嶄粎瑕佸皢鍩烘湰鏁版嵁綾誨瀷 杞崲鎴愬瓧鑺傝〃紺猴紝鏈夋椂榪樿鎭㈠鏁版嵁銆傛仮澶嶆暟鎹姹傛湁鎭㈠鏁版嵁鐨勫璞″疄渚嬨侽bjectOutputStream涓殑搴忓垪鍖栬繃紼嬩笌瀛楄妭嫻佽繛鎺ワ紝鍖呮嫭瀵硅薄綾誨瀷 鍜岀増鏈俊鎭傚弽搴忓垪鍖栨椂錛孞VM鐢ㄥご淇℃伅鐢熸垚瀵硅薄瀹炰緥錛岀劧鍚庡皢瀵硅薄瀛楄妭嫻佷腑鐨勬暟鎹鍒跺埌瀵硅薄鏁版嵁鎴愬憳涓備笅闈㈡垜浠垎涓ゅぇ閮ㄥ垎鏉ラ槓榪幫細
澶勭悊瀵硅薄嫻侊細
錛堝簭鍒楀寲榪囩▼鍜屽弽搴忓垪鍖栬繃紼嬶級
java.io鍖呮湁涓や釜搴忓垪鍖栧璞$殑綾匯侽bjectOutputStream璐熻矗灝嗗璞″啓鍏ュ瓧鑺傛祦錛孫bjectInputStream浠庡瓧鑺傛祦閲嶆瀯瀵硅薄銆?br />
鎴戜滑鍏堜簡瑙bjectOutputStream綾誨惂銆侽bjectOutputStream綾繪墿灞旸ataOutput鎺ュ彛銆?br />
writeObject ()鏂規硶鏄渶閲嶈鐨勬柟娉曪紝鐢ㄤ簬瀵硅薄搴忓垪鍖栥傚鏋滃璞″寘鍚叾浠栧璞$殑寮曠敤錛屽垯writeObject()鏂規硶閫掑綊搴忓垪鍖栬繖浜涘璞°傛瘡涓?ObjectOutputStream緇存姢搴忓垪鍖栫殑瀵硅薄寮曠敤琛紝闃叉鍙戦佸悓涓瀵硅薄鐨勫涓嫹璐濄傦紙榪欑偣寰堥噸瑕侊級鐢變簬writeObject()鍙互搴忓垪鍖栨暣 緇勪氦鍙夊紩鐢ㄧ殑瀵硅薄錛屽洜姝ゅ悓涓ObjectOutputStream瀹炰緥鍙兘涓嶅皬蹇冭璇鋒眰搴忓垪鍖栧悓涓瀵硅薄銆傝繖鏃訛紝榪涜鍙嶅紩鐢ㄥ簭鍒楀寲錛岃屼笉鏄啀嬈″啓鍏ュ璞″瓧鑺?嫻併?br />
涓嬮潰錛岃鎴戜滑浠庝緥瀛愪腑鏉ヤ簡瑙bjectOutputStream榪欎釜綾誨惂銆?br />
1. // 搴忓垪鍖?today's date 鍒頒竴涓枃浠朵腑.
2. FileOutputStream f = new FileOutputStream("tmp");
3. ObjectOutputStream s = new ObjectOutputStream(f);
4. s.writeObject("Today");
5. s.writeObject(new Date());
6. s.flush();
鐜板湪錛岃鎴戜滑鏉ヤ簡瑙bjectInputStream榪欎釜綾匯傚畠涓?ObjectOutputStream鐩鎬技銆傚畠鎵╁睍DataInput鎺ュ彛銆侽bjectInputStream涓殑鏂規硶闀滃儚 DataInputStream涓鍙朖ava鍩烘湰鏁版嵁綾誨瀷鐨勫叕寮鏂規硶銆俽eadObject()鏂規硶浠庡瓧鑺傛祦涓弽搴忓垪鍖栧璞°傛瘡嬈¤皟鐢?readObject()鏂規硶閮借繑鍥炴祦涓笅涓涓狾bject銆傚璞″瓧鑺傛祦騫朵笉浼犺緭綾葷殑瀛楄妭鐮侊紝鑰屾槸鍖呮嫭綾誨悕鍙婂叾絳懼悕銆俽eadObject()鏀跺埌瀵硅薄 鏃訛紝JVM瑁呭叆澶翠腑鎸囧畾鐨勭被銆傚鏋滄壘涓嶅埌榪欎釜綾伙紝鍒檙eadObject()鎶涘嚭ClassNotFoundException,濡傛灉闇瑕佷紶杈撳璞℃暟鎹拰 瀛楄妭鐮侊紝鍒欏彲浠ョ敤RMI妗嗘灦銆侽bjectInputStream鐨勫叾浣欐柟娉曠敤浜庡畾鍒跺弽搴忓垪鍖栬繃紼嬨?br />
渚嬪瓙濡備笅錛?br />
1. //浠庢枃浠朵腑鍙嶅簭鍒楀寲 string 瀵硅薄鍜?date 瀵硅薄
2. FileInputStream in = new FileInputStream("tmp");
3. ObjectInputStream s = new ObjectInputStream(in);
4. String today = (String)s.readObject();
5. Date date = (Date)s.readObject();
瀹氬埗搴忓垪鍖栬繃紼?
搴忓垪鍖栭氬父鍙互鑷姩瀹屾垚錛屼絾鏈夋椂鍙兘瑕佸榪欎釜榪囩▼榪涜鎺у埗銆俲ava鍙互灝嗙被澹版槑涓簊erializable錛屼絾浠嶅彲鎵嬪伐鎺у埗澹版槑涓簊tatic鎴杢ransient鐨勬暟鎹垚鍛樸?br />
渚嬪瓙錛氫竴涓潪甯哥畝鍗曠殑搴忓垪鍖栫被銆?br />
1. public class simpleSerializableClass implements Serializable{
2. String sToday="Today:";
3. transient Date dtToday=new Date();
4. }
搴忓垪鍖栨椂錛岀被鐨勬墍鏈夋暟鎹垚鍛樺簲鍙簭鍒楀寲闄や簡澹版槑涓簍ransient鎴杝tatic鐨勬垚鍛樸傚皢鍙橀噺澹版槑涓?transient鍛婅瘔JVM鎴戜滑浼氳礋璐e皢鍙樺厓搴忓垪鍖栥傚皢鏁版嵁鎴愬憳澹版槑涓簍ransient鍚庯紝搴忓垪鍖栬繃紼嬪氨鏃犳硶灝嗗叾鍔犺繘瀵硅薄瀛楄妭嫻佷腑錛屾病鏈変粠 transient鏁版嵁鎴愬憳鍙戦佺殑鏁版嵁銆傚悗闈㈡暟鎹弽搴忓垪鍖栨椂錛岃閲嶅緩鏁版嵁鎴愬憳錛堝洜涓哄畠鏄被瀹氫箟鐨勪竴閮ㄥ垎錛夛紝浣嗕笉鍖呭惈浠諱綍鏁版嵁錛屽洜涓鴻繖涓暟鎹垚鍛樹笉鍚戞祦涓啓 鍏ヤ換浣曟暟鎹傝浣忥紝瀵硅薄嫻佷笉搴忓垪鍖杝tatic鎴杢ransient銆傛垜浠殑綾昏鐢╳riteObject()涓巖eadObject()鏂規硶浠ュ鐞嗚繖浜?鏁版嵁鎴愬憳銆備嬌鐢╳riteObject()涓巖eadObject()鏂規硶鏃訛紝榪樿娉ㄦ剰鎸夊啓鍏ョ殑欏哄簭璇誨彇榪欎簺鏁版嵁鎴愬憳銆?br />
鍏充簬濡備綍浣跨敤瀹氬埗搴忓垪鍖栫殑閮ㄥ垎浠g爜濡備笅錛?br />
1. //閲嶅啓writeObject()鏂規硶浠ヤ究澶勭悊transient鐨勬垚鍛樸?
2. public void writeObject(ObjectOutputStream outputStream) throws IOException{
3. outputStream.defaultWriteObject();//浣垮畾鍒剁殑writeObject()鏂規硶鍙互
4. 鍒╃敤鑷姩搴忓垪鍖栦腑鍐呯疆鐨勯昏緫銆?
5. outputStream.writeObject(oSocket.getInetAddress());
6. outputStream.writeInt(oSocket.getPort());
7. }
8. //閲嶅啓readObject()鏂規硶浠ヤ究鎺ユ敹transient鐨勬垚鍛樸?
9. private void readObject(ObjectInputStream inputStream) throws IOException,ClassNotFoundException{
10. inputStream.defaultReadObject();//defaultReadObject()琛ュ厖鑷姩搴忓垪鍖?
11. InetAddress oAddress=(InetAddress)inputStream.readObject();
12. int iPort =inputStream.readInt();
13. oSocket = new Socket(oAddress,iPort);
14. iID=getID();
15. dtToday =new Date();
16. }
瀹屽叏瀹氬埗搴忓垪鍖栬繃紼?
濡傛灉涓涓被瑕佸畬鍏ㄨ礋璐h嚜宸辯殑搴忓垪鍖栵紝鍒欏疄鐜?Externalizable鎺ュ彛鑰屼笉鏄疭erializable鎺ュ彛銆侲xternalizable鎺ュ彛瀹氫箟鍖呮嫭涓や釜鏂規硶writeExternal ()涓巖eadExternal()銆傚埄鐢ㄨ繖浜涙柟娉曞彲浠ユ帶鍒跺璞℃暟鎹垚鍛樺浣曞啓鍏ュ瓧鑺傛祦.綾誨疄鐜癊xternalizable鏃訛紝澶村啓鍏ュ璞℃祦涓紝鐒跺悗綾?瀹屽叏璐熻矗搴忓垪鍖栧拰鎭㈠鏁版嵁鎴愬憳錛岄櫎浜嗗ご浠ュ錛屾牴鏈病鏈夎嚜鍔ㄥ簭鍒楀寲銆傝繖閲岃娉ㄦ剰浜嗐傚0鏄庣被瀹炵幇Externalizable鎺ュ彛浼氭湁閲嶅ぇ鐨勫畨鍏ㄩ闄┿?writeExternal()涓巖eadExternal()鏂規硶澹版槑涓簆ublic錛屾伓鎰忕被鍙互鐢ㄨ繖浜涙柟娉曡鍙栧拰鍐欏叆瀵硅薄鏁版嵁銆傚鏋滃璞″寘鍚晱鎰熶俊 鎭紝鍒欒鏍煎灝忓績銆傝繖鍖呮嫭浣跨敤瀹夊叏濂楁帴鎴栧姞瀵嗘暣涓瓧鑺傛祦銆傚埌姝や負鑷籌紝鎴戜滑瀛︿範浜嗗簭鍒楀寲鐨勫熀紜閮ㄥ垎鐭ヨ瘑.
}
鐢?serialPersistentFields 涓烘煇涓被瀹氫箟鍙簭鍒楀寲鍩熷悗錛屽嵆鏃犻渶鍐嶅皢鍙簭鍒楀寲鍩熼檺鍒跺湪褰撳墠 Serializable 綾葷殑瀹氫箟涔嬪唴銆傚埄鐢ㄧ 1.7 鑺傦紝"璁塊棶綾葷殑鍙簭鍒楀寲鍩? 涓弿榪扮殑鎺ュ彛錛孲erializable 綾葷殑 writeObject 鍜?readObject 鏂規硶鍙皢璇ョ被鐨勫綋鍓嶅疄鐜版槧灝勫埌鍏跺彲搴忓垪鍖栧煙銆傚洜姝わ紝鍚庣畫鐗堟湰涓彲浠ユ敼鍙?Serializable 綾葷殑鍩燂紝浣嗗墠鎻愭槸淇濇寔涓庣増鏈吋瀹圭殑 Serializable 鍩熺殑鏄犲皠銆?/p>
1.6 瀵圭被鐨勫彲搴忓垪鍖栧煙鍜屾暟鎹瓨妗?br /> 瀵圭被鐨勫彲搴忓垪鍖栫姸鎬佽繘琛屽瓨妗d互浣垮叾涓?Serializable 綾葷殑鍏跺畠瀹炵幇闂村彲浜掓搷浣滐紝鎴栬呭綾繪紨鍙樿繘琛屽瓨妗o紝榪欎簺閮介潪甯稿繀瑕併傚鍙簭鍒楀寲鍩熻繘琛屽瓨妗e彲甯姪鐢ㄦ埛鏈緇堢‘瀹氳鍩熸槸鍚﹀簲搴忓垪鍖栥?搴忓垪鍖?javadoc 鏍囪 @serial銆丂serialField 鍜?@serialData 鍙彁渚涘婧愪唬鐮佷腑 Serializable 綾葷殑搴忓垪鍖栧艦寮忚繘琛屽瓨妗g殑鏂規硶銆?/p>
瀵逛簬緙虹渷鐨勫彲搴忓垪鍖栧煙錛孈serial 鏍囪搴旀斁鍦?javadoc 娉ㄩ噴涓傝娉曞涓嬶細@serial field-description 鍏朵腑鍙夐」 field-description 鎻忚堪鍩熷強鍏跺璁稿肩殑鍚箟銆?field-description 鍙法澶氳銆傚綋鍒濆鐗堟湰涓鍔犱竴涓煙鏃訛紝@since 鏍囪鎸囧嚭鎵娣誨煙鐨勭増鏈侤serial 鐨?field-description 鎻愪緵閽堝搴忓垪鍖栫殑鏂囨。銆傚湪搴忓垪鍖栧艦寮忔枃妗e唴錛宖ield-description 灝嗚娣誨姞鍒?javadoc 娉ㄩ噴涓?
@serialField 鏍囪鐢ㄤ簬瀵?serialPersistentFields 鏁扮粍鐨?ObjectStreamField 緇勪歡榪涜瀛樻。銆傛瘡涓?ObjectStreamField 緇勪歡閮藉簲浣跨敤鍏朵腑鐨勪竴涓爣璁般傝娉曞涓嬶細@serialField field-name field-type field-description
@serialData 鏍囪鎻忚堪鍐欏叆鎴栬鍙栨暟鎹殑嬈″簭鍜岀被鍨嬨傝鏍囪鎻忚堪 writeObject 鎵鍐欏叆鐨勫彲閫夋暟鎹垨 Externalizable.writeExternal 鏂規硶鎵鍐欏叆鐨勬墍鏈夋暟鎹殑嬈″簭鎴栫被鍨嬨傝娉曞涓嬶細@serialData data-description
javadoc 搴旂敤紼嬪簭璇嗗埆搴忓垪鍖?javadoc 鏍囪騫朵負姣忎釜 Serializable 鍜?Externalizable 綾葷敓鎴愯鏄庢枃瀛椼傛湁鍏寵繖浜涙爣璁扮敤娉曠殑紺轟緥錛屽弬瑙佺 C.1 鑺?"java.io.File 鍙浛浠e疄鐜扮殑紺轟緥銆?
褰撴煇涓被琚0鏄庝負 Serializable 鏃訛紝鍗抽氳繃鍙簭鍒楀寲鍩熷強鍙夋暟鎹紙鎸夊悕縐板拰綾誨瀷錛夊畾涔変簡璇ュ璞$殑鍙簭鍒楀寲鐘舵併傚彲閫夋暟鎹彧鑳界敤 Serializable 綾諱腑鐨?writeObject 鏂規硶鏄懼紡鍐欏叆錛岃屽叾璇誨彇鍒欏彲閫氳繃 Serializable 綾誨拰 readObject 鏂規硶榪涜銆傚惁鍒欙紝搴忓垪鍖栧皢璺寵繃鏃犳硶璇誨彇鐨勫彲閫夋暟鎹?
褰撲竴涓被琚0鏄庝負 Externalizable 鏃訛紝閫氳繃綾昏嚜韜啓鍏ユ祦鐨勬暟鎹嵆瀹氫箟浜嗚綾葷殑搴忓垪鍖栫姸鎬併?璇ョ被蹇呴』鎸囧畾欏哄簭銆佺被鍨嬪強鍐欏叆嫻佺殑姣忎釜鏁版嵁鐨勫惈涔夈傚悓鏃惰繕蹇呴』澶勭悊鍏惰嚜韜殑婕斿彉錛屼粠鑰屽彲璇誨彇浠ュ墠鐗堟湰鎵鍐欏叆鐨勬暟鎹紝鎴栧啓鍏ヤ互鍓嶇増鏈墍鑳借鍙栫殑鏁版嵁銆傚湪瀛樺偍鍜屾仮澶嶆暟鎹椂錛岃綾誨繀欏諱笌鐖剁被鐩鎬竴鑷淬傚繀欏繪寚瀹氭祦涓埗綾繪暟鎹殑浣嶇疆銆?/p>
綾葷殑璁捐鑰呭繀欏葷‘淇濅負綾誨瓨鍌ㄧ殑淇℃伅瀵逛簬鎸佷箙鎬ф槸鍚堥傜殑錛岃屼笖閬靛驚涓哄疄鐜板簭鍒楀寲鐨勪簰鎿嶄綔鎬у拰婕斿彉鑰屾寚瀹氱殑搴忓垪鍖栬鍒欍傜 5 绔?#8220;鍙簭鍒楀寲瀵硅薄鐨勭増鏈紨鍙?#8221;瀵圭被鐨勬紨鍙樿繘琛屼簡鏇磋緇嗙殑璇存槑銆?
1.10 Serializable 鎺ュ彛
Serialization 瀵硅薄鐢熸垚嫻侊紝鍏朵腑鎻愪緵鏈夊叧鎵瀛樺璞$殑 JavaTM 綾葷殑淇℃伅銆傚浜庡彲搴忓垪鍖栧璞★紝鍗充嬌瀛樺湪璇ョ被鐨勪笉鍚岋紙浣嗗吋瀹癸級鐗堟湰鐨勫疄鐜幫紝涔熻淇濇寔瓚沖鐨勪俊鎭互鎭㈠榪欎簺瀵硅薄銆傚畾涔?Serializable 鎺ュ彛鍙互鏍囪瘑瀹炵幇鍙簭鍒楀寲鍗忚鐨勭被錛?/p>
package java.io;
public interface Serializable {};
Serializable 綾誨繀欏誨叿澶囧涓嬪姛鑳斤細
瀹炵幇 java.io.Serializable 鎺ュ彛
鏍囪瘑搴斿簭鍒楀寲鐨勫煙
(浣跨敤 serialPersistentFields 鎴愬憳浠ユ樉寮忓0鏄庡叾鍙簭鍒楀寲錛屾垨鑰呬嬌鐢ㄧ灛鎬佸叧閿瓧鏉ユ寚紺洪潪搴忓垪鍩熴?
鍙闂叾絎竴涓潪搴忓垪鍖栫埗綾葷殑鏃犲弬鏁版瀯閫犲嚱鏁般?
璇ョ被鍙牴鎹渶瑕佸畾涔夊涓嬫柟娉曪細
writeObject 鏂規硶錛岀敤浜庢帶鍒惰淇濆瓨鍝簺淇℃伅鎴栧皢闄勫姞淇℃伅娣誨姞鍒版祦涓?
readObject 鏂規硶錛岀敤浜庤鍙栫敱鐩稿簲 writeObject 鏂規硶鍐欏叆鐨勪俊鎭紝鎴栧湪瀵硅薄鎭㈠鍚庢洿鏂板叾鐘舵?
writeReplace 鏂規硶錛岀敤浜庡厑璁哥被鎸囧畾鍐欏叆嫻佺殑鏇挎崲瀵硅薄
readResolve 鏂規硶錛岀敤浜庡厑璁哥被涓哄垰浠庢祦涓鍙栫殑瀵硅薄鎸囧畾鏇挎崲瀵硅薄
ObjectOutputStream 鍜?ObjectInputStream 鏀寔鎵鎿嶄綔鐨勫彲搴忓垪鍖栫被鐨勬紨鍙橈紙鍏佽綾誨彂鐢熸敼鍙樹互鍏煎鏃╂湡鐗堟湰鐨勭被錛夈傛湁鍏沖疄鐜板吋瀹瑰彉鍖栫殑鏈哄埗鐨勪俊鎭紝鍙傝絎?5.5 鑺?#8220;鍏煎鐨?JavaTM 綾誨瀷婕斿彉”銆?br />
--------------------------------------------------------------------------
class ObjectYouWannaSave implements Serializable{
int x; int y;
SubObject so = new SubObject();
..........
}
class SubObject implements Serializable{
String s = "abc"; //String is OK, because String is java.io.Serializable
}
public class Save{ // in Save.java
public void main(String[] args) {
ObjectYouWannaSave original = new ObjectYouWannaSave();
original.x = -1; original.y = 100; .....
ObjectOutputStream out = null;
try{
out = new ObjectOutputStream(new FileOutputStream(new File("c:/save.dat")));
out.writeObject(original);
}catch(Exceptione){
}finally{
try{out.close();}catch(Exception e){}
}
}
}
public class Read{ // in Read.java
public void main(String[] args) {
ObjectInputStream in = null;
try{
out = new ObjectInStream(new FileInStream(new File("c:/save.dat")));
ObjectYouWannaSave o = (ObjectYouWannaSave)in.readObject();
System.out.println("x="+o.x);
System.out.println("subobject.string=" + o.so.s);
........
}catch(Exceptione){
}finally{
try{in.close();}catch(Exception e){}
}
}
}
榪欐槸涓渶綆鍗曠殑渚嬪瓙錛屽厛榪愯Save,浠ュ悗浠涔堟椂鍊欒繍琛孯ead閮藉彲浠ワ紙鍙c:\save.dat鏂囦歡榪樺瓨鍦ㄥ氨鍙互浜嗭級
--------------------------------------------------
瀵硅薄鐨勫鍛介氬父闅忕潃鐢熸垚璇ュ璞$殑紼嬪簭緇堟鑰岀粓姝紝鏈夋椂鍊欙紝鍙兘闇瑕佸皢瀵硅薄鐨勭姸鎬佷繚瀛樹笅鏉ワ紝鍦ㄩ渶瑕佺殑鏃跺?br />
鍐嶅皢瀵硅薄鎭㈠錛屾垜浠妸瀵硅薄鐨勮繖縐嶈褰曡嚜宸辯姸鎬佺殑浠ヤ究灝嗘潵鍐嶇敓鐨勮兘鍔涳紝鍙仛瀵硅薄鐨勬寔緇э紙PERSISTENCE錛夛紝
瀵硅薄閫氳繃鍐欏嚭鎻忚堪鑷繁鐘舵佺殑鏁板兼潵璁板綍鑷繁錛岃繖涓繃紼嬪彨瀵硅薄鐨勪覆琛屽寲Serializable銆備覆琛屽寲鐨勪富瑕佷換鍔℃槸鍐?br />
鍑哄璞″疄渚嬪彉閲忕殑鍊箋傚鏋滃彉閲忔槸鍙︿竴涓璞$殑寮曠敤錛屽垯寮曠敤鐨勫璞′篃瑕佷覆琛屽寲錛岃繖鏄釜閫掑綊榪囩▼銆?br />
--------------------------------------------------------------------
java.io.Serializable interface鏄竴涓緝涓虹壒孌婄殑鎺ュ彛錛?br />
The serialization interface has no methods or fields and serves
only to identify the semantics of being serializable
鍗籌細瀹冧富瑕佹槸涓涓敤浜庨氱煡JVM鐨勬爣蹇?/p>
class X implements java.io.Serializable{...}
濡傛灉浣犺瀹氬埗浣犺嚜宸辯殑serializable琛屼負錛屼綘搴旇鍦╔涓疄鐜頒互涓?涓柟娉曪細
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
鍚﹀垯灝嗘寜緙虹渷鐨勭瓥鐣ヨ繘琛屻?/p>
鐢變簬涓婅堪2涓柟娉曟槸private鐨勶紝鎵浠ュ湪鏌愪簺鎯呭喌涓嬶紝鍙互浣跨敤
java.io.Serializable鐨勫瓙鎺ュ彛java.io.Externalizable錛?br />
鍦ㄨ繖涓猧nterface涓湁2涓猵ublic鏂規硶錛?/p>
public void writeExternal(ObjectOutput out)
throws IOException
public void readExternal(ObjectInput in)
throws IOException,
ClassNotFoundException
----------------------------------------------------------------------------
Serializable鏄竴涓覆琛屽寲鎺ュ彛錛屽畠娌℃湁浠諱綍鐨勫睘鎬у拰鏂規硶錛屼竴涓被瀹炵幇浜嗕覆琛屽寲鎺ュ彛錛屽氨琛ㄦ槑
璇ョ被鍏鋒湁鎸佷箙鎬э紝閫氳繃WriteObjcet鍙皢鍏舵寔涔呬繚瀛樺湪紓佺洏錛屽湪闇瑕佹椂錛屽彲鐢≧eadObject浠庣鐩樹腑璇誨嚭錛屾鏃訛紝瀵硅薄鐨勭姸鎬佸拰瀛樺叆浼肩殑鐩稿悓銆備笂闈㈢粰鍑虹殑鍒楀瓙姣旇緝綆鍗曪紝鍙氳繃涓茶鍖栦繚瀛樹竴涓?br />
閾捐〃瀵硅薄錛屽畠鐨勬瘡涓妭鐐規暟鎹篃浼氳淇濆瓨銆?褰撶劧錛屼覆琛屽寲鎺ュ彛榪樻湁鍏朵粬鐢ㄩ旓紝渚嬪HTTP闅ч亾絳?br />
銆?br />
-----------------------------------------------------------------------
瀵硅薄搴忓垪鍖栫殑鎸佺畫鎬ц鍜屾案涔呭璞″垎鍒紑銆傚簭鍒楀寲鍙兘杈懼埌鏈夌嚎鎸佺畫鎬?br />
鍦ㄥ悓涓涓猨vm涓婂彲浠ラ噸鏋勫璞$殑鍐呭錛岃揪鍒版寔緇?br />
---------------------------------------------------------------------
java搴忓垪鍖栦富瑕佹槸鐢ㄤ簬涓や釜鏂歸潰錛?br />
涓涓槸java鐨凴MI錛堣繙紼嬫柟娉曡皟鐢紞Remote method invocation錛夛紝浣犲彲浠ヤ嬌鐢ㄥ埆浜烘満鍣ㄤ笂鐨勫璞″氨鍍忓湪浣犺嚜宸辯殑鏈哄櫒涓婁嬌鐢ㄥ畠涓鏍鳳紙閫氳繃搴忓垪鍖栵級錛屽彟澶栵紝鍦ㄤ嬌鐢╦avabean鏃朵篃闇瑕佷嬌鐢ㄥ簭鍒楀寲錛屽簭鍒楀寲涓昏灝辨槸浣跨敤鍦ㄨ繖涓ゆ柟闈€?br />
-------------------------------------------------------------
鎵璋撳簭鍒楀寲灝辨槸鎶婃妸瀵硅薄浠ヤ竴涓唬鐮佷覆鐨勫艦寮忚〃紺哄嚭鏉ワ紝
榪欐牱鍙互淇濆瓨鍒扮鐩樻垨鍒欓氳繃緗戠粶浼犺緭錛屾帴鍙楁柟鍙互鍦ㄦ妸浠g爜涓叉仮澶嶆垚瀵硅薄
鍏蜂綋鐨勪覆褰㈠寲鏂規硶鍙互鑷繁鍐欙紝鎺ユ敹鏀懼氨鍙互鏍規嵁鎮ㄤ覆褰㈢殑瑙勫垯鎶婂璞℃仮澶嶅嚭鏉?br />
--------------------------------------------------------------------
搴忓垪鍖栨槸鎶婁竴涓璞$殑鐘舵佸啓鍏ヤ竴涓瓧鑺傛祦鐨勮繃紼嬶紝瀹冩墽琛孯MI錛孯MI鍏佽涓鍙版満鍣ㄤ笂鐨凧AVA瀵硅薄璋冪敤涓嶅悓鏈哄櫒涓婄殑JAVA瀵硅薄鏂規硶錛屽璞″彲浠ヤ綔涓哄弬鏁版彁渚涚粰閭d釜榪滅▼鏂規硶錛屽彂閫佹満搴忓垪鍖栬瀵硅薄騫朵紶閫佸畠錛屾帴鏀舵満鎵ц鍙嶅簭鍒楀寲銆?
搴忓垪鍖栧拰鍙嶅簭鍒楀寲鐨勫叧緋誨浘琛ㄥ彲褰㈡垚鍖呭惈寰幆寮曠敤鐨勯『搴忓浘琛ㄣ傝繖鏄暣涓簭鍒楀寲鐨勬諱綋鎬濇兂銆?
鑰孲erializable鎺ュ彛灞炰簬鏀寔搴忓垪鍖栫殑涓涓帴鍙o紝鍙湁涓涓疄鐜板畠鐨勫璞″彲浠ヨ搴忓垪鍖栧伐鍏峰瓨鍌ㄥ拰鍥炲錛孲erializable鎺ュ彛娌℃湁瀹氫箟浠諱綍鎴愬憳錛屽彧鐢ㄦ潵琛ㄧず涓涓瘡鍙互琚簭鍒楀寲錛岃嫢璇ョ被鍙互搴忓垪鍖栵紝閭d箞瀹冪殑鎵鏈夊瓙綾婚兘鍙互銆?
涓嬮潰鏄叧浜庡簭鍒楀寲鐨勪竴涓疄渚嬶細
[b:a55efb5f91]紼嬪簭鍚嶇О錛歋erializationDemo.java
紼嬪簭涓婚錛氬疄鐜板璞$殑搴忓垪鍖栧拰鍙嶅簭鍒楀寲
紼嬪簭璇存槑錛氳紼嬪簭鐢卞疄渚嬪寲涓涓狹yClass綾葷殑瀵硅薄寮濮嬶紝璇ュ璞℃湁涓変釜瀹炰緥鍙橀噺錛岀被鍨嬪垎鍒負String銆乮nt銆乨ouble錛屾槸甯屾湜瀛樺偍鍜屾仮澶嶇殑淇℃伅銆俒/b:a55efb5f91]
[code:1:a55efb5f91]
import java.io.*;
public class SerializationDemo{
public static void main(String args[]){
//Object serialization
try{
MyClass object1=new MyClass("Hello",-7,2.7e10);
System.out.println("object1:"+object1);
FileOutputStream fos=new FileOutputStream("serial");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(object1);
oos.flush();
oos.close();
}
catch(Exception e){
System.out.println("Exception during serialization:"+e);
System.exit(0);
}
//Object deserialization
try{
MyClass object2;
FileInputStream fis=new FileInputStream("serial");
ObjectInputStream ois=new ObjectInputStream(fis);
object2=(MyClass)ois.readObject();
ois.close();
System.out.println("object2:"+object2);
}
catch(Exception e){
System.out.println("Exception during deserialization:"+e);
System.exit(0);
}
}
}
class MyClass implements Serializable{
String s;
int i;
double d;
public MyClass(String s,int i,double d){
this.s=s;
this.i=i;
this.d=d;
}
public String toString(){
return "s="+s+";i="+i+";d="+d;
}
}
[/code:1:a55efb5f91]
紼嬪簭榪愯緇撴灉錛歰bject1鍜宱bject2鐨勫疄渚嬪彉閲忔槸涓鏍風殑錛岃緭鍑哄涓嬶細[code:1:a55efb5f91]object1:s=Hello;i=-7;d=2.7E10
object2:s=Hello;i=-7;d=2.7E10[/code:1:a55efb5f91]
--------------------------------------------------------------------------------
Object serialization鐨勫畾涔夛細
Object serialization 鍏佽浣犲皢瀹炵幇浜哠erializable鎺ュ彛鐨勫璞¤漿鎹負瀛楄妭搴忓垪錛岃繖浜涘瓧鑺傚簭鍒楀彲浠ヨ瀹屽叏瀛樺偍浠ュ浠ュ悗閲嶆柊鐢熸垚鍘熸潵鐨勫璞°?nbsp;
serialization涓嶄絾鍙互鍦ㄦ湰鏈哄仛錛岃屼笖鍙互緇忕敱緗戠粶鎿嶄綔錛堝氨鏄尗灝忚鐨凴MI錛夈傝繖涓ソ澶勬槸寰堝ぇ鐨?---鍥犱負瀹冭嚜鍔ㄥ睆钄戒簡鎿嶄綔緋葷粺鐨勫樊寮傦紝瀛楄妭欏哄簭錛堢敤Unix涓嬬殑c寮鍙戣繃緗戠粶緙栫▼鐨勪漢搴旇鐭ラ亾榪欎釜姒傚康錛屾垜灝卞鏄撳湪榪欎笂闈㈢姱閿欙級絳夈傛瘮濡傦紝鍦╓indow騫沖彴鐢熸垚涓涓璞″茍搴忓垪鍖栦箣錛岀劧鍚庨氳繃緗戠粶浼犲埌涓鍙癠nix鏈哄櫒涓婏紝鐒跺悗鍙互鍦ㄨ繖鍙癠nix鏈哄櫒涓婃紜湴閲嶆瀯榪欎釜瀵硅薄銆?
Object serialization涓昏鐢ㄦ潵鏀寔2縐嶄富瑕佺殑鐗規э細
1銆侸ava鐨凴MI(remote method invocation).RMI鍏佽璞″湪鏈満涓婁竴鏍鋒搷浣滆繙紼嬫満鍣ㄤ笂鐨勫璞°傚綋鍙戦佹秷鎭粰榪滅▼瀵硅薄鏃訛紝灝遍渶瑕佺敤鍒皊erializaiton鏈哄埗鏉ュ彂閫佸弬鏁板拰鎺ユ敹榪斿洖鐩淬?
2銆侸ava鐨凧avaBeans. Bean鐨勭姸鎬佷俊鎭氬父鏄湪璁捐鏃墮厤緗殑銆侭ean鐨勭姸鎬佷俊鎭繀欏昏瀛樿搗鏉ワ紝浠ヤ究褰撶▼搴忚繍琛屾椂鑳芥仮澶嶈繖浜涚姸鎬佷俊鎭傝繖涔熼渶瑕乻erializaiton鏈哄埗銆?
浜屻傛寔涔呭寲
鎸佷箙鍖栧簲璇ユ槸鑻辨枃閲岀殑persistence.浣嗘槸Java璇█閲岀幇鍦ㄥ彧鏀寔lightweight persistence,灝辨槸杞婚噺綰ф寔涔呭寲錛岃繖鏄氳繃serialization鏈哄埗鏉ュ疄鐜扮殑銆?
persistence鏄寚涓涓璞$殑鐢熷懡鍛ㄦ湡涓嶇敱紼嬪簭鏄惁鎵ц鏉ュ喅瀹氾紝鍗充嬌鏄湪紼嬪簭緇堟鏃惰繖涓璞′篃瀛樺湪銆傚畠鎶婁竴涓猻erializable鐨勫璞″啓鍒扮鐩橈紙鏈満鎴栧叾浠栨満鍣ㄤ笂鐨勯潪RAM瀛樺偍鍣級錛屽茍鍦ㄧ▼搴忛噸鏂拌皟鐢ㄦ椂鍐嶈鍙栧璞″埌閫氬父鐨凴AM瀛樺偍鍣ㄣ?
涓轟粈涔堣Java鐨剆erialization鏈哄埗瀹炵幇鐨勬槸lightweight persistence?鍥犱負浣犲繀欏繪樉寮忕殑搴忓垪鍖栧拰鍙嶅簭鍒楀寲紼嬪簭閲岀殑瀵硅薄錛涜屼笉鏄洿鎺ョ敱涓涓叧閿瘝鏉ュ畾涔変竴涓璞℃槸搴忓垪鍖栫殑鐒跺悗鐢辯郴緇熷仛鐩稿簲鐨勫鐞嗐?nbsp; 濡傛灉浠ュ悗鐨凧ava鐗堟湰鍑虹幇涓涓柊鐨勫叧閿瓧鏉ュ疄鐜拌繖縐嶆満鍒訛紝姣斿灝辨槸persistence,濡傛灉鎴戠敤
persistence (String s="chinaunix")
鐒跺悗緋葷粺鑷姩鍋氫笂闈㈢▼搴忛噷鐨勯偅浜涘鐞嗭紝閭d箞Java灝卞疄鐜頒簡persistence.