发表于: 2018-03-21 21:03:04
1 624
今天完成的事:
1.理解mybatis.
2.知道了什么是连接池.
3.了解了一下多线程.
4.关于注解 -Mybatis
5.完成了一些 深度思考.
1.关于mybaits 控制文件中连接方式的意义.
我百度了一下连接池的意思:下面用我自己的话理解一下.
在我之前使用 JDBC 往数据库插入数据的时候, 用错了方法, 每执行一次 sql语句 ,就要取得和断开一次服务器的连接.当时是在远程服务器上构建连接,发现 执行sql语句 用5ms的时间,而取得在关闭连接,在加上 执行SQL语句就要花费3-5s的时间,当时只觉得慢,今天百度了一下.发现 如果一个网站 ,我们打开网页 就是相当于一次取得连接,而一个连接 要花费几秒钟,那好多用户都要操作,就要花费很久的时间,这样会让用户体验极差,可能还会让 电脑在不停的连接关闭之下崩溃....
2 所以就产生了一个连接池的概念
连接池 顾名思义 ,就是一个包含了很多连接的池子,当我们想要获得一个连接的时候,就在连接池 取出一个连接出来,当我们在实现类写出sqlsession.close(),并不是关闭连接池,而是把该连接又放回了连接池,供其他方式(人)来调用.
这里,就又出现了 sqlseeion, 他是又sqlseeionFactry创建出来了一个例子,它包含了 JDBC 中的connection statement (连接,执行SQL语句)等,他是一个单线程操作.
3 这里有出来了一个单线程和多线程. 我的理解是.....(在这里我皮一下)...
关于单线程:当我想吃饭的时候,我只能用嘴吃饭....这就是单线程.
关于多线程:当我想打师兄的时候,有两种方式: * 我同时用拳头和脚打师兄 叫多线程.
* 或者是 我用拳头打师兄, 然后在用脚提师兄,拳打脚踢不能同时,但是可以通过不同方式.叫多线程
不太明白,关于多线程到底哪个正确......少楠 师兄用代码给我说- -但是我不太懂,百度了一下,就是这两种答案的感觉
再看深入一点的解释就不是特别懂了
最后少楠师兄用电脑cpu来给我讲了一下,大概是说以前单核CPU时候 是没有 多线程的,但是我们能打开多个应用 却不觉得 他中断连接是因为, 各个应用是在后台断开连接的,只不过因为他刷新的很快,所以我们感觉不到.
4.关于mybatis 注解.
红框标记的箭头所指就是Mybatis注解, 就是舍弃了 使用xml 上拼写sql语句来使用注解方式直接在 接口上每个方法上使用注解提供语句.... 他会比 xml文件方便,而且在SQL语句比较简单的情况下,会让代码或者你的这个快看着比较简洁.但是一旦sql语句 复杂起来但是会让接口带看很乱不好看,不利于修改.....还需要单独创建一个 class 来放置复杂的 sql语句..
使用XML 来 写上sql 语句的话,一旦SQL语句复杂的话,我们只用添加不同的表情 对XML进行改变 不用去改变别的calss就好...,关于主注解的关键字 where choose when set 等 都是需要记忆的东西.
4.深度思考.
2.clean,install,package,deploy分别代表什么含义?
这些关键字 ,都是 maven 操作的关键子,
mvn-package----打包执行命令,使用他会在target 中形成一个jar包或者war包
Mvn package
执行 mvn package命令,完成打包操作执行完毕后,会在target目录中生成一个文件,该文件可以是jar、war等
Mvn install
执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用
Mvn deploy
将打好的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
3.常见问题
Maven中央仓库经常不稳定,下载速度慢
mvn install---执行该操作,会在我们的本地仓库将,打包好的jar 包安装到本地仓库....
mvn deploy---- 将打好的包放到远程仓库中,供需要的人下载
maven pom.xml 中 添加的jar包就是 首先通过package打包后使用,在通过Insatll安装在本地目录,当那个人觉得,哇我打包的这个jar包so coooool ,他就是把jar包放在 网上 通过deploy命令 供大家加载使用...
嗯,现在觉得做jar包的都是大神!!!!
mvn clean 会把 根目录下的targer移除
3.怎么样能让Maven跳过JUnit?
知道了给pom.xml 添加字段可以让maven 跳过 Junti 不过查不到为什么....
13.怎么进行分页数据的查询,如何判断是否有下一页?
嗯.....等我用自己的话能讲出来的时候在来说一次....,知道了是使用SQL语句中的limit语句来分页,但是如何判断不知道....
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型: 只包含属性 和一些简单的 set get 方法 ,那如果接口上 注解了SQL语句,算不算贫血模型
充血模型: 包含属性和复杂逻辑方法
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
- -在有可能抛出异常的方法中 使用try catch ,他就是一个 能抛出异常的 语句 catch 用来接 异常类型 ,try后面能跟多个catch 一个异常不对就继续往下抛
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
2.今天的收获.
有了目标感觉每天都有收获,今天主要懂了很多基础概念.一个问题上卡太久 我!再!也!不!要!来!了!
3明天的计划:
打包jdbctemple ,尽量完成剩下的深度思考..
评论