怎样在复杂代码中找bug?
MySQL常见性能优化
优化Group By语句
默认情况下,MySQL 排序所有GROUP BY col1,col2,….。查询的方法如同在查询中指定ORDER BY col1,col2,…。如果显式包括一个包含相同的列的ORDER BY子句,MySQL 可以毫不减速地对它进行优化,尽管仍然进行排序。如果查询包括GROUP BY 但你想要避免排序结果的消耗,你可以指定ORDER BY NULL禁止排序。
优化Order by语句
在某些情况中,MySQL 可以使用一个索引来满足ORDER BY 子句,而不需要额外的排序。where 条件和order by 使用相同的索引,并且order by 的顺序和索引顺序相同,并且order by 的字段都是升序或者都是降序。
优化insert语句
Git Commit message 的写法规范之《Angular 规范》
目前,社区有多种 Commit message 的写法规范。本文介绍《Angular 规范》,这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。
一、Commit message 的作用
格式化的Commit message,有几个好处。
(1)提供更多的历史信息,方便快速浏览。
比如,下面的命令显示上次发布后的变动,每个commit占据一行。你只看行首,就知道某次 commit 的目的。
Docker可视化管理工具Shipyard安装与配置
JAVA不借助中间变量交换2个变量的值
1 | public static void main(String[] args) { |
Spring模块及生态支持汇总
Java中创建对象的5种不同方法
作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍。
1.使用new关键字
这是最常见的创建对象的方法,并且也非常简单。通过使用这种方法我们可以调用任何我们需要调用的构造函数。
1 | Employee emp1 = new Employee(); |
2.使用class类的newInstance方法
我们也可以使用class类的newInstance方法来创建对象。此newInstance方法调用无参构造函数以创建对象。
我们可以通过newInstance 用以下方式创建对象:
1 | Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance; |
或者
MYSQL建表规约
【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 表示否),此规则同样适用于 odps 建表。
说明:任何字段如果为非负数,必须是 unsigned。
举例:is_star
tinyint unsigned DEFAULT NULL COMMENT ‘项目状态(1 表示是,0 表示否)’
【强制】表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
正例:getter_admin,task_config,level3_name
反例:GetterAdmin,taskConfig,level_3_name
【强制】表名不使用复数名词。
说明:表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于 DO 类名也是单数形式,符合表达习惯。
MySQL里面这五个非常非常有用的东西
MySQL是非常流行的关系型数据库,虽然拥有的SQL语法大部分是符合ANSI SQL标准的,但是它自身还是携带了很多优秀的、私有的语句和指示符,今天我们就来分析一下。
EXPLAIN
难度指数:★ ★ ★ ★ ★
推荐指数:★ ★ ★ ★ ★
当我们网站或者接口访问频率越来越大,这时如果我们的相关SQL语句执行时间很长的话,就很容易造成网站或者接口响应慢的情况,那么使用explain语句,我们能够清楚的知道MySQL是怎么执行我们的SQL语句的,执行某个查询语句总共查询了多少条记录,使用了什么表以及多表的链接顺序是怎么样的,该查询使用了哪些索引等等信息,有了这些信息,我们能够根据多次执行和分析优化我们的数据库,该建立索引的建索引,该删除的索引就删除掉。
FOR UPDATE
难度指数:★ ★ ☆ ☆ ☆
推荐指数:★ ★ ★ ★ ★
有时我们有这样的一种情况,就是需要将某个SELECT语句查询的行进行锁定,防止其他客户端修改,那么这个时候,我们可以使用这个指示符来完成。