Don't Stop


  • 首页

  • 标签

  • 分类

  • 关于

实现自己的数据库驱动——MySQL协议OK/Error包解析(五)

发表于 2018-10-27 | 分类于 实现自己的数据库驱动

前言

OK/Error Packet是由Server端向Client发送的请求回应。所以这篇主要来解析一下这两个Packet,以及解释一下为什么Wireshark抓到的包与网上的格式有所差别。

阅读全文 »

实现自己的数据库驱动——MySQL协议Auth Packet解析(四)

发表于 2018-10-27 | 分类于 实现自己的数据库驱动

前言

上一篇简单介绍了HandShake包的数据格式以及利用WireShark如何去分析。这篇要介绍的是Auth Packet,即客户端认证包的数据格式。

Auth Packet主要是发送用户的信息、密码、Schema等,其中密码需要HandShake中Salt。所以在发送Auth Packet,需要先解析出Salt,然后对密码进行加密,之后再一起打包发送。

阅读全文 »

实现自己的数据库驱动——MySQL协议Handshake解析(三)

发表于 2018-10-26 | 分类于 实现自己的数据库驱动

前言

在前一篇的博客中,当客户端发送SQL请求到Server端时,产生了一系列Packet。第一个Packet就是本篇要介绍的HandShake。不了解的可以点击上篇博客。

阅读全文 »

实现自己的数据库驱动——WireShark分析MySQL网络协议中的数据包(二)

发表于 2018-10-26 | 分类于 实现自己的数据库驱动

前言

要编写自己的数据库驱动,必须要清楚MySQL协议中各种传输包的数据格式。这里推荐的是WireShark工具,WireShark可以帮我们监听服务器上传输的数据包,上手比较快,而且界面功能都比较友好,最主要是开源的,所以可以免费放心的使用。

要注意的是,如果客户端和数据库服务是在同一台电脑的,会导致WireShark捕获不到数据。因为两个源地址和目的地址是一样的。互相访问时流量并没有经过网卡,WireShark在windows系统上默认使用的是WinPcap来抓包的,用它监控网络的话只能看到经过网卡的流量,看不到访问Localhost的流量。

下图就是WireShark的分析界面了,信息还是比较全面的。

你想输入的替代文字

阅读全文 »

实现自己的数据库驱动——MySQL网络协议(一)

发表于 2018-10-26 | 分类于 实现自己的数据库驱动

前言

在上一篇博客中,为了解释ThreadLocal的应用场景,所以提到了JDBC中的connection。用过的朋友们一定熟悉下面的代码。具体就是先获取一个connnection,然后在connection中进行CURD。或者是基于ORM框架如hibernate、Mybatis,但其实他们的底层都是基于mysql-connector-java.jar 。

你想输入的替代文字

很多时候我们并不清楚程序是如何和数据库进行交互的,比如简单的查询命令,程序是如何从MySQL中获取的呢?这个就是我这篇博客的主题,我会简单解释一下MySQL的网络通信协议,以及所需的技术栈。

原本想在网上找一下有没有类似的轮子,发现多数是将jdbc重新分装一些,本质使用的还是Java中实现好的connector。所以在后续的博客中根据协议去实现自己的connector.jar

阅读全文 »

ThreadLocal 源码简析

发表于 2018-10-16 | 分类于 JDK源码

前言

今天看到推送的文章中有篇是关于的ThreadLocal,虽然之前有过了解,但是没有结合其应用场景,所以一直理解的不深刻。不深刻在于,我不理解为什么要为一个线程维护一个变量副本!

熟悉数据库连接的朋友们都知道为了提高使用效率会使用连接池,而为了线程安全的问题还要使用ThreadLocal。下面以JDBC中的connection做个简单解释。

阅读全文 »

Service Mesh:下一代微服务

发表于 2018-09-21 | 分类于 微服务

前言

Service Mesh:下一代微服务。 原文链接,这篇是我觉得把Service Mesh讲的最清楚的文章了。内容为QCon 2017年上海会议上的演讲实录。为了防止原链接的失效,还保存一份word。点击下载 提取码: tz6w。

阅读全文 »

JDK1.8 Lambda/Stream

发表于 2018-09-21 | 分类于 Java

前言

Oracle的发布周期缩短,即以后每半年一个版本,JDK11马上都要发布出来,但现在实验室和生成环境使用的还是JDK8。JDK8新特性听到最多的就是Lambda和Stream了,为了更好的了解后续版本的特性,我们先来了解学习一下JDK8中的这两个特性。

阅读全文 »

月记

发表于 2018-09-20 | 分类于 随记

前言

距离上一篇的月记刚好是一个月,回顾一下这个月写的博客,可以发现学习状态是不错的。Zookeeper、dubbo以及分布式的都有了一个全新的认识,抽空写了一个简单的RPC框架,虽说整体上还有很多东西需要改进,但至少实现了最简单的远程服务以及服务动态注册和发现,对netty、反射、动态代理有了实践性的理解,我觉得是非常不错的。

论文方面在github上也找到一份java实现的Word2vec,不过实验出来的效果并不好,可能是语料不够吧,就先这样吧,这方面实在没有兴趣去弄。

阅读全文 »

实现自己的RPC框架(三)

发表于 2018-09-05 | 分类于 微服务

前言

第三版中往框架加入Netty实现通信框架,Zookeeper实现服务的注册。Netty可以帮助我们快速完成NIO的通信编程,Zookeeper则可以可以实现服务的注册以及发现。代码上传至github,链接.

阅读全文 »
1…789…11
JinTx

JinTx

104 日志
26 分类
65 标签
github E-Mail CSND
© 2020 JinTx
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4