DDD分层架构实践、要了解DDD分层架构,首先先了解传统的三层架构
还在单体应用的时候就是分层架构一说,我们用得最多的就是三层架构。而现在已经是微服务时代,在微服务架构模型比较常用的有几个,例如:整洁架构,CQRS(命令查询分离)以及六边形架构。每种架构模型都有自己的应用场景,但其核心都是“高内聚低耦合”原则。而运用领域驱动设计(DDD)理念以应对日常加速的业务变化对架构的影响,架构的边界越来越清晰,各司其职,这也符合微服务架构的设计思想。以领域驱动设计(DDD)为理念的分层架构已经成为微服务架构实践的最佳实践方法。
一、什么是DDD分层架构
1. 传统三层架构
要了解DDD分层架构,首先先了解传统的三层架构。
传统三层架构流程:
- 第一步考虑的是数据库设计,数据表如何建,表之间的关系如何设计
- 第二步就是搭建数据访问层,如选一个ORM框架或者拼接SQL操作
- 第三步就是业务逻辑的实现,由于我们先设计了数据库,我们整个的思考都会围绕着数据库,想着怎么写才能把数据正确地写入数据库中,这时CRUD的标准作法就出现了,也就没有太多考虑面向对象,解耦的事情了,这样的代码对日常的维护自然是越来越困难的
- 第四步表示层主要面向用户的输出
2. DDD分层架构
为了解决高耦合问题并轻松应对以后的系统变化,我们提出了运用领域驱动设计的理念来设计架构。
此段落部分总结来源于欧创新《DDD实践课》的《07 | DDD分层架构:有效降低层与层之间的依赖》读后感
1)领域层
首先我们抛开数据库的困扰,先从业务逻辑入手开始,设计时不再考虑数据库的实现。将以前的业务逻辑层(BLL)拆分成了领域层和应用层。
领域层聚焦业务对象的业务逻辑实现,体现现实世界业务的逻辑变化。它用来表达业务概念、业务状态和业务规则,对于业务分析可参照:《使用领域驱动设计分析业务》
2)应用层
应用层是领域层的上层,依赖领域层,是各聚合的协调和编排,原则上是不包括任何业务逻辑。它以较粗粒度的封闭为前端接口提供支持。除了提供上层调用外,还可以包括事件和消息的订阅。
3) 用户接口层
用户接口层面向用户访问的数据入向接口,可按不同场景提供不一样的用户接口实现。面向Web的可使用http restful的方式提供服务,可增加安全认证、权限校验,日志记录等功能;面向微服务的可使用RPC方式提供服务,可增加限流、熔断等功能。
4) 基础设施层
基础设施层是数据的出向接口,封装数据调用的技术细节。可为其它任意层提供服务,但为了解决耦合的问题采用了依赖倒置原则。其它层只依赖基础设施的接口,于具体实现进行分离。
二、DDD分层代码实现
1. 结构模型
2. 目录结构
.
├── pom.xml
└── src├── main│ ├── java│ │ └── fun│ │ └── barryhome│ │ └── ddd│ │ ├── WalletApplication.java│ │ ├── application│ │ │ ├── TradeEventProcessor.java│ │ │ ├── TradeMQReceiver.java│ │ │ └── TradeManager.java│ │ ├── constant│ │ │ └── MessageConstant.java│ │ ├── controller│ │ │ ├── TradeController.java│ │ │ ├── WalletController.java│ │ │ └── dto│ │ │ └── TradeDTO.java│ │ ├── domain│ │ │ ├── TradeService.java│ │ │ ├── TradeServiceImpl.java│ │ │ ├── enums│ │ │ │ ├── InOutFlag.java│ │ │ │ ├── TradeStatus.java│ │ │ │ ├── TradeType.java│ │ │ │ └── WalletStatus.java│ │ │ ├── event│ │ │ │ └── TradeEvent.java│ │ │ ├── model│ │ │ │ ├── BaseEntity.java│ │ │ │ ├── TradeRecord.java│ │ │ │ └── Wallet.java│ │ │ └── repository│ │ │ ├── TradeRepository.java│ │ │ └── WalletRepository.java│ │ └── infrastructure│ │ ├── TradeRepositoryImpl.java│ │ ├── WalletRepositoryImpl.java│ │ ├── cache│ │ │ └── Redis.java│ │ ├── client│ │ │ ├── AuthFeignClient.java│ │ │ └── LocalAuthClient.java│ │ ├── jpa│ │ │ ├── JpaTradeRepository.java│ │ │ └── JpaWalletRepository.java│ │ └── mq│ │ └── RabbitMQSender.java│ └── resources│ ├── application.properties│ └── rabbitmq-spring.xml└── test└── java
此结构为单一微服务的简单结构,各层在同一个模块中。
在大型项目开发过程中,为了达到核心模块的权限控制或更好的灵活性可适当调整结构,可参考《 数字钱包系统》系统结构
3. 领域层实现(domain)
在业务分析(《使用领域驱动设计分析业务》)之后,开始编写代码,首先就是写领域层,创建领域对象和领域服务接口
1)领域对象
这里的领域对象包括实体对象、值对象。
实体对象:具有唯一标识,能单独存在且可变化的对象
值对象:不能单独存在或在逻辑层面单独存在无意义,且不可变化的对象
聚合:多个对象的集合,对外是一个整体
聚合根:聚合中可代表整个业务操作的实体对象,通过它提供对外访问操作,它维护聚合内部的数据一致性,它是聚合中对象的管理者
代码示例:
// 交易
public class TradeRecord extends BaseEntity {/*** 交易号*/@Column(unique = true)private String tradeNumber;/*** 交易金额*/private BigDecimal tradeAmount;/*** 交易类型*/@Enumerated(EnumType.STRING)private TradeType tradeType;/*** 交易余额*/private BigDecimal balance;/*** 钱包*/@ManyToOneprivate Wallet wallet;/*** 交易状态*/@Enumerated(EnumType.STRING)private TradeStatus tradeStatus;@DomainEventspublic List<Object> domainEvents() {return Collections.singletonList(new TradeEvent(this));}
}// 钱包
public class Wallet extends BaseEntity {/*** 钱包ID*/@Idprivate String walletId;/*** 密码*/private String password;/*** 状态*/@Enumerated(EnumType.STRING)private WalletStatus walletStatus = WalletStatus.AVAILABLE;/*** 用户Id*/private Integer userId;/*** 余额*/private BigDecimal balance = BigDecimal.ZERO;}
- 从钱包交易例子的系统设计中,钱包的任何操作如:充值、消息等都是通过交易对象驱动钱包余额的变化
- 交易对象和钱包对象均为实体对象且组成聚合关系,交易对象是钱包交易业务模型的聚合根,代表聚合向外提供调用服务
- 经过分析交易对象与钱包对象为1对多关系(@ManyToOne),这里采用了JPA做ORM架构,更多JPA实践请参考>>
- 这里的领域建模使用的是贫血模型,结构简单,职责单一,相互隔离性好但缺乏面向对象设计思想,关于领域建模可参考《领域建模的贫血模型与充血模型》
- domainEvents()为领域事件发布的一种实现,作用是交易对象任何的数据操作都将触发事件的发布,再配合事件订阅实现事件驱动设计模型,当然也可以有别的实现方式
2)领域服务
/*** Created on 2020/9/7 11:40 上午** @author barry* Description: 交易服务*/
public interface TradeService {/*** 充值** @param tradeRecord* @return*/TradeRecord recharge(TradeRecord tradeRecord);/*** 消费** @param tradeRecord* @return*/TradeRecord consume(TradeRecord tradeRecord);
}
先定义服务接口,接口的定义需要遵循现实业务的操作,切勿以程序逻辑或数据库逻辑来设计定义出增删改查
- 主要的思考方向是交易对象对外可提供哪些服务,这种服务的定义是粗粒度且高内聚的,切勿将某些具体代码实现层面的方法定义出来
- 接口的输入输出参数尽量考虑以对象的形式,充分兼容各种场景变化
- 关于前端需要的复杂查询方法可不在此定义,一般情况下查询并非是一种领域服务且没有数据变化,可单独处理
- 领域服务的实现主要关注逻辑实现,切勿包含技术基础类代码,比如缓存实现,数据库实现,远程调用等
3)基础设施接口
public interface TradeRepository {/*** 保存* @param tradeRecord* @return*/TradeRecord save(TradeRecord tradeRecord);/*** 查询订单* @param tradeNumber* @return*/TradeRecord findByTradeNumber(String tradeNumber);/*** 发送MQ事件消息* @param tradeEvent*/void sendMQEvent(TradeEvent tradeEvent);/*** 获取所有* @return*/List<TradeRecord> findAll();
}
- 基础设施接口放在领域层主要的目的是减少领域层对基础设施层的依赖
- 接口的设计是不可暴露实现的技术细节,如不能将拼装的SQL作为参数
4. 应用层实现(application)
// 交易服务
@Component
public class TradeManager {private final TradeService tradeService;public TradeManager(TradeService tradeService) {this.tradeService = tradeService;}// 充值@Transactional(rollbackFor = Exception.class)public TradeRecord recharge(TradeRecord tradeRecord) {return tradeService.recharge(tradeRecord);}// 消费@Transactional(rollbackFor = Exception.class)public TradeRecord consume(TradeRecord tradeRecord) {return tradeService.consume(tradeRecord);}
}// 交易事件订阅
@Component
public class TradeEventProcessor {@Autowiredprivate TradeRepository tradeRepository;@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, condition = "# tradeEvent.tradeStatus.name() == 'SUCCEED'")public void TradeSucceed(TradeEvent tradeEvent) {tradeRepository.sendMQEvent(tradeEvent);}
}// 交易消息订阅
@Component
public class TradeMQReceiver {@RabbitListener(queues = "ddd-trade-succeed")public void receiveTradeMessage(TradeEvent tradeEvent){System.err.println("========MQ Receiver============");System.err.println(tradeEvent);}
}
应用服务:
- 应用层是很薄的一层,主要用于调用和组合领域服务,切勿包含任何业务逻辑
- 可包括少量的流程参数判断
- 由于可能是多个领域服务组合操作调用,如果存在原子性要求可以增加**@Transactional**事务控制
事件订阅:
- 事件订阅是进程内多个领域操作协作解耦的一种实现方式,它也是进程内所有后续操作的接入口
- 它与应用服务的组合操作用途不一样,组合是根据场景需求可增可减,但事件订阅后的操作是相对固化的,主要是满足逻辑的一致性要求
TransactionPhase.AFTER_COMMIT配置是在前一操作事务完成后再调用,从而减少后续操作对前操作的影响
- 事件订阅可能会有多个消息主体,为了方便管理最好统一在一个类里处理
- MQ消息发布一般放在事件订阅中
消息订阅:
- 消息订阅是多个微服务间协作解耦的一步实现方式
- 消息体尽量以统一的对象包装进行传递,降低对象异构带来的处理难度
5. 基础设施层(infrastructure)
@Repository
public class TradeRepositoryImpl implements TradeRepository {private final JpaTradeRepository jpaTradeRepository;private final RabbitMQSender rabbitMQSender;private final Redis redis;public TradeRepositoryImpl(JpaTradeRepository jpaTradeRepository, RabbitMQSender rabbitMQSender, Redis redis) {this.jpaTradeRepository = jpaTradeRepository;this.rabbitMQSender = rabbitMQSender;this.redis = redis;}@Overridepublic TradeRecord save(TradeRecord tradeRecord) {return jpaTradeRepository.save(tradeRecord);}/*** 查询订单*/@Overridepublic TradeRecord findByTradeNumber(String tradeNumber) {TradeRecord tradeRecord = redis.getTrade(tradeNumber);if (tradeRecord == null){tradeRecord = jpaTradeRepository.findFirstByTradeNumber(tradeNumber);// 缓存redis.cacheTrade(tradeRecord);}return tradeRecord;}/*** 发送事件消息* @param tradeEvent*/@Overridepublic void sendMQEvent(TradeEvent tradeEvent) {// 发送消息rabbitMQSender.sendMQTradeEvent(tradeEvent);}/*** 获取所有*/@Overridepublic List<TradeRecord> findAll() {return jpaTradeRepository.findAll();}
}
- 基础设施层是数据的输出向,主要包含数据库、缓存、消息队列、远程访问等的技术实现
- 基础设计层对外隐藏技术实现细节,提供粗粒度的数据输出服务
- 数据库操作:领域层传递的是数据对象,在这里可以按数据表的实现方式进行拆分实现
6. 用户接口层(controller)
@RequestMapping("/trade")
@RestController
public class TradeController {@Autowiredprivate TradeManager tradeManager;@Autowiredprivate TradeRepository tradeRepository;@PostMapping(path = "/recharge")public TradeDTO recharge(@RequestBody TradeDTO tradeDTO) {return TradeDTO.toDto(tradeManager.recharge(tradeDTO.toEntity()));}@PostMapping(path = "/consume")public TradeDTO consume(@RequestBody TradeDTO tradeDTO) {return TradeDTO.toDto(tradeManager.consume(tradeDTO.toEntity()));}@GetMapping(path = "/{tradeNumber}")public TradeDTO findByTradeNumber(@PathVariable("tradeNumber") String tradeNumber){return TradeDTO.toDto(tradeRepository.findByTradeNumber(tradeNumber));}}
- 用户接口层面向终端提供服务支持
- 可根据不同的场景单独一个模块,面向Web提供http restful,面向服务间API调用提供RPG支持
- 为Web端提供身份认证和权限验证服务,VO数据转换
- 为API端提供限流和熔断服务,DTO数据转换
- 将数据转换从应用层提到用户接口层更方便不同场景之前的需求变化,同时也保证应用层数据格式的统一性
7. 复杂数据查询
以上可见并没有涉及复杂数据查询问题,此问题不涉及业务逻辑处理所以不应该放在领域层处理。
如果复杂数据查询需求较多可采用CQRS模式,将查询单独一个模块处理。如果较少可由基础设施层做数据查询,应用层做数据封装,用户接口层做数据调用
- JPA不太适合做多表关联的数据库查询操作,可使用其它的灵活性较高的ORM架构
在大数据大并发情况下,多表关联会严重影响数据库性能,可以考虑做宽表查询
三、综述
DDD分层主要解决各层之间耦合度问题,做到各层各施其职互不影响。各层中领域层的设计是整个系统的中枢,最能体现领域驱动设计的核心思想。它的良好设计是保证往后架构的可持续性,可维护性。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Spring项目运行流程
第一步 加载Spring容器 ApplicationContext ac new ClassPathXmlApplicationContext("applicationContext.xml"); 第二步 IOC容器去读取配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springfr…...
2024/4/18 1:53:01 - 在不编译的前提下如何debug Application的方法
实际上,你运行app程序,然后attach app程序就行了。但是Application方法或者首页闪屏方法等你attach上已经运行完毕自然无法debug上了。当然你可以重新debug 编译。如果在不编译的前提下可以如下。 我们可以首先通过adb shell am set-debug-app -w &#…...
2024/4/20 0:01:46 - Android Studio包装好的LoginActivity的使用
Android Studio包装好的LoginActivity的使用目录结构LoginDataSourceLoginRepositoryResultLoggedInUserViewLoginActivityLoginFormStateLoginResultLoginViewModelLoginViewModelFactory目录结构 LoginDataSource:具体对用户的登录登出操作进行处理 LoginReposito…...
2024/4/15 4:08:01 - 知识图谱基本知识
一、知识图谱的基本概念 知识图谱其实就是一个庞大的知识库,以前的搜索引擎是根据关键字进行的搜索,搜索出的内容是有关键字的网页就会被搜索出来,运用了知识图谱后根据搜索的内容就会将与关键字相关的内容进行展示。例如:百度搜索…...
2024/4/7 1:03:23 - opencv(c++)实现图像处理基本操作
1. 头文件含义 常见头文件 #include<opencv2/core/core.hpp> #include<opencv2/imgcodecs.hpp> #include<opencv2/highgui.hpp> #include<opencv2/imgproc.hpp> #include<iostream>含义:[core ] 核心功能块 主要包含了 OpenCV基本数…...
2024/4/7 1:03:22 - leetcode 拼接最大数
题目链接 思路:单调栈 这个题目其实就是好几个问题绑在了一起,现在我们来一层层拆开它。 首先,要挑选出k个,那么可以从第一个数组里面挑选0个、1个、2个、…k个,对应的,从第二个数组里面挑选 k个、k-1、k-2…...
2024/4/20 3:18:31 - nginx 进程数设置
Nginx默认没有开启利用多核CPU,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU。CPU是任务处理,计算最关键的资源,CPU核越多,性能就越好。 配置Nginx多核CPU,worker_cpu_affinity使用方法和范例 2核CPU,开启2个进…...
2024/4/19 21:27:55 - python 人脸识别库face_recognition 模块安装
首先我去import face_recognition,说模块不存在,提示“ImportError: No module named ‘face_recognition’” 然后我直接在命令行输入pip install face_recognition,安装失败,然后我去查了一下说是缺少cmake模块,我就…...
2024/4/15 4:07:56 - ElementUI 省市区多选搜索(前台+后台传参)详细
用到的ElementUi组件 直达链接: https://element.eleme.cn/#/zh-CN/component/select 效果 一、前台(element-uivue) 1)添加组件 2)js部分,添加到return里 3)加入查询数组定义 4࿰…...
2024/4/18 22:22:49 - 二分快速幂(递归版、位运算版)
文章目录引言二分快速幂递归思路二进制循环思路写在后面课后习题50. Pow(x, n)递归二进制372. 超级次方1808. 好因子的最大数目引言 我们为什么会需要用到快速幂这种算法?试想这样一个场景:题目要求计算254545565254545565254545565的2662313312266231331226623133…...
2024/4/18 20:08:56 - 查理百度指数批量查询软件【高速引擎】
...
2024/4/18 14:26:35 - jmeter使用beanshell预处理脚本做数据加密和字符串转大写
import org.apache.commons.codec.digest.DigestUtils; String password vars.get("password"); String pwdDigestUtils.md5Hex(password).toUpperCase( );//将密码加密且转换为大写 vars.put("pwd",pwd);...
2024/4/19 23:45:26 - Implementation of the USB 2.0 controller not found
虚拟机升级到高版本后,打不开之前已经配置好的系统,提示 解决方案 参考网址:VirtualBox 高版本虚拟机出现: Implementation of the USB 2.0 controller not found!_zhangbeizhen18的博客-CSDN博客...
2024/4/14 7:22:42 - 并查集 舞伴
题目描述 小明在A公司工作,小红在B公司工作。这两个公司的员工有一个特点:一个公司的员工都是同性。A公司有N名员工,其中有P对朋友关系。B公司有M名员工,其中有Q对朋友关系。 朋友的朋友一定还是朋友。每对朋友关系用两个整数(Xi…...
2024/4/16 9:47:11 - ConcurrentHashMap多线程环境
场景: 根据ID去执行任务,每个任务都是确定的,数据装入了MAP中。 先取key,再取value。 分析 Map的实现类有HashMap 和ConcurrentHashMap,区别是HashMap线程不安全,ConcurrentHashMap线程安全。 Map<Int…...
2024/4/15 4:07:41 - 浅谈DNS递归解析和迭代解析之间的区别
DNS解析是互联网中的重要环节,承担着将域名翻译为可由计算机直接读取的IP地址的基础功能。根据查询对象不同DNS解析可分为递归解析和迭代解析两种方式,接下来,中科三方将简单介绍下两种查询方式的流程以及两种方式的区别。 什么是递归查询&a…...
2024/4/20 2:46:50 - 表达式求和<递归>
上代码! #include <cstdio> #include <cstring> #include<iostream> using namespace std; int factor_value(); int term_value(); int expression_value(); int main() {cout<<expression_value()<<endl;return 0; } int expressi…...
2024/4/15 4:08:06 - Socket的Send和Recv接收速率慢说明
1. 背景 在不同电脑的Windows系统中,使用同一个服务程序和客户端程序(TCP协议)进行测试,在部分电脑(win7)出现Send 和Recv大量数据,有时会出现Send和Recv一个数据包耗时1~2s的情况。 2. 原因 …...
2024/4/17 4:15:15 - unity api
// buildsetting 中当前选中的platform EditorUserBuildSettings.activeBuildTarget // 查找指定资源的依赖 EditorUtility.CollectDependencies(new Object[] {AssetDatabase.LoadAssetAtPath<Object>("资源路径")}) // 查找指定资源的依赖 AssetDatabase.Get…...
2024/4/7 1:03:12 - 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 )
文章目录一、获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址二、从 /proc/pid/maps 文件中获取 指定 进程 中的 /system/lib/libc.so 动态库地址三、获取 本地进程 中的 /system/lib/libc.so 动态库的 mmap 函数地址四、获取 远程进程 中的 /system/li…...
2024/4/15 4:07:56
最新文章
- 初步学习node.js文件模块
环境已安装好; 写一个read1.js如下; var fs require("fs"); var data ;// 创建一个流 var stream1 fs.createReadStream(test1.jsp); stream1.setEncoding(UTF8);// 绑定data事件 stream1.on(data, function(mydata) {data mydata; });/…...
2024/4/20 12:23:14 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Docker搭建daapd
使用 daapd Docker 镜像搭建音乐流媒体服务器 daapd 是一个开源的音乐流媒体服务器,它支持 AirPlay 和 iTunes 音乐共享协议,可以让用户通过网络访问和播放音乐。通过 Docker 镜像,可以在服务器上轻松部署 daapd,并将其作为家庭或…...
2024/4/12 17:29:41 - JRT高效率开发
得益于前期的基础投入,借助代码生成的加持,本来计划用一周实现质控物维护界面,实际用来四小时左右完成质控物维护主体,效率大大超过预期。 JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式,觉得Spring打包…...
2024/4/19 21:21:58 - Java-运算符
运算符 Java语言支持如下运算符: 算术运算符:,-,*,/,%,,--复制运算符:关系运算符:>, <, >, <, , !instanceof逻辑运算符:&&…...
2024/4/18 11:02:54 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/19 14:24:02 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/19 18:20:22 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/19 11:57:31 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/19 11:57:31 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/19 11:57:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/19 11:57:53 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/19 11:58:14 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/19 11:58:20 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/20 7:40:48 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/19 11:58:39 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/19 11:58:51 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/20 3:12:02 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/19 11:59:15 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/19 11:59:23 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/19 11:59:44 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/19 11:59:48 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/19 12:00:06 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/19 16:57:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/19 12:00:25 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/19 12:00:40 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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