Java Serialization transient
1. ʲôÊÇSerialization?
´®Ðл¯(Serialization)ÊǼÆËã»ú¿ÆÑ§ÖеÄÒ»¸ö¸ÅÄËüÊÇÖ¸½«¶ÔÏó´æ´¢µ½½éÖÊ£¨ÈçÎļþ¡¢ÄÚÔÚ»º³åÇøµÈ£©ÖлòÊÇÒÔ¶þ½øÖÆ·½Ê½Í¨¹ýÍøÂç´«Êä¡£Ö®ºó ¿ÉÒÔͨ¹ý·´´®Ðл¯´ÓÕâЩÁ¬ÐøµÄλÊý¾ÝÖØÐ¹¹½¨Ò»¸öÓëÔʼ¶ÔÏó״̬ÏàͬµÄ¶ÔÏó£¬Òò´ËÔÚÌØ¶¨Çé¿öÏÂÒ²¿ÉÒÔ˵Êǵõ½Ò»¸ö¸±±¾£¬µ«²¢²»ÊÇËùÓÐÇé¿ö¶¼ÕâÑù¡£
JavaÓÐSerialization APIΪ¿ª·¢ÕßÌṩÁËÒ»ÖÖ±ê×¼µÄ»úÖÆÀ´´®Ðл¯Àà¡£
2. ΪʲôҪSerilzation?
ÌØ±ðµØ£¬´®Ðл¯Ö÷ÒªÓÐÈýÖÖÓÃ;£º
1£©×÷ΪһÖֳ־û¯»úÖÆ
Èç¹ûʹÓõÄÊÇFileOutputStreamÁ÷µÄ·½Ê½£¬ÔòÊý¾Ý½«±»×Ô¶¯µØÐ´ÈëÎļþÖУ¬
2£©×÷ΪһÖÖ¸´ÖÆ»úÖÆ
Èç¹ûʹÓõÄÊÇByteArrayOutputStreamÁ÷µÄ·½Ê½£¬Êý¾Ý½«Ð´ÈëÄÚ´æÖеÄ×Ö½ÚÊý×éÖС£¸Ã×Ö½ÚÊý×é¿ÉÒÔÓÃÀ´´´½¨³õʼ¶ÔÏóµÄ¸±±¾£¬
3£©×÷ΪһÖÖͨÐÅ»úÖÆ
Èç¹ûÊÇʹÓÃÌ×½Ó×Ö£¨Socket£©Á÷µÄ·½Ê½£¬ÔòÊý¾Ý×Ô¶¯µØÍ¨¹ýÍøÂçÁ¬½Ó´«ÊäÒ»ÁíÒ»¸ö¶Ëµã£¬²¢ÓÉÕâ¸ö¶ËµãÉϵijÌÐòÀ´¾ö¶¨×öʲô¡£
3. SerializationµÄ»ù±¾Ó÷¨£ºÄ¬ÈÏ»úÖÆ
½«Òª´®Ðл¯µÄÀà±ØÐëʵÏÖjava.io.Serializable½Ó¿Ú£¬»òÕßÊǼ̳ÐʵÏÖÁ˸ýӿڵÄÀࡣȻºóͨ¹ýjava.io.ObjectOutputStreamÀàÀ´ÊµÏֳ־û¯£¬Èç¹ûÓñ£´æµ½ÎļþÉÏ»¹ÐèÒªÓõ½java.io.FileOutputStreamÀà¡£ÒòΪObjectOutputStream±»ÈÏΪÊÇjava.io°üÖеĸ߼¶ÀàËùÒÔ¿ÉÓÃËüÀ´°ü×°µÍ¼¶µÄÀàFileOutputStream¡£Ôڳ־û¯¹ý³ÌÖе÷ÓõÄÒ»¸ö·½·¨ÊÇObjectOutputStream¶ÔÏóµÄwriteObject(obj)·½·¨¡£
µ±Òª´ÓÎļþÖлָ´¶ÔÏóʱ£¬ÔòÊÇʹÓÃjava.io.OjbectInputStreamÓëFileInputStreamÀ࣬µ÷ÓÃÒ»·½·¨ÊÇObjectInputStream¶ÔÏóµÄreadObject()·½·¨¡£
ʾÀý1£º
/*¶¨ÒåÒ»¸öʵÏÖÁËSerializable½Ó¿ÚµÄÀࣺCat*/
import java.io.*;
public class Cat implements Serializable {
private String name;
public Cat () {
this.name = "new cat";
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
/*½«CatÀàµÄ¶ÔÏó´®Ðл¯Óë·´´®Ðл¯*/
import java.io.*;
public class CatDemo {
public st
Ïà¹ØÎĵµ£º
JavaÓïÑÔµÄ26¸öϸ½Ú[×ªÔØ]
Java×÷ΪһÃÅÓÅÐãµÄÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔ,ÕýÔÚ±»Ô½À´Ô½¶àµÄÈËʹÓᣱ¾ÎÄÊÔͼÁгö×÷ÕßÔÚʵ¼Ê¿ª·¢ÖÐÅöµ½µÄһЩJavaÓïÑÔµÄÈÝÒ×±»È˺öÊÓµÄϸ½Ú,Ï£ÍûÄܸøÕýÔÚѧϰJavaÓïÑÔµÄÈËÓÐËù°ïÖú¡£
1£¬Î»ÒÆÔËËãÔ½½çÔõô´¦Àí
¿¼²ìÏÂÃæµÄ´úÂëÊä³ö½á¹ûÊǶàÉÙ?
int a=5;
......
×î½üÒª¸Äдһ¸öºËÐļÓÃÜÈÏÖ¤À࣬´ÓC#¸Äд³ÉJava¡£
·¢ÏÖÔÚµ÷ÊÔʱ£¬¼ÓÃܵÄÊý¾ÝÎÞÂÛÈçºÎÒ²¶Ô²»ÉÏ¡£
¾¹ý¸ú×Ù£¬·¢ÏÖÎÊÌâ³öÔÚC#ºÍJava byteÀàÐ͵ÄÇø±ðÉÏ£ºÔÚC#Àï byteÀàÐÍÊÇÎÞ·ûºÅµÄ£¬¶øJavaÀïÊÇÓзûºÅµÄ£¬ËùÒÔC#ÀïµÄ129µ½JavaÀï¾Í³ÉÁ˸ºÊý¡£
·¢ÏÖÁËÎÊÌ⣬½â¾ö¾Í±È½ÏÈÝÒ×ÁË£¬Õë¶ÔJavaµÄbyte£¬²ÉÓÃIntÀ´½øÐд洢¡£
ͨ¹ýÈçÏ´ú ......
#include <iostream>
using namespace std;
class Base {
public:
virtual void fn(int x) {
cout << "In Base class, int x = " << x << endl;
}
};
class SubClass : public Base {
public:
// º¯ÊýµÄÖØÔØ,ÕâÑùµÄÖØÔØ·½Ê½,ÔÚJavaÖÐÄÜÐÐ,ÔÚC/C++ÖÐÈ´²»ÐÐ
virt ......
ÔÚ²©¿ÍÔ°ÉÏ¿´µ½ÕâÑùµÄ´úÂ룬°ÑËü´ò°ü³ÉÒ»¸öexeÎļþ
public class Test
{
public static void main(String[] args)
{
String str="C:\\Program Files\\Tencent\\TM2009\\Bin\\TM.exe";
......
ÔÚJSPÀ»ñÈ¡¿Í»§¶ËµÄIPµØÖ·µÄ·½·¨ÊÇ£ºrequest.getRemoteAddr£¨£©£¬ÕâÖÖ·½·¨Ôڴ󲿷ÖÇé¿ö϶¼ÊÇÓÐЧµÄ¡£µ«ÊÇÔÚͨ¹ýÁËApache£¬SquidµÈ·´Ïò´úÀíÈí¼þ¾Í²»ÄÜ»ñÈ¡µ½¿Í»§¶ËµÄÕæÊµIPµØÖ·ÁË¡£
¡¡¡¡
Tag£ºJava ¿Í»§¶Ë ÕæÊµIPµØÖ·
ÔÚJSPÀ»ñÈ¡¿Í»§¶ËµÄIPµØÖ·µÄ·½·¨ÊÇ£ºrequest.getRemoteAddr£¨£©£¬ÕâÖÖ·½·¨Ôڴ󲿷ÖÇé¿ ......