当前位置: 首页 > news >正文

做视频投稿赚钱的网站好wordpress快速登陆插件

做视频投稿赚钱的网站好,wordpress快速登陆插件,网络营销方案制定,wordpress插件微信来源 | 犀牛饲养员的技术笔记封图| CSDN 下载于视觉中国背景介绍数据库连接池和线程池等池技术存在的意义都是为了解决资源的重复利用问题。在计算机里#xff0c;创建一个新的资源往往开销是非常大的。而池技术可以统一分配#xff0c;管理某一类资源#xff0c;它允许我们… 来源 | 犀牛饲养员的技术笔记封图| CSDN 下载于视觉中国背景介绍数据库连接池和线程池等池技术存在的意义都是为了解决资源的重复利用问题。在计算机里创建一个新的资源往往开销是非常大的。而池技术可以统一分配管理某一类资源它允许我们的程序可以重复的使用这个资源只有在极端情况下比如连接池满才会创建新的资源。数据库连接这种资源尤其昂贵它的创建开销很大大量的创建连接和释放操作对程序的影响非常明显。数据库连接池正是针对这个问题提出来的。实现原理需要注意的是我们下面提供的几种实现方式都是基于简单的原型目的是带你了解连接池实现的一些基本原理。真实的数据库连接池技术需要考虑更多复杂的细节。所以下面这些代码都是不能在生产上直接使用的。实现的时候会用到java.sql.Connection由于这个只是一个接口无法创建实例为了演示方便我继承这个接口写了一个简单的测试类只是在commit方法里加了延时模拟提交。实现方式1很容易马上想到的一种方案我们用一个map存放连接对象需要的时候从map里拿来用就可以了。这里需要注意尽管我们使用了线程安全的ConcurrentHashMap来存放连接资源getConnection方法依然要加上synchronized关键字来避免并发问题。这一点是最容易忽略的。试想一下假设在某个场景下我们希望某个应用的多个线程共享连接资源。假设有2个线程同时执行到了pool.containsKey(key)然后都返回false那这两个线程都会创建连接。虽然ConcurrentHashMap的put方法只会加入其中一个但还是生成了1个多余的连接。原因在于尽管ConcurrentHashMap本身每个操作都是线程安全的但是当这些操作组合在一起使用的时候就无法保证原子性了所以有可能带来并发的问题。这里友情提示下面试经常会遇到这个考点哦。实现方式 2第二种实现方式是在1的基础上进行的优化。1的方案有个问题就是每次访问getConnection都要加锁释放锁效率比较低。第二种方案是利用java并发包里的Future机制来解决并发场景创建多余连接的问题。我们来捋一捋这个实现会不会有并发的问题。假设两个线程同时进入else分支在代码的28行ConcurrentHashMap可以确保只有一个线程会执行也就是只会加入一个task。其它的线程都不会加入成功。所以只有一个线程connectionFutureTask null这个线程开始异步执行创建连接的任务而其它的线程则会调用FutureTask的get方法直接获取结果。实现方式31和2的实现方式还存在一个问题 多个线程获取到的其实同一个连接。这种方案在某些场景下是不允许的。比如spring数据库的事务管理器对于每个事务的处理线程都要求独立的连接资源。下面的方案基于链表结构有比较完整的获取释放的操作不同的线程可以拿到独立的连接资源。注意到这个方案我们在获取连接的时候引入了超时时间如果该方法能够在一段时间内获取到结果那么将结果立刻返回反之超时返回默认结果。druid连接池的实现原理了解了实现连接池的大概思路我们可以来继续学习下市面上比较成熟的连接池产品。这其中阿里巴巴开源的druid开源连接池就是一个代表。Druid作为java领域最好的连接池技术之一连接池本身只是它的一部分功能。除此之外它还还要配套的监控功能。当然这个不是我们本文的重点。先来看看在代码中如何使用Druid连接池所以继续深入到是DataSource里的getConnection方法init方法主要的功能是根据配置文件初始化连接池它内部会生成一些真正的物理连接然后放入一个数组里。当然这个方法要保证只会被调用一次。继续往下看最终会调用到getConnectionInternal这个私有方法红色圈出的部分是核心根据传入的等待时间走不同的分支我们来看看takeLast方法。代码逻辑也比较清楚poolCount是连接池的目前的可用连接数量。如果为0就通过emptySignal唤醒生产者线程创建新的连接同时当前线程挂起等待notEmpty的信号。notEmptyWaitCount维护的就是正在等待的消费者数量。如果不为0就从数组中取出最后一个连接返回。有人可能会有疑问这里返回的是DruidConnectionHolder不是Connection啊其实看下前者的定义你就明白了DruidConnectionHolder封装了Connection以及连接的datasource信息还有多个statement等方面进行统一管理。参考《java并发编程的艺术》https://www.cnblogs.com/cz123/p/7693064.html推荐阅读Docker 开发环境的滑坡 2020年边缘计算最新前沿报告如何与核心云、5G、AI协同如何打造新业态和部署运营 教你用 Android 做二次开发识别率达到科大讯飞语音输入水平 | 原力计划 比特币Logo背后有哪些历史及象征意义Logo 上的“B”为什么会向右倾斜? 了解这4个重点带你探索未来将如何设计智能系统和机器人 苹果阻止上架的这款软件到底有多可恶 真香朕在看了
http://www.zqtcl.cn/news/722013/

相关文章:

  • 石家庄桥西网站制作公司wordpress 使用插件下载
  • 深圳外贸建站网络推广哪家好制造业小程序网站开发
  • 电子商务网站开发步骤宁波制作网站知名
  • 网站建设所需网站是别人做的 ftp账号吗
  • 网站集约化建设情况的汇报做网站为什么要买网站空间
  • 专业定制网站开发公司中堂东莞网站建设
  • 如何提交网站给百度建立类似淘宝的网站
  • 苏州企业建站公司网站建设属于广告费吗
  • 做网站找企业信息管理平台
  • 泉州企业制作网站网站建设竞价托管外包
  • 如何建立电子商务网站网站制作地点
  • 网站建设设计目的memcached wordpress
  • 潍坊作风建设年网站上海到北京火车时刻表查询
  • 网站建设 项目要求手机软件app
  • 什么是做网站wordpress 七牛视频
  • 家乡网站建设策划书angular做的网站
  • 土豆网网站开发源代码thinkphp5做的网站
  • lng企业自建站wordpress 分页 美化
  • 手机版网站如何做新闻类网站怎么做百度推广
  • 网站开发工程师 上海合肥网站到首页排名
  • 商城网站后续费用请人代做谷歌外贸网站
  • 汽车网站有哪些3d家装效果图制作软件
  • 荆门做网站公众号的公司网站百度不收录的原因
  • 专门做羽毛球的网站福州seo网站排名
  • 网站返回503的含义是门户网站开发合同
  • 自己做网站的成本要哪些东西wordpress模板如何管理系统
  • 做一般的网站要多久wordpress写文章页面无法显示
  • 人和兽做的网站视频汽车建设网站开发流程
  • 长春市建设工程造价管理协会网站厦门网站建设费用
  • 广东建设信息公开网站怎样策划一个营销型网站