03 2023 档案
摘要:很多时候,当程序OOM或者其他异常情况时,我们需要搞清楚当时应用内部数据情况,所有某些时候我们需要查看当时内存镜像中某些成员变量的值。 比如查看当时内存实例中数据库账号,密码是否正确等等。 直接进入正题,我们首先搭建一个测试使用的springboot项目,除了基本模板代码外,剩余代码如下: 我们预期
阅读全文
摘要:tcp协议是最底层的,一般来说无需修改,直接使用。但是在某些场景下,直接使用会带来一些安全性的问题:比如物联网设备。 物联网设备需要经常的发送消息到服务器,如果直接使用标准TCP协议,攻击者在抓包后很容易获得服务器的端口,然后进行以下操作: 饱和攻击,将所有设备离线! 报文解析,通过对报文的处理来逆
阅读全文
摘要:公司做物联网项目, 后端采用java+netty开发, 端口如果直接暴露使之容易被扫描攻击。 故实现自定义TCP头, 这样可以在握手阶段就丢弃数据包,达到提高攻击门槛的目的。 在网上找了一圈,找到一个现成得, 原理如图: 可以自定义tcp封包,不满足要求得封包将会被抛弃不予处理,这样即使是进行攻击也
阅读全文
摘要:最近对接一个银行的项目,需要传一个地址,但是该地址id是取自于银行提供的银联卡跨行业务地区代码标准中的id 而这个标准中的地区id,和我们库里的不匹配,因为我们库里用的行政区域划分的 而且银行提供的还是个word文档,需要我手动解析去匹配。,艹蛋 过程不摆了,只能通过地名进行匹配,匹配过程艰辛啊,有
阅读全文
摘要:netty提供了高扩展,高可用的方案,让我们开发者节省了很多开发成本。 但是netty关于协议解析这块还需要手动的读取buffer, 麻烦不说,还不能摸鱼了。 后来在网上找到一套可以像json一样转换对象的工具,magic-byte 剩下的只需要定义协议实体,然后调用序列化方法就好啦,用起来不错,给
阅读全文
摘要:java中,字节数组转对象不外乎以下几种: 1. 使用原生的serilize 进行序列化读写 这个直接使用java内置的进行读写就行,但是不方便而且体积大冗余信息多。 2. 使用第三方将字节数组转为对象 第三方一般需要自己来实现序列化逻辑,或者对序列化流程进行标注。这里可选的框架一般是 magic-
阅读全文
摘要:公司有对接网络设备的需要 ,由于协议是自己定的。所以对象在序列化时也需要自己序列化。很麻烦,在网上搜索了一圈。 找到了一个框架,可以通过注解来申明序列化过程。用起来还是很简单的,但是使用过程中发现以下坑: 当序列化为字节时,`dynamicSizeOf`引用为0, 但是实际数组有3个数据项,并没有序
阅读全文
摘要:目前从事于物联网行业。 共享充电宝。 负责通讯相关。 当前设备在线量约50W 台。记录一下走得弯路。 方便大家借鉴。 文笔不太好,希望大家轻喷。 本文主要是从以下几个方面探讨: 1. 物联网方案选型 2. 通讯协议设计 3. 后台架构设计 4. 统计和监控 1.物联网方案选型 方案选型这一块其实蛮多
阅读全文
摘要:java字节协议和私有协议对接,序列化方式
阅读全文
摘要:java私有协议序列化,对象自定义转为数组,自定义物联网协议开发
阅读全文