MySQL小记1

周一

1、事务四大特征 并详细说明

原⼦性(Atomicity):⼀个事务中的所有操作,要么全部执⾏成功,要么全部执⾏失败。
原⼦性是事务最重要的特性,全部执⾏失败并不是不执⾏,⽽是通过逆操作 rollback(回滚)数据。
⼀致性(Consistency):⼀个事务在执⾏前后数据必须保持⼀种合法的状态,事务总是从⼀个⼀致状态到另⼀个⼀致状态。
隔离性(Isolation):多个事务并发访问时,事务之间是相互隔离的,⼀个事务不应该被其他事务⼲扰,多个并发事务之间要相互隔离。
持久性(Durability):事务执⾏完成之后,它所做的所有修改都是永久的(不会丢失)。

2、脏读 幻读 不可重复读

脏读:⼀个事务读取到了另⼀个事务修改的数据之后,后⼀个事务⼜进⾏了回滚操作,从⽽导致第⼀个事务读取的数据是错误的。
不可重复读:在⼀个事务中,两次查询同⼀条数据得到了不同的结果就是不可重复读。在⼀个事务两次查询中间,另⼀个事务把这条数据修改了。
幻读:当同⼀查询在不同时间产⽣不同的结果,就是事务中的幻读问题。

3、索引的优点缺点

  • 优:
    协助快速查询、更新数据库表中数据。
  • 缺:
    增加了数据库的存储空间
    在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

4、索引失效的场景 五条至少

  • 不满足最左匹配原则
  • 使用了select *
  • 索引列上有计算
  • 索引列用了函数
  • 字段类型不同
  • like左边包含%
  • 列对比
  • 使用or关键字
  • not in和not exists

原文:https://blog.csdn.net/guoqi_666/article/details/122484441?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168950643316800197048528%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168950643316800197048528&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-122484441-null-null.142v88control_2,239v2insert_chatgpt&utm_term=%E7%B4%A2%E5%BC%95%E5%A4%B1%E6%95%88%E7%9A%84%E5%9C%BA%E6%99%AF&spm=1018.2226.3001.4187

5、SQL优化方案 五条至少

  • SQL语句中IN包含的值不应过多
  • SELECT语句务必指明字段名称
  • 当只需要一条数据的时候,使用limit 1
  • 如果排序字段没有用到索引,就尽量少排序
  • 如果限制条件中其他字段没有索引,尽量少用or
  • 尽量用union all代替union
  • 不使用ORDER BY RAND()
  • 区分in和exists, not in和not exists

原文:https://blog.csdn.net/qq_20161461/article/details/107745821?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%B4%A2%E5%BC%95%E4%BC%98%E5%8C%96%E6%96%B9%E6%A1%88&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-107745821.142v88control_2,239v2insert_chatgpt&spm=1018.2226.3001.4187

6、final关键字的作用

final关键字可以修饰类、方法和属性。

  • 当final修饰的时候,表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final方法。
  • 当final修饰方法的时候,表明这个方法不能被重写。
  • 当final修饰属性的时候,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

7、instanceof关键字作用

instanceof关键字是Java中的一个运算符,用于检查一个对象是否是某个类的实例,或者是否实现了某个接口。它的作用是判断一个对象是否属于某个特定类型,或者是该类型的子类的实例

使用instanceof关键字可以进行类型检查,可以在运行时判断对象的类型,以便根据实际情况进行相应的处理。这在编写多态的代码时非常有用。

8、重写和重载的区别

1、重载发生在本类,重写发生在父类与子类之间;
2、重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;
3、重载的参数列表不同,重写的参数列表必须相同。

9、接口和抽象类的区别

抽象类和接口都是Java中的重要概念,它们都可以用来定义抽象的数据类型。但是它们之间有一些区别,具体如下:

  1. 抽象类可以包含非抽象方法,而接口只能包含抽象方法。

  2. 类只能继承一个抽象类,但可以实现多个接口。

  3. 抽象类可以有构造方法,而接口不能有构造方法。

  4. 抽象类可以有成员变量,而接口只能有常量。

  5. 抽象类的方法可以有public、protected和default访问修饰符,而接口的方法只能有public访问修饰符。

  6. 抽象类的子类必须实现所有抽象方法,而实现接口的类必须实现所有接口中的方法。

  7. 抽象类可以有普通方法,而接口不能有普通方法。

总之,抽象类和接口都是用来定义抽象的数据类型,但是它们的使用场景和语法有所不同。抽象类适合用于定义一些具有共性的类,而接口适合用于定义一些具有相似功能的类。在实际开发中,我们需要根据具体的需求来选择使用抽象类还是接口。

10、String StringBuilder StringBuffer区别

  1. string是不可变的,一旦创建就不能修改,每次修改都会创建一个新的对象,因此在频繁修改字符串时,效率较低。
  2. stringbuilder和stringbuffer都是可变的,可以在原有对象上进行修改,因此在频繁修改字符串时,效率较高。
  3. stringbuilder是线程不安全的,而stringbuffer是线程安全的,因此在多线程环境下,应该使用stringbuffer。
  4. stringbuilder是JDK1.5之后新增的类,而stringbuffer是早期就存在的类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值