关于Kotlin,你不知道的那些事(一)------inline,noinline,crossinline
1.inline
相信大家很多在写kotlin代码的时候都看到过这样的关键字,比如常见的let,with,apply,also,但是大家又是否知道代表了什么含义呢,加了inline的方法能调用,不加inline关键字的方法也能调用,那这个关键字到底有什么作用呢?接下来我们通过实例来分析一下。
我们写一个测试类来分析。
fun main(args: Array<String>) {val result = sum(1, 2)print("result = $result")}fun sum(numA: Int, numB: Int): Int {return numA + numB
}
假如我们有这样1个方法,这个方法是没有添加inline关键字的,输出结果为:3,我们先查看一下最后编译为的java代码是怎么样的
public static final void main(@NotNull String[] args) {Intrinsics.checkParameterIsNotNull(args, "args");int result = sum(1, 2);String var2 = "result = " + result;boolean var3 = false;System.out.print(var2);}public static final int sum(int numA, int numB) {return numA + numB;}
从上面的代码可以看到,sum方法变成了一个static的方法,在main方法中第三行调用了这个sum方法,最后得到结果并输出。接下来我们再来看看加上了inline的方法。
fun main(args: Array<String>) {val result = sumInline(1, 2)print("result = $result")}inline fun sumInline(numA: Int, numB: Int): Int {return numA + numB
}
调用完以上方法以后,最后输出结果也是 3, 我们在看看编译后的java代码
public static final void main(@NotNull String[] args) {Intrinsics.checkParameterIsNotNull(args, "args");byte numA$iv = 1;int numB$iv = 2;int $i$f$sumInline = false;int result = numA$iv + numB$iv;String var5 = "result = " + result;boolean var6 = false;System.out.print(var5);}public static final int sumInline(int numA, int numB) {int $i$f$sumInline = 0;return numA + numB;}
从上面的代码我们可以看到,在main方法中,没有调用 sumInline 这个方法的地方,反而是在倒数第四行的地方,自己执行了2个数相加的代码逻辑,最后输出了结果。
从这里我们差不多可以得出一个
1.2 结论:
在调用了使用inline关键字声明的方法的时候,会在调用的地方,把那个方法里面的代码逻辑,拷贝到调用的地方执行,
不再通过方法(函数)的调用实现。
大家看懂上面的结论了吗? 大概意思就是,在调用使用了inline声明的方法的时候,最后生成的代码显示出你并不是在在调用这个方法,而是直接在你调用的地方执行方法里面的代码逻辑,这样做的一个好处就是
减少了方法(函数)调用的开销,特别是在循环调用的时候。
1.3 注意
inline 内联函数只适合函数内方法比较小,逻辑简单的情况下调用,如果你的逻辑复杂,建议还是不要使用内联函数。
2.noinline
根据名称可以看到,no-inline,好像是说不内联,从上面我们所知道的内联函数就是把函数里面的逻辑拷贝到调用函数的地方,那么no-inline意思是不是就是不拷贝到调用函数的地方呢? 我们还是以上面的代码为例,写一个noinline的例子
fun main(args: Array<String>) {sumNoinline(1, 2) { result ->print("result = $result")}}inline fun sumNoinline(numA: Int, numB: Int, noinline callback: (result: Int) -> Unit) {val result = numA + numBcallback(result)
}
注意,这里noinline和inline的使用必须是配合使用,noinline 关键字需要声明在kotlin的函数方法上。接下来我们看看编译后的java代码是怎么样的。
public static final void main(@NotNull String[] args) {Intrinsics.checkParameterIsNotNull(args, "args");byte numA$iv = 1;byte numB$iv = 2;Function1 callback$iv = (Function1)null.INSTANCE;int $i$f$sumNoinline = false;int result$iv = numA$iv + numB$iv;callback$iv.invoke(result$iv);}public static final void sumNoinline(int numA, int numB, @NotNull Function1 callback) {int $i$f$sumNoinline = 0;Intrinsics.checkParameterIsNotNull(callback, "callback");int result = numA + numB;callback.invoke(result);}
可以看到上面的代码,出现了一个叫Function1的对象,我们找到这个Fnuction1的具体代码
/** A function that takes 0 arguments. */
public interface Function0<out R> : Function<R> {/** Invokes the function. */public operator fun invoke(): R
}
/** A function that takes 1 argument. */
public interface Function1<in P1, out R> : Function<R> {/** Invokes the function with the specified argument. */public operator fun invoke(p1: P1): R
}
/** A function that takes 2 arguments. */
public interface Function2<in P1, in P2, out R> : Function<R> {/** Invokes the function with the specified arguments. */public operator fun invoke(p1: P1, p2: P2): R
}...............更多省略.....................
上面这样方法一共到Function22,表示可以最多的一个接口可以接收22个参数,我们这里因为只有一个参数在callback里面,所以,上面生成的java代码是Function1,在上面的java代码的main方法里面可以看到,里面也没有出现调用sumNoinline这个方法,相同的是,sumNoinline方法里面的2个数相加的逻辑也被放到了main方法中去实现了,这是不是也意味着noinline也把代码拷贝到了调用的地方执行呢,但是这里有一个需要注意的地方就是用noinline声明的这个callback函数方法参数,在main方法里面我们是这样实现的
sumNoinline(1, 2) { result ->print("result = $result")
}
通过后面通过一个lambda表达式去实现的,相当于是把这个lambda传递给了callback,当然这里的执行就是funcation的invoke方法了。当然上面的代码我们还可以这样写
sumNoinline(1, 2,{result ->print(result)
})
但是系统还是推荐我们用第一种写法,从上面的代码我们可以看到,我们lambda里面的一句输出的话在这里是看不到的,说明我们lambda里面的代码被放到了function中去执行了。接下来我们看另一个例子,这是上一个inline没有演示的
fun main(args: Array<String>) {suminline(1,2){result->println("result = $result")}
}inline fun suminline(numA: Int, numB: Int,callback: (result: Int) -> Unit) {val result = numA + numBcallback(result)}
可以看到这个这个方法和最上面的suminline不同的的是多了一个callback的函数方法,我们对比下这个没有加noinline的函数方法和加了noinline的函数方法的区别
public static final void main(@NotNull String[] args) {Intrinsics.checkParameterIsNotNull(args, "args");byte numA$iv = 1;int numB$iv = 2;int $i$f$suminline = false;int result$iv = numA$iv + numB$iv;int var6 = false;String var7 = "result = " + result$iv;boolean var8 = false;System.out.println(var7);}public static final void suminline(int numA, int numB, @NotNull Function1 callback) {int $i$f$suminline = 0;Intrinsics.checkParameterIsNotNull(callback, "callback");int result = numA + numB;callback.invoke(result);}
看到区别了吗 哥哥们 ???
如果没看明白,下面我就给大家一点点讲解一下。大家记得去对比下看是不是这样哦。
2.2 结论:
1.在inline内联函数上的普通函数方法(没有加入noinline),在最后生成的java代码,会把函数方法里实现的代码
(lambda里面的代码)也给copy到调用的地方。
(上面的代码可以看到最后输出的一句话就是本来在lambda表达式里面,
最后生 成的java代码里面lambda里面的代码被拷贝到了调用的地方)2.在使用了noinline的函数方法,lambda里面的方法是不会被拷贝到调用的地方执行的,会创建一个Function的接口类,
来实现lambda里面的方法,
那么我们应该在什么情况下使用noinline呢? 看下面这样一个例子
fun main(args: Array<String>) {suminline(1, 2) { result ->println("result = $result")}
}inline fun suminline(numA: Int, numB: Int, callback: (result: Int) -> Unit) {val result = numA + numBaddNumber(callback)
}fun addNumber(callback: (result: Int) -> Unit) {callback.invoke(1)
}
他会建议我们添加一个noinline关键字去修饰这个callback,这样就能达到复用的目的了。这里的addNumber只是一个普通的方法,如果addNumber也是一个inline内联方法,也可以不用添加,noinline关键字。
所以这里再次声明一下
2.3 注意:
1.inline会增加代码量,虽然你看不见,但是编译后的代码会有所增加,因为他把实现都拷贝到了调用函数的地方,
特别建议如果函数过大,不要使用inline关键字去声明函数,建议如果函数里面只有两三行代码的时候去使用,在某些情况,循环遍历的时候调用使用了inline的方法会提升效率。2.如果你想让你的callback复用,那么可以添加上noinline关键字,让他不内联。3.inline函数是允许在lambda中使用return的,如果添加了noinline关键字的lambda表达式是不能直接return,必须指定return的函数位置。
(这个意思就是,因为inline是拷贝了lambda里面的方法的,所以在return的时候没有问题,如果是在使用了noinline的lambda里面return,
因为这里面的方法是在Function里面执行的,并不能应用return到外部的返回,只能return到调用的这个function 不能白可以留言给大家再解释哈。)
3.crossinline
首先我们要知道的是,crossinline和noinline都是需要配合inline一起使用的,只有声明了inline的内联函数才能够使用noinline和crossinline关键字声明使用函数方法。
接下来我们看看crossinline和noinline有什么不同。
fun main(args: Array<String>) {suminline(1, 2) { result ->println("result = $result")}
}inline fun suminline(numA: Int, numB: Int, noinline callback: (result: Int) -> Unit) {val f = Runnable { callback(numA + numB) }f.run()
}
这是使用了noinline的代码,看看编译后的java代码是怎么样,这里我们相当于是在Runnable的lambda表达式里面调用了callback的lambda表达式
public static final void main(@NotNull String[] args) {
Intrinsics.checkParameterIsNotNull(args, “args”);
byte numAiv = 2;
Function1 callback$iv = (Function1)null.INSTANCE;
int fiv = (Runnable)(new Runnable(callbackiv, numB$iv) {
// $FF: synthetic field
final Function1 $callback;
// $FF: synthetic field
final int $numA;
// $FF: synthetic field
final int $numB;
public final void run() {this.$callback.invoke(this.$numA + this.$numB);}public {this.$callback = var1;this.$numA = var2;this.$numB = var3;}});f$iv.run();
}
public static final void suminline(int numA, int numB, @NotNull Function1 callback) {
int f$suminline = 0;
Intrinsics.checkParameterIsNotNull(callback, “callback”);
Runnable f = (Runnable)(new Runnable(callback, numA, numB) {
// $FF: synthetic field
final Function1 $callback;
// $FF: synthetic field
final int $numA;
// $FF: synthetic field
final int $numB;
public final void run() {this.$callback.invoke(this.$numA + this.$numB);}public {this.$callback = var1;this.$numA = var2;this.$numB = var3;}});f.run();
}
}
可以看到,他把这个方法内容拷贝到了调用的地方,callback这个lambda表达式的内容放置到了Function中去执行了。这里看不到
再来看看使用了crossonline的例子
fun main(args: Array<String>) {suminline(1, 2) { result ->println("result = $result")}
}inline fun suminline(numA: Int, numB: Int, crossinline callback: (result: Int) -> Unit) {val f = Runnable { callback(numA + numB) }f.run()
}
只是替换了一下把noinline替换为crossinline
public static final void main(@NotNull String[] args) {Intrinsics.checkParameterIsNotNull(args, "args");byte numA$iv = 1;int numB$iv = 2;int $i$f$suminline = false;Runnable f$iv = (Runnable)(new Unit_AKt$main$$inlined$suminline$1(numA$iv, numB$iv));f$iv.run();}public static final void suminline(final int numA, final int numB, @NotNull final Function1 callback) {int $i$f$suminline = 0;Intrinsics.checkParameterIsNotNull(callback, "callback");Runnable f = (Runnable)(new Runnable() {public final void run() {callback.invoke(numA + numB);}});f.run();}
}
// Unit_AKt$main$$inlined$suminline$1.java
package com.kotlin;import kotlin.Metadata;@Metadata(mv = {1, 1, 16},bv = {1, 0, 3},k = 3,d1 = {"\u0000\n\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\u0010\u0000\u001a\u00020\u0001H\n¢\u0006\u0002\b\u0002¨\u0006\u0003"},d2 = {"<anonymous>", "", "run", "com/kotlin/Unit_AKt$suminline$f$1"}
)
public final class Unit_AKt$main$$inlined$suminline$1 implements Runnable {// $FF: synthetic fieldfinal int $numA;// $FF: synthetic fieldfinal int $numB;public Unit_AKt$main$$inlined$suminline$1(int var1, int var2) {this.$numA = var1;this.$numB = var2;}public final void run() {int result = this.$numA + this.$numB;int var2 = false;String var3 = "result = " + result;boolean var4 = false;System.out.println(var3);}
}
这次生成的代码,比使用了noinline的时候多得多,我们来分析下哪些不一样。
在使用了crossinline的时候,它会把lamada里面的方法拷贝到执行的地方,不再生成一个Function来执行。在这个代码,因为内部有一个Runable的内部类,所以这里重新创建了一个Runable的实现类,可以看到在Runable这个实现类的run方法里面,lambda里面的代码被拷贝到了这里执行。
4.总结
所以看完了上面的分析,大家明白了各自的用途了吗。
1.inline的作用是会把调用的方法里面的代码拷贝到调用的地方执行。
2.noline需要配合inline一起使用,noline声明的lambda函数里面得代码不会被拷贝到代码执行的地方。会创建一个Funcation来实现lambda里面得方法。
3.crossinlne 如果内部是内部的lambda,那么最后回调地方的lambda表达式中的代码也会被拷贝到内部类的实现的地方调用
那么我们应该怎么使用crossinlne和noline呢,
1.如果你想让你的lambda表达式传递到给其他lambda使用,比如上面的callback这个函数方法传递给Runable使用,那么这个时候你就可以选择使用crossinlne或noinline2.如果你想让你的lambda里面的方法拷贝到调用它的上一个lambda表达式中使用,那么使用crossinlne,否则使用noinline3.注意这一个重要的功能就是:要想lambda传递使用的时候 使用crossinlne或noinline。
5.完
我觉得,总的来说呢,Kotlin给我们提供内联函数的作用就是代码优化的作用,可以提升程序执行效率。到底是调用函数执行,还是把函数体拷贝到调用的地方执行。crossinlne和noinline的作用就是让lambda表达式可以传递给下一个方法的函数使用,crossinlne解决了noinline不能拷贝函数方法到调用的地方执行的问题。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Java基础:【匿名内部类】是什么
接口的使用需要一个实现类的对象,有时候只需要使用一次,那么能不能跳过实现类的定义呢?同样的,一个父类的实现有时候也需要靠子类,这个子类的定义可以省略吗?...
2024/5/10 4:18:24 - 查找npm全局安装路径
使用npm root -g查询npm全局安装的路径 默认安装在 C:\Users\lenovo15\AppData\Roaming\npm\node_modules...
2024/5/10 5:23:59 - Mybatis的一级缓存与二级缓存
文章目录缓存介绍一级缓存一级缓存失效的原因二级缓存二级缓存使用步骤缓存相关属性缓存使用顺序二级缓存的使用原则 缓存介绍MyBatis中使用缓存来提高其性能。当查询数据时, 会先从缓存中取出数据,如果缓存中没有,再到数据库当中查询. MyBatis中的缓存分为两种:一级缓存和二级…...
2024/4/15 3:05:46 - Class.forName()和ClassLoader.loadClass()的区别
反射定义 在运行状态中,对任意一个类,都能知道这个类中所有的属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。 反射的使用过程中要基于Class对象,那通过Class.forName()或者ClassLoader.loadClass()获取Class有什么区别呢? 查看Class.forName()源码@Calle…...
2024/5/9 7:51:38 - 比较jvm内存结构&java内存模型&java对象模型
学习java过程中有三个概念,分别是jvm内存结构、java内存模型、java对象模型。我们系统的学习完之后,如果不加以总结对比,很容易混淆,相信不光是自己有时候会搞混,好多人应该也同样的困惑,所以这里对这三个知识点做一个总结和对比。希望能帮到大家。 一、jvm内存结构(jvm…...
2024/4/24 14:45:11 - golang-使用自定义的包(不使用包管理工具)
golang中怎样在不使用其它包管理工具时使用自己定义的包呢,这里举一个简单的例子。 在 GOPATH/src 下新建文件夹hello 执行时golang会在GOPATH/src/和GOROOT/src/下寻找代码中引入的包,所以一般在GOPATH/src下自定义包 在hello中新建文件夹func,在func下编写func.go: //自定义…...
2024/5/10 12:41:00 - 二十四、Java日常积累:Linux中的SSH
Linux中的SSH 传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到中间人 man-in-the-middle这种方式的攻…...
2024/5/2 7:42:33 - 分享自己学习cadence allegro 的一些经验,小白们大家一起学习上岸
2020.06.22分享 我使用的版本是allegro cadence 16.6,此版本的兼容性好 稳定,可上可下,方便使用。希望文章可以帮到你 有不足的地方请指正,感谢。 1.拿到软件后需要了解掌握的基础知识 菜单栏;在菜单栏下面由于其对应的功能图标 基础的打开保存另存就不多说了。** a.File*…...
2024/4/27 23:23:26 - [Leetcode学习-java]Longest Duplicate Substring(最长重复子串)
问题:难度:Hard说明:输入一个字符串,将里面最长而且出现一次以上的子串(连续的子序列)返回。问题链接:https://leetcode.com/problems/longest-duplicate-substring/输入范围:2 <= S.length <= 10^5,只输入小写字母输入案例:Example 1:Input: "banana&quo…...
2024/5/4 7:28:38 - Vue-cli 4.x使用vant样式出不来的解决方法(vue.config.js)
排查前提 1.babel.config.js配置完成 2.package.json中已经显示vant安装完成 解决方法 打开vue.config.jsrequireModuleExtension的值应为true,否则无法加载第三方样式 亲测可用...
2024/4/24 14:45:06 - BulkRen文件批量改名工具的一点点使用心得
目录资源地址:如何使用:PS:资源地址:如何使用:1.双击.exe文件2.看到如下图,选中1所在的要改名的目录,对于2中所有圈起来的“√”我认为只勾选一个就可以了,因为全勾选我就总是出错,且此时4处是灰色的,我们必须选中黄色区域的文件4才会被点亮,如果怕改错,可以先只选…...
2024/4/28 19:31:38 - JavaWeb基础之Filter过滤器&Listener监听器
Filter: 过滤器 1.概念: 生活中的过滤器:净水器,空气净化器、土匪等 web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 2.过滤器的作用: 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…Filter快速入门 步骤:定…...
2024/5/4 12:36:34 - JetBrains教育邮箱包续期Renew my Education Pack
你以为学生邮箱过期了,没法使用了? 看到没 renew!我们还能免费续杯!完成了,o( ̄▽ ̄)d!...
2024/5/4 7:15:41 - 2020最新省市区县编码
本文整理了全国省市区街道地区编号,数据来源百度地图,自己整理一下,仅供参考 省 INSERT INTO `yijiao-gov`.`cn_area` (`id`, `name`, `pid`, `level`) VALUES (110000, 北京市, 0, 1); INSERT INTO `yijiao-gov`.`cn_area` (`id`, `name`, `pid`, `level`) VALUES (120000,…...
2024/5/4 12:27:58 - XMind8绘制思维导图
为什么使用思维导图? 当你在知识和能力都达到一个相对饱和的状态,或者因为一团问题让你纠结思维混乱,或者在产品设计初期需求不明确时,如何利用特殊的工具和方法提高自己的生产力就变得尤为重要了,有时候哪怕是1%的效率提升都有可能极大的影响整个项目的发展,借助工具我们…...
2024/5/4 5:25:17 - 经典数据库面试题--员工部门平均工资&&
员工工资:实现:drop table t_salary; drop table t_dept;--部门信息create table t_salary( id varchar(2), dept_id varchar(2), name varchar(20), salary number(7,2) ); insert into t_salary values(1,3,Maggie,3454); insert into t_salary values(2,2,Jerry,2300); in…...
2024/4/24 14:45:00 - Nodejs中使用mariadb库连接MySQL数据库
Node.js连接器入门 MariaDB Node.js连接器可通过Node.js存储库获得。 您可以使用npm安装它: $ npm install mariadb在2017之前使用ECMAScript: const mariadb = require(mariadb); const pool = mariadb.createPool({host: mydb.com, user:myUser, password: myPassword,conn…...
2024/5/4 2:29:18 - mongodb复制集
复制集的作用注:一般都是奇数节点oplog是一个特别的集合,记录操作日志, 有一个线程监听这个变动, 同步到从节点上通过选举完成故障恢复1.如果是7个 >=4个存活2.优先级:多数据中心时,将主数据中心的节点优先级高于备数据中心的节点,这样一旦出现故障,会优先主数据中心…...
2024/4/24 14:44:58 - mysql学习之索引
mysql的索引是在存储引擎层实现的与服务层无关。这也就决定了不同的存储引擎是有不同的实现的。mysql支持的索引类型b-tree索引以b+tree的结果存储数据能够加快数据的查询速度,通常索引大小远小于数据本身更适合范围查找 使用场景:全值匹配的查询:order_sn = 2342342346763匹…...
2024/4/26 6:18:21 - 中文文本纠错 算例实现(有算例完整代码)
概述 文本纠错又称为拼写错误或者拼写检查,由于纯文本往往来源于手打或者OCR识别,很可能存在一些错误,因此此技术也是一大关键的文本预处理过程,一般存在两大纠错类型。 1拼写错误 第一种是Non-word拼写错误,表示此词汇本身在字典中不存在,比如把“要求”误写为“药求”,…...
2024/4/18 13:59:16
最新文章
- 获取携程景点列表 API
携程提供了获取景点列表的API,可以通过以下方式进行调用: API URL:获取key和密钥 请求参数: key:携程API密钥cityId:城市IDdistrictId:区域ID(可选)tagName࿱…...
2024/5/10 19:08:59 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/9 21:23:04 - Spring集成MyBatis
基本准备 创建Dynamic Web Project 引入相关jar包 Spring框架相关jar包 MyBatis连接Spring相关jar包 连接MySQL驱动包 JSTL标签库包 添加db.properties文件,该属性文件配置连接数据库相关信息 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/myba…...
2024/5/8 17:52:45 - Linux的软链接和硬链接
1、软链接 概念:给文件创建一个快捷方式,依赖原文件,和普通文件没有区别。 特性: 可以给存在的文件或目录创建软链接可以给不存在的文件或目录创建软链接可以跨文件系统创建软链接删除软链接不影响原文件、删除原文件会导致软链…...
2024/5/10 0:14:06 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/10 12:36:12 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/10 10:22:18 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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