使用BDB

 

前段时间准备将以前程序里的gdbm替换成bdb,所以写了一些代码,如何使用bdb,现在将代码贴出来:

#ifndef EYOU_DBT_H

#define EYOU_DBT_H

 

#include <db.h>

 

/* Set all fields of DBT to zero.  Return DBT.  */

DBT *affirm_clear_dbt (DBT *dbt);

 

 

/* Set DBT to retrieve no data.  This is useful when you're just

   probing the table to see if an entry exists, or to find a key, but

   don't care what the value is.  Return DBT.  */

DBT *affirm_nodata_dbt (DBT *dbt);

 

 

/* Set DBT to refer to the SIZE bytes at DATA.  Return DBT.  */

DBT *affirm_set_dbt (DBT *dbt, const void *data, u_int32_t size);

 

void init_DBT(DBT *key, DBT *data);

 

#endif /* EYOU_DBT_H */

dbt.h

 

 

/*

 * bdb_error.h : interface to routines for returning Berkeley DB errors

 */

 

#ifndef EYOU_BDB_ERR_H

#define EYOU_BDB_ERR_H

 

#include <db.h>

 

#ifdef __cplusplus

extern "C" {

#endif /* __cplusplus */

 

 

#define BDB_ERR(expr)                           /

  do {                                          /

    int db_err__temp = (expr);                      /

    if (db_err__temp)                             /

      return db_err__temp;                        /

  } while (0)

 

 

#ifdef __cplusplus

}

#endif /* __cplusplus */

 

#endif /* EYOU_BDB_ERR_H */

bdb_error.h

 

 

 

 

 

Bdb_compat.h 主要是同时可以在不同版本的bdb中使用,因为open函数参数一样

#ifndef EYOU_BDB_COMPAT_H

#define EYOU_BDB_COMPAT_H

 

#include <db.h>

 

 

/* BDB 4.1 introduced the DB_AUTO_COMMIT flag. Older versions can just

   use 0 instead. */

#ifdef DB_AUTO_COMMIT

#define AFFIRM_BDB_AUTO_COMMIT (DB_AUTO_COMMIT)

#else

#define AFFIRM_BDB_AUTO_COMMIT (0)

#endif

 

/* DB_INCOMPLETE is obsolete in BDB 4.1. */

#ifdef DB_INCOMPLETE

#define AFFIRM_BDB_HAS_DB_INCOMPLETE 1

#else

#define AFFIRM_BDB_HAS_DB_INCOMPLETE 0

#endif

 

/* In BDB 4.3, "buffer too small" errors come back with

   DB_BUFFER_SMALL (instead of ENOMEM, which is now fatal). */

#ifdef DB_BUFFER_SMALL

#define AFFIRM_BDB_DB_BUFFER_SMALL DB_BUFFER_SMALL

#else

#define AFFIRM_BDB_DB_BUFFER_SMALL ENOMEM

#endif

 

/* BDB 4.4 introdiced the DB_REGISTER flag for DBEnv::open that allows

   for automatic recovery of the databases after a program crash. */

#ifdef DB_REGISTER

#define AFFIRM_BDB_AUTO_RECOVER (DB_REGISTER | DB_RECOVER)

#else

#define AFFIRM_BDB_AUTO_RECOVER (0)

#endif

 

/* Parameter lists */

 

/* In BDB 4.1, DB->open takes a transaction parameter. We'll ignore it

   when building with 4.0. */

#if (DB_VERSION_MAJOR > 4) /

    || (DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 1)

#define AFFIRM_BDB_OPEN_PARAMS(env,txn) (env), (txn)

#else

#define AFFIRM_BDB_OPEN_PARAMS(env,txn) (env)

#endif

 

/* In BDB 4.3, the error gatherer function grew a new DBENV parameter,

   and the MSG parameter's type changed. */

#if (DB_VERSION_MAJOR > 4) /

    || (DB_VERSION_MAJOR == 4) && (DB_VERSION_MINOR >= 3)

/* Prevents most compilers from whining about unused parameters. */

#define AFFIRM_BDB_ERROR_GATHERER_IGNORE(varname) ((void)(varname))

#else

#define bdb_error_gatherer(param1, param2, param3) /

  bdb_error_gatherer (param2, char *msg)

#define AFFIRM_BDB_ERROR_GATHERER_IGNORE(varname) ((void)0)

#endif

 

 

/* Before calling db_create, we must check that the version of the BDB

   libraries we're linking with is the same as the one we compiled

   against, because the DB->open call is not binary compatible between

   BDB 4.0 and 4.1. This function returns DB_OLD_VERSION if the

   compile-time and run-time versions of BDB don't match. */

int affirm_bdb_check_version (void);

 

 

#endif /* EYOU_BDB_COMPAT_H */

bdb_compat.h

 

 

 

 

 

#ifndef EYOU_AFFIRM_TABLE_H

#define EYOU_AFFIRM_TABLE_H

 

#include <db.h>

 

int bdb_open(DB** dbp, char *db_name);

int bdb_get(DB* dbp, DBT* key, DBT* data, char* db_name);

int bdb_put(DB* dbp, DBT* key, DBT* data, char* db_name);

int bdb_del(DB* dbp, DBT* key, char* db_name);

 

 

#endif /* EYOU_AFFIRM_TABLE_H */

affirm_table.h

 

 

 

 

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

 

#include "dbt.h"

 

void init_DBT(DBT *key, DBT *data)

{

    if (key != NULL)

        memset (key, 0, sizeof(DBT));

 

    if (data != NULL)

        memset (data, 0, sizeof(DBT));

}

 

DBT *

affirm_clear_dbt (DBT *dbt)

{

  memset (dbt, 0, sizeof (*dbt));

 

  return dbt;

}

 

 

DBT *affirm_nodata_dbt (DBT *dbt)

{

  affirm_clear_dbt (dbt);

 

  /* A `nodata' dbt is one which retrieves zero bytes from offset zero,

     and stores them in a zero-byte buffer in user-allocated memory.  */

  dbt->flags |= (DB_DBT_USERMEM | DB_DBT_PARTIAL);

  dbt->doff = dbt->dlen = 0;

 

  return dbt;

}

 

 

DBT *

affirm_set_dbt (DBT *dbt, const void *data, unsigned int size)

{

  affirm_clear_dbt (dbt);

 

  dbt->data = (void *) data;

  dbt->size = size;

 

  return dbt;

}

 

dbt.c

 

 

 

 

 

 

/* bdb_compat.c --- Compatibility wrapper for different BDB versions.

 *

 */

#include <db.h>

 

#include "bdb_compat.h"

 

int

affirm_bdb_check_version (void)

{

  int major, minor;

 

  db_version(&major, &minor, NULL);

  if (major != DB_VERSION_MAJOR || minor != DB_VERSION_MINOR)

    return DB_OLD_VERSION;

  return 0;

}

bdb_compat.c

 

 

 

 

 

#include <string.h>

#include <unistd.h>

 

#include "affirm_table.h"

#include "bdb_compat.h"

#include "dbt.h"

#include "bdb_error.h"

 

int bdb_open(DB** dbp, char *db_name)

{

    DB *dbtmp;

 

    if (db_name == NULL)

    {

        return -1;

    }

 

    BDB_ERR(affirm_bdb_check_version());

    BDB_ERR(db_create(&dbtmp, NULL, 0));

    BDB_ERR(dbtmp->open(AFFIRM_BDB_OPEN_PARAMS(dbtmp, NULL),

                db_name, NULL, DB_BTREE,

                DB_CREATE /*| AFFIRM_BDB_AUTO_COMMIT*/,

                0666));

 

    *dbp = dbtmp;

    return 0;

}

 

int bdb_get(DB* dbp, DBT* key, DBT* data, char* db_name)

{

   int db_flag = 0;

   DB* dbtmp = NULL;

 

   if (key == NULL)

   {

       return -1;

   }

 

   if (dbp == NULL)

   {

       int ret;

       if (db_name == NULL)

       {

           return -1;

       }

 

       if ((ret = bdb_open(&dbtmp, db_name)) != 0)

           return ret;

   }

   else

   {

       dbtmp = dbp;

       db_flag = 1;

   }

 

   BDB_ERR(dbtmp->get(dbtmp, NULL, key, data, 0));

 

   if (0 == db_flag)

   {

       BDB_ERR(dbtmp->close(dbtmp, 0));

   }

 

   return 0;

}

 

int bdb_put(DB* dbp, DBT* key, DBT* data, char *db_name)

{

   int db_flag = 0;

   DB* dbtmp = NULL;

 

   if (key == NULL || data == NULL)

   {

       return -1;

   }

 

   if (dbp == NULL)

   {

       int ret;

 

       if (db_name == NULL)

       {

           return -1;

       }

 

       if ((ret = bdb_open(&dbtmp, db_name)) != 0)

           return ret;

   }

   else

   {

       dbtmp = dbp;

       db_flag = 1;

   }

 

   BDB_ERR(dbtmp->put(dbtmp, NULL, key, data, 0));

   BDB_ERR(dbtmp->sync(dbtmp, 0));

 

   if (0 == db_flag)

   {

       BDB_ERR(dbtmp->close(dbtmp, 0));

   }

 

   return 0;

}

 

int bdb_del(DB* dbp, DBT* key, char* db_name)

{

   int db_flag = 0;

   DB* dbtmp = NULL;

 

   if (key == NULL)

   {

       return -1;

   }

 

   if (dbp == NULL)

   {

       int ret;

 

       if (db_name == NULL)

       {

           return -1;

       }

 

       if ((ret = bdb_open(&dbtmp, db_name)) != 0)

           return ret;

   }

   else

   {

       dbtmp = dbp;

       db_flag = 1;

   }

 

   BDB_ERR(dbtmp->del(dbtmp, NULL, key, 0));

 

   if (0 == db_flag)

   {

       BDB_ERR(dbtmp->close(dbtmp, 0));

   }

 

   return 0;

}

affirm_table.c

 

 

 

 

 

 

#include <stdio.h>

#include <string.h>

#include <db.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/wait.h>

 

#include "affirm_table.h"

#include "bdb_compat.h"

#include "dbt.h"

#include "bdb_error.h"

 

#define AFFIRM_BDB_FILE         "/tmp/aftest.db"

 

void get_func(int i)

{

    int ret;

    DBT key, data;

    memset (&data, 0, sizeof(DBT));

    ret = bdb_get(NULL, affirm_set_dbt(&key, (void*)&i, sizeof(int)), &data, AFFIRM_BDB_FILE);

 

    if (ret ==0 )

        printf("get :key = %d, data = %d/n", i, *(int*)data.data);

}

 

void put_func()

{

    int i,r;

    DBT key, data;

    i = 4;

    r = bdb_put(NULL, affirm_set_dbt(&key, &i, sizeof(int)),

                  affirm_set_dbt(&data, &i, sizeof(int)), AFFIRM_BDB_FILE);

    printf("put: key=%d, data=%d, ret=%d/n", *(int*)key.data, *(int*)data.data, r);

}

 

int main()

{

    DB *dbp;

    DBT key, data;

    int i = 0;

    int ret;

    pid_t pid;

 

 

#if 0

    i++;

    memset(&key, 0, sizeof(DBT));

    memset(&data, 0, sizeof(DBT));

    key.data = &i;

    key.size = sizeof(int);

    data.data = &i;

    data.size = sizeof(int);

#endif

 

    unlink(AFFIRM_BDB_FILE);

#if 0

    ret = bdb_open(&dbp, AFFIRM_BDB_FILE);

    if (ret != 0)

    {

        printf("open error! ret = %d/n", ret);

        return -1;

    }

#endif

 

    pid = fork();

 

    if (pid == 0)

    {

        int r;

        i = 0;

 

        i++;

        r = bdb_put(NULL, affirm_set_dbt(&key, &i, sizeof(int)),

                      affirm_set_dbt(&data, &i, sizeof(int)), AFFIRM_BDB_FILE);

        printf("key=%d, data=%d, ret=%d/n", *(int*)key.data, *(int*)data.data, r);

 

        i++;

        r = bdb_put(NULL, affirm_set_dbt(&key, &i, sizeof(int)),

                      affirm_set_dbt(&data, &i, sizeof(int)), AFFIRM_BDB_FILE);

        printf("key=%d, data=%d, ret=%d/n", *(int*)key.data, *(int*)data.data, r);

 

        i++;

        r = bdb_put(NULL, affirm_set_dbt(&key, &i, sizeof(int)),

                      affirm_set_dbt(&data, &i, sizeof(int)), AFFIRM_BDB_FILE);

        printf("key=%d, data=%d, ret=%d/n", *(int*)key.data, *(int*)data.data, r);

 

#if 0

        ret = bdb_get(NULL, affirm_set_dbt(&key, (void*)&i, sizeof(int)), &data, AFFIRM_BDB_FILE);

        printf("ret = %d/n", ret);

 

        if (ret ==0 )

            printf("key = 3, data = %d/n", *(int*)data.data);

#endif

        exit (0);

    }

 

    printf("wait .../n");

    waitpid(pid, NULL, 0);

    printf("wait return/n");

 

    pid = fork();

    if (pid == 0)

    {

        i = 3;

        memset (&data, 0, sizeof(DBT));

        ret = bdb_get(NULL, affirm_set_dbt(&key, (void*)&i, sizeof(int)), &data, AFFIRM_BDB_FILE);

        printf("ret = %d/n", ret);

 

        if (ret ==0 )

            printf("key = 3, data = %d/n", *(int*)data.data);

 

        exit (0);

    }

    printf("wait .../n");

    waitpid(pid, NULL, 0);

    printf("wait return/n");

 

    i = 3;

    memset (&data, 0, sizeof(DBT));

    ret = bdb_get(NULL, affirm_set_dbt(&key, (void*)&i, sizeof(int)), &data, AFFIRM_BDB_FILE);

    printf("ret = %d/n", ret);

 

    if (ret ==0 )

        printf("key = 3, data = %d/n", *(int*)data.data);

 

    get_func(2);

    put_func();

    get_func(4);

 

    return 0;

}

test.c

 

 

 

 

BIN = bdbtest

OBJS = affirm_table.o bdb_compat.o dbt.o test.o

CC = gcc -Wall

INSTALL = /usr/bin/install -c

TARGET = /var/eyouipb

 

.c.o:

       $(CC) -c $*.c

 

all: $(BIN)

 

$(BIN): $(OBJS)

       $(CC) -o $(BIN) $(OBJS) -ldb

 

clean:

       rm -rf $(OBJS) $(BIN)

 

install: install_affirm_daemon

 

install_affirm_daemon:

       $(INSTALL) $(BIN) $(TARGET)/sbin

Makefile

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

相关文章

  1. swoole入门教程04-多端口监听、热重启以及Timer进阶:简单crontab

    环境说明: 系统:Ubuntu14.04 (安装教程包括CentOS6.5) PHP版本:PHP-5.5.10 swoole版本:1.7.7-stableGithub链接:https://github.com/LinkedDestiny/swoole-doc1.多端口监听在实际运用场景中,服务器可能需要监听不同host下的不同端口。比如,一个应用服务器,可能需要监…...

    2024/5/5 22:01:14
  2. Python 操作BDB (1)

    Python 对BDB的访问支持的非常好,在内建的lib里就有对BDB的访问支持, 见博文 http://gashero.yeax.com/?p=5#id14我简单写了个K-v的例子,记录如下: Created on 2009-9-13@author: Administratorimport bsddb class BDBTest(object):def __init__(self):self.db = bsdd…...

    2024/5/5 16:56:37
  3. 2016年度最受欢迎中国开源软件

    2016 年度最受欢迎中国开源软件评选结果已出炉。​每年的年底我们都会准备今年的一些软件榜单,我们把这个榜单定义为 “热门” 榜单,或者说是最受欢迎的榜单。我们根据软件在社区里的用户关注度、活跃度、访问量等信息来对“热门”进行量化,从而初选出一个大的列表,然后用户…...

    2024/4/24 22:45:16
  4. U盘装/虚拟光驱 装双系统

    上篇日志讲到装系统,现在开始装双系统准备:雨林木风xp.isobcdautofix.exe此种方法需先装WIN7后装XP(1.现在用U盘进入 PE系统或装个虚拟光驱 2.虚拟光驱加载 镜像文件3.在我的电脑中找到 双击打开 此时 安装系统到D,E,F都行(注意备份资料,会格式化的)剩下的就叫它装吧。装好…...

    2024/5/5 21:29:11
  5. 使用TFS2010管理敏捷项目生命周期-系列指南4 Scrum v3 For TeamSystem-安装疑难解答

    Scrum for Team System是一个自由开源的模板,基于Scrum方法,从TFS2005,TFS2008到TFS2010,已经经历了3个大版本,算是应用比较成熟的模板。而且配合 TfsWorkbench工具(做为电子版的看板/故事强,在实施Scrum的研发项目中,完全可以取代用纸质卡片的故事墙),比微软的内置敏…...

    2024/4/14 21:33:54
  6. 熊猫烧香病毒的源码

    hoho~居然扒到源代码,,,收藏起来先....特此声明:只供学习使用!出现任何违法现象与本贴无关!病毒编写语言:Delphi program Japussy; uses Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry}; const HeaderSize = 82432; IconOffset = $12EB8; { HeaderSize = …...

    2024/4/14 21:33:52
  7. 国内开源镜像(下载Linux系统)

    网易开源镜像http://mirrors.163.com/清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/阿里开源镜像站https://opsx.alibaba.com/mirror搜狐开源镜像站:http://mirrors.sohu.com/...

    2024/5/6 2:29:47
  8. 使用TFS2010管理敏捷项目的生命周期-系列指南1 安装配置

    TFS2010,全称Team foundation server 2010,是微软为了在日趋热门的研发生命周期管理工具上有一席之地而推出的平台。目前有一些书籍或微软官方的在线帮助描述了TFS2010的用法,但是这些资料往往只描述了基本的用法,对一些常见的使用场景和疑难问题,以及高级用法往往很难找到…...

    2024/4/25 19:32:24
  9. 多系统启动菜单的修复EasyBoot

    如果电脑上安装了多个操作系统,或者由于Gost备份还原等操作,导致系统的启动工菜单中没有列出所有的操作系统,这时工具就派上用场了。 工具名称 :EasyBoot或者BCDautofix来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/237842/viewspace-709080/,如需转载,请注明出处…...

    2024/5/5 9:45:15
  10. 熊猫烧香手工清除实验

    一、实验目的及要求1. 了解熊猫烧香病毒发作原理2.学习手工查杀病毒过程二、实验设备(环境)及要求PC机, VC++等,虚拟云平台三、实验内容与步骤(1)打开C:\tool\熊猫烧香病毒手工清除实验文件夹,点击“setup.exe”;(2)运行后发现任务管理器打不开,排查可疑进程,发现可疑…...

    2024/4/30 19:26:43
  11. Oracle - crfclust.bdb文件太大

    问题排查今天在检查oracle rac集群时,突然才发现服务器的根目录下面占用了很多空间,照道理不应该出现这种情况,初步猜想可能是哪个日志或跟踪文件太大导致。 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_fmdb1-lv_root 214G …...

    2024/4/30 21:46:49
  12. Swoole入门指南:PHP7安装Swoole详细教程

    环境 这里不在使用apache做为web server。该用nginx + php-fpm,性能更强大,配置更方便。并且为了跟上php的步伐,也使用了比较新的php版本 [x] centos7[x] php7.0.12[x] nginx/1.10.2[x] php-fpm下载 swoole 首先下载swoole的源码包,这个操作很简单,没有太多说的。(没有wge…...

    2024/4/30 16:39:54
  13. 使用jmeter自带代理服务器录制脚本,解决无法录制到内容问题

    同事用jmeter自带的代理服务器录制脚本,总是会遇到录制不到自己想录制的内容,但是会录制也写乱七八糟的东西。其实主要原因还是没有在浏览器中导入CA证书的原因,但是这个在很多人写文档中又没有体现,这里记录一下。1.在jmeter中新建一个代理服务器,并按照如下图设置下:2.…...

    2024/4/30 18:00:47
  14. 熊猫烧香病毒清除

    U盘中带autorun.inf和setup.exe两个文件,其中setup.exe是病毒体用户双击U盘感染病毒,使用户出现非法操作.打字或者浏览网页中自动关闭,最后导致中毒后的EXE文件的图标全部变为熊猫图标了,用户千万不要保留这种文件.你重新做系统几次都没有用,它已经把病毒代码插入到EXE文件了.所…...

    2024/4/30 22:43:56
  15. mysql 5.1.12去除BDB(Berkeley DB)支持.

    先提一条最近的新闻.mysql 5.1.12去除BDB(Berkeley DB)支持. 转而有开发者进行其插件的开发. mysql官方称去除是技术原因. - 支持本来就不算多. 并且在效率方面和innodb有差距 有些人就想说,innodb的未来会是什么样子,因为oracle收购了它. (orcale方面发言人说innodb的地位不会…...

    2024/5/1 3:32:25
  16. 概率统计基础(二): 数理统计与描述性统计

    这次概率统计学习基于:Datawhale概率统计组队学习文档 1. 写在前面 这次借着在Datawhale组织的概率统计专题学习的机会再重新温习一遍数学基础,所谓机器学习和深度学习, 背后的逻辑都是数学, 所以数学基础在这个领域非常关键, 而统计学又是重中之重, 机器学习从某种意义上…...

    2024/5/1 2:59:41
  17. 试试54款开源服务器软件 (比较知名的软件大集合)

    本文逐一介绍了文件传输、安全、存储、协作及其他方面的开源服务器软件。 据斯坦福大学的咨询学教授Jonathon Koomey近期作所的一项调查显示,全球已安装的服务器总数约为3160万台,包括设在美国的大约1150万台。如果企业机构针对所有那些系统只能使用专有软件,因而带来的成本…...

    2024/4/30 20:29:23
  18. 重新安装win7后修复ubuntu启动项

    制作u盘启动,进入系统。 mkdir /media/tempdir mount /dev/sda7 /media/tempdir 挂载linux系统分区至tempdir grub-install --root-directory=/media/tempdir /dev/sda 重新安装grub2到硬盘的主引导记录【MBR】里面 出现Installation finished.No Error Reported..字符,操作…...

    2024/4/30 17:55:11
  19. TFS总结 VS连接 TFS2010时最好不要记住密码

    解决连接tfs因记住密码以后再登录TFS时不需要密码的方法 用TFS作持续集成服务器,有同事因之前电脑记住TFS服务器的密码,恰好TFS管理员的密码也是服务器的密码。连接误输入TFS管理员的密码,同时也记住了密码。以后再登录时本想用自己的密码登录。但在VS2010 里没有注销项。 …...

    2024/4/30 23:52:26
  20. Swoole案例教程:swoole_table的进程间共享内存数据讲解。

    Swoole案例教程: 其中第1季包括两个案例,以及swoole_table的进程间共享内存数据讲解。 视频在线观看: https://ke.qq.com/course/301002转载于:https://my.oschina.net/u/191026/blog/2413966...

    2024/4/30 18:29:34

最新文章

  1. 【竞技宝jjb.lol】LOL:TES顺利晋级却暴露问题

    北京时间2024年5月5日,英雄联盟2024MSI季中赛正在如火如荼的进行之中,目前入围赛阶段的比赛已经进入尾声,入围赛实力最强的两支战队T1、TES都已经顺利晋级淘汰赛阶段,在昨天的比赛结束之后,A组的FLY、PSG,B组的FNC、GAM将争夺剩下的两个出线名额。 回顾这次入围赛中,T1和TES的比…...

    2024/5/6 3:57:30
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. WPF —— 后台实现fromto动画实例

    标签页 <Button Width"100"Height"40"Content"点击开始动画"Click"Button_Click"Name"b1"> </Button><!--HorizontalAlignment"Left"--><!--VerticalAlignment"Top添加这俩个属性的目…...

    2024/5/3 13:47:25
  4. Java-运算符

    运算符 Java语言支持如下运算符&#xff1a; 算术运算符&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%&#xff0c;&#xff0c;--复制运算符&#xff1a;关系运算符&#xff1a;>, <, >, <, , !instanceof逻辑运算符&#xff1a;&&…...

    2024/5/5 8:51:26
  5. WPS二次开发专题:WPS SDK实现文档打印功能

    作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 在办公场景或者家教场景中经常碰到需要对文档进行打印…...

    2024/5/1 13:31:33
  6. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

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

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

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

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

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

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

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

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

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

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

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

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

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

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

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

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

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

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

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

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

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

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

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

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

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

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

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,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
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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