系列目录

Spring Boot+Vue项目 微博系统

目录

  • 系列目录
  • 前言
  • Spring Security简介
  • 基于内存的用户认证
    • 配置
    • 测试
  • 基于数据库的用户认证
    • 原理分析
    • 总结
  • 题外话

前言

后端的权限框架也有多种选择,比如Shiro、Spring Security,这里选择Spring Security。框架的好处就是它本来就提供了一整套完整的机制,而且还都是基于接口编程,并提供了setter方法,所以对原生框架有任何不满意,或不满足具体需求的地方,只需要实现它的对应接口,自定义其实现,并把自己的实现set进框架中即可。这种编程方法也很值得学习。

感觉用户管理这个需求从刚学编程就是绕不过去的一关,虽然很常见,但它并不简单,甚至根据具体系统的需求,可能成为最核心最复杂的模块。关于Web程序的用户管理,又会涉及Cookie、Session、JWT、OAuth 2等一大堆相关的知识。由于Spring Security默认实现了传统的基于Cookie/Session的用户管理。我也折腾过很久的JWT方式,但是因为涉及token的过期、续签等一些问题,一直想不到比较简单、完善的解决方案。所以本着简单的原则就先基于Cookie/Session实现吧。以后有需要或者有兴趣再去改进。

Spring Security简介

Spring Security框架比较庞大、复杂,简单来说就是提供了一系列的过滤器(Filter)对传递来的HTTP请求进行处理,每层过滤器也都预设了一些常用的默认实现,比如用户登录认证、记住我功能等。可以说是提供了保姆式服务。用户只需要根据自己的需求,重写一些配置信息或者自定义实现一些接口即可对原生框架进行“偷梁换柱”。

基于内存的用户认证

配置

Spring Security提供了多种用户认证方式,先从简单的基于内存的认证来学习,新建security.config目录下的SecurityConfig类来配置Spring Security。

在这里插入图片描述

做如下配置:

package cn.novalue.blog.security.config;import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;// 加上这个注解,让其能够自动注册到Spring容器中
@Configuration
@EnableWebSecurity
// 允许在方法上添加权限注解来拦截请求
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {// Spring Security默认使用这种加密方式来对密码加密BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();// 创建基于内存的用户认证控制auth.inMemoryAuthentication().passwordEncoder(encoder)// 配置一个root用户.withUser("root").password(encoder.encode("root"))// root用户有ADMIN角色.roles("ADMIN").and().withUser("normal").password(encoder.encode("normal")).roles("NORMAL");}@Overrideprotected void configure(HttpSecurity http) throws Exception {// 禁用csrfhttp.csrf().disable()// 表单登录.formLogin()// 允许所有请求访问.permitAll().and()// 其他所有请求都需要认证.authorizeRequests().anyRequest().authenticated();}
}

在权限控制这里有个RBAC(Role-Based Access Control)策略,即基于角色的访问控制,以下截取自百度百科的解释:

对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。

这也算是一种解耦思想吧。因为这里用户权限并不是很重要,就暂时不过多涉及权限的问题了,只配置个用户和角色,体会一下思想就行。

这里选择继承自 WebSecurityConfigurerAdapter ,其实是应用了适配器设计模式,因为我们只需要重写部分配置,但是如果直接实现原生接口,那么就必须重写很多不需要重写的配置,因为如果一个类要实现一个接口是必须要实现接口的所有方法的。

同时去掉原来在主类@SpringBootApplication注解中添加的exclude

package cn.novalue.blog;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class BlogApplication {public static void main(String[] args) {SpringApplication.run(BlogApplication.class, args);}}

测试

TestController 中添加一个方法接受GET请求,并且需要验证用户角色,只有是“ADMIN”角色才能访问。

    @GetMapping("/user")@PreAuthorize("hasRole('ADMIN')")public String user() {return "hello user";}

启动项目,访问localhost:8080/user,会被重定向到localhost:8080/login,使用root用户登录后,能正常显示结果,因为root用户有user()方法上标注的所需ADMIN角色。
在这里插入图片描述

重新使用normal用户登录,再次访问/user接口,返回403错误。因为normal用户没有ADMIN角色权限
在这里插入图片描述

基于数据库的用户认证

真实项目中肯定不会用内存来管理用户,用户信息肯定都是从数据库中加载的,下面我从源码分析,探究该如何配置,能使其从我们的数据库中加载用户信息。如果对源码头疼可以直接看后边的总结。

原理分析

首先从配置中的formLogin()入手,看看框架里是怎么做的。按住Ctrl+左键点击该方法,进入方法内部。在这里插入图片描述
可以看到,是给配置中加了一个FormLoginConfigurer对象,继续点击进入这个类,查看其构造方法。

在这里插入图片描述

这里又加入了一个 UsernamePasswordAuthenticationFilter 过滤器,顾名思义,是做用户名密码认证的过滤器。此外还配置了对应的参数名字,即“username”和“password”,也就是说我们请求的时候,只要把请求参数与之对应,就可以被框架获取。

再次进入 UsernamePasswordAuthenticationFilter 类查看。

    public static final String SPRING_SECURITY_FORM_USERNAME_KEY = "username";public static final String SPRING_SECURITY_FORM_PASSWORD_KEY = "password";// 依然是参数名字,默认值,可设定private String usernameParameter = "username";private String passwordParameter = "password";private boolean postOnly = true;public UsernamePasswordAuthenticationFilter() {// 该过滤器拦截“/login”路径的POST请求super(new AntPathRequestMatcher("/login", "POST"));}// 重点,该过滤器起主要作用的方法public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {// 如果不是所要拦截的POST方法,则抛出异常if (this.postOnly && !request.getMethod().equals("POST")) {throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());} else {// 从request中获取对应的用户名和密码参数String username = this.obtainUsername(request);String password = this.obtainPassword(request);// 设置默认值,防止后续操作出现NullPointerException异常if (username == null) {username = "";}if (password == null) {password = "";}username = username.trim();// 封装用户信息UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);this.setDetails(request, authRequest);// 调用AuthenticationManager的authenticate方法return this.getAuthenticationManager().authenticate(authRequest);}}@Nullableprotected String obtainPassword(HttpServletRequest request) {return request.getParameter(this.passwordParameter);}@Nullableprotected String obtainUsername(HttpServletRequest request) {return request.getParameter(this.usernameParameter);}

从源码中可以看出,这里只是对request的参数做了一些处理和封装,然后调用了 AuthenticationManagerauthenticate(authRequest) 方法。继续点击进这个方法。

在这里插入图片描述

AuthenticationManager是一个接口,点击方法左侧绿色图标,查看该接口的实现类

在这里插入图片描述

这里有个位于 org.springframework.security.authentication 包下的 ProviderManager 类,就是它提供(provide)了不同的认证方式。查看这个类的 authenticate方法,这里我只保留了比较重要的代码。

    public Authentication authenticate(Authentication authentication) throws AuthenticationException {Class<? extends Authentication> toTest = authentication.getClass();Iterator var8 = this.getProviders().iterator();while(var8.hasNext()) {AuthenticationProvider provider = (AuthenticationProvider)var8.next();if (provider.supports(toTest)) {try {result = provider.authenticate(authentication);}}}}

可以看到,该类肯定会有一个providers集合,提供了各种各样的provider,这里认证方法就是遍历这个集合,看哪个provider支持(supports)所需要的认证方式,就让它去认证。点击进入 provider.authenticate方法,发现。。。又是个接口

public interface AuthenticationProvider {Authentication authenticate(Authentication var1) throws AuthenticationException;boolean supports(Class<?> var1);
}

继续找它的实现类。

在这里插入图片描述

这里有一系列的provider,比如RememberMeAuthenticationProvider ,顾名思义就是处理记住我功能的。我们要找的是验证用户信息的,所以就是这个 AbstractUserDetailsAuthenticationProvider 类,继续进入查看,该类是个抽象类,查看其 authenticate 方法。

    public Authentication authenticate(Authentication authentication) throws AuthenticationException {username = authentication.getPrincipal() == null ? "NONE_PROVIDED" : authentication.getName();// 从之前的用户缓存中获取到用户信息UserDetails user = this.userCache.getUserFromCache(username);// 如果还没有用户信息if (user == null) {try {// 调用retrieveUser方法去获取用户user = this.retrieveUser(username, (UsernamePasswordAuthenticationToken)authentication);}}// 回调函数,会做一些在认证成功后需要的操作return this.createSuccessAuthentication(principalToReturn, authentication, user);}protected abstract UserDetails retrieveUser(String var1, UsernamePasswordAuthenticationToken var2) throws AuthenticationException;

经过一顿分析,定位到加载用户的操作是在 retrieveUser 方法中,但是该类的该方法是抽象方法。。。点击查看有没有默认实现。

点击发现只有一个 DaoAuthenticationProvider 的实现类,“dao”,即DAO(Data Access Object) ,是数据访问对象是一个面向对象的数据库接口。所以这就是我们要的数据库Provider,查看其retrieveUser 方法。

    protected final UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {try {UserDetails loadedUser = this.getUserDetailsService().loadUserByUsername(username);if (loadedUser == null) {throw new InternalAuthenticationServiceException("UserDetailsService returned null, which is an interface contract violation");} else {return loadedUser;}}}

终于看出点眉目了,它通过 this.getUserDetailsService().loadUserByUsername(username); 来加载通过之前获取的用户名来加载用户。我们都知道**Service就是用来干业务逻辑的。点击查看该方法。

public interface UserDetailsService {UserDetails loadUserByUsername(String var1) throws UsernameNotFoundException;
}

又是接口。。。 查看其实现类
在这里插入图片描述

这里有几种不同的Service,其中就有之前我们用的基于内存(InMemory)的service。所以现在看明白了:

总结

Spring Security的用户认证是基于UserDetailsService接口来加载用户了,默认实现了内存模式,缓存模式,jdbc模式等,之前我们在配置类中配置了inMemoryAuthentication(),所以就是基于内存的用户管理。所以我们要是想让Spring Security从我们自己的数据库中加载用户信息,只需要写一个类实现UserDetailsService接口,在其loadUserByUsername方法中,访问自己的数据库获取用户。然后把我们自己写的service配置上即可。

题外话

相信很多初学者都是谈源码色变,觉得源码很高深很难,自己是不可能看懂的。确实,我们看待源码相当于只是在二维层面上去摸索,跟着源码一步步走。没有从三维层面上去看源码的布局规划,确实很难看懂整个框架。但是如果我们只是按需查看的话,源码其实也并没有很难。就像上边,如果只是为了看如何让Spring Security从我们的数据库中加载用户。那么按着调用轨迹一步步往下走就行了,其它不相关的都不看。作为框架的使用者,我认为这样就可以了,当然如果能对框架有更全面的认识是更好了。

对于Java体系的技术而言,最好的一手学习资料就是官方文档和源码。网络上满天飞的文章都不知道转几手了,且不说能不能理解、能不能记住,甚至有些都被转变味了,压根就是错误的说法。如果只是日常遇到一点小问题,可以随便找个文章瞅一下。如果想要更系统的学习,我认为还是要回归到官方文档和源码上去。而且这些技术都是出自一些专家团队之手,并且经过实践验证的东西,我们从中可以学习到很多知识,比如上边的适配器模式、基于接口编程等等,这都会对我们产生潜移默化的帮助。

上一篇:
Spring Boot+Vue项目 微博系统(4):前后端通信测试

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

相关文章

  1. 联想电脑不显示WIFI列表

    联想电脑忽然不显示wifi列表解决办法: 按住windows(键盘左下角四个方块的按键)和X键→选择“Windows PowerShell(管理员)或者命令提示符(管理员)”→输入:netsh(空格)winsock(空格)reset敲击回车,会提示成功的重置winsock目录,然后重启电脑即可。...

    2024/4/27 19:29:41
  2. Docker容器的数据卷

    一、数据卷概念数据卷可以理解为宿主机中的一个文件或者一个目录;当容器目录和数据卷目录绑定后,对方的修改会立即同步;一个数据卷可以被多个容器同时挂载;一个容器也可以挂载多个数据卷二、配置数据卷-it:运行容器并进入到容器内部 [root@dbb72956ef0c /][root@hadoop101…...

    2024/4/17 0:40:50
  3. leetcode: LRU缓存机制(hash)

    运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥已经存在,…...

    2024/4/19 12:13:18
  4. PAT-A-1058-霍格兹沃的A+B(送温暖系列)

    题意描述 如果你是哈利波特的粉丝,你就会知道魔术世界有其自己的货币体系。 正如海格对哈利解释的那样:“17 个银镰刀(Sickle)可以换 1 个帆船(Galleon),29 个克努特(Knut)可以换 1 个银镰刀。” 你的工作是编写一个计算 A+B 的程序,其中 A 和 B 以 Galleon.Sickle.K…...

    2024/4/16 21:21:58
  5. Django:A server error occurred. Please contact the administrator.

    错误提示:A server error occurred. Please contact the administrator.网上说什么的都有,其实就是时区的问题OK,搞定...

    2024/4/16 21:21:44
  6. 创建一个函数fib(datas,n),其中形参datas为一个空列表,n为一个大于1的整数。

    创建一个函数fib(datas,n),其中形参datas为一个空列表,n为一个大于1的整数。要求:运行fib函数后,列表datas中的元素为小于n的斐波那契数列。datas = [ ]fib(datas,400)print(datas);怎么做啊?求大神指点...

    2024/4/16 21:21:52
  7. 编码器的集电极输出、电压输出、互补输出和线性驱动输出

    集电极开路输出是以输出电路的晶体管发射极作为公共端,并且集电极悬空的输出电路。一般分为NPN集电极开路输出(见图1)和PNP集电极开路输出(见图2)。电压输出是在集电极开路输出的电路基础上,在电源间和集电极之间接了一个上拉电阻,使得集电极和电源之间能有一个稳定的电…...

    2024/4/16 21:21:38
  8. js防止多次提交

    1防止多次提交方法1/*** 函数防止多次提交 **/ function Throttle(method, context, params) {if (!method.IsUsed){method.IsUsed = true;method.apply(context, params);method.IsUsed = false;} }调用代码:/***对外调用 @method Save**/ function Save(gatherFun, callback…...

    2024/4/17 23:52:04
  9. #开源星球# github项目排行榜

    开源星球,带你探索新的宇宙~ 提到开源,不得不说用于4000万粉丝的github. 今天小源球带你看看最后欢迎的开源项目,简单粗暴一点,就以点赞数的多少来排名。把时间定格在这一刻,先看Top 10。1. freeCodeCamp/freeCodeCampfreeCodeCamp.org 开源代码库和教程,用于在家学习敲代…...

    2024/4/16 21:21:38
  10. 阅读的误区

    认为阅读一本书应该一字不漏的读完 读书时好像总有一些想法,“我要在xxx时间之前读完这本书”,“这本书读了差不多三分之一了,还有三分之二…”,“啊,这本书读完了(松了一口气),可以开始下一本了”,无形中总是给自己一些限制,在阅读的同时增加了焦虑感。 仔细想想,书…...

    2024/4/24 6:59:12
  11. javaweb

    文章目录一、相关概念1、Web静态Web概念特点动态Web概念特点访问过程技术2、Web应用程序概念3.C/S类型应用程序:Client客户端/Server服务器4、动态web访问5、常见的web的服务器6.协议概念HTTP协议是基于”请求”和“响应”的HTTP协议请求两种方法GET方式POST方式浏览器中请求服…...

    2024/4/24 6:59:13
  12. toml的使用示例

    1.编写配置文件 xx.toml [email] host="smtp.mxhichina.com" port=465 username="xx@xx.com" password="xxxxx" toUsers = [ "xxxx@xx.com" ][server] port=8777[mysql] dsn = "root:password@tcp(127.0.0.1:3306)/xxx?charset=…...

    2024/4/24 6:59:19
  13. js集合与python集合的一个差异

    let a = new Set([1]) // Set(1) {1} let b = new Set([[1]]) //Set(1) {Array(1)} // 这样命名是ok的a = {1} # {1} a = {[1]} # 会报错 TypeError: unhashable type: list 并且在js中 let a = new Set([1]) a.add([1]) // 得到 Set(2) {Array(1), Array(1)} 没有去重...

    2024/4/24 6:59:07
  14. 【LeetCode】96. 不同的二叉搜索树

    我的直观思路是递归。先确定根节点。左子树和右子树都是二叉搜索树。public class Solution {public int numTrees(int n) {if (n == 0) return 1;int sum = 0;for (int i = 1; i <= n; i++) {// 跟结点的序号sum += numTrees(i - 1) * numTrees(n - i);}return sum;} }直接…...

    2024/4/24 6:59:13
  15. 机器学习支持向量机简介

    文章目录一、支持向量机1、SVM简介2、SVM算法原理3、非线性SVM算法原理二、通过代码理解1、绘制决策边界2、使用多项式特征和核函数3、高斯核函数4、超参数 γ三、参考链接 一、支持向量机 1、SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模…...

    2024/4/24 6:59:12
  16. React 父子组件传值

    React 父子组件传值 组件传值主要是使用的this.props方法 1. 父组件向子组件传值 父组件向子组件传递数据的时候先要在父组件初始化一个state,子组件通过this.props接收就行父组件部分import React from react import Home from ./Pages/home export default class App extend…...

    2024/4/24 6:59:03
  17. JavaScript的字符串之HTML包装方法

    JavaScript的字符串之HTML包装方法 前面以前文章我们讲解了字符串的各种方法。这篇文章对字符串的方法进行一些补充。 1.字符串的indexOf()和lastIndexOf()方法的补充var str=hello world;// indexOf() lastIndexOf()// 不加第二个参数console.log(str.indexOf("l")…...

    2024/4/24 6:59:10
  18. module has no attribute +python

    使用openpyxl.load_workbook()报错:AttributeError: module ‘openpyxl’ has no attribute ‘load_workbook’ 明明使用时还有提醒,怎么就说没有呢?,如图下 可能与当前目录下的模块名与python底部的模块名相冲突的原因。 试试修改当前目录下新建的python文件名,能不能解决…...

    2024/4/24 6:59:01
  19. 微信小程序开发入门与实践(1)

    基础知识 MINA 框架 为方便微信小程序开发,微信为小程序提供了 MINA 框架,这套框架集成了大量的原生组件以及 API。通过这套框架,我们可以方便快捷的完成相关的小程序开发工作。 MINA 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在…...

    2024/4/24 6:59:04
  20. 按钮样式

    https://tympanus.net/Development/CreativeLinkEffects/#cl-effect-13...

    2024/4/24 6:59:02

最新文章

  1. Mybatis扩展

    1. Myabtis注解开发 ​ 这几年来注解开发越来越流行&#xff0c;Mybatis也可以使用注解开发方式&#xff0c;这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习&#xff0c;再学习复杂映射多表操作。 1.1 常见注解 Insert&#xff1a;实现新增 Up…...

    2024/5/5 18:08:24
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. ssm框架中各层级介绍

    1、Spring&#xff08;业务逻辑层&#xff09;&#xff1a; Spring框架提供了依赖注入&#xff08;DI&#xff09;和面向切面编程&#xff08;AOP&#xff09;等功能&#xff0c;可以帮助管理Java应用程序中的对象依赖关系和提供横切关注点的支持。 在SSM框架中&#xff0c;S…...

    2024/5/3 3:42:05
  4. PostCss:详尽指南之安装和使用

    引言 在现代前端开发中&#xff0c;CSS预处理器如Sass、Less等已经成为提升开发效率、增强代码可维护性的重要工具。然而&#xff0c;随着Web技术的发展&#xff0c;CSS的功能也在不断扩展&#xff0c;一些新的CSS语法&#xff08;如变量、自定义属性、CSS Grid等&#xff09;以…...

    2024/5/5 10:23:36
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

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

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

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

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/5/4 18:20:48
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,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
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  44. 如何在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