史上最详Android版kotlin协程入门进阶实战(一),理解透彻
不急,慢慢来,我们一个一个的来解释清楚。
Job
我们可以认为他就是一个协程作业是通过CoroutineScope.launch
生成的,同时它运行一个指定的代码块,并在该代码块完成时完成。我们可以通过isActive
、isCompleted
、isCancelled
来获取到Job
的当前状态。Job
的状态如下图所示,摘自官方文档:
协程的生命周期
| State | [isActive] | [isCompleted] | [isCancelled] |
| — | — | — | — |
| New (optional initial state) | false
| false
| false
|
| Active (default initial state) | true
| false
| false
|
| Completing (transient state) | true
| false
| false
|
| Cancelling (transient state) | false
| false
| true
|
| Cancelled (final state) | false
| true
| true
|
| Completed (final state) | false
| true
| false
|
我们可以通过下图可以大概了解下一个协程作业从创建到完成或者取消,Job
在这里不扩展了,后面我们会在实际使用过程中去讲解。
wait children
±----+ start ±-------+ complete ±------------+ finish ±----------+
| New | -----> | Active | ---------> | Completing | -------> | Completed |
±----+ ±-------+ ±------------+ ±----------+
| cancel / fail |
| ±---------------+
| |
V V
±-----------+ finish ±----------+
| Cancelling | --------------------------------> | Cancelled |
±-----------+ ±----------+
Deferred
Deferred
继承自Job
,我们可以把它看做一个带有返回值的Job
,
public interface Deferred : Job {
//返回结果值,或者如果延迟被取消,则抛出相应的异常
public suspend fun await(): T
public val onAwait: SelectClause1
public fun getCompleted(): T
public fun getCompletionExceptionOrNull(): Throwable?
}
我们需要重点关注await()
方法,可以看到await()
方法返回结果是T
,说明我们可以通过await()
方法获取执行流的返回值,当然如果出现异常或者被取消执行,则会抛出相对应的异常。
什么是作用域
协程作用域(Coroutine Scope
)是协程运行的作用范围。launch
、async
都是CoroutineScope
的扩展函数,CoroutineScope
定义了新启动的协程作用范围,同时会继承了他的coroutineContext
自动传播其所有的 elements
和取消操作。换句话说,如果这个作用域销毁了,那么里面的协程也随之失效。就好比变量的作用域,如下面test
方法中的money
变量
private fun test(){ // scope start
int money = 100;
println(money)
} // scope end
// println(money)
此时money
是不能被调用,因为AS会提示 Unresolved reference: money
。协程作用域也是这样一个作用,可以用来确保里面的协程都有一个作用域的限制。我们开发过程中最常见的场景就内存泄露,协程同样存在这样的问题,后面我们再细细讲解协程作用域CoroutineScope
的相关知识,这里只是作为基础点讲解,不继续往下延伸。
============================================================================
现在我们开始使用协程,首先我们在MainActivity
的xml布局
中新建一个Button
按钮然后设置好点击事件,然后创建一个start()
方法,通过Button
的点击事件执行。现在我们开始在start
方法中使用协程。
刚才我们上面提到启动协程有三种方式,接下来我们先看看如何通过runBlocking
、launch
和async
启动协程,我们直接在start方法中使用,但是由于我们的launch
和async
启动,只能在协程的作用域下启动,那我们又该怎么办呢?
在Android中有一个名为GlobalScope
全局顶级协程,这个协程是在整个应用程序生命周期内运行的。我们就以此协程来使用launch
和async
启动,代码如下:
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.Group
import androidx.viewpager.widget.ViewPager
import kotlinx.coroutines.*
import java.lang.NullPointerException
class MainActivity : AppCompatActivity() {
private lateinit var btn:Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn = findViewById(R.id.btn)
btn.setOnClickListener {
start()
}
}
private fun start(){
runBlocking {
Log.d(“runBlocking”, “启动一个协程”)
}
GlobalScope.launch{
Log.d(“launch”, “启动一个协程”)
}
GlobalScope.async{
Log.d(“async”, “启动一个协程”)
}
}
}
然后运行app,点击按钮执行start()
方法。我们就可以在控制台上看到如下输出:
D/runBlocking: 启动一个协程
D/launch: 启动一个协程
D/async: 启动一个协程
哇
,so easy。协程原来这么简单,那我们接着继续往下走。上面提到过三种启动方式分别会的得到各自的返回信息。我们现在增加三个变量然后分别用协程进行赋值,同时进行输出:
private fun start(){
val runBlockingJob = runBlocking {
Log.d(“runBlocking”, “启动一个协程”)
}
Log.d(“runBlockingJob”, “$runBlockingJob”)
val launchJob = GlobalScope.launch{
Log.d(“launch”, “启动一个协程”)
}
Log.d(“launchJob”, “$launchJob”)
val asyncJob = GlobalScope.async{
Log.d(“async”, “启动一个协程”)
“我是返回值”
}
Log.d(“asyncJob”, “$asyncJob”)
}
然后运行,我们可以在控制台上看到如下输出:
D/runBlocking: 启动一个协程
D/runBlockingJob: 41
D/launchJob: StandaloneCoroutine{Active}@3b8b871
D/launch: 启动一个协程
D/async: 启动一个协程
D/asyncJob: DeferredCoroutine{Active}@63f265
也有可能是
D/runBlocking: 启动一个协程
D/runBlockingJob: 41
D/launchJob: StandaloneCoroutine{Active}@1344515
D/asyncJob: DeferredCoroutine{Active}@38c002a
D/async: 启动一个协程
D/launch: 启动一个协程
还有可能是
D/runBlocking: 启动一个协程
D/runBlockingJob: 41
D/launch: 启动一个协程
D/launchJob: StandaloneCoroutine{Active}@b94e973
D/async: 启动一个协程
D/ asyncJob: DeferredCoroutine{Active}@f7aa030
嗯哼,什么情况
怎么后面4条日志顺序还是随机的。没有看懂的童鞋,说明你没有仔细看上面的文字。
知识点来了,赶紧拿出你的小本本记下来,我们一个一个的来分析。
我们在上面提到过runBlocking
启动的是一个新的协程并阻塞调用它的线程,我们对比输出日志可以看到前两条runBlocking
的相关输出日志的位置顺序是不会变化的,这就证明我们之前所说的runBlocking
会阻塞调用它的线程,直到runBlocking
运行结束才继续往下执行。
接下来我们再继续往下看,我们看到后面四条日志是无序的,但是launchJob
始终在asyncJob
前面。而launch
和async
协程体内的日志输出是无序的。每执行一次看到的顺序都有可能跟之前的不一样。我们前面提到过launch
和async
都是启动一个协程但不会阻塞调用线程,所以launchJob
始终在asyncJob
前面(2个协程之间不是很明显,你们自己在尝试的时候,可以同时启动5个甚至更多协程去看日志输出)
而launch
和async
协程体内的日志是无序的,这是因为协程采用的是并发设计模式,所以launch
和async
的协程体内的log日志输出是无序方式,这就解释了launch
和async
都是启动一个协程但不会阻塞调用线程,同时也解释了log日志之间输出顺序之间的关系(这里描述是不严谨的,后面会补充
)。
难道就这样结束了吗?那你想的可就太简单了。刚才我们提到协程采用的是并发设计模式,多个协程并发执行的。那如果这个时候,我们把启动协程放在同一协程作用域下启动的是顺序又该是怎么样的呢? 大家可以先思考一下这个问题,回头我们再来看这个问题。
现在我们回到之前的话题,我们看到输出的日志信息中runBlockingJob
的输出结果是41,为什么是这么一个数值,其实他默认返回是一个该协程作业的当前状态
我们通过runBlocking
方法可以看到,其返回值是调用了joinBlocking
方法,而在joinBlocking
方法中
我们看到joinBlocking
方法返回了一个state强转成泛型T
类型。我们现在大概知道runBlocking
返回的是个什么东西了。如果在runBlocking
协程最后一行增加一个返回值:
val runBlockingJob = runBlocking {
Log.d(“Coroutine”, “runBlocking启动一个协程”)
“我是runBlockingJob协程的返回值”
}
我们将会看到如下输出:
D/Coroutine: runBlocking启动一个协程
D/runBlockingJob: 我是runBlockingJob协程的返回值
runBlocking
它的设计目的是将常规的阻塞代码连接到一起,主要用于main
函数和测试中。根据本文章的目标我们后续将不再往下扩展。
继续往下走,我们看到launchJob
输出的是一个StandaloneCoroutine
对象,为什么会是一个StandaloneCoroutine
对象呢,不是说好的返回一个Job吗?
别慌,稳住!继续往下看
我们看到launch
函数中有3个参数context
、start
和block
,同时都带有默认值,虽然我们不知道这三个参数是干什么用的,但是我们可以看名知其意,不妨先大胆的猜测一下,我们这里先跳过,后面再针对这三个参数做一些基本讲解。我们看到launch
方法最终返回的是一个coroutine
对象,由于我们没有传入值其最后返回的是一个StandaloneCoroutine
对象,跟我们输出的日志结果一致。那为什么笔者会说launch
返回的是一个Job呢。我们再继续看看StandaloneCoroutine
又是一个什么鬼,通过查找继承关系我们可以看到,StandaloneCoroutine
就是一个Job,现在就一目了然了。
private open class StandaloneCoroutine(…) : AbstractCoroutine(parentContext, active){
//此处省略…
}
public abstract class AbstractCoroutine(…) : JobSupport(active), Job, Continuation, CoroutineScope {
//此处省略…
}
同理我们也看看async
函数,和launch
拥有同样的3个参数context
、start
和block
,默认值都是一样的,最终返回的是也是一个coroutine
对象。只是async
返回的DeferredCoroutine
对象。
private open class DeferredCoroutine(…) : AbstractCoroutine(parentContext, active), Deferred, SelectClause1 {
//此处省略…
}
同样的都是继承 AbstractCoroutine<Unit>
类,但是DeferredCoroutine
同时也继承Deferred<T>
接口。这么看来DeferredCoroutine
就是一个Deferred<T>
,一个携带有返回值Job
。那么问题来了,我们要怎么获取到这个Deferred<T>
携带的返回值T
呢。
我们在一开始的时候提到需要重点关注Deferred
的await()
方法,我们可以通过返回Deferred
对象,调用await()
方法来获取返回值,我们看到await()
前面有个suspend
关键字,这又是个额啥玩意。
public suspend fun await(): T
suspend
是协程的关键字,表示这个一个挂起函数,每一个被suspend
饰的方法只能在suspend
方法或者在协程中调用。现在我们修改之前的代码,同时多增加几条输出日志:
private fun start(){
GlobalScope.launch{
val launchJob = launch{
Log.d(“launch”, “启动一个协程”)
}
Log.d(“launchJob”, “$launchJob”)
val asyncJob = async{
Log.d(“async”, “启动一个协程”)
“我是async返回值”
}
Log.d(“asyncJob.await”, “😒{asyncJob.await()}”)
Log.d(“asyncJob”, “$asyncJob”)
}
}
现在我们通过GlobalScope.launch
启动里一个协程,同时在协程体里面通过launch
直接又启动了2个协程。为什么我们没有在协程体使用GlobalScope.launch
启动,而是使用launch
直接启动。前面我们提到过调用launch
必须要在协程作用域(Coroutine Scope
)中才能调用,因为通过runBlocking
、launch
和async
启动的协程体等同于协程作用域,所以这里我们就可以直接使用launch
启动一个协程。我们运行一下,接着看看日志输出:
D/launchJob: StandaloneCoroutine{Active}@f3d8da3
D/launch: 启动一个协程
D/async: 启动一个协程
D/await: :我是async返回值
D/asyncJob: DeferredCoroutine{Completed}@d6f28a0
也有可能是这样的
D/launchJob: StandaloneCoroutine{Active}@f3d8da3
D/async: 启动一个协程
D/launch: 启动一个协程
D/asyncJob.await: :我是async返回值
D/asyncJob: DeferredCoroutine{Completed}@d6f28a0
现在我们看到asyncJob.await
也是输出我们之前定义好的返回值,同时DeferredCoroutine
的状态变成了{Completed}
,这是因为await()
是在不阻塞线程的情况下等待该值的完成并继续执行,当deferred
计算完成后返回结果值,或者如果deferred
被取消,则抛出相应的异常CancellationException
。但是又因为await()
是挂起函数,他会挂起调用他的协程。所以我们看到的DeferredCoroutine
的状态是{Completed}
,同时输出的await
日志也是在最后面。
好了,至此。我们对runBlocking
、launch
、async
的相关介绍就到这里了。
现在我们回过头来看,我们在上面提到过:“因为协程采用的是并发设计模式,所以导致launch
和async
的协程体内的log日志输出是无序方式(这样说是不严谨
)”。
因为协程是采用就是并发的设计模式,这句话的大多数环境下是没有问题。但是,但是,但是,这里需要注意的小细节来了。如果某个协程满足以下几点,那它里面的子协程将会是同步执行的:
-
父协程的协程调度器是处于
Dispatchers.Main
情况下启动。 -
同时子协程在不修改协程调度器下的情况下启动。
private fun start() {
GlobalScope.launch(Dispatchers.Main) {
for (index in 1 until 10) {
//同步执行
launch {
Log.d(“launch$index”, “启动一个协程”)
}
}
}
}
D/launch1: 启动一个协程
D/launch2: 启动一个协程
D/launch3: 启动一个协程
D/launch4: 启动一个协程
D/launch5: 启动一个协程
D/launch6: 启动一个协程
D/launch7: 启动一个协程
D/launch8: 启动一个协程
D/launch9: 启动一个协程
private fun start() {
GlobalScope.launch {
们回过头来看,我们在上面提到过:“因为协程采用的是并发设计模式,所以导致launch
和async
的协程体内的log日志输出是无序方式(这样说是不严谨
)”。
因为协程是采用就是并发的设计模式,这句话的大多数环境下是没有问题。但是,但是,但是,这里需要注意的小细节来了。如果某个协程满足以下几点,那它里面的子协程将会是同步执行的:
-
父协程的协程调度器是处于
Dispatchers.Main
情况下启动。 -
同时子协程在不修改协程调度器下的情况下启动。
private fun start() {
GlobalScope.launch(Dispatchers.Main) {
for (index in 1 until 10) {
//同步执行
launch {
Log.d(“launch$index”, “启动一个协程”)
}
}
}
}
D/launch1: 启动一个协程
D/launch2: 启动一个协程
D/launch3: 启动一个协程
D/launch4: 启动一个协程
D/launch5: 启动一个协程
D/launch6: 启动一个协程
D/launch7: 启动一个协程
D/launch8: 启动一个协程
D/launch9: 启动一个协程
private fun start() {
GlobalScope.launch {
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 2022年阿里云新春特惠活动怎么样?
2022年阿里云新春特惠云服务器新人首购低至38元一年 最近阿里云也上线了2022年阿里云新春特惠活动,下面跟随小编赵一八笔记一起来看看阿里云新春特惠活动都有哪些亮点?2022新春特惠云上迎新春开心过大年,汇聚阿里云近100款爆款产品,爆款云服…...
2024/5/3 23:48:58 - 力扣98 验证二叉搜索树
思路:验证二叉搜索树就需要遍历,遍历二叉搜索树可以采用中序遍历,这样遍历的结果是升序的,为了验证是否是升序,设置结点preNode来保存上一个访问过的结点。 TreeNode preNodenull;public boolean isValidBST(TreeNode…...
2024/4/14 7:41:21 - 100多个常用免费 API 接口分享,不限次数,留着备用
点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! 各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的。 聚合数据提供30大类,160种以上基础数据API服务,…...
2024/4/14 7:41:06 - opencv-python学习笔记(1)图像基本操作
基于对学校所学课程的完善和补充(老师摆大烂),在寒假决定自学opencv,将学习过程以笔记形式上传至csdn方便以后复习。学习过程主要参考唐宇迪老师的opencv实战课程,此笔记参考网络相关资料。 学习使用的实验环境是python3.6opencv3.4.1,在jup…...
2024/4/19 10:11:29 - 2022年阿里云企业初创服务套餐特惠低至2.8折
2022年阿里云企业初创服务套餐特惠低至2.8折 最近有很多朋友问阿里云对于初创型企业没有优惠活动?近日阿里云推出阿里云企业创服务,套餐享特惠低至2.8折,阿里云基于用户的业务场景推荐专属服务,多款域名组合产品,助力创业轻松快人一步!套餐包含域名注册,企业应用服务,企业邮箱…...
2024/4/14 7:41:01 - Java:最通俗易懂地理解0-1背包问题
Reference: https://www.jianshu.com/p/a66d5ce49df5 问题: 0-1背包问题:给定n种物品和一背包。物品 i 的重量似乎 wi,其价值为 vi,背包的容量为 c。问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大&…...
2024/5/4 7:01:56 - BrokenPipeError: [Errno 32] Broken pipe
pytorch报错BrokenPipeError: [Errno 32] Broken pipe torch.utils.data.DataLoader(testset, batch_size4, shuffleFalse, num_workers2)修改num_workers0即可...
2024/4/14 7:41:01 - IntelliJ IDEA为类和方法自动添加注释模板定义
IntelliJ IDEA为类和方法自动添加注释模板定义 一.类注释 File–>Settings–>Editor–>File and Code Templates–>Includes 第四步所需添加内容 /*** ClassName ${NAME}* author 你的名称* version 1.0.0* Description * createTime ${YEAR}年${MONTH}月${DAY}…...
2024/4/26 14:56:50 - 零基础入门C语言第六课
第六课:初级指针 目录 第六课:初级指针 1.1指针是什么? 1.2指针和指针类型 1.3野指针 1.4指针运算与指针操作 1.5指针和数组以及变长数组(VLA) 1.6二级指针 1.7指针数组 1.8指针的兼容性 1.1指针是什么? 指针就是地址&…...
2024/4/14 7:40:56 - 日志记录-Loging
Pytorch-Lightning中的日志记录 TensorBoardLogger 常用参数 参数名称含义默认值save_dir保存路径name该日志记录器的名字defaultlog_graph向Tensorboard中添加计算图,要求用户模型定义了self.example_input_array属性False LightningModule.log()用法 常用参数…...
2024/4/7 16:12:42 - vscode 前端常用插件推荐,跳转新网址
https://www.cnblogs.com/xfcao/p/12729365.html...
2024/4/15 23:12:02 - Java集合概述一
关系图 这是官方的图,一看就头大,没关系,慢慢来! 简单说来就是 : Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是…...
2024/5/4 8:55:56 - java实现传输H.264的RTSP服务
java实现传输H.264的RTSP服务 参考:从零开始写一个RTSP服务器(四)一个传输H.264的RTSP服务器 h264文件:test.h264文件地址 代码 RtspTcpServer.java import java.io.*; import java.net.InetAddress; import java.net.ServerS…...
2024/4/14 7:41:31 - (六)深入理解蓝牙Mesh的包格式之“分包与重组”
目录 前言: Mesh网络各层消息格式: access layer格式: upper transport layer格式: lower transport layer格式: 未分包的接入消息: 分包的接入消息: 未分包的控制消息: 分…...
2024/4/17 15:31:59 - jdbc理解
jdbc 1)一组规范和协议。用来连接 Java 编程语言和广泛的数据库。 2)5大接口 Driver:描述驱动程序的 Connection:数据库连接 Statement:执行sql语句 ResultSet:结果集的 ResultSetMetaData:结果集元数据(表头 字段名,数据类型) A.Driver 驱动 B.C…...
2024/5/4 1:19:02 - MySQL概述
MySQL基础 第一章 数据库概述 DBMS:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。 DB:数据库(Database) SQL:结构…...
2024/5/4 9:04:47 - python入门学习心得 22.1.23
第六章 字典与集合 1.字典的概念与基本操作(方法get) 字典是一系列键值对 访问值,添加键值对,修改值,创建空字典(用户提供数据或能自动生成大量键值对) 删除键值对:del 字典名[键…...
2024/4/7 16:12:35 - python——位运算符‘‘、‘|‘、‘^‘、‘~‘、‘>>‘、‘<<‘
一、位运算符 Python中的按位运算符是把数字看作二进制来进行计算的。 二、与运算符(&) 运算规则: 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 0&00;0&10;…...
2024/4/20 11:59:30 - [Python从零到壹] 三十四.OpenCV入门详解——显示读取修改及保存图像
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望…...
2024/4/14 7:42:07 - 考研自习(三)
考研自习(三)前言数学一(301)数学二(302)常用基础知识函数1、函数2、反函数3、复合函数4、函数的四种重要特性及一些重要结论函数的图像直角坐标系下图像(f(x,y)0)极坐标系下函数图像…...
2024/4/19 15:36:50
最新文章
- 从零开始搭建一个vue项目
从零开始搭建一个vue项目 一、环境准备 1.1 安装node.js 选择合适的LTS版本,然后下载安装,安装地址:https://nodejs.org/en/download 在命令行中查看已安装的node.js版本 node -v v14.14.01.2 切换为淘宝的镜像源 解决国内下载慢的问题,…...
2024/5/4 12:39:01 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - JVM学习笔记
文章目录 一、内存模型1. 程序计数器2. 栈3. 本地方法栈4. 堆5. 方法区方法区位置字符串常量池位置 6. 直接内存 二、虚拟机参数设置三、类的生命周期1. 加载2. 连接1)验证2)准备3)解析 3. 初始化4. 卸载 四、类加载器1. 启动类加载器2. 扩展…...
2024/5/1 13:33:02 - CSS3 高级- 复杂选择器、内容生成、变形(transform)、过渡(transition)、动画(animation)
文章目录 一、复杂选择器兄弟选择器:选择平级元素的唯一办法属性选择器:1、通用:基本用不着,太泛了2、自定义:4种伪类选择器:1、目标伪类:2、结构伪类:3、元素状态伪类:4、伪元素选择器:应用于文字,使网页看起来想杂志5、否定伪类:选择器:not([本选择器的条件]) /*…...
2024/5/3 10:26:16 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/3 23:10:03 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/4 2:59:34 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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