java开发笔试题总结,面试题java开发中遇到的难点
如何解决写爬虫IP受阻的问题?立即使用。
1、Hibernate悲观锁和乐观锁
(更多面试问题推荐:java面试问答)
Hibernate悲观锁:加载数据时锁定数据,其他用户只能修改它,直到锁被释放。优点:很好地保持了数据的一致性,缺点:不适合多个用户并发访问。当一个被锁定的资源没有被释放时,该资源将永远不会被其他用户修改,这容易造成无限期的等待。
Hibernate乐观锁定:在修改数据时,通过版本或时间戳比较数据,数据是否一致来实现锁定。优点更好。
2、Hibernate三种状态
临时状态:new的对象尚未持久化,并且不在会话中。
持久状态:它已被持久化并添加到会话缓存中。处于这种状态的对象称为持久对象;
自由状态:持久对象与会话的对象分离。例如会话缓存被清空的对象。功能:它已被持久化,但不在会话缓存中。处于这种状态的物体称为自由物体;
(相关教程推荐:java入门教程)
3、hibernate和ibatis的区别
Ibatis:开源项目简单易用,开发灵活,开发工作量大。他们中的大多数都编写自己的sql和许多配置文件。
Hibernate:开源的对象关系映射框架,开发效率高,但是不能干扰sql,优化程度低。
4、讲讲mybatis连接池
常见的mybatis连接池有native、c3p0和dbcp。DataSource接口由工厂模式创建,其实现包括unpooledDataSource(无连接池的数据源)和pooledDataSource(有连接池的数据源),可通过相应的工厂类对象获取。
以PooledDataSource为例:首先需要一个对象连接数据库,在执行sql语句时获取java.sql.Connection连接对象。
其次,PooledDataSource数据源将连接池对象包装成PooledConnection对象,放入PoolState容器中进行维护。MyBatis将连接池中的连接池dui分为两种状态:空闲状态和活动状态。PooledConnection对象存储在PoolState容器中的两个列表集合中,即idleConnections和activeConnections:
在空闲状态下,PooledConnection对象放在idleConnections集合中,指示当前空闲的未使用的PooledConnection集合。当调用PooledDataSource的getConnection()方法时,将首先从该集合中获取PooledConnection对象。当一个java.sql.Connection对象用完后,MyBatis会把它包装成一个PooledConnection对象,放到这个集合中。
在活动状态下,PooledConnection对象被放置在名为activeConnections的ArrayList中,它指示当前正在使用的PooledConnection集合。当调用PooledDataSource的getConnection()方法时,将首先从idleConnections集合中获取PooledConnection对象。如果没有,看集合是否已满。如果没有,PooledDataSource将创建一个PooledConnection,将其添加到集合中并返回。
(视频教程推荐:java课程)
5、SpringMVC的工作原理
用户发送请求,被前端控制器DispatcherServlet捕获并拦截;
DispatcherServlet调用HandlerMapping处理器映射管理对象,获得Handler处理器;
DispatcherServlet根据Handler获取合适的适配器HandlerAdpter,HttpMessageConveter将请求信息转换为指定的响应对象;
有了适配器,请求参数被填入处理程序,处理程序,spring开始执行处理程序(控制器)进行数据转换、数据验证和数据格式化。
处理程序执行后,向DispatcherServlet返回ModelAndView对象;
根据返回的ModelAndView选择合适的ViewResolver视图解析器,找到ModelAndView指定的视图;
ViewResolver结合模型和视图来呈现显示页面;以上是多年开发经验总结出来的Java面试题——(七)的详细内容。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。