mciSendString的介绍

2023-10-27

转载至:http://blog.sina.com.cn/s/blog_149e9d2ec0102wzcn.html

使用MCI API,源文件中需要包含头文件Mmsystem.h,在Project->Settings->Link->Object/libraymodule中加入库 Winmm.lib。 VS2008在源文件加上#include"mmsystem.h"     #pragma comment(lib,"winmm.lib")

1、MCI简介

  MCI(Media ControlInterface,媒体控制接口)向Windows程序提供了在高层次上控制媒体设备接口的能力。程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制。

  对于程序员来说,可以把MCI理解为设备面板上的一排按键,通过选择不同的按键(发送不同的MCI命令)可以让设备完成各种功能,而不必关心设备内部实现。

  比如,对于play,视盘机和CD机有不同的反应(一个是播放视频,一个播放音频),而对用户来说却只需要按同一按钮。

  应用程序通过向MCI发送命令来控制媒体设备。MCI命令接口分命令字符串和命令消息两种,两者具有相同的功能。命令字符串具有使用简单的特点,但是它的执行效率不如命令消息。

  所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:

    MCIERROR mciSendString(

      LPCTSTR lpszCommand,    //MCI命令字符串

      LPTSTR lpszReturnString, //存放反馈信息的缓冲区

      UINT  cchReturn,     //缓冲区的长度

      HANDLE hwndCallback    //回调窗口的句柄,一般为NULL

    ); //若成功则返回0,否则返回错误码。

  该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:

    BOOL mciGetErrorString(

      DWORD fdwError,   //函数mciSendString返回的错误码

      LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区

      UINT  cchErrorText  //缓冲区的长度

    );

  下面是使用mciSendString函数的一个简单例子:

    char buf[50];

    MCIERROR mciError;

    mciError=mciSendString("opencdaudio",buf,strlen(buf),NULL);

    if(mciError)

    {

      mciGetErrorString(mciError,buf,strlen(buf));

      AfxMessageBox(buf);

      return;

    }

  opencdaudio命令打开CD播放器,如果出错(如驱动器内没有CD)则返回错误码,此时可以用mciGetErrorString函数取得错误信息字符串。

2、MCI设备

  open是MCI打开设备的命令,cdaudio是MCI设备名。MCI的设备类型如下:

    animation  动画设备

    cdaudio   CD播放器

    dat     数字音频磁带机

    digitalvideo 某一窗口中的数字视频(不基于GDI)

    other    未定义的MCI设备

    overlay   重叠设备(窗口中的模拟视频)

    scanner   图象扫描仪

    sequencer  MIDI序列器

    videodisc  视盘机

    waveaudio  播放数字波形文件的音频设备

  设备名是在注册表或SYSTEM.INI的[mci]部分定义的,典型的[mci]段如下:

    [mci]

    cdaudio=mcicda.drv

    sequencer=mciseq.drv

    waveaudio=mciwave.drv

    avivideo=mciavi.drv

    videodisc=mcipionr.drv

  等号的左边是设备名,右边是对应的MCI驱动程序。当安装了新的MCI驱动程序时,系统要用不同的设备名来区分。

3、MCI命令

  使用MCI设备一般包括打开、使用和关闭三个过程,常用的MCI命令有:

    open    打开设备

    close    关闭设备

    play    开始设备播放

    stop    停止设备的播放或记录

    record   开始记录

    save    保存设备内容

    pause    暂停设备的播放或记录

    resume   恢复暂停播放或记录的设备

    seek    改变媒体的当前位置

    capacility 查询设备能力

    info    查询设备的信息

    status   查询设备状态信息

  MCI的大部分命令可以控制不同的媒体设备,但其中record和save命令并不是所有MCI设备都可以使用。

  MCI命令的使用是很随意的,只要先打开,最后关闭,中间可以随意调用各种命令。

(1) open 打开设备

  MCI设备使用前必须先打开,当然,使用后也必须要关闭,以免影响他人的使用。

  open device_name type device_type alias device_alias

    device_name     要使用的设备名,通常是文件名。

    type device_type  设备类型,例如waveaudio或sequencer,可省略。

    alias device_alias 设备别名,指定后可在其他命令中代替设备名。

(2) play 开始设备播放

  MCI设备打开后即可以播放,可使用设备名或别名。

  play device_alias from pos1 to pos2 wait repeat

    若省略from则从当前磁道开始播放,若省略to则播放到结束。

    若指明wait则等到播放完毕命令才返回。

    若指明repeat则会不停的重复播放。

    若同时指明wait和repeat则命令不会返回,本线程产生堵塞,通常会引起程序失去响应。

(3) 播放CD

  void CTttView::OnOpenCD()

  {

    mciSendString("open cdaudio",NULL,0,NULL);

    mciSendString("play cdaudio",NULL,0,NULL);

  );

  void CTttView::OnStopCD()

  {

    mciSendString("stop cdaudio",NULL,0,NULL);

    mciSendString("close cdaudio",NULL,0,NULL);

  );

  还可以:

    pause cdaudio  暂停播放。

    resume cdaudio 继续被暂停的播放。

    seek cdaudio to <位置> 移动到指定磁道。

    set cdaudio door open/closed 弹出或缩进CD盘。

(4) 播放多媒体文件

  void CTttView::OnMyMenu()

  {

    mciSendString("open myfolder\\tada.wav aliasaa",NULL,0,NULL);

  或 mciSendString("open myfolder\\flourish.mid aliasaa",NULL,0,NULL);

  或 mciSendString("open myfolder\\clock.avi aliasaa",NULL,0,NULL);

    mciSendString("play aa wait",NULL,0,NULL);

    mciSendString("close aa",NULL,0,m_hWnd);

  );

(5) 录制声音

  void CTttView::OnStartRecord()

  {

    mciSendString("open new type waveaudio aliasaa",NULL,0,NULL);

    mciSendString("record aa",NULL,0,NULL);

  );

  void CTttView::OnStopRecord()

  {

    mciSendString("save aa c:\\aaa.wav wait",NULL,0,NULL);

    mciSendString("close aa",NULL,0,NULL);

  );

4、MCI命令消息

  到目前为止,我们使用的都是MCI命令字符串。可以发现,命令字符串具有简单易学的优点,但这种接口与C/C++的风格相去甚远,如果程序要查询和设置大量数据,那么用字符串的形式将很不方便。

  MCI的命令消息接口提供了C语言接口,它速度更快,并且更能符合C/C++程序员的需要。

  所有MCI命令消息都是通过mciSendCommand函数发送的,函数声明为:

    MCIERROR mciSendCommand(

      MCIDEVICEID wIDDevice,  //设备的ID,在打开设备时不用该参数

      UINT    uMsg,    //命令消息

      DWORD    fdwCommand, //命令消息的标志

      DWORD    dwParam   //指向包含命令消息参数的结构

    ); //若成功则返回0,否则返回错误码

  命令消息uMsg与命令字符串是对应的,例如,open与MCI_OPEN完成的是一样的功能。

  变量wDeviceID用来保存设备的ID,系统用ID来标识不同的设备,以保证命令发给正确的对象。

  void CTttView::OnMyMenu()

  {

    MCI_OPEN_PARMS mciOpen;

    UINT wDeviceID;

    mciOpen.lpstrDeviceType = "avivideo";

    mciOpen.lpstrElementName = "myfolder\\clock.avi";

    mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT,(DWORD)&mciOpen);

    wDeviceID=mciOpen.wDeviceID;

    MCI_PLAY_PARMS mciPlay;

    mciSendCommand(wDeviceID, MCI_PLAY, MCI_WAIT,(DWORD)&mciPlay);

  );

  可以看出,用命令消息比用命令字符串要复杂的多,但它的执行效率高。


参考网站 http://baike.baidu.com/view/1622810.htm?fr=ala0_1 http://msdn.microsoft.com/en-us/library/dd743572(VS.85).aspx

 

 

做个mp3播放器,用realplay和WMP做出来的程序内存占用太大。
如果你仅仅是播放MP3,建议使用API函数mciSendString,我把该函数的详细资料罗列如下供你参考。
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias"mciSendStringA" (ByVal lpstrCommand As String, ByVal
lpstrReturnString As String, ByVal uReturnLength As Long, ByValhwndCallback As Long) As Long
mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面介绍
它的使用方法:
  该函数有四个参数:
第一个参数:要发送的命令字符串。字符串结构是:[命令][设备别名][命令参数].
第二个参数:返回信息的缓冲区,为一指定了大小的字符串变量.
第三个参数:缓冲区的大小,就是字符变量的长度.
第四个参数:回调方式,一般设为零
返回值:函数执行成功返回零,否则返回错误代码

一、常用命令
  1.打开(Open),格式:Open 设备名 [type 设备型式][alias 别名]
Dim mName as string
mName = "f:\\mpeg\\mpeg1.avi"
mciSendString "open mName type MPEGVideo Alias movie parent %uStyle %u notify",0&, 0, 0 
 其中:
open             操作命令
mName         全路径文件名
type MPEGVideo 是指打开MPEG,AVI等类型,如果不加这一句,就是打开WAV,MP3等
Alias movie   定义了该操作的别名为movie,后续操作只要指明别名即可
parent%u      
Style%u      样式
notify         通知
  2.播放(Play),格式:Play 设备名 [from 起点][to 终点]
mciSendString "play movie", 0&, 0,0 
mciSendString "play movie fullscreen", 0&, 0, 0 '全屏播放
  3.暂停(Pause):
mciSendString "pause movie", 0&, 0, 0
  4.继续(Resume):
mciSendString "resume movie", 0&, 0, 0
  5.停止(Stop):
mciSendString "stop movie", 0&, 0, 0
  6.关闭(Colse):
mciSendString "close movie", 0&, 0, 0
  7.前进到下一个位置:
mciSendString "step movie", 0&, 0, 0
  8.后退到上一个位置:
mciSendString "step movie reverse", 0&, 0, 0
  9.前进或后退 N 個位置(其中 N<0 即表示后退)
mciSendString "step movie by " & str(N), 0&, 0, 0
  10.获取当前播放位置:
Dim ST As String*64
mciSendString "status movie position", st, len(st), 0
  11. 获取媒体的总长度:
mciSendString "status movie length", st, len(st), 0
l=val(st) 'l就是所播放文件的长度
  12.获取播放当前状态:
Dim ST As String*64
mciSendString "status movie mode", ST, Len(ST), 0
If Left(ST, 7) = "stopped" Then (处理代码) '播放完毕
  13.循环播放:
mciSendString "play movie repeat", 0&, 0, 0

二、控制声音大小(1-1000):
Dim V As Long
mciSendString "status movie volume",&V, len(v), 0'V是获取的音量大小值。
V = 50
mciSendString "setaudio movie volume to 数值", 0, 0, 0 'V是设置的音量值

三、设置播放位置.(需事先设定时间格式),格式:Seek 设备名 [to 位置 | to start | toend]
Dim P1 as Long, P2 as Long
P1 = 100: P2 = 3000
mciSendString "seek movie to ", P1, 0, 0 'P1是当前起始位置,单位:毫秒
mciSendString "seek movie to start", 0&, 0, 0'定位到开头位置
mciSendString "play movie", 0&, 0, 0 '定位后再播放
或者:
mciSendString "play movie FROM P1 to P2",0&, 0, 0'P1是起始位置,P2是停止位置。单位:毫秒
mciSendString "seek movie to end", 0&, 0, 0 '定位到最后位置

四、在指定控件上播放视频:
mciSendString "open AVI 文件名 parent hWnd style child", 0&, 0,0
其中,hWnd 是控件的句柄
执行上述命令之后,影片会被放置在控件的左上角,且影片的大小不受控件大小的影响,如果想要改变
影片播放的位置及大小,可以在執行 play 指令前先执行 put 指令,格式如下:
  mcisendString "put AVI 文件名 window at X Y [Width Height]", 0&,0, 0
其中:X、Y为影片左上角坐标,Width、Height为影片的宽高度

五、如果播放视频还可控制亮度(1-2000)
Dim B As Long
mciSendString "status movie brightness", B, 0, 0'B是获取的亮度值。
B = 50
mciSendString "setvideo movie brightness to " & B, &0, 0, 0'B是设置的亮度值

六、录音设置:
  录音前,用以下语句初始化
  1.设为8位:
mciSendString "set wave bitpersample 8", "", 0, 0
  2.设为11025Hz
mciSendString "set wave samplespersec 11025", "", 0, 0
  3.设为立体声:
mciSendString "set wave channels 2", "", 0, 0
  4.实现PCM格式(不一定正确):
MCISENDSTRING "set wave format tag pcm","", 0, 0
  5.开始录音:
mciSendString "close movie",0&,0,0
mciSendString "open new type WAVEAudio aliasmovie",0&,0,0
mciSendString "record movie",0&,0,0
  6.保存录音到c:\123.wav
mciSendString "stop movie",0&,0,0
mciSendString "save movie C:\\123.wav",0&,0,0
mciSendString "close movie",0&,0,0

七、开关光驱:
mciSendString "set cdaudio door open", "", 0, 0 '打开
mciSendString "set cdaudio door close", "", 0, 0 '关闭

八、其它
  1.设置设备的各种状态(Set)
Set alias_name[audio all off][audio all on][time formatms]:
  Set命令用来设置设备的各种状态.如:静音,有声音,时间格式为毫秒等.
  2.取得设备的状态(Status)
Status alias_name[length][mode][position]:
  Status命令用来取得设备的状态.如:该媒体文件的长度,该媒体文件所处状态,该媒体文件的当前位置等.的长度,该媒体文件所处状态,该
媒体文件的当前位置等.
参考代码:
TCHAR fileName[]="D:\\俺的文档\\my music\\爷爷泡的茶.mp3";
TCHAR shortName[MAX_PATH];
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR));
TCHAR cmd[MAX_PATH+10];
wsprintf(cmd,"play %s",shortName);
mciSendString(cmd,"",NULL,NULL);
(调用mciSendString第一个参数传“play文件全路径”就可以,“文件全路径”最好传绝对路径,不建议wanghepeng10那样值传递文件名。
另外如果文件全路径中含有空格的话要使用GetShortPathName转换成短路径。)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/clearver/archive/2010/01/18/5209244.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mciSendString的介绍 的相关文章

  • 【C#】VS2019 未能在命名空间“Microsoft.Win32”中找到类型名“RegistryKey” 的解决办法

    文章目录 前言解决方案 结语 前言 今天在写 C 实验的时候遇到了 未能在命名空间 Microsoft Win32 中找到类型名 RegistryKey 此类型已转发到程序集 Microsoft Win32 Registry Version
  • VS中空项目、win32项目、控制台程序的区别

    一 区别 xff08 1 xff09 Win32控制台程序 xff0c 没有界面 xff0c 只有命令符 生成的 exe 文件直接运行操作即可 xff08 2 xff09 Win32项目 xff0c 有界面 但是界面里面的控件 xff0c
  • zlib win32编译

    1 run cmd 2 34 C Program Files x86 Microsoft Visual Studio 2019 Community VC Auxiliary Build vcvars32 bat 34 3 nmake f w
  • Visual Studio 新建一个Win32控制台项目

    1 点击 文件 新建 项目 2 选好Win32控制台项目点击确定 3 点击击下一步 4 勾选好项目程序设置后点击完成 5 点击 本地 Windows 调试器即可调试程序
  • win32+win64+linuxi686+linuxx86_64不同数据类型所占位数

    win32 43 win64 43 linuxi686 43 linuxx86 64不同数据类型所占位数
  • [Win32]一个调试器的实现(十)显示变量

    上回介绍了微软的符号模型 xff0c 有了这个基础知识 xff0c 这回我们向 MiniDebugger 中添加两个新功能 xff0c 分别是显示变量列表和以指定类型显示内存内容 显示变量列表用于列出当前函数内的局部变量或者全局变量 xff
  • Win32窗口

    Win32窗口 span class token comment windows 开发所需头文件 包含Windows开发所需要的宏 类 函数 结构体等结构的定义 span span class token macro property sp
  • Dynamic Linking Error: Win32 Error 126问题排查

    如题所示 xff0c 这个问题是我在electron项目中使用ffi调用动态链接库出现的 xff0c 本机运行都好好的 xff0c 打包构建然后放到别的机器上运行出错 这个问题一度也让我很迷茫 xff0c 如果是路径导致的这个问题 xff0
  • win32汇编寄存器汇总

    32位CPU所含有的寄存器有 xff1a 4个数据寄存器 EAX EBX ECX和EDX 2个变址和指针寄存器 ESI和EDI 2个指针寄存器 ESP和EBP 6个段寄存器 ES CS SS DS FS和GS 1个指令指针寄存器 EIP 1
  • win32 汇编基础概念整理

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 xff0c 似乎IP也是寄存器 xff0c 但只有在CALL RET在中会默认使用它 xff0c 其它情况很少使用到 xff0c 暂时可以不用理会 E
  • Win32环境下两种用于C++的线程同步类

    线程同步是多线程程序设计的核心内容 它的目的是正确处理多线程并发时的各种问题 例如线程的等待 多个线程访问同一数据时的互斥 防死锁等 Win32提供多种内核对象和手段用于线程同步 如互斥量 信号量 事件 临界区等 所不同的是 互斥量 信号量
  • mciSendString的介绍

    转载至 http blog sina com cn s blog 149e9d2ec0102wzcn html 使用MCI API 源文件中需要包含头文件Mmsystem h 在Project gt Settings gt Link gt
  • 几何画笔

    在看书时看到了这个概念 画笔可以分为几何画笔和装饰画笔 目前从CSDN以及MSDN上大致看了一下几何画笔的用法 代码如下 HPEN hPen NULL DWORD dwStyle PS GEOMETRIC PS DASHDOT PS END
  • WIN32 消息总结

    1 键盘消息 键盘会产生如下两种消息 1 按键消息 消息分类 WM KEYDOWN WM KEYUP WM SYSKEYDOWN 系统按键按下时产生 如ALT F10 WM SYSKEYUP 参数 WPARAM 按键的vritual key
  • OSG+MyGUI结合下中文输入的若干问题

    好久又没写文章了 经过这两天的研究 终于搞定了OSG MYGUI的中文输入问题 现在进行一下所遇问题的汇总 方便自己以后查阅 问题1 小键盘数字的输入问题 这个是很久以前解决的 osg并不能给你真正的小键盘输入值 还是得自己处理 代码片段1
  • winMain函数

    WinMain函数 int WINAPI WinMain HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nShowCmd 函数名 WinMain 返回值 in
  • 让CPU画出图形(其实很简单的)

    本例子是当初微软的一个题目 希望windows任务管理器的CPU的占有率 是一个正旋曲线 如果是你 你会如何解决这个问题呢 先上图吧 由于cpu要处理其他电脑程序 只能画出来大概的模样 其实我当时想这个问题时候 是不是考虑对cpu进行操作
  • WIN32 代码测试(Control)

    include
  • win32读取注册表

    直接代码 bool bIsIE6 false HKEY hKey NULL DWORD dwType DWORD dwSize LONG lReg RegOpenKey HKEY CLASSES ROOT HTTP shell open c
  • windows 消息机制

    windows 操作系统是由事件驱动的 也叫消息机制 一般来说分为四步 用户动作也就是事件 gt windows 将事件翻译成消息 gt 将消息放入消息队列 gt 消息循环从消息队列中取出消息并发送给窗口处理程序 我们来看一下窗口最简单窗口

随机推荐

  • 【Oracle】事务的提交与回滚

    一 数据库事务 数据库事务 Database Transaction 是指作为单个逻辑工作单元执行的一系列操作 事务处理可以确保除非事务性单元内的所有操作都成功完成 否则不会永久更新面向数据的资源 通过将一组相关操作组合为一个要么全部成功要
  • 农村水利水电与水土保持

    授课 福师大张思鹏sunnyact 泉舟时代 主要内容 简介 做出一款能实时通报水利水电与水土相关的并能及时发送到指定相关人员手机短信 思路 通过水利局农村水利水电与水土保持处官网参考 百度脑图分享 https naotu baidu co
  • Docker容器如何连接网络+容器间网络互通+Docker网络模式+自定义网络+网络打通

    Docker网络 问题 Docker容器如何连接网络 Docker容器之间能否接通网络 Docker容器之间可以通过名称ping通吗 能否自定义一个网络 那么 我们带着几个问题来学习docker的网络 Docker容器是如何连接网络的 我们
  • 焉建伟:3.30黄金今日跌破1700关口如何操作,黄金原油实时操作建议

    国际黄金行情走势分析 从昨日盘整近2周的箱体破位之后黄金的行情就非常明朗了 今日就是一个反弹做空的基调不用多想 而对于长期的横盘整理之后出现破位方向明朗了 点位就并不是那么重要 今天这个行情很多人可能都在等着1716 17附近去参与空单 事
  • 在Java中以编程方式将PSB转换为PDF,JPG或PSD

    PSB Photoshop Big 文件扩展名用于存储与图形有关的大量信息 可以使用Java编程语言轻松地将PSB文件转换为PDF JPG或PSD格式 让我们学习以下各节以探讨PSB文件转换 使用Java以编程方式将PSB转换为PDF 使用
  • 51单片机之蜂鸣器模拟钢琴(代码详解)——起风了

    目录 前言 正文 乐理 程序 补充 前言 最近心血来潮 想要用蜂鸣器播放音乐 全损音质 于是最初的想法诞生了 但是我总不能每次想听歌都敲一遍蜂鸣器的代码吧 有没有什么办法只需要敲一遍的代码便可以实现听歌自由呢 相对自由 也就是每次写歌只需要
  • 数据清洗和特征选择

    数据清洗和特征选择 数据清洗和特征挖掘的工作是在灰色框中框出的部分 即 数据清洗 gt 特征 标注数据生成 gt 模型学习 gt 模型应用 中的前两个步骤 灰色框中蓝色箭头对应的是离线处理部分 主要工作是 从原始数据 如文本 图像或者应用数
  • File格式转换MultipartFile格式的四种方式例子

    可以看到MultipartFile是个接口 转成MultipartFile格式则需要转成实现MultipartFile接口的实现类即可 如下选择转成用MockMultipartFile实现 首先 需要先引入依赖包
  • 链表常用函数总结

    创建单链表 PNODE creat list int len int i int val PNODE pHead NULL pHead PNODE malloc sizeof NODE if NULL pHead printf 分配内存失败
  • 电子计算机是采用什么进制法,计算机内部使用什么进制

    计算机内部采用二进制来表示信息 cpu的位是指一次性可处理的数据量是多少 1字节 8位 32位处理器可以一次性处理4个字节的数据量 也就是32位二进制 二进制是计算技术中广泛采用的一种数制 二进制数据是用0和1两个数码来表示的数 拓展资料
  • QT+OpenGL——GLFW编译配置

    环境 Qt5 8 0 VS2015 1 下载glfw源码 地址 https www glfw org download html 2 下载cmake工具 地址 http www cmake org cmake resources softw
  • Linux查看硬盘挂载

    目录 1 查看磁盘情况是否挂载上 2 在指定的硬盘上创建分区 3 设置开机自动挂载分区 1 查看磁盘情况是否挂载上 df h 该命令会显示出挂载磁盘和挂载点 下图分别是系统盘 以及挂载的一个硬盘 dev sda1 若某个磁盘没有挂载上 可以
  • WEBSHELL管理工具流量特征——基础篇

    前言 前一阵子帮别人做取证题目 有很多关于WEBSHELL的流量要分析 想起来还有没好好分析过于是准备写篇文章总结一下帮助大家能够快速的辨别WEBSHELL流量 下面我们展开文章来讲 中国菜刀 这个应该是大家最熟悉的WEBSHELL管理工具
  • 库存系统难破题?且看京东到家如何破

    京东到家库存系统架构设计 目前 京东到家库存系统经历两年多的线上考验与技术迭代 现服务着万级商家十万级店铺的规模 需求的变更与技术演进 我们是如何做到系统的稳定性与高可用呢 下面将会给你揭晓答案 库存系统技术架构图 上图如果进行总结下 主要
  • 《Windows server 2019操作系统》搭建各种服务器综合运用

    搭建域服务器 要求主域名为wgzj com IP地址为192 168 1 200 主机名为sever 搭建DNS服务器 并创建正向查找区域和反向查找区域 搭建FTP服务器 主目录为C wwwroot 搭建Web服务器 主目录为C wwwro
  • 单点登录的简单实现

    1 什么是单点登陆 单点登录 Single Sign On 简称为 SSO 是目前比较流行的企业业务整合的解决方案之一 SSO的定义是在多个应用系统中 用户只需要登录一次就可以访问所有相互信任的应用系统 较大的企业内部 一般都有很多的业务支
  • 机器学习——高斯朴素贝叶斯 Gaussian naive bayes

    问 高斯朴素贝叶斯假设离散特征的取值符合高斯分布 答 错误 高斯朴素贝叶斯假设连续特征的取值符合高斯分布 而不是离散特征 对于离散特征 通常使用多项式朴素贝叶斯或伯努利朴素贝叶斯进行分类 在 sklearn 库中 基于贝叶斯定理的算法集中在
  • win10 自带的远程桌面控制 ubuntu,不是补全

    win10 远程桌面控制ubuntu tab 不能补全 的解决方案 默认 tab 是窗口切换功能 方法有两个 在ubuntu中或者远程桌面中 编辑 config xfce4 xfconf xfce perchannel xml xfce4
  • TCP/IP详解学习笔记1

    为什么会有TCP IP协议 在世界上各地 各种各样的电脑运行着各自不同的操作系统为大家服务 这些电脑在表达同一种信息的时候所使用的方法是千差万别 就好像圣经中上帝打乱了各地人的口音 让他们无法合作一样 计算机使用者意识到 计算机只是单兵作战
  • mciSendString的介绍

    转载至 http blog sina com cn s blog 149e9d2ec0102wzcn html 使用MCI API 源文件中需要包含头文件Mmsystem h 在Project gt Settings gt Link gt