数据库&类加载机制面试知识点

数据库四大特性:
    原子性:要么执行要么不执行
    隔离性:正在操作的数据不能被其他事务访问
    一致性:要么都成功,要么都失败
    持久性:事务提交后,对数据的改变是持久的
数据库隔离级别:
    脏读:事务B读取了事务A还没有提交的数据
    幻读:事务A修改数据、事务B修改数据,在事务A看来,明明修改了数据,但是结果不符合预期
    不可重复读:两个事务读到的数据不一致
mysql两种引擎:
    myisam:不支持外键、表锁、查总表数,不需要全表扫描
    innodb:支持外键、行锁,查询总表、需要全表扫描
索引:
    hash:等值查询快,不能范围查
    b+树:数据有序,范围查询
    
    优缺点:索引建的好,查询速度快。更新数据需要更新索引,效率低,如若频繁更改数据,不推荐使用索引
sql优化:
    子查询左连接
    or条件优化,多个or使用去重
    去除不必要的排序
    where代替having
    联合索引
    避免嵌套查询
    
    数据库表结构优化
    硬件优化
        分库分表:读从库,写主库
        spring配置两个数据源,通过AOP,在读或写方法前面进行判断得到动态切换数据源
三大范式:
    1NF:属性不可分
    2NF:非主键属性,完全依赖主键属性
    3NF:非主键属性无传递依赖
    
    
    
java类加载知识
    加载、链接、初始化
    加载:查找并加载类的二进制数据
    链接:
        验证:确保加载类无错误
        准备:为类静态变量分配内存、并将其初始化为默认值
        解析:将类中的符号引用转换为直接引用。
    初始化:为累的静态变量赋予正确的初始值。
    
    类的加载内存:
        将.class文件中的二进制数据读入内存汇总,将其放在方法区内,在堆区创建这个类的对象,
        1)Bootstrap ClassLoader
            负责加载$JAVA_HOME中jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类
        2)Extension ClassLoader
            负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/ext/*.jar或-Djava.ext.dirs指定目录下的jar包
        3)App ClassLoader
          负责加载classpath中指定的jar包及目录中class
        4)Custom ClassLoader
            属于应用程序根据自身需要自定义的ClassLoader,如tomcat
    类加载机制
        双亲委派机制                                                       

 JVM在加载类时默认采用的是双亲委派机制。通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父加载器,依次递归,如果父加载器可以完成类加载任务,就成功返回;只有父加载器无法完成此加载任务时,才自己去加载。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值