目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
连接池
1、什么是连接池?我们为什么需要它?
连接池允许多个客户端使用缓存起来的连接对象,这些对象可以连接数据库,它们是共享的、可被重复使用的。
打开/关闭数据库连接开销很大,连接池技术允许我们在连接池里维护连接对象,这样可以提高数据库的执行命令的性能。多个客户端请求可以重复使用相同的连接对象,当每次收到一个客户端请求时,
就会搜索连接池,看看有没有闲置连接对象。如果没有,要么所有的客户端请求都进入队列排队,要么在池中创建一个新的连接对象(这取决于池里已有多少个连接存在以及配置支持多少连接)。
一旦某个请求使用完连接对象之后,这个对象会被重新放入池中,然后会被重新分派给排队等待的请求(分派给哪个请求要看使用什么调度算法)。
因为大部分请求都是使用现存的连接对象,所以连接池技术大大减少了等待创建数据库连接的时间,从而减少了平均连接时间。
2、如何使用连接池?
连接池在基于网络的企业级应用中很常见,应用服务器负责创建连接对象、添加它们到连接池中,分派连接对象给请求,回收使用完毕的连接对象,重新将它们放回连接池去。
当网络应用创建数据库连接时,应用服务器会从池中取出连接对象,而当它使用完毕之后关闭时,应用服务器又负责将使用完的连接对象放回池中。
3、连接池可以处理多少连接?谁创建/释放连接?
可以进行配置最大的连接数、最小连接数、最大空闲连接数等,所有这些参数都可以由服务器管理员配置。服务器启动时,固定数量的连接对象(配置的最小连接数)被创建,并添加到连接池中。
当客户端请求消耗完所有的连接对象时,再有新的请求都会创建新的连接对象,它们被添加到连接池再分派给这个新的请求,直到设置的达到最大的连接数。
服务器也会一直查看闲置的连接对象数,当检测到闲置的连接数超过设置值时,服务器会关闭闲置连接,然后它们将被垃圾回收。
4、传统的连接池 vs 可管理的连接池
连接池是个开放的概念,任何应用都可以使用这个概念,并用自己想要的方式管理它。连接池概念指的是创建、管理、维护连接对象。
但当应用的规模增大时,如果没有一个健壮的连接池机制的话,管理连接是会得越来越困难。因此,建立一个健壮的、可管理的连接池很有必要。
线程与线程池,连接与连接池
线程:程序执行流的最小单元,进程中的一个实体,一个相对独立的、可调度的执行单元,是被系统独立调度和分派的基本单位;
多线程技术,指在一个进程当中可以创建多个线程来“同时”处理多个事务;
线程池:可以理解为缓冲区,由于频繁的创建销毁线程会带来一定的成本,可以预先创建,但不立即销毁,以共享方式为别人提供服务,一来可以提供效率,再者可以控制线程无线扩张。
连接:指一点与另一点的连接;
连接池:跟线程池有同样的妙处,但连接池可以是基于多线程来实现,也可以通过多进程来实现,也可能是单实例的。
举个例子:
Socket在做为服务时,可以同时监听多个客户端连接,那么它的实现原理就有点像“连接池”;每个客户通过多个端口同时向服务器发送数据,可以认为是多线程,
而服务器可能已经建立好了n个线程来等待同时处理/分析客户端发来的数据,可以为是有个“线程池”。
线程的几种状态
线程在一定条件下,状态会发生变化。线程一共有以下几种状态:
1、新建状态(New):新创建了一个线程对象。
2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权,即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。
3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。
4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。
阻塞的情况分三种:
①等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,
②同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。
③其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时,或者I/O处理完毕时,线程重新转入就绪状态。
5、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
每一天都是一个机会,让自己成为更好的人。不要让过去的错误和失败阻止你前进,相反,它们应该激励你变得更加坚强和有决心去追求自己的目标。最重要的是,相信自己,永不放弃。
只有坚定的信念和不懈的努力才能铸就辉煌的人生;要想成为成功人士,必须拥有敢于冒险、勇于创新的精神;只有勇往直前、永不放弃,才能在人生道路上走得更远。
只有拼尽全力,才能看到真正的自己。每一次努力都会获得回报,只要坚持不懈,终将成功。成为更好的自己需要的是行动和耐心,所以不要放弃,继续前进!