文章目录
git 提交规范
每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
其中,Header 是必需的,Body 和 Footer 可以省略。
不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。
Header
Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。
(1)type(必需)
type用于说明 commit 的类别,只允许使用下面7个标识。
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。
(2)scope
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
(3)subject(必需)
subject是 commit 目的的简短描述,不超过50个字符。
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
一般情况下:fix(xxxxx文件): 修改了 xxxx bug
http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
std::move与const 容器
find && grep
找到某一个目录下包含某一个头文件的所有文件:
find ./ -name "*" | xargs grep "xxxxxxxx"
find ./ -name "*.cpp" | xargs grep "xxxxxxxx"
find ./ -name "*.h" | xargs grep "xxxxxxxx"
参考:
https://blog.51cto.com/ltblog/845691
https://blog.csdn.net/jallin2001/article/details/6750730
git merge --squash
一个分支有许多乱七八糟的commit,当合并到另一个分支不需要这些commit 时,就用:
git merge --squash xxxxxxxxxx
git rebase 使分支好看
参考:https://www.cnblogs.com/wangiqngpei557/p/6026007.html
指针导致的 coredump
int *p1 ;
int *p2 ;
if(p1 != nullptr && p2 != nullptr)
{
fun(*p1,*p2);//fun 会改变p1,p2指向的内容
}
if(p1 != nullptr && p2 == nullptr)
{
fun(*p1,*p2);
}
改正:
int *p1 = nullptr ;
int *p2 = nullptr ;
//xxxxxxx
if(p1 != nullptr && p2 != nullptr)
{
fun(*p1,*p2);//fun 会改变p1,p2指向的内容
}
//不初始化就会进不了这里,同时要注意 (*空指针) 会 coredump
if(p1 != nullptr && p2 == nullptr)
{
fun(*p1,*p2);
}
switch 语句
switch(type)
{
case 1:
{
//xxxxx
}
case 2:
{
//xxxxxx
}
default:
{
//xxxxx
}
}
注意一定要有 break,否则会顺序执行
mysql 如何创建带- 的数据表以及数据库
把数据库名、表名都用倒引号 引起来就可以了。
https://blog.csdn.net/caiyiii/article/details/9499373
mysql 如何如何批量导入有格式的数据
LOAD DATA local INFILE '/home/xxx/xxx.csv' INTO TABLE tables_name FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n' ignore 1 lines (name,c_id);
- local :本地文件,mysql客户端
- FIELDS TERMINATED BY ‘,’ :,每一列的分隔符是逗号
- LINES TERMINATED BY ‘\r\n’:一行以"\r\n"结尾
- ignore 1 lines:不要第一行
- (col1,col2,col3):如果里面有自增主键,不写上就行了
我的文件是来自excel,然后转的.csv ,转csv 会自动加上逗号
vector 如何去重?
利用set为vector数组去重
参考:https://blog.csdn.net/cuglxw/article/details/78616418
联合唯一索引
-
创建表的时候添加唯一索引:
create table test_table(id int primary key auto_increment,update_time timestamp not null default CURRENT_TIMESTAMP,frist_name varchar(255) not null,second_name varchar(255) not null ,age varchar(128), unique key `uk_fri_sec_name` (`fri_name`,`sec_name`) );
-
查看索引:
show index from table_name
-
建好表之后添加唯一索引:
alter table table_name add unique index uk_fri_sec_name(fri_name,sec_name);
https://blog.csdn.net/haifu_xu/article/details/16864959 -
删除索引:
alter table table_name drop unique index uk_fri_sec_name ;
索引之坑:
当Mysql中建立的联合索引, 只要索引中的某一列的值为空时(NULL),即便其他的字段完全相同,也不会引起唯一索引冲突。
http://yukinami.github.io/2016/02/14/Mysql%E8%81%94%E5%90%88%E5%94%AF%E4%B8%80%E7%B4%A2%E5%BC%95%E5%92%8C%E7%A9%BA%E5%80%BC/
就算是空值,也设为not null,程序中如果有读入的话,也不影响代码的变动。
MySql查询字段最大长度
MySQL存储的时候,定义varchar字段一般会指定一个比较近似的值
如果是在已经存储数据的表中,可以直接查看已知最大长度,可以对这个字段长度进行一定的优化
SELECT max(length(column_name)) FROM table_name;
指定varchar长度的原则是:
尽量小,不够了可以以后增加,如果定义大了,一般很难往小的修改。
原文:https://blog.csdn.net/mouday/article/details/83107916
XShell鼠标选中, 实现快捷复制和粘贴
https://blog.csdn.net/qq_29307291/article/details/65628906
Excel 对比两列数据是否有不同:
https://jingyan.baidu.com/article/fd8044fa23eef05030137a66.html
python
- python在文本开头插入一行
https://blog.csdn.net/tintinetmilou/article/details/75947904 - python画柱状图–不同颜色并显示数值
https://blog.csdn.net/wenqiwenqi123/article/details/77451653 - matplotlib.pyplot 标记出曲线上最大点和最小点的位置
https://blog.csdn.net/Running_J/article/details/52119336 - Python startswith() 函数 判断字符串开头
- python – 检查字符串是否包含数字
https://codeday.me/bug/20170804/50451.html - python 的字典是哈希,注意是不排序的结构,与 map 不同
- python也可以写 class
- python – 检查字符串是否包含数字
https://codeday.me/bug/20170804/50451.html - python获取指定目录下的所有指定后缀的文件名
https://blog.csdn.net/Cryhelyxx/article/details/45219947 - python 字典如何按照key和value 排序:
tuple_list = sorted(AllAppidIndexSum.items(), key=lambda d: d[0])
#出来之后是一个一个的元组,按照key 排序,最后自己取出来就行了
xx =[]
yy =[]
for it in tuple_list:
xx.append(it[0])
yy.append(it[1]/10000)
参考:https://blog.csdn.net/buster2014/article/details/50939892
- 日期比较操作
在datetime模块中有timedelta类,这个类的对象用于表示一个时间间隔,比如两个日期或者时间的差别。
https://www.cnblogs.com/vampirejt/p/4159267.html
C++以特殊字符分隔字符串
void SplitString(const std::string& s, std::vector<std::string>& v, const std::string& c)
{
std::string::size_type pos1, pos2;
pos2 = s.find(c);
pos1 = 0;
while(std::string::npos != pos2)
{
v.push_back(s.substr(pos1, pos2-pos1));
pos1 = pos2 + c.size();
pos2 = s.find(c, pos1);
}
if(pos1 != s.length())
v.push_back(s.substr(pos1));
}
mysql limit 分页
mysql中用limit 进行分页有两种方式
例1,假设数据库表student存在13条数据。
代码示例:
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
// 语句1和2均返回表student的第10、11、12、13行 ,第一个参数表示从该参数的下一条数据开始,第二个参数表示每次返回的数据条数。
//语句2中的4表示返回4行,9表示从表的第十行开始
例2,通过limit和offset 或只通过limit可以实现分页功能。
假设 pageSize表示每页要显示的条数,pageNumber表示页码,那么 返回第pageNumber页,每页条数为pageSize的sql语句:
代码示例:
语句3:select * from studnet limit (pageNumber-1)*pageSize,pageSize
语句4:select * from student limit pageSize offset (pageNumber-1)*pageSize
参考:https://www.cnblogs.com/ahang/p/5644535.html