删除中间的commit
1 | git rebase -i 上一个版本的id |
The array index in C starts with 0 because in C the name of an array is a pointer, which is a reference to a memory location. Therefore, an expression *(arr + n) or arr[n] locates an element n-locations away from the starting location because the index is used as an offset. Likewise, the first element of the array is exactly contained by the memory location that array refers (0 elements away), so it should be denoted as *(arr + 0) or *(arr) or arr[0].
C programming language has been designed this way, so indexing from 0 is inherent to the language.
表名、字段名均小写加下划线
不能使用保留字
http://dev.mysql.com/doc/refman/5.7/en/keywords.html
见名识意,最好不要超过32个字符
临时表以tmp
为前缀,日期
为后缀,备份表以bak
为前缀,日期
为后缀
所有存储相同数据的列名和类型必须一致
所有表都必须使用Innodb存储引擎
数据库和表的字符集统一使用UTF8
(存Emoji表情用utf8mb4
)
注:MySQL的UTF8字符集汉字占3个字节,如果是VARCHAR(255),则共占用255*3=765
个字节
所有表个字段都必须添加注释
尽量控制单表数据量大小在500W以内
注:可以使用数据归档、分库分表
来控制数据量
谨慎使用MySQL分区表,谨慎选择分区键(跨分区效率比普通效率更低)
尽量做到冷热数据分离,减小表的宽度
注:MySQL限制单表最多存储4096列,且每一行都不能超过65535个字节。
减少磁盘IO,保证热数据的命中,减少冷数据的读入。
尽量少用SELECT *
,将经常使用的列放到一个表中。
禁止在表中建立预留字段
禁止在数据库中存储非结构化数据
禁止在线上做数据库压力测试
禁止直接连接生产环境数据库
1 | @app.route('/', defaults={'path': ''}) |
Hive是一个基于Hadoop的数据仓库, 可以将结构化的数据映射为一张数据表, 并提供简单的SQL查询功能, 他会将SQL转化为MapReduce的方式运行, 因为它支持原生的SQL语句,并能够将它转变为MapReduce任务, 所以特别的方便, 十分适合统计任务.
虽然Hadoop是用Java编写的一个框架, 但是并不意味着他只能使用Java语言来操作, 在Hadoop-0.14.1版本后, Hadoop支持了Python和C++语言, 在Hadoop的文档中也表示可以使用Python进行开发, 通常来说都会考虑将源码打包成jar包再运行, 例子: PythonWordCount 这明显不方便. 在Hadoop的文档中提到了Hadoop Streaming, 我们可以使用流的方式来操作它.
它的语法是