当前位置: 首页 > wzjs >正文

网络策划书范文新的seo网站优化排名 网站

网络策划书范文,新的seo网站优化排名 网站,公司的做网站,网站开发开题报告引言背景 检索平台,使用长链接的方式与外部系统进行交互; 因平台使用的的自定义二进制交互协议,因此需要针对每个接口请求与响应都要进行编解码, 因此需要一种针对不同消息的分发处理 方案一 注解 反射 示例: /** * 消息类型注解 */ Retenti…
背景

检索平台,使用长链接的方式与外部系统进行交互; 因平台使用的的自定义二进制交互协议,因此需要针对每个接口请求与响应都要进行编解码, 因此需要一种针对不同消息的分发处理

方案一 注解 + 反射
示例:
/**
* 消息类型注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MessageHandler {//类型,平台使用符号CMD, 为了兼容不同类型,相同处理方式逻辑,这里可设置为数组String type();// 优先级int priority() default 0;
}/**
* 基础处理器
*/
public abstract class AbstractMessageHandler {// 处理消息的抽象方法public abstract void handle(Object message);
}/**
* 具体处理器示例
*/
@MessageHandler(type = "USER")
public class UserMessageHandler extends AbstractMessageHandler {@Overridepublic void handle(Object message) {// 处理用户消息}
}@MessageHandler(type = "ORDER")
public class OrderMessageHandler extends AbstractMessageHandler {@Overridepublic void handle(Object message) {// 处理订单消息}
}/*** 消息分发处理器*/
public class MessageDispatchHandler extends ChannelInboundHandlerAdapter {private final Map<String, AbstractMessageHandler> handlerMap = new HashMap<>();public MessageDispatchHandler() {// 初始化时扫描并注册所有处理器initHandlers();}private void initHandlers() {// 扫描指定包下的所有类Reflections reflections = new Reflections("com.your.package");Set<Class<?>> handlers = reflections.getTypesAnnotatedWith(MessageHandler.class);for (Class<?> handlerClass : handlers) {MessageHandler annotation = handlerClass.getAnnotation(MessageHandler.class);try {AbstractMessageHandler handler = (AbstractMessageHandler) handlerClass.newInstance();handlerMap.put(annotation.type(), handler);} catch (Exception e) {// 异常处理}}}@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) {// 获取消息类型String type = getMessageType(msg);AbstractMessageHandler handler = handlerMap.get(type);if (handler != null) {handler.handle(msg);} else {// 处理未知类型消息ctx.fireChannelRead(msg);}}
}/**
* 异常处理
*/
public class MessageDispatchHandler extends ChannelInboundHandlerAdapter {@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {// 统一的异常处理if (cause instanceof MessageHandleException) {// 处理特定异常} else {// 处理其他异常}}
}/**
* 处理器生命周期管理
*/
public abstract class AbstractMessageHandler {public void init() {// 初始化逻辑}public void destroy() {// 销毁逻辑}public abstract void handle(Object message);
}

优势:

  1. 更容易实现动态的消息类型处理
  2. 可以更方便地进行统一的消息处理前后的拦截
  3. 便于实现消息处理的统计、监控等横切功能

问题:

  1. 反射可能带来性能开销
  2. 类型判断的逻辑集中在一处,可能会变得复杂
  3. 不是标准的 Netty Pipeline 模式,不能像 Netty Pipeline 那样灵活地调整处理顺序
方案二、Netty责任链
// 配置 Pipeline
public void initChannel(SocketChannel ch) {ChannelPipeline pipeline = ch.pipeline();pipeline.addLast(new StringDecoder());pipeline.addLast(new UserMessageHandler());pipeline.addLast(new OrderMessageHandler());pipeline.addLast(new SystemMessageHandler());
}// 各个 Handler 只处理自己关心的消息类型
public class UserMessageHandler extends SimpleChannelInboundHandler<UserMessage> {@Overrideprotected void channelRead0(ChannelHandlerContext ctx, UserMessage msg) {// 处理用户消息}
}public class OrderMessageHandler extends SimpleChannelInboundHandler<OrderMessage> {@Overrideprotected void channelRead0(ChannelHandlerContext ctx, OrderMessage msg) {// 处理订单消息}
}

优势:

  1. 代码结构更清晰 ,每个 Handler 职责单一,只处理特定类型的消息,处理流程清晰可见,易于理解和维护
  2. 更灵活的消息流转,可以动态决定是否继续传递消息,支持双向传递(Inbound 和 Outbound)
  3. 线程安全,Netty 的 Pipeline 实现保证了处理器的线程安全
  4. 避免了手动同步带来的复杂性
  5. 性能更优,Netty 的 Pipeline 实现经过优化

总结

从性能角度来说
  1. netty责任链模式性能更好
  2. 不需要运行时反射
  3. 类型检查更高效
  4. 内存占用更小

但是,这并不意味着反射注解就一定不好,在以下场景中,反射注解方案可能更适合:

  1. 需要非常灵活的消息处理配置
  2. 需要动态加载/卸载处理器
  3. 处理器的执行顺序需要频繁调整
  4. 业务逻辑比网络IO更重,反射带来的性能影响可以忽略

最终的选择应该基于性能要求、业务复杂度、扩展性需求、维护成本;如果没有特殊要求,建议使用原生的Netty原生的责任链模式,因为他不仅性能更好,而且与Netty的整体的设计理念更加契合

http://www.dtcms.com/wzjs/69928.html

相关文章:

  • 做网站外包最牛的公司数据网站
  • 阿里云虚拟主机做网站南通企业网站制作
  • 建站行业消失了吗环球网
  • 河南网站seo费用百度不能搜的十大禁词
  • 返利导购网站建设需求文档如何在百度上做推广
  • 网站地址格式国家中医药管理局
  • wordpress文件类型不支持太原seo快速排名怎么样
  • 关于政府网站建设的情况说明新闻头条今日要闻军事
  • 全网营销型网站 新闻福州短视频seo方法
  • 网站建设怎么寻找客户关键词歌曲歌词
  • 做短视频的网站收益外贸网站seo
  • 电商网站的二级菜单怎么做优化大师官方网站
  • 网站代理浏览器7网页生成
  • jsp做的个人网站301313龙虎榜
  • 网站的开发方法怎么制作公司网站
  • 网站开发需解决的难题搜索引擎优化行业
  • 如何做美食的视频网站成免费crm软件有哪些优点
  • 网站建设报价套餐厦门关键词排名seo
  • 有哪些学校的网站做的好seo实战密码第三版pdf下载
  • 快站app官网下载企业课程培训
  • asp.net 网站数据库网络销售怎么样
  • 可以做3d电影网站网站运营及推广方案
  • 设计房子的软件appseo友情链接
  • 政府门户建设seo推广培训
  • 广南网站建设百度怎么发帖做推广
  • 红河州网站建设百度客服转人工
  • 温州网站开发培训seo网站优化培训怎么做
  • 网站建设好了怎么进行推广谷歌sem推广
  • 安庆建设机械网站互联网广告推广公司
  • 青海政府网站建设公司seo排名优化软件