面试:第二章:各种框架和中间件以及缓存数据库

的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类。如果

目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation

Library),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意,CGLIB是通过继承的方式做

的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。

AOP在事务管理方面,Spring使用AOP来完成声明式的事务管理有annotation和xml两种形式。开发中,方便代码

编写,很多时候都是在spring配置文件中配置事务管理器并开启事务控制注解。在业务类或业务类方法中添加

@Transactional实现事务控制。

讲讲MyBatis框架

===============

(1)mybatis是一个基于java的持久层框架,它内部封装了jdbc,不需要花费精力去处理加载驱动、创建连接等的过程,

消除了JDBC大量冗余的代码。

(2)mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中

sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。

(3)MyBatis 支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设

置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO映射成数据库中的记录。

(4)提供了很多第三方插件(分页插件 / 逆向工程);

(5)能够与Spring很好的集成;

(6)MyBatis相当灵活,SQL写在XML里,从程序代码中彻底分离,解除sql与程序代码的耦合,便于统一管理,支持编写动态SQL语句。

(7) 提供映射标签,支持对象与数据库的ORM字段关系映射。

(8)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

讲讲SpringBoot的特点

===================

Springboot用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置

(properties或yml文件)

可以创建独立的spring引用程序 main方法运行

Springboot嵌入的Tomcat 无需部署war文件

简化maven配置

讲讲线程的创建及实现线程几种方式之间的区别

=========================

1:继承Therad类,2:实现Runnable接口 3:实现Callable接口 4:使用线程池

继承Thread类,并重写里面的run方法

class A extends Thread{

public void run(){

for(int i=1;i<=100;i++){

System.out.println(“-----------------”+i);

}

}

}

A a = new A();

a.start();

实现Runnable接口,并实现里面的run方法

class B implements Runnable{

public void run(){

for(int i=1;i<=100;i++){

System.out.println(“-----------------”+i);

}

}

}

B b = new B();

Thread t = new Thread(b);

t.start();

实现Callable

class A implements Callable{

public String call() throws Exception{

//…

}

}

FutureTask ft = new FutureTask<>(new A());

new Thread(ft).start();

线程池

ExcutorService es = Executors.newFixedThreadPool(10);

es.submit(new Runnable(){//任务});

es.submit(new Runnable(){//任务});

es.shutdown();

实现Runnable和实现Callable的区别?

实现Callable接口,任务可以有返回值,Runnable没有。

实现Callable接口,可以指定泛型,Runnable没有。

实现Callable接口,可以在call方法中声明异常,Runnable没有。

Runnable和Thread二者的区别?

实现Runnable接口的方式,更适合处理有共享资源的情况。

实现Runnable接口的方式,避免了单继承的局限性。

Java自定义类加载器与双亲委派模型

==================

启动类加载器(Bootstrap)C++

扩展类加载器(Extension)Java

应用程序类加载器(AppClassLoader)Java

双亲委派模型工作原理:如果一个类加载器收到类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请

求委派给父类加载器完成。每个类加载器都是如此,只有当父加载器在自己的搜索范围内找不到指定的类时(即

ClassNotFoundException),子加载器才会尝试自己去加载。

讲讲jvm的组成与调优,内存模型,GC,tomcat调优

================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值