发表于: 2017-07-14 17:59:12

2 1092


一.今天完成的主要事情

主要是对照任务一的最后几个task,进行测试

1.测试不关闭连接池,在主函数中循环调用的情况

步骤:

1) 在主函数中仅执行查询表长度的操作,运行1000,测试在每次执行完之后关闭连接池时的情况,下图是Main方法中代码

执行结果:

没有问题,顺利执行了1000次的查询表长度的操作

2) 将负责关闭链接的代码注释掉,如图

3)再次尝试在主函数中运行1000次查询操作,查看结果

可以看到,在执行到三百多次的时候,就会报异常,因为数据库的连接数都被占用了,所以不能再创建新的数据库链接,当然不能链接数据库.实际上,在执行不到三百次的操作时就出现了该异常,这里只是截取了这一部分

默认最大连接数可以用show variables '%max_connections%';命令查看,如图

4)分析结果.数据库链接是一种稀缺性资源,必须在每次执行完对数据库的操作时将数据库链接关闭,否则,数据库链接可能很快就会耗尽.

2.测试异常处理

1)先在主函数中循环执行增删改查操作

2)在执行过程中关闭数据库服务,模拟数据库出现问题停机的情况

    windows下用net stop 'mysql服务名'命令,关闭数据库服务

3)  查看输出结果,如图

可以从执行结果中看出来,当关闭数据库服务之后,程序捕捉到了异常,输出错误信息,但是程序没有停止,还在继续执行

4)再次启动数据库服务,看操作是否正常启动

      用net start 'mysql服务名'命令启动数据库服务

5)再次查看输出结果

可以看到在重启了数据库服务之后,程序又可以执行正常的CURD操作

6)分析结果,try…catch发挥作用,捕捉到了异常并且进行处理,使得程序没有被中断,可以继续执行

3.检查代码

如果数据库表中字段发生变化,那么相应需要改动的有两个地方,一个是model中的对应数据库表的模型类,还有一个是和sql语句相关的地方,其他的业务逻辑和接口不用改变,JDBC中是实现类,mybatis中是mapper.xml文件(如果是注解方式则更改注解),springJDBC中也是实现类.

总得来说更改的速度还是比较快的,因为代码的主体逻辑部分没有变动,接口也没有变动.从这也可以看出使用单纯的POJO模型+接口实现这种代码规范带来的好处,复用性非常强,原始数据不论怎么变,在代码中需要改动的地方非常少,所做的额外工作少,相应的维护成本也较低.

4.对比建立索引之后的大数据量查询

1)先批量插入100万条数据,进行测试

2)未添加索引时的查询速度

3)然后增加索引

    

     4)再次查询,查看结果

     

5.任务一小结

首先是收获:主要分为技术上和学习方法上

学习方法:

1.     看到任务的第一件事就是确定该条任务需求,知道这个任务具体干什么,如果有名词不懂,速速百度,如果是每个字都认识,链接起来不知道啥意思,赶紧去问,总之,一定要明确自己的方向.

2.     明确方向之后,确定自己对这条任务的认识度,就是有哪些知识点是不知道的,哪些知识点是已经掌握的,然后学习新知识点

3.     对于新知识点的学习要先看一遍基础知识,然后实践,实践时先不要急着去做出满足任务需求的东西,先写出一个最简单的程序,通过实践了解新知识点的内部逻辑.中间遇到问题继续百度.完成这一步之后,可以继续回过头去看基础知识,这时候就会对知识点应该有了更深层的了解,然后继续制定一个更复杂一些的需求,然后继续实现,然后继续基础知识,就这样基础-实践-基础-实践的循环

4.     任务过一遍之后,可以再回头看一遍,看看有哪些是当初不是很明白的,确实把基础打扎实了然后再向下一个任务前进.

5.     总之,遇到问题时,一定要确定自己的问题到底在哪里,到底是任务需求不明白,还是具体知识点概念不清楚,还是具体实践时遇到bug

6.     遇到问题,先找百度,如果百度上面的前三页找不到,再去找师兄日报看看,最后再去找师兄提问,提问时尽量把问题描述的清楚全面一些

7.     沟通很重要,把自己想说的意思清晰完整的表达出来以及很好的理解别人的意思是一项非常重要的能力.这点从向师兄问问题就可以看出来,好的沟通可以减少很多麻烦.

技术上的收获

1.     基本sql语句的使用

2.     数据库,JDK,maven等软件的安装和配置,包括linux系统的

3.     模型-接口-实现的项目设计模式

4.     JDBC链接数据库并进行基本操作

5.     Mybaits链接数据库的两种方式

6.     Spring链接数据库,包括控制反转的基本思想

7.     Springmybatis的整合

8.     Maven的构建周期,常用命令等

9.     单元测试junit

10.  Log4j的优势

11.  本地链接服务器的数据库

12.  还有一些这些过程中的小知识点,比如说索引对大数据库效率的影响,数据库链接的使用等

二.明天计划完成的事情

1.根据任务一要求再对代码做最后的修改

2.完成任务一深度思考

3.尽量提交任务一审核,结束任务一

三,遇到的问题

暂无

四,收获

以上



返回列表 返回列表
评论

    分享到