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

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

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

检测数据库更新


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

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

image.png

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

连接池实现原理


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

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

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

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

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

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

相关文章
|
5天前
|
安全 前端开发 Java
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
19 3
|
6天前
|
供应链 Java API
Java 8新特性解析及应用区块链技术在供应链管理中的应用与挑战
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API和Optional类等。通过对这些新特性的详细解析和应用实例,帮助读者更好地理解和掌握Java 8的新技术。
|
7天前
|
安全 Java API
Java 8新特性深度解析
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API、Optional类等,以及这些新特性如何改变我们编写Java代码的方式。
|
7天前
|
Java 索引
Java String应用与开发
Java String应用与开发
17 0
|
7天前
|
算法 Java
【Java探索之旅】运算符解析 算术运算符,关系运算符
【Java探索之旅】运算符解析 算术运算符,关系运算符
15 0
|
8天前
|
安全 Java 开发者
构建高效微服务架构:后端开发的新范式Java中的多线程并发编程实践
【4月更文挑战第29天】在数字化转型的浪潮中,微服务架构已成为软件开发的一大趋势。它通过解耦复杂系统、提升可伸缩性和促进敏捷开发来满足现代企业不断变化的业务需求。本文将深入探讨微服务的核心概念、设计原则以及如何利用最新的后端技术栈构建和部署高效的微服务架构。我们将分析微服务带来的挑战,包括服务治理、数据一致性和网络延迟问题,并讨论相应的解决方案。通过实际案例分析和最佳实践的分享,旨在为后端开发者提供一套实施微服务的全面指导。 【4月更文挑战第29天】在现代软件开发中,多线程技术是提高程序性能和响应能力的重要手段。本文通过介绍Java语言的多线程机制,探讨了如何有效地实现线程同步和通信,以及如
|
8天前
|
存储 Java 大数据
JAVA:编程的艺术与实战解析
JAVA:编程的艺术与实战解析
17 2
|
28天前
|
存储 安全 Java
大厂面试题详解:java中有哪些类型的锁
字节跳动大厂面试题详解:java中有哪些类型的锁
55 0
|
2月前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
63 1
|
13天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
39 1

推荐镜像

更多