Win32 & .Net Q&A 200509铪铪

CSDN 讨论总结系列:

Notes:

 I would like to keep tracking some interesting CSDN  discussions, but sometimes I can not find them due to the limit of the CSDN favorite and the CSDN full text search. So again I list some interesting discussions here. For details about the discussion, go to http://search.csdn.net and search posts by their topics. For previous Q&A discussions, see my blogs Win32 & .Net Q&A  and VC/MFC Q&A 200407 . A topic may appear in these Q&A blogs more than once, but I will try to cover every interesting discussion if I can.

Title如何用程序控制电源管理设置
Q我们知道在电源选项 属性 里面可以设置
  关闭监视器  1分钟之后,...,从不
  关闭硬盘    1分钟之后,...,从不
  待机时间    1分钟之后,...,从不

请问这些设置我怎么用程序来实现 比如我现在要把关闭监视器设成 5分钟之后 请问各位大虾,应该怎么办?是不是要调用API?如果是,应该调用什么函数?

另外补充说明:如果是调出控制面板让用户自己设置,这种功能我不需要,我要的是在程序里面自动完成这些操作,不需要用户的介入!

ATo update an existing power scheme, call the WritePwrScheme, WriteGlobalPwrPolicy, or WriteProcessorPwrScheme function. Note that changes to the active power scheme do not automatically take effect. You must always call SetActivePwrScheme to update the active power scheme.
自己创建一个新的power scheme  (WritePwrScheme)
POWER_POLICY中USER_POWER_POLICY结构
VideoTimeoutAc VideoTimeoutDc是控制Display 的AC和Battery Power
Power Control Panel中的“关闭监视器”是通过 VideoTimeoutAc 来设置的,单位为秒
SpindownTimeoutAc SpindownTimeoutDc控制硬盘
Title从CFileDialog派生自定义Open对话框的问题
Q我要自定义一个open对话框,除了common filedialog,添加了一些control,同时使用了hook,在hook proc中有 WM_INITDIALOG的定义,那么请问添加的control在什么地方定义,比如说我要

BOOL fdex_mfc_dlg::OnInitDialog()
{
CFileDialog::OnInitDialog();

CListBox* pLB = (CListBox*)GetDlgItem(IDC_ENV);
pLB->InsertString(-1, "Current Project");
pLB->InsertString(-1, "Current scenes");
pLB->InsertString(-1, "Projects");
pLB->InsertString(-1, "Default");
pLB->InsertString(-1, "Home");
pLB->SetTopIndex(0);

return TRUE;  // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}好像不起作用了!

A文件对话框上的控件在收到WM_INITDIALOG甚至是CDN_INITDONE的时候都还不存在。最简单的解决方法是使用自定义消息
BOOL CMyOpenDlg::OnInitDialog()
{
   CFileDialog::OnInitDialog();
   PostMessage(MYWM_POSTINIT,0,0);
   return TRUE;
}
然后在MYWM_POSTINIT的处理函数中操作文件对话框上的控件。因为使用了PostMessage,所以这个消息在之前消息队列中所有消息得到处理之后才会被处理,这时候文件对话框已经初始化完毕了。
Title能不能将一个ie的dll插件转换成active X组件做到自动下载并注册
Qas title
A因为网页中一般不能直接运行可执行程序(如.EXE程序),所以如果要实现一些自定义的方法,一般通过编写ActiveX控件,然后在ActiveX控件中实现所需要的功能,最终在网页中调用该ActiveX。

1.使用VB或者ATL工具来实现一个Active控件,在控件中向外暴露一个方法,该方法的功能为:首先将所要安装的程序下载到用户机器上,然后启动所下载的安装程序进行安装。
2.在网页中调用该控件,在所需要处理事件中(如:onload,onclick等),调用上诉ActiveX控件的方法来实现安装。

网页中调用ActiveX控件的方法如下:
                 CLASSID=”clsid:XXX”
                 CODEBASE=”http://someserver.com/XXX.cab”>

其中,ID:代表网页中该控件的ID,可以通过该ID来调用控件的方法。
            CLASSID:唯一代表一个ActiveX控件,指明将使用哪个ActiveX控件。
            CODEBASE:如果ActiveX控件还没安装在本机上,指明可以从何处进行安装。

Title如果将插入WORD的ActiveX控件对象持久化到WORD文档中?
Q需要知道相关的技术是什么?有了解的帮助指引一下!
Ahttp://support.microsoft.com/support/kb/articles/q241/9/36.asp
Title关于vc.net的几个问题。
Q1、使用vc.net“项目”中.net项中建立的类库能不能使用MFC,如果能使用那么编译后还是不是托管模块?其中引用到的MFC库中类是不是也编译成托管模块
2、使用vc.net“项目”中用MFC建立的应用程序在修改编译属性后编译为托管代码,那么这时程序的那一部分被编译为托管代码,还是全部被编译成托管的?这个程序能不能添加对程序集的引用?
A1 可以使用MFC,但是因为很多MFC类依赖于CWinApp进行的全局MFC数据的初始化,所以建议还是用MFC向导来生成程序
2 MFC的DLL是非托管的,但是可以和托管代码一起工作。托管代码中当然可以引用程序集。
3 混合了非托管代码的程序很可能较难不加修改的移植到其它平台,尤其是在非托管代码包含对特定操作系统的API调用的情况下。

some of my blogs also discussed this topic:

示例:在MFC程序中集成.Net中的控件

MFC,欢乐与痛苦

Title怎么样实现 CEditView 的某几行文字为不可编辑吗?
Q我的 View 想每次建立的时候,自动在前几行输出内置的 文字,但是不想用户能够编辑它,可以接着这些文字下面继续编辑,这个该怎么实现??

谢谢,有这方面的文章吗?
A用richedit2.0的话可以把文字块保护起来

CFE_PROTECTED
Characters are protected; an attempt to modify them will cause an EN_PROTECTED notification message.

TitleWebBrowser的BeforeNavigate2事件如何添加Header啊?
QBeforeNavigate2事件有个Headers As Variant参数,我怎样修改它?
我试过Headers = "Referer:http://www.csdn.net",好像不起作用啊,用嗅探器没看到添加的这个Header,请高手帮帮忙,谢谢!
Ayou can use the APP to strip Referer header. The header is attached by MSHTML in HttpNegotiate::BeginningTransaction.
see also
http://msdn.microsoft.com/workshop/networking/pluggable/pluggable.asp
Title如何得到用 ATL 作的控件的窗口句柄,试了几个都无效,怎么回事?
Q这ATL编成还真费劲,我用vs7做了个ATL控件,同时要导入一个别的绘图用的dll,但是该dll中的库函数全都需要窗口句柄,我试了控件类中的m_hWnd,m_hWndCD,GetWindow(HWND *phwnd)成员得到的句柄都无效,把它们的数值想办法显示出来后,发现全是0,我又用m_spInPlaceSite->GetWindow(&hwndParent),得到了控件的父窗体句柄,但是控件本身的句柄还是没有办法得到,弄了一天了,没有结果,太郁闷了,望高手相救。
Awindowless的控件没句柄(这是ATL Full Control的默认选项)
创建控件的时候在属性页中选择不透明就可以了
Title如何让CEdit控件属性为Read Only, 但是背景为白色而不是灰色
Qas title
AWM_CTLCOLOR消息
HBRUSH CEditTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkColor( RGB(255, 255, 255) ); // text bkgnd
return hbr;
}
 
Title想做个IE插件,屏蔽掉“浮动广告”,从何下手?
Q最关键的是如何实现屏蔽“浮动广告”

用其它浏览器虽然可以屏蔽,但总觉得还是用IE顺手
A把绝对定位的元素都隐藏
但是这样会使得gmail、微软这样的网站也不能正常使用。
Title当一个USB设备和电脑连接,该USB驱动是系统自动识别的。系统如何能启动一个已经安装的程序呢?
Q当一个USB设备和电脑连接,该USB驱动是系统自动识别的。系统如何能启动一个已经安装的程序呢?
这个有点类似数码相机的处理软件,当数码相机和电脑连接后,系统会自动调用一个以前安装的相机处理程序,这个是怎么作到的呢?
A把自己的程序加入可移动介质的自动播放列表

http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/autoplay/autoplay2k_cookbook.asp

Title有个问题请教IE编程高手
Q我用WebBrower控件,用IPersistStreamInit结构获取了当前网页的源文件,但是如果该网页是框架结构,就拿不到正确的源文件了,还有表单之类的,请教有什么解决方法吗??

另一个就是如何将页面上的文字信息全部得到,比如CTRA+A复制下来粘贴到记事本里的。
A

I made a copy of some paragraphs from the second article here because blogspot is inaccessible in many Chinese networks.

Retrieving the HTML of the current selection
If you want to limit the HTML to just what a user has selected, instead of the entire document, we can use the IHTMLXxx COM interfaces. The first thing you need to do is get access to the IHTMLDocument interface for the current document. IWebBrowser2 gives you access using it's Document property. The Document property returns an IDispatch interface, so we need to QueryInterface the IDispatch interface for an IHTMLDocument interface, like so (raw C++):


IDispatch* pDocDisp = 0;
HRESULT hr = pWebBrowser->get_Document(&pDocDisp);

IHTMLDocument2* pDoc = 0;
hr = pDocDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc);
if (SUCCEEDED(hr)) {

//...

pDoc->Release();
}

pDocDisp->Release();

The IHTMLXxx interfaces follow the W3C DOM specification used for JavaScript very closely. If your familiar with those objects, the IHTMLXxx interface will be easy to grasp. In fact, if you know how to do something using JavaScript, you can duplicate it your compiled code using the IHTMLXxx interfaces.

That said, you can get the current selection as a IHTMLTxtRange from the document element. Once you have a text range, you can retrieve the plain text or HTML text as shown below:


IHTMLDocument2* pDoc = ...;

IHTMLSelectionObject* pSelection = 0;
HRESULT hr = pDoc->get_selection(&pSelection);
if (SUCCEEDED(hr)) {
IDispatch* pDispRange = 0;
hr = pSelection->createRange(&pDispRange);
if (SUCCEEDED(hr)) {
IHTMLTxtRange* pTextRange = 0;
hr = pDispRange->QueryInterface(IID_IHTMLTxtRange, (void**)&pTextRange);
if (SUCCEEDED(hr)) {
CComBSTR sText;
pTextRange->get_text(&sText);
// or
pTextRange->get_htmlText(&sText);
//...
pTextRange->Release();
}
pDispRange->Release();
}
pSelection->Release();
}

pDoc->Release();
 

Title请教一个关于Html视图的问题
Q我在对话框程序中嵌入了一个Html视图,打开了一个网页,现在我想向网页传数据,并且要重网页接收数据,我该怎么做啊???
 
Ahttp://blog.csdn.net/jiangsheng/archive/2003/08/15/3793.aspx

集成浏览器控件时获得文档接口
当集成浏览器控件的时候,执行下列步骤获得文档接口:

调用 IWebBrowser2::get_Document 获得文档的 IDispatch 接口。(译者注:MFC的CHtmlView的GetHtmlDocument方法,浏览器控件的Document属性或者DHtmlEdit控件的DOM属性也可以用于获取文档接口)
调用在前面步骤中获得的IDispatch指针的的QueryInterface,请求IID_IHTMLDocument2。
使用文档接口

一旦你获得了文档接口,你就可以使用任何一个IHTMLDocument2接口获得或修改文档的属性。这通常包括从文档包含的不同的元素中得到一些IHTMLElementCollection接口。

一个非常普遍的集合对象是all集合对象。all集合对象是通过使用IHTMLDocument2::all (译者注:原文如此,似乎应该改成get_all)方法获得的。 这个方法返回一个包含文档的所有元素的IHTMLElementCollection接口。然后你可以使用IHTMLElementCollection::item方法枚举元素。 IHTMLElementCollection::item方法为你提供一个你能调用 QueryInterface ,请求IID_IHTMLElement的IDispatch指针。这将会给你一个你能用来为个别的元素获得或设置信息的IHTMLElement接口指针。

大多数的元素提供一个接口操纵那个特定的元素。这些元素相关的接口名字具有IHTMLXXXXElement的格式,这里XXXX是元素的名字。要获得元素相关的接口,可以在IHTMLElement接口上调用QueryInterface,请求被需要的元素相关的接口。举例来说img 元素提供一个 IHTMLImgElement接口以可能用来明确地操纵img元素。要查看可用的元素相关的接口列表,查看接口和脚本对象的接口列表。
TitleAccess数据库函数问题
Q使用Access数据库,用MS Access建一个查询Table1_View,SQL语句如下:
SELECT MyName, StrReverse(MyName) AS ReMyName FROM Table1 ORDER BY StrReverse(MyName)

在MS Access中运行正常,可以打开Table1_View记录集,但要在C Builder中打开这个记录集时,返回错误信息:表达式中‘StrReverse’函数未定义。

请问是什么原因?如何解决?
ADAO中不支持从外部直接访问内建函数。参考http://support.microsoft.com/?kbid=210439
Title>>>>平台调用问题,如何用C#模拟C++结构中的联合(C#调用C++DLL)?...在线等..
Q参阅文档(写的很清楚,但我的还是出错)
http://www.cnblogs.com/allenlooplee/archive/2004/12/25/81917.html

问题是这样的:在C++DLL的接口函数中要传递一个结构,此结构中包括一个联合,我用C#来写这个结构并模拟这个联合,但老出错,请大家帮忙!

C++结构声明原型
typedef struct cmppe_packetcmppe_packet;
struct cmppe_packet{
cmppe_headpk_head;/*接收到的包头信息*///结构
dpl_int32_tresult;/*表明解析该包的结果*/ //无符号INT型
union{//联合
cmppe_deliverpk_deliver;
cmppe_login_resppk_login_resp;
cmppe_submit_resppk_submit_resp;
}pk_data;
};
我用C#写的模拟:
[StructLayout(LayoutKind.Sequential)]
public struct cmppe_packet
{
public cmppe_headpk_head;/*接收到的包头信息*///结构
public intresult;/*表明解析该包的结果*/
public pk_data_struct pk_data;
}
     ///
/// C#结构实现联合的方法 cmppe_packet
///

[StructLayout(LayoutKind.Explicit, Size=1000)]//
public struct pk_data_struct
{
[FieldOffset(0)]
public cmppe_deliverpk_deliver;
[FieldOffset(0)]
public cmppe_login_resppk_login_resp;
[FieldOffset(0)]
public cmppe_submit_resppk_submit_resp;
}
作为参数传递此结构是用 REF 引用 类型的。

现在在执行时出现如下错误。

其他信息: 因为格式无效,未能从程序集 esp, Version=1.0.2060.400, Culture=neutral, PublicKeyToken=null 中加载类型 esp.pk_data_struct。
AInterop and Unions
http://blogs.msdn.com/jaredpar/archive/2005/05/13/417263.aspx


[ DllImport( "api.dll", CharSet=CharSet.Ansi)]
public static extern int cmpp_recv([MarshalAs(UnmanagedType.LPStruct)] conn_desc conn , [MarshalAs(UnmanagedType.LPStruct)] cmppe_packet cp,char is_break,ref int seq);//@@无符号char int
更改为
[ DllImport( "api.dll", CharSet=CharSet.Ansi)]
public static extern int cmpp_recv([MarshalAs(UnmanagedType.LPStruct)] conn_desc conn , IntPtr cp,char is_break,ref int seq);//@@无符号char int

然后写下列函数:
private int CmppRecv(conn_desc conn, cmppe_packet cp,char is_break,ref int seq)
{
int strusize = System.Runtime.InteropServices.Marshal.SizeOf(cp.GetType());
IntPtr pp = System.Runtime.InteropServices.Marshal.AllocHGlobal(strusize);
byte[] ppp = new byte[strusize];
int stat = esp.cmpp_recv(conn,pp,is_break,ref seq);//从ISMG服务器接收数据包,并对接收的数据包进行解析
System.Runtime.InteropServices.Marshal.Copy(pp,ppp,0,strusize);
System.Runtime.InteropServices.Marshal.PtrToStructure(pp,cp);
System.Runtime.InteropServices.Marshal.FreeHGlobal(pp);
return stat;
}
最后调用stat = esp.cmpp_recv(conn,cp,'0',ref aa);更改为stat=CmppRecv(conn,cp,'0',ref aa);即可。
 

Title问个简单的VC问题
Q问个简单的VC问题啊:
VC中打开文件对话框我想再增加一种类型,怎么修改那个资源字符串IDR_MAINFRAME啊,现内容是
Person/n/nPerson/nPER File(*.per)/n.per/nPerson.Document/nPerson Document
我想加个.txt的
A横秋的文件对话框教程
http://community.csdn.net/Expert/topic/4208/4208272.xml?temp=.3928339

MFC Document/View documentation and enhancements
http://www.codeproject.com/docview/DocViewEnhancements.asp

HOWTO: How to Support Two File Extensions per MFC Document Type
http://support.microsoft.com/kb/141921/

Title怎样通过SHGetFileInfo取得"桌面"图标?
Qrt
ASHGetFileInfo
IShellIcon::GetIconOf
http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx

ITEMIDLIST* pidlDeskTop;
if( S_OK != SHGetSpecialFolderLocation( NULL, CSIDL_DESKTOP, &pidlDeskTop ) )
{
return FALSE;
}

SHFILEINFOW fi = { 0 };
if( SHGetFileInfoW( ( WCHAR* )pidlDeskTop, 0U, &fi, sizeof( SHFILEINFOW ), SHGFI_PIDL | SHGFI_SYSICONINDEX ) != 0 )
{
// fi.iIcon 就是桌面图标在 SYSTEM IMAGE LIST 中的序号
}

IMalloc* pMalloc;
if( SUCCEEDED( SHGetMalloc( &pMalloc ) ) )
{
pMalloc->Free( pidlDeskTop );
pMalloc->Release( );
}

Title向会使用“WebBrowser组件”的朋友请教!
FAQ咱们用WebBrowser编写的浏览器,点击网页上的一个连接的时候,有时会使用IE打开页面,而不是使用咱们自己的浏览器打开页面,如何解决这个问题??
AHOW TO: Use the WebBrowser Control NewWindow2 Event in Visual C# .NET.
http://support.microsoft.com/?id=815714
Title如何用c++/cli继承自己的license类
Q我想从system.componentmodel.license继承自己的类,但是,dispose总是不行,请大家给个建议!
public ref class MyLicense : public License
{
public:
MyLicese(LicenseProvider^ owner, String^ key)
{
this->owner = owner;
this->key = key;
}

// ~MyLicense(){} <-------------这两种都不行
// virtual void Dispose() override {}

property String^ LicenseKey
{
virtual String^ get() override
{
return "";
}
}
private:
LicenseProvider^ owner;
String^ key;
};

上面是我的源代码。我重载dispose确实没有什么用处,但是我不重载的话,我的类也被认为成了abstract的了,因为基类license里的dispose是个纯虚的,我必须重载啊。不然我就没办法在我的licenseprovider的getlicense函数里gcnew 我的license类了。
Apublic ref class R {
public:
!R() { Console::WriteLine( "I am the R::finalizer()!" ); }
};

在修订版语言设计中,析构函数被内部重命名为Dispose()方法,在派生类析构函数结束之后会自动调用基类析构函数。我不知道你重载Dispose方法有何特别处理。

建议重写基类,或者使用mc++语法编写你的派生类。

Title关于axWebBrowser控件的,如何判断它的newwindow2事件是因为遇到了包含“window.open”的脚本被触发还是用户选择了右键-》在新窗口打开
Q关于axWebBrowser控件的,如何判断它的newwindow2事件是因为遇到了包含“window.open”的脚本被触发还是用户选择了“右键-》在新窗口打开”而被触发?
小弟想做一个简易浏览器,屏蔽掉弹出窗口,但是允许用户选择“右键-》在新窗口打开”打开新窗口,请问有办法吗?
A在Windows XP SP2中,弹出对话框之前会触发NewWindow3事件。
你也可以通过将window对象的showModalDialog属性设置设置为自己的函数来捕获弹出的窗口,但是这需要用类似insertAdjacentHTML的方法将自己的
相关推荐
&lt;p&gt; &lt;span style=&quot;font-size:14px;color:#E53333;&quot;&gt;限时福利1:&lt;/span&gt;&lt;span style=&quot;font-size:14px;&quot;&gt;购课进答疑群专享柳峰(刘运强)老师答疑服务&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;color:#337FE5;&quot;&gt;&lt;strong&gt;为什么需要掌握高性能的MySQL实战?&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span&gt;&lt;span style=&quot;font-size:14px;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了&lt;/span&gt;&lt;span style=&quot;font-size:14px;&quot;&gt;「高性能 MySQL 知识框架图」&lt;/span&gt;&lt;span style=&quot;font-size:14px;&quot;&gt;,帮你梳理学习重点,建议收藏!&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; &lt;img alt=&quot;&quot; src=&quot;https://img-bss.csdnimg.cn/202006031401338860.png&quot; /&gt; &lt;/p&gt; &lt;p&gt; &lt;br /&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;color:#337FE5;&quot;&gt;&lt;strong&gt;【课程设计】&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;br /&gt; &lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。&lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;br /&gt; &lt;/span&gt; &lt;/p&gt; &lt;p&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;strong&gt;一、性能优化篇:&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的&ldquo;坑&rdquo;。&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;br /&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;strong&gt;二、MySQL 8.0新特性篇:&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;br /&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;strong&gt;三、高性能架构篇:&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;br /&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;&lt;strong&gt;四、面试篇:&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;text-align:justify;&quot;&gt; &lt;span style=&quot;font-size:14px;&quot;&gt;程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。&lt;/span&gt; &lt;/p&gt;
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页