摘要:本文将通过一句口诀,教你如何辨别索引失效。本文分享自华为云社区《虚竹哥教你一句口诀辨别索引失效七大场景》,作者:小虚竹。一、口诀教你一句功法口诀:模型数或运最快二、初始化数据创建存储引擎为InnoDB的学生表droptableifexistsstudent;CREATETABLE`student`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'自增ID',`order_num`bigintNOTNULLCOMMENT'序号',`student_name`varchar(20)NOTNULLCOMMENT'姓名',`age`intCOMMENT'年龄',`crea
摘要:本文将通过一句口诀,教你如何辨别索引失效。本文分享自华为云社区《虚竹哥教你一句口诀辨别索引失效七大场景》,作者:小虚竹。一、口诀教你一句功法口诀:模型数或运最快二、初始化数据创建存储引擎为InnoDB的学生表droptableifexistsstudent;CREATETABLE`student`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'自增ID',`order_num`bigintNOTNULLCOMMENT'序号',`student_name`varchar(20)NOTNULLCOMMENT'姓名',`age`intCOMMENT'年龄',`crea
1.基本介绍里斯科瓦(BarbaraLiskov)使美国麻省理工学院电气工程于计算机科学系资深教授,她是美国国家工程院院士,在程序语言、分布式计算、程序设计方法及软件工程领域做出了卓越贡献。里斯科瓦于1987年提出了一个关于继承的原则,也就是现在我们称为的“里氏替换原则”。里氏替换原则基于子类对象可以赋给父类对象的“多态性”,表明子类可以替换父类,并且出现在父类能够出现的任何地方。但是该原则要求继承时需要遵守以下两点:继承必须确保父类所拥有的“性质”在子类中仍然成立,且子类的程序执行无异常。子类可以新增特有方法,并且可以重写父类的抽象方法,但不能改变父类原有的方法。这两点也主要是衡量继承的使用
1.基本介绍里斯科瓦(BarbaraLiskov)使美国麻省理工学院电气工程于计算机科学系资深教授,她是美国国家工程院院士,在程序语言、分布式计算、程序设计方法及软件工程领域做出了卓越贡献。里斯科瓦于1987年提出了一个关于继承的原则,也就是现在我们称为的“里氏替换原则”。里氏替换原则基于子类对象可以赋给父类对象的“多态性”,表明子类可以替换父类,并且出现在父类能够出现的任何地方。但是该原则要求继承时需要遵守以下两点:继承必须确保父类所拥有的“性质”在子类中仍然成立,且子类的程序执行无异常。子类可以新增特有方法,并且可以重写父类的抽象方法,但不能改变父类原有的方法。这两点也主要是衡量继承的使用
1.概念1.1.知道的越少越好迪米特法则,结合其含义又称之为“最少知道原则”,即一个类作为一个调用方,应当对自己依赖的类(被调用的类)其中所处理的逻辑细节,知道的越少越好。对于被依赖的类(被调用的类)不管在使用上多么的复杂,它都应尽量将处理逻辑封装在它的内部,对调用方提供简洁明了的公共方法即可,以此减轻上层调用方过多承担复杂逻辑的压力和变化。1.2.朋友和陌生人对于程序编码设计是否遵循了“迪米特法则”,我们通常可以使用一段经典的描述来判断,该描述是:“只和朋友通信,不和陌生人说话”。那么对于这段话中什么是朋友,什么是陌生人,下面对其进行一个介绍。每个对象都会与其他对象之间都存在一定程度的耦合关
1.概念1.1.知道的越少越好迪米特法则,结合其含义又称之为“最少知道原则”,即一个类作为一个调用方,应当对自己依赖的类(被调用的类)其中所处理的逻辑细节,知道的越少越好。对于被依赖的类(被调用的类)不管在使用上多么的复杂,它都应尽量将处理逻辑封装在它的内部,对调用方提供简洁明了的公共方法即可,以此减轻上层调用方过多承担复杂逻辑的压力和变化。1.2.朋友和陌生人对于程序编码设计是否遵循了“迪米特法则”,我们通常可以使用一段经典的描述来判断,该描述是:“只和朋友通信,不和陌生人说话”。那么对于这段话中什么是朋友,什么是陌生人,下面对其进行一个介绍。每个对象都会与其他对象之间都存在一定程度的耦合关
1.基本介绍1.1.概念高层模块不能依赖于一个“具体化、细节化”的低层模块,而是通过一个抽象的“规范/标准”建立两者之间的依赖关系,简言之就是:不依赖于实现,而是依赖于抽象。这里“实现”一词有的地方也称为“细节”,在编码中主要体现的是我们根据业务模型具体自定义的普通类,比如:员工类、商品类等。而其中的“抽象”一词是指定的接口或抽象类。 1.2.高层与低层下面我们通过传统的三层架构作为背景来理解“依赖倒置原则”中的高层与低层的含义。在分层架构中,高层是相对而言的,对于上面三层架构图中而言最高层是“表示层”,相对于“业务逻辑层”它的高层是“表示层UI”,相对于“数据访问层”它的高层则是“业务逻辑层
1.基本介绍1.1.概念高层模块不能依赖于一个“具体化、细节化”的低层模块,而是通过一个抽象的“规范/标准”建立两者之间的依赖关系,简言之就是:不依赖于实现,而是依赖于抽象。这里“实现”一词有的地方也称为“细节”,在编码中主要体现的是我们根据业务模型具体自定义的普通类,比如:员工类、商品类等。而其中的“抽象”一词是指定的接口或抽象类。 1.2.高层与低层下面我们通过传统的三层架构作为背景来理解“依赖倒置原则”中的高层与低层的含义。在分层架构中,高层是相对而言的,对于上面三层架构图中而言最高层是“表示层”,相对于“业务逻辑层”它的高层是“表示层UI”,相对于“数据访问层”它的高层则是“业务逻辑层
重要性有过一些实际开发工作的朋友一定对某个场景会深有体会,那就是客户经常会对现有的功能提出新的需求要我们改动,并且要快速完成。如果你的代码没有很好的遵循“开闭原则”,并且顶着工期的缩减,那我们对需求变化的修改,“往往就像在一个草稿纸上反复的涂抹”,随着不断的变化修改代码就会显得很乱,可能到最后你连自己的代码都看不懂了,还可能影响现有的功能(“赔了夫人又折兵”) 定义开闭原则在定义描述上其实非常的简短,那就是:“对扩展开放,对修改关闭”,该原则是编程种最基本、最重要的设计原则。其实在经过实际的开发工作后,大家都自然而然的会体会到这个开闭原则的思想:就是我们在对现有功能进行调整修改的时候,我们的调
重要性有过一些实际开发工作的朋友一定对某个场景会深有体会,那就是客户经常会对现有的功能提出新的需求要我们改动,并且要快速完成。如果你的代码没有很好的遵循“开闭原则”,并且顶着工期的缩减,那我们对需求变化的修改,“往往就像在一个草稿纸上反复的涂抹”,随着不断的变化修改代码就会显得很乱,可能到最后你连自己的代码都看不懂了,还可能影响现有的功能(“赔了夫人又折兵”) 定义开闭原则在定义描述上其实非常的简短,那就是:“对扩展开放,对修改关闭”,该原则是编程种最基本、最重要的设计原则。其实在经过实际的开发工作后,大家都自然而然的会体会到这个开闭原则的思想:就是我们在对现有功能进行调整修改的时候,我们的调