面试疑难点解析:开发工具及框架(八)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 以下两个问题是某同学面试时面试官提问的,如果有同学要去面试,关于这两个问题的回答,可以参照以下内容~

lucene总结

是一个全文检索开发框架,它的主要功能是提高检索性,例如:在实际的互联网开发项目里面,如果进行某些关键字的搜索,一定是希望尽快给出结论,而这样的搜索是不可能使用数据库实现的,因为数据库唯一可用的方式是使用LIKE字句,而这种语句需要逐行扫描,所以性能是最差的。

在2005年是Apache推出lucene开发框架,这个开发框架本身设计很好,但中文支持不好(没有中文分词器)。

分词器,是将用户输入的一段文本,按照逻辑拆分成一些关键词。例如:现在你需要搜索“中华人民共和国”,如果有了分词器,它会自动进行文字拆分,可以拆分为:中华、人民、共和国、人民共和国、华人、中国。如果没有中文分词器,以上内容就无法实现。当时国内出现了一些国人的分词器,例如:庖丁解牛.jar。

lucene如果有更好的中文分词器(适合于新版本),那么就可以一直使用下去,该搜索主要是基于文件的模式完成的,在文件里会设置一系列搜索的索引库,通过索引库进行快速检索实现。

Hibernate Session生命周期

Hibernate里面没有Session生命周期,Session严格来讲就是指每一个用户,实体层里Session有俩点作用(基于Hibernate):

1.是维护对象的状态,也就是持久态问题:如果现在使用了Session对象的get()、load()方法进行某一个数据查询,默认情况下只要Session不关闭,那就表示该Session中的对象一直与数据库中的实例关联,这个时候如果调用了POJO类的setter方法修改的数据,就会引起数据表中对应数据行的数据改变,这个就是持久态的设计,而这个设计也是Hibernate最烂的一点,十年前这是最好的设计,因为此设计与EJB(Entit Bean)效果是一样的。

2.是进行一级缓存使用的:指的是如果要进行get()、load()数据查询,只要该数据查询了一次,并且在Session不关闭的情况下继续重复使用,那对于Hibernate而言是不会继续重复发出查询指令的,而是会将对象默认保存在内存里面,如果发现有同样的主键查询,就直接通过内存加载。

Hibernate的session是在使用的时候通过SessionFactory打开(Spring整合的时候也是使用SessionFactory打开),这个打开和关闭在使用之前和之后自动处理操作。

这里有一个问题:在Spring和Hibernate整合的时候由于存在一个数据的延迟加载机制,所以Spring里面会提供一种策略:“OpenInView”指的是Hibernate的Session延迟到页面显示完毕后再进行关闭,这样就解决了数据的级联显示操作,但这种处理会对事务控制造成困难,所以此类开发好像在实际工作中没有出现过。

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
110 2
|
27天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
1月前
|
Java 程序员
面试官的加分题:super关键字全解析,轻松应对!
小米,29岁程序员,通过一个关于Animal和Dog类的故事,详细解析了Java中super关键字的多种用法,包括调用父类构造方法、访问父类成员变量及调用父类方法,帮助读者更好地理解和应用super,应对面试挑战。
46 3
|
2月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
140 2
|
2月前
|
存储 NoSQL MongoDB
MongoDB面试专题33道解析
大家好,我是 V 哥。今天为大家整理了 MongoDB 面试题,涵盖 NoSQL 数据库基础、MongoDB 的核心概念、集群与分片、备份恢复、性能优化等内容。这些题目和解答不仅适合面试准备,也是日常工作中深入理解 MongoDB 的宝贵资料。希望对大家有所帮助!
|
2月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
40 0
|
5月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
2月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
2月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

热门文章

最新文章

推荐镜像

更多