前言
提前说明这是一篇小白总结,高手勿喷请绕行,写这篇总结的原因是发觉自己有时候确实眼高手低了,大道至简,花了很多时间去看索引、缓存、主从等等,等到出现实际问题的时候却发现自己磨磨蹭蹭写出的SQL语句居然有语法错误,看来还得稳扎稳打从基础入手,因为实际工作的用到的SQL并不多,现在把常用的几条总结一下,即使下次不能立马写出来,也能在这篇文章中的快速找到想要的。
本来并没有太注意到Blob这个类型,在游戏的开发中存储数据常常使用这个类型,这里的使用其实是“机械”的使用,因为应用程序和Mysql数据库之间的逻辑已经封装好了,我只要把对应的数据扔到接口里就行了,可是最近发生了点问题,所以决定深入研究一下Blob类型的操作方法。
问题是这样的,由于应用程序的一个逻辑错误,导致Mysql数据库中有一个Blob类型的字段的前几个字节被写入了错误的值,当然这个问题,我们可以通过应用程序处理,在逻辑中读出Blob字段的值,修改为正确值以后再写回到数据库中,可是这样有些麻烦,并且这些处理逻辑与业务无关。
为了更方便的解决问题,决定使用SQL语句直接修改数据库,将错误的数据恢复正常,因为之前没有直接用SQL修改过Blob类型的字段,所以多花了一点时间用来测试,现在把整个过程记录一下,方便下次直接操作。
在整个处理的过程中用到了查看、截取和拼接三种操作,为了让例子看起来更加精炼,我们把插入也测一下,然后创造出我们想要的精简后的数据,首先还是来看一下数据库版本。
说实话平时在Windows平台上开发,gdb调试用的并不是很多,但是一些在linux平台才会出现的BUG,或者在linux运行时宕机产生了core文件,这些还是需要使用gdb调试的,之前的文章《linux环境下服务器程序的查看与gdb调试》列举了常用的gdb命令,基本上调试一些core文件和简单bug使用这些命令足以了,但是新的需求总是会出现。
关于什么是函数调用堆栈在上篇文章《windows环境下C++代码打印函数堆栈调用情况》中已经介绍过了,简单的来说就是可以展现出函数之间的调用关系,上篇文章展示了如何在windows上打印出函数调用堆栈,其中用到了windows系统上的API,这些接口在linux上是无法使用的,因为工作的关系,也常常需要在linux的调试程序,所以本文介绍一下如何在linux上打印出C++程序的调用堆栈。