本文地址ASM

字节码操纵框架ASM

Jacoco注入探针来进行覆盖率分析,主要使用的是ASM库。ASM是Java字节码操纵框架,它能够读取class文件,改变类行为,分析类信息,甚至能够生成自定义的新类。

ASM中核心类

  • ClassReader:该类用来解析字节码class文件,具体可以直接由字节组或者class文件间接的获得字节码数据。可以调用accept方法,这个方法接受一个实现了ClassVisitor接口的对象作为参数,然后依次调用ClassVisitor接口的各个方法。
  • ClassWriter:该类实现了ClassVisitor接口,用来重新构建编译后的类(是框架的核心部分),比如说修改类名、属性以及方法,生成新的字节码文件。具体而言,它可以以二进制的方式创建一个类的字节码,对于ClassWriter的每一个方法的调用会创建类的相应部分,例如调用visit方法会创建一个类的声明部分,调用visitMethod方法就会在这个类中创建一个新的方法,调用visitEnd方法表明对于该类的创建已经完成了。它最终会通过toByteArray方法返回一个数组,这个数组包含了整个class文件的完整字节码内容。
  • ClassAdapter:该类也实现了ClassVisitor接口,其构造刚发需要ClassVisitor对象,并保存字段为protected ClassVisitor cv。在它的实现中,每个方法都是原装不动的调用cv的对应方法,并传递同样的参数。可以通过继承ClassAdapter并修改其中的部分方法达到过滤的作用,它可以看成事件的过滤器

ClassVisitor

抽象类ClassVisitor成员函数

public abstract class ClassVisitor {public ClassVisitor(int api);public ClassVisitor(int api, ClassVisitor cv);//访问类头部信息public void visit(int version, int access, String name, String signature, String superName, String[] interfaces);public void visitSource(String source, String debug);public void visitOuterClass(String owner, String name, String desc); AnnotationVisitor visitAnnotation(String desc, boolean visible); public void visitAttribute(Attribute attr);public void visitInnerClass(String name, String outerName, String innerName, int access);//访问变量public FieldVisitor visitField(int access, String name, String desc,String signature, Object value);//访问方法public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions); //结束void visitEnd();
}

MethodVisitor

abstract class MethodVisitor { // public accessors ommited MethodVisitor(int api); MethodVisitor(int api, MethodVisitor mv);AnnotationVisitor visitAnnotationDefault();AnnotationVisitor visitAnnotation(String desc, boolean visible);AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible); void visitAttribute(Attribute attr); //Starts the visit of the method's code, if any (i.e. non abstract method).//访问函数开始时调用void visitCode(); void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack);// Visits a zero operand instruction.void visitInsn(int opcode);void visitIntInsn(int opcode, int operand); //Visits a local variable instruction. A local variable instruction is an// instruction that loads or stores the value of a local variable.void visitVarInsn(int opcode, int var);void visitTypeInsn(int opcode, String desc);void visitFieldInsn(int opc, String owner, String name, String desc);//Visits a method instruction. A method instruction is an instruction that// invokes a method.void visitMethodInsn(int opc, String owner, String name, String desc); void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs); void visitJumpInsn(int opcode, Label label);void visitLabel(Label label);void visitLdcInsn(Object cst); void visitIincInsn(int var, int increment); void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels);void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels); void visitMultiANewArrayInsn(String desc, int dims); void visitTryCatchBlock(Label start, Label end, Label handler, String type);void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index);void visitLineNumber(int line, Label start);//操作栈和本地变量的最大值void visitMaxs(int maxStack, int maxLocals); void visitEnd();
}

visitInsn()

* visitInsn(int opcode)*
参数可以是如下指令

java
* This opcode is
* either NOP, ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1,
* ICONST_2, ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1,
* FCONST_0, FCONST_1, FCONST_2, DCONST_0, DCONST_1, IALOAD,
* LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD,
* IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE,
* SASTORE, POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1,
* DUP2_X2, SWAP, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB,
* IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM,
* FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR, LSHR,
* IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, I2L, I2F, I2D,
* L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S,
* LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN, FRETURN,
* DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW, MONITORENTER,
* or MONITOREXIT.

visitVarInsn()

visitVarInsn(int opcode, int var);

第一个参数可以是如下指令:

java
This opcode is either ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RET.

第二个参数是局部变量表中的地址

visitMethodInsn()

visitMethodInsn(int opc, String owner, String name, String desc);

示例:mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");

参数:

  • opcode:INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC ,INVOKEINTERFACE.
  • owner:该类的internal name
  • name:方法名
  • desc:描述符

 Java与字节码类型转换

方法类型转换示例:

具体用例

生成自定义接口

package pkg;
public interface Comparable extends Mesurable {int LESS = -1;int EQUAL = 0;int GREATER = 1;int compareTo(Object o);

ASM代码:

ClassWriter cw = new ClassWriter(0);
//定义类的头部信息
cw.visit(V1_5, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, "pkg/Comparable", null, "java/lang/Object", new String[] { "pkg/Mesurable" });
//定义变量
cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "LESS", "I", null, new Integer(-1)).visitEnd();
cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "EQUAL", "I", null, new Integer(0)).visitEnd();
cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "GREATER", "I", null, new Integer(1)).visitEnd(); 
//添加函数,但是这样创建出来的函数没有具体的实现字节码,只是一个函数名
cw.visitMethod(ACC_PUBLIC + ACC_ABSTRACT, "compareTo", "(Ljava/lang/Object;)I", null, null).visitEnd(); 
cw.visitEnd();
byte[] b = cw.toByteArray();

Visit()示例

  • visit(int version, int access, String name, String signature, String superName, String[] interfaces);定义类的头部信息
param参数示例解释
int version版本号V1_51.5版本
int access访问标志ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE公有抽象接口
String name类的全限定名称“pkg/Comparable”Comparable类名
String signature泛型签名null
String superName父类“java/lang/Object”父类是Object
String[] interfaces接口new String[] { “pkg/Mesurable” }实现该接口

源码示例:

cw.visit(V1_5, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, "pkg/Comparable", null, "java/lang/Object", new String[] { "pkg/Mesurable" });

生成:
java
public interface Comparable extends Mesurable

  • visitField(int access, String name, String desc,String signature, Object value);

visitField()示例

源码示例:

cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "LESS", "I", null, new Integer(-1)).visitEnd();

生成:

int LESS = -1;

desc表示方法的描述符,这里使用”I“表示int类型

VisitMethod示例(构造函数)

Api:visitMethod(int access, String name, String desc, String signature, String[] exceptions);

  • 示例:
public class MyClass{public MyClass(){//do somethig}
}

其方法是:

classAdapter.visitMethod(Opcodes.ACC_PUBLIC,"<init>","()V", null,null).visitCode();
//定义构造方法 
  • 实现细节:

关于具体的字节码可以在Javap里查看

Code:  0: aload_0  1: invokespecial #10                 // Method java/lang/Object."<init>":()V  4: return 

因此我们在MethodVisitor里面定义该构造函数的实现字节码

mv.visitCode();  mv.visitVarInsn(ALOAD, 0);  mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");  mv.visitInsn(RETURN);  mv.visitMaxs(1, 1);  mv.visitEnd();  

构造方法的本地方法与操作数栈大小分别为1,是因为aload_0指令表示从局部变量表加载一个reference类型值到操作数栈,这里局部变量表只有this引用;

visitMethod示例(成员函数)

对于以下的函数

public int add(int a, int b);  

我们为其添加实现细节,使之如下:

public int add(int a, int b) {  return a + b;  } 

对于该函数,我们使用Javap查看其具体的字节码如下:

public int add(int, int);  Code:  0: iload_1  1: iload_2  2: iadd  3: ireturn  

那么我们可以在访问该函数时这样操作来满足要求

// 添加add方法  mv.visitCode();  mv.visitVarInsn(ILOAD, 1);  mv.visitVarInsn(ILOAD, 2);  mv.visitInsn(IADD);  mv.visitInsn(IRETURN);  mv.visitMaxs(2, 3);  mv.visitEnd();  

add方法的操作数栈大小为2,局部变量表大小为3,分别为this,a,b。

删除方法

在ClassVisitor的visitMethod方法中,它对于每一个方法,返回了一个MethodVisitor对象

public MethodVisitor visitMethod(int ac                              cess, String name, String desc,String signature, String[] exceptions) {if (cv != null) {return cv.visitMethod(access, name, desc, signature, exceptions);}return null;}

那么我们如果想要删除某个方法,需要重写该方法,直接返回null即可。

public class RemoveMethodAdapter extends ClassVisitor {private String mName;private String mDesc;public RemoveMethodAdapter(ClassVisitor cv, String mName, String mDesc) {super(ASM4, cv);this.mName = mName;this.mDesc = mDesc;}@Overridepublic MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {if (name.equals(mName) && desc.equals(mDesc)) {//满足条件,之间返回null,相当于删除// do not delegate to next visitor -> this removes the methodreturn null;}//其他函数正常返回return cv.visitMethod(access, name, desc, signature, exceptions);}
}

增加变量

以增加变量为例,在ClassVisitor的visitEnd函数中,增加相应的变量,增加变量使用的是visitField函数 。

public class AddFieldAdapter extends ClassVisitor {private int fAcc;private String fName;private String fDesc;private boolean isFieldPresent;public AddFieldAdapter(ClassVisitor cv, int fAcc, String fName, String fDesc) {super(ASM4, cv);this.fAcc = fAcc;this.fName = fName;this.fDesc = fDesc;}@Overridepublic FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {if (name.equals(fName)) {//判断是否存在该变量isFieldPresent = true;}return cv.visitField(access, name, desc, signature, value);}@Overridepublic void visitEnd() {if (!isFieldPresent) {//该变量不存在//直接传入需要增加的变量,使用visitField函数返回FieldVisitor对象进行增加FieldVisitor fv = cv.visitField(fAcc, fName, fDesc, null, null);if (fv != null) {fv.visitEnd();}}cv.visitEnd();}
}

NOTE

  • visitInsn、visitVarInsn、visitMethodInsn等以Insn结尾的方法可以添加方法实现的字节码
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. smarty半小时快速上手入门教程

    本文讲述了smarty快速上手入门的方法,可以让读者在半小时内快速掌握smarty的用法。分享给大家供大家参考。具体实现方法如下: 一、smarty的程序设计部分: 在smarty的模板设计部分我简单的把smarty在模板中的一些常用设置做了简单的介绍,这一节主要来介绍一下如何在smarty中…...

    2024/4/19 5:45:35
  2. GO语言入门教程(二)

    Hello,各位小伙伴,在接着之前发表的Go语言系列教程之投石问路之后,我们大致了解了一下Go语言的发展史和Go语言的优势,另外我也带着小伙伴进行了Go语言环境的安装和常用命令的介绍。接下来我们就正式的开启了我们的Go语言探索教程之路了,请各位小伙伴系好安全带,我们准备发…...

    2024/4/12 7:15:15
  3. Oracle函数中的return语句的作用

    今天在看一个用于ERP软件的Oracle函数时,被一个return给困扰了,也许之前有在什么地方看到过相关的说明,但是自己没有记住,就是函数中在return语句后面的语句还执行不执行的问题?函数的结构是这样的 function 函数名 (参数列表)is 变量A begin 执行语句段1 return 变量A …...

    2024/4/12 7:15:45
  4. Golang 微服务教程(一)

    原文链接:ewanvalentine.io,翻译已获作者 Ewan Valentine 授权。本节对 gRPC 的使用浅尝辄止,更多可参考:gRPC 中 Client 与 Server 数据交互的 4 种模式前言系列概览《Golang 微服务教程》分为 10 篇,总结微服务开发、测试到部署的完整过程。本节先介绍微服务的基础概念、…...

    2024/4/12 6:57:03
  5. ASM的一个例子(动态字节码生成) (Java高级编程(J2SE综合)) - [Matrix - 与 Java 共舞]

    导读: 用ASM写的Hello World。在网上搜索ASM有关的文章,最后居然又找回Matrix。。汗ASM2.0字节码框架介绍http://www.matrix.org.cn/resource/article/2006-02-20/ASM+Bytecode+Framework_44220.htmlpackage my; import java.lang.reflect.Method; import org.objectweb.asm.…...

    2024/5/4 8:59:31
  6. Python中for循环,与break,return和pass,continue用法区别

    判别条件后的执行。 def func():for i in range(1,11):if i % 2 == 0:continue#if判断后,跳过continue语句下的表达式。不输出print(i)print(i) func() # 输出结果:1 3 5 7 9总结:就是当 i % 2 == 0时,不执行print(i), 继续执行下一个循环def func1():for i in range(1,1…...

    2024/4/18 17:27:30
  7. 兄弟连Smarty3视频教程

    课程简介:Smarty是目前业界最著名的PHP模板引擎之一。本部分视频包括模板引擎原理到实际操作、Smarty安装、使用,由浅及深。视频详细讲解了Smarty3的使用。课程讲师:高洛峰讲师介绍: 高洛峰 LAMP兄弟连教学总监,国内最早的PHP技术讲师之一,具有五年软件开发工作经验、四年…...

    2024/5/4 13:08:08
  8. C语言(2):计算机二级程序填空十题解析1

    题库来源:未来教育二级C无纸化考试模拟软件。本人做了一些代码注释,便于记忆、理解。 一、代码: (前十套题里,就这道题比较另类,考察了文件函数的有关调用,具体原理比较复杂(不是难,是复杂),故注释并不多) /**********************函数功能***********************…...

    2024/5/4 7:04:06
  9. go 开发手册

    原文地址Go 教程Go 是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,…...

    2024/4/12 7:17:09
  10. oninput、onpropertychange和onchange

    oninput 事件在用户输入时触发。即只要元素值发生变化立即触发。只有IE9以上才支持 onchange 在元素失去焦点时触发。即元素值发生变化没有立即触发,需失去焦点才触发。另外一点不同是 onchange 事件也可以作用于 <keygen> 和 <select> 元素。 onpropertychange为…...

    2024/4/16 3:54:09
  11. Spring AOP(动态代理\动态字节码)精华一页纸

    1、AOPAOP作为一种设计理念, 拦截方法执行前后, 提供一些辅助功能。实际上, 在AOP火爆起来之前, 已经存在了很多AOP实现的理念比如一些设计模式就体现了AOP的思想 Decorator(装饰者) Observer(观察者) Chain of Responsibility(责任链) ...一些现有的使用场景, 比如 Serv…...

    2024/4/12 7:15:39
  12. Matlab编程与数据类型 -- continue、break和return语句

    本微信图文详细介绍了Matlab中的continue、break和return语句。...

    2024/4/25 13:07:49
  13. 射频下变频器在航空航天和国防领域的应用 ——扩展传统RF监控解决方案的实用方法

    介绍 射频频谱监控变得越来越具有挑战性和复杂性。 随着诸如毫米波5G,雷达等不断推向更高频段的应用以及正在传输的无线信号的分集和带宽不断增加,RF专业人员需要解决方案以跟上快速发展的无线格局。 过去的射频测试和测量解决方案无法适应这种新的射频信号环境。 随着新信号…...

    2024/4/12 18:31:29
  14. 简单smarty教程

    index.php <?phprequire("smarty/Smarty.class.php");$tpl = new Smarty();$tpl->template_dir = "./templates"; //模板目录$tpl->compile = "./templates_c"; //编译目录$tpl->left_delimiter = "<{"; /…...

    2024/4/12 7:16:03
  15. Smarty模板学习入门教程

    smarty模版是比较大众化的一个模版,在php开发过程当中被很多开发者视为最友好的模版之一,学习smarty课程对于很多培训机构来说也是列入了培训课程之一,那么很多方面就需要我们学习了 一. 安装 首先打开网页http://smarty.php.net/download.php,下载最新版本的Smarty。解压下…...

    2024/4/8 0:26:02
  16. 《Google资深工程师深度讲解Go语言》学习笔记

    第1章 Go语言简单介绍Go语言的设计初衷1.针对其他语言的痛点进行设计;2.并加入并发编程;3.为大数据、微服务、并发而生的通用编程语言。Go语言与转型项目转型首选语言;软件工程师转型、添加技术栈的首选语言;这是一门为转型量身定制的课程。Go语言很特别:1.没有“对象”,…...

    2024/4/12 7:16:09
  17. shell中的return

    1.return命令会使一个函数返回,会返回一个单一的数字参数,而这个数字参数在调用这个函数的脚本是可见的,如果没有指定返回参数,return在默认情况下会返回上一次命令的返回代码2. return value 我们在 shell 下跑的每一个 command 或 function ,在结束的时候都会传回父行程一…...

    2024/4/5 0:20:18
  18. 人工智能:智能优化算法

    ** 人工智能:智能优化算法优化问题是指在满足一定条件下,在众多方案或参数值中寻找最优方案或参数值,以使得某个或多个功能指标达到最优,或使系统的某些性能指标达到最大值或最小值。优化问题广泛地存在于信号处理、图像处理、生产调度、任务分配、模式识别、自动控制和机械…...

    2024/4/30 13:55:05
  19. Java编译(三) Java即时编译(JIT编译):运行时把Class文件字节码编译成本地机器码

    Java编译(三)Java即时编译(JIT编译): 运行时把Class文件字节码编译成本地机器码在《Java三种编译方式:前端编译 JIT编译 AOT编译》中了解到了它们各有什么优点和缺点,以及前端编译+JIT编译方式的运作过程;在《Java前端编译:Java源代码编译成Class文件的过程》了解到java…...

    2024/4/18 22:12:39
  20. 从字节码角度分析java中的i++与++i

    int j=0; for(int i=0;i<100;i++) j=j++; System.out.println(j); 如果你运行一下上面的程序,就会发现它打印的结果居然是0,但是如果把j=j++换成j++的话就会打印100.这是为什么呢? 如果你稍微有一点经验就会知道i++与++i的区别: i++是在所有其他操作完成之后,自身…...

    2024/4/19 11:28:45

最新文章

  1. 等保测评试题(一)

    模拟考试&#xff08;二&#xff09; 一、判断题 1、等级测评机构推荐管理工作遵循统筹规划、合理布局、安全规范的方针&#xff0c;按照“谁推荐、谁负责&#xff0c;谁审核、谁负责”的原则有序开展&#xff08; &#xff09; 2、等级保护2.0中&#xff0c;使用虹膜指纹的…...

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

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

    2024/3/20 10:50:27
  3. Python读取文件里内容

    如果要读取一个文件里的内容是 # 文件名&#xff1a;db.txt 1 2 3 4代码如下 import requests f open("db.txt", mode"rb") content f.read() f.close()data content.decode(utf-8)# 存到 list 里 data_list data.split(\r\n) print(data_list)# 结果…...

    2024/5/3 15:30:08
  4. OpenCV单通道图像按像素成倍比例放大(无高斯平滑处理)

    OpenCV中的resize函数可以对图像做任意比例的放大(/缩小)处理&#xff0c;该处理过程会对图像做高斯模糊化以保证图像在进行放大&#xff08;/缩小&#xff09;后尽可能保留源图像所展现的具体内容&#xff08;消除固定频率插值/采样带来的香农采样信息损失&#xff09;&#x…...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024/5/4 2:59:34
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

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

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

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

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

    2024/4/30 9:42:49
  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