springboot 优雅的实现统一返回处理
springboot 优雅的实现统一返回处理前言:随着前后端分离这种模式的趋势下,后端开发人员更注重后端方面的代码,但是对后端人员在代码编写的过程当中需要越来越规范,这样不仅可以提高开发效率,更可以让代码后期维护起来更加的方便。
这篇文章主要是当接口返回的统一处理,能够让前端人员有个统一的接收后台的接口返回。
1、自定义常用的状态码123456789101112131415161718192021222324252627282930313233343536373839404142434445/** * 自定义状态码枚举 * * @author wls */public enum ResultCode { /** * 操作成功 **/ RC200(200, "操作成功"), /** * 操作失败 **/ RC900(900, "操作失败"), /** * 服务异常 **/ RC500(500, "系统异常,请稍后重试"); /** ...
fastdfs应用
从应用层面详解fastdfs各组件
fastdfs的多服务器场景使用及部署配置说明
相关的文章1、单体安装教程 https://blog.csdn.net/suoyanming/article/details/88797360
2、开源中国fastdfs主页 p/fastdfs
3、github主页(不确定是否是原作者维护) happyfish100/fastdfs
4、对fastdfs-nginx-module 实现原理讲的非常清楚 https://www.cnblogs.com/littleatp/p/4361318.html
一、FastDFS1、FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
2、FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服 ...
shiro使用
shiro一、shiro是什么? Shiro是Apache下的一个开源项目。shiro属于轻量级框架,相对于SpringSecurity简单的多,也没有SpringSecurity那么复杂 。
二、主要功能shiro主要有三大功能模块:1. Subject:主体,一般指用户。2. SecurityManager:安全管理器,管理所有Subject,可以配合内部安全组件。(类似于SpringMVC中的DispatcherServlet)3. Realms:用于进行权限信息的验证,一般需要自己实现。细分功能1. Authentication:身份认证/登录(账号密码验证)。2. Authorization:授权,即角色或者权限验证。3. Session Manager:会话管理,用户登录后的session相关管理。4. Cryptography:加密,密码加密等。5. Web Support:Web支持,集成Web环境。6. Caching:缓存,用户信息、角色、权限等缓存到如redis等缓存中。7. Concurrency:多线程并发验证,在一个线程中开启另一个线程,可以把 ...
设计模式——状态模式
在一些复杂的业务当中,涉及到某个业务有多个状态,按照传统写法无非就是if else ,其实还是有一种比较优雅的实现方式,就是设计模式中的状态机模式。没有spring之前虽然也能实现状态机模式,但是并不优雅。下面来说一个用springboot来实现状态机模式的案例。
举一个例子,比如订单:订单当中涉及到多个状态的跳转,有的时候还需要对修改状态前的逻辑进行判断,这个时候用状态机模式就是很好的实现。
1、引入部分依赖1234567891011121314151617181920212223242526272829303132<groupId>org.example</groupId> <artifactId>order_demo</artifactId> <version>1.0-SNAPSHOT</version> <parent> <artifactId>spring-boot-parent</artifactId> <gr ...
springboot+redisson实现分布式锁
redisson+springboot 实现分布式锁在一些场景时,需要保证数据的不重复,以及数据的准确性,特别是特定下,某些数据的准确性显得尤为重要,所以这个时候要保证某个方法同一时刻只能有一个线程执行。在单机情况下可以用jdk的乐观锁进行保证数据的准确性。而在分布式系统中,这种jdk的锁就无法满足这种场景。
所以需要使用redssion实现分布式锁,它不仅可以实现分布式锁,也可以在某些情况下保证不重复提交,保证接口的幂等性。
redisson是基于redis实现的分布式锁,因为redis执行命令操作时是单线程,所以可以保证线程安全。当然还有其他实现分布式锁的方案,例如zk,MongoDB等。
简单来聊一下各自优缺点
方案
实现原理
优点
MongoDB
1.加锁:执行findAndModify原子命令查找document,若不存在则新增2.解锁:删除document
实现较为简单
1.大部分公司数据库用MySQL,可能缺乏相应的MongoDB运维、开发人员2.锁无超时自动失效机制
ZooKeepe
1.加锁:在/lock目录下创建临时有序节点,判断创建的节点 ...