redis5.0源码浅析5-跳跃表skiplist
1.skiplist介绍
- 定义:跳跃表是一个有序链表,其中每个节点包含不定数量的链接,节点中的第i个链接构成的单向链表跳过含有少于i个链接的节点。
- 跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,大部分情况下,跳跃表的效率可以和平衡树相媲美。
- 跳跃表在redis中当数据较多时作为有序集合键的实现方式之一。
接下来,还是举个有序集合键的例子:有序集合键详解
127.0.0.1:6379> ZADD score 95.5 Mike 98 Li 96 Wang //socre是一个有序集合键
(integer) 3
127.0.0.1:6379> ZRANGE score 0 -1 WITHSCORES//所有分数按从小到大排列,每一个成员都保存了一个分数
1) "Mike"
2) "94.5"
3) "Wang"
4) "96"
5) "Li"
6) "98"
127.0.0.1:6379> ZSCORE score Mike //查询Mike的分值
"94.5"
2.结构体分析
跳表节点
typedef struct zskiplistNode {
sds ele; //保存成员数据的字符串
double score; //分值
struct zskiplistNode *backward;//后退指针
struct zskiplistLevel {//索引层结构
struct zskiplistNode *forward;//前进指针
unsigned long span;//跨度
} level[];
} zskiplistNode;
一个zskiplistNode 包含多个zskiplistLevel 组成 level[],每一个zskiplistLevel 都是其对应层的一个索引节点
typedef struct zskiplist {
struct zskiplistNode *header, *tail;//头节点 尾部节点
unsigned long length;//节点数
int level;//最大层级
} zskiplist;
3.主要函数分析
3.1 创建跳跃表
zskiplist *zslCreate(void) {
int j;
zskiplist *zsl;
zsl = zmalloc(sizeof(*zsl));
zsl->level = 1;
zsl->length = 0;
zsl->header = zslCreateNode(ZSKIPLIST_MAXLEVEL,0,NULL);//创建一个层级是32,分数是0,成员数据是NULL的头节点
for (j = 0; j < ZSKIPLIST_MAXLEVEL; j++) {// 初始化 头节点的层级数组的元素,前进元素指向NULL,跨度为0
zsl->header->level[j].forward = NULL;
zsl->header->level[j].span = 0;
}
zsl->header->backward = NULL;//头节点的后退指针指向NULL
zsl->tail = NULL;//尾节点指向 NULL
return zsl;
}
创建一个层级是32,分数是0,成员数据是NULL的头节点 是要注意的地方
3.2 插入节点
跳跃表的中每一个层级 相当于一层索引,称为索引层,插入新节点时 要同时插入 相关的索引层,将插入索引层的节点叫做索引节点。
一个跳表节点包含一个level[],即多个索引节点
在 zsl 跳跃表中插入 分数为score,成员数据为ele的节点
zskiplistNode *zslInsert(zskiplist *zsl, double score, sds ele) {
zskiplistNode *update[ZSKIPLIST_MAXLEVEL], *x;
unsigned int rank[ZSKIPLIST_MAXLEVEL];
int i, level;
serverAssert(!isnan(score));
x = zsl->header;
for (i = zsl->level-1; i >= 0; i--) {//遍历所有层级 收集 update[] 和rank[]数据 步骤1
/* store rank that is crossed to reach the insert position */
//rank[i] 代表序号i的i+1层的跨越节点总数,下面的逻辑是因为 每次 循环 都是从 i+1层的x节点开始, 相当于rank[i]的初始值是rank[i+1]
//zsl->level-1==0 说明 是从 头节点开始计算,于rank[i]的初始值是0
rank[i] = i == (zsl->level-1) ? 0 : rank[i+1];
while (x->level[i].forward &&
(x->level[i].forward->score < score |||//只要分数小于 参数score 向后遍历
(x->level[i].forward->score == score &&//分数相等 且参数key字符串值相大于等于下个节点
sdscmp(x->level[i].forward->ele,ele) < 0)))
{//重点:这里说明分数相同时,按照key的字符串值 从小到大排列
rank[i] += x->level[i].span;
x = x->level[i].forward;
}
update[i] = x;//保存了 每一个层分值小于等新节点score的最后一个节点,相当于保存了 每个索引层中 新节点的前置节点
//update[0] 就是要插入跳表节点 的前置跳表节点
}
//update[0] 代表 level1 层级中的跳表节点,目前的这个跳跃表结构 level1是最小的索引层,一定包含了所有数据节点的索引节点,
//所以update[0] 就是要插入节点 的前置节点。
// 执行步骤1 是因为 插入新的节点 可能需要在多个层插入,收集 update[]方便插入,收集rank[]数据 ,方便计算 索引节点的跨度
/* we assume the element is not already inside, since we allow duplicated
* scores, reinserting the same element should never happen since the
* caller of zslInsert() should test in the hash table if the element is
* already inside or not. */
//注释:允许相同的分数,不允许有相同的成员数据, 调用者在执行前应该检查 利用hash table结构
//实际上 调用 zslInsert()前已经做了这样的检查,可以放心执行。
level = zslRandomLevel();//获取 level 返回1的概率50%,2:25% 3:12.5% 以此类推 数越大概率越小,最大返回32
if (level > zsl->level) {// 如果 获取的索引级别当前的值大
for (i = zsl->level; i < level; i++) {//初始化新增的索引级别
rank[i] = 0;//跨度都是0
update[i] = zsl->header;//这个层级相对于 新增节点的前置节点都是header,因为这个层级还没加入其它索引节点
update[i]->level[i].span = zsl->length;//索引节点的跨度是总节点个数
}
zsl->level = level;
}
x = zslCreateNode(level,score,ele);
for (i = 0; i < level; i++) {//遍历update[]插入新节点
//插入索引节点
x->level[i].forward = update[i]->level[i].forward;
update[i]->level[i].forward = x;
/* update span covered by update[i] as x is inserted here */
//计算并更新前置节点和索引节点跨度,因为 插入一个索引节点这个节点的跨度肯定需要计算 然后导致 前置节点跨度发生变化
x->level[i].span = update[i]->level[i].span - (rank[0] - rank[i]);//(rank[0] - rank[i]) 计算的是 x->level[i]与前置节点跨度差,
//update[i]->level[i].span 是 x->level[i] 到x->level[i]->forward 节点的跨度,就像 我剪短一根绳子 后一段长度= 总长度 -前1一段长度
update[i]->level[i].span = (rank[0] - rank[i]) + 1;//增加一个节点 自然要加1
}
/* increment span for untouched levels */
for (i = level; i < zsl->level; i++) {//比较高的层级没有插入新的索引节点,但实际上总体增加了一个节点,对应层级的前置节点跨度需要加1
update[i]->level[i].span++;
}
//前面分析过 update[0]是前置跳表节点
x->backward = (update[0] == zsl->header) ? NULL : update[0];
if (x->level[0].forward)//设置x的下个节点的后退节点是x
x->level[0].forward->backward = x;
else//x没有下个节点 设置 zsl的尾部节点是x
zsl->tail = x;
zsl->length++;
return x;
}
3.2 删除节点
/* Internal function used by zslDelete, zslDeleteByScore and zslDeleteByRank */
void zslDeleteNode(zskiplist *zsl, zskiplistNode *x, zskiplistNode **update) {
int i; //在执行删除之前 获取 update,这里的update代表的是指向zskiplistNode 数组的指针,与插入中update[]相同
//都保存了 x 在每个索引层级的前置跳表节点
for (i = 0; i < zsl->level; i++) {
if (update[i]->level[i].forward == x) {//再次确认一下是前置节点 删除关联
update[i]->level[i].span += x->level[i].span - 1;
update[i]->level[i].forward = x->level[i].forward;// 把前置节点的前进指针指向要删除节点的下个节点 是比较常用的链表删除节点方法
} else {
update[i]->level[i].span -= 1;//节点已经被删除
}
}
if (x->level[0].forward) {//删除forward关联
x->level[0].forward->backward = x->backward;
} else {
zsl->tail = x->backward;
}
while(zsl->level > 1 && zsl->header->level[zsl->level-1].forward == NULL)
zsl->level--;//删除一个节点 导致 减少一个层级 ,记录一下
zsl->length--;
//删除节点后没有 回收内存,推断在一个完整的删除中,有回收的处理。
}
3.3 获取节点排名
根据 节点key和分数获取节点排名, 要求key对应的节点必须存在,这个节点的分数 必须大于等于传入的分数
unsigned long zslGetRank(zskiplist *zsl, double score, sds ele) {
zskiplistNode *x;
unsigned long rank = 0;
int i;
x = zsl->header;
for (i = zsl->level-1; i >= 0; i--) {
while (x->level[i].forward && //遍历的方法与插入大体相同
(x->level[i].forward->score < score |
(x->level[i].forward->score == score &&
sdscmp(x->level[i].forward->ele,ele) <= 0))) {//注意这里 多个了 ‘=’ 也就是说遇到 key相等的情况还向后遍历。
//与插入不同 插入 是为了找前置节点 查找是 是为了获取key对应的节点,所以这里要多向后遍历一步
rank += x->level[i].span;
x = x->level[i].forward;
}
/* x might be equal to zsl->header, so test if obj is non-NULL */
if (x->ele && sdscmp(x->ele,ele) == 0) {//key必须相等,就是说key对应的节点必须存在。
return rank;
}
}
return 0;
}
逻辑比较简单 每个节点都记录了跨度,累加遍历节点跨度就是排名,执行 遍历跳表 找到key值相等 分数大于等于传入分数的节点,累加排名,返回排名。
3.4范围查找
查找指定范围内的第一个节点
zskiplistNode *zslFirstInRange(zskiplist *zsl, zrangespec *range) {//range 表示一个返回 包含 一个最小值 和一个最大值
zskiplistNode *x;
int i;
/* If everything is out of range, return early. */
if (!zslIsInRange(zsl,range)) return NULL;//检查 zsl中的节点是否在 range表示的范围内
x = zsl->header;
for (i = zsl->level-1; i >= 0; i--) {
/* Go forward while *OUT* of range. */
while (x->level[i].forward &&//下个节点有效
!zslValueGteMin(x->level[i].forward->score,range))// 下个节点 小于 range中的最小值
x = x->level[i].forward;
}
// x的下个节点刚好大于range中的最小值,前进一个节点
/* This is an inner range, so the next node cannot be NULL. */
x = x->level[0].forward;
serverAssert(x != NULL);/
/* Check if score <= max. */
if (!zslValueLteMax(x->score,range)) return NULL; //检查是否 大于 range中的最大值
return x;
}
zslLastInRange :查找指定范围内的最后一个节点, 某些判断与zslFirstInRange相反 , 处理逻辑相同。就不详细分析了
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- lvs结合ssh免密做监控,移除故障节点脚本
elk系统logstash日志处理使用lvs做的负载均衡,发现logstash节点因为最大文件数到达限制直接停了,lvs这边又不知道后端的logstash挂了。看告警虚拟IP恢复是因为转发到正常的节点了,端口监控后续就一直波动恢复告警- -!,因为lvs没有移除故障节点,处理不及时,丢的东西就多了…...
2024/4/15 3:05:23 - C# Expression 树转化为SQL与语句(二)--解决参数问题
C# Expression 树转化为SQL与语句(二)--解决参数问题在用Expression解析的的时候碰到一些参数(不是具体的值),会出现这种情况。在这里我们希望得到的是id=10,而不是id=m_id;那如何来解析这些参数?====================================================================…...
2024/5/7 13:27:01 - Centos7 设置定时任务
Centos7 设置定时任务在centos上最常用的定时任务应该就是crontab了,在经过各种度娘之后有三种方式实现定时任务的方法,但是所用到的场景有所不同at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。 crontab 需要启动一个服务crond才行,crond服务通过c…...
2024/5/7 13:33:32 - java中String、StringBuffer、StringBuilder
java中String、StringBuffer、StringBuilder 问题:String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的? 简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以String 对象是不可变的。 在java8中…...
2024/5/7 21:53:14 - HTTP协议的响应头、请求头、返回码全解
一、HTTP请求 HTTP请求由三部分组成,请求行,消息报头,请求正文 http请求行以一个方法开头,以空格开头,后面跟着URI以及http协议版本,每行结尾使用回车和换行,CRLF标识回车换行 1、请求方法:GET:请求获取URI所标识的资源POST:在URI所标识的资源后附加新的数据HEAD:请求…...
2024/4/24 9:11:37 - Spring task:annotation-driven配置之 @Scheduled定时任务的fixedRate,fixedDelay,cron执行差异
从实现技术上来看,定时器分为三种:1.Timer比较单一,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行,一般用的较少。 2.Quartz是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按…...
2024/4/25 5:02:23 - 删除链表的倒数第N个节点(双指针实现)
题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。//Definition for singly-linked list.public class ListNode {int val;ListNode next;ListNode(int x) { val = x; }}示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节…...
2024/5/6 7:36:22 - Python 实现快排
@Python 实现快排 快速排序简介 快速排序,又称划分交换排序,从无序队列中挑取一个元素,把无序队列分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变…...
2024/4/24 14:46:07 - 谷歌插件推荐(亲测超级超级好用)
懒的再往CSDN上搬了🤣 直接看我的原文吧:点击我...
2024/4/24 14:46:06 - android启动记录
以下内容全为网络收集。Android系统启动过程uBootKernelAndroiduboot的内容uboot相关的config默认是在tools/pack/chips/sun50iw3p1/configs/t1下env.cfg ---env分区内容,保存uboot命令的一些环境变量sys_partition.fex ----用pack脚本打包时的分区布局s…...
2024/5/6 9:38:06 - ctf集成工具包-linux版
文件大致目录如图:资源已上传至☞:https://download.csdn.net/download/weixin_43510203/12543369...
2024/4/24 14:46:04 - 零碎的知识点
RAM ROM的理解 RAM : Random access memory ROM : Read only memory 通俗来说RAM可以视为内存、ROM可以视为硬盘。ROM掉电保存 RAM掉电不保存 此外还有 SRAM DRAM SRAM 是静态内存 上电就能工作,速度快造价贵,一般用在缓存中。 DRAM是动态内存 需要配合动态处理器才能工作。…...
2024/5/6 9:54:14 - leetcode 面试题 16.18. 模式匹配
leetcode 面试题 16.18. 模式匹配 题目详情题目链接 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a&qu…...
2024/4/24 14:46:02 - php获取当天的开始时间和结束时间
//当天开始时间$start_time=strtotime(date("Y-m-d",time())); //当天结束之间$end_time=$start_time+60*60*24;然后在数组中就可以这样写了 gt>$start_time and lt< $end_time...
2024/4/24 14:46:04 - Ubuntu java同命令不同优先级设置
Ubuntu java同命令不同优先级设置首先安装jdk安装openjdk安装oraclejdk设置优先级 首先安装jdk 安装openjdk sudo apt install open-jdk-*这样会列出你想要安装大部份内容,跟据自己的需要选择安装。 安装oraclejdk 到官网下载页面tar zxvf jdk-8u251-linux-x64.tar.gzcp -r …...
2024/4/24 14:46:00 - Hadoop和Spark的区别
hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System ,HDFS)。HDFS 有高容错性的特点,并且…...
2024/4/24 14:45:59 - EFK-一款轻量的日志分析系统
文章目录EFK(Elasticsearch+Filebeat+Kibana)安装Elasticsearch:安装kibana(一台)安装filebeat(需要收集日志的机器都装): EFK(Elasticsearch+Filebeat+Kibana) 架构图:EFK分别代表Elasticsearch、Filebeat、Kibana,其中Elasticsearch负责日志保存和搜索,Filebeat负责…...
2024/4/24 14:46:01 - 数据分析相关岗位目前的就业形势好吗
数据分析是时代发展的必然产物,在将来的大数据时代中,数据分析可以帮助企业清晰的了解到目前所处的的行业状态和竞争环境,辅助进行风险评判与决策。如果企业能够充分利用数据分析带来的价值,呈现给企业管理者的将是一份清晰、准确且有数据支撑的“有价值”报告,所以企业对…...
2024/4/24 14:45:57 - P3385 【模板】判负环
spfa 维护起点到每个点的最短路经过了几个边。如果大于等于n肯定存在负环(否则最多n-1)#include <bits/stdc++.h> using namespace std; typedef long long ll; #define ls (o<<1) #define rs (o<<1|1) #define pb push_back const double PI= acos(-1.0); …...
2024/4/25 16:08:55 - html根据需要动态加载服务器数据
我们现在测试环境与生产环境内容越来越多,导致研发环境发布测试环境,测试环境发布生成环境时每次更改访问域名或者固定数据文件时每次都需要大范围更改,所以使用脚本动态判断动态引入js文件,通过配置js文件来达到研发环境、测试环境、生产环境的切换。<script type=&quo…...
2024/4/26 20:30:21
最新文章
- Study--Oracle-02-单实例部署Oracle19C
一、CentOS 7 环境准备 1、软件准备 操作系统:CentOS 7 数据库版本: Oracle19C 2、操作系统环境配置 关闭selinux ,编辑 /etc/selinux/config文件,设置SELINUX enforcing 为SELINUXdisabled [rootoracle ~]# grep SELINUX /etc/seli…...
2024/5/8 6:41:55 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 手机无线投屏到windows11电脑
1 安装无线投影组件 2 电脑端打开允许其他设备投影的开关 3 手机找到投屏选项 4 手机搜索可用设备连接即可 这里的官方文档给的不太好,给了一些让人眼花撩乱的信息,以下是经过整合的有效信息...
2024/5/7 17:09:12 - 动态规划刷题(算法竞赛、蓝桥杯)--饥饿的奶牛(线性DP)
1、题目链接:饥饿的奶牛 - 洛谷 #include <bits/stdc.h> using namespace std; const int N3000010; vector<int> a[N];//可变数组vector存区间 int n,mx,f[N]; int main(){scanf("%d",&n);for(int i1;i<n;i){int x,y;scanf("%…...
2024/5/7 17:16:20 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心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