为什么要规范 git commit message
无规矩不成方圆,尤其是在多人合作项目中如果每个人按自己的习惯 commit,那么整个 commit 的log将会一团糟糕
commit message 格式
Commit message 都包括三个部分:Header,Body 和 Footer
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
type
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style:
2019 年目标及总结
2019年初定的目标
工作
终于体验完了 996,而且是整整一年时间,这一年来我 90% 的醒着的时间都花在了工作上,也算是真正的实现了 19 年目标。
一年工作体会:创业公司 996 的工作完全是没有生活,睡觉时间平均2点半左右。而且在创业公司打工,全身心的投入,以为自己可以把握一切其实自己还是打工而已,什么都控制不了,并且丢失了大公司的那份安心。
计划
完成 redis 源码阅读(没时间放弃了)
花精力专心做一个项目(没时间放弃了)
补习操作系统、网络基础知识(没时间放弃了)
好好干新工作(好好干了)
2020 年小康年目标
挣钱
打工挣钱四年,打工是生不了真
单表删除语法
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
[PARTITION (partition_name [, partition_name] ...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
多表删除
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_r
什么是预处理语句(prepared statement)
有时候我们需要经常执行一类SQL,但是只是部分参数不一样,如果我们每次都直接执行带参数的 SQL 那么数据库每次都需要进行语法解析、优化、指定执行计划。预处理语句就是为了解决这总问题,预处理语句把这类 SQL 中的参数使用占位符替代,可以先把带占位符的语句发给数据库服务器,服务器会对其进行编译并保存起来,然后每次查询同一个 SQL 的时候只需要传入不同的参数即可,这样就可以达到一次编译多次运行。
预处理语句不仅能够提高 SQL 执行的性能也可以防止SQL注入,使用预处理语句我们就不需要在代码层对参数做过滤或转义。
预处理语句使用
使用
什么是锁
在计算机科学中,锁是在执行多线程是强制限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。
MySQL的锁
MySQL 个存储引擎从锁定范围上有三种级别的锁:
表级锁定 表锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁定 行锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页级锁定 页锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,而行级锁则更适合于有大量按索引条件并发更新少
事务隔离性(isolation)
数据库中多个事务并发执行时是相互独立的,一个事务不会影响另外一个事务的执行,事务与事务的隔离是有不同级别的,不同级别情况下事务之间的影响不一样。
不同的事务隔离性会给数据库带来问题
不隔离的事务问题
脏读
脏读是指一个事务执行过程中读取到其他事务更新的数据,但是更新数据的事务最后有因为各种原因回滚了,这种想象叫做脏读,因为第一个事务查到的是一个无意义的数据。脏读举例如下
// 事务1
start transaction;
update students set sex=2 where name='洛基';
rollback;
// 事务2
select *
事务就是一组 SQL 语句,当数据库执行这组 SQL 的时候要不全部执行这组 SQL,否则只要有一条 SQL 无法执行整组 SQL 都无法执行。
并不是任何执行的 SQL 序列都是事务,事务有以下四个特性:
原子性(atomicity)
一个事务是一个不可分割的最小工作单元,一个事务中的所有操作要么全部执行,要么全部回滚不执行,事务不可能只执行一部分操作。
一致性(consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。比如银行账户A转账给B时,无论事务如果执行最后结果A、B的总金额不会变。
隔离性(i
最烂的代码不仅挑战你的智商,还挑战你的笑点。刚开始看的时候感觉自己智商不够用,看懂后感觉自己笑点不够高!
插入 students 表一条数据包含所有字段的值
insert into students values (1,'0001','洛基',2,25,'2019-12-20 20:00:00','2019-12-20 20:00:00');
执行
mysql> insert into students values (1,'0001','洛基',2,25,'2019-12-20 20:00:00','2019-12-20 20:00:00');
Query OK, 1 row affected (0.00 sec)
一次插入多条数据包含所有字段的值到 mysql
insert into s
创建表
创建学生表 SQL
create table if not exists`students` (
`id` int not null auto_increment comment '学生id',
`no` char(5) not null comment '学生学号',
`name` varchar(128) not null default '' comment '学生姓名',
`sex` tinyint not null default 0 comment '0 无 1 女 2 男',
`age` tinyint null default