git

https://github.com/sea-boat/mysql-protocol

概况

ResultsetRow包属于服务端返回ResultSet时的其中一部分包,用于描述结果集的行记录。

mysql通信报文结构

类型 名字 描述
int<3> payload长度 按照the least significant byte first存储,3个字节的payload和1个字节的序列号组合成报文头
int<1> 序列号
string payload 报文体,长度即为前面指定的payload长度

ResultsetRow包

Payload

if(NULL){0xfb
}else{Protocol::LengthEncodedString
}

更多详情 : http://dev.mysql.com/doc/internals/en/com-query-response.html#text-resultset

ResultsetRow包类

/*** * <pre><b>resultset row packet.</b></pre>* @author * <pre>seaboat</pre>* <pre><b>email: </b>849586227@qq.com</pre>* <pre><b>blog: </b>http://blog.csdn.net/wangyangzhizhou</pre>* @version 1.0* @see http://dev.mysql.com/doc/internals/en/com-query-response.html#text-resultset*/
public class ResultsetRowPacket extends MySQLPacket {private static final byte NULL_MARK = (byte) 251;public int columnCount;public List<byte[]> columnValues;public ResultsetRowPacket() {}public ResultsetRowPacket(int columnCount) {this.columnCount = columnCount;}@Overridepublic void read(byte[] data) {MySQLMessage mm = new MySQLMessage(data);packetLength = mm.readUB3();packetId = mm.read();for (int i = 0; i < columnCount; i++) {columnValues.add(mm.readBytesWithLength());}}@Overridepublic void write(ByteBuffer buffer) {BufferUtil.writeUB3(buffer, calcPacketSize());buffer.put(packetId);for (int i = 0; i < columnCount; i++) {byte[] fv = columnValues.get(i);if (fv == null) {buffer.put(NULL_MARK);} else {BufferUtil.writeLength(buffer, fv.length);buffer.put(fv);}}}@Overridepublic int calcPacketSize() {int size = 0;for (int i = 0; i < columnCount; i++) {byte[] v = columnValues.get(i);size += (v == null || v.length == 0) ? 1 : BufferUtil.getLength(v);}return size;}@Overrideprotected String getPacketInfo() {return "MySQL Resultset Row Packet";}}

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

mysql 协议的ResultsetRow包及解析相关推荐

  1. mysql eof_详细介绍mysql 协议的EOF包及解析

    git https://github.com/sea-boat/mysql-protocol 概况 mysql的EOF包用于标明查询结果的结尾. mysql通信报文结构类型名字描述int<3&g ...

  2. mysql 协议的query包及解析

    git https://github.com/sea-boat/mysql-protocol 概况 mysql客户端可以用query包向服务端发送一个基于文本查询. mysql通信报文结构 类型 名字 ...

  3. mysql 协议的OK包及解析

    git https://github.com/sea-boat/mysql-protocol 概况 mysql客户端与mysql服务端交互过程中,当服务端完成客户端的某命令时则会返回OK包. mysq ...

  4. netty实现mysql协议_基于Netty模拟解析Binlog

    前言 最近一段时间一直再看mysql binlog相关的内容,也整理了几篇相关的文章,对mysql的事件以及通讯协议在理论上有了一个大概的了解,但是缺少实战:本文的目的就是从实战出发,了解binlog ...

  5. MySQL协议解析及C/C++代码实现

    MySQL 常用于许多知名网站,包括 Facebook.Google.Twitter 和 YouTube等等.它于 1995 年首次发布.MySQL 是用 C 和 C++ 编写的. MySQL 适用于 ...

  6. tshark 解析pcap中带TLS协议的数据包

    tshark的简单用法参考:tshark解析本地pcap数据包提取五元组{src_ip,src_port,proto,dst_ip,dst_port}与时间戳,包长 详细用法:官方DOC 比如提取一个 ...

  7. java实现FTP协议:wireshark抓包解析

    本节我们看看ftp协议的数据包格式,同时使用代码加以实现.首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示 ...

  8. 怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!

    写在前面 最近,在开发一个分库分表中间件,由于功能需求,需要分析MySQL协议,发现网上对于MySQL协议分析的文章大部分都过时了,原因是分析的MySQL版本太低了.怎么办呢?于是乎,我便硬着头皮开始 ...

  9. mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

最新文章

  1. Configuring the Java Virtual Manager (JVM)
  2. JDK8-lambda表达式四种forEach性能对比
  3. 自网站服务器,教你如何配置自的网站服务器.doc
  4. java jni日志输出_java打印Jni层log
  5. 如何在Mac计算机上轻松查找和删除类似照片
  6. 0924html小测答案
  7. 【Docker】Docker安装telnet
  8. 计算机专业简述,简述计算机专业毕业论文完整版.doc
  9. .net 访问共享文件夹
  10. 目标检测算法之YOLOV5
  11. 柳絮飘,往事忆:前言
  12. Vector For All (slight return)
  13. # C语言使用树设计族谱
  14. 云平台的云计算安全参数详解
  15. 第11届极客大挑战writeup
  16. 小程序设置边框border
  17. 智能扫地机器人好用吗?行业排名TOP5扫地机器人推荐
  18. 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)
  19. Oracle 中经常遇到的一些问题
  20. 怎样基于power supply class编写PSY driver

热门文章

  1. 突发!ASML断供中芯国际
  2. DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!
  3. 一文读懂你该了解的5G知识:现在别买5G手机
  4. 前沿|Google AI提新型神经网络,对神经元进行高精度自动重建
  5. 百度谷歌等联合推出机器学习基准 加速AI软硬件发展
  6. 再见,谷歌!再见,算法!
  7. 漫画 | 在中国,程序媛到底有多难?
  8. 新年福利 | “社区之星”(社区核心贡献者)成长故事征集
  9. 融资 2000 万美元后,他竟将核心代码全开源,这……能行吗?
  10. @程序员,什么键盘最耐用?| 每日趣闻