2024年1月记录(水文遥测站、中心站)

本文讨论了水文遥测技术中的终端设备,以及在Netty中处理HTTP协议半包解析、粘包问题的方法,包括HttpObjectDecoder的使用。同时涉及MySQL的包最大值设置和避免恶意报文。还讨论了元数据配置和硬件检测的相关知识。
摘要由CSDN通过智能技术生成

1.水文遥测站、中心站

水文遥测终端|遥测终端机RTU|遥测数传仪|中小河流水文自动监测设备|水雨情自动测报设备-平升电子

2.netty解析半包粘包文章

Netty HTTP协议实现解析 - 简书

Netty源码,详解Http协议的数据包解码过程_netty httppostrequestdecoder.offer-CSDN博客

3.netty中http解析失败丢弃内容

io.netty.handler.codec.http.HttpObjectDecoder

Netty实现一个简单的Http服务器-CSDN博客

4.netty中解决半包的思路

参考代码片段

io.netty.handler.codec.DelimiterBasedFrameDecoder#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf) 

 先用indexof()方法找到结束符,indexof()类似预处理,先不读取数据,找到下一个结束符,在读取到下一个结束符的位置。

未处理的包(ByteBuf)不能先读取,因为最后未读完的包(ByteBuf)要缓存起来,供下一次接收包合并包。代码里如果先读取ByteBuf后,下一次就无法合并了,所以要先预处理看能读到哪里。合并处理粘包问题在父类ByteToMessageDecoder中已经处理了。

如果在encode方法中监测到半包,什么都不做,直接返回就可以了。因为encode方法中入参的ByteBuf已经在ByteToMessageDecoder缓存起来了。

类似HttpObjectDecoder中遇到半包问题也是类似的处理方式。

HttpObjectDecoder处理消息头的片段

 从红框中看出没找到换行符的情况下,就直接返回了。

当然,不会一直这样半包合并下去,可能会碰到恶意报文。这样就要设置一些报文最大长度的参数。超出限制就报异常。

处理异常可以选择丢弃当前报文和缓存。HttpObjectDecoder就调用了

buffer.skipBytes(buffer.readableBytes())方法丢弃当前buffer缓存。并发送给客户端错误信息。

注释说明当读取不完整的frame时,不要改变readIdx 

5.mysql设置包最大值

set global max_allowed_packet = 100*1024*1024;
show VARIABLES like '%max_allowed_packet%'; 

6.MySQL参数log_bin_trust_function_creators介绍

 set global log_bin_trust_function_creators=TRUE; 

7.指令周期

https://blog.51cto.com/heliotopekxy/6344027

8.和代码耦合度高的元数据可配置在枚举类,耦合度低的可配置在数据库

9.bios怎么检测硬件 bios如何自检硬件

https://blog.51cto.com/u_16099164/7899369

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值