阅读本文需要掌握双亲委托
JDBC违反双亲委托:
DriverManager无法使用Class.forName加载jdbc驱动,这是因为:
Class.forName()使用的类加载器是加载调用者的类加载器, 而调用者DriverManager是在rt.jar中被启动类加载的,所以Class.forName()使用的是启动类加载器,但jdbc驱动是需要自己实现的,那么肯定就不会在启动类路径中
所以DriverManager无法使用Class.forName加载jdbc驱动,这就是双亲委托的局限性:父级加载器无法加载子类加载器加载路径中的类。
所以DriverManager必须打破双亲委托才能加载jdbc驱动,为此只能使用"线程上下文加载器(Thread.currentThread. getContextClassLoader())"加载jdbc驱动,而不是启动类加载器,这里就破坏了双亲委托机制
快排凑字数,提升文章评分,帮助更多人看到,看懂可以关注我,了解更多大道至简
```java
public void quickSort(int[] nums,int l,int r){
int pivot=nums[l];
int a=l;
int b=r;
while(l<r){
while(l<r&&pivot<=nums[r]) //必须是<=,不可以是<,否则当nums[l]==nums[r]时,r和l无法继续前进
--r;
if(nums[r]<pivot)
nums[l]=nums[r];
while(l<r&&nums[l]<=pivot)
++l;
if(pivot<nums[l])
nums[r]=nums[l];
}
nums[l]=pivot;//最后跳出循环,必是l==r
if(a<l)
quickSort(nums,a,l-1);
if(l<b)
quickSort(nums,l+1,b);
}