1、udp高速接收数据Java环形缓存数据基于地址传递操作导致存储跟不上udp接收到数据放入环形缓存的问题

本文讲述了作者在实现UDP高速接收服务时遇到的问题,即使用Java的ArrayBlockingQueue作为环形缓存时出现丢包现象。经过分析,发现是内存操作速度跟不上磁盘存取速度。在尝试优化过程中,了解到需要自定义环形队列,并在插入数据时采用对象克隆策略,最终解决了丢包问题。
摘要由CSDN通过智能技术生成

1、udp高速接收数据Java环形缓存数据基于地址传递操作导致存储跟不上udp接收到数据放入环形缓存的问题

技术有限,有不对的地方大家尽管喷,但是喷完记得讲一下更好的方案或者指出错误之处并给予解答,谢谢!!!
按照公司需求要求写一个udp服务端用于接收第三方的udp客户端传来的数据并进行处理,其中很重要一环就是用到了环形队列作为一个数据的中转(其实最开始我也是懵逼,就连环形队列是个啥都不清楚,之前也没有用过啊!)老板给我发了一些资料,然而我没看懂…于是想到自己搜啊!便兴致勃勃的上网搜索BlackingQueue发现出现一大堆,而且还是Java本身就带有的类,这不和map集合这些一样用吗,这么简单老板居然还要我专门去看看(事实证明膨胀没有好下场)
于是随便找了一个,嗯就决定是你了ArrayBlockingQueue,直接拿到我的udp服务端用,然后自己又做了一个存文件的服务,其中也有一个环形队列和udp那边用的是同一个,udp服务端负责存入环形队列,文件服务负责从里面取出来并写入磁盘。好任务做完了,开启摸鱼模式!!!
结果两天后老板叫我测试…哎!一把辛酸泪…说起来就菊花痛…算了就不说了,扯正事吧!
测试我写了一个模拟第三方udp发送数据并带上版本号,为了方便观察我存文件就直接存了一个版本号
版本号在文件中的显示
纳尼!丢包怎么这么严重(再次说明udp客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值