五一在家没有出门,研究了一下 TLSF 动态内存分配算法。

缘起

要说清楚TLSF,得从动态内存分配开始说起。动态内存分配是所有系统中都要考虑的问题,我们从学C语言开始就知道用的malloc函数就是用来申请动态内存的。其基本原理就是malloc时系统从堆中拿出一块内存分配给你用,用完之后通过free再还回去。

这个过程有点像借钱,比如最近疫情手头紧,没钱吃饭了,于是找朋友malloc点钱去吃饭,比如说10块吧,等我打工挣了钱再free给朋友,这就是动态分配,而朋友就是那个拥有很多钱(内存)的壕。

那么问题就来了,既然朋友是个壕,必然有很多钱,我去malloc 10块钱的时候,他可能没有零钱,都是100的,于是他直接扔给了我100,我拿着这100也不敢都花了,毕竟现在疫情紧张能有饭吃就不错了,标准都是10块,所以其实还有90块给我是浪费掉了,明明这90块还可以再去帮助9个像我这样的,于是资源利用效率就降低了。朋友虽然壕,但架不住我这样的人多啊,资源慢慢就被耗尽,还利用率低,系统就开始卡了。

这就是现在嵌入式系统经常遇到的问题:资源有限。物联网的发展带火了嵌入式系统,因为价格便宜,但同时也导致资源有限,不好好用有可能就跑不动了,换高端的又要多花钱,所以需要研究如何更有效的利用资源。动态内存分配就是用来管理分配内存资源的。

如何来管理分配内存呢?其实这就是我的朋友壕怎么管钱的问题。壕的钱太多,所以借钱的人也多,为了记住谁借了多少,壕就要记账,于是他就会有一个账本。比如我之前找他借10块,他给了我100,于是他就会在账本上记上这100已经借出了。借钱的人一多,可能每个人要借的钱有多有少,有的借10000,有的借200,有的借42,各种各样的需求都有。朋友开始一笔一笔按顺序记,后来慢慢发现有不少人每次都借10000,这个人借了10000还回来,那个人正好来借10000,于是不用把这10000放回去了,直接借给那个人更方便,方便了自己管理。于是朋友壕想到了一个办法,规定了借钱的规格,比如借钱只能借10、100、1000、10000,其他的数量都不借,他自己只需要把钱按这个规格提前分好,然后用几个链表来管理就可以了。这就是一种动态分配内存的方法。

碎片

前面说的朋友的这个方法好不好呢?比一笔一笔的顺序记肯定要好多了。但是会有个问题:比如我要借20,按朋友的规格,没有20的,我只能借100,其实浪费了80,这80我也不用,朋友想用却用不上,这就是内部碎片。可以想象,随着长时间的使用,因为每个人的需求各种各样,内部碎片可能会越来越多,造成了整体利用率下降。

前面说了那80是内部碎片,既然有内部碎片,就肯定有外部碎片。外部碎片不太好用钱来举例,因为它涉及到了内存连续的问题。我们知道系统中没有碎片的时候内存都是连续的,假设有三个进程分别申请了相连的1,2,3三块内存,而进程2因为执行完毕,把内存2释放了,此时1和3之间就空出了一块内存,如果这块空出的区域无法满足其他进程申请的需要,那它就只能一直在这空着,造成了浪费,这就是外部碎片

长时间的使用会导致越来越碎片化,那这些碎片怎么解决呢?

对于内部碎片,一个很容易想到的办法就是把借钱的规格分得更细,比如规格可以有1,2,3,4,…,10000,这样借钱的数量只要在这个范围内(我们只考虑借整数元的情况),就不会有内部碎片产生。但是这个代价就是原本只要几个链表就可以管理的,现在需要10000个链表,朋友壕觉得太累了。于是考虑折中的方法,不要分那么多规格,就分一些常用的规格,比如总有人借42块,就定一个42的规格,于是链表数量也不会那么多。但是总有不符合规格的,所以也还是会有碎片,只是碎片不会那么多。这就是Linux内核中slab机制所采取的办法。

对于外部碎片,可以用著名的伙伴算法。其思想是把分配的规格定为2的幂次,即1,2,4,8,16,32,64,128,256,512,1024,2048,…,这样链表的数量不多。用的时候,若要分配内存,就给能满足要求的最小的,比如申请42,就给64,若没有64的,就找128的,拆成2个64的,给一个,留一个;若128的也没有,就继续往上找,以此类推。若找到头若还找不到,则分配失败。释放内存的时候,则看紧邻的内存块是否空闲,若为空闲,则进行合并。因为小块都是大块2分出来的,所以紧邻的一定有一块跟它一样大,就等着合并那一块,合并成一块大的之后还可以再看紧邻的是否空闲,若是可以再合并,以此类推。这就是为什么规格要为2的幂次。这样就不会产生外部碎片了。Linux内核中就采取了这个办法。很明显,这种方式虽然能够完全避免外部碎片的产生,但却产生了内部碎片。所以Linux内核才用了slab机制来优化。

实时

动态内存分配的另一个问题是实时性。比如前面讲的伙伴算法,若是最坏的情况,申请1可能要一直找到2048去,然后要不断拆出来。当然这种情况很少见,所以平均来说效率还不错。对于Linux这种实时性要求不高的系统来说,也就一直用着了。

但对于一起实时嵌入式系统来说,实时性的要求就高得多,举个没那么恰当的例子,比如刹车系统平均响应时间是0.1s,但最坏情况下可能要2s,这种刹车你敢用吗?实时系统需要有可预期的时间保证,必须要保证在最坏的情况下多少时间内操作要完成。我们要说的TLSF就可以保证其最坏执行(分配、释放)时间是 O(1)O(1) 的。

TLSF (Two-Level Segregate Fit)

终于说到TLSF了。TLSF号称实现了三大目标:实时性(可预期的时间保证)、执行速度快、利用率高(碎片少)。怎么实现的呢?结合下图来说。

tlsf

在划分的规格上,TLSF改进了伙伴算法,它分了两层,第一层(图中First Level)跟伙伴算法一样,也是采用2的幂次,但这样很容易产生很多内部碎片,所以TLSF进行了第二层(图中Second Level)划分,比如64这一级规格,再细分为8个区间,64-71,72-79,80-87,88-95,96-103,104-111,112-119,120-127,这样虽然不能完全没有碎片,但碎片可以尽量小,同时也尽量不会浪费内存,保证了内存的利用率。

为了方便管理,对每一层都用位图来表示相应的规格是否有空闲块,每种规格的空闲块都用一个链表来管理。相关结构体代码如下,其中fl_bitmap和sl_bitmap分别是第一层和第二层位图,matrix是所有规格的链表。

typedef struct TLSF_struct {/* the TLSF's structure signature */u32_t tlsf_signature;#if TLSF_USE_LOCKSTLSF_MLOCK_T lock;
#endif#if TLSF_STATISTIC/* These can not be calculated outside tlsf because we* do not know the sizes when freeing/reallocing memory. */size_t used_size;size_t max_size;
#endif/* A linked list holding all the existing areas */area_info_t *area_head;/* the first-level bitmap *//* This array should have a size of REAL_FLI bits */u32_t fl_bitmap;/* the second-level bitmap */u32_t sl_bitmap[REAL_FLI];bhdr_t *matrix[REAL_FLI][MAX_SLI];
} tlsf_t;

申请内存

申请内存的时候用如下malloc_ex函数。先调整要申请的内存大小size,然后通过MAPPING_SEARCH找到对应这个size的位图的位置索引,再调用FIND_SUITABLE_BLOCK去找到可用的合适的内存块。这里FIND_SUITABLE_BLOCK中会先在size对应的那个链表去找看是否有空闲的,若找不到就到比size大的那些链表中去找,一般都会找到有空的,找不到则返回空指针。malloc_ex中找到空闲块之后就获取它的信息,看它是否太大以至于需要分割,若需要分割就分割一下,把多的做成一个空闲块放到该放的链表中;若不需分割就标记一下并返回。

void *malloc_ex(size_t size, void *mem_pool)
{tlsf_t *tlsf = (tlsf_t *) mem_pool;bhdr_t *b, *b2, *next_b;int fl, sl;size_t tmp_size;size = (size < MIN_BLOCK_SIZE) ? MIN_BLOCK_SIZE : ROUNDUP_SIZE(size);/* Rounding up the requested size and calculating fl and sl */MAPPING_SEARCH(&size, &fl, &sl);/* Searching a free block, recall that this function changes the values of fl and sl,so they are not longer valid when the function fails */b = FIND_SUITABLE_BLOCK(tlsf, &fl, &sl);if (!b)return NULL;            /* Not found */EXTRACT_BLOCK_HDR(b, tlsf, fl, sl);/*-- found: */next_b = GET_NEXT_BLOCK(b->ptr.buffer, b->size & BLOCK_SIZE);/* Should the block be split? */tmp_size = (b->size & BLOCK_SIZE) - size;if (tmp_size >= sizeof(bhdr_t)) {tmp_size -= BHDR_OVERHEAD;b2 = GET_NEXT_BLOCK(b->ptr.buffer, size);b2->size = tmp_size | FREE_BLOCK | PREV_USED;next_b->prev_hdr = b2;MAPPING_INSERT(tmp_size, &fl, &sl);INSERT_BLOCK(b2, tlsf, fl, sl);b->size = size | (b->size & PREV_STATE);} else {next_b->size &= (~PREV_FREE);b->size &= (~FREE_BLOCK);       /* Now it's used */}TLSF_ADD_SIZE(tlsf, b);return (void *) b->ptr.buffer;
}
static __inline__ bhdr_t *FIND_SUITABLE_BLOCK(tlsf_t * _tlsf, int *_fl, int *_sl)
{u32_t _tmp = _tlsf->sl_bitmap[*_fl] & (~0 << *_sl);bhdr_t *_b = NULL;if (_tmp) { //找到空闲的了*_sl = ls_bit(_tmp);_b = _tlsf->matrix[*_fl][*_sl];} else {  //没找到空闲的*_fl = ls_bit(_tlsf->fl_bitmap & (~0 << (*_fl + 1))); //找比其大的有空闲的最小的if (*_fl > 0) {         /* likely 一般都能找到*/*_sl = ls_bit(_tlsf->sl_bitmap[*_fl]);_b = _tlsf->matrix[*_fl][*_sl];}}return _b;
}

释放内存

释放内存的时候用如下free_ex函数。首先更新待释放的内存块的状态,然后查找其下一个块是否也是空闲,若是则将两块合并成一个大块;再查找其前一块是否是空闲的,若是则与前一块也合并;根据情况合并前后内存块之后,将自身插入到对应的空闲链表中,并更新下一块的相应标志。

void free_ex(void *ptr, void *mem_pool)
{tlsf_t *tlsf = (tlsf_t *) mem_pool;bhdr_t *b, *tmp_b;int fl = 0, sl = 0;if (!ptr) {return;}b = (bhdr_t *) ((char *) ptr - BHDR_OVERHEAD);b->size |= FREE_BLOCK;TLSF_REMOVE_SIZE(tlsf, b);b->ptr.free_ptr.prev = NULL;b->ptr.free_ptr.next = NULL;/* 查找其下一个块是否是空闲,若是则合并 */tmp_b = GET_NEXT_BLOCK(b->ptr.buffer, b->size & BLOCK_SIZE);if (tmp_b->size & FREE_BLOCK) {MAPPING_INSERT(tmp_b->size & BLOCK_SIZE, &fl, &sl);EXTRACT_BLOCK(tmp_b, tlsf, fl, sl);b->size += (tmp_b->size & BLOCK_SIZE) + BHDR_OVERHEAD;}/* 查找其前一个块是否是空闲,若是则合并 */if (b->size & PREV_FREE) {tmp_b = b->prev_hdr;MAPPING_INSERT(tmp_b->size & BLOCK_SIZE, &fl, &sl);EXTRACT_BLOCK(tmp_b, tlsf, fl, sl);tmp_b->size += (b->size & BLOCK_SIZE) + BHDR_OVERHEAD;b = tmp_b;}MAPPING_INSERT(b->size & BLOCK_SIZE, &fl, &sl);INSERT_BLOCK(b, tlsf, fl, sl);/* 更新下一块的相应标志 */tmp_b = GET_NEXT_BLOCK(b->ptr.buffer, b->size & BLOCK_SIZE);tmp_b->size |= PREV_FREE;tmp_b->prev_hdr = b;
}

分析

从代码可以看出,申请和释放内存的过程中没有任何循环,所以其时间复杂度为 O(1)O(1),有实时性的保证。而执行过程,因为没有循环,正常都挺快的。至于内存利用率,主要取决于第二层又细分了多少级,比如若分了8级,最坏情况下利用率也高于7/8。

需要源码的同学可以去 http://www.gii.upv.es/tlsf/ 自行下载。

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

相关文章

  1. 网络中常见的Ping命令用什么协议完成

    Ping命令用ICMP实现的,ICMP是Internet控制消息协议,用于IP主机,路由器之间传递消息。控制消息是指网络通不通,主机是否可达,路由器是否可用等网络本身的消息,这些控制消息并不传输用户数据。Ping的原理是:向指定IP发送一定长度的数据包,按照约定,若指定IP存在的话,会…...

    2024/4/16 2:53:25
  2. Android ListView多布局讲解

    Listview优化是一个老生常谈的事情了,其优化的方面也有很多种,例如,布局重用、在getView()中减少逻辑计算、减少在页面滑动的时候加在图片,而是在页面停止滚动的时候再加在图片。而今天要介绍的是另一种方式,那就是多布局。一般使用的场景有一下两种情况:① 当一个item有…...

    2024/4/12 22:47:40
  3. CI中如何去掉index.php

    CI中去掉index.phpapache中伪静态的配置 RewriteEngine on RewriteBase /test RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] ap…...

    2024/4/27 1:20:18
  4. TLSF: Memory allocator real time embedded systems

    http://www.gii.upv.es/tlsf/ http://tlsf.baisoku.org...

    2024/4/12 3:36:36
  5. 网络DOS命令实例

    DOS在现今已成为古董级的东西,已被WINDOWS操作系统彻底抛弃,最新的WIN2000/XP中已经找不到实模式DOS的存在了,取而代之的是命令行模式。那么DOS真的一点用都没有了吗?DOS命令也不用了解了吗?其实不然,在98/2000/XP系统中提供了很多命令行指令,这些指令与DOS下的指令非常…...

    2024/4/9 7:28:08
  6. C语言笔记(数组冒泡排序法从小到大排序数字)

    此代码用数组实现数字存储,冒泡排序法排序数字。/*初学C语言,有不足还请指正*/ #include<stdio.h> #include"math.h" #include"conio.h"int main() // 用冒泡排序法判断输入数据并由小到大输出。 {while (1){int i = 0;int j = 0;int temp = 0;i…...

    2024/4/20 15:41:59
  7. 如何修改系统UISearchBar的样式

    自从接触iOS快一年多的时间了,感觉自己还是菜鸟一枚,最近在整理自己的开发过程中得点点滴滴,想通过博客的形式记录下来。本博客会陆续添加内容,鉴于本人水平有限,如有错误,请给与指正,感激不尽。 修改UISearchBar的样式,网上也有很多种,也都大同小异,本篇也不…...

    2024/4/21 11:38:02
  8. uc/os-II的内存改进与实现TLSF算法的详解,移植实现(二)

    上一节讲到了TLSF的数据结构,下面继续哈。 TLSF用两个层次的分类对不同尺寸的内存块进行分类。第一层次的类别目录为2n,n为4,5,……,31的整数,称为FLI(First-level Segregated Fit)。每一个FLI类别又根据第二层的SLI细分为2SLI个子类别。第二层的每个类别,都对应一条属…...

    2024/4/12 22:49:01
  9. Android Studio - 第四十二期 几个经常用到的字符串的截取

    string str="123abc456";int i=3;1 取字符串的前i个字符 str=str.Substring(0,i); // or str=str.Remove(i,str.Length-i); 2 去掉字符串的前i个字符: str=str.Remove(0,i); // or str=str.Substring(i); 3 从右边开始取i个字符: str=str.Substring(str.Len…...

    2024/4/21 22:12:12
  10. 微信命令代码

    有兴趣的福娃可以自己尝试 编号 代码 命令 1 //switchtabpos 更改底部功能按钮位置的命令 2 //multiwebview 微信多窗口显示命令 3 //opentrace 打开跟踪(到底是跟踪什么呢?) 4 //getfpkey 得到手机基本信息 5 //pickpoi 定位当前位置 6 //fullexit 完全退出微信…...

    2024/4/17 22:08:42
  11. 7-30 字符串的冒泡排序 (C语言)

    7-30 字符串的冒泡排序 (20 分)我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。 输入格式: 输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过…...

    2024/4/23 3:03:03
  12. 智能指针的探索

    !!!对于基本类型来说,new和malloc(delete和free)一样,没区别不是自定义就有问题,(除非自己定义析构,#pragma once //#include<iostream> //#include<string> //using namespace std; ////永远只有一个autoPtr指向它(管理内存),只有一个所有者 ////库中i…...

    2024/4/24 4:23:22
  13. uc/os-II的内存改进与实现TLSF算法的详解,移植实现(四)

    这一节主要讲讲运行结果。 先来图哈。1.先看下print_all_blocks()函数 它是在debug函数里面的,想要用这个函数的话,在定义里将_TLSF_DEBUG置为1; void print_all_blocks(tlsf_t * tlsf) {area_info_t *ai;bhdr_t *next;PRINT_MSG("\nTLSF at %p\nALL BLOCKS\n\n",…...

    2024/4/16 15:24:47
  14. uc/os-II的内存改进与实现TLSF算法的详解,移植实现(一)

    经过了一周的时间,终于成功将TLSF算法移植到uc/os-II上,并移植成功。这一周,茶不思饭不想,女朋友都要分手了。这一周对uc/os系统有了深刻的了解,同时也对经典的TLSF算法的结构有个更加清晰的认识吧。好,正题来了。看我娓娓道来哈! 1.配置环境及软件要求(下载地址在文章…...

    2024/4/18 13:02:46
  15. 常用网络相关命令(ping,nbtstat,netstat等)

    一,ping它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,…...

    2024/4/19 0:10:49
  16. Mac OSX –重定向.htaccess不起作用?

    这是.htaccess文件。 /Library/WebServer/Documents/.htaccess # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /mkyong/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Rewrit…...

    2024/4/28 3:27:28
  17. Android Studio - 第四十三期 RecyclerView存在大量Item时,当滚到底部时快速滑到顶部

    在使用RecyclerView展示图片或者其他信息时,往往需要展示很多的Item,当滚到底部时又想回到顶部,如果一点一点的向上划去比较麻烦,而且用户体验不好。因此添加一个快速回到顶部的按钮是很有必要的,并且刚开始的时候这个按钮是隐藏的,当滑动超过超过一屏的时候才会出现,在滑…...

    2024/4/12 22:48:56
  18. iOS开发之KVO机制的妙用

    压抑不住激动得心情,趁着今天时间多,我就全部拿来写博客好了,当然,不吹牛逼了。吹多了,写不出来代码怎么办呢。前言:还记得当我接到自己第一个项目的时候,首页的collectionview的frame一直定不好,总会出现collectionview太大了,或者底层的scrollview的contentsize太小…...

    2024/4/20 17:03:24
  19. 3个检测网络连通性的命令

    检查网络连通性ping: 可以测试到目标机器的连通性或者网络连接速度,Ping域名还可以得出解析IP; telnet: 用于远程管理连接主机。同时也是测试目标机器的TCP端口是否开放; curl: 可以测试连接主机和访问URL。注:windows 的 telnet大多关闭的。 可在控制面板——>程序——&g…...

    2024/4/25 23:09:15
  20. TLSF算法1:二级索引的计算

    TLSF算法1:二级索引的计算一、什么是TLSF算法二,f的确定三、s的确定四、实验结果 一、什么是TLSF算法 在嵌入式系统中,内存需要在分配和释放时有一个确定的相应时间,才能进一步分析其实时任务的可调度性。因此TLSF算法是一个十分适用嵌入式领域的动态内存分配算法。在关于TL…...

    2024/4/16 15:12:53

最新文章

  1. 新手Pytorch入门笔记-概念入门

    文章目录 1.主干权重和模型权重2.超参数2.1 ReLU(inplaceTrue)2.2 交叉熵损失CrossEntropyLoss 3.反向传播4.优化器4.1 optimizer.zero_grad()5.卷积6.Batch Normalization7.U-Net结构 这章节比较枯燥&#xff0c;都是大段文字 1.主干权重和模型权重 主干权重&#xff08;Back…...

    2024/4/28 3:30:55
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 理解 Golang 变量在内存分配中的规则

    为什么有些变量在堆中分配、有些却在栈中分配&#xff1f; 我们先看来栈和堆的特点&#xff1a; 简单总结就是&#xff1a; 栈&#xff1a;函数局部变量&#xff0c;小数据 堆&#xff1a;大的局部变量&#xff0c;函数内部产生逃逸的变量&#xff0c;动态分配的数据&#x…...

    2024/4/26 20:04:06
  4. PHP获取亚马逊商品详情api接口

    亚马逊提供了一个名为Product Advertising API&#xff08;PA API&#xff09;的接口&#xff0c;可以用来获取亚马逊商品的详细信息。 要使用PA API&#xff0c;您需要进行以下几个步骤&#xff1a; 注册为亚马逊合作伙伴&#xff0c;并创建一个亚马逊开发人员账户。创建一个…...

    2024/4/26 23:25:20
  5. 【外汇早评】美通胀数据走低,美元调整

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

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

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

    2024/4/28 3:28:32
  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/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/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024/4/27 23:24:42
  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/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/27 8:32:30
  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