队列很常见,但大部分的队列是将数据放入到内存.如果数据过多,就有内存溢出危险,而且长久占据着内存,也会影响性能.比如爬虫,将要抓取的URL放到内存,而URL过多,内存肯定要爆.在读Heritrix源码中,发现Heritrix是基于Bdb实现了一个持久化队列,于是我就将这块代码独立出来,平时使用也蛮爽的,现在拿出来共享.同时数据已经持久化,相比放在内存的一次性,可以循环累加使用.

      大家也知道BDB的高性能和嵌入式.但这个持久化队列我觉得比较适合单机.如果涉及到分布式,就不大适合了.毕竟分布式要通信,负载均衡,冗余等.可以用其他的数据库等替代.

      这里大概先说下实现原理,BDB是Key-Value型数据库,而队列是FIFO.所以这个持久化队列以位置作为BDB的Key,数据作为BDB的Value.然后用两个变量,分别记录队列两头的位置,也就是头部和尾部.当有数据插入的时候,就以尾部的位置为这个数据的Key.而当要取出数据时,以头部位置作为Key,获取这个Key的数据.原理大概如此,这个类也继承AbstractQueue,这里贴上代码.以下代码需引用bdb-je,common-io,junit.请在附件中下载.

         1、  自定义的BDB环境类,可以缓存StoredClassCatalog并共享

package com.guoyun.util;import java.io.File;import com.sleepycat.bind.serial.StoredClassCatalog;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
/*** BDB数据库环境,可以缓存StoredClassCatalog并共享* * @contributor guoyun*/
public class BdbEnvironment extends Environment {StoredClassCatalog classCatalog; Database classCatalogDB;/*** Constructor* * @param envHome 数据库环境目录* @param envConfig config options  数据库换纪念馆配置* @throws DatabaseException*/public BdbEnvironment(File envHome, EnvironmentConfig envConfig) throws DatabaseException {super(envHome, envConfig);}/*** 返回StoredClassCatalog* @return the cached class catalog*/public StoredClassCatalog getClassCatalog() {if(classCatalog == null) {DatabaseConfig dbConfig = new DatabaseConfig();dbConfig.setAllowCreate(true);try {classCatalogDB = openDatabase(null, "classCatalog", dbConfig);classCatalog = new StoredClassCatalog(classCatalogDB);} catch (DatabaseException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}return classCatalog;}@Overridepublic synchronized void close() throws DatabaseException {if(classCatalogDB!=null) {classCatalogDB.close();}super.close();}}

 2.  基于BDB实现的持久化队列

package com.guoyun.util;import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.AbstractQueue;
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicLong;import org.apache.commons.io.FileUtils;import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.serial.SerialBinding;
import com.sleepycat.bind.serial.StoredClassCatalog;
import com.sleepycat.bind.tuple.TupleBinding;
import com.sleepycat.collections.StoredMap;
import com.sleepycat.collections.StoredSortedMap;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.DatabaseExistsException;
import com.sleepycat.je.DatabaseNotFoundException;
import com.sleepycat.je.EnvironmentConfig;
/*** 持久化队列,基于BDB实现,也继承Queue,以及可以序列化.但不等同于Queue的时,不再使用后需要关闭* 相比一般的内存Queue,插入和获取值需要多消耗一定的时间* 这里为什么是继承AbstractQueue而不是实现Queue接口,是因为只要实现offer,peek,poll几个方法即可,* 其他如remove,addAll,AbstractQueue会基于这几个方法去实现* * @contributor guoyun* @param <E>*/
public class BdbPersistentQueue<E extends Serializable> extends AbstractQueue<E> implementsSerializable {private static final long serialVersionUID = 3427799316155220967L;private transient BdbEnvironment dbEnv;            // 数据库环境,无需序列化private transient Database queueDb;             // 数据库,用于保存值,使得支持队列持久化,无需序列化private transient StoredMap<Long,E> queueMap;   // 持久化Map,Key为指针位置,Value为值,无需序列化private transient String dbDir;                 // 数据库所在目录private transient String dbName;				// 数据库名字private AtomicLong headIndex;                   // 头部指针private AtomicLong tailIndex;                   // 尾部指针private transient E peekItem=null;              // 当前获取的值/*** 构造函数,传入BDB数据库* * @param db* @param valueClass* @param classCatalog*/public BdbPersistentQueue(Database db,Class<E> valueClass,StoredClassCatalog classCatalog){this.queueDb=db;this.dbName=db.getDatabaseName();headIndex=new AtomicLong(0);tailIndex=new AtomicLong(0);bindDatabase(queueDb,valueClass,classCatalog);}/*** 构造函数,传入BDB数据库位置和名字,自己创建数据库* * @param dbDir* @param dbName* @param valueClass*/public BdbPersistentQueue(String dbDir,String dbName,Class<E> valueClass){headIndex=new AtomicLong(0);tailIndex=new AtomicLong(0);this.dbDir=dbDir;this.dbName=dbName;createAndBindDatabase(dbDir,dbName,valueClass);}/*** 绑定数据库* * @param db* @param valueClass* @param classCatalog*/public void bindDatabase(Database db, Class<E> valueClass, StoredClassCatalog classCatalog){EntryBinding<E> valueBinding = TupleBinding.getPrimitiveBinding(valueClass);if(valueBinding == null) {valueBinding = new SerialBinding<E>(classCatalog, valueClass);   // 序列化绑定}queueDb = db;queueMap = new StoredSortedMap<Long,E>(db,                                             // dbTupleBinding.getPrimitiveBinding(Long.class),   //KeyvalueBinding,                                   // Valuetrue);                                          // allow write}/*** 创建以及绑定数据库* * @param dbDir* @param dbName* @param valueClass* @throws DatabaseNotFoundException* @throws DatabaseExistsException* @throws DatabaseException* @throws IllegalArgumentException*/private void createAndBindDatabase(String dbDir, String dbName,Class<E> valueClass) throws DatabaseNotFoundException,DatabaseExistsException,DatabaseException,IllegalArgumentException{File envFile = null;EnvironmentConfig envConfig = null;DatabaseConfig dbConfig = null;Database db=null;try {// 数据库位置envFile = new File(dbDir);// 数据库环境配置envConfig = new EnvironmentConfig();envConfig.setAllowCreate(true);envConfig.setTransactional(false);// 数据库配置dbConfig = new DatabaseConfig();dbConfig.setAllowCreate(true);dbConfig.setTransactional(false);dbConfig.setDeferredWrite(true);// 创建环境dbEnv = new BdbEnvironment(envFile, envConfig);// 打开数据库db = dbEnv.openDatabase(null, dbName, dbConfig);// 绑定数据库bindDatabase(db,valueClass,dbEnv.getClassCatalog());} catch (DatabaseNotFoundException e) {throw e;} catch (DatabaseExistsException e) {throw e;} catch (DatabaseException e) {throw e;} catch (IllegalArgumentException e) {throw e;}}/*** 值遍历器*/@Overridepublic Iterator<E> iterator() {return queueMap.values().iterator();}/*** 大小*/@Overridepublic int size() {synchronized(tailIndex){synchronized(headIndex){return (int)(tailIndex.get()-headIndex.get());}}}/*** 插入值*/@Overridepublic boolean offer(E e) {synchronized(tailIndex){queueMap.put(tailIndex.getAndIncrement(), e);   // 从尾部插入}return true;}/*** 获取值,从头部获取*/@Overridepublic E peek() {synchronized(headIndex){if(peekItem!=null){return peekItem;}E headItem=null;while(headItem==null&&headIndex.get()<tailIndex.get()){ // 没有超出范围headItem=queueMap.get(headIndex.get());if(headItem!=null){peekItem=headItem;continue;} headIndex.incrementAndGet();    // 头部指针后移}return headItem;}}/*** 移出元素,移出头部元素*/@Overridepublic E poll() {synchronized(headIndex){E headItem=peek();if(headItem!=null){queueMap.remove(headIndex.getAndIncrement());peekItem=null;return headItem;}}return null;}/*** 关闭,也就是关闭所是用的BDB数据库但不关闭数据库环境*/public void close(){try {if(queueDb!=null){queueDb.sync();queueDb.close();}} catch (DatabaseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedOperationException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 清理,会清空数据库,并且删掉数据库所在目录,慎用.如果想保留数据,请调用close()*/@Overridepublic void clear() {try {close();if(dbEnv!=null&&queueDb!=null){dbEnv.removeDatabase(null, dbName==null?queueDb.getDatabaseName():dbName); dbEnv.close();}} catch (DatabaseNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (DatabaseException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{try {if(this.dbDir!=null){FileUtils.deleteDirectory(new File(this.dbDir));}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


3. 测试类,测试数据准确性和性能


package com.guoyun.util;import java.io.File;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;import junit.framework.TestCase;public class BdbPersistentQueueTest extends TestCase{Queue<String> memoryQueue;Queue<String> persistentQueue;@Overrideprotected void setUp() throws Exception {super.setUp();memoryQueue=new LinkedBlockingQueue<String>();String dbDir="E:/java/test/bdbDir";File file=new File(dbDir);if(!file.exists()||!file.isDirectory()){file.mkdirs();}persistentQueue=new BdbPersistentQueue(dbDir,"pq",String.class);}@Overrideprotected void tearDown() throws Exception {super.tearDown();memoryQueue.clear();memoryQueue=null;persistentQueue.clear();persistentQueue=null;}/*** 排放值* @param queue* @return      排放的数据个数*/public int drain(Queue<String> queue){int count=0;while(true){try {queue.remove();count++;} catch (Exception e) {return count;}}}/*** * @param queue* @param size*/public void fill(Queue<String> queue,int size){for(int i=0;i<size;i++){queue.add(i+"");}}public void checkTime(int size){System.out.println("1.内存Queue插入和排空数据所耗时间");long time=0;long start=System.nanoTime();fill(memoryQueue,size);time=System.nanoTime()-start;System.out.println("\t填充 "+size+" 条数据耗时: "+(double)time/1000000+" 毫秒,单条耗时: "+((double)time/size)+" 纳秒");start=System.nanoTime();drain(memoryQueue);time=System.nanoTime()-start;System.out.println("\t排空 "+size+" 条数据耗时: "+(double)time/1000000+" 毫秒,单条耗时: "+((double)time/size)+" 纳秒");System.out.println("2.持久化Queue插入和排空数据所耗时间");start=System.nanoTime();fill(persistentQueue,size);time=System.nanoTime()-start;System.out.println("\t填充 "+size+" 条数据耗时: "+(double)time/1000000+" 毫秒,单条耗时: "+((double)time/size/1000000)+" 豪秒");start=System.nanoTime();drain(persistentQueue);time=System.nanoTime()-start;System.out.println("\t排空 "+size+" 条数据耗时: "+(double)time/1000000+" 毫秒,单条耗时: "+((double)time/size/1000)+" 豪秒");}/*** 十万数量级测试*/public void testTime_tenThousand(){System.out.println("========测试1000000(十万)条数据=================");checkTime(100000);}/*** 百万数量级测试*/public void testTime_mil(){System.out.println("========测试1000000(百万)条数据=================");checkTime(1000000);}/*** 千万数量级测试,注意要防止内存溢出*/public void testTime_tenMil(){System.out.println("========测试10000000(千万)条数据=================");checkTime(10000000);}/*** 测试队列数据准确性* @param queue* @param queueName* @param size*/public void checkDataExact(Queue<String> queue,String queueName,int size){if(queue.size()!=size){System.err.println("Error size of "+queueName);}String value=null;for(int i=0;i<size;i++){value=queue.remove();if(!((i+"").equals(value))){System.err.println("Error "+queueName+":"+i+"->"+value);}}}/*** 测试队列中数据的准确性,包括长度*/public void testExact(){int size=100;fill(memoryQueue,size);fill(persistentQueue,size);checkDataExact(memoryQueue,"MemoryQueue",100);checkDataExact(persistentQueue,"PersistentQueue",100);}}



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

相关文章

  1. 除法,乘法,移位耗时对比

    #除法,乘法,移位耗时对比 发现移位和乘法比除法要省3-5倍时间,移位相对而言是最省时间的auto time_start = std::chrono::system_clock::now();int n = 100000;double d ;for (int i = 0; i < 1000000; i++){d = n / 2;}std::chrono::duration<double> time_spend = s…...

    2024/5/7 15:14:04
  2. 安装busybox提示Invalid cross-device link错误

    在手机上安装busybox工具,提示如题错误,解决版本: 在应用商店搜busyboxpro直接下载个工具点安装即可。...

    2024/4/20 23:21:07
  3. Redis 并不是完全单线程 -> Redis的Bio 介绍

    Redis 并不是完全单线程 -> Redis的Bio 介绍 github博客地址1.UNLINK(4.0.0后才有) 的内存清理是bio线程实现 2.aof的fsync刷盘是bio线程实现复制代码背景: 日常翻看redis官网,发现4.0.0更新了一个命令 unlink 执行: UNLINK key1 key2 key3官网解释 https://redis.io/comma…...

    2024/5/7 14:26:55
  4. Tomcat的BIO和NIO问题

    前言 最近一些朋友通过书籍找到我,问了一些关于tomcat中BIO和NIO的问题,这里列一下方便需要的朋友。后续也将前面有朋友问的问题整理下。。问 只把 Tomcat 的 bio 模式改为 nio 模式,是否能提高服务器的吞吐量?发现在配置一样的情况下,两种模式压出来的吞吐量差不多。答 要…...

    2024/5/7 14:43:30
  5. 面试题:BIO、NIO和AIO的区别

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO1)BIO在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则…...

    2024/5/7 17:03:34
  6. 《Java之IO , BIO , NIO , AIO 知多少?》-黄文毅-专题视频课程

    《Java之IO , BIO , NIO , AIO 知多少?》—2569人已学习 课程介绍 《Java之IO , BIO , NIO , AIO 知多少?》主要是针对有一定基础的Java学员。本课程主要围绕着IO,BIO,NIO,AIO等基础知识展开的,同时会讲解很多具体代码实例。在本课程中,学员可以掌握这些基础的概…...

    2024/4/20 21:21:34
  7. 瑞士军刀BUSYBOX的移植

    busybox的官网为http://www.busybox.net/,在里面可以直接下载源码。或者直接git clone http://git.busybox.net/busybox/tree/?h=1_24_stable来下载源码。下载下来后,可直接make一下,看看源码有没有问题。接下来就是移植了。觉得这篇文章写的不错。http://my.oschina.net/qu…...

    2024/4/20 21:21:32
  8. 手动制作mini linux详细步骤—之一

    8.2.1、mini linux内核编译实验目的:对Linux内核以非模块化手动编译,并借助busybox安装根文件系统,来制作最小化的linux系统。所谓非模块化,就是将各种所需的硬件驱动、支持的文件系统等直接编译进内核,所以initramfs也就不需要了,对于网卡驱动,我们采用模块化编译,当然…...

    2024/5/7 21:23:14
  9. BIO、NIO、AIO的优缺点

    1. BIO 2. NIO 3. AIOBIO思考:BIO其实就是两个进程(C/S)在一个线程里进行的通讯形式,Client和Server端各启一个进程来保持通讯,当调用的对方进程没有资源的时候,自己进入等待状态,但一直会监听调用该进程的状态,直到可以取到资源。 缺点: 一个连接占用一个线程资源,并且…...

    2024/4/20 21:21:30
  10. scp使用 及 安装

    安装:CentOS安装scp命令及出现错误解决 在测试中需要在两台虚拟机之间传递文件,首先想到的是scp命令,结果提示: -bash: scp: command not found 想当然用yum install scp命令安装,结果提示: No package scp available. 后来发现scp这东西应该属于openssh-clients这个包,…...

    2024/4/20 21:21:29
  11. docker安装笔记,仅供参考哦

    1 docker01 docker 安装停止禁用防火墙 systemctl stop firewalld systemctl mask firewalld禁用 selinux配置 yum 源,安装 docker yum install docker-engine启动测试 systemctl start docker ifconfig 启动后可以看见 docker0 docker version搜索 docker search 下载 doc…...

    2024/5/7 18:59:19
  12. android模拟器安装busybox的一个窍门

    在网上查了很多android模拟器安装busybox的方法。 发现都大同小异 都是将busybox安装好,然后要么通过手动的方法: export PATH="/data/busybox:$PATH" 将busybox路径加入到PATH中。 要么就是通过别人重新编译的rom,使其启动时自己添加这个环境变量路径 。 转载请注…...

    2024/5/7 16:55:57
  13. CentOS编译安装Busybox

    1.下载busyboxwget -N -P /opt https://busybox.net/downloads/busybox-1.31.0.tar.bz2 -C /opt2.安装依赖包yum -y install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel libmcrypt-devel glibc-static ncurses-devel3.加压…...

    2024/4/20 23:21:05
  14. 网络编程(BIO、NIO、Netty )

    简介:BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。 NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发…...

    2024/4/20 1:57:21
  15. 用Process Monitor 监测注册表解决win10代理服务器关不掉自动被勾选的问题

    现象前几天安装了一个代理服务器,后来不想用就卸载了。结果发现每次上网都报网络连接失败。经过一番查找,发现win10的局域网设置里面,选择了“为LAN使用代理服务器”。没关系,把“为LAN使用代理服务器”勾选去掉就OK了。如下图:但令人抓狂的是,每隔一段时间,“为LAN使用…...

    2024/4/20 23:21:02
  16. ntp服务器是什么,有什么用?

    https://www.idcbest.com/servernews/11002256.html ntp服务器隶属于小众时间频率行业,对于初次接触者和未涉猎此行业的人群来说,就会有很大的疑问:ntp服务器能做什么,为什么会需要ntp服务器? 本文主要通过这两个问题,对ntp服务器进行分总式的说明,希望更多的人能认识nt…...

    2024/4/20 23:21:01
  17. Linux DHCP服务器搭建

    DHCP介绍概念Dynamic Host Configuration Protocol:动态主机配置协议,是 TCP/IP协议簇 中的一种,是一个 局域网 的网络协议,使用 UDP协议 工作。用途集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,提升地址的使用率。 …...

    2024/4/20 23:21:01
  18. 搭建一个简单的服务器

    做Android开发有一段时间了,经常与后台服务器进行交互,有时就会想,后台服务器到底是怎么工作的呢?我发出去一个http请求,他怎么接收到,又怎么进行处理、返回信息呢?怀着这个疑问,我进行了好一通搜索。然后,还是想动动手,自己搭建一个简单的服务器。我的环境是win7,那…...

    2024/4/20 6:30:37
  19. Linux内核块设备层介绍之bio层

    本文主要翻译并改编自lwn文章 https://lwn.net/Articles/736534/。 有一位读者郭健在阅读本文后,对我们的翻译提供了勘误,所以重发此文,并对这位读者表示感谢,勘误部分做了标红。如果大家还有其他问题,欢迎发邮件到boyu点mt at alibaba-inc.com。 像linux这样的操作系统, …...

    2024/4/20 23:20:58
  20. 【Java】Red5服务器搭建(实现在线直播,流媒体视频播放)

    引言 流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了用户等待播放的时间。另外通过网络播放流媒体文件时,文件本身不会在本地磁盘中存储,这样就节省了大量的磁盘空间开销。正是这些优点,使得流媒体文件被广泛应用于网络播放…...

    2024/4/20 23:20:57

最新文章

  1. IP规划案例

    整个OSPF环境IP基于172.16.0.0/16划分 172.16.0.0/16 先分成2个网段&#xff08;OSPF RIP&#xff09;&#xff0c;借1位172.16.0.0/17 ---OSPF 再按区域划分&#xff08;5个区域&#xff09;&#xff0c;借3位 172.16.0.0/20 ---Area 0 三个环回 MGRE 4个网…...

    2024/5/7 22:26:39
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/7 10:36:02
  3. 电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

    批量调节音频速度是现代音频处理中的一个重要环节&#xff0c;尤其在音乐制作、电影剪辑、有声书制作等领域&#xff0c;它能够帮助制作者快速高效地调整音频的播放速度&#xff0c;从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项&#xff0c;…...

    2024/5/6 12:02:04
  4. 前端学习<二>CSS基础——17-CSS3的常见边框汇总

    CSS3 常见边框汇总 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}​body {background-c…...

    2024/5/6 2:11:37
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/7 5:50:09
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

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

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

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

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

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

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

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

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

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

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

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

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/4 23:54:56
  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