Ambertime

ivicel's thoughts and writings

博客主题的修改

这个博客是使用 Pelican 搭建了, Pelican 是一个使用了 Python 写的一个静态博客生成框架, 里面使用了 Jinja2 作为模版 最近重新修改了博客主题, 使用了 HuxPro 里的样式主题, 原主题里使用的是 Jekyll 生成, 不过其模版写法和 Jinja2 差不多, 自己稍微修改了下, 用 jinja2 重新写了一个 由于 Pelican 生成的目录结构不同, 其针对 article, archive, category, page, tag 都可以生成单独的页面, 所以在一些内嵌的页面里 (archives), 取巧的使用 ajax 来请求刷新 tag...

数据库事务并发问题及隔离行为

1. 数据库事务知识 1.1 数据库事务的 4 个基本特征: ACID 原子性(Atomic): 一个事务是不可分割的整体, 其内的操作要么全部成功, 要么全部失败. 一致性(Consistency): 事务确保数据库从一个一致状态转变到另一个一致的状态. 一致状态指的是数据库应满足完整性约束. 比如 A+B 有 1000 元, 在 A 转帐到 B 300 后, 事务完成时, A + B 仍是 1000 元, 这保持了一致性 隔离性(Isolation): 在多并发执行事务时, 事务与事务之间是隔离开执行的. 持久性(Durability):...

Spring 数据库事务处理

1. 事务的传播行为 事务的传播行为是 Spring 对数据库事务添加的特定功能, 指的是当方法 A 调用另一个方法 B 时, B 事务中所采取的不同策略的行为, 比如新建事务, 挂起事务等. 事务的传播注解修饰的是方法 B 自己, 当被别的方法调用时才起的作用, 而不是方法内起作用 1.1 Spring 中七种事务传播行为 事务传播行为类型 说明 PROPAGATION_REQUIRED 1. 如果当前没有事务, 则新建一个事务2. 有的话就则加入到这个事务中 PROPAGATION_SUPPORTS 有则沿用, 没有也不新建1. 如果当前存在事务, 则沿用当前事务 2....

Spring POST 重定向接收错误信息(BindingResult)

1. POST 请求的错误信息重定向 在发送 POST 之后, 如果遇到错误, 我们经常会重定向(GET)回到原页面, 而不是直接返回页面, 这样做是为了避免如果我们点击浏览器刷新按钮时, 会再次发送 POST 请求. 重定向之后, 我们需要获得前面的错误信息. 使用 @ModelAttribute 注解来修饰 RequestMapping 方法的参数, ModelAttibute 注解实际上是接收请求参数, 添加到 Model 中, 在取出后自动删除. 需要注意的几点: 在 GET 处理方法中, 因为我们在渲染的 html/jsp 页面中使用了 User 对象,...

Spring Security 的使用

1. Spring Security 的开启方式 在 Java Web 中一般使用 Filter 来对请求进行拦截, Spring Security 基于此来对在进入 DispatcherServlet 前对 Spring MVC 进行请求拦截, 进行统一难, 从而决定是否放行 如果使用 web.xml 进行配置, Spring Security 提供了一个 DelegatingFilterProxy 的 Filter 代理器, 只要在 web.xml 中配置该 Filter 如果使用注解方式, 则在配置中加入 @EnableWebSecurity, 该注解会自动生成一个...