windows程序基础

一、windows程序基础

1. Windows程序的特点

1)用户界面统一、友好
2)支持多任务:允许用户同时运行多个应用程序(窗口)
3)独立于设备的图形操作
        使用图形设备接口( GDI, Graphics Device Interface )屏蔽了不同硬件设备的差异,提供了设备无关的图形输出能力
4)队列化消息输入,支持队列特征的消息驱动模型
        把从键盘、鼠标等输入设备接收的输入信息放入应用程序的队列中; Windows操作系统管理队列;应用程序需要输入信息时,不读硬件端口,只读消息队列。
5)事件驱动的程序设计
        - Windows程序由事件的发展控制,允许程序的用户用各种合理的顺序来安排程序的流程。
6)资源共享
        -各个应用程序共享系统提供的资源,包括设备上下文、画刷、画笔、字体、对话框、图标、定时器、通信端口。

7)程序和资源分开
        -菜单、对话框、位图等可视对象被单独分离出来加公的,全部资源定义都放在资源文件中(通常以.rc为后缀名)
8)支持应用程序间的数据交换

2. 一个简单的Windows应用程序
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINS TANCE
hPrevInstance, LPSTR IpCmdLine, int nCmdShow)
{
MessageBox (NULL, "你好,我的Visual C++世界! ", "问候",MB_ OKCANCEL);
return 0 ;
}

运行结果:

3.事件及事件驱动

●Windows系统也叫事件驱动的系统。当用户按下一个键、移动鼠标或单击鼠标按钮时,计算机通知Windows系统已经发生了一一个事件,以及事件的种类、发生的时间、发生的位置(如坐标值)。
●事件通常以下列三种方式产生:
        -通过输入设备,如键盘和鼠标;
        -通过屏幕上可视的对象,如菜单、工具栏按钮、动条和对话框上的控件;
        -来自Windows内部,如当一个后面的窗口显示到窗口前面时。

基于事件驱动的程序模型

 4.消息

        ●当Windows捕获一 条事件后 ,它会编写一条消息,将相关信息放入一个数据结构MSG中,然后将包含此数据结构的消息发给需要消息的程序。。
        ●消息处理是Windows应用程序的核心。

        ●消息是操作系统通知应用程序某件事情已经发生的一种方式。

        ●Windows消息是在Windows.h文件中用宏定义的常数。
        ●消息常数名常以WM_ 开头,格式为WM_XX。

(1)Windows消息来源
Windows应用程序的消息来源于以下四种:
(1)输入消息:键盘和鼠标的输入。此类消息先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。
(2)控制消息:与Windows的控制对象,如列表框、复选框等进行双向通信。这类消息一般不经过应用程序的消息队列,而是直接发送到控制对象。
(3)系统消息:对程序化的事件或系统时钟中断作出的一些反应。
(4)用户消息:程序员自己定义并在应用程序中主动发生的,一般由应用程序的某一部分内部处理。
        VC+ +存在几种系统定义的消息分类,不同的前缀符号经常用于识别不同的消息类,系统定义的消息宏前缀如下:
        BM :按钮控制消息
        CB :组合框控制消息
        DM :默认下压式按钮控制消息
        EM :编辑控制消息
        LB :列表框控制消息
        SBM :滚动条控制消息
        WM :窗口控制消息

(2)Windows消息数据结构
        消息号:由事先定义好的消息名标识
        字参数(wParam) :用于提供消息的附加信息
        长字参数(IParam) :用于提供消息的附加信息

Windows消息的数据结构

typedef struct tagMSG 
{
HWND hwnd; //窗口句柄,为nul则可检索所有驻留在消息队交中的消息
UINT message; //消息值,由Windows h头文件中的宏定义标识
WPARAM wParam; //包含有关消息的附加信息,不同消息其值不同
LPARAM IParam;
DWORD time; 1指定消息送至队列的时间
POINT p:/消息发送时屏幕光标位置,POINT是一个结构体
}MSG;

        注意:字参与长字参是作为消息的附加信息的,它与具体消息号的值有关;Windows中消息用结构体MSG表示;DWORD是32位无符号整型;

        POINT是一个结构体:

typedef struct tagPOINT
{
LONGX;
LONG y; 
}POINT,

二、消息队列和API

1. Windows消息队列 

        ●当产生某消息时,该消息进入消息队列,操作系统根据消息提供的信息值决定由哪个应用程序来处理;

        ●应用程序按一定的方式查找应用程序中各个类的消息映射(一组宏,用来确定某个消息及相应的处理程序;的对应关系) ;

        ●找到处理程序后,由处理程序执行相应的操作。

        ●消息队列是一一个系统定义的内存块,用于临时存储消息,或把消息直接发给窗口函数。
        ●每个窗口维护自己的消息队列,并从队列中取出消息,利用窗口函数进行处理。

2. Windows程序常用消息

( 1 )标准Windows消息(前缀为WM_ )
        分为三类:鼠标消息、键盘消息和窗口消息
 (2)控件消息
        控件或其他子窗口向父窗口发送WM_ COMMAND消息

(3 )命令消息
        菜单项、工具栏按钮、加速键等用户界面对象发送的WM_ COMMAND消息。

●焦点消息: WM_ SETFOCUS,WM_ KILLFOCUS
●定时器消息: WM_ TIMER

        ( 1 )标准Windows消息- -鼠标消息

                -WM_ LBUTTONDOWN :单击鼠标左键时产生的消息
                -WM_ LBUTTONUP :放开鼠标左键时产生的消息
                -WM_ RBUTTONDOWN ;单击鼠标右键时产生的消息
                -WM_ RBUTTONUP :放开鼠标右键时产生的消息
                -WM_ LBUTTONDBLCLK :双击鼠标左键时产生的消息

                -WM_ RBUTTONDBLCLK :双击鼠标右键时产生的
                -WM_ MOUSEMOVE :鼠标在窗C中移动时产生的

        ( 1 )标准Windows消息- -键盘消息
        -WM_KEYDOWN :按下一一个非系统键时产生的消息,附加信息参数wParam为按下键的虚拟键码,虚拟键码用以标识按下或释放的键, IParam记录按键的重复次数、扫描码等状态信息;
        - WM_KEYUP :弹起一个非系统键时产生的消息
        - WM_CHAR :按下一个非系统键时产生的消息加信息参数wParam为按下键的ASCII码,IPare的意思同上;
        ( 1 )标准Windows消息- -窗口消息
                - WM_CREATE : CreateWindows函数产生的消息;
                -WM_CLOSE :关闭窗口时产生的消息;
                - WM_DESTROY :消除窗口时由DestroyWindows()发出的消息
                - WM_QUIT :退出应用程序时由PostQuitMessage()发出的消息
                - WM_ PAINT ; Windows系统需重绘时产生的消息。
               - WM_ SIZE
                - WM_MOVE

3.对象与句柄

        ●句柄是代表某些资源的一个4字节长的数值,用于标识应用程序中不同的对象和同类对象中不同的实例

        ●所有的句柄类型以H开头。常见Windows对象的句柄:

4.关于API

        ●应用程序是如何通知操作系统执行某个功能的呢?
                -应用程序要完成某个功能是以函数调用的形式实现;
                -同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。

        ●操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用。
        ●这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow()函数。

        ●API是大量函数加上数字常量、宏、结构、类型以及其它相关项的集合。

        ●大多数API函数定义在Windows.h的文件中,也可以从Windows平台软件开发包( SDK )中得到。

        ●根据Windows API函数的功能,可以将其分为三类

                (1)管理函数:实现窗口的创建、移动和修改功能
                (2)图形设备函数:实现与设备无关的图形操作功能
                (3)系统服务函数:实现与操作系统有关的多种功能

三、Win32程序结构

1、Win32程序结构-WinMain函数

Win32程序示例
        例5-1创建一个如图所示的Windows窗口。 本例的目的在于说明创建Windows应用程序的方法、过程及消息的使用。

注意:●LRESULT 选择"右键/ Go To Definition"可查看定义

        ●对于CALLBACK,表示函数调用方式,_stdcall 与_ cdecl是两种不同的函数调用约定,区别在函数参数入栈的顺序,由调用函数还是被调用函数将参数弹出栈,以及产生函数修饰名的方法。

1. WinMain函数

功能:
        (1)注册窗口类,建立窗口及执行其他必要的初始化工作。
        (2)进入消息循环,根据从消息队列中接收的消息,调用相应的处理过程。
        (3)当消息循环检索到WM_ QUIT消息时,终止程序拟

 WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环。

1) WinMain函数:函数说明

int WINAPI WinMain
( HINSTANCE hThisInst, ||应用程序当前实例句柄
HINSTANCE hPrevInst,   ||应用程序其他实例句柄
LPSTR IpszCmdLine,     ||指向程序命令行参数的指针
int nCmdShow     ||应用程序开始执行时窗口显示方式的整数值标识,如最大化显示或最小化显示或隐藏显示
)

2)创建一个完整的窗口需要经过下面四个操作步骤:

 初始化--窗口类的定义

typedef struct tagWNDCLASS
{
UINT style;    //窗口类的样式,一般设置为0
WNDPROC *IpfnWndProc; //定义指向窗口函数的指针
int cbClsExtra;    //窗口类变量占用的存储空间
int cbWndExtra;    //实例变量占用的存储空间
HINSTANCE hInstance;    //该类的应用程序的实例句柄
HICON hIcon;    //图标,调用Loadlcon
HCURSOR hCursor;    //光标,调用L oadCursor
HBRUSH hbrBackground; //背景刷,调用GetStockObject
LPCTSTR lpszMenuName; //窗口类菜单资源名
LPCTSTR IpszClassName; //窗口类名
}WNDCLASS;

案例的窗口类定义代码:

//窗口类的定义
WNDCL ASS wndclass ;    //窗口类对象
wndclass .style=0;    //窗口类型为缺省类型
wndclass. lpfnWndProc=WndProc; //定 义窗口处理函数名
wndclass.cbClsExtra=0;    //窗口类无扩展
wndclass.cbWndExtra=0;    //窗口实例无扩展
wndclass. hInstance=hInstance; //当前实例句柄
wndclass.hlcon=L oadlcon(NULL,IDI_APPLICATION);    //窗口的最小化图标为缺省图标
wndclass. hCursor=L oadCursor(NULL,IDC_ARROW);    //窗口采用箭头光标 
wndclass. hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景为白色
wndclass.IpszMenuName=NULL; //窗口中无菜单
wndclass. IpszClassName=lpszClassName;//窗类名

Loadlcon:在应用程序中加载一个窗口图标。 原型:HICON Loadlcon(HINSTANCE hInstance, LPCTSTR IplconName )

        其中第一个参数(HINSTANCE hInstance)表示图标资源所在的模块句柄,NULL则使用系统预定义图标;第二个参数(LPCTSTR IplconName)表示图标资源名或系统预定义图标标识名

 应用程序调用函数GetStockObject获取系统提供的背景刷HBRUSH GetStockObject(int nBrush)

 窗口注册代码:

//窗口类的注册
if(!RegisterClass( &wndclass)) //如果注册失败则发出警告
{ MessageBeep(0);
return FALSE;
}

窗口创建:

//创建窗口
HWND hwnd;//窗口句柄
hwnd = CreateWindow
(IpszClassName,        //窗口类名
IpszTitle,         //窗口实例的标题名,
WS_ OVERLAPPEDWINDOW, //窗口的风格
CW_ USEDEFAULT,     //窗口左 上角坐标为缺省值
CW_ USEDEFAULT,
CW USEDEFAULT,    //窗口的高和宽为缺省值
CW USEDEFAULT,
NULL,        //此窗口无父窗口
NULL,        //此窗口 无主菜单
hInstance,     //创建此窗口的应用程序的当前句柄
NULL        //不使用该值
),

创建一个窗口类的实例由函数CreateWindow()实现

HWND CreateWindow
(LPCTSTR IpszClassName, ||窗口类名
LPCTSTR IpszTitle, || 窗口标题名
DWORD dwStyle, || 创建窗口的样式,如下页表所示
int x,y,    ||窗口左上角坐标
int nWidth,nHeight, ||窗口宽度和高度
HWND hwndParent, ||无父窗口则为NULL
HWENU hMenu, ||窗口主菜单句柄
HINSTANCE hInstance, || 创建窗的应用程序当前句柄
LPVOID IpParam ||创建窗口时指定的额外参数
)

常用窗口样式

运用样式方法:#define WS_OVERL APPEDWINDOW(WS OVERL APPED | WS_ CAPTION | WS_ SYSMENUIWS THICKFRAME | WS MINIMIZEBOX | WS MAXIMIZEBOX)
显示窗口:

//显示窗口
ShowWindow( hwnd, nCmdShow);
//立即发送WM_ PAINT消息来刷新窗口客户区
UpdateWindow(hwnd);

消息循环:

//消息循环
MSG Msg;//消息
while( GetMessage(&Msg,NULL,0,0))
{ TranslateMessage( &Msg); //将虚拟键消息转换为字符消息
DispatchMessage( &Msg);    //调度一个消息给窗口程序。通常调度从GetMessage取得的消息
return Msg.wParam; //消息循环结束即程序终止时将信息返回
}

整合的窗口代码:

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINS TANCE hInstance,HINSTANCE
hPrevInst,LPSTR IpszCmdLine,int nCmdShow)
{ WNDCL ASS wndclass ; //窗口类的定义...           //为窗口类结构体中的成员赋值
RegisterClass( &wndclass));
CreateWindow(...);
ShowWindow( hwnd, nCmdShow);
UpdateWindow(hwnd);
//消息循环
MSG Msg;//消息
while( GetMessage(&Msg,NULL,0,0))
{ TranslateMessage( &Msg); //将虚拟键消息转换为字符消息
DispatchMessage( &Msg);    //调度一个消息给窗口程序。通常调度从GetMessage取得的消息
return Msg.wParam; //消息循环结束即程序终止时将信息返回
}

3) WinMain函数:消息循环

 函数GetMessage():返回零值,即检索到WM_QUIT消息,程序结束循环并退出

GetMessage
( lpMSG, //指向MSG结构的指针 ,
//它包含有从应用程序消息队列中检索到的一条消息数据
hwnd, //指定为哪个窗口检索消息,若为NULL,
//则检索调用该函数的应用程序的所有消息
nMsgFilteMin, /指定检索在Min和Max范围内的消息
nMsgFilterMax
//若这两个参数都为零,该函数检索所有的可用的消息
)

函数TranslateMessage(&Msg):将原始键盘消息WM_KEYDOWN和WM_ KEYUP转化为字符(WM_CHAR)消息

函数DispatchMessage(&Msg):将消息传送到指定窗口函数

2.窗口函数WndProc

        WndProc定义了应用程序对接收到的不同消息的响应;它包含了对各种可能接收到的消息的处理过程。        

        ●WndProc函数由一个或多个switch语句组成。
        ●每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。

LRESULT CALLBACK WndProc( HWND hwnd, UINT
messgae, WPARAM wParam,LPARAM IParam )
{.
..
switch(message)    || message为标识的消息
{ case....break;
..case WM_ DESTROY:PostQuitMessage(0); break; default:return
DefWindowProc(hwnd,message,wParam,IParam);    //为未定义处理过程的消息提供缺省处理
}
return(0); 
}

        在消息处理程序段中一般都有对WM_ DESTROY的处理,该消息是关闭窗口时发出的。它向应用程序发出WM_ QUIT消息,请求退出处理函数:
        void PostQuitMessage(int nExitCode)        //nExitCode为应用程序的退出代码

案例窗口函数:

// 窗口(消息)处理函数
LRESULT CALL BACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM IParam)
{HDC hdc; // 设备描述表的句柄switch (message){case WM_PAINT:PAINTSTRUCT ps;hdc = BeginPaint(hWnd, &ps);TextOut(hdc, 0, 0, "武汉理工大学理学院", strlen("武汉理工大学理学院"));EndPaint(hWnd, &ps);break;case WM_CHAR:char szChar[20];sprintf(szChar, "char %C is %d", wParam, wParam); // 格式输出内容到szCharMessageBox(hWnd, szChar, "显示", 0);break;case WM_LBUTTONDOWN:MessageBox(hWnd, "mouse left clicked", "提示", 0);hdc = GetDC(hWnd);TextOut(hdc, 0, 50, "物理系电信科", strlen("物理系电信科"));ReleaseDC(hWnd, hdc);break;case WM RBUTTONDOWN:MessageBox(hWnd, "mouse right clicked", "提示", 0);hdc = GetDC(hWnd);TextOut(hdc,0, 100, "物理系光信科" ,strlen("物理系光信科");ReleaseDC(hWnd, hdc);case WM_CLOSE:if(IDYES==MessageBox(hWnd, "是否真的结束?", "关闭提示",MB_YESNOCANCEL))DestroyWindow(hWnd);break;case WM_DESTROY:PostQuitMessage(0); //调用PostQuitMessage发出WM_ QUIT消息break;default:    //缺省时采用系统消息缺省处理函数return DefWindowProc(hWnd,message,wParam,lParam);}return (0);
}

Windows程序和消息的基本流程:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/90294.html

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

相关文章

Elasticsearch - 闲聊ElasticSearch中的分页

文章目录 概述分页方案from-size内部执行过程【Query】阶段【fetch】阶段潜在问题注意事项 深度分页Scroll &#xff08;Scroll遍历数据&#xff09;Scroll ScanSliced ScrollSearch After基于pit机制的search after 小结 概述 ElasticSearch是一款强大的搜索引擎&#xff0c;…

Spring kafka源码分析——消息是如何消费的

文章目录 概要端点注册创建监听容器启动监听容器消息拉取与消费小结 概要 本文主要从Spring Kafka的源码来分析&#xff0c;消费端消费流程&#xff1b;从spring容器启动到消息被拉取下来&#xff0c;再到执行客户端自定义的消费逻辑&#xff0c;大致概括为以下4个部分&#x…

flutter-第三方组件

卡片折叠 stacked_card_carousel 扫一扫组件 qr_code_scanner 权限处理组件 permission_handler 生成二维码组件 pretty_qr_code 角标组件 badges 动画组件 animations app更新 app_installer 带缓存的图片组件 cached_network_image 密码输入框 collection 图片保存 image_g…

数据分析两件套ClickHouse+Metabase(一)

ClickHouse篇 安装ClickHouse ClickHouse有中文文档, 安装简单 -> 文档 官方提供了四种包的安装方式, deb/rpm/tgz/docker, 自行选择适合自己操作系统的安装方式 这里我们选deb的方式, 其他方式看文档 sudo apt-get install -y apt-transport-https ca-certificates dirm…

SpringBoot复习:(44)MyBatisAutoConfiguration

可以看到MyBatisAutoConfiguration引入了MyBatisProperties这个属性&#xff1a; MyBatisAutoConfiguration中配置了一个SqlSessionFactoryBean,代码如下&#xff1a; 可以配置mybatis-config.xml,需要配置文件里指定&#xff1a; mybatis.config-locationclasspath:/mybat…

2023年京东宠物食品行业数据分析(京东大数据)

宠物食品市场需求主要来自于养宠规模&#xff0c;近年来由于我国宠物数量及养宠人群的规模均在不断扩大&#xff0c;宠物相关产业和市场规模也在蓬勃发展&#xff0c;宠物食品市场也同样保持正向增长。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年1月-7月&am…

python单元测试框架(测试固件、批量执行)

python测试框架 在Python语言中应用最广泛的单元测试框架是unittest和pytest,unittest属于标准库&#xff0c;只要安装了Python解释器后就可以直接导入使用了,pytest是第三方的库&#xff0c;需要单独的安装。 1.白盒测试原理 在软件架构的层面来说&#xff0c;测试最核心的步…

红日ATT&CK VulnStack靶场(三)

网络拓扑 web阶段 1.扫描DMZ机器端口 2.进行ssh和3306爆破无果后访问web服务 3.已知目标是Joomla&#xff0c;扫描目录 4.有用的目录分别为1.php 5.configuration.php~中泄露了数据库密码 6.administrator为后台登录地址 7.直接连接mysql 8.找到管理员表&#xff0c;密码加密了…

“多测合一”生产软件-不动产测量(不动产权籍调查测绘软件RESS),房地一体化测量由请湖南来示范

湖南“多测合一”生产软件-不动产测量软件&#xff0c;提取码&#xff1a;RESShttps://pan.baidu.com/s/1OqakLJICIP6buNiZ6j9Npw?pwdRESS 2020年7 月&#xff0c;国务院办公厅印发《 国务院办公厅关于进一步优化营商环境 更好服务市场主体的实施意见》 &#xff08;国办发〔 …

【网络】高级IO

目录 一、五种IO模型 1、阻塞IO 2、非阻塞IO 3、信号驱动 4、IO多路转接 5、异步IO 6、总结 二、高级IO重要概念 1、同步通信与异步通信 2、阻塞 vs 非阻塞 三、非阻塞IO 1、fcntl 2、实现函数SetNoBlock 四、IO多路转接select 1、select 1.1、参数解释 1.2、…

Unity实现异步加载场景

一&#xff1a;创建UGUI 首先我们在LoginCanvas登入面板下面创建一个Panel,取名为LoadScreen,再在loadScreen下面创建一个Image组件&#xff0c;放置背景图片&#xff0c;然后我们再在lpadScreen下面继续创建一个Slider,这个是用来加载进度条的&#xff0c;我们改名为LoadSlid…

简单入门seleniumUI自动化测试

目录 一、selenium的介绍 二、selenium的原理 三、selenium的八种元素定位的方法 1、ID定位&#xff1a; 2 、name定位&#xff1a; 3、class定位&#xff1a; 4、tag定位&#xff1a; 5、link_text定位&#xff1a; 6、partial_link_text定位&#xff1a; 7、css定位…

航顺HK32F030M怎么样 航顺HK32F030M应用领域介绍

航顺HK32F030M是一款基于ARM Cortex-M0内核的32位微控制器&#xff0c;具有高性能、低功耗、经济适用等特点。以下是颖特新关于航顺HK32F030M的详细介绍&#xff1a; 一、性能表现 航顺HK32F030M采用ARM Cortex-M0内核&#xff0c;主频最高可达64MHz&#xff0c;具有出色的计算…

反编译微信小程序,可导出uniapp或taro项目

微信小程序反编译&#xff08;全网通用&#xff09; 微信小程序反编译 反编译主要分为四个阶段 操作流程 1. node.js安装 2. node安装模块 3. 开始反编译 4. 导入到微信开发者工具既可运行 微信小程序反编译 当碰到不会写的小程序功能时&#xff0c;正好看到隔壁小程序有类似…

FPGA应用学习笔记--时钟域的控制 亚稳态的解决

时钟域就是同一个时钟的区域&#xff0c;体现在laways语句边缘触发语句中&#xff0c;设计规模增大就会导致时钟不同步&#xff0c;有时差&#xff0c;就要设计多时钟域。 会经过与门的延时产生的新时钟域&#xff0c;这种其实不推荐使用&#xff0c;但在ascl里面很常见 在处理…

2023国赛数学建模C题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

SpringCloud实用篇5——elasticsearch基础

目录 1.初识elasticsearch1.1 了解ES1.1.1 elasticsearch的作用1.1.2 ELK技术栈1.1.3 elasticsearch和lucene1.1.4 总结 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排 1.3 es的一些概念1.3.1 文档和字段1.3.2 索引和映射1.3.3 mysql与elasticsearch 1.4 部署单点…

单模光纤模场强度分布以及高斯近似的MATLAB仿真

已知纤芯半径5um&#xff0c;数值孔径NA 0.1&#xff0c;波长 用波长和数值孔径计算归一化常数V 之前我们在单模光纤特征方程及其MATLAB数值求解中&#xff0c;用线性关系拟合过V和W&#xff0c;这里直接用拟合结果 U用V和W计算 clc clear close alla 5e-6;%纤芯半径 NA …

Stable Diffusion + AnimateDiff运用

1.安装AnimateDiff&#xff0c;重启webui 2.下载对应的模型&#xff0c;最好到c站下载&#xff0c;google colab的资源有可能会出现下载问题 https://civitai.com/models/108836 3.下载完成后&#xff0c;你可以随便抽卡了。 抽卡完成后固定seed&#xff0c;然后打开这个插件&…

基于深度信念网络的西储大学轴承故障分类识别,基于EMD+DBN的西储大学轴承故障识别,LCD+DBN,LMD+DBN

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) (EMD,LCD,LMD)+DBN的深度信念网络的西储大学轴承故障分类识别 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类…