发表于: 2017-07-13 10:37:22

2 1065


今天完成的:

Task7的任务1~任务3

收获:

1.数据库事务必须具备ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英文缩写。

  原子性:指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。

  一致性:指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款总额为2000元。

  隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据

  持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

2.之前师兄小课堂一个问题

在MySQL数据库中,我们建表时经常使用X(M) 的样子,默认M代表字符。
那么int(11)里的M代表的是什么意思呢,字节吗?
显然不是,我们都知道,int类型占4个字节(Byte) 。当我们定义为int(1)时,照样可以存入int范围内的任意数值。
查找官网可以知道,这里的M指最大显示宽度,且最大有效显示宽度是255。
当我们写入int(1)时,照样可以存入该类型范围内的任意数值,这里应该是DB做了字段空间扩展,所以能完全显示出来,

3.了解了一些api

Long.parseLong(string s);
Integer code=random.nextInt(9000)+1000;随机四位数
String.valueOf(Long l);

idea快捷键ctrl+alt+H 查看方法的调用

使用了uuid作为用户唯一标识,感觉有点太长了。

4.@requestparam和@pathvarible

@requestparam直接取值get/post,范围包括page/request/session/application

@pathvarible读取动态的url,从url中读取参数

5.resultMap和ResultType:resultMap指向映射,在映射标签中配置关系。resultType指向java类型,使用resultType时,不关联resultMap,而是通过javabean的属性值来和DB字段名进行匹配 ,两者必须相同 . parameterMap和parameterType:parameterMap已经很少使用了。
  #{}和${}:#{}会预编译为?,从而对sql语句进行插入,防止sql注入。

遇到的问题:

1.邮件和文件上传都很顺利,短信这里有点小问题。
容联提供的jar在maven仓库里没有,需要自己安装到本地。而且他提供的SDK没打成jar,直接以文件夹的形式存在。直接mvn install:install-file -Dfile=httpclient.jar -DgroupId=ytx.org.apache -DartifactId=http -Dversion=4.0 -Dpackaging=jar

2.发送手机验证码的ajax还不会写,摸索中

明天的计划:

继续做Task7,之前的项目有几个问题,还得改。

1.缓存更新逻辑,删/改/增

2.DB的字段添加最后登录时间(完成)

3.cookie名生成,根据不同用户生成不同cookie名,以便识别。

4.短信接口整合进spring


返回列表 返回列表
评论

    分享到