BDB读、写、删除、更新事物、例子
来源
http://bbs.beishatan.com/
#include
#include
#include
#include
#include
#include "db.h""
#include
#include
#include
#defineDATABASE"bench_001.db"
#defineENV_DIRECTORY"TXNAPP"
#define DESFOLDER"E://test"
char gbuf[2*1024*1024] = {0};
DB_ENV *db_init(char *, char *, int, int);
intfill(DB_ENV *, DB *, int, int, int, int);
intget(DB *,int, int, int, int, int, int *);
intmain(int, char *[]);
voidusage(void);
const char
*progname = "bench_001";/* Program name. */
void env_dir_create()
{
struct stat sb;
/*
* If the directory exists, we're done. We do not further check
* the type of the file, DB will fail appropriately if it's the
* wrong type.
*/
if (stat(ENV_DIRECTORY, &sb) == 0)
return;
/* Create the directory, read/write/access owner only. */
if (mkdir(ENV_DIRECTORY) != 0) {
fprintf(stderr,
"txnapp: mkdir: %s: %s/n", ENV_DIRECTORY, strerror(errno));
exit (1);
}
}
/*
* db_init --
*Initialize the environment.
*/
DB_ENV *
db_init(char *home, char*prefix,
int cachesize, int txn)
{
DB_ENV *dbenv;
int flags, ret;
if ((ret = db_env_create(&dbenv, 0)) != 0) {
dbenv->err(dbenv, ret, "db_env_create");
return (NULL);
}
dbenv->set_errfile(dbenv, stderr);
dbenv->set_errpfx(dbenv, prefix);
(void)dbenv->set_cachesize(dbenv, 0,
cachesize == 0 ? 50 * 1024 * 1024 : (u_int32_t)cachesize, 0);
flags = DB_CREATE | DB_INIT_MPOOL;
flags |= DB_INIT_TXN | DB_INIT_LOCK;
flags |= DB_THREAD | DB_RECOVER;
if (ret = dbenv->open(dbenv, ENV_DIRECTORY,flags, 0) != 0) {
(void)dbenv->close(dbenv, 0);
fprintf(stderr, "dbenv->open: %s: %s/n",
ENV_DIRECTORY, db_strerror(ret));
exit (1);
}
return (dbenv);
}
bool modify(DB *dbp, int txn, char* uid, char* folder, char*name, char*databuf)
{
DBC *dbcp;
DBT key, data;
DB_TXN *txnp;
int ret;
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = uid;
key.size = strlen(uid);
txnp = NULL;
dbp->dbenv->txn_begin(dbp->dbenv, NULL, &txnp, 0);
/* Acquire a cursor for the database. */
if ((ret = dbp->cursor(dbp, txnp, &dbcp, 0)) != 0) {
dbp->err(dbp, ret, "DB->cursor");
}
bool blnexist = false;
while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) ==0)
{
int c1, c2, c3;
char *p = (char*)data.data;
char *p1 = p;
char tmpfolder[255] = {0};
char tmpfilename[255] = {0};
memcpy(&c1, p, sizeof(int));
p += sizeof(int);
memset(tmpfolder, 0, 255);
memcpy(tmpfolder, p, c1);
p += c1;
memcpy(&c2, p, sizeof(int));
p += sizeof(int);
memset(tmpfilename, 0, 255);
memcpy(tmpfilename, p, c2);
if (strcmp(folder, tmpfolder) == 0
&& strcmp(name, tmpfilename) == 0)
{
char *p2 = &gbuf[0];
memcpy(p2, p1, c1+c2+sizeof(int)*2);
p2 += c1+c2+sizeof(int)*2;
int len = strlen((char*)databuf);
memcpy(p2, &len, sizeof(len));
p2 += sizeof(len);
memcpy(p2, databuf, len);
data.data = gbuf;
data.size = 2*1024*1024;
dbcp->c_put(dbcp, &key, &data, DB_CURRENT);
blnexist = true;
break;
}
}
dbcp->c_close(dbcp);
txnp->commit(txnp, 0);
if (!blnexist && ret == DB_NOTFOUND)
{
return false;
}
else
{
return true;
}
}
bool append(DB *dbp, int txn, char* uid, char* folder, char*name, char*databuf)
{
DBC *dbcp;
DBT key, data;
DB_TXN *txnp;
int ret;
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = uid;
key.size = strlen(uid);
txnp = NULL;
dbp->dbenv->txn_begin(dbp->dbenv, NULL, &txnp, 0);
/* Acquire a cursor for the database. */
if ((ret = dbp->cursor(dbp, txnp, &dbcp, 0)) != 0) {
dbp->err(dbp, ret, "DB->cursor");
}
bool blnexist = false;
while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) ==0)
{
int c1, c2, c3;
char *p = (char*)data.data;
char *p1 = p;
char tmpfolder[255] = {0};
char tmpfilename[255] = {0};
memcpy(&c1, p, sizeof(int));
p += sizeof(int);
memset(tmpfolder, 0, 255);
memcpy(tmpfolder, p, c1);
p += c1;
memcpy(&c2, p, sizeof(int));
p += sizeof(int);
memset(tmpfilename, 0, 255);
memcpy(tmpfilename, p, c2);
p += c2;
memcpy(&c3, p, sizeof(int));
p += sizeof(int);
if (strcmp(folder, tmpfolder) == 0
&& strcmp(name, tmpfilename) == 0)
{
char *p2 = &gbuf[0];
memcpy(p2, p1, c1+c2+sizeof(int)*2);
p2 += c1+c2+sizeof(int)*2;
int len = c3 + strlen((char*)databuf);
memcpy(p2, &len, sizeof(len));
p2 += sizeof(len);
memcpy(p2, p, c3);
p2 += c3;
memcpy(p2, databuf, len);
data.data = gbuf;
data.size = 2*1024*1024;
dbcp->c_put(dbcp, &key, &data, DB_CURRENT);
blnexist = true;
break;
}
}
dbcp->c_close(dbcp);
txnp->commit(txnp, 0);
if (!blnexist && ret == DB_NOTFOUND)
{
return false;
}
else
{
return true;
}
}
bool del(DB *dbp, int txn, char* uid, char* folder, char*name)
{
DBC *dbcp;
DBT key, data;
DB_TXN *txnp;
int ret;
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = uid;
key.size = strlen(uid);
txnp = NULL;
dbp->dbenv->txn_begin(dbp->dbenv, NULL, &txnp, 0);
/* Acquire a cursor for the database. */
if ((ret = dbp->cursor(dbp, txnp, &dbcp, 0)) != 0) {
dbp->err(dbp, ret, "DB->cursor");
}
bool blnexist = false;
while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) ==0)
{
int c;
char *p = (char*)data.data;
char tmpfolder[255] = {0};
char tmpfilename[255] = {0};
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmpfolder, 0, 255);
memcpy(tmpfolder, p, c);
p += c;
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmpfilename, 0, 20);
memcpy(tmpfilename, p, c);
if (strcmp(folder, tmpfolder) == 0
&& strcmp(name, tmpfilename) == 0)
{
dbcp->c_del(dbcp, 0);
blnexist = true;
break;
}
}
dbcp->c_close(dbcp);
txnp->commit(txnp, 0);
if (!blnexist && ret == DB_NOTFOUND)
{
return false;
}
else
{
return true;
}
}
bool mkfile(DB *dbp, int txn, char* uid, char* folder, char*name)
{
DBC *dbcp;
DBT key, data;
DB_TXN *txnp;
int ret;
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = uid;
key.size = strlen(uid);
txnp = NULL;
dbp->dbenv->txn_begin(dbp->dbenv, NULL, &txnp, 0);
/* Acquire a cursor for the database. */
if ((ret = dbp->cursor(dbp, txnp, &dbcp, 0)) != 0) {
dbp->err(dbp, ret, "DB->cursor");
}
bool blnexist = false;
while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) ==0)
{
int c;
char *p = (char*)data.data;
char tmpfolder[255] = {0};
char tmpfilename[255] = {0};
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmpfolder, 0, 255);
memcpy(tmpfolder, p, c);
p += c;
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmpfilename, 0, 20);
memcpy(tmpfilename, p, c);
if (strcmp(folder, tmpfolder) == 0
&& strcmp(name, tmpfilename) == 0)
{
p += c;
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(gbuf, 0, 2*1024*1024);
memcpy(gbuf, p, c);
FILE *pFile = fopen(tmpfilename, "w");
if (pFile)
{
fwrite(gbuf, sizeof(char), c, pFile);
fclose(pFile);
}
blnexist = true;
break;
}
}
dbcp->c_close(dbcp);
txnp->commit(txnp, 0);
if (!blnexist && ret == DB_NOTFOUND)
{
return false;
}
else
{
return true;
}
}
bool judge(DB *dbp, int txn, char* uid, char* folder, char*name)
{
DBC *dbcp;
DBT key, data;
DB_TXN *txnp;
int ret;
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = uid;
key.size = strlen(uid);
txnp = NULL;
dbp->dbenv->txn_begin(dbp->dbenv, NULL, &txnp, 0);
/* Acquire a cursor for the database. */
if ((ret = dbp->cursor(dbp, txnp, &dbcp, 0)) != 0) {
dbp->err(dbp, ret, "DB->cursor");
}
bool blnexist = false;
while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) ==0)
{
int c;
char *p = (char*)data.data;
char tmpfolder[255] = {0};
char tmpfilename[255] = {0};
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmpfolder, 0, 255);
memcpy(tmpfolder, p, c);
p += c;
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmpfilename, 0, 20);
memcpy(tmpfilename, p, c);
if (strcmp(folder, tmpfolder) == 0
&& strcmp(name, tmpfilename) == 0)
{
blnexist = true;
break;
}
}
dbcp->c_close(dbcp);
txnp->commit(txnp, 0);
if (!blnexist && ret == DB_NOTFOUND)
{
return false;
}
else
{
return true;
}
}
/*
* get -- loop getting batches of records.
*
*/
int
get(DB *dbp, int txn, int datalen, int num, int dups, int iter, int *countp)
{
DBC *dbcp;
DBT key, data;
DB_TXN *txnp;
u_int32_t len, klen;
int count, flags, i, j, ret;
void *pointer, *dp, *kp;
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = "datianxia";
key.size = strlen("datianxia");
txnp = NULL;
dbp->dbenv->txn_begin(dbp->dbenv, NULL, &txnp, 0);
/* Acquire a cursor for the database. */
if ((ret = dbp->cursor(dbp, txnp, &dbcp, 0)) != 0) {
dbp->err(dbp, ret, "DB->cursor");
}
while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) ==0)
{
int c;
char *p = (char*)data.data;
char tmp[20] = {0};
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmp, 0, 20);
memcpy(tmp, p, c);
printf("%s/n", tmp);
p += c;
memcpy(&c, p, sizeof(int));
p += sizeof(int);
memset(tmp, 0, 20);
memcpy(tmp, p, c);
printf("%s/n", tmp);
}
if (ret == DB_NOTFOUND) {
printf("dfds/n");
}
dbcp->c_close(dbcp);
if (txn)
txnp->commit(txnp, 0);
*countp = count;
return (0);
}
/*
* fill - fill a db
*Since we open/created the db with transactions (potentially),
* we need to populate it with transactions. We'll bundle the puts
* 10 to a transaction.
*/
#definePUTS_PER_TXN1
int
fill(DB_ENV *dbenv, DB *dbp, int txn, int datalen, int num, int dups)
{
DBT key, data;
DB_TXN *txnp;
int count, i, ret;
/*
* Insert records into the database, where the key is the user
* input and the data is the user input in reverse order.
*/
txnp = NULL;
ret = 0;
count = 0;
data.flags = DB_DBT_USERMEM;
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
struct _finddata_t c_file;
char szBuf[255] = {0};
char szDir[255] = {0};
strcpy(szBuf, DESFOLDER);
strcpy(szDir, DESFOLDER);
strcat(szDir, "//");
strcat(szBuf, "//*.*");
long hFile = _findfirst(szBuf, &c_file);
if(hFile == -1L)
return FALSE;
while(_findnext(hFile, &c_file) != -1L)
{
if(strcmp(c_file.name, "..") != 0)
{
if(c_file.attrib & _A_SUBDIR)
{
//do nothing
}
else
{
char *pKey = "datianxia";
key.data = pKey;
key.size = strlen(pKey);
char szFile[255] = {0};
sprintf(szFile, "%s%s", szDir, c_file.name);
int foldersize = sizeof(szDir);
int namesize = sizeof(c_file.name);
char *pFolder;
pFolder = &gbuf[0];
int len = strlen(szDir);
memcpy(gbuf, &len, sizeof(len));
pFolder += sizeof(len);
memcpy(pFolder, szDir, len);
pFolder += len;
len = strlen(c_file.name);
memcpy(pFolder, &len, sizeof(len));
pFolder += sizeof(len);
memcpy(pFolder, c_file.name, len);
pFolder += len;
FILE *pFile = fopen(szFile, "r");
if (!pFile)
return FALSE;
fseek (pFile , 0 , SEEK_END);
int filesize = ftell (pFile);
rewind (pFile);
memcpy(pFolder, &filesize, sizeof(len));
pFolder += sizeof(filesize);
fread(pFolder, sizeof(char), filesize, pFile);
fclose(pFile);
data.data = gbuf;
data.size = 2*1024*1024;
if (i % PUTS_PER_TXN == 0)
{
if (txnp != NULL)
{
ret = txnp->commit(txnp, 0);
txnp = NULL;
if (ret != 0)
goto err;
}
if ((ret =
dbenv->txn_begin(dbenv, NULL, &txnp, 0)) != 0)
goto err;
}
i++;
if (judge(dbp, txn, "datianxia", szDir, c_file.name))
continue;
do {
switch (ret =
dbp->put(dbp, txnp, &key, &data, 0)) {
case 0:
count++;
break;
default:
dbp->err(dbp, ret, "DB->put");
goto err;
}
} while (ret != 0);
}
}
}//end of find file
_findclose( hFile );
if (txnp != NULL)
ret = txnp->commit(txnp, 0);
printf("%d/n", count);
return (ret);
err:if (txnp != NULL)
(void)txnp->abort(txnp);
return (ret);
}
int
main(int argc,
char *argv[])
{
DB *dbp;
DB_ENV *dbenv;
DB_TXN *txnp;
int cache, ch, count, datalen, dups, env, init, iter, num, pagesize;
int ret, rflag, txn;
txnp = NULL;
datalen = 20;
iter = num = 10000;
env = 1;
dups = init = rflag = txn = 0;
pagesize = 65536;
cache = 1000 * pagesize;
env_dir_create();
dbenv = NULL;
if ((dbenv = db_init("BENCH_001", "bench_001", cache, txn)) == NULL)
return (-1);
if (init)
exit(0);
/* Create and initialize database object, open the database. */
if ((ret = db_create(&dbp, dbenv, 0)) != 0) {
fprintf(stderr,
"%s: db_create: %s/n", progname, db_strerror(ret));
exit(EXIT_FAILURE);
}
dbp->set_errfile(dbp, stderr);
dbp->set_errpfx(dbp, progname);
if ((ret = dbp->set_pagesize(dbp, pagesize)) != 0) {
dbp->err(dbp, ret, "set_pagesize");
goto err1;
}
if ((ret = dbp->set_flags(dbp, DB_DUP)) != 0) {
dbp->err(dbp, ret, "set_flags");
goto err1;
}
if ((ret = dbenv->txn_begin(dbenv, NULL, &txnp, 0)) != 0)
goto err1;
if ((ret = dbp->open(
dbp, txnp, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
dbp->err(dbp, ret, "%s: open", DATABASE);
if (txnp != NULL)
(void)txnp->abort(txnp);
goto err1;
}
ret = txnp->commit(txnp, 0);
txnp = NULL;
if (ret != 0)
goto err1;
if ((ret = fill(dbenv, dbp, txn, datalen, num, dups)) != 0)
goto err1;
/**/
del(dbp, txn, "datianxia", "E://test//", "update.ini");
mkfile(dbp, txn, "datianxia", "E://test//","in.txt");
modify(dbp, txn, "datianxia", "E://test//","in.txt", "datianxiatest");
mkfile(dbp, txn, "datianxia", "E://test//","in.txt");
append(dbp, txn, "datianxia", "E://test//", "in.txt", "dfdsfdsf");
mkfile(dbp, txn, "datianxia", "E://test//","in.txt");
/* If no environment, fill the cache. */
if ((ret =
get(dbp, txn, datalen, num, dups, iter, &count)) != 0)
goto err1;
/* Close everything down. */
if ((ret = dbp->close(dbp, rflag ? DB_NOSYNC : 0)) != 0) {
fprintf(stderr,
"%s: DB->close: %s/n", progname, db_strerror(ret));
return (1);
}
return (ret);
err1:(void)dbp->close(dbp, 0);
return (1);
}
void
usage()
{
(void)fprintf(stderr, "usage: %s %s/n/t%s/n",
progname, "[-EIRT] [-c cachesize] [-d dups]",
"[-i iterations] [-l datalen] [-n keys] [-p pagesize]");
exit(EXIT_FAILURE);
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 无法定位程序输入点openssl_sk_new_reserve于动态链接库解决办法
解决办法:copy these files from Anaconda3/Library/bin to Anaconda3/DLLs : libcrypto-1_1-x64.dll libssl-1_1-x64.dll从Anaconda3/Library/bin中复制两个文件:libcrypto-1_1-x64.dll和 libssl-1_1-x64.dll到Anaconda3/DLLs中,注意文件要备份哦,不要拷贝错了!!!...
2024/4/17 0:09:06 - 【转】xp修复win7启动项方法
xp与win7双系统,重装xp而不影响win7的方法 处于过渡时期,装双系统通常是很必要的,我选择了经典的XP和win7rtm做成双系统,分别位于两个盘中。昨天准备在xp中装vc60,结果发现那个xp有问题。看来必须重装了,但是大家都知道对于windows系统装多系统的顺序是从低级到高级,否则…...
2024/4/19 9:44:26 - 【Swoole扩展】基础到进阶
首先我们了解一下学习Swoole需要掌握哪些知识:首先是Linux的多进程和线程切换,还有就是消息队列、共享内存等相关进程通信 然后是socket编程然后是底层协议TCP/IP协议,TCP/UDP协议IO复用 ①elect/poll/epoll ②基于select/epoll实现的事件循环,Reactor模型 ③可读事件、…...
2024/4/14 21:32:34 - 病毒木马查杀实战第007篇:熊猫烧香之逆向分析(下)
前言 这次我们会接着上一篇的内容继续对病毒进行分析。分析中会遇到一些不一样的情况,毕竟之前的代码我们只要按照流程顺序一步一步往下走,就能够弄清楚病毒的行为,但是在接下来的代码中,如果依旧如此,在某些分支中的重要代码就执行不到了,所以我们需要采取一些策…...
2024/4/24 22:48:24 - “Nimaya(熊猫烧香)”病毒分析报告
“熊猫烧香”采用Delphi编写 该病毒的主要行为:一.传播 1.本地磁盘感染病毒对系统中所有除了盘符为A,B的磁盘类型为DRIVE_REMOTE,DRIVE_FIXED的磁盘进行文件遍历感染注:不感染文件大小超过10485760字节以上的.(病毒将不感染如下目录的文件):Microsoft FrontpageMovie MakerM…...
2024/4/24 22:48:16 - linux 安装 swoole扩展
swoole的官网请见:http://www.swoole.com/ Swoole是:PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole虽然是标准的PHP扩展,实际上与…...
2024/4/24 22:48:15 - BDB使用总结
当对数据库设置了DbFlags.Dup后,允许重复的键值, 当原先数据库是设计了Dup的格式的文件,如果使用不设置Dup标记的默认方式打开,向其中添加同键的操作不会出错 但是当原先数据库采用的是默认格式的文件,如果使用标记为Dup的打开方式,则会报错。...
2024/4/24 22:48:13 - TFS2010 建立 Team Project 發生 TF218027 和 TF30063 時…
============ TFS 基本安裝時 =======================基本上只要在 TFS 2010 上設定權限就可以了! :) 是不會發生此問題的 若是想轉成 「完整安裝」的話,請參考 http://www.dotblogs.com.tw/franma/archive/2010/11/18/19523.aspx============ TFS 完整安裝時 ========…...
2024/4/24 22:48:12 - my资源列表一 (csdn 99% 0分资源下载)
ue ultraedit 20.00.0.1056editplus 3.60.870jrebel 5.4.2myeclipse 2014 破解版补丁TeamViewer 9.0.24848office 强制卸载 官方版Uninstall Tool 3.3.2 Build 5314Xshell 4 Build 0128vs2008 官方完全卸载工具vs2010 强力卸载工具FlashFXP 5.0.0.3681 ftp工具Remote Desktop O…...
2024/4/24 22:48:11 - Python开源软件大全(内附源码)
写个web服务,可以用python;写个服务器脚本,可以用python;写个桌面客户端,可以用python;做机器学习数据挖掘,也可以用python……用处这么多,你是不是也想看看Python开源软件大全都有哪些内容?1.CheungSSH它是一款中国人自主研发的Linux运维自动化管理服务器软件,简单,不…...
2024/4/24 22:48:17 - 如何看待开源软件的知识产权问题——陆首群
近年来,开源软件在国内外发展很快,正在走向成熟,开始与传统私有软件形成并存的态势,甚至在某些领域内渐成主流。关于开源软件知识产权的纠纷也已浮出水面。在国内,也出现了一些违约、违法的问题,多数人首先在认识上存在误区:如对自由/开源软件性质和特征的界定,对开源软…...
2024/4/24 22:48:10 - crfclust.bdb占用巨大空间导致磁盘满
crfclust.bdb占用巨大空间导致磁盘满 问题分析: 一上班就接到用户现场电话说有一套RAC数据库无法访问,随即登陆上去首先查看了磁盘空间,发现两个节点的/DBSoft目录已满,首先怀疑的是告警日志文件和$ORACLE_HOME/dbs 产生的归档日志文件没有删导致,经过检查后事实否认了…...
2024/4/24 22:48:09 - 【无涯契】【四】
昨天早上立下的目标,只看完了第八章、第九章,真的是很超乎预想。不是由于我倦怠,也不是由于我速度慢,而是因为发生了一些突发事件。昨天中午过去发哥那边帮他装系统,一装就是装了四个小时,而且前三个小时还没进入装系统的主题。先介绍一下发哥的背景:笔记本电脑。win xp…...
2024/4/24 22:48:10 - TFS2010 Team Project Collections
Team Foundation Server 2010有一个改进比较大的地方就是Team Project Collections,在TFS 2010 在Team Project之上,多了一个Collection。试着添加其它的Team Project Collection: 打开TFS的管理控制台Team Foundation Server Administrator Console:选择Team Project Coll…...
2024/4/24 22:48:06 - swoole开发多人在线游戏新手教程
玩过LOL人很多 就拿LOL来说吧开始游戏 就会开始匹配队友 1 每次点击开始游戏的人 都要存入数据库 socketid和游戏昵称 然后1个状态 是否游戏中 匹配当然就是读取数据库不在游戏中的人拉进入游戏 2 这个地方需要更新下 游戏中状态 然后更新对应的房间名游戏过程中 3 这个需要…...
2024/4/24 22:48:05 - 手工查杀“熊猫烧香”新病毒
近日,一个名为“熊猫烧香”(Worm.WhBoy.h)的蠕虫病毒正在互联网上疯狂传播,该病毒为“威金”蠕虫病毒新变种,自从去年被截获以来,已经感染了超过30万台电脑,众多网民相继受到其危害。 目前该病毒正处于急速变种期,仅11月份至今,变种数量已达10几个,变种速度之快,影…...
2024/4/24 22:48:05 - OpenLDAP使用BDB时的一些配置和维护方法
为什么80%的码农都做不了架构师?>>> 一、 配置部份在基本配置完成之后,可以在slapd.conf设置一些提高安全和效率的选项 cachesize 5000 checkpoint 1024 5 cachesize是ldap在内存中缓存的记录条数。这个缓存是openldap自己维护的,与bdb库无关。 为了…...
2024/4/24 22:48:03 - 简单操作拥有Win7/XP双系统
原文地址:http://zt.ijinshan.com/ws_zmzsxt.shtml摘要:有时我们在Win7和XP的选择之中感到难以取舍,也希望发挥它们的不同优势。在这种情况下,双系统对我们来说会是一种非常不错的选择。那么,双系统怎么装呢?本专题将以XP和Win7双系统为例,来讲解怎么装双系统。 关键词:…...
2024/4/24 22:48:06 - win8安装tfs2010提示未启用iis6.0未启用兼容模式需要静态内容组件
笔者的电脑由于安装TFS2010就提示这个错误,当时网上也没有很好地办法,重装iis组件也不行。如果你同样没有找到更好的办法,建议安装tfs2012,但在vs2010使用tfs2012是无法创建团队项目的(以为是权限问题,整了大半天才知道)创建项目只能在vs2012里,但可以在vs2010中使用。建…...
2024/4/24 22:48:01 - Swoole整合ThinkPHP3.2系列教程一
序言好久不更博客了,我几乎都忘记了这个博客的存在了。就在上周无意间登录以后,发现好多人咨询我关于之前博客的问题。吓得我虎躯一震,卧槽?真的有人看。。。非常抱歉,没有及时回复那些人,我真的都忘记这回事了。以后我会不定期登录来看一下的。这次我来记录一下关于swoo…...
2024/4/16 18:46:53
最新文章
- C++笔试强训day8
目录 1.求最小公倍数 2.数组中的最⻓连续⼦序列 3.字母收集 1.求最小公倍数 链接 这就是一道普通的数学题。 最大公倍数 A * B / A 与 B之间的最大公约数。 最大公约数求法:辗转相除法(或者可以用<numeric>头文件中的gcd) #include <iostream> us…...
2024/4/27 23:21:29 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Go语言map、slice、channel底层实现(go面试)
slice 切片是一个引用类型,其底层实现是一个结构体,包含以下字段: ptr:一个指向底层数组的指针,指针指向数组的第一个元素。 len:切片当前包含的元素数量。 cap:切片的容量,即底层…...
2024/4/24 19:38:16 - 北航2023年考研机试题
【问题描述】一共6个手机基站,具有记录手机连接基站的能力,6个手机基站分别为ABCDEF,他们具有自己的覆盖范围且任何两个基站的覆盖范围不想交,基站保存的手机登陆日志包括手机号(11位,用字符串保存…...
2024/4/23 6:26:10 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/26 21:56:58 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/25 18:39:16 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/26 22:01:59 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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