一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC来编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。

  DLL的背景知识

  静态链接和动态链接

  当前链接的目标代码(.obj)如果引用了一个函数却没有定义它,链接程序可能通过两种途径来解决这种从外部对该函数的引用:

  静态链接

  链接程序搜索一个或者多个库文件(标准库.lib),直到在某个库中找到了含有所引用函数的对象模块,然后链接程序把这个对象模块拷贝到结果可执行文件(.exe)中。链接程序维护对该函数的所有引用,使它们指向该程序中现在含有该函数拷贝的地方。

  动态链接

  链接程序也是搜索一个或者多个库文件(输入库.lib),当在某个库中找到了所引用函数的输入记录时,便把输入记录拷贝到结果可执行文件中,产生一次对该函数的动态链接。这里,输入记录不包含函数的代码或者数据,而是指定一个包含该函数代码以及该函数的顺序号或函数名的动态链接库。

  当程序运行时,Windows装入程序,并寻找文件中出现的任意动态链接。对于每个动态链接,Windows装入指定的DLL并且把它映射到调用进程的虚拟地址空间(如果没有映射的话)。因此,调用和目标函数之间的实际链接不是在链接应用程序时一次完成的(静态),相反,是运行该程序时由Windows完成的(动态)。

  这种动态链接称为加载时动态链接。还有一种动态链接方式下面会谈到。

  动态链接的方法

  链接动态链接库里的函数的方法如下:

  加载时动态链接(Load_time dynamic linking)

  如上所述。Windows搜索要装入的DLL时,按以下顺序:

  应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。

  运行时动态链接(Run_time dynamic linking)

  程序员使用LoadLibrary把DLL装入内存并且映射DLL到调用进程的虚拟地址空间(如果已经作了映射,则增加DLL的引用计数)。首先,LoadLibrary搜索DLL,搜索顺序如同加载时动态链接一样。然后,使用GetProcessAddress得到DLL中输出函数的地址,并调用它。最后,使用FreeLibrary减少DLL的引用计数,当引用计数为0时,把DLL模块从当前进程的虚拟空间移走。

  输入库(.lib):

  输入库以.lib为扩展名,格式是COFF(Common object file format)。COFF标准库(静态链接库)的扩展名也是.lib。COFF格式的文件可以用dumpbin来查看。

  输入库包含了DLL中的输出函数或者输出数据的动态链接信息。当使用MFC创建DLL程序时,会生成输入库(.lib)和动态链接库(.dll)。

  输出文件(.exp)

  输出文件以.exp为扩展名,包含了输出的函数和数据的信息,链接程序使用它来创建DLL动态链接库。

  映像文件(.map)

  映像文件以.map为扩展名,包含了如下信息:

  模块名、时间戳、组列表(每一组包含了形式如section::offset的起始地址,长度、组名、类名)、公共符号列表(形式如section::offset的地址,符号名,虚拟地址flat address,定义符号的.obj文件)、入口点如section::offset、fixup列表。

  lib.exe工具

  它可以用来创建输入库和输出文件。通常,不用使用lib.exe,如果工程目标是创建DLL程序,链接程序会完成输入库的创建。

  更详细的信息可以参见MFC使用手册和文档。

  链接规范(Linkage Specification )

  这是指链接采用不同编程语言写的函数(Function)或者过程(Procedure)的链接协议。MFC所支持的链接规范是“C”和“C++”,缺省的是“C++”规范,如果要声明一个“C”链接的函数或者变量,则一般采用如下语法:

  #if defined(__cplusplus)

  extern "C"

  {

  #endif

  //函数声明(function declarations)

  …

  //变量声明(variables declarations)

  #if defined(__cplusplus)

  }

  #endif

  所有的C标准头文件都是用如上语法声明的,这样它们在C++环境下可以使用。

  修饰名(Decoration name)

  “C”或者“C++”函数在内部(编译和链接)通过修饰名识别。修饰名是编译器在编译函数定义或者原型时生成的字符串。有些情况下使用函数的修饰名是必要的,如在模块定义文件里头指定输出“C++”重载函数、构造函数、析构函数,又如在汇编代码里调用“C””或“C++”函数等。

  修饰名由函数名、类名、调用约定、返回类型、参数等共同决定。

  调用约定

  调用约定(Calling convention)决定以下内容:函数参数的压栈顺序,由调用者还是被调用者把参数弹出栈,以及产生函数修饰名的方法。MFC支持以下调用约定:

  _cdecl

  按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于“C”函数或者变量,修饰名是在函数名前加下划线。对于“C++”函数,有所不同。

  如函数void test(void)的修饰名是_test;对于不属于一个类的“C++”全局函数,修饰名是?test@@ZAXXZ。

  这是MFC缺省调用约定。由于是调用者负责把参数弹出栈,所以可以给函数定义个数不定的参数,如printf函数。

  _stdcall

  按从右至左的顺序压参数入栈,由被调用者把参数弹出栈。对于“C”函数或者变量,修饰名以下划线为前缀,然后是函数名,然后是符号“@”及参数的字节数,如函数int func(int a, double b)的修饰名是_func@12。对于“C++”函数,则有所不同。

  所有的Win32 API函数都遵循该约定。

  _fastcall

  头两个DWORD类型或者占更少字节的参数被放入ECX和EDX寄存器,其他剩下的参数按从右到左的顺序压入栈。由被调用者把参数弹出栈,对于“C”函数或者变量,修饰名以“@”为前缀,然后是函数名,接着是符号“@”及参数的字节数,如函数int func(int a, double b)的修饰名是@func@12。对于“C++”函数,有所不同。

  未来的编译器可能使用不同的寄存器来存放参数。

  thiscall

  仅仅应用于“C++”成员函数。this指针存放于CX寄存器,参数从右到左压栈。thiscall不是关键词,因此不能被程序员指定。

  naked call

  采用1-4的调用约定时,如果必要的话,进入函数时编译器会产生代码来保存ESI,EDI,EBX,EBP寄存器,退出函数时则产生代码恢复这些寄存器的内容。naked call不产生这样的代码。

  naked call不是类型修饰符,故必须和_declspec共同使用,如下:

  __declspec( naked ) int func( formal_parameters )

  {

  // Function body

  }

  过时的调用约定

  原来的一些调用约定可以不再使用。它们被定义成调用约定_stdcall或者_cdecl。例如:

  #define CALLBACK __stdcall

  #define WINAPI __stdcall

  #define WINAPIV __cdecl

  #define APIENTRY WINAPI

  #define APIPRIVATE __stdcall

  #define PASCAL __stdcall

  表7-1显示了一个函数在几种调用约定下的修饰名(表中的“C++”函数指的是“C++”全局函数,不是成员函数),函数原型是void CALLTYPE test(void),CALLTYPE可以是_cdecl、_fastcall、_stdcall。

  表7-1 不同调用约定下的修饰名

  

  调用约定

  extern “C”或.C文件

  .cpp, .cxx或/TP编译开关

  _cdecl

  _test

  ?test@@ZAXXZ

  _fastcall

  @test@0

  ?test@@YIXXZ

  _stdcall

  _test@0

  ?test@@YGXXZ

  MFC的DLL应用程序的类型

  静态链接到MFC的规则DLL应用程序

  该类DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。输入函数有如下形式:

  extern "C" EXPORT YourExportedFunction( );

  如果没有extern “C”修饰,输出函数仅仅能从C++代码中调用。

  DLL应用程序从CWinApp派生,但没有消息循环。

  动态链接到MFC的规则DLL应用程序

  该类DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。但是,所有从DLL输出的函数应该以如下语句开始:

  AFX_MANAGE_STATE(AfxGetStaticModuleState( ))

  此语句用来正确地切换MFC模块状态。关于MFC的模块状态,后面第9章有详细的讨论。

  其他方面同静态链接到MFC的规则DLL应用程序。

  扩展DLL应用程序

  该类DLL应用程序动态链接到MFC,它输出的函数仅可以被使用MFC且动态链接到MFC的应用程序使用。和规则DLL相比,有以下不同:

  它没有一个从CWinApp派生的对象;

  它必须有一个DllMain函数;

  DllMain调用AfxInitExtensionModule函数,必须检查该函数的返回值,如果返回0,DllMmain也返回0;

  如果它希望输出CRuntimeClass类型的对象或者资源(Resources),则需要提供一个初始化函数来创建一个CDynLinkLibrary对象。并且,有必要把初始化函数输出。

  使用扩展DLL的MFC应用程序必须有一个从CWinApp派生的类,而且,一般在InitInstance里调用扩展DLL的初始化函数。

  为什么要这样做和具体的代码形式,将在后面9.4.2节说明。

  MFC类库也是以DLL的形式提供的。通常所说的动态链接到MFC 的DLL,指的就是实现MFC核心功能的MFCXX.DLL或者MFCXXD.DLL(XX是版本号,XXD表示调试版)。至于提供OLE(MFCOXXD.DLL或者MFCOXX0.DLL)和NET(MFCNXXD.DLL或者MFCNXX.DLL)服务的DLL就是动态链接到MFC核心DLL的扩展DLL。

  其实,MFCXX.DLL可以认为是扩展DLL的一个特例,因为它也具备扩展DLL的上述特点。

  DLL的几点说明

  DLL应用程序的入口点是DllMain。

  对程序员来说,DLL应用程序的入口点是DllMain。

  DllMain负责初始化(Initialization)和结束(Termination)工作,每当一个新的进程或者该进程的新的线程访问DLL时,或者访问DLL的每一个进程或者线程不再使用DLL或者结束时,都会调用DllMain。但是,使用TerminateProcess或TerminateThread结束进程或者线程,不会调用DllMain。

  DllMain的函数原型符合DllEntryPoint的要求,有如下结构:

  BOOL WINAPI DllMain (HANDLE hInst,

  ULONG ul_reason_for_call,LPVOID lpReserved)

  {

  switch( ul_reason_for_call ) {

  case DLL_PROCESS_ATTACH:

  ...

  case DLL_THREAD_ATTACH:

  ...

  case DLL_THREAD_DETACH:

  ...

  case DLL_PROCESS_DETACH:

  ...

  }

  return TRUE;

  }

  其中:

  参数1是模块句柄;

  参数2是指调用DllMain的类别,四种取值:新的进程要访问DLL;新的线程要访问DLL;一个进程不再使用DLL(Detach from DLL);一个线程不再使用DLL(Detach from DLL)。

  参数3保留。

  如果程序员不指定DllMain,则编译器使用它自己的DllMain,该函数仅仅返回TRUE。

  规则DLL应用程序使用了MFC的DllMain,它将调用DLL程序的应用程序对象(从CWinApp派生)的InitInstance函数和ExitInstance函数。

  扩展DLL必须实现自己的DllMain。

  _DllMainCRTStartup

  为了使用“C”运行库(CRT,C Run time Library)的DLL版本(多线程),一个DLL应用程序必须指定_DllMainCRTStartup为入口函数,DLL的初始化函数必须是DllMain。

  _DllMainCRTStartup完成以下任务:当进程或线程捆绑(Attach)到DLL时为“C”运行时的数据(C Runtime Data)分配空间和初始化并且构造全局“C++”对象,当进程或者线程终止使用DLL(Detach)时,清理C Runtime Data并且销毁全局“C++”对象。它还调用DllMain和RawDllMain函数。

  RawDllMain在DLL应用程序动态链接到MFC DLL时被需要,但它是静态的链接到DLL应用程序的。在讲述状态管理时解释其原因。

  DLL的函数和数据

  DLL的函数分为两类:输出函数和内部函数。输出函数可以被其他模块调用,内部函数在定义它们的DLL程序内部使用。

  虽然DLL可以输出数据,但一般的DLL程序的数据仅供内部使用。

  DLL程序和调用其输出函数的程序的关系

  DLL模块被映射到调用它的进程的虚拟地址空间。

  DLL使用的内存从调用进程的虚拟地址空间分配,只能被该进程的线程所访问。

  DLL的句柄可以被调用进程使用;调用进程的句柄可以被DLL使用。

  DLL使用调用进程的栈。

  DLL定义的全局变量可以被调用进程访问;DLL可以访问调用进程的全局数据。使用同一DLL的每一个进程都有自己的DLL全局变量实例。如果多个线程并发访问同一变量,则需要使用同步机制;对一个DLL的变量,如果希望每个使用DLL的线程都有自己的值,则应该使用线程局部存储(TLS,Thread Local Strorage)。

  输出函数的方法

  传统的方法

  在模块定义文件的EXPORT部分指定要输入的函数或者变量。语法格式如下:

  entryname[=internalname] [@ordinal[NONAME]] [DATA] [PRIVATE]

  其中:

  entryname是输出的函数或者数据被引用的名称;

  internalname同entryname;

  @ordinal表示在输出表中的顺序号(index);

  NONAME仅仅在按顺序号输出时被使用(不使用entryname);

  DATA表示输出的是数据项,使用DLL输出数据的程序必须声明该数据项为_declspec(dllimport)。

  上述各项中,只有entryname项是必须的,其他可以省略。

  对于“C”函数来说,entryname可以等同于函数名;但是对“C++”函数(成员函数、非成员函数)来说,entryname是修饰名。可以从.map映像文件中得到要输出函数的修饰名,或者使用DUMPBIN /SYMBOLS得到,然后把它们写在.def文件的输出模块。DUMPBIN是VC提供的一个工具。

  如果要输出一个“C++”类,则把要输出的数据和成员的修饰名都写入.def模块定义文件。

  在命令行输出

  对链接程序LINK指定/EXPORT命令行参数,输出有关函数。

  使用MFC提供的修饰符号_declspec(dllexport)

  在要输出的函数、类、数据的声明前加上_declspec(dllexport)的修饰符,表示输出。MFC提供了一些宏,就有这样的作用,如表7-2所示。

  表7-2 MFC定义的输入输出修饰符

  宏名称

  宏内容

  AFX_CLASS_IMPORT

  __declspec(dllexport)

  AFX_API_IMPORT

  __declspec(dllexport)

  AFX_DATA_IMPORT

  __declspec(dllexport)

  AFX_CLASS_EXPORT

  __declspec(dllexport)

  AFX_API_EXPORT

  __declspec(dllexport)

  AFX_DATA_EXPORT

  __declspec(dllexport)

  AFX_EXT_CLASS

  #ifdef _AFXEXT

  AFX_CLASS_EXPORT

  #else

  AFX_CLASS_IMPORT

  AFX_EXT_API

  #ifdef _AFXEXT

  AFX_API_EXPORT

  #else

  AFX_API_IMPORT

  AFX_EXT_DATA

  #ifdef _AFXEXT

  AFX_DATA_EXPORT

  #else

  AFX_DATA_IMPORT

  AFX_EXT_DATADEF

  像AFX_EXT_CLASS这样的宏,如果用于DLL应用程序的实现中,则表示输出(因为_AFX_EXT被定义,通常是在编译器的标识参数中指定该选项/D_AFX_EXT);如果用于使用DLL的应用程序中,则表示输入(_AFX_EXT没有定义)。

  要输出整个的类,对类使用_declspec(_dllexpot);要输出类的成员函数,则对该函数使用_declspec(_dllexport)。如:

  class AFX_EXT_CLASS CTextDoc : public CDocument

  {

  …

  }

  extern "C" AFX_EXT_API void WINAPI InitMYDLL();

  这几种方法中,最好采用第三种,方便好用;其次是第一种,如果按顺序号输出,调用效率会高些;最次是第二种。

  在“C++”下定义“C”函数,需要加extern “C”关键词。输出的“C”函数可以从“C”代码里调用。

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

相关文章

  1. Linux下U盘格式化、分区

    Linux:U盘删除分区:#fdisk /dev/sdb /*进入fdisk命令操作空间*/ #Command (m for help): m /*命令查看*/ Command action a toggle a bootable flag #设置引导扇区 b edit bsd disklabel #编辑卷标(linux下使用的卷标bs…...

    2024/4/14 21:02:26
  2. MVC中HTML控件设为只读readonly

    1.下拉框设为只读试了试用这个有效:@Html.DropDownListFor(model => model.SecondDevelopment, (SelectList)ViewBag.swseconddevelopment, new { disabled = "disabled" }) 2.文本框: @Html.TextBoxFor(model => model.ProjectLeaderName, new { @readonly …...

    2024/4/24 23:41:47
  3. 一键离线地图发布(工具软件下载) 使用教程

    一键离线地图发布(工具软件下载) 使用教程谷歌离线地图API接口文档及接口调用实例百度离线地图发布 教程 手机离线地图发布——Oruxmaps制作发布高清卫星离线地图谷歌离线地图发布API解析说明:1. 当前版本支持 谷歌电子/卫星地图瓦片、高德地图、阿里云地图、超图、腾讯地…...

    2024/4/24 23:41:46
  4. 新浪博客“网络繁忙请稍后再试”

    发博文提示网络繁忙请稍后再试August 17摘要:经常用新浪博客发博文的人应该会遇到一个问题,那就是有时会提示网络繁忙请稍后再试,同时连保存草稿也不行,这时候该怎么办呢? 方法/步骤 我们假定真的是由于网络繁忙所导致的 对于想发表而不得的博文,我们可以先把他复制到word或者…...

    2024/4/24 23:41:45
  5. linux将硬盘格式化为xfs文件系统

    1.格式化: mkfs -t xfs /dev/sda 2.硬盘挂载: No.1: mkdir /sda No.2:mount /dev/sda No.3:mount /dev/sda /sda 查询是否成功: df -T...

    2024/4/24 23:41:47
  6. opencv 入门教程, ubuntu安装,及python 下简单使用

    opencv 官网:http://opencv.org/opencv python-api地址: http://opencv-python-tutroals.readthedocs.io完成4个有趣实用的小例子:- 延时摄影小程序- 视频中截屏采样的小程序- 图片数据增加(data augmentation)的小工具- 物体检测框标注小工具其中后两个例子的代码可以在…...

    2024/4/24 23:41:43
  7. ARM汇编与ARM GNU汇编 区别

    一、想学汇编,at&t汇编与ARM汇编的区别?问:想学汇编语言,因为现在用的是linux系统(ubuntu 11.04),so 有一本《汇编语言程序设计》马朝晖译,可惜淘宝、当当、京东等都没货,淘宝上只有盗版的。 ARM的书倒是挺多(但是我不是搞嵌入式的),二者有什么区别?语法一样否?汇…...

    2024/4/24 23:41:42
  8. 最小相位系统与全通系统

    最小相位系统:所有的零点都在单位圆内的传输函数即为最小相位系统。或者说,一个系统函数为H(Z)的系统,如果本身和其逆系统均为因果稳定系统,那么H(Z)即为最小相位系统。判断方法也很简单:如果一个H(Z)的分母的解都小于1,这样的系统就是最小相位系统。另外提一句,所有的零…...

    2024/4/24 23:41:41
  9. linux下emmc自动格式化和自动挂载

    手上有个板卡,外接了一个emmc,默认识别为/dev/mmcblk1。想用它的话需要格式化,以及设置开机自动挂载。手动格式化fdisk /dev/mmcblk1Command (m for help): m ---输入m获取fdisk工具的使用说明 Command action a toggle a bootable flag b edit bsd disklabel c t…...

    2024/4/24 23:41:40
  10. UniDAC使用教程(七):断开模式

    下载UniDAC最新版本Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) , Mac OS X, iOS, Android, Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小…...

    2024/4/26 8:46:12
  11. 如何从万能下载器导出省市行政区划

    很多使用万能地图下载器的朋友知道万能地图下载器可以下载谷歌、百度、天地图、卫星、电子、地形、海图等地图,但却是只是其一不知其二,其实万能地图下载器还可以下载矢量数据,没错,就是矢量数据,可以下载,全国的国界、省界、市界和县界。 工具/原料水经注万能地图下载器…...

    2024/4/24 23:41:40
  12. mvc 下拉列表 DropDownList 两种绑定方式

    $("#id").val("请选择");前台 @Html.DropDownListFor(model=> model.lishudanweiid, ViewBag.DevNameList asIEnumerable<SelectListItem>, "请选择", new {@class = "form-control" }) 后台 1绑定数据源 :ViewBag.DevName…...

    2024/4/24 23:41:37
  13. 012_《Delphi程序调试参考手册》

    《Delphi程序调试参考手册》 Delphi 教程 系列书籍 (012) 《Delphi程序调试参考手册》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf作原书名:Tomes of Delphi:Developer’s Guide to Troubleshooting 原出版社: WORDWARE 作者: Clay Shannon 译者: 王晓云 林…...

    2024/4/24 23:41:36
  14. ARM Linux学习,从宿主机传程序到ARM——环境搭建2

    上一篇文章中介绍了如何通过一根交叉网线将PC和ARM板组成局域网,网络环境搭建完成之后,本文将继续介绍如何在宿主机编译程序,然后传到ARM开发板上运行,即交叉编译。 在PC上,用gcc编译生成的程序,在ARM上运行会出错,在PC机上要使用交叉编译链arm-linux-gcc对程序进行编译…...

    2024/4/24 23:41:35
  15. Ubuntu 16.04与Win10双系统双硬盘安装图解

    以前玩过ubuntu系统,后来很长时间没碰忘记了。突然想起我的电脑配置还可以,于是这几天又开始折腾了。折腾了2天,果然是忘记了,装了无数次,还删了个数据盘,最要命的把我的windows系统给毁掉了一次。我的个神啊,重装系统,重新安装工作需要的软件,心里在滴血。 故,特记录…...

    2024/4/26 11:57:35
  16. Ubuntu下格式化U盘的方法(基于格式化命令)

    通常Ubuntu下格式化磁盘和Windows系统下差不多;先找到U盘图标,右击就有格式化了。但是有一种情况就比较揪心,就是当分区出现问题而不能识别的时候,这时在Win下要专业的工具才能格式化,而在Ubuntu下可以借助命令模式强行格式化。首先执行sudo fdisk -l查看你的u盘的序号,通…...

    2024/4/24 23:41:33
  17. bigemap地图下载器的优势

    BIGEMAP功能对比分析图| | | | | |【地图服务行业专家】BIGEMAP是全行业公认的【优秀知名软件】、高新技术企业、国内最早从事GIS领域研发的公司,为全国各行业提供GIS领域的软件…...

    2024/4/24 23:41:33
  18. Asp.Net MVC HTML Helper 中 LabelFor TextBoxFor的一些理解

    在视图中经常会使用 HTML扩展来进行界面的编写,一些元素如下所示:HTML Element Helpers: Html.TextBoxFor()Html.TextAreaFor()Html.DropDownListFor()Html.CheckboxFor()Html.RadioButtonFor()Html.ListBoxFor()Html.PasswordFor()Html.HiddenFor()Html.LabelFor() Other He…...

    2024/4/14 21:02:33
  19. LINUX使用未格式化的硬盘

    LINUX系统中,未格式化的硬盘是无法使用的,但是没有分区表也可以使用,当成U盘使用 使用方式: 查看是否已经识别该硬盘:fdisk -l 格式化硬盘文件格式:mkfs.ext3 /dev/sda6 用mount命令把该硬盘绑定到新建的目录就可以用该硬盘来保存数据:mount /de/sda6 /mnt...

    2024/4/16 10:41:54
  20. asp.net MVC几种绑定下拉列表的写法

    今天写写在asp.net MVC中几种绑定下拉列表的写法。 1.在前端写死数据: @Html.DropDownListFor(m=>m.Sex,new SelectList(new List<SelectListItem>(){new SelectListItem(){Text="男", Value="1"},new SelectListItem(){Text="女", Va…...

    2024/4/18 9:14:58

最新文章

  1. Android某钉数据库的解密分析

    声明 1 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 目的 1 解密app数据库&#xff0c;用数据库软件打开查看信息内容 入手…...

    2024/4/27 0:35:21
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Web大并发集群部署之集群介绍

    一、传统web访问模型 传统web访问模型完成一次请求的步骤 1&#xff09;用户发起请求 2&#xff09;服务器接受请求 3&#xff09;服务器处理请求&#xff08;压力最大&#xff09; 4&#xff09;服务器响应请求 传统模型缺点 单点故障&#xff1b; 单台服务器资源有限&…...

    2024/4/23 0:10:31
  4. 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践

    腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践 文章目录 腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践引言《2023腾讯云容器和函数计算技术实践精选集》整体评价特色亮点分析Serverless与Kubernetes的…...

    2024/4/23 0:21:15
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

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

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

    2024/4/25 18:39:23
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/4/25 18:39:22
  11. 【外汇早评】美欲与伊朗重谈协议

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

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

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

    2024/4/25 16:48:44
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/26 16:00:35
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

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

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

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/26 22:01:59
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/25 18:38:58
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/25 18:38:57
  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