2017年1月9日
摘要: 本文将介绍闪回原理,给出笔者的实战经验,并对现存的闪回工具作比较。 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用 阅读全文
posted @ 2017-01-09 14:31 dfcao 阅读(5314) 评论(2) 推荐(6) 编辑
  2016年12月9日
摘要: 基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了。假如这还是线上环境核心业务数据,那这事就闹大了。误操作后,能快速回滚数据是非常重要的。 binlog2sql快速回滚 首先,确认你的MySQL s 阅读全文
posted @ 2016-12-09 08:49 dfcao 阅读(7144) 评论(8) 推荐(10) 编辑
  2015年12月27日
摘要: mysqldb是Python操作MySQL数据库的一个常用包。但在使用过程中,我认为用起来还不够简便。为此,我在mysqldb的基础上封装了一个Python类LightMysql。 阅读全文
posted @ 2015-12-27 22:09 dfcao 阅读(7595) 评论(1) 推荐(1) 编辑
  2014年3月5日
摘要: C++标准库里面没有字符分割函数split ,这可太不方便了,我已经遇到>3次如何对字符串快速分割这个问题了。列几个常用方法以备不时之需。方法一: 利用STL自己实现split 函数(常用,简单,直观)原型:vector split(const string &s, const string &seperator);输入一个字符串,一个分隔符字符串(可包含多个分隔符),返回一个字符串向量。这是我最喜欢的方法,因为它最直观,在平常也最常用。实现及测试代码如下#include #include #include using namespace std;vector split 阅读全文
posted @ 2014-03-05 22:51 dfcao 阅读(169661) 评论(7) 推荐(6) 编辑
  2014年3月1日
摘要: 在linux系统上,从源文件到目标文件的转化是由编译器完成的。以hello.c程序的编译为例,如下:dfcao@linux: gcc -o hello hello.c在这里,gcc编译器读取源文件hello.c,并把它翻译成一个可执行文件 hello。这个翻译过程可分为四个阶段逐步完成:预处理,编译,汇编,链接,如下图所示。逐步做下简单分析:在未编译前,hello.c 的源代码如下#include int main(){ printf("hello, world\n");}第一步、预处理阶段执行命令: gcc -o hello.i -E hello.c 或者 cpp -o 阅读全文
posted @ 2014-03-01 23:46 dfcao 阅读(12487) 评论(0) 推荐(1) 编辑
  2014年2月27日
摘要: 本文已迁移至:http://www.danfengcao.info/c/c++/2014/02/27/difference-between-array-and-pointer.html每个人都知道在C语言中,数组和指针非常相似。我甚至经常听到一种说法,“数组就是指针,指针就是数组”,但这是一种完全错... 阅读全文
posted @ 2014-02-27 21:34 dfcao 阅读(1295) 评论(0) 推荐(0) 编辑
  2014年2月25日
摘要: 本文已迁移至:http://www.danfengcao.info/c/c++/2014/02/25/howto-understand-complicated-declaration-of-c.htmlC语言中有时会出现复杂的声明,比如char * const * (*next) (); //这是个... 阅读全文
posted @ 2014-02-25 19:29 dfcao 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 本文已迁移至:http://www.danfengcao.info/c/c++/2014/02/25/difference-between-define-and-typedef.htmltypedef 和#define 都常用来定义一个标识符及关键字的别名,但他们之间有关键的区别。typedef是语... 阅读全文
posted @ 2014-02-25 11:46 dfcao 阅读(577) 评论(0) 推荐(0) 编辑
  2014年2月24日
摘要: 《C专家编程》中对在使用有无符号数有以下三点建议:1.尽量不要在你的代码中使用无符号数,以免增加不必需要的复杂性。尤其是,不要仅仅因为无符号数不存在负值(如年龄,国债)而用它来表示数量。2.尽量使用像int那样的有符号类型,这样在涉及升级混合类型的复杂细节时,不必担心边界情况(如-1被翻译为非常大的正数)。3.只有在使用位段和二进制掩码时,才可以用无符号数。应该在表达式中使用强制类型转换,使操作数均为有符号或无符号数,这样就不必由编译器来选择结果的类型。举例:#includeusing namespace std;int array[] = {1,2,3,4,5};#define TOTAL_ 阅读全文
posted @ 2014-02-24 18:46 dfcao 阅读(913) 评论(0) 推荐(0) 编辑
  2014年2月23日
摘要: 本文分为三个小块:一、UNIX系统中时间的存储形式;二、 time_t 的最大值是多少;三、 将time_t 的最大值转化为真实世界的时间;#---------------------## 欢迎诸位园友指正##---------------------#一、 时间的存储形式UNIX下存储时间常见的有两种存储方式:一种是time_t 这种类型,存储了从1970年到现在经过了多少秒,在UNIX系统中,time_t 是 long 类型的typedef 形式,它的定义位于文件/usr/include/time.h中。要想更精确一点,可以用结构体struct timeval,它精确到微秒,见下列代码。s 阅读全文
posted @ 2014-02-23 20:34 dfcao 阅读(4203) 评论(2) 推荐(1) 编辑