作者:慕容千语 

来源:http://suo.im/5PaEZI

 

前言:

在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等

我们来解释一下幂等的概念:

任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。

如何保证其幂等性,通常有以下手段:

1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据
2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token
3、悲观锁或者乐观锁,悲观锁可以保证每次for update的时候其他sql无法update数据(在数据库引擎是innodb的时候,select的条件必须是唯一索引,防止锁全表)
4、先查询后判断,首先通过查询数据库是否存在数据,如果存在证明已经请求过了,直接拒绝该请求,如果没有存在,就证明是第一次进来,直接放行。

redis实现自动幂等的原理图:

一、搭建redis的服务Api

1、首先是搭建redis服务器。

2、引入springboot中到的redis的stater,或者Spring封装的jedis也可以,后面主要用到的api就是它的set方法和exists方法,这里我们使用springboot的封装好的redisTemplate

  1. /**

  2. * redis工具类

  3. */

  4. @Component

  5. public class RedisService {

  6.    @Autowired

  7.    private RedisTemplate redisTemplate;

  8.    /**

  9.     * 写入缓存

  10.     * @param key

  11.     * @param value

  12.     * @return

  13.     */

  14.    public boolean set(final String key, Object value) {

  15.        boolean result = false;

  16.        try {

  17.            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

  18.            operations.set(key, value);

  19.            result = true;

  20.        } catch (Exception e) {

  21.            e.printStackTrace();

  22.        }

  23.        return result;

  24.    }

  25.    /**

  26.     * 写入缓存设置时效时间

  27.     * @param key

  28.     * @param value

  29.     * @return

  30.     */

  31.    public boolean setEx(final String key, Object value, Long expireTime) {

  32.        boolean result = false;

  33.        try {

  34.            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

  35.            operations.set(key, value);

  36.            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);

  37.            result = true;

  38.        } catch (Exception e) {

  39.            e.printStackTrace();

  40.        }

  41.        return result;

  42.    }

  43.    /**

  44.     * 判断缓存中是否有对应的value

  45.     * @param key

  46.     * @return

  47.     */

  48.    public boolean exists(final String key) {

  49.        return redisTemplate.hasKey(key);

  50.    }

  51.    /**

  52.     * 读取缓存

  53.     * @param key

  54.     * @return

  55.     */

  56.    public Object get(final String key) {

  57.        Object result = null;

  58.        ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

  59.        result = operations.get(key);

  60.        return result;

  61.    }

  62.    /**

  63.     * 删除对应的value

  64.     * @param key

  65.     */

  66.    public boolean remove(final String key) {

  67.        if (exists(key)) {

  68.            Boolean delete = redisTemplate.delete(key);

  69.            return delete;

  70.        }

  71.        return false;

  72.    }

  73. }

二、自定义注解AutoIdempotent

自定义一个注解,定义此注解的主要目的是把它添加在需要实现幂等的方法上,凡是某个方法注解了它,都会实现自动幂等。后台利用反射如果扫描到这个注解,就会处理这个方法实现自动幂等,使用元注解ElementType.METHOD表示它只能放在方法上,etentionPolicy.RUNTIME表示它在运行时。整编:微信公众号,搜云库技术团队,ID:souyunku

  1. @Target({ElementType.METHOD})

  2. @Retention(RetentionPolicy.RUNTIME)

  3. public @interface AutoIdempotent {

  4. }

三、token创建和检验

1、token服务接口

我们新建一个接口,创建token服务,里面主要是两个方法,一个用来创建token,一个用来验证token。创建token主要产生的是一个字符串,检验token的话主要是传达request对象,为什么要传request对象呢?主要作用就是获取header里面的token,然后检验,通过抛出的Exception来获取具体的报错信息返回给前端。整编:微信公众号,搜云库技术团队,ID:souyunku

  1. public interface TokenService {

  2.    /**

  3.     * 创建token

  4.     * @return

  5.     */

  6.    public  String createToken();

  7.    /**

  8.     * 检验token

  9.     * @param request

  10.     * @return

  11.     */

  12.    public boolean checkToken(HttpServletRequest request) throws Exception;

  13. }

2、token的服务实现类

token引用了redis服务,创建token采用随机算法工具类生成随机uuid字符串,然后放入到redis中(为了防止数据的冗余保留,这里设置过期时间为10000秒,具体可视业务而定),如果放入成功,最后返回这个token值。checkToken方法就是从header中获取token到值(如果header中拿不到,就从paramter中获取),如若不存在,直接抛出异常。这个异常信息可以被拦截器捕捉到,然后返回给前端。

  1. @Service

  2. public class TokenServiceImpl implements TokenService {

  3.    @Autowired

  4.    private RedisService redisService;

  5.    /**

  6.     * 创建token

  7.     *

  8.     * @return

  9.     */

  10.    @Override

  11.    public String createToken() {

  12.        String str = RandomUtil.randomUUID();

  13.        StrBuilder token = new StrBuilder();

  14.        try {

  15.            token.append(Constant.Redis.TOKEN_PREFIX).append(str);

  16.            redisService.setEx(token.toString(), token.toString(),10000L);

  17.            boolean notEmpty = StrUtil.isNotEmpty(token.toString());

  18.            if (notEmpty) {

  19.                return token.toString();

  20.            }

  21.        }catch (Exception ex){

  22.            ex.printStackTrace();

  23.        }

  24.        return null;

  25.    }

  26.    /**

  27.     * 检验token

  28.     *

  29.     * @param request

  30.     * @return

  31.     */

  32.    @Override

  33.    public boolean checkToken(HttpServletRequest request) throws Exception {

  34.        String token = request.getHeader(Constant.TOKEN_NAME);

  35.        if (StrUtil.isBlank(token)) {// header中不存在token

  36.            token = request.getParameter(Constant.TOKEN_NAME);

  37.            if (StrUtil.isBlank(token)) {// parameter中也不存在token

  38.                throw new ServiceException(Constant.ResponseCode.ILLEGAL_ARGUMENT, 100);

  39.            }

  40.        }

  41.        if (!redisService.exists(token)) {

  42.            throw new ServiceException(Constant.ResponseCode.REPETITIVE_OPERATION, 200);

  43.        }

  44.        boolean remove = redisService.remove(token);

  45.        if (!remove) {

  46.            throw new ServiceException(Constant.ResponseCode.REPETITIVE_OPERATION, 200);

  47.        }

  48.        return true;

  49.    }

  50. }

四、拦截器的配置

1、web配置类,实现WebMvcConfigurerAdapter,主要作用就是添加autoIdempotentInterceptor到配置类中,这样我们到拦截器才能生效,注意使用@Configuration注解,这样在容器启动是时候就可以添加进入context中。整编:微信公众号,搜云库技术团队,ID:souyunku

  1. @Configuration

  2. public class WebConfiguration extends WebMvcConfigurerAdapter {

  3.    @Resource

  4.   private AutoIdempotentInterceptor autoIdempotentInterceptor;

  5.    /**

  6.     * 添加拦截器

  7.     * @param registry

  8.     */

  9.    @Override

  10.    public void addInterceptors(InterceptorRegistry registry) {

  11.        registry.addInterceptor(autoIdempotentInterceptor);

  12.        super.addInterceptors(registry);

  13.    }

  14. }

2、拦截处理器:主要的功能是拦截扫描到AutoIdempotent到注解到方法,然后调用tokenService的checkToken()方法校验token是否正确,如果捕捉到异常就将异常信息渲染成json返回给前端

  1. /**

  2. * 拦截器

  3. */

  4. @Component

  5. public class AutoIdempotentInterceptor implements HandlerInterceptor {

  6.    @Autowired

  7.    private TokenService tokenService;

  8.    /**

  9.     * 预处理

  10.     *

  11.     * @param request

  12.     * @param response

  13.     * @param handler

  14.     * @return

  15.     * @throws Exception

  16.     */

  17.    @Override

  18.    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

  19.        if (!(handler instanceof HandlerMethod)) {

  20.            return true;

  21.        }

  22.        HandlerMethod handlerMethod = (HandlerMethod) handler;

  23.        Method method = handlerMethod.getMethod();

  24.        //被ApiIdempotment标记的扫描

  25.        AutoIdempotent methodAnnotation = method.getAnnotation(AutoIdempotent.class);

  26.        if (methodAnnotation != null) {

  27.            try {

  28.                return tokenService.checkToken(request);// 幂等性校验, 校验通过则放行, 校验失败则抛出异常, 并通过统一异常处理返回友好提示

  29.            }catch (Exception ex){

  30.                ResultVo failedResult = ResultVo.getFailedResult(101, ex.getMessage());

  31.                writeReturnJson(response, JSONUtil.toJsonStr(failedResult));

  32.                throw ex;

  33.            }

  34.        }

  35.        //必须返回true,否则会被拦截一切请求

  36.        return true;

  37.    }

  38.    @Override

  39.    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

  40.    }

  41.    @Override

  42.    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

  43.    }

  44.    /**

  45.     * 返回的json值

  46.     * @param response

  47.     * @param json

  48.     * @throws Exception

  49.     */

  50.    private void writeReturnJson(HttpServletResponse response, String json) throws Exception{

  51.        PrintWriter writer = null;

  52.        response.setCharacterEncoding("UTF-8");

  53.        response.setContentType("text/html; charset=utf-8");

  54.        try {

  55.            writer = response.getWriter();

  56.            writer.print(json);

  57.        } catch (IOException e) {

  58.        } finally {

  59.            if (writer != null)

  60.                writer.close();

  61.        }

  62.    }

  63. }

五、测试用例

1、模拟业务请求类

首先我们需要通过/get/token路径通过getToken()方法去获取具体的token,然后我们调用testIdempotence方法,这个方法上面注解了@AutoIdempotent,拦截器会拦截所有的请求,当判断到处理的方法上面有该注解的时候,就会调用TokenService中的checkToken()方法,如果捕获到异常会将异常抛出调用者,下面我们来模拟请求一下:

  1. @RestController

  2. public class BusinessController {

  3.    @Resource

  4.    private TokenService tokenService;

  5.    @Resource

  6.    private TestService testService;

  7.    @PostMapping("/get/token")

  8.    public String  getToken(){

  9.        String token = tokenService.createToken();

  10.        if (StrUtil.isNotEmpty(token)) {

  11.            ResultVo resultVo = new ResultVo();

  12.            resultVo.setCode(Constant.code_success);

  13.            resultVo.setMessage(Constant.SUCCESS);

  14.            resultVo.setData(token);

  15.            return JSONUtil.toJsonStr(resultVo);

  16.        }

  17.        return StrUtil.EMPTY;

  18.    }

  19.    @AutoIdempotent

  20.    @PostMapping("/test/Idempotence")

  21.    public String testIdempotence() {

  22.        String businessResult = testService.testIdempotence();

  23.        if (StrUtil.isNotEmpty(businessResult)) {

  24.            ResultVo successResult = ResultVo.getSuccessResult(businessResult);

  25.            return JSONUtil.toJsonStr(successResult);

  26.        }

  27.        return StrUtil.EMPTY;

  28.    }

  29. }

2、使用postman请求

首先访问get/token路径获取到具体到token:

利用获取到到token,然后放到具体请求到header中,可以看到第一次请求成功,接着我们请求第二次:

第二次请求,返回到是重复性操作,可见重复性验证通过,再多次请求到时候我们只让其第一次成功,第二次就是失败:

六、总结

本篇博客介绍了使用springboot和拦截器、redis来优雅的实现接口幂等,对于幂等在实际的开发过程中是十分重要的,因为一个接口可能会被无数的客户端调用,如何保证其不影响后台的业务处理,如何保证其只影响数据一次是非常重要的,它可以防止产生脏数据或者乱数据,也可以减少并发量,实乃十分有益的一件事。而传统的做法是每次判断数据,这种做法不够智能化和自动化,比较麻烦。而今天的这种自动化处理也可以提升程序的伸缩性。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 学习笔记:python 基本数据类型

    1.python 基本数据类型1).Number(数字) 2).String(字符串) 3).List(列表) 4).Tuple(元组) 5).Set(集合) 6).Dictionary(字典) 注意: 不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组) 可变数据(3个):List(列表)、Set(集合)、Dictionary(字典)num = 1…...

    2024/4/24 14:57:27
  2. SSRF利用 Gopher |Gopher攻击mysql及内网

    SSRF利用 Gopher0X01 前言 研究了一天Gopher协议的应用,实践之后决定写一下关于Gopher协议之SSRF利用的相关总结。 参考链接:https://blog.csdn.net/qq_41107295/article/details/103026470 0X02 概述 SSRF(Server-Side Request Forgery)服务端请求伪造,是一种由攻击者构造…...

    2024/4/15 3:00:37
  3. 10 大黑客专用的 Linux 操作系统

    1. Kali LinuxKali Linux是最著名的Linux发行版,用于道德黑客和渗透测试。Kali Linux由Offensive Security开发,之前由BackTrack开发。Kali Linux基于Debian。它带有来自安全和取证各个领域的大量渗透测试工具。现在,它遵循滚动发布模型,这意味着您集合中的每个工具将始终保…...

    2024/4/15 3:00:36
  4. 解决sns加载数据load_dataset()报错问题

    一、报错 看到其他的文章在写可以使用seaborn的数据集,通过sns.load_dataset的方式获取数据集进行练习和分析,但是当我输入: sns.load_dataset(tips)却出现如下报错信息:在网上搜了一遍发现,是我的seaborn-data里面是空的(没有那些库文件数据,所以无法加载出来)二、解决…...

    2024/4/15 3:00:35
  5. Spring框架基于AspectJ的AOP开发规范和步骤

    AOP和动态代理的关系:AOP术语:横向关注点: 需要新增的到业务代码中的功能(在目标对象那里叫横切关注点,在切面类中叫通知) 切面类: 封装了增强方法(横向关注点)的类 通知: 切面类中的每一个增强的方法叫做通知,通知通过切入点表达式作用于连接点上 目标: 所抽取出来的代码要作用…...

    2024/4/19 22:10:13
  6. 玖富(NASDAQ:JFU) :2019年Q4机构资金占比增至79.8%,科技赋能业务成果显著

    北京时间6月17日晚,中国致力于提供个性化综合金融服务的知名数字金融平台玖富(NASDAQ:JFU)公布截至2019年12月31日的第四季度及全年未经审计的财务业绩。数据显示,玖富2019年Q4净收入为4.690亿元人民币,机构资金的贷款撮合量占比增长至79.8%。财报数据显示,Q4玖富的贷款撮合…...

    2024/4/15 3:00:33
  7. WAIC黑客松大赛,2020年程序员世界的又一次狂欢

    在漫长的疫情过后,令人期待的 Pepper 线下大型「真人」竞技体验活动——「2020 WAIC Pepper Hackathon」终于再次降临魔都,这是一场行业盛事,也是一场程序员世界的大联欢。世界人工智能大会(WAIC)是经党中央、国务院批准,由国家有关部委和上海市政府共同打造的重要国际合…...

    2024/4/15 3:00:32
  8. 腾讯地图JSAPI教程-在地图上添加自定义覆盖物

    以下内容转载自多多洛爱学习的文章《JSAPI-在地图上添加自定义覆盖物》 作者:多多洛爱学习 链接:https://juejin.im/post/5ee5f80d51882542e2695874 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。地图上的覆盖物 在地图上添加覆盖物有两…...

    2024/4/15 3:00:31
  9. 详细得让你惊叹的“python”面向对象介绍(带图)

    文章目录面向对象定义类定义一个类并创建类实例为对象绑定实例属性创建实例方法以及使用实例方法类属性类方法静态类方法构造方法封装一般定义方法:缺乏隐蔽性,数据不安全封装方法 :外界看不到数据,更安全继承定义父类,子类继承父类的使用子类重写父类常用的条件判断多继承…...

    2024/4/19 22:40:34
  10. Java毕业设计_乡镇农户评级系统

    乡镇农户评级系统 乡镇农户评级系统mysql数据库创建语句 乡镇农户评级系统oracle数据库创建语句 乡镇农户评级系统sqlserver数据库创建语句 乡镇农户评级系统spring+springMVC+hibernate框架对象(javaBean,pojo)设计 乡镇农户评级系统spring+springMVC+mybatis框架对象(javaBea…...

    2024/4/24 14:57:26
  11. Selenium的初级使用

    一、动态渲染页面爬取 1、背景问题对于访问Web时直接响应的数据(就是response内容可见(不是ajax加载或者被渲染过的数据)),我们使用urllib、requests或Scrapy框架爬取。 对于一般的JavaScript动态渲染的页面信息(Ajax加载),我们可以通过抓包分析Ajax请求地址来抓取信息…...

    2024/4/24 14:57:28
  12. Android数据存储

    上文学习和了解了Android中的网络获取数据的方式,基于性能和程序运行效率等各方面的需要,应用本地也需要存储数据,供引用功能使用。比如离线数据,模板包数据,样式文件,历史浏览数据等各种类型的数据,均需要存储起来。本文我们来看看Android应用开发中的数据存储都包含哪…...

    2024/4/24 14:57:26
  13. 根据《阿里巴巴Java开发手册》,以下功能必须进行水平权限控制校验的有

    根据《阿里巴巴Java开发手册》,以下功能必须进行水平权限控制校验的有:答案在文末A. 订单详情页面。 B. 类目管理后台。 C. 店铺装修后台。 D. 订单付款页面。多选 关于数据库命名规则,下列哪些说法符合《阿里巴巴Java开发手册》:答案在文末A. 数据库库名和表名没有规定,可…...

    2024/4/24 14:57:26
  14. Day55:链表中环的入口结点

    剑指Offer_编程题——链表中环的入口结点 题目描述:给一个链表,若其中包含环,请找出该链表的环入口节点,否则,输出null。具体要求:时间限制: C/C++ 1秒,其他语言2秒 空间限制: C/C++32M,其他语言64M具体实现: 链表中有环证明首先在做题之前我们要证明一个链表是否存在…...

    2024/4/24 14:57:23
  15. 深度学习系列(六) 循环神经网络之GRU、LSTM、双向循环 2020.6.23

    前言 本节继续学习循环神经网络GRU LSTM 双向循环神经网络1、门控循环单元(GRU)当时间步数较大或者时间步较小时,循环神经⽹络的梯度较容易出现衰减或爆炸 裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减 门控循环神经网络(gated recurrent neural network)的提出,正是为…...

    2024/4/24 14:57:21
  16. 一周掌握 FPGA VHDL Day 4

    今天给大侠带来的是一周掌握 FPGA VHDL Day 4,今天开启第四天,带来状态机在VHDL中的实现。下面咱们废话就不多说了,一起来看看吧。每日十分钟,坚持下去,量变成质变。VHDL语言四、状态机在VHDL中的实现4.1 Moore 状态机的VHDL描述输出仅取决于其所处的状态。LIBRARY IEEE;…...

    2024/4/24 14:57:21
  17. Python 模块EasyGui详细介绍

    EasyGui官网: http://easygui.sourceforge.net官方的教学文档:http://easygui-docs-0.96\tutorial\index.html小甲鱼翻译改编的教学文档:http://bbs.fishc.com/thread-46069-1-1.html1、msgBox() msgbox(msg=’(Your message goes here)’, title=’ , ok_button=‘OK’, ima…...

    2024/5/1 8:10:54
  18. 关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》

    关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》:答案在文末A. NULL=NULL的返回结果为true。 B. NULL与任何值的比较结果都为NULL。 C. NULL<>1的返回结果为true。 D. 当某一列的值全是NULL时,sum(col)的返回结果为NULL。多选 关于方法的返回值是否…...

    2024/4/29 9:11:29
  19. 时间格式 iview 4X

    参考网址: <DatePicker type="year" format="yyyy" :value="params.year" @on-change="(val)=>params.year=val" style="width: 200px" placeholder="请选择年份"></DatePicker>:value=“params.…...

    2024/4/24 14:57:17
  20. 《前端》ES6基础语法

    ECMAScript6简称ES6。ECMAScript 和 JavaScript 的术语是通用的。在2015年,ECMAScript 发布了被称为 ECMAScript 6 (ES6) 的最新版本。箭头函数类模块Promises 对象异步生成器 Generatorslet以及const语法 1 var和let关键字之间的区别使用var关键字来声明变量,会出现重复声明…...

    2024/4/29 10:04:13

最新文章

  1. AD | Altium Designer(原理图设计、电路仿真、PCB绘图)汉化版

    Altium Designer(原理图设计、电路仿真、PCB绘图) 通知公告 Altium Designer(AD)是一种功能强大的电子设计自动化(EDA)软件。它主要用于设计和开发电子产品,如电路板(PCB)、集成电路(IC)和嵌入式系统。AD提供了完整的设计工具套件,包括原理图设计、PCB布局、仿真、设…...

    2024/5/2 23:20:33
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. STM32 H7系列学习笔记

    必备的API知识 第 1 步&#xff1a;系统上电复位&#xff0c;进入启动文件 startup_stm32h743xx.s&#xff0c;在这个文件里面执行复位中断服务程序。 在复位中断服务程序里面执行函数 SystemInit&#xff0c;在system_stm32h7xx.c 里面。*之后是调用编译器封装好的函数&…...

    2024/5/2 17:44:16
  4. 第十二届蓝桥杯省赛真题(C/C++大学B组)

    目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…...

    2024/5/2 10:47:22
  5. ADB(Android Debug Bridge)操作命令详解及示例

    ADB&#xff08;Android Debug Bridge&#xff09;是一个强大的命令行工具&#xff0c;它是Android SDK的一部分&#xff0c;主要用于Android设备&#xff08;包括真实手机和平板电脑以及模拟器&#xff09;的调试、系统控制和应用程序部署。 下面是一些ADB的常用命令&#xff…...

    2024/5/1 13:48:24
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57