面试疑难点解析——Java数据库开发(六)

简介: 本文通过案例向同学们阐明检测数据库更新的两个误区以及连接池实现原理。

7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!14位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!戳下图或链接马上投递简历:
图片无法显
点击图片或戳我查看详情和投简历

检测数据库更新


本案例的需求在于:数据库有可能会被更改,一旦里面的内容发生了改变,程序可以做出一些反应,但在这种实现里面会有一个误区:触发器。触发器只能在数据库层次上存在,一旦出现了更新问题,直接的影响就是,触发器只能够调用一些过程处理,这样一来如果在分布式的数据库开发环境之中根本就不可取(触发器绝对不可能用)。

另外一个误区:定期进行数据库的检测,例如:1秒查询一次数据库,做一次比对,这就相当于额外追加了数据库的负荷。

image.png

如果你的系统每秒更新十次,劝你别用了,干脆就直接将更新在业务中处理完成。

连接池实现原理


如果想要实现一个连接池,本质的实现思想就是一个Connection的对象数组,这个对象数组并不是无限开辟的,是有上限的,最初的数据库手工连接池的实现可以采用Map集合完成。在进行处理的时候,Map集合里面保存有全部连接池的可用连接(最小维持数、最大可打开数,最大等待时间),实现思路:

- 所有的连接对象被Map集合所管理,但是这个Map集合受到最大连接数的控制,如果现在需要获取数据库连接,发现已经没有可用的连接了,这个时候应该开辟新的连接,同时需要保证连接池是有上限的。

- 在获取连接的时候如果发现连接已经满了,这个时候应该追加一个等待唤醒机制,对于连接池的控制,如果发现没有连接,则等待新的连接到来,就可以采用线程的等待与唤醒机制来完成。

- 连接池中的连接使用完成后一定要关闭,这个关闭并不是彻底关闭数据库的连接,而是说将这个连接的可用性重新放回到连接池中,也就是说为连接池里设置一个标记(标记为true,就表示该连接可用,如果没有true的连接了,就表示连接池满了,当把连接放回去之后将这个标记设置为false,就表示有空余连接了)。

- 如果现在要去考虑连接池的实现,最好的做法就是使用ConcurrentHashMap子类来实现,这个类考虑到了并发性,并且也可以有很好的同步处理效果。

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

相关文章
|
12月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
Java 开发者
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
552 0
|
10月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
528 1
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
420 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
12月前
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
604 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
1795 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
SQL 调度 数据库
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。

推荐镜像

更多
  • DNS