回顾
ajax(异步,js,xml)
-
局部更新
-
异步请求
-
XMLHttpRequest
-
$.get(url, 请求参数, function(data){}, "响应类型")
-
$.post(url, 请求参数, function(data){}, "响应类型")
-
$.ajax({ url:请求地址 data: 请求参数 type: 请求类型 get,post... dataType: 响应类型 success:function(data) { }, error:function() { } });
json 转换
- java 对象和 json字符串之间转换
- jackson
- ObjectMapper om = new ObjectMapper();
- om.writeValueAsString(java对象) => json 字符串
- om.readValue(json字符串, Java类型.class)
- om.readValue(json字符串, new TypeReference<泛型>(){})
今日内容
vue view
- jquery
基本组成
let vm = new Vue({
el:"选择器:视图是那个标签",
data:{
数据名1: 值1,
数据名2: 值2,
数据名3: 值3,
...
},
methods:{
方法名1(参数列表) {
this.数据名1
},
方法名2(参数列表) {
}
...
}
});
vm.数据名1;
vm.方法名1(参数)
{{ 数据名1 }} 只适合绑定标签的文本内容
绑定属性
v-bind:属性名="data中数据名"
:属性名="data中数据名"
渲染指令
v-if="条件"
v-show="条件"
循环指令
v-for="临时变量名 in 数组或对象"
事件指令
v-on:事件名="方法名(参数)"
@事件名="方法名(参数)"
对于 img src 属性,a href 属性,使用单向绑定就可以了(v-bind)
对于表单的属性,建议使用 v-model 双向绑定
锁
1. 表锁和行锁
InnoDB - 行锁,表锁
MyISAM - 表锁
表锁(锁的是整个表)
- lock tables student read; – 锁住student表,其它事务可以读表,但不能改(共享)
- lock tables student write; – 锁住student表,其它事务既不能读表,也不能改(排他)
- 解锁命令 unlock tables;
行锁(锁住表中的行)
-
需要用事务控制,事务结束时,才会释放锁
-
select * from student where sid=16 for update; --锁住student表中sid=16的这一行,其它事务就不能再向这一行上加锁了(for update, update, insert, delete)
-
select * from student where sid=16 lock in share mode; --锁住student表中sid=16的这一行, 其它事务不能加(for update, update, insert, delete)等互斥锁了,但可以加 share mode 这种共享锁
-
互斥是防止其它人该,也防止其它人加读锁 lock in share mode
-
共享是防止其它人该,但允许其他人加读锁 lock in share mode
共享锁与排他锁
2. 悲观锁和乐观锁
- for update 属于悲观锁
- 乐观锁(其实不加锁),采用的是一种版本的思想
- 丢失更新- 开发中会遇到的问题
- 解决方法1 使用悲观锁
- 解决方法2 使用乐观锁
丢失更新问题演示
事务1
select sid,name,age into @sid,@name,@age from student where sid=16;
select @sid;
select @name;
select @age;
update student set name=‘张三’, age=@age where sid=@sid;
事务2
select sid,name,age into @sid,@name,@age from student where sid=16;
select @sid;
select @name;
select @age;
update student set name=@name, age=20 where sid=@sid;
用乐观锁解决丢失更新,更新时要加上版本列条件,并且让版本列在原来基础上加1
事务1
select sid,name,age,version into @sid,@name,@age,@version from student where sid=16; – 1
select @sid;
select @name;
select @age;
select @version;
update student set name=‘张小三’, age=@age, version=@version+1 where sid=@sid and version=@version; – version=1
事务2
select sid,name,age,version into @sid,@name,@age,@version from student where sid=16; – 1
select @sid;
select @name;
select @age;
select @version;
update student set name=@name, age=30, version=@version+1 where sid=@sid and version=@version;