由一道笔试题引发的思考

qq_2116262779 2014-05-17 05:17:34
数据库连接池的基本原理(工作机制),为什么要使用连接池。

好几次的笔试题都是这个,无法解决啊!!! 百度不给力!!!!!!

求各位JAVA高手为我解决!!!!!!感激不尽啊!!!!!!!

解决好!!!!!我背下满意的答案!!!!!!!哈哈!!!!
...全文
705 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
leokelly001 2014-06-03
  • 打赏
  • 举报
回复
#7 说的差不多,只是连接用完了可以再放回数据库连接池中,不够用了也可以增加数量
Magical茏 2014-06-02
  • 打赏
  • 举报
回复
一到笔试题引发的思考?????? 第一次看到这个题目,我只是进来看了下,然后顶了一下精彩的7楼的回答,就匆匆离开 今天无聊,一个人闷在家刷论坛,看到此贴,我习惯性的进来,再次看完了此贴, 我想说楼主你确定根据这个笔试题思考了??? 好几次的笔试题都是这个,无法解决啊??好几次以后才开始思考?为什么前几次不思考? 用一楼的话来说"你确定你认真百度了?" 都去面试找工作了,连"连接池的基本原理"都说不出一句话? 你平时思考了?? 看了这些用户的回答,半个月过去了,用11楼的话来说"楼主呢?楼主咋不吱声呢"? 是否发过此贴就再也没看过此贴? 10楼说"感觉楼主有点懒",我现在到觉的,不是感觉懒,是真的很懒.
zy_think123 2014-06-02
  • 打赏
  • 举报
回复
每次访问的时候,再去建立太耗时了,所以建立数据库连接池,用于管理连接,同时当一个连接不用的时候,回收到连接池,这样不至于频繁的销毁,创建,有利于访问速率
Inhibitory 2014-06-01
  • 打赏
  • 举报
回复
1. 连接的重复实用,提高性能。 2. 连接如果没有被程序员手动的close,超时候会自动的被close。
「已注销」 2014-06-01
  • 打赏
  • 举报
回复
shuaiguo_18 2014-05-30
  • 打赏
  • 举报
回复
楼上正解,再说浪费口舌了
liuxing_yunxi 2014-05-20
  • 打赏
  • 举报
回复
感觉楼主有点懒
zhangzheqwe 2014-05-20
  • 打赏
  • 举报
回复
Magical茏 2014-05-20
  • 打赏
  • 举报
回复
引用 7 楼 anchor1 的回复:
简单比喻: 想吃苹果,两种方式:(1)一次买5个放冰箱里,每次吃的时候从冰箱里拿一个吃;(2)想吃的时候出去买1个。 当然是第一种方便快捷,只是一开始会稍耗资源。
精彩的回答
attilax 2014-05-20
  • 打赏
  • 举报
回复
为什么要使用连接池。:::一个原因,,性能。。
yufengdxw 2014-05-20
  • 打赏
  • 举报
回复
#7 说的差不多,只是连接用完了可以再放回数据库连接池中,不够用了也可以增加数量
聪头 2014-05-20
  • 打赏
  • 举报
回复
简单比喻: 想吃苹果,两种方式:(1)一次买5个放冰箱里,每次吃的时候从冰箱里拿一个吃;(2)想吃的时候出去买1个。 当然是第一种方便快捷,只是一开始会稍耗资源。
Juedaifanghua 2014-05-20
  • 打赏
  • 举报
回复
引用 10 楼 liuxing_yunxi 的回复:
感觉楼主有点懒
楼主呢?楼主咋不吱声呢 看了描述有了一定认识
chenxin1989cx 2014-05-20
  • 打赏
  • 举报
回复
个人理解:连接池的本质是一个容器 、集合,且有最小的容量和最大容量跟当前的容量,且池子中有连接的方法和释放的方法。当项目已发布的时候,开始数据库先建立里好连接,用户真的在请求servlet的时候,用户直接到池子里去拿个连接,该链接现在就不耗时,直接就可以连接数据库了,当下一个用户来访问的时候,访问servlet的时候,就可以到连接池里去找另外一个没有连接,继续连接数据库,这样子的话就提高了效率。这样就是在没有要使用数据库之前的时候,就已经连接好,然后进行缓存,用户要用的时候可以直接来拿连接。
小小强0124 2014-05-19
  • 打赏
  • 举报
回复
2楼正解
蜗牛_snail 2014-05-19
  • 打赏
  • 举报
回复
很难搞定 2014-05-19
  • 打赏
  • 举报
回复
1:机制 其实就是使用一个列表 可以理解成linkedlist 先进先出 初始化的时候 创建多个连接 到列表里面 注意 是冲头部进去 获取的时候 从尾部remove出来 当然 获取 和添加的时候 要有线程安全控制 设置个线程安全async 锁上 保证这个步骤是线程安全的。避免一个资源被多个地方同时使用。然后就是 连接多的时候就释放 少的时候就回收喽。 2:好处就不用多说,简单点就是节省资源时间 。要知道 创建连接是要话费资源和时间的 如果一个请求到来才去创建连接 然后再做逻辑操作 响应的时间就长了,资源还没计算在内。 如何并发量大的话 比如1000持续几分钟 估计服务器都挂了 连接池就是避免频繁创建和释放连接用的 。 注:各位大神 小弟说错了的话 你们就当没看见 这是我自己的看法 表喷我!
wu244534279 2014-05-18
  • 打赏
  • 举报
回复
这个不难吧。 基本原理:就是容器(比如说tomcat)会先创建一个装数据库连接的池,这个池一开始就有一定数量的池连接,然后用户要请求一数据库时,直接从池里拿一条连接用就行了,用的时候标明这个连接是忙的,其它用户就不能再用这个连接了,用完就把连接给放回池里,并标明这个连接是空闲的,其它用户可以拿去用啦。如果用户请求时,所有连接都为忙,那容器会根据配置考虑是否需要再创建一些连接到池里,如果不创建,其它用户再请求时,就必须等待别的用户释放连接了。 举个例子:学校的图书馆本来有10本A类书(创建池),学生S1借走了一本(用户请求),那它这本就不可能被别的学生借了(标志忙),必须等S1还回来(标志空)的时候别的学生才能借,但这时别的学生可以借另外9本A类书,假如有很多学生(超出10个)都经常需要借A这类书,学校可能会考虑再买一定数量的A类书(扩充池)。 为什么要用:创建数据库连接需要花费的时间很长,如果服务器一开始就帮创建好连接了,等用户请求到来就直接拿来用,岂不是省去了很多时间?就比如上面的例子,A类书很贵,一个学生买起来很困难,那由学校统一买了(学校有钱嘛),学生要用就直接去借,这就省了学生很多钱啦。
vnvlyp 2014-05-17
  • 打赏
  • 举报
回复
你确定你认真百度了? 讲基本原理的一搜一大把,光是百度百科就已经把大概原理讲清楚了 而且这些东西要自己理解,你光背了别人的理解有什么用?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧