C++Primer 动态内存管理StrVec类的实现
StrVec类的设计
vector类将其元素保存在连续的内存中。为了获得可接受的性能,vector预先分配足够的内存来保存可能需要的更多元素。vector的每个添加元素的成员函数会检查是否有空间容纳更多的元素。如果有,成员函数会在下一个可用位置构造一个对象。如果没有可用空间,vector就会重新分配空间:它获得新的空间,将已有元素移动到新空间中,释放旧空间,并添加元素。
在StrVec类中采用类似的策略,用allocator来获得原始内存。由于allocator分配的内存是未构造的,我们将需要添加新元素时用allocator的construct成员在原始内存中创建对象,当需要删除元素时,用destory成员来销毁。
每个StrVec有三个指针成员指向其元素所使用的内存:
1、elements,指向分配的内存中的首元素
2、first_free,指向最后一个实际元素之后的位置
3、cap,指向分配的内存末尾之后的位置
StrVrc还有一个名为alloc的静态成员,其类型为allocator<string>。alloc成员会分配StrVec使用的内存,我们的类还有4个工具函数:
1、alloc_n_copy会分配内存,并拷贝一个给定范围中的元素
2、free会销毁构造的元素并释放内存
3、chk_n_alloc保证StrVec至少有容纳一个新元素的空间。如果没有空间添加新元素,chk_n_alloc会调用reallocate来分配更多内存
4、reallocate在内存用完时为StrVec分配新内存
StrVec类定义
//类vector类内存分配策略的简化实现
class StrVec{
public:StrVec():elements(nullptr), first_free(nullptr), cap(nullptr){} //默认初始化StrVec(const StrVec&); //拷贝构造函数 StrVec &operator=(const StrVec&); //拷贝赋值运算符~StrVec(); void push_back(const std::string&); //拷贝元素size_t size() const {return first_free - elements;}size_t capacity() const {return cap - elements;}std::string *begin() const {return elements;} std::string *end() const {return first_free;}
private:static std::allocator<std::string> alloc; //分配元素//被添加元素的函数使用void chk_n_alloc(){if(size() == capacity()) reallocate();}//工具函数,被拷贝构造函数、赋值运算符和析构函数所使用std::pair<string*, string*> alloc_n_copy(const string*, const string*);void free(); //销毁元素并释放内训void reallocate(); //获得更多内存并拷贝已有元素string *elements;string *first_free;string *cap;
}
使用construct
函数push_back调用chk_n_alloc确保有空间容纳新元素。当改函数返回时,push_back知道必有空间容纳新元素。它要求allocator成员来construct新的尾元素:
void StrVec::push_back(const string &s){chk_n_alloc();alloc.construct(first_free++, s);
}
当我们用allocator分配内存时,必须记住内存是未构造的。为了使用改内存,必须使用construct,在该内存中构造一个对象。传递给construct的第一个参数必须是一个指针。指向allocate所分配的未构造的内存空间。剩余参数确定用哪个构造函数来构造对象。在本例中,只有一个额外参数,类型为string,因此会使用string的拷贝构造函数。
调用construct会在first_free当前指定的地址构造一个对象,并递增first_free指向下一个未构造的元素。
alloc_n_copy成员
alloc_n_copy成员会分配足够多的内存来保存给定范围的元素,并将这些元素拷贝到新分配的内存中。此函数返回一个指针的pair,两个指针分别指向新空间的开始位置和尾后位置:
std::pair<string*, string*> alloc_n_copy(const string *b, const string *e){//分配空间保存给定范围中的元素auto data = alloc.allocate(e - b);//初始化并返回一个pair, 该pair由data和uninitialized_copy的返回值构成return {data, uninitialized_copy(b, e, data)};
}
它是在返回语句中完成拷贝工作的,返回语句中对返回值进行了列表初始化。返回pair的first成员指向分配的内存的开始位置;second成员则是uninitialized_copy的返回值,此值是一个指针,指向最后一个构造元素之后的位置。
free()成员
free()成员有两个责任,首先destory元素,然后释放StrVec自己分配的内存空间。for循环调用allocator的destory成员,从构造的尾元素开始,到首元素为止,逆序销毁所有元素:
void StrVec::free(){if (elements){for (auto p = first_free; p != elements; p--)alloc.destroy(p);alloc.deallocate(elements, cap - elements); //释放分配的内存空间}
}
传递给deallocate的指针必须是之前某次allocate调用所返回的指针。因此,在调用deallocate之前我们首先检查elements是否为空。
拷贝控制成员
拷贝构造函数调用alloc_n_copy:
StrVec::StrVec(const StrVec &s){//调用alloc_n_copy分配空间以容纳与s中一样多的元素auto newdata = alloc_n_copy(s.begin(), s.end());elements = newdata.first;first_free = cap = newdata.second;
}
alloc_n_copy的返回值是一个指针的pair。其first成员指向第一个构造的元素,second成员指向最后一个构造的元素之后的位置。由于alloc_n_copy分配的空间恰好容纳给定的元素,cap也指向最后一个构造元素之后的位置。
析构函数调用free:
StrVec::~StrVec(){free();}
拷贝赋值运算符在释放之前调用alloc_n_copy,这样就可以正确处理自赋值了:
StrVec& StrVec::operator=(const StrVec &rhs){auto data = alloc_n_copy(s.begin(), s.end());free(); //free掉自身elements = data.first;first_free = cap = data.second;return *this;
}
类似拷贝构造函数,拷贝赋值运算符使用alloc_n_copy的返回值来初始化它的指针
在重新分配内存的过程中移动而不是拷贝元素
reallocate成员函数应该实现的功能:
1、为一个新的更大的string数组分配内存
2、在内存空间的前一部分构造对象,保存现有元素
3、销毁原内存空间中的元素,并释放这块内存
string具有类值行为,当拷贝一个string时,必须为这些字符分配内存空间,而销毁一个string必须释放所占有的内存。
reallocate成员函数拷贝StrVec中的string,则拷贝之后,每个string只有唯一的用户。一旦将旧元素拷贝到新空间,我们就会立即销毁原string。
因此,拷贝这些string中的数据是多余的。在重新分配内存空间时,如果我们能避免分配和释放string的额外开销,StrVec的性能会好很多。
移动构造函数和std::move
移动构造函数通常将资源“移动”而不是拷贝到正在创建的对象。而且标准库保证移后原string仍然保持一个有效的、可析构的状态。对于string,我们可以想象每个string都有一个指向char数组的指针。可以假定string的移动构造函数进行了指针拷贝,而不是为字符分配内存然后拷贝字符。
move的标准库函数定义在utility头文件中。
1、当reallocate在新内存中构造string时,它必须调用move来表示希望使用string的移动构造函数。如果漏掉了move调用,将会使用string的拷贝构造函数
2、当使用move时,直接调用std::move而不是move
reallocate成员
首先调用allocate分配新内存空间。我们每次重新分配内存时都会将StrVec的容量加倍。如果StrVec为空,我们将分配容纳一个元素的空间:
void StrVec::reallocate() {//我们将分配当前大小两倍的内存空间auto newcapacity = size() ? 2 * size() : 1;//分配新内存auto newdata = alloc.allocate(newcapacity);//将数据从旧内存移动到新的内存auto dest = newdata; //指向新数组中下一个空闲位置auto elem = elements; //指向旧数组中下一个元素for (size_t i = 0; i != size(); ++i) {alloc.construct(dest++, std::move(*elem++));}free(); //完成移动后就释放旧的内存空间//更新数据结构,执行新元素elements = newdata;first_free = dest;cap = elements + newcapacity;
}
a.construct(p, args): p必须是类型T*的指针,指向一块原始内存,arg被传递给类型为T的构造函数,用来在p指向的内存中构造一个对象。
练习13.39:编写自己版本的StrVec,包括自己版本的reserve、capacity、和resize
//capacity
size_t capacity() const { return cap - elements; }
//reserve预留一部分空间,需要reallocate()成员函数
void reserve(size_t n) { if (n > capacity()) reallocate(n); }
//resize有两个版本,区别是不带/带初值
void StrVec::resize(size_t n) {if (n > size()) {while (size() < n)push_back("");}else if (n < size()) {while (size() > n)alloc.destroy(--first_free);}
}
//添加对象
inline void StrVec::resize(size_t n, const std::string& s) {if (n > size()) {while (size() < n)push_back(s);}
}
练习13.40:为StrVec类添加一个构造函数,它接受一个initializer_list<string>参数
StrVec::StrVec(initializer_list<string> il) {//调用alloc_n_copy分配与列表il中元素数组一样多的空间auto newdata = alloc_n_copy(il.begin(), il.end());elements = newdata.first;first_free = cap = newdata.second;
}
完整的StrVec类的代码如下:
#include <iostream>
#include <utility>
#include <string>
#include <memory>
using namespace std;
//类vector类内存分配策略的简化实现
class StrVec {
public:StrVec() :elements(nullptr), first_free(nullptr), cap(nullptr) {} //默认初始化StrVec(const StrVec&); //拷贝构造函数 StrVec(initializer_list<string> il);StrVec& operator=(const StrVec&); //拷贝赋值运算符~StrVec();void push_back(const std::string&); //拷贝元素size_t size() const { return first_free - elements; }size_t capacity() const { return cap - elements; }// reserve预留一部分空间,需要reallocate()成员函数void reserve(size_t n) { if (n > capacity()) reallocate(n); } // reserve预留一部分空间,需要reallocate()成员函数std::string* begin() const { return elements; }std::string* end() const { return first_free; }
private:static allocator<string> alloc; //分配元素//被添加元素的函数使用void chk_n_alloc() {if (size() == capacity()) reallocate();}//工具函数,被拷贝构造函数、赋值运算符和析构函数所使用pair<string*, string*> alloc_n_copy(const string*, const string*);void free(); //销毁元素并释放内训void reallocate(); //获得更多内存并拷贝已有元素void reallocate(size_t n);void resize(size_t n);void resize(size_t n, const std::string& s);string* elements;string* first_free;string* cap;
};inline void StrVec::push_back(const string& s) {chk_n_alloc();alloc.construct(first_free++, s);
}inline pair<string*, string*> StrVec::alloc_n_copy(const string* b, const string* e) {//分配空间保存给定范围中的元素auto data = alloc.allocate(e - b);//初始化并返回一个pair, 该pair由data和uninitialized_copy的返回值构成return { data, uninitialized_copy(b, e, data) };
}
inline void StrVec::free() {if (elements) {for (auto p = first_free; p != elements; p--)alloc.destroy(p);alloc.deallocate(elements, cap - elements); //释放分配的内存空间}
}
inline StrVec::StrVec(const StrVec& s) {//调用alloc_n_copy分配空间以容纳与s中一样多的元素auto newdata = alloc_n_copy(s.begin(), s.end());elements = newdata.first;first_free = cap = newdata.second;
}
inline StrVec::StrVec(initializer_list<string> il) {//调用alloc_n_copy分配与列表il中元素数组一样多的空间auto newdata = alloc_n_copy(il.begin(), il.end());elements = newdata.first;first_free = cap = newdata.second;
}
inline StrVec::~StrVec() { free(); }
inline StrVec& StrVec::operator=(const StrVec& rhs) {auto data = alloc_n_copy(rhs.begin(), rhs.end());free(); //free掉自身elements = data.first;first_free = cap = data.second;return *this;
}
inline void StrVec::reallocate() {//我们将分配当前大小两倍的内存空间auto newcapacity = size() ? 2 * size() : 1;//分配新内存auto newdata = alloc.allocate(newcapacity);//将数据从旧内存移动到新的内存auto dest = newdata; //指向新数组中下一个空闲位置auto elem = elements; //指向旧数组中下一个元素for (size_t i = 0; i != size(); ++i) {alloc.construct(dest++, std::move(*elem++));}free(); //完成移动后就释放旧的内存空间//更新数据结构,执行新元素elements = newdata;first_free = dest;cap = elements + newcapacity;
}
inline void StrVec::reallocate(size_t newcapacity) {//分配新内存auto newdata = alloc.allocate(newcapacity);//将数据从旧内存移动到新的内存auto dest = newdata; //指向新数组中下一个空闲位置auto elem = elements; //指向旧数组中下一个元素for (size_t i = 0; i != size(); ++i) {alloc.construct(dest++, std::move(*elem++));}free(); //完成移动后就释放旧的内存空间//更新数据结构,执行新元素elements = newdata;first_free = dest;cap = elements + newcapacity;
}
//reserve预留一部分空间,需要reallocate()成员函数
//void reserve(size_t n) { if (n > capacity()) reallocate(n); }
//resize有两个版本,区别是不带/带初值
inline void StrVec::resize(size_t n) {if (n > size()) {while (size() < n)push_back("");}else if (n < size()) {while (size() > n)alloc.destroy(--first_free);}
}
//添加对象
inline void StrVec::resize(size_t n, const std::string& s) {if (n > size()) {while (size() < n)push_back(s);}
}
练习13.41:在push_back中,我们为什么在construct调用中后置递增运算,如果前置递增运算会发生什么?
因为first_free指向第一个空闲的位置,也就是最后一个string的尾后元素,所以应使用后置递增运算符
若使用前置递增运算,first_free就指向了最后一个string,和first_free的设定不符合
练习13.43:重写free成员,用for_each()和lambda来代替for循环destroy元素,你更倾向于哪种实现?
for_each(elements, first_free, [](std::string &s){alloc.destroy(&s);});
//在lambda中应该取s的地址,用来调用destory
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- git各阶段代码撤销简介
git各阶段代码修改回退撤销操作 工作区的代码撤销 【step 1】 使用git status 查看当前状态,会提示出修改了文件,如下图中我修改了工作区的main.cpp文件,可以看到git给出的提示由两个,一个是使用git add将工作区的代码提交到暂存区,还有一个是git checkout就是回退到修改之…...
2024/5/8 13:38:05 - 每天学点英语语法-重头开始
0.0英语语法框架 十种词性:名词(n)、代词(pro)、数词(num)、冠词(art)、动词(verb)、副词(adv)、形容词(adj)、介词(prep)、连词(con)、感叹词(int)九种句子成分:主语( subject )、谓语 (predicate) 、宾语(object)、定语 (attribute) 、状语(attributive)、宾补(object comple…...
2024/4/22 15:29:50 - SSHD 服务防止暴力破解总结
OpenSSH配置文件OpenSSH常用配置文件有两个/etc/ssh/ssh_config和/etc/sshd_configssh_config 为客户端配置文件sshd_config 为服务器端配置文件服务启动和关闭脚本[root@xuegodssh]# service sshd restart/stop/start/status如何使用ssh来远程连接主机:方法一1. ssh [远程主机…...
2024/4/1 7:54:38 - CSS 浮动(float)
浮动(float)1、普通流(normal flow)这个单词很多人翻译为 文档流 , 字面翻译 普通流 或者标准流都可以。前面我们说过,网页布局的核心,就是用CSS来摆放盒子位置。如何把盒子摆放到合适的位置?CSS的定位机制有3种:普通流(标准流)、浮动和定位。html语言当中另外一个相当重…...
2024/3/29 13:47:15 - idea2019创建包没有目录结构
idea之前的版本这样设置 取消这个勾选idea2019这样设置 取消这个勾选...
2024/5/8 12:48:04 - PHP请求微信域名检测接口官方API的详解与示例
微信域名检测接口API是腾讯官方对外公布的域名查询接口,请求接口可实时查询域名在微信种的状态信息。如果状态异常则返回结果提示“域名被封”,如果未有异常则返回结果提示“域名正常”。微信域名检测接口格式一:http://www.60ht.cn/wxcheck/api.php?url=http://www.baid…...
2024/3/29 13:47:13 - 算法 困难 | 20. 骰子求和
算法 困难 | 20. 骰子求和题目描述样例1样例2java题解C++题解python题解 题目描述 扔 n 个骰子,向上面的数字之和为 S。 给定 n,请列出所有可能的 S 值及其相应的概率。 样例1 输入:n = 1 输出:[[1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]] 解释:…...
2024/5/8 12:47:59 - 我的Java学习之路(第十三天)------字符串是否可修改(字符串修改问题)
这个问题毫无疑问,答案是否定的!!!我们知道字符串提供了toUpperCase和tolowerCase来转换大小写的方法,但并不意味着字符串可以修改;但是一个很有用的方法就是使用replace,它可以在字符串中查找并替换指定的字串。例如下面的代码讲把“aaa”替换为“bbb”; package demo…...
2024/3/29 13:47:11 - 【自主学习】centos7 + maven + jenkins + springboot 多模块module项目部署
先得有一个git仓库,里面是一个基于maven的spring boot项目,用IDE打开能直接运行成功的那种,不必多说。 centos7 64 bit,自带java1.8环境。(我的是deepin系统) 查看开发机器中安装maven环境(为了尽力在服务器中安装同样版本的maven)。 查看IDEA 的maven版本。安装jenkins并启…...
2024/3/31 9:46:59 - 华为数据分析师技术面试
华为数据分析师技术面试感受 前言 年末华为的各个部门好像都在招人。笔者收到了个面试邀请,是数据分析师的。好像只有三个步骤,投递简历,技术面试,业务面试。就其中可能是大家最想知道的技术面试和大家分享一下。 正文 首先面试的形式是电话面试,时间大概是35分钟(鬼知道…...
2024/3/29 13:47:10 - 服务器,工作站和终端机
一、服务器服务器在硬件上包括处理器、硬盘、内存、系统总线等,但它们是针对具体的网络应用特别制定的,因而服务器与一般的计算机在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在差异很大。服务器主要用于网络和企业服务的,我们可能会听说过刀片式机箱、…...
2024/5/2 2:52:51 - 深入理解Python中的yield和send
send方法和next方法唯一的区别是在执行send方法会首先把上一次挂起的yield语句的返回值通过参数设定,从而实现与生成器方法的交互。但是需要注意,在一个生成器对象没有执行next方法之前,由于没有yield语句被挂起,所以执行send方法会报错。因为当send方法的参数为None时,它…...
2024/5/6 4:48:00 - 安防RTSP_Onvif网络摄像头互联网直播视频流媒体服务器EasyNVR如何解决视频流Ajax跨域访问的问题
背景分析从视频智能化相关技术研发开始计算,智能化在视频行业内已经发展了十余年,但是视频行业的智能化应用一直没有达到预期。目前视频智能化主要的表现还是集中在前端设备摄像机产品的某些智能功能,以及一些配备智能分析的NVR/DVR和后端的智能分析平台系统。智能化水平还处…...
2024/3/29 13:47:06 - 我用过的前端跨域问题解决过程记录
先对自己说两句闲话,变懒了,很久没有记录自己的工作了,希望不忘初衷。最近我有这样一个需求,我们是设备软件公司,因此有一个功能就是修改自己的管理口IP和端口,要求修改完成后跳转到新的页面,这里会出现一个问题,就是原有的页面上要通信新的IP和端口,这就涉及到跨域问…...
2024/3/29 13:47:06 - 剑指offer-树的子结构
问题描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)源码:递归的比非递归简单,小编很少的一次性通过的题目。/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL)…...
2024/3/29 7:02:03 - 某些质数==相差为一的正整数的立方差(不能滥用map)
文章目录怎么判断一个素数能否分解成两个正整数的立方差?例题教训错误原因:运行超时 ** 怎么判断一个素数能否分解成两个正整数的立方差? **也可以是p=3x^2+3x+1但是要求有没有大于0的正整数解 例题 链接:https://ac.nowcoder.com/acm/contest/3036/K 来源:牛客网 输入描述…...
2024/3/28 21:09:14 - 小记--bug解决:Idea本地运行Spark作业,缺失winutils.exe hadoop.dll文件
1. 问题发生场景:window 环境,使用idea 开发Spark作业,并 运行job作业,报错{"time":"2020-01-19 11:24:41","logtype":"WARN","loginfo":"Unable to load native-hadoop library for your platform... using builtin-j…...
2024/5/6 15:02:50 - swoole 建立httpserver 服务
1.上代码:http_server.php文件<?php /***User: lxw*Date: 2020-01-16*//*$http = new Swoole\Http\Server("127.0.0.1", 9501);$http->on(request, function ($request, $response) {var_dump($request->get, $request->post);$response->header(&qu…...
2024/3/29 7:02:00 - proguard-rules.pro 模板
#下面代码中的路径配置,你要修改成与你相对应的路径 #引入依赖包rt.jar(jdk路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉) #-libraryjars ‘C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar’ #引入依赖包android.jar(android SDK路径)(注意:如在makeJ…...
2024/5/6 9:20:13 - datax 无法链接mysql:MySQLNonTransientConnectionException
问题:链接mysql的url, userName, password明明都正确,却一直报错:ERROR RetryUtil - Exception when calling callable, 异常Msg:Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).…...
2024/4/26 17:19:43
最新文章
- 【SpringBoot】使用MockMvc+Mockito进行单元测试像德芙一样纵享丝滑!
文章目录 前言:Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入(AutoWired、 Resource)2.Mock注入2.1.前言2.2…...
2024/5/8 15:32:26 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - CSS3 高级- 复杂选择器、内容生成、变形(transform)、过渡(transition)、动画(animation)
文章目录 一、复杂选择器兄弟选择器:选择平级元素的唯一办法属性选择器:1、通用:基本用不着,太泛了2、自定义:4种伪类选择器:1、目标伪类:2、结构伪类:3、元素状态伪类:4、伪元素选择器:应用于文字,使网页看起来想杂志5、否定伪类:选择器:not([本选择器的条件]) /*…...
2024/5/7 6:09:12 - vue想要突破全局样式限制又不影响别的页面样式怎么办
<!-- 用scope盖不住全局,随意来个class匹配私定,搜索关键词:不要随便改,乱打class名 --> <style> .lkajsdfjkalsfhkljashkflhaskl .el-input.el-input--default.el-input--suffix { width: 160px !important; } …...
2024/5/7 12:29:49 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到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/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
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/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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