浅谈设计模式 - 迭代器模式(十一)
前言
迭代器模式通常只需要知道该模式的实现原理和了解结构图即可,在设计模式当中自己实现的情况几乎是没有的,所以这个模式简单的过一遍。
关于日期方面的比较方面,由于多年JAVA写法的固定观念,导致卡了一点时间排查这个问题。
按照正常的逻辑,一般情况下我们都会想到 yyyy-MM-dd HH:mm:ss
,这样写通常没有什么问题,但是在postgre当中是存在问题的。因为 HH
默认是12小时制!!!这个坑会导致查找数据出现下面莫名其妙的问题:
首先按照下面的sql进行查询:
得到查询结果如下:
这个结果是出乎预料的,因为正常来说应该查出来是0点的数据:
将上面的00:59:59
时间点改为01:59:59
,结果查出来是第一条居然是13点的数据:
于是我停了下来,我套入各种数据不断尝试,猜想这个1点和13点都代表1点,或许使用了12小时制,果不其然,正确的写法应该如下:
这一下结果就正确了
总结:
这周问题是习惯性思维的问题,但是个人想要吐槽一下这个设计有点点坑人=-=
这篇文章简单记录一下如何通过navicat备份一整个数据库留个记录,节省后面百度的时间。
注意,这里依照postgres
数据库作为案例。
首先我们选择任意想要复制的数据库,选择备份按钮。
接着,我们可以在常规里面进行基本的配置,,可以在对象选择里面进行基本的配置。
点击备份之后,我们可以看到信息日志,navicat正在为我们备份整改数据库的内容。
备份完成之后,在备份的列表里面,可以看到生成对应的日期时间戳生成的对应db文件。
关键的地方来了,到了这一步,说明整个库的数据和结构我们都备份好了,现在我们需要将其提取到sql里面,用做新的数据库导入。右击需要导出sql文件的备份,点击提取SQL
。
接着我们选择提取sql
,然后指定一个目录的位置,确定之后,navicat就开始将整个备份导出到sql。同样耐心等待信息日志。
这个过程可能会很长,请耐心等待
这个操作应该简单的不能再简单了,就是新建一个新的数据库。
这一步也是非常简单的,右击选择数据库,,选择运行sql文件
,找到刚刚提取出来的sql文件导入,然后耐心等待即可。
这个过程比较长,数据库大的话几分钟,甚至小时都是有可能的,这时候可以去干干别的事情,进度条不动不一定是死机了,可能是数据过大没有加载进度条
这次简单记录的一下如何快速的复制一个数据库,当然更快的方式是使用pq_dump
(针对不同数据库有不同的备份命令)。速度要比navicat 快上好几倍。但是通常情况下我们连接数据库的服务器或者客户端都不在本地,这种方式备份和复制整个库是十分方便的。
同时养成良好的备份习惯有助于严重失误的时候进行回溯。