获取/转换/格式化:日期/时间/时间戳

获取

–返回当前日期时间 2018-05-23 01:04:08
select now();
select current_timestamp();
select localtime();
select localtimestamp();

–返回当前日期 2018-05-23
select curdate();
select current_date();

–返回当前时间 01:04:08
select curtime();
select current_time();

–返回当前unix时间戳 1527008648
select unix_timestamp();

–返回昨天 2018-05-22 01:04:08
select date_sub(‘2018-05-23 01:04:08’,interval 1 day);

–返回明天 2018-05-24 01:04:08
select date_sub(‘2018-05-23 01:04:08’,interval -1 day);

–返回30分钟前 2018-05-23 00:34:08
select date_sub(‘2018-05-23 01:04:08’,interval 30 minute);

–返回30分钟后 2018-05-23 01:34:08
select date_sub(‘2018-05-23 01:04:08’,interval -30 minute);

转换

–日期时间转为时间戳 1527008648
select unix_timestamp(‘2018-05-23 01:04:08’);

–时间戳转为日期时间 2018-05-23 01:04:08
select from_unixtime(1527008648);
select from_unixtime(1527008648, ‘%Y-%m-%d %H:%i:%s’);

–时间戳转为日期 2018-05-23
select from_unixtime(1527008648, ‘%Y-%m-%d’);

–时间戳转为时间 01:04:08
select from_unixtime(1527008648, ‘%H:%i:%s’);

格式化

–格式化日期 2018-05-23 01:04:08
select date_format(‘2018/05/23 01/04/08’, ‘%Y-%m-%d %H:%i:%s’);
select str_to_date(’05/23/2018 08:01:04′,’%m/%d/%Y %s:%H:%i’)

git放弃本地所有修改,强制更新

挺有用的一个命令,先说说我遇到的问题吧。
最近,git用的比较频繁。遇到一个奇葩问题,我在A分支下开发好的东西,合并到dev分支,进行测试,发现代码居然没有合并成功,具体什么原因造成的,还不得而知。
git fetch –all && git reset –hard origin/dev
git pull

centos 查看磁盘使用情况和文件夹占用大小

昨天,我又想登录博客写文章。突然发现,后台登录不上了。一时半会,还不知道是什么原因。后来用navicat登录数据库,查看表时,发现报了一个关于磁盘空间的错误。仔细一查,原来是磁盘满了。后来,查到php-fpm的日志居然占了几十G,果断删了再说。
使用的命令如下:
df -h 查看磁盘使用情况
du -sh * 查看当前目录下,所有文件夹占用大小

共享锁与排他锁

  • 概述

    MySQL锁的机制分别有:共享锁和排他锁。又可分为行锁和表锁,顾名思义作用在行上的锁,或者整个表上的锁(MyISAM只支持表锁)。

  • 使用方法

    共享锁:select * from table_name lock in share mode;
    排他锁:select * from table_name for update;

  • 对比

    共享锁:某个事务上了共享锁,其它事务就只能上共享锁
    排他锁:某个事务上了排他锁,其它事务就不能上任何锁

  • 注意事项

    一般情况下insert/update/delete会自动上排他锁
    如果,某个事务上了锁,其他事务在不上锁的情况下,是可以查询的;
    如果,事务中的第一条语句有共享锁,第二条语句是insert/update/delete的话,事务会变成排他锁

InnoDB和MyISAM的区别

  • 概述

      InnoDB是MySQL的默认事件型引擎,是使用最广泛的存储引擎。它被设计来处理大量的短期事务。除非有特别的原因需要使用其他存储引擎,否则应该优先考虑InnoDB引擎。
      MyISAM在MySQL5.1及之前的版本,是默认存储引擎。它提供了大量的特性:全文索引、压缩、空间函数(GIS)等,但不支持事务和行级锁。

  • 对比

    InnoDB:
    支持事务
    支持外键
    支持行锁
    支持全文索引(5.6加入,之前版本不支持)
    不保存表的行数,扫描表来计算多少行
    DELETE 表时,是一行一行的删除
    InnoDB 把数据和索引存放在表空间里面
    跨平台可直接拷贝使用
    InnoDB中必须包含AUTO_INCREMENT类型字段的索引
    表很难被压缩

    MyISAM:
    不支持事务,回滚将造成不完全回滚,不具有原子性
    不支持外键
    不支持行锁
    支持全文索引
    保存表的行数,不带where时,直接返回行数
    DELETE 表时,先drop表,再重建表
    MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex)引伸
    跨平台很难直接拷贝
    MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引
    表可以被压缩

python如何让frame带滚轴

围绕这个主题,我百度了好几回,也放弃过好几回。却只能看到,有二个跟我遇到同样的问题人,而且这二个给的结果都是用pack_propagate(0)。可惜,并不是正确的答案,不知道是不是我的版本问题。
后来,我改去google和stackoverflow搜索,终于给我找到一个有效的方案。他采用的是canvas+frame的方式(https://stackoverflow.com/questions/19245941/adding-a-scrollbar-to-a-frame-using-tkinter-python),我把上面的代码稍作修改,精简再精简。如下:
[code lang=”python”]
from tkinter import *

class demo(object):
def __init__(self, master):
self.master = master
# canvas
self.canvas = Canvas(self.master, height=200)
self.canvas.grid(row=0, column=0)

# scroll
self.scroll = Scrollbar(self.master, command=self.canvas.yview)
self.scroll.grid(row=0, column=1, sticky=’nsew’)
self.canvas[‘yscrollcommand’] = self.scroll.set

# frame
self.frame = Frame(self.master)
self.canvas.create_window((0, 0), window=self.frame, anchor=’nw’)

# label list
for x in range(50):
Label(self.frame, text=str(x) + " row…").grid(row=x, column=0)

# other
Button(self.master, text="activate scroll", command=self.activate_scroll).grid(row=0, column=2)
self.activate_scroll()

def activate_scroll(self):
self.canvas.configure(scrollregion=self.canvas.bbox(‘all’))

root = Tk()
demo(root)
root.mainloop()
[/code]

不知不觉二周过去了,我的文章还是那么几条,感觉有点寒酸