CN110427271A - 建立连接的方法、装置、存储介质和计算机设备 - Google Patents
建立连接的方法、装置、存储介质和计算机设备 Download PDFInfo
- Publication number
- CN110427271A CN110427271A CN201910608077.XA CN201910608077A CN110427271A CN 110427271 A CN110427271 A CN 110427271A CN 201910608077 A CN201910608077 A CN 201910608077A CN 110427271 A CN110427271 A CN 110427271A
- Authority
- CN
- China
- Prior art keywords
- connection
- connecting object
- obstruction
- chained list
- list queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Abstract
本申请涉及一种建立连接的方法、装置、存储介质和计算机设备,所述方法包括:确定待连接的目标对象;通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;所述阻塞链表队列的出入口均利用互斥锁进行标记;所述连接对象封装有用于连接的类实例;检测所述连接对象对应的连接的有效性,获得有效性检测结果;当所述有效性检测结果表示所述连接对象所对应的连接为有效连接时,按照所述连接对象建立与所述目标对象之间的连接;在与所述目标对象完成连接后,将所述连接对象释放至所述阻塞链表队列。本申请提供的方案可以有效地避免增大资源开销从而影响系统性能。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种建立连接的方法、装置、存储介质和计算机设备。
背景技术
对于存放大量数据的存储系统而言,通常会有来自众多终端的各应用程序发起的连接请求,以获取对应的数据。目前,批量调度系统通常会采用多线程的调度方式,即为每个线程创建一个连接用于访问存储系统,访问完成后再断开该存储系统的连接,其它线程需要访问存储系统时,再重新创建存储系统的连接,如此,频繁的建立和断开连接,将会增大资源开销从而影响系统性能。
发明内容
基于此,有必要针对当大量应用访问存储系统时重复创建连接,从而增大资源开销从而影响系统性能的技术问题,提供一种建立连接的方法、装置、存储介质和计算机设备。
一种建立连接的方法,所述方法包括:
确定待连接的目标对象;
通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;所述阻塞链表队列的出入口均利用互斥锁进行标记;所述连接对象封装有用于连接的类实例;
检测所述连接对象对应的连接的有效性,获得有效性检测结果;
当所述有效性检测结果表示所述连接对象所对应的连接为有效连接时,按照所述连接对象建立与所述目标对象之间的连接;
在与所述目标对象完成连接后,将所述连接对象释放至所述阻塞链表队列。
在一个实施例中,所述确定待连接的目标对象之前,所述方法还包括:
配置阻塞链表队列的容纳量;
按照所述容纳量初始化连接对象;
按照所述连接对象的优先级依次将所述连接对象存入所述阻塞链表队列。
在一个实施例中,所述通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象包括:
判断阻塞链表队列中是否存在连接所述目标对象的连接对象;
若存在,则通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;
若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
在一个实施例中,所述方法还包括:
判断连接活动数量是否达到预设阈值;
当未达到预设阈值时,则执行所述通过连接池创建连接对象的步骤,并按照预设递增值对所述连接活动数量进行递增处理;
当达到预设阈值时,则输出异常信息。
在一个实施例中,所述方法还包括:
当连接活动数量为零时,遍历所述阻塞链表队列中的连接对象;
计算所遍历的连接对象处于游离状态下的时长;
判断所述时长是否达到预设时长;
若所述时长达到所述预设时长时,则将所述时长达到所述预设时长的连接对象进行销毁。
一种建立连接的装置,所述装置包括:
确定模块,用于确定待连接的目标对象;
获取模块,用于通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;所述阻塞链表队列的出入口均利用互斥锁进行标记;所述连接对象封装有用于连接的类实例;
检测模块,用于检测所述连接对象对应的连接的有效性,获得有效性检测结果;
连接建立模块,用于当所述有效性检测结果表示所述连接对象所对应的连接为有效连接时,按照所述连接对象建立与所述目标对象之间的连接;
释放模块,用于在与所述目标对象完成连接后,将所述连接对象释放至所述阻塞链表队列。
在一个实施例中,所述装置还包括:
初始化模块,用于确定待连接的目标对象之前,配置阻塞链表队列的容纳量;按照所述容纳量初始化连接对象;按照所述连接对象的优先级依次将所述连接对象存入所述阻塞链表队列。
在一个实施例中,所述获取模块还用于:
判断阻塞链表队列中是否存在连接所述目标对象的连接对象;
若存在,则通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;
若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
在一个实施例中,所述装置还包括:
第一处理模块,用于判断连接活动数量是否达到预设阈值;当未达到预设阈值时,则执行所述通过连接池创建连接对象的步骤,并按照预设递增值对所述连接活动数量进行递增处理;当达到预设阈值时,则输出异常信息。
在一个实施例中,所述装置还包括:
第二处理模块,用于当连接活动数量为零时,遍历所述阻塞链表队列中的连接对象;计算所遍历的连接对象处于游离状态下的时长;判断所述时长是否达到预设时长;若所述时长达到所述预设时长时,则将所述时长达到所述预设时长的连接对象进行销毁。
上述建立连接的方法、装置、存储介质和计算机设备,在标记互斥锁的阻塞链表队列中获取用于连接目标对象的连接对象,从而只有当前应用线程可以获取连接对象,而其它应用线程将无法从阻塞链表队列中获取连接对象,从而避免其它线程获得相同的连接对象而造成冲突;此外,对连接对象进行有效性判断,在确定连接对象为有效时,按照该连接对象与目标对象建立连接,并在连接完成后,将连接对象释放至阻塞链表队列中,从而可以使连接对象可以被多个应用线程复用,从而避免增大资源开销从而影响系统性能。
附图说明
图1为一个实施例中建立连接的方法的应用环境图;
图2为一个实施例中建立连接的方法的流程示意图;
图3为一个实施例中连接池功能的界面示意图;
图4为另一个实施例中建立连接的方法的流程示意图;
图5为一个实施例中建立连接的装置的结构框图;
图6为另一个实施例中建立连接的装置的结构框图;
图7为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中建立连接的方法的应用环境图。参照图1,该建立连接的方法应用于建立连接的系统。该建立连接的系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110确定待连接的目标对象;通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;阻塞链表队列的出入口均利用互斥锁进行标记;连接对象封装有用于连接的类实例;检测连接对象对应的连接的有效性,获得有效性检测结果;当有效性检测结果表示连接对象所对应的连接为有效连接时,按照连接对象建立与目标对象之间的连接;在与目标对象完成连接后,将连接对象释放至阻塞链表队列。其中,上述的目标对象可以是服务器120中的一个,或者可以是数据库。
终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,在一个实施例中,提供了一种建立连接的方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图2,该建立连接的方法具体包括如下步骤:
S202,确定待连接的目标对象。
其中,目标对象可以是存储系统,具体如存储数据的服务器或数据库。
在一个实施例中,终端获取应用程序所执行的目标任务;其中,该目标任务可以是从数据库中读取或写入数据,或者是与服务器建立通信连接,如TCP(TransmissionControl Protocol,传输控制协议)连接。终端根据目标任务确定待连接的目标对象。
例如,用户登录应用程序,想在应用程序上查看各类型车辆的车辆信息,此时,应用程序将会产生一个查看车辆信息的目标任务,终端通过该目标任务确定待连接的目标对象,该目标对象可以是存放车辆信息的数据库。
S204,通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;阻塞链表队列的出入口均利用互斥锁进行标记;连接对象封装有用于连接的类实例。
其中,应用线程可以是应用程序启动后创建的、且为操作系统中能够进行运算调度的最小单位,通过该应用线程可以调度操作系统中的资源。
阻塞链表队列的内部维持着一个数据缓冲队列(该队列由链表构成),当创建连接对象时,阻塞链表队列会获取该连接对象,并缓存在阻塞链表队列的内部;当阻塞链表队列的缓冲区达到最大值缓存容量时,将会阻塞生产者(该生产者是指创建连接对象的应用程序)队列,直到消费者(该消费者是指使用连接对象的应用程序)从阻塞链表队列中使用完连接对象时,生产者线程被唤醒。反之,当阻塞链表队列的缓冲区不存在连接对象时,将会阻塞消费者队列,当生产者创建连接对象后,消费者线程被唤醒。
阻塞链表队列承载于连接池对象中,而连接池对象是封装了阻塞链表队列、连接对象和监控对象等的一个类实例。连接池是用于负责分配、管理和释放连接,允许应用程序重复使用一个现有的连接,而不是重新建立一个连接,从而使连接池中的连接可以得到高效和安全的复用,避免了连接频繁建立和关闭。本实施例中,建立连接的方法是基于连接池的基础上建立数据库连接或TCP连接的方法。
互斥锁可以用于避免其它线程从阻塞链表队列中获得相同的连接对象造成冲突,对阻塞链表队列的出入口进行标记,可以保证在任一时刻只能有一个线程访问该阻塞链表队列。
连接对象封装有用于连接的类实例,该类实例具体可以是用于连接的实例方法,通过该实例方法可以建立应用程序与目标对象之间的连接。
在一个实施例中,S202之前,终端创建多个连接,得到对应的连接对象,并将连接对象存入阻塞链表队列中。终端通过应用线程从阻塞链表队列中获取连接对象,也就是说,该连接对象对应的连接被分配给应用程序,应用程序无需另外创建一个连接以连接到目标对象。
具体地,终端通过应用线程,从连接池对象的阻塞链表队列中获取用于连接目标对象的连接对象。其中,连接池对象封装了阻塞链表队列、连接对象和监控对象的类实例。通过该连接池对象,可以具有以下功能,具体如图3所示:
(1)阻塞链表队列,用于承载连接对象。阻塞链表队列具有先进先出特点,第一个入列的执行点位于头部,最后一个入列位于尾部。阻塞链表队列的头部和尾部均采用互斥锁实现线程安全。
(2)连接池对象接口初始最小容纳的连接对象数(即连接池的容纳量),并初始化多个连接,将对应的连接对象加入到阻塞链表队列中。此外,还可以通过连接池对象接口进行销毁连接对象、借出连接对象、计算连接活动数量、释放和归还连接对象、检测连接对象、关闭连接池、负责连接池的线程安全等。
(3)连接对象负责具体的连接、连接的创建、关闭连接和计算游离时间。其中,具体的连接可以是DB连接,也可以是TCP连接等等。
(4)监控对象,负责队列在没有活动的连接时对连接的有效性监控,对连接的游离状态监控,连接的重新连接等。
在一个实施例中,S202之前,该方法还可以包括:终端配置阻塞链表队列的容纳量;按照容纳量初始化连接对象;按照连接对象的优先级依次将连接对象存入阻塞链表队列。
例如,终端按照阻塞链表队列的最小容纳初始化多个连接,得到对应的连接对象,然后将连接对象加入阻塞链表队列。
在一个实施例中,S202具体可以包括:终端判断阻塞链表队列中是否存在连接目标对象的连接对象;若存在,则通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
在一个实施例中,终端判断连接活动数量是否达到预设阈值;当未达到预设阈值时,则执行通过连接池创建连接对象的步骤,并按照预设递增值对连接活动数量进行递增处理;当达到预设阈值时,则输出异常信息。
例如,阻塞链表队列是按照最小容纳存放连接对象,当阻塞链表队列中的连接对象被出借完时,当前的应用程序在需要与目标对象建立连接时,将无法获得从阻塞链表队列中获得连接对象,此时,可以通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。其中,在通过连接池创建连接对象时,终端可以先判断连接活动数量是否大于限定的最大连接数,若未达到,则通过连接池创建连接对象。
在一个实施例中,S204之后,该方法还可以包括:终端获取当前的连接活动数量,并对该连接活动数量进行加一。其中,连接活动数量用于表示连接相应对象的连接数目。
S206,检测连接对象对应的连接的有效性,获得有效性检测结果。
在一个实施例中,终端在获得连接对象时,对连接对象所对应的连接进行有效性检测,若连接无效,该连接对象对应的连接将会被销毁,并对连接活动数量进行减一。终端重新获取互斥锁,从连接池内的阻塞链表队列中获取连接对象,当获取连接对象后,对连接活动数量进行加一。
例如,假设连接为socket连接,终端检测socket的connect状态,根据connect状态来确定连接是否有效。例如,connect状态处于正常连接状态,标识该连接为有效。
S208,当有效性检测结果表示连接对象所对应的连接为有效连接时,按照连接对象建立与目标对象之间的连接。
在一个实施例中,按照连接对象建立与目标对象之间的连接的步骤,具体可以包括:终端复用连接对象对应的连接,从而建立应用程序与目标对象之间的连接。
S210,在与目标对象完成连接后,将连接对象释放至阻塞链表队列。
在一个实施例中,当应用程序使用完连接之后,向连接池请求获得互斥锁,在获得互斥锁后,将连接对象释放至阻塞链表队列,并将连接活动数量减一。
在一个实施例中,当连接活动数量为零时,终端遍历阻塞链表队列中的连接对象;计算所遍历的连接对象处于游离状态下的时长;判断时长是否达到预设时长;若时长达到预设时长时,则将时长达到预设时长的连接对象进行销毁。
在一个实施例中,连接池中保存有监控对象,连接池中的监控对象将会实行定期检查,当连接活动数量为零时,终端获得互斥锁后遍历连接池中的连接对象,检查连接对象的游离状态,当连接对象处于游离状态的时间超过预设游离时间时,连接对象所对应的连接会被关闭销毁,直到连接池中剩余最小容纳的连接对象数。
上述实施例中,在标记互斥锁的阻塞链表队列中获取用于连接目标对象的连接对象,从而只有当前应用线程可以获取连接对象,而其它应用线程将无法从阻塞链表队列中获取连接对象,从而避免其它线程获得相同的连接对象而造成冲突;此外,对连接对象进行有效性判断,在确定连接对象为有效时,按照该连接对象与目标对象建立连接,并在连接完成后,将连接对象释放至阻塞链表队列中,从而可以使连接对象可以被多个应用线程复用,从而避免增大资源开销从而影响系统性能。
作为一个示例,如图4所示,建立连接的方法可以包括以下步骤:
(1)按照最小容纳的连接数初始化多个连接对象,将连接对象加入阻塞链表队列。
(2)应用线程发起请求,请求连接池以借用连接。
(3)应用线程获得互斥锁,从队列头部借出连接对象,并对连接对象进行检测,检测连接是否有效。
(4)若连接无效,将连接销毁,并重新获取互斥锁再借出连接对象,连接活动数+1。
(5)返回连接,应用线程获得连接对象。
(6)连接使用完成后,请求连接池获得互斥锁后,归还连接对象,连接活动数-1。
(7)应用线程请求连接,如果发现阻塞链表队列中无连接可用,需判断连接活动数是否达到限定的阈值,如果没有到达阈值,则直接创建新的连接,连接活动数+1;如果达到阈值,返回异常信息。
(8)监控对象实行定期检查,当连接活动数为零时,获得互斥锁后遍历池中的连接对象,检查连接对象的游离状态,超过游离时间的连接会被关闭销毁,直到剩余最小的连接数。
其中,阻塞链表队列(LinkedBlockingQueue):阻塞链表队列的内部基于链表来存放元素,是队列的一种,可以使用阻塞方式获取队列头部对象,也可以非阻塞方式获取头部对象,队列对象的增加、获取都实现了线程安全模式。
尾部:即队列尾部,新进入队列的对象都为队列尾部的对象。
头部:即队列头部,最早进入队列的对象为头部的对象。
连接池对象:封装了阻塞链表队列、连接对象和监控对象等的类实例。
连接对象:封装了连接的一个类实例。
监控:异步监控类实例,包括游离监控、连接状态监控和连接数监控等。
游离状态:指连接一直在连接池没有被外部借用。
游离时间:对于没有被外部借用的连接,当前时间与该连接上一次释放至连接池的释放时间之间的时间差值。
连接活动数量:被借出使用的连接的统计数量。当连接池借出一个连接时,连接活动数量+1;连接释放归还连接池,连接活动数量-1。连接活动数量具有线程安全,原子性,全局性。
释放:连接使用完毕之后,需要放回至连接池中供其它线程调用。
销毁:关闭连接或者关闭连接池。
检查:检查连接是否有效。
互斥锁:确保当一个线程位于代码的临界区时,另一个线程不进入临界区,该另一线程可以立即返回,也可以等待。
图2、4为一个实施例中建立连接的方法的流程示意图。应该理解的是,虽然图2、4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图5所示,在一个实施例中,提供了一种建立连接的装置,该建立连接的装置具体包括:确定模块502、获取模块504、检测模块506、连接建立模块508和释放模块510;其中:
确定模块502,用于确定待连接的目标对象;
获取模块504,用于通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;阻塞链表队列的出入口均利用互斥锁进行标记;连接对象封装有用于连接的类实例;
检测模块506,用于检测连接对象对应的连接的有效性,获得有效性检测结果;
连接建立模块508,用于当有效性检测结果表示连接对象所对应的连接为有效连接时,按照连接对象建立与目标对象之间的连接;
释放模块510,用于在与目标对象完成连接后,将连接对象释放至阻塞链表队列。
在一个实施例中,如图6所示,该装置还包括:
初始化模块512,用于确定待连接的目标对象之前,配置阻塞链表队列的容纳量;按照容纳量初始化连接对象;按照连接对象的优先级依次将连接对象存入阻塞链表队列。
在一个实施例中,获取模块504还用于:
判断阻塞链表队列中是否存在连接目标对象的连接对象;
若存在,则通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;
若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
在一个实施例中,如图6所示,该装置还包括:第一处理模块514;其中:
第一处理模块514,用于判断连接活动数量是否达到预设阈值;当未达到预设阈值时,则执行通过连接池创建连接对象的步骤,并按照预设递增值对连接活动数量进行递增处理;当达到预设阈值时,则输出异常信息。
在一个实施例中,如图6所示,该装置还包括:第二处理模块516;其中:
第二处理模块516,用于当连接活动数量为零时,遍历阻塞链表队列中的连接对象;计算所遍历的连接对象处于游离状态下的时长;判断时长是否达到预设时长;若时长达到预设时长时,则将时长达到预设时长的连接对象进行销毁。
上述建立连接的方法、装置、存储介质和计算机设备,在标记互斥锁的阻塞链表队列中获取用于连接目标对象的连接对象,从而只有当前应用线程可以获取连接对象,而其它应用线程将无法从阻塞链表队列中获取连接对象,从而避免其它线程获得相同的连接对象而造成冲突;此外,对连接对象进行有效性判断,在确定连接对象为有效时,按照该连接对象与目标对象建立连接,并在连接完成后,将连接对象释放至阻塞链表队列中,从而可以使连接对象可以被多个应用线程复用,从而避免增大资源开销从而影响系统性能。
图7示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图7所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现建立连接的方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行建立连接的方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的建立连接的装置可以实现为一种计算机程序的形式,计算机程序可在如图7所示的计算机设备上运行。计算机设备的存储器中可存储组成该建立连接的装置的各个程序模块,比如,图5所示的确定模块502、获取模块504、检测模块506、连接建立模块508和释放模块510。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的建立连接的方法中的步骤。
例如,图7所示的计算机设备可以通过如图5所示的建立连接的装置中的确定模块502执行S202。计算机设备可通过获取模块504执行S204。计算机设备可通过检测模块506执行S206。计算机设备可通过连接建立模块508执行S208。计算机设备可通过释放模块510执行S210。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行:确定待连接的目标对象;通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;阻塞链表队列的出入口均利用互斥锁进行标记;连接对象封装有用于连接的类实例;检测连接对象对应的连接的有效性,获得有效性检测结果;当有效性检测结果表示连接对象所对应的连接为有效连接时,按照连接对象建立与目标对象之间的连接;在与目标对象完成连接后,将连接对象释放至阻塞链表队列。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行:确定待连接的目标对象之前,配置阻塞链表队列的容纳量;按照容纳量初始化连接对象;按照连接对象的优先级依次将连接对象存入阻塞链表队列。
在一个实施例中,计算机程序被处理器执行通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象的步骤时,使得处理器具体执行:判断阻塞链表队列中是否存在连接目标对象的连接对象;若存在,则通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行:判断连接活动数量是否达到预设阈值;当未达到预设阈值时,则执行通过连接池创建连接对象的步骤,并按照预设递增值对连接活动数量进行递增处理;当达到预设阈值时,则输出异常信息。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行:当连接活动数量为零时,遍历阻塞链表队列中的连接对象;计算所遍历的连接对象处于游离状态下的时长;判断时长是否达到预设时长;若时长达到预设时长时,则将时长达到预设时长的连接对象进行销毁。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行:确定待连接的目标对象;通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;阻塞链表队列的出入口均利用互斥锁进行标记;连接对象封装有用于连接的类实例;检测连接对象对应的连接的有效性,获得有效性检测结果;当有效性检测结果表示连接对象所对应的连接为有效连接时,按照连接对象建立与目标对象之间的连接;在与目标对象完成连接后,将连接对象释放至阻塞链表队列。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行:确定待连接的目标对象之前,配置阻塞链表队列的容纳量;按照容纳量初始化连接对象;按照连接对象的优先级依次将连接对象存入阻塞链表队列。
在一个实施例中,计算机程序被处理器执行通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象的步骤时,使得处理器具体执行:判断阻塞链表队列中是否存在连接目标对象的连接对象;若存在,则通过应用线程,从阻塞链表队列中获取用于连接目标对象的连接对象;若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行:判断连接活动数量是否达到预设阈值;当未达到预设阈值时,则执行通过连接池创建连接对象的步骤,并按照预设递增值对连接活动数量进行递增处理;当达到预设阈值时,则输出异常信息。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行:当连接活动数量为零时,遍历阻塞链表队列中的连接对象;计算所遍历的连接对象处于游离状态下的时长;判断时长是否达到预设时长;若时长达到预设时长时,则将时长达到预设时长的连接对象进行销毁。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种建立连接的方法,其特征在于,所述方法包括:
确定待连接的目标对象;
通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;所述阻塞链表队列的出入口均利用互斥锁进行标记;所述连接对象封装有用于连接的类实例;
检测所述连接对象对应的连接的有效性,获得有效性检测结果;
当所述有效性检测结果表示所述连接对象所对应的连接为有效连接时,按照所述连接对象建立与所述目标对象之间的连接;
在与所述目标对象完成连接后,将所述连接对象释放至所述阻塞链表队列。
2.根据权利要求1所述的方法,其特征在于,所述确定待连接的目标对象之前,所述方法还包括:
配置阻塞链表队列的容纳量;
按照所述容纳量初始化连接对象;
按照所述连接对象的优先级依次将所述连接对象存入所述阻塞链表队列。
3.根据权利要求1所述的方法,其特征在于,所述通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象包括:
判断阻塞链表队列中是否存在连接所述目标对象的连接对象;
若存在,则通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;
若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
判断连接活动数量是否达到预设阈值;
当未达到预设阈值时,则执行所述通过连接池创建连接对象的步骤,并按照预设递增值对所述连接活动数量进行递增处理;
当达到预设阈值时,则输出异常信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当连接活动数量为零时,遍历所述阻塞链表队列中的连接对象;
计算所遍历的连接对象处于游离状态下的时长;
判断所述时长是否达到预设时长;
若所述时长达到所述预设时长时,则将所述时长达到所述预设时长的连接对象进行销毁。
6.一种建立连接的装置,其特征在于,所述装置包括:
确定模块,用于确定待连接的目标对象;
获取模块,用于通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;所述阻塞链表队列的出入口均利用互斥锁进行标记;所述连接对象封装有用于连接的类实例;
检测模块,用于检测所述连接对象对应的连接的有效性,获得有效性检测结果;
连接建立模块,用于当所述有效性检测结果表示所述连接对象所对应的连接为有效连接时,按照所述连接对象建立与所述目标对象之间的连接;
释放模块,用于在与所述目标对象完成连接后,将所述连接对象释放至所述阻塞链表队列。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
初始化模块,用于确定待连接的目标对象之前,配置阻塞链表队列的容纳量;按照所述容纳量初始化连接对象;按照所述连接对象的优先级依次将所述连接对象存入所述阻塞链表队列。
8.根据权利要求6所述的装置,其特征在于,所述获取模块还用于:
判断阻塞链表队列中是否存在连接所述目标对象的连接对象;
若存在,则通过应用线程,从阻塞链表队列中获取用于连接所述目标对象的连接对象;
若不存在,则通过连接池创建连接对象,并通过应用线程获取所创建的连接对象。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910608077.XA CN110427271A (zh) | 2019-07-08 | 2019-07-08 | 建立连接的方法、装置、存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910608077.XA CN110427271A (zh) | 2019-07-08 | 2019-07-08 | 建立连接的方法、装置、存储介质和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110427271A true CN110427271A (zh) | 2019-11-08 |
Family
ID=68410332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910608077.XA Pending CN110427271A (zh) | 2019-07-08 | 2019-07-08 | 建立连接的方法、装置、存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427271A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971703A (zh) * | 2019-12-11 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 基于连接池的服务请求方法、装置、服务器和存储介质 |
CN112751933A (zh) * | 2020-12-30 | 2021-05-04 | 上海浦东发展银行股份有限公司 | 一种基于socket连接的数据传输方法 |
CN113449316A (zh) * | 2020-03-27 | 2021-09-28 | 武汉瓯越网视有限公司 | 一种程序的加密解密方法、装置和可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982141A (zh) * | 2012-11-20 | 2013-03-20 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式数据库代理的方法及装置 |
US8484242B1 (en) * | 2010-08-24 | 2013-07-09 | ScalArc, Inc. | Method and system for transparent database connection pooling and query queuing |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN105512188A (zh) * | 2015-11-25 | 2016-04-20 | 用友网络科技股份有限公司 | 数据连接方法和数据连接系统 |
CN109656996A (zh) * | 2018-12-14 | 2019-04-19 | 北京锐安科技有限公司 | 文本导入数据库方法、装置、设备及存储介质 |
-
2019
- 2019-07-08 CN CN201910608077.XA patent/CN110427271A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484242B1 (en) * | 2010-08-24 | 2013-07-09 | ScalArc, Inc. | Method and system for transparent database connection pooling and query queuing |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN102982141A (zh) * | 2012-11-20 | 2013-03-20 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式数据库代理的方法及装置 |
CN105512188A (zh) * | 2015-11-25 | 2016-04-20 | 用友网络科技股份有限公司 | 数据连接方法和数据连接系统 |
CN109656996A (zh) * | 2018-12-14 | 2019-04-19 | 北京锐安科技有限公司 | 文本导入数据库方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
矢泽妮可: "如何设计并实现一个db连接池", 《HTTPS://JUEJIN.CN/POST/6844903853872119822》 * |
矢泽妮可: "有没有想过,手写一个连接池?", 《微信公众号"方志朋"》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971703A (zh) * | 2019-12-11 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 基于连接池的服务请求方法、装置、服务器和存储介质 |
CN110971703B (zh) * | 2019-12-11 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 基于连接池的服务请求方法、装置、服务器和存储介质 |
CN113449316A (zh) * | 2020-03-27 | 2021-09-28 | 武汉瓯越网视有限公司 | 一种程序的加密解密方法、装置和可读存储介质 |
CN112751933A (zh) * | 2020-12-30 | 2021-05-04 | 上海浦东发展银行股份有限公司 | 一种基于socket连接的数据传输方法 |
CN112751933B (zh) * | 2020-12-30 | 2023-05-05 | 上海浦东发展银行股份有限公司 | 一种基于socket连接的数据传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110427271A (zh) | 建立连接的方法、装置、存储介质和计算机设备 | |
CN108256322B (zh) | 安全测试方法、装置、计算机设备和存储介质 | |
CN109502435A (zh) | 派梯方法、装置、计算机设备和存储介质 | |
CN110740057A (zh) | 一种业务部署方法以及区块链平台 | |
CN108834086A (zh) | 短信发送的方法、装置、计算机设备和存储介质 | |
CN101398873B (zh) | 加载第三方软件的方法及系统 | |
CN108334404A (zh) | 应用程序的运行方法和装置 | |
US20150304227A1 (en) | Queue Management Method and Apparatus | |
CN104412274B (zh) | 移动设备和控制方法 | |
CN111259374B (zh) | 权限异常检测方法、装置、计算机设备和存储介质 | |
CN112380563A (zh) | 节点访问方法、装置、设备及存储介质 | |
CN109831521B (zh) | 缓存实例管理方法、装置、计算机设备和存储介质 | |
CN116522355A (zh) | 一种电力数据边界保护方法、设备、介质及装置 | |
CN106548084A (zh) | 文件安全防护方法及装置 | |
CN109165509A (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
CN114356446A (zh) | 一种进程间事件的处理方法、装置、设备以及存储介质 | |
CN113128390B (zh) | 抽检方法、装置、电子设备及存储介质 | |
CN108650249A (zh) | Poc攻击检测方法、装置、计算机设备和存储介质 | |
CN111143209B (zh) | 分层压力测试方法、装置、电子设备及存储介质 | |
CN109597662B (zh) | 移动终端中非公开库的调用方法、装置及电子设备 | |
CN113688048B (zh) | 一种应用稳定性检测方法、装置、电子设备及存储介质 | |
CN113518055A (zh) | 数据安全防护的处理方法及装置、存储介质、终端 | |
Nguyen et al. | High robustness requirements in a common criteria protection profile | |
CN114006737B (zh) | 一种账号安全的检测方法及检测装置 | |
Li et al. | Application sandbox model based on system call context |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191108 |
|
RJ01 | Rejection of invention patent application after publication |