00:00
好,咱们写完单线程创建连接之后呢,再继续往下啊,呃,接下来呢,我们要写多线程的一个创建连接啊,为什么有多线程创建呢?哎,其实我们刚才写的代码呀,并不符合官方给予我们的推荐啊,它在最后一段里面有说啊,你这个一个连接啊,它是一个重量级的一个连接啊,这个连接呢,它是线程安全的啊,所以你一个客户端应该只创建一个连接啊,不要去创建多个啊,这里呢,就类似是一种单例模式啊,类似是一种单立模式,你在使用的时候呢,在使用这个table和ain的一个实例的时候啊,哎,On the on the other hand,另一方面对吧,那这个呢,并不是一个重量级的一个连接啊,它也不是线程安全的,就是说里面。属性table和ME2个小的连接,不是线程安全的,也不是重量级的,你在使用的时候呢,应该单线程里面去创建加关闭,但是你这个connection应该单单进程使用,相当于是单立模式啊,相当于是单立模式啊,这个table倒无所谓,应该在线程里面,也不建议你去缓存,也不建议你去迟化啊,这是我们的一个使用规范,那你按照官方的这个介绍呢,我们这样写,那显然就是不行的,对吧?啊,显然就是不行的,你应该把这个呢给它注射掉,注射掉之后呢,我们在上面来写一个多线程的一个连接,多线程使用的连接类似于一种单立模式,当然它不是完全的单立模式,因为创建连接这个代码不是我们写的,你没有办法把它私有化,对吧?我们可以写一个近似的一个单例。怎么写呢?我们在。
01:40
进呃,这个GVM加载的时候,类加载的时候呢,把这个链接先给创建出来,然后后续使用的时候呢,统一都使用这么一个连接去进行创建就可以了啊,我在上面呢,写一个属性叫public。Connection对吧,哎,静态的static。Connection con。ON。
02:01
C connection耐性,这样connection耐性的这个。对象呢,就是这个,呃,H base的客户端啊,你就不用导了,它本来就有啊,我们已经导入这个对象了,然后名字叫connection,先让它等于空啊等于空,因为这个代码比较长啊,你按道理来讲,应该直接在这里面创建出这个对象,对吧,但它代码比较长啊,我们呢,不方便一下在这里面写出来啊,先说明一个静态属性。声明一个静态属性,声明完静态属性之后呢,我们在静态代码块里面,哎,去把这个connection性给它创建出来,然后以后呢,我们都使用这同一个连接,那就证明了它是单立的一个使用方法啊,你没有办法把它真的写成一个单立,因为创建连接代码不是我们的吧啊,你可以写成一种类似单立的那种感觉,然后在这个里面呢,我们把这个连接呢,给它创建出来啊,那里面的方法呢,都是一样的,对吧?Ctrl CA ctrl v给它粘过来就可以了啊,那这个连接呢,在这个地方就已经给我们创建出来了,对吧,已经创建出来了,这个地方有一个细节啊,一定要把前面这个东西给它删掉。
03:05
你如果不删掉的话,它两个是没有关系的,这个是局部变量对吧,你把那个前面那个声明啊,对象声明给它删掉之后呢,诶,就显示它俩是一个颜色都变了,一定要把它的颜色给变过来,变过来之后这个地方就显示它是新创建的一个对象了啊,那这里呢,它会有一个IO exception啊,这个IO exception你就没有办法把它给抛出去了。现在你已经到最底层了啊,静态代码块里面,你再抛再抛就直接扔给gbm了啊,你直接挂了啊,必须要进行一个拆开,这个拆开呢,我们可以不进行任何操作啊,这个IO exception。那接下来呢,咱们来解释解释一下啊,这地方为什么有一个ioe,其实啊,我们在正常的开发里面呢,是不应该这样去写的。哎,这个呢,做过开发的小伙伴们应该都知道啊,在开发里面,你不应该在你的代码里面出现这种配置参数啊,应该写在哪呢?应该写到你的resource里面,那在resource里面怎么写,要写什么东西呢?啊,其实这里啊,它这个create connection之所以有一个IO exception是因为你不填这个配参数,它也有空参的一个重载的一个方法,这个方法里面呢,你点进去可以看到啊,它调用了这么一个东西,创建了一个配置对象,然后把这配项呢给它放进来了,那读取的文件呢,就在这个创建配置对象里面,你点这个create点完之后啊,这里面呢,你需要再下载一下这个源码啊。
04:30
原本的话呢,有注释对吧?好,这里呢,它new了一个configuration啊,New完configuration之后呢,这里面有一个叫A的resource啊,添加配置文件,你点击这个添加配置文件啊,你会看到它加了两个文件,一个叫h base default,一个叫h base site啊意味着什么呢?如果你去连接的话,正确的操作不应该把你的配置参数写到代码里面,应该写到配置文件里面,这些配置文件的名就叫I set,一般不要起default啊,这太奇怪了啊好在这里呢,我们右键创建一个文件叫。
05:05
Set好h set呢,它因为是XL的一个文件,它有固定的一个格式啊,你还不能乱写推荐呢,大家去复制这么一个配置文件啊,官方的这个配置文件啊,你在复制的时候呢,你你有多种方法对吧?啊,给大家提供一种比较好的方法啊,你在这里粘贴呢,其实不太好啊,嗯,退出来打开文件传输助手。在你的Linux里面有这么一个配置文件啊呃,你把这个配置文件的双击啊,给它传输到你的Windows电脑上啊,来使用这个文件啊,靠谱一点啊。好,我们来到这边啊,这是这个配置文件对吧?啊来到桌面啊,这里面呢,会有这个配置文件啊,用到的配件箱打开。啊,打开之后呢,这就是完整的这个配置文件了啊,我们把这个配置文件呢,Ctrl a ctrl c全部给它复制过来啊,那这个呢,格式肯定是能够对得上的,并且你这里的配置文件跟你的服务端的配置文件是能够对得上号了啊,但这里面的参数啊,有有的有些多余了,像这种对吧,都注出掉了,那就不要了啊好,除此之外呢,这两个参数也是多余的,我们已经解释过了,这两个参数呢,是服务端才需要用得到,客户端呢,它他也没有权利去干涉这种事情啊,你你说人家服务端数据存在哪儿,跟你也没啥关系啊,你只是一个外人,只是来访问。
06:22
服务的一个外人啊,只能填他这个连接地址就可以了,好,只要你写了这么一些信息,那么在创建连接的时候,哎,就可以不用去。写这些东西了啊,直接创建连接就可以了啊,直接创建连接就可以了,好在这里呢,我们就给它改一下注释啊叫。创建连接好,创建连接里面呢,默认我们就使用这个同步连接啊,同时呢,来写一下对吧?哎,使用。读取本地文件的形式。添加参数。对吧?哎,我们使用这种形式来点价参数啊,好,那这个东西呢,哎,我刚才在复制代码的时候,相信细心的同学已经看到了啊,这地方呢,我没有复制关闭连接啊,你可以思考一下对吧,为什么没有复制关闭连接啊,它这个地方啊,是静态代码块啊,是静态代码块,你不可能说静态代码块是在最早GM加载的时候执行的吧?啊,你不可能说刚获得你就给它关闭掉了,那你不白忙活了吗?啊,不能关闭连接,那我们的这个连接呢,它又需要有这么一个关闭的操作啊,那通常情况下呢,咱们会单独封装一个方法,这个方法呢,就叫关闭连接啊,Public static静态方法啊,叫close close close connection。
07:42
对吧,在这个close connection里面呢,给它写上对应的一个返回类型叫void啊。好在里面不需要填参数括号过来,我们直接对这个连接进行关闭啊,Close。对吧,你直接写关闭其实是可以的,因为他在呃静态代码块里面就已经获取这个连接了,如果这地方有问题,直接就挂了,对吧,就报错了啊,这里你直接写关闭其实是可以的,但是呢,考虑到健壮性的问题,我们最好呢,还是先判断一下哈,先判断避免空值问题,对吧?哎,判断连接。
08:16
是否为空啊好,那底下那就来写一下叫if。啊,If里面叫connection啊,你直接写就行,因为它是同一个类嘛,啊叫不等于空啊,如果它不等于空的话,这边打括号过来,让它去关闭连接。对吧,关闭连接的时候呢,它会有一个异常,我们直接把这个异常给抛出去就可以了啊。好,这是我们的关闭连接的方法啊,那写完多线程的一个使用方法之后呢,接下来我们要到那方法里面去测试一下,你把前面这些代码呢,全部都注释掉,注释掉之后呢,在底下我们应该直接使用当前的多线程,也就是类似单例的这个连接啊,直接使用。啊,直接使用啊,创建好的连接啊,不要再。
09:05
内县城。里面。线程。里面啊单独创建啊,怎么用呢?很简单对吧,你你可以写这个它的一个前缀啊,这是connection点写啊,你可以写这个前缀,但因为它是同一个类嘛,啊你你不写也行啊,直接掉点so输出啊,就可以打印这个连接了啊然后啊,因为你这个地方是main线程对吧,所有执行的一个代码都是从你这个地方一步一步走下来的,那么你在内线程的最后一定要记得对吧,在。Main线程的最后啊,记得。关闭。连接啊,在main线程的最后关闭连接啊,你不是说用一次就关闭啊,你一定要等到所有的人全部用完了,最后呢,来调一个关闭,这个关闭呢,就直接是connection.close connection啊,你直接调这个封装好的方法就可以了啊,那这个呢,就是多线程的一个使用,别的线程里面,它也可以直接去调这么一个静态的属性来获取这个连接来使用啊,我们来测一下。
10:11
折一下啊。好,同样的道理啊,你即使是使用这种单力的一个获取呢,因为我们啊,不是一个很大的一个进程啊,你这个说实话还是跑一遍马上就关了啊,所以在速度上呢,我们并不能感受到这种类似单一写法呢,给我们带来的一个优势啊,在实际开发里面就能感受到了,在实际开发里面,如果一个线程创建一个连接,一个线程创建关闭,创建关闭会非常慢啊,如果像我们现在这样写呢,只创建一个啊,那你用起来的速度会非常的快,只在最开始启动程序的时候加载一次啊,这里呢,也能够去正常的使用这个连接啊,那么这种方式呢,才是我们官网推荐我们使用连接的这种方式,这个叫多线程使用连接的一个创建啊。
我来说两句