简单区分 Binary STEP FAST 协议的区别

Binary

简简单单的二进制协议,每个数据字段的域占用固定的字符大小

示例:

数据规则:四个字段,类型分别为int char[10] int char[20]

数据内容:10 aaa 5 bb

规则解读:int占4个字节,char[10]就是10个字节,所以上面这四个字段总共需要38个字节

详细数据:(正常中间是没有换行的,我这里中间换行主要是为了解析清除每个域的划分规则)

\x00\x00\x00\x0a

\x61\x61\x61\x20
\x20\x20\x20\x20
\x20\x20
        \x00\x00
\x00\x05
        \x62\x62
\x20\x20\x20\x20
\x20\x20\x20\x20
\x20\x20\x20\x20
\x20\x20\x20\x20
\x20\x20

STEP

STEP协议相比Binary就友好灵活很多,规则是域名(int类型)+等号+内容+分隔符(以ASCII编码的01作分隔符)

示例:有四个域,域名分别为8  12  23 9009 ,内容为10 aaa 5 bb

详细数据:(这里用<H>表示分隔符,真正的值为下方字符串转换成byte[])

8=10<H>12=aaa<H>23=5<H>9009=bb<H>

FAST

FAST协议其实是在STEP的基础上进一步进化的,比STEP协议进行一个数据压缩,从而暂用更少的空间,详细就不说了,具体看传送门:FAST 协议解析 (一) 一个最简单的FAST编解码例子_她叫我小渝的博客-CSDN博客_quickfast 程序

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果需要在 MyBatis 逆向查询中使用 `binary` 进行大小写区分,可以在 SQL 语句中使用 `binary` 函数将列名或参数转换成二进制格式,从而实现大小写区分。 比如,假设有一个表 `user`,其中有一个列 `username`,需要进行大小写区分的查询。可以使用以下 SQL 语句进行查询: ```sql SELECT * FROM user WHERE BINARY username = BINARY #{username} ``` 这里使用了两个 `BINARY` 函数将 `username` 和参数都转换成二进制格式,从而实现了大小写区分。 在 MyBatis Generator 中,可以通过在 `columnOverride` 标签中添加 `javaType` 属性指定该列对应的 Java 类型,并在该 Java 类型中添加一个方法,将字符串转换成二进制格式。例如: ```xml <table tableName="user"> <columnOverride column="username" javaType="String"> <property name="typeHandler" value="com.example.BinaryStringTypeHandler"/> </columnOverride> </table> ``` 这里通过设置 `typeHandler` 属性指定了一个自定义的类型处理器 `BinaryStringTypeHandler`,该类型处理器的代码如下: ```java public class BinaryStringTypeHandler extends BaseTypeHandler<String> { @Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, "BINARY " + parameter); } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getString(columnName); } @Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getString(columnIndex); } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getString(columnIndex); } } ``` 这里重写了 `setNonNullParameter` 方法,在设置参数时将字符串添加上 `BINARY` 前缀,从而实现了大小写区分。需要注意的是,该方法中的 `ps.setString(i, "BINARY " + parameter)` 语句可能要根据具体数据库的语法进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值