赞
踩
抽象类定义:用abstract关键字修饰的类就是抽象类
注意:
接口的定义:用interface关键字修饰的类。
注意:
区别:
1.接口和抽象类都不能实例化,接口必须是abstract方法,而抽象类不用。
2.接口可以用于多继承。抽象类只能继承一个。
3.接口只能有常量,抽象类可以有常量和变量。
4.继承的关键字不一样:接口继承接口和类继承类用extends,类继承接口用implements。
5.抽象类将其抽象方法的实现交给子类,接口将抽象方法的实现交给实现该接口的类。
应用场景:
抽象类:模板设计模式。某个问题需要子类除了需要重写父类的abstract的方法,还需要从父类继承变量或者重写重要的非abstract方法,就考虑abstract类
接口:代理模式。某个问题不需要继承,只需要很多子类给出重复的abstract方法的具体实现细节,就用接口
POP(面向过程编程):
优势
缺点
OOP(面向对象编程):
三大特征:封装、继承、多态
1)封装性:
封装是指将对象信息抽象成一个实体,其中属性方法不容许外部程序直接访问。简单来讲,封装就是要找出某一类事物的公共属性而后提取出来。
(2)继承性:
子类继承了父类全部的成员方法和属性,能够拥有本身的属性,子类也能够重写父类方法。继承解决了代码的重用问题 .
(3)多态性:
多态存在的三个条件:1.继承 2.重写 3.父类引用指向子类对象
多态的实现方式1.接口实现,继承父类方法重写,同一个类中进行重载数据结构
优势
缺点
AOP(面向切面编程):一种编程思想
优势
缺点
AOP的核心作用是:在程序运行期间,不修改代码的同时为程序增强功能。将必不可少的公共功能做成切面,随着程序运行切入到代码中运行。编写业务时只关注于核心功能 ,不再考虑事务、日志等公共功能,减轻了编码负担,更专注于业务。
AOP在实际项目中的应用
权限管理、表单验证、事务管理、信息过滤、拦截器、过滤器、页面转发、LOGO日志
概念:接口幂等性就是用户对同一操作发起了一次或多次请求的对数据的影响是一致不变的,不会因为多次的请求而产生副作用。
查询操作:具有幂等性
删除操作:1. 绝对删除:具有幂等性
2.. 相对删除:不具有幂等性
更新操作:1. 绝对更新:具有幂等性
2.. 相对更新:不具有幂等性
新增操作:1.自增主键:没有幂等性
2.业务主键: 具有幂等性
索引的优点:
1.加快查询或者检索的速度;
2.加快表关联的效率,在进行表关联时,可以对关联的字段建立索引;
3.使用分组或者排序的时候,可以减少分组或者排序的时间;
4.建立唯一索引,可以保证表中数据的唯一性等。
索引的缺点:
1.在数据分析或者开发或者中,创建索引和维护索引需要耗费大量的时间;
2.索引会占用物理空间,数据量越大,所用的空间也就越大;
3.索引会降低增删改的效率,因为每次增删改时都需要对索引进行动态维护等。
索引的使用场景,也就是什么我们应该去建立索引呢?可以对照索引的优点方面进行阐述:
1.主键建立唯一索引,创建表中指定某个列为主键列时,索引会自动创建;
2.频繁作为查询条件的字段建立索引;
3.排序时所用的字段建立索引;
4.分组时所用的字段建立索引;
5.常用于统计的字段建立索引等。
唯一索引是不允许其中任何两行具有相同索引值的索引。
主键索引为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。
1. 索引失效案例
MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了访问高效数据的方法,并且加快查询的速度,因此索引对查询的速度有着至关重要的影响。
大多数情况下都(默认)采用B+树来构建索引。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。
其实,用不用索引,最终都是优化器说了算。优化器是基于什么的优化器?基于cost开销(CostBaseOptimizer),它不是基于规则(Rule-BasedOptimizer),也不是基于语义。怎么样开销小就怎么来。另外,SQL语句是否使用索引,跟数据库版本、数据量、数据选择度都有关系。
1.1 全值匹配我最爱
1.2 最佳左前缀法则
在MySQL建立联合索引时会遵守最佳左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。
结论:MySQL可以为多个字段创建索引,一个索引可以包括16个字段。对于多列索引,过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。如果查询条件中没有使用这些字段中第1个字段时,多列(或联合)索引不会被使用。
1.3 主键插入顺序
对于一个使用InnoDB存储引擎的表来说,在我们没有显示的创建索引时,表中的数据实际上都是存储在聚簇索引的叶子节点的。而记录又存储在数据页中的,数据页和记录又是按照记录主键值从小到大的顺序进行排序,所以如果我们插入的记录的主键值是依次增大的话,那我们每插满一个数据页就换到下一个数据页继续插,而如果我们插入的主键值忽小忽大的话,则可能会造成页面分裂和记录移位。
1.4 计算、函数、类型转换(自动或手动)导致索引失效
1.5 类型转换导致索引失效
1.6 范围条件右边的列索引失效
应用开发中范围查询,例如:金额查询,日期查询往往都是范围查询。应将查询条件放置where语句最后。(创建的联合索引中,务必把范围涉及到的字段写在最后)
1.7 不等于(!= 或者<>)索引失效
1.8 is null可以使用索引,is not null无法使用索引
结论:最好在设计数据表的时候就将字段设置为 NOT NULL 约束,比如你可以将INT类型的字段,默认值设置为0。将字符类型的默认值设置为空字符串('')
拓展:同理,在查询中使用not like也无法使用索引,导致全表扫描
1.9 like以通配符%开头索引失效
拓展:Alibaba《Java开发手册》
【强制】页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。
1.10 OR 前后存在非索引的列,索引失效
在WHERE子句中,如果在OR前的条件列进行了索引,而在OR后的条件列没有进行索引,那么索引会失效。也就是说,OR前后的两个条件中的列都是索引时,查询中才使用索引。
1.11 数据库和表的字符集统一使用utf8mb4
统一使用utf8mb4( 5.5.3版本以上支持)兼容性更好,统一字符集可以避免由于字符集转换产生的乱码。不同的字符集进行比较前需要进行转换会造成索引失效。
1.绝对居中:首先给div添加绝对定位position: absolute;并设置上下左右边距为0,然后使用margin: auto;自动居中。
2.水平垂直居中:给其父元素添加display: flex;弹性布局。通过定义伸缩容器的两个属性,justify-content主轴方向,align-items纵轴方向均为center
3. (定位+变形)居中:给父元素添加 position: relative;相对定位。给自身元素添加position: absolute;绝对定位。top: 50%;使自身元素距离上方“父元素的50%高度”的高度。left: 50%;使自身元素距离上方“父元素的50%宽度”的宽度。transform: translate(-50%,-50%);使自身元素再往左,往上平移自身元素的50%宽度和高度。
前置工作:
1.注册微信支付的商户号
2.小程序关联商户号
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- * @author zhangy
- * @create 2022-10-12 22:37
- */
- public class test {
- public static void main(String[] args) {
- int[] ints = {1, 4, 6, 8, 2, 5, 9, 3, 1, 4 ,7};
- List<List<Integer>> lists = new ArrayList<>();
- List<Integer> list = new ArrayList<>();
- for (int i = 0; i < ints.length; i++) {
- if (i != ints.length - 1){
- if (ints[i] < ints[i + 1]){
- list.add(ints[i]);
- }if (ints[i] > ints[i + 1]){
- list.add(ints[i]);
- lists.add(list);
- list = new ArrayList<>();
- }
- }else {
- //最后一个的处理
- if (ints[i - 1] < ints[i]){
- list.add(ints[i]);
- }else {
- // lists.add(list);
- list = new ArrayList<>();
- list.add(ints[i]);
- }
- }
- }
- lists.add(list);
- System.out.println(lists);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。