pull/1/head
595208882@qq.com 4 years ago
parent 4243dd1d24
commit caccac98f3

@ -1189,33 +1189,13 @@ public void addGoods(){
枚举类Propagation中定义了七种事务传播机制如下
- `REQUIRED`required
Spring默认的传播机制能满足绝大部分业务需求如果外层有事务则当前事务加入到外层事务一块提交一块回滚。如果外层没有事务新建一个事务执行
- `REQUIRES_NEW`requires_new新创建事务
该事务传播机制是每次都会新开启一个事务,同时把外层事务挂起,当当前事务执行完毕,恢复上层事务的执行。如果外层没有事务,执行当前新开启的事务即可
- `SUPPORTS`supports
如果外层有事务,则加入外层事务,如果外层没有事务,则直接使用非事务方式执行。完全依赖外层的事务
- `NOT_SUPPORTED`not_supported传播机制不支持事务
该传播机制不支持事务,如果外层存在事务则挂起,执行完当前代码,则恢复外层事务,无论是否异常都不会回滚当前的代码
- `NEVER`never
该传播机制不支持外层事务,即如果外层有事务就抛出异常
- `MANDATORY`mandatory
与NEVER相反如果外层没有事务则抛出异常
- `NESTED`nested嵌套事务
该传播机制的特点是可以保存状态保存点,当前事务回滚到某一个点,从而避免所有的嵌套事务都回滚,即各自回滚各自的,如果子事务没有把异常吃掉,基本还是会引起全部回滚的。
- `REQUIRED`required要求Spring默认**当前存在事务,则加入该事务;当前没有事务,则创建一个新的事务**
- `REQUIRES_NEW`requires_new要求新的**创建一个新事务,如果存在当前事务,则挂起该事务**
- `SUPPORTS`supports支持**如果当前存在事务,则加入当前事务;如果当前没有事务,就以非事务方法执行**
- `NOT_SUPPORTED`not_supported不支持**始终以非事务方式执行,如果当前存在事务,则挂起当前事务**
- `NEVER`never都不**不使用事务,如果当前事务存在,则抛出异常**
- `MANDATORY`mandatory强制**如果当前存在事务,则加入当前事务;如果当前事务不存在,则抛出异常**
- `NESTED`nested嵌套**如果当前事务存在则在嵌套事务中执行否则REQUIRED的操作一样开启一个事务**

@ -127,7 +127,7 @@ org.springframework.boot.env.YamlPropertySourceLoader
- **Set** 去重、赞、踩、共同好友等
- **Zset** 访问量排行榜、点击量排行榜等
![img](images/Middleware/1289934-20190621163930814-1395015700.png)
![Redis-基本数据类型](images/Middleware/Redis-基本数据类型.png)
### String(字符串)
@ -137,7 +137,7 @@ String 数据结构是简单的 key-value 类型value 不仅可以是 String
### Hash(字典)
![img](images/Middleware/1289934-20190621232209365-1000366002.png)
![Redis-Hash](images/Middleware/Redis-Hash.png)
在 Memcached 中,我们经常将一些结构化的信息打包成 hashmap在客户端序列化后存储为一个字符串的值一般是 JSON 格式比如用户的昵称、年龄、性别、积分等。这时候在需要修改其中某一项时通常需要将字符串JSON取出来然后进行反序列化修改某一项的值再序列化成字符串JSON存储回去。简单修改一个属性就干这么多事情消耗必定是很大的也不适用于一些可能并发操作的场合比如两个并发的操作都需要修改积分。而 Redis 的 Hash 结构可以使你像在数据库中 Update 一个属性一样只修改某一项属性值。
@ -158,7 +158,7 @@ List 说白了就是链表redis 使用双端链表实现的 List相信
- 微博 TimeLine
- 消息队列
![img](images/Middleware/1289934-20190621233618769-504231907.png)
![Redis-List](images/Middleware/Redis-List.png)
使用列表的技巧
@ -175,7 +175,7 @@ List 说白了就是链表redis 使用双端链表实现的 List相信
### Set(集合)
![img](images/Middleware/1289934-20190622001013515-677922001.png)
![Redis-Set](images/Middleware/Redis-Set.png)
Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,可以存储一些集合性的数据。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为 Redis 非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
@ -192,7 +192,7 @@ Set 就是一个集合,集合的概念就是一堆不重复值的组合。利
### Sorted Set(有序集合)
![img](images/Middleware/1289934-20190622000959260-539243592.png)
![Redis-SortedSet](images/Middleware/Redis-SortedSet.png)
和Sets相比Sorted Sets是将 Set 中的元素增加了一个权重参数 score使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。另外还可以用 Sorted Sets 来做带权重的队列,比如普通消息的 score 为1重要消息的 score 为2然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。
@ -4962,6 +4962,32 @@ MethodInterceptor是AOP项目中的拦截器它拦截的目标是方法
# SpringBoot
## MVC
### HTTP请求处理流程
### 参数绑定
### 过滤器、拦截器、AOP执行顺序
## IOC
### Bean的加载过程
### Bean实例化的过程
## AOP
## Others
# SpringCloud
![SpringCloud](images/Middleware/SpringCloud.png)

@ -200,6 +200,10 @@
关键组件Redis、RocketMQ、MySQL、Zookeeper、Netty、MyBatis
# [6 Solution](Solution.md)
![ServiceDowngrade](images/README/ServiceDowngrade.png)

Loading…
Cancel
Save