当前位置:主页 > 高防服务器 >

云盾高防采集_ddos防御报价_原理

时间:2021-06-11 21:32来源:E度网络 作者:E度网络 点击:

云盾高防采集_ddos防御报价_原理

想象一下这个场景,您已经走出了springmvc,并且正在从不同的源(websocket、MQ或vanillantcpsocket)读取消息。您不能再依赖Spring自动将传入消息路由到正确的处理程序方法。这是较少经过实战考验的开发人员在他们的IDE中所要做的:privatestaticfinal ObjectMapper MAPPER=新建ObjectMapper();publicvoidhandleMessage(字节[]消息){//如何判断这是哪种类型的消息?}在这一点上,你必须想知道是否有更简单的方法。你不仅想知道你得到了什么类型的消息而不必手动读取字节,而且还需要弄清楚如何将每个消息发送到代码以处理特定的消息类型。让我们从第一个问题开始。反序列化到正确的对象如果您碰巧使用Jackson进行消息序列化,那么您很幸运,ddos防御sdk,尽管其他库也会提供解决方案。假设您的消息具有定义良好的类层次结构:publicabstractclassAbstractMessage{私有字符串消息ID;//想象一下messageId的getter和setter方法}然后假设我们通过网络发送的每个消息都是该基类的后代公共类HeartBeatMessageExtendsAbstractMessage{//耶,达,耶,达}公共类关闭消息扩展抽象消息{//更多的雅达-雅达-雅达}有了这个正常的消息类结构,让Jackson能够根据插入到序列化的JSON文本中的额外元数据自动确定要反序列化字段的对象类型。它实际上非常简单,可以用一行代码完成:@JsonTypeInfo(使用=JsonTypeInfo.Id.CLASS,包括=JsonTypeInfo.As.PROPERTY,属性="@class")将其添加到每个消息类的顶部,每次Jackson序列化一个对象时,它都会自动在序列化文本中嵌入一个名为"@class"的属性。在反序列化期间,Jackson将读取该属性并自动反序列化为正确的对象类型。现在我们可以反序列化了!privatestaticfinal ObjectMapper MAPPER=新建ObjectMapper();publicvoidhandleMessage(byte[]消息)抛出IOException、JsonParseException、JsonMappingException{AbstractMessage消息=MAPPER.readValue(信息,抽象消息.class);}动态操纵请注意,软件防御cc,即使使用新的注释和元数据,我们可以反序列化到的最具体的是抽象消息。这是Java的静态类型。如果在调试器中停在这里,您会注意到特定的对象类型实际上是在运行时解析的。简单的路由处理程序如下所示:if(HeartbeatMessage的消息实例){handleHartbeat((HeartbeatMessage)消息);}elseif(关闭消息的消息实例){停机信息(停机信息);}这两种消息类型都可以,但是10、20或50呢?让我们找到一些方法来路由消息,而不必求助于此。碰巧,谷歌的番石榴图书馆有一个事件总线,将为我们做重担!我不会在这里详细介绍EventBus,但请查看番石榴教程。只需将EventBus添加到我们的处理类中,并对一些方法进行注释:publicclassMessageHandler{privatestaticfinal ObjectMapper MAPPER=新建ObjectMapper();privatefinal EventBus EventBus=新建事件总线();publicinit(){事件总线寄存器(本);}publicvoidhandleMessage(byte[]消息)抛出IOException、JsonParseException、JsonMappingException{AbstractMessage消息=MAPPER.readValue(信息,ddos防御品牌,高防cdn排名,抽象消息.class);事件总线.post(消息);}@订阅PublicVoidHandleHartBeat(HeartbeatMessage消息){//在这里处理特定于心跳的消息}@订阅PublicVoidHandleShutdown(关闭消息消息){//在这里处理特定于关机的消息。}}在第13行,我们将反序列化的消息发布到EventBus。即使我们不知道具体的类型,总线也会解析它并寻找任何指定正确类型的处理程序。第16行和第21行的注释告诉EventBus哪些方法可用于将消息注入。最后,我抛出了一个init方法,但是您可以从任何地方向EventBus注册handling对象。通过上面的代码,vb怎么做ddos防御,我们不再需要手动解析消息类型,而是在后台进行路由。享受不用调试和维护不必编写的代码;)编码快乐!杰森

推荐文章
最近更新