浅析Java web程序之客户端和服务器端交互原理
浅析Java web程序之客户端和服务器端交互原理
近来一直在思考一个疑问,为什么在用struts框架开发的时候FormBean都须要序列化,即实现Java.io.Serializable接口,本着勤学好问的精神我Google了下对象序列化方面的文章,虽然大体明白了如何做,但是还是没有搞清楚为什么要这样做;结尾我想处理一个疑问要找疑问的根源和本质,于是从web程序客户端和服务器端交互的原理入手,终于找到了我要的答案。
1. 对象序列化是什么东东?
基本地说,Java对象列化就是要把内存中的Java对象保存下来(持久化),以便可以在网络上传输或今后继续运用这个对象中的数据。序列化的流程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。序列化分为两大部分:序列化和反序列化。序列化是这个流程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。
2. 协议
a. TCP/IP整体构架概述
TCP/IP协议并不完全契合 OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、示意层和运用 层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
i. 运用 层:运用 程序间沟通的层,如超文本传送协议(HTTP)、基本电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
ii. 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包参加传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
iii. 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检验能无法 被正确接收),如网际协议(IP)。
iv. 网络接口层:对实际的网络媒体的维护,定义如何 运用实际网络(如Ethernet、Serial Line等)来传送数据。
b. HTTP协议推荐:
i. HTTP是一种超文本传送协议(HyperText Transfer Protocol),是一套计算机在网络中通信的一种准则。在TCP/IP体系结构中
相关文档:
package com.sy.grasp;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
......
最近一直在写C#的UDP通讯方面的程序,抽空把以前写的Java的UDP通讯程序拿出来做了一些升级的修改,把以前一些不足的地方做了改动,同时使用exe4j软件编译成exe文件,软件效果如下所示:
同时把代码贴出来,以供大家指点一二。
Main.java(主函数)
/*
* To change this template, choose Tools | Templates
......
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.sql.Timestamp;
import java.util.Arrays;
public class SmallToBig {
private String newFileName;// 新文件名字
private String filterName;// 过滤规则名字
  ......
Lombok是一个开源项目,可以用来消除Java代码的冗长
详细介绍参看http://www.ibm.com/developerworks/opensource/library/os-lombok/index.html
下面介绍Lombok如何消除Java代码的冗长。
1. 首先去http://projectlombok.org/. 下载lombok.jar 包
2. & ......
动态内存分配
创建和维护动态数据结构要求进行动态内存分配,即程序能够在执行时获得更多的内存空间来放新结点,并在不需要这些内存时释放他们。
数据列表可以用数据进行存储,但是用链表存储有几个好处。在数据结构要表示的数据元素的数目无法预先确定的情况下,链表能够提供更合理的空间分配。链表是动态的,所以其长度 ......