2021SC@SDUSC

上篇,我们分析了NonSpillableDataBag,本篇,我们将分析三种"spillable"DataBag

Data目录下包含bag的文件列表如下:

 回忆一下bag的类图

上篇提到,创建bag的方法有两种,一种是调用BagFactory的方法,创建的是三种spillableDataBag,另一种是直接调用nonSpillableDataBag

先去看看三种DataBag,三者继承于DefaultAbstractBag,DefaultAbstractBag实现DataBag接口,上篇已经对接口类进行了分析,总结如下

下面分析DefaultAbstractBag源码

/**
 * DataBag
的默认实现。这是一个抽象类,用作所有这三种类型的数据包的父类。
 */

@SuppressWarnings("serial")
public abstract class DefaultAbstractBag implements DataBag {

   
private static final Log log = LogFactory.getLog(DataBag.class);

   
// If we grow past 100K, may be worthwhile to register.
   
private static final int SPILL_REGISTER_THRESHOLD = 100 * 1024;

   
private static PigLogger pigLogger;

   
private static InterSedes sedes = InterSedesFactory.getInterSedesInstance();
   
// 保存元组的容器。由子类实例化的实际对象。
   
protected Collection<Tuple> mContents;

   
// 我们已经创建了Spill文件。这些需要在最后定型时删除。
   
protected FileList mSpillFiles;

   
//总大小,包括磁盘上的元组。存储在这里,这样当人们询问时,我们就不用遍历磁盘了。
   
protected long mSize = 0;

   
// 每个包需要抽样的元组数目,以得到元组大小的估计
   
private static final int SPILL_SAMPLE_SIZE = 100;
   
private static final int SPILL_SAMPLE_FREQUENCY = 10;

   
long aggSampleTupleSize = 0;

   
int sampled = 0;

   
private boolean spillableRegistered = false;

   
/**
     *
获取包中元素的数量,包括内存和磁盘上的元素。
     */
   
@Override
   
public long size() {
       
return mSize;
    }


   
/**
     *
对每个SPILL_SAMPLE_FREQUENCYth元组进行采样,直到达到SPILL_SAMPLE_SIZE的最大值,以获得元组大小的估计
     */
   
protected void sampleContents() {
       
synchronized (mContents) {
            Iterator<Tuple> iter = mContents.iterator();
           
for (int i = 0; i < sampled * SPILL_SAMPLE_FREQUENCY && iter.hasNext(); i++) {
                iter.next();
            }
           
for (int i = sampled; iter.hasNext() && sampled < SPILL_SAMPLE_SIZE; i++) {
                Tuple t = iter.next();
               
if (t != null && i % SPILL_SAMPLE_FREQUENCY == 0) {
                    aggSampleTupleSize += t.getMemorySize();
                    sampled +=
1;
                }
            }
        }
    }

   
/**
     *
向包中添加一个元组。
     * @param t tuple to add.
     */
   
@Override
   
public void add(Tuple t) {
       
synchronized (mContents) {
            mSize++;
            mContents.add(t);
        }
        markSpillableIfNecessary();
    }

   
/**
     *
所有袋子实现都应该在每次添加元素后调用这个方法。
     */
   
protected void markSpillableIfNecessary() {
       
if (!spillableRegistered) {
           
long estimate = getMemorySize();
           
if ( estimate >= SPILL_REGISTER_THRESHOLD) {
                SpillableMemoryManager.getInstance().registerSpillable(
this);
                spillableRegistered =
true;
            }
        }
    }

    @Override
   
public void addAll(DataBag b) {
        addAll((Iterable<Tuple>) b);
        }

   
public void addAll(Collection<Tuple> c) {
        addAll((Iterable<Tuple>) c);
    }

   
/**
     *
添加可迭代对象的内容(集合或DataBag)
     *
     * @param iterable a Collection or DataBag to add contents of
     */
   
public void addAll(Iterable<Tuple> iterable) {
       
synchronized (mContents) {
           
for (Tuple t : iterable) {
                add(t);
            }
        }
    }

   
/**
     *
返回内存使用的大小
     */
   
@Override
   
public long getMemorySize() {
       
int numInMem = 0;

       
synchronized (mContents) {
            numInMem = mContents.size();

           
// 如果我们已经得到了估计,而元组的数量没有变化,或者大于样本容量并且仍然大于样本容量,我们可以生成一个新的估计而不需要对元组再次抽样。
           
if (sampled != 0 && (sampled == numInMem ||
                    sampled > SPILL_SAMPLE_SIZE && numInMem > SPILL_SAMPLE_SIZE)) {
               
return totalSizeFromAvgTupleSize(aggSampleTupleSize/sampled, numInMem);
            }
            sampleContents();
           
int avgTupleSize;
           
if (sampled != 0) {
                avgTupleSize = (
int) (aggSampleTupleSize / sampled);
            }
else {
                avgTupleSize =
0;
            }

          
return totalSizeFromAvgTupleSize(avgTupleSize, numInMem);
        }
    }

   
private long totalSizeFromAvgTupleSize(long avgTupleSize, int numInMem) {
       
long used = avgTupleSize * numInMem;

       
long mFields_size =   roundToEight(4 + numInMem*4); /* mContents fixed + per entry */
        //
Java热点32vm中,似乎有一个最小包大小为188字节
        // 一些额外的字节可能来自这个数组列表的最小大小
        
mFields_size = Math.max(40, mFields_size);

       
// 这个对象和其他对象变量的固定开销= 84字节
        // 8 - object header
        // 4 + 8 + 8 - sampled + aggSampleTupleSize + mSize
        // 8 + 8 - mContents ref  + mSpillFiles ref
        // 4 - spillableRegistered +4 instead of 1 to round it to eight
        // 36 - mContents fixed
       
used += 84 + mFields_size;

       
// mSpillFiles ArrayListArrayList中的Object[]ArrayList中的对象变量和spill文件的引用的开销相加
       
if (mSpillFiles != null) {
            used += roundToEight(
36 /* mSpillFiles fixed overhead*/ + mSpillFiles.size()*4);

           
if(mSpillFiles.size() > 0){
               
//粗略估计每个自动生成的文件条目所使用的内存可能具有相同的长度
               
long approx_per_entry_size =
                    roundToEight(mSpillFiles.get(
0).toString().length() * 2 + 38);

                used += mSpillFiles.size() * approx_per_entry_size;
            }
        }
       
return used;

    }

   
/**
     *
对象的内存大小四舍五入为8个字节的倍数
     * @param i
     * @return i rounded to a equal of higher multiple of 8
     */
   
private long roundToEight(long i) {
       
return 8 * ((i+7)/8); // integer division rounds the result down
   
}

   
/**
     *
清除包中的内容,包括磁盘和内存中的内容。
     * 调用此函数后,任何读取的尝试都会产生未定义的结果。
     */
   
@Override
   
public void clear() {
       
synchronized (mContents) {
            mContents.clear();
           
if (mSpillFiles != null) {
               
for (int i = 0; i < mSpillFiles.size(); i++) {
                   
boolean res = mSpillFiles.get(i).delete();
                   
if (!res)
                        warn (
"DefaultAbstractBag.clear: failed to delete " + mSpillFiles.get(i), PigWarning.DELETE_FAILED, null);
                }
                mSpillFiles.clear();
            }
            mSize =
0;
            aggSampleTupleSize =
0;
            sampled =
0;
           
// not changing spillableRegistered -- clear doesn't change that.
       
}
    }

   
/**
     *
这种方法可能非常昂贵,因为它可能需要一种包;除非迫不得已,否则别用。
     */
   
@Override
    @SuppressWarnings(
"unchecked")
   
public int compareTo(Object other) {
       
if (this == other)
           
return 0;
        
if (other instanceof DataBag) {
            DataBag bOther = (DataBag) other;
           
if (this.size() != bOther.size()) {
               
if (this.size() > bOther.size()) return 1;
               
else return -1;
            }

           
// 这是假的。但我必须知道两个包是否有相同的元组,不管顺序如何。希望在大多数情况下,上面的大小检查可以防止这种情况发生。如果任何一个包还没有分类,创建一个已分类的包,这样我可以保证秩序。
           
DataBag thisClone;
            DataBag otherClone;
            BagFactory factory = BagFactory.getInstance();

           
if (this.isSorted() || this.isDistinct()) {
                thisClone =
this;
            }
else {
                thisClone = factory.newSortedBag(
null);
                Iterator<Tuple> i = iterator();
               
while (i.hasNext()) thisClone.add(i.next());

            }
           
if (((DataBag) other).isSorted() || ((DataBag)other).isDistinct()) {
                otherClone = bOther;
            }
else {
                otherClone = factory.newSortedBag(
null);
                Iterator<Tuple> i = bOther.iterator();
               
while (i.hasNext()) otherClone.add(i.next());
            }
            Iterator<Tuple> thisIt = thisClone.iterator();
            Iterator<Tuple> otherIt = otherClone.iterator();
           
while (thisIt.hasNext() && otherIt.hasNext()) {
                Tuple thisT = thisIt.next();
                Tuple otherT = otherIt.next();

               
int c = thisT.compareTo(otherT);
               
if (c != 0) return c;
            }

           
return 0;   // 如果我们走了这么远,它们一定是相等的
       
} else {
           
return DataType.compare(this, other);
        }
    }

    @Override
   
public boolean equals(Object other) {
       
if( other == null ) {
           
return false;
        }
       
return compareTo(other) == 0;
    }

   
/**
     *
把包里的东西写到磁盘上
     * @param out DataOutput to write data to.
     * @throws IOException (passes it on from underlying calls).
     */
   
@Override
   
public void write(DataOutput out) throws IOException {
        sedes.writeDatum(out,
this);
    }

   
/**
     *
从磁盘读取一个包
     * @param in DataInput to read data from.
     * @throws IOException (passes it on from underlying calls).
     */
   
@Override
   
public void readFields(DataInput in) throws IOException {
       
long size = in.readLong();

        
for (long i = 0; i < size; i++) {
           
try {
                Object o = sedes.readDatum(in);
                add((Tuple)o);
            }
catch (ExecException ee) {
               
throw ee;
            }
        }
    }

   
/**
     * FuncEvalSpec.FakeDataBag
使用这个
     * @param stale Set stale state.
     */
   
@Override
   
public void markStale(boolean stale)
    {
    }

   
/**
     * Write the bag into a string. */
   
@Override
   
public String toString() {
       
return BagFormat.format(this);
    }

    @Override
   
public int hashCode() {
       
int hash = 0;
        Iterator<Tuple> i = iterator();
       
while (i.hasNext()) {
            hash += i.next().hashCode();
        }
       
return hash;
    }

   
/**
     *
获取要溢出内容的文件。该文件将在mSpillFiles数组中注册。
     * @return stream to write tuples to.
     */
   
protected DataOutputStream getSpillFile() throws IOException {
       
if (mSpillFiles == null) {
            
// We want to keep the list as small as possible.
           
mSpillFiles = new FileList(1);
        }

        String tmpDirName= System.getProperties().getProperty(
"java.io.tmpdir") ;
        File tmpDir =
new File(tmpDirName);

       
// 如果目录不存在,请创建该目录。
       
if (!tmpDir.exists()){
            log.info(
"Temporary directory doesn't exists. Trying to create: " + tmpDir.getAbsolutePath());
         
// 创建目录并查看是否成功
         
if (tmpDir.mkdir()){
            log.info(
"Successfully created temporary directory: " + tmpDir.getAbsolutePath());
          }
else {
             
// 如果执行到了这里,则意味着我们需要创建目录,但没有成功如果执行到了这里,则意味着我们需要创建目录,但没有成功如果执行到了这里,则意味着我们需要创建目录,但没有成功.
              //
              //
如果这个目录是最近创建的,那么我们可以简单地跳过创建。这是为了解决集群中出现的一个罕见问题,尽管事实上spill()在一个同步块中调用getSpillFile()
             
if (tmpDir.exists()) {
                log.info(
"Temporary directory already exists: " + tmpDir.getAbsolutePath());
              }
else {
               
int errCode = 2111;
                String msg =
"Unable to create temporary directory: " + tmpDir.getAbsolutePath();
               
throw new ExecException(msg, errCode, PigException.BUG);
              }
          }
        }

        File f = File.createTempFile(
"pigbag", null);
        f.deleteOnExit();
        mSpillFiles.add(f);
       
return new DataOutputStream(new BufferedOutputStream(
           
new FileOutputStream(f)));
    }

   
/**
     * Report progress to HDFS.
     */
   
protected void reportProgress() {
       
if (PhysicalOperator.getReporter() != null) {
            PhysicalOperator.getReporter().progress();
        }
    }

    @SuppressWarnings(
"rawtypes")
   
protected void warn(String msg, Enum warningEnum, Throwable e) {
        pigLogger = PhysicalOperator.getPigLogger();
       
if(pigLogger != null) {
            pigLogger.warn(
this, msg, warningEnum);
        }
else {
            log.warn(msg, e);
        }
    }

    @SuppressWarnings(
"rawtypes")
   
protected void incSpillCount(Enum counter) {
        incSpillCount(counter,
1);
    }

    @SuppressWarnings(
"rawtypes")
   
protected void incSpillCount(Enum counter, long numRecsSpilled) {
        PigStatusReporter reporter = PigStatusReporter.getInstance();
       
if (reporter != null && reporter.getCounter(counter)!=null) {
            reporter.getCounter(counter).increment(numRecsSpilled);
        }
else {
            PigHadoopLogger.getInstance().warn(mContents,
"Spill counter incremented", counter);
        }
    }

   
public static abstract class BagDelimiterTuple extends DefaultTuple{}
   
public static class StartBag extends BagDelimiterTuple{
       
private static final long serialVersionUID = 1L;}

   
public static class EndBag extends BagDelimiterTuple{
       
private static final long serialVersionUID = 1L;}

   
public static final Tuple startBag = new StartBag();
   
public static final Tuple endBag = new EndBag();

   
protected static final int MAX_SPILL_FILES = 100;

}

类图总览

 

总体而言,没有特别要注意的地方,但整理时发现以下三个接口是未实现的

+ isSorted(): boolean

+ isDistinct(): boolean

+ iterator: iterator<Tuple>

推测是在三个实例中实现

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

相关文章

  1. HTML5期末大作业:动慢网站设计——动慢初音动漫(6页) HTML+CSS+JavaScript web期末作业设计网页_清新淡雅动慢大学生网页设计作业成品

    HTML5期末大作业&#xff1a;动慢网站设计——动慢初音动漫(6页) HTMLCSSJavaScript web期末作业设计网页_清新淡雅动慢大学生网页设计作业成品 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服…...

    2024/4/19 8:24:59
  2. 在宏定义中使用可变参数实现任意函数计时打印

    想实现的效果 我想对任意一个函数可以实现计时打印&#xff0c;打印出&#xff1a;[函数名]&#xff1a;[耗时]。比如: void function(int a,int b,int c); void function2(float d); check_perf(function,a,b,c); check_perf(function2,d);有点像切片编程的意思&#xff0c;…...

    2024/4/19 14:34:45
  3. 一道京东的SQL面试题:学生成绩表:id,科目,成绩,求总和

    需求:有一张学生的成绩表,这张表有如下的字段:id,name,score,求查询结果是:id,name,score,以及该学生的所有科目的总和 数据准备如下: 首先创建表: create table stu_score( name varchar(20), subject varchar(20), score int(8) )engineinnodb default charsetutf8;创建好表…...

    2024/4/15 4:32:35
  4. 多输入币种的会计分录-输入币种平衡分录

    欢迎加入QQ群&#xff1a;776208156 业务情形&#xff1a; 结汇。 外贸收到客户的美元之后&#xff0c;需要在结汇转成人民币&#xff0c;分录为&#xff1a; 借&#xff1a; 银行存款-人民币 CNY 贷&#xff1a; 银行存款 -美元 USD 借/贷&#xff1a; 财务费用-汇…...

    2024/4/26 23:15:59
  5. UMEditor 图片粘贴上传,实现图文粘贴,图片自动上传

    ChromeIE默认支持粘贴剪切板中的图片&#xff0c;但是我要发布的文章存在word里面&#xff0c;图片多达数十张&#xff0c;我总不能一张一张复制吧&#xff1f; Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能。但是无法处理多张图片。而且转换成BASE64后是作为内容…...

    2024/4/22 3:47:59
  6. 疯狂Java讲义中的习题,设计一个控制台的梭哈游戏

    这是一个非常简单的梭哈游戏,连判断输赢的方法我也没有做,而且做了一个非常丑的控制台显示画面,好歹也是原创,还是发上来,等以后自己慢慢完善吧。这个游戏总共设计了五个类。 第一个类:循环显示主面板(我承认非常丑),并且要负责随机发牌和判断输赢package org.xn.chap…...

    2024/4/26 8:49:58
  7. 关于三方协议的说明

    关于三方协议的说明 原文链接 https://mp.weixin.qq.com/s/u8uXdd15YEg5IRJ0WPFF5w 秋招接近尾声&#xff0c;已经有许多同学陆续收到了offer。首先要恭喜这些同学&#xff0c;不管你是否喜欢这份工作&#xff0c;至少毕业之后的去向有了保障。 ​ 同时&#xff0c;学姐也提…...

    2024/4/7 0:55:58
  8. QLineEdit 常用属性

    QLineEdit 1.setText 设置文本 槽函数 不发信号 2.text()获取文本 3.setPlaceholderText 设置提示文字 QLineEdit常用属性 1.setClearButtonEnabled 2.setReadOnly 3.setMaxLength QLineEdit撤销和恢复 1.undo() 2.redo() #ifndef UI_WIDGET_H #define UI_WIDGET_H#include &…...

    2024/4/25 11:59:43
  9. useMemo 为什么,何时以及如何

    为什么、何时和如何是我们每次在技术旅程中遇到新事物时都应该尝试回答的问题。 在我们继续之前&#xff0c;让我们讨论一下 useMemo 是什么。 useMemo 用于从我们这边提供的函数中返回记忆值。 在计算&#xff0c;记忆化或memoisation是优化主要用于加速技术的计算机程序通过…...

    2024/4/21 0:23:58
  10. 新媒体创意设计必备网站,收藏起来

    新媒体运营是指使用现代化的媒体工具&#xff0c;如微信、微博、贴吧等工具&#xff0c;吸引用户&#xff0c;实现营销目的过程。对于新媒体运营者来说&#xff0c;想要打造具有吸引力的内容&#xff0c;以下几个网站是必备的。 亿图脑图&#xff08;MindMaster&#xff09;&am…...

    2024/4/27 5:43:26
  11. 索爱麦克风免驱动的语音录入测试

    树莓派上麦克风的使用方式 - 知乎 (zhihu.com) 1 有趋和免趋 无论是麦克风&#xff0c;还是摄像头&#xff0c;都有“有趋”和“免趋”类型&#xff0c;想在linux上能用&#xff0c;最好都是选择免驱的。因为&#xff0c;对于大多数小的设备是小公司生产&#xff0c;没有力量开…...

    2024/4/20 14:27:18
  12. 跟随B站视频学Python爬虫过程(3):字符串操作

    出于督促自己学习以及未来回顾和分享的目的&#xff0c;记录一下自己的学习过程。 B站视频号&#xff1a;BV12E411A7ZQ ep7. 字符串&#xff0c;无课后作业&#xff0c;仅记录学习内容。 # -*- coding utf-8 -*- # Time : 4/11/21 9:44 am # Author: YS # File : demo21.py…...

    2024/4/15 4:32:30
  13. PS实现模板下载

    开发思路&#xff1a; 1. 定义和生成一个临时文件。 2. 临时文件上传存储至数据库。 3. 通过文件名称进行下载。 具体代码&#xff1a; Local string &absTemplateName, &sPath, &dbFileName, &sDirSep; Local string &recordUrl; &recordUrl &q…...

    2024/4/24 22:59:55
  14. Vue3按需引入elementui遇到点小问题记录下

    ​​​​​​​https://element-plus.gitee.io/zh-CN/guide/design.html 适用vue3的elementui。 本次项目需要按需引入elementui&#xff0c;跳出来原文的步骤 1、安装element-plus依赖 npm install element-plus --save 2、因为需要按需引入&#xff0c;所以还要安装一些相…...

    2024/4/25 23:04:59
  15. springboot引入Mybatisplus+数据源配置

    1.引入相关jar包 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>8.0.27</version> </dependency> <dependency><groupId>com.…...

    2024/4/20 1:39:13
  16. java注解 @Resource的作用

    Resource 的作用相当于 Autowired&#xff0c;只不过 Autowired 按 byType 自动注入&#xff0c;面 Resource 默认按 byName 自动注入罢了。 Resource 有两个属性是比较重要的&#xff0c;分别是 name 和 type&#xff0c;Spring 将 Resource 注释的 name 属性解析为 Bean 的名…...

    2024/4/26 13:43:36
  17. C语言指针操作字符数组demo

    C语言指针操作字符数组demo&#xff0c;本意是使用指针操作source&#xff0c;函数调用一次取16个字节&#xff0c;调用两次获取到整个数据。 char source[32] {0}; int *header (int *)source; int *pos (int *)source;void print_value(int *arg0, int *arg1, int *arg2,…...

    2024/4/27 5:33:39
  18. 模型复现 | 目标检测经典模型SSD来啦

    一、模型介绍 SSD是一种新的跟踪框架&#xff0c;可将任何单次检测器&#xff08;SSD&#xff09;模型转换为在线多个对象跟踪器&#xff0c;这同时重视对象路径的检测和跟踪。与遭受物体检测器所产生的错误的检测方法相反&#xff0c;SMOT通过重新检测采用最近提出的跟踪方案…...

    2024/4/15 4:32:20
  19. 【c语言】实现学生成绩排名前十,并特别关注前10,某门分数低于80

    已知共有30名学生&#xff0c;每名学生有数学、语文、物理化学、英语5门功课&#xff0c;班主任需要统计总分在前10名的同学的姓名和学号&#xff0c;另外特别关注这10名同学中有某门功课低于80分的同学&#xff0c;请编写程序实现上述功能 &#xff08;1&#xff09;先定义结…...

    2024/4/27 0:52:46
  20. 测试: 网上常说性能测试是什么

    性能测试是一种特殊的软件测试&#xff0c;它的目的是确保软件在一定的负载流量下运行良好。性能测试是性能分析和性能优化的基础&#xff0c;它的目标是发现和性能相关的各种问题和性能瓶颈&#xff0c;从而进一步去消除错误和性能瓶颈 性能测试的分类方式 性能测试如何分类…...

    2024/4/19 23:30:23

最新文章

  1. 【经验分享】MySQL集群部署一:主从模式

    目录 前言一、基本介绍1.1、概念1.2、执行流程 二、部署2.1、通用配置2.2、主节点配置2.3、从节点配置2.4、主从测试2.5、谈一谈主节点历史数据同步问题 前言 MySQL的部署模式常见的包括以下几种&#xff1a; 独立服务器部署主从复制部署高可用性集群&#xff08;HA&#xff…...

    2024/4/27 6:04:09
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. JVM学习笔记

    文章目录 一、内存模型1. 程序计数器2. 栈3. 本地方法栈4. 堆5. 方法区方法区位置字符串常量池位置 6. 直接内存 二、虚拟机参数设置三、类的生命周期1. 加载2. 连接1&#xff09;验证2&#xff09;准备3&#xff09;解析 3. 初始化4. 卸载 四、类加载器1. 启动类加载器2. 扩展…...

    2024/4/23 14:15:51
  4. 文心一言 vs GPT-4 —— 全面横向比较

    对于文心一言和 GPT-4 这两者之间的全面横向比较&#xff0c;我们可以从多个方面来看待它们的区别和优劣势。 文心一言 文心一言是一款基于深度学习的中文文本生成模型&#xff0c;专注于生成优美的古风诗句和语录。以下是它的一些特点&#xff1a; 专注于古风诗句和语录: 文…...

    2024/4/24 17:52:27
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

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

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

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/4/25 18:39:22
  11. 【外汇早评】美欲与伊朗重谈协议

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

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

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

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

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

    2024/4/26 16:00:35
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

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

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

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

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

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

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

    2024/4/26 22:01:59
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

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

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

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/25 18:38:58
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/25 18:38:57
  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