精通有状态vs无状态(Stateful vs Stateless)

精通有状态vs无状态(Stateful vs Stateless)—Immutable模式之姐妹篇

Peter Wei

 

我相信有不少人还不明白有状态和无状态(Stateful and Stateless)的概念,那么我们今天就来谈谈有状态和无状态,一方面不断总结提高自我,另一方面兼扫盲。这是Immutable不变模式的姐妹篇,大家可以参照着读。

Immutable不变模式的分析blog: http://www.javaeye.com/topic/959751

 

基本概念:

有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。

 

无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象.不能保存数据,是不变类,是线程安全的。

 

代码更好理解:

 

/**

 * 有状态bean,state,user等属性,并且user有存偖功能,是可变的。

 *

 * @author Peter Wei

 *

 */

public class StatefulBean {

 

    public int state;

    // 由于多线程环境下,user是引用对象,是非线程安全的

    public User user;

 

    public int getState() {

       return state;

    }

 

    public void setState(int state) {

       this.state = state;

    }

 

    public User getUser() {

       return user;

    }

 

    public void setUser(User user) {

       this.user = user;

    }

}

 

/**

 * 无状态bean,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
状态分组过滤器(Stateful Packet Filter)是一种网络安全设备,它可以对网络数据包进行检查和过滤,以便防止一些常见的网络攻击,如拒绝服务攻击、端口扫描等。其工作原理是建立一个状态表,记录网络连接的状态,只允许与已经建立连接相关的数据包通过。 具体来说,有状态分组过滤器的工作流程如下: 1. 当一个数据包到达有状态分组过滤器时,首先会检查它的源地址、目的地址、协议类型、端口号等信息,以便确定它的类型和目的。 2. 如果这个数据包是一个新的连接请求(如TCP的SYN包),那么有状态分组过滤器会在状态表中创建一个新的连接状态,并保存源地址、目的地址、端口号等信息。 3. 如果这个数据包是一个连接建立请求(如TCP的SYN/ACK包),那么有状态分组过滤器会在状态表中修改连接状态,并保存源地址、目的地址、端口号等信息。 4. 如果这个数据包是一个连接终止请求(如TCP的FIN/ACK包),那么有状态分组过滤器会在状态表中删除连接状态。 5. 如果这个数据包是一个已建立连接的数据包,那么有状态分组过滤器会检查它的连接状态,并根据连接状态决定是否允许通过。 举个例子,假设有状态分组过滤器接收到一个TCP的SYN包,源地址为192.168.1.1,目的地址为192.168.2.1,端口号为80。那么有状态分组过滤器会在状态表中创建一个新的连接状态,保存源地址、目的地址、端口号等信息。如果后续的数据包符合这个连接状态,那么有状态分组过滤器会允许它通过,否则会拒绝它。 总之,有状态分组过滤器可以有效地提高网络安全性,减少恶意攻击和网络威胁的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值