当前位置: 首页 > news >正文

oa系统有哪些功能关键词优化公司济南兴田德润团队怎么样

oa系统有哪些功能,关键词优化公司济南兴田德润团队怎么样,网站后台程序怎么做,wordpress搬家出现404实现 HTTP 接口的幂等性是确保多次相同请求产生相同结果的重要设计原则#xff0c;尤其在网络不稳定或分布式系统中非常关键。以下是几种常见的实现方式#xff1a;1. 基于幂等性令牌#xff08;Token#xff09;的实现适合支付、订单创建等场景#xff0c;步骤如下#…        实现 HTTP 接口的幂等性是确保多次相同请求产生相同结果的重要设计原则尤其在网络不稳定或分布式系统中非常关键。以下是几种常见的实现方式1. 基于幂等性令牌Token的实现适合支付、订单创建等场景步骤如下客户端获取令牌客户端携带令牌请求接口服务端验证并消费令牌 Service public class IdempotentService {// 实际项目中使用Redis等分布式缓存private final SetString tokenStore ConcurrentHashMap.newKeySet();// 生成令牌public String generateToken() {String token UUID.randomUUID().toString();tokenStore.add(token);return token;}// 验证令牌public boolean validateToken(String token) {return tokenStore.remove(token); // 原子操作确保唯一消费} }RestController RequestMapping(/orders) public class OrderController {Autowiredprivate IdempotentService idempotentService;Autowiredprivate OrderService orderService;PostMappingpublic ResponseEntity? createOrder(RequestHeader(Idempotency-Token) String token,RequestBody OrderRequest request) {// 验证令牌if (!idempotentService.validateToken(token)) {return ResponseEntity.ok(重复请求已处理);}// 处理订单逻辑OrderResult result orderService.createOrder(request);return ResponseEntity.ok(result);} }2. 基于数据库唯一约束通过数据库唯一索引确保重复数据无法插入 // 实体类 Entity Table(uniqueConstraints {UniqueConstraint(columnNames {order_no}) // 订单号唯一约束 }) public class Order {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;private String orderNo;// 其他字段... }// 服务层 Service public class OrderService {Autowiredprivate OrderRepository orderRepository;Transactionalpublic Order createOrder(OrderRequest request) {String orderNo generateOrderNo();Order order new Order();order.setOrderNo(orderNo);// 设置其他字段...try {return orderRepository.save(order);} catch (DataIntegrityViolationException e) {// 捕获唯一约束异常视为重复请求log.warn(订单已存在: {}, orderNo);return orderRepository.findByOrderNo(orderNo).orElseThrow();}} }3. 基于 Redis 的分布式锁适合分布式系统中的幂等性控制 Service public class RedisIdempotentService {Autowiredprivate StringRedisTemplate redisTemplate;private static final String IDEMPOTENT_KEY_PREFIX idempotent:;private static final long EXPIRATION_TIME 30L; // 30秒过期public boolean checkAndLock(String key) {String redisKey IDEMPOTENT_KEY_PREFIX key;// SET NX 命令不存在则设置返回truereturn Boolean.TRUE.equals(redisTemplate.opsForValue().setIfAbsent(redisKey, 1, EXPIRATION_TIME, TimeUnit.SECONDS));}public void releaseLock(String key) {String redisKey IDEMPOTENT_KEY_PREFIX key;redisTemplate.delete(redisKey);} }// 控制器中使用 PostMapping(/pay) public ResponseEntity? pay(RequestParam String orderId) {if (!redisIdempotentService.checkAndLock(orderId)) {return ResponseEntity.ok(支付请求已处理);}try {// 处理支付逻辑paymentService.processPayment(orderId);return ResponseEntity.ok(支付成功);} finally {redisIdempotentService.releaseLock(orderId);} }4. 基于 Spring AOP 的幂等性注解通过自定义注解简化幂等性控制 // 自定义注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface Idempotent {// 幂等键的参数索引默认取第一个参数int keyIndex() default 0; }// AOP切面 Aspect Component public class IdempotentAspect {Autowiredprivate RedisIdempotentService redisService;Around(annotation(idempotent) args(.., request))public Object around(ProceedingJoinPoint joinPoint, Idempotent idempotent, HttpServletRequest request) throws Throwable {// 获取幂等键此处从请求头获取String key request.getHeader(Idempotency-Key);if (StringUtils.isEmpty(key)) {return ResponseEntity.badRequest().body(缺少幂等键);}if (!redisService.checkAndLock(key)) {return ResponseEntity.ok(重复请求);}try {return joinPoint.proceed();} finally {// 非必须根据业务设置过期时间自动释放// redisService.releaseLock(key);}} }// 接口使用 PostMapping(/transfer) Idempotent public ResponseEntity? transferMoney(RequestBody TransferRequest request) {// 处理转账逻辑return ResponseEntity.ok(transferService.transfer(request)); }总结选择合适的方案查询操作天然幂等无需额外处理写操作根据业务选择令牌或唯一约束过期策略幂等键需设置合理过期时间避免存储空间无限增长异常处理确保幂等控制逻辑的异常不影响正常业务流程分布式场景必须使用 Redis 等分布式存储避免单机存储导致的问题原子性保证验证和业务操作需在同一事务中或使用分布式锁确保原子性
http://www.zqtcl.cn/news/328377/

相关文章:

  • 卖衣服的网站建设素材网站免费短视频
  • 萍乡网站建设哪家公司好搜索引擎推广预算
  • 如何做网站不容易被攻击网站定位策划书
  • 自己做网站去哪买服务器多说wordpress
  • 网站排名突然没有了网站开发背景图
  • 比较容易做流量的网站设计模板素材网站
  • 电商网站建设 网站定制开发兰州展柜公司网站建设
  • 临沂城乡建设管理局网站腾讯体育
  • 一个空间怎么放两个网站ps个人网站首页怎么制作
  • 云南通耀建设工程有限公司网站国际购物网站平台有哪些
  • 网站建设外包服务上海网站建设公司怎么分辨好坏
  • 建筑类企业网站模板下载微信搜索推广
  • 上海网站备案在哪里wordpress短链接关键字
  • 金诚财富网站是谁做的建站技术博客
  • 黔东南网站设计公司儿童衣服刘涛做代言那个是什么网站
  • 网站首页样式百度推广是什么工作
  • 广告手机网站制作阿里云域名 设置网站
  • 杭州市拱墅区网站建设ui培训有用么
  • 广东手机网站建设多少钱邯郸市做网站的公司
  • seo网站优化推广怎么做龙岗中心医院
  • 建网站程序智能网站建设平台
  • 建筑公司分几级资质seo入门培训
  • wap类网站上海网站建设免费推
  • 网站建设哪家好公司建设银行网站怎么登陆不
  • 关于建设网站的需求wordpress不能发布文章
  • 如何一键建淘宝客网站中国建设银行金华分行网站
  • 给wordpress添加公告英语seo
  • 佛山市网站建设系统wap浏览器网页版
  • 关于小说网站的一些建设流程学做蛋糕有哪些网站
  • 益阳购物网站开发设计禹城网站制作