<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhoumin4576的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/zhoumin4576</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; zhoumin4576]]></copyright><item><title><![CDATA[windows 线程一般用法]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/119120029</link><guid>https://blog.csdn.net/zhoumin4576/article/details/119120029</guid><author>zhoumin4576</author><pubDate>Tue, 27 Jul 2021 01:44:26 +0800</pubDate><description><![CDATA[目录

一. 线程说明

1. 概念

    2. 线程与进程

    3. 执行

二. windows下的各种线程

    1. win32线程

        (1) CreateThread

        (2) _beginthreadex

        (3) 如何选择使用哪个线程函数

    2. mfc线程

        (1) 工作线程：AfxBegin...]]></description><category></category></item><item><title><![CDATA[常见设计模式]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118857124</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118857124</guid><author>zhoumin4576</author><pubDate>Mon, 19 Jul 2021 23:29:17 +0800</pubDate><description><![CDATA[一. 用于创建对象的设计模式

1. 工厂模式

        (1) 说明：需要生产大量对象，且对象具有多态特性。

        (2) 类图结构



        (3) 工厂模式分为"简单工厂"和"抽象工厂"，这里说一下抽象工厂，eg, 要生产不同品牌的电池，简单工厂就能解决，如果还要生产不同品牌的主板呢？那么就需要再增加一个工厂类来生产，抽象工厂类就是这么来的。

        (4) 实际工程中，工...]]></description><category></category></item><item><title><![CDATA[SQL server + Hyper-V配置安装]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118757670</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118757670</guid><author>zhoumin4576</author><pubDate>Thu, 15 Jul 2021 15:41:18 +0800</pubDate><description><![CDATA[一. Hyper-V安装win7系统

  1. 安装虚拟机原因：在虚拟机上安装和配置SQL server，把它当作数据库服务器，本地系统环境编写客户端，实现简单的连接和操作请求；

   2. 虚拟机有很多，比如我们常用的VMware(收费), 选择Hyper-V是因为懒，win10系统自带虚拟机Hyper-V,这样就不用去下载了。 

   3. Hyper-V安装步骤：

     (1) 打开“控制面板”------“程序和功能”------“启用和...]]></description><category></category></item><item><title><![CDATA[python3.9 + vs2013环境配置]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118650526</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118650526</guid><author>zhoumin4576</author><pubDate>Sun, 11 Jul 2021 09:27:48 +0800</pubDate><description><![CDATA[1. python

下载地址：https://www.python.org/downloads/
	安装时最好自定义安装，方便配置vs环境
2. vs插件

下载地址：https://github.com/Microsoft/PTVS/releases/v2.2.2
	默认安装就好了
3. vs 配置

新建python项目


对着"python Environments"右键，选择"view all python Environments" 进入界面
	选择"config"， 然后根据自己安装的p..]]></description><category></category></item><item><title><![CDATA[qt5.7 + vs2013配置]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118639269</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118639269</guid><author>zhoumin4576</author><pubDate>Sat, 10 Jul 2021 19:42:05 +0800</pubDate><description><![CDATA[1. qt下载

qt官方地址：https://www.qt.io/zh-cn/download  有收费也有开源，根据需求选择
	如果线上安装速度慢或一直网络错误的可以下载完整包：https://download.qt.io/new_archive/qt/
	我们要集成到VS，所以选择：qt-opensource-windows-x86-msvc2013_64-5.7.0.exe
2. vs插件下载

下载地址：https://marketplace.visualstudio.com/searc...]]></description><category></category></item><item><title><![CDATA[gdi编程基础]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118569056</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118569056</guid><author>zhoumin4576</author><pubDate>Thu, 08 Jul 2021 16:38:56 +0800</pubDate><description><![CDATA[一. DC

    1. 概念

        设备上下文：通俗来说就是，我们在绘图时用来响应软，硬件消息的媒介。MFC为我们封装了CDC类，那我们就结合MSDN来学习，就显得不会那么乱了。

    2. CDC，CPaintDC, CClientDC, CWindowDC，CMetaFileDC

        CDC：DC的基类。

        CPaintDC：跟进下源代码，发现本质上调用了BeginPaint()和E...]]></description><category></category></item><item><title><![CDATA[MFC小例子说明]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118441980</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118441980</guid><author>zhoumin4576</author><pubDate>Mon, 05 Jul 2021 13:51:22 +0800</pubDate><description><![CDATA[一. 枚举窗口EnumDialog

1. 枚举方式

        (1) 方式一：GetWindow


	    HWND hChildWnd = ::GetWindow(GetDesktopWindow()-&gt;GetSafeHwnd(), GW_CHILD);
	    while (hChildWnd)
	    {
            //Do something

		    hChildWnd = ::GetWindow(hChildWnd, ...]]></description><category></category></item><item><title><![CDATA[MFC基础控件说明]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/118414586</link><guid>https://blog.csdn.net/zhoumin4576/article/details/118414586</guid><author>zhoumin4576</author><pubDate>Sat, 03 Jul 2021 00:33:09 +0800</pubDate><description><![CDATA[目录

一. button 控件

   1. CButton类

  2. CSplitButton类

3. CMFCButton类

4. CMFCColorButton类

5. CMFCMenuButton类

   6.CRadioButton类

   7. CCheckBox类

二. StaticText

    1. CStatic类

    2.CLinkCtrl类

三. ...]]></description><category></category></item><item><title><![CDATA[makefile的使用]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/114335473</link><guid>https://blog.csdn.net/zhoumin4576/article/details/114335473</guid><author>zhoumin4576</author><pubDate>Wed, 03 Mar 2021 21:10:03 +0800</pubDate><description><![CDATA[参考资料：https://blog.csdn.net/zong596568821xp/article/details/81134406
]]></description><category></category></item><item><title><![CDATA[观察者模式的通用性调用]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/114055299</link><guid>https://blog.csdn.net/zhoumin4576/article/details/114055299</guid><author>zhoumin4576</author><pubDate>Thu, 25 Feb 2021 02:31:48 +0800</pubDate><description><![CDATA[1.通用框架接口


#ifndef _OBSERVERIMP_H__
#define _OBSERVERIMP_H__

#include "stdafx.h"
#include &lt;map&gt;
#include &lt;vector&gt;

template &lt;typename ReturnT, typename ParamT&gt;
class ReceiverImplBase;

template &lt;typename ReturnT, typename ParamT&gt;
c]]></description><category></category></item><item><title><![CDATA[vlc + Duilib编写本地播放器]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/111470332</link><guid>https://blog.csdn.net/zhoumin4576/article/details/111470332</guid><author>zhoumin4576</author><pubDate>Mon, 21 Dec 2020 16:24:02 +0800</pubDate><description><![CDATA[一.vlc部分

 1.vlc的环境搭建：https://blog.csdn.net/zhoumin4576/article/details/78166198

 2.vlc的功能封装主要参考了Alberl大神封装的代码：https://www.cnblogs.com/Alberl/p/3407726.html

 3.对vlc部分没有读过源码,只是使用了其简单的功能实现,在实现过程中也遇到了一些问题，在这里进行说明：

   (1)如果播放一个较大的文件,退出时要等待很长时间：强制指定demu...]]></description><category></category></item><item><title><![CDATA[std::chrono获取UTC]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/110406853</link><guid>https://blog.csdn.net/zhoumin4576/article/details/110406853</guid><author>zhoumin4576</author><pubDate>Mon, 30 Nov 2020 22:14:02 +0800</pubDate><description><![CDATA[1.duration

duration：自定义时间间隔单位

	std::chrono::hours hs(2);//2小时
	std::chrono::minutes mns(4);//4分钟
	std::chrono::seconds ss(1);//1秒钟
	std::chrono::milliseconds mls(5);//5毫秒
	std::chrono::microseconds mcs(7);//7微秒
	std::chrono::nanoseconds  nns(8);//8纳秒

du]]></description><category></category></item><item><title><![CDATA[STL比较常见的算法]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/110136344</link><guid>https://blog.csdn.net/zhoumin4576/article/details/110136344</guid><author>zhoumin4576</author><pubDate>Wed, 25 Nov 2020 17:28:22 +0800</pubDate><description><![CDATA[头文件：#include &lt;algorithm&gt;
	sort：数列排序=============is_sorted：是否按规则排序

	std::vector&lt;int&gt; vecArray = { 4, 1, 6, 9, 3, 1, 4 };
	std::sort(vecArray.begin(), vecArray.end());//1, 1, 3, 4, 4, 6, 9 默认升序
	std::sort(vecArray.begin(), vecArray.end(), [](int]]></description><category></category></item><item><title><![CDATA[async替代线程函数]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/110103400</link><guid>https://blog.csdn.net/zhoumin4576/article/details/110103400</guid><author>zhoumin4576</author><pubDate>Wed, 25 Nov 2020 01:47:55 +0800</pubDate><description><![CDATA[async原型：

template&lt;class Fn, class... Args&gt;
future&lt;typename result_of&lt;Fn(Args...)&gt;::type&gt; async(launch policy, Fn&amp;&amp; fn, Args&amp;&amp;...args);

线程创建策略：std::launch::async 实时创建线程====================std::launch::deferred 延迟创建线程，直到..]]></description><category></category></item><item><title><![CDATA[可变模板参数]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/110070359</link><guid>https://blog.csdn.net/zhoumin4576/article/details/110070359</guid><author>zhoumin4576</author><pubDate>Tue, 24 Nov 2020 13:51:40 +0800</pubDate><description><![CDATA[基本语法：
	
template &lt;typename... T&gt;
void f(T... args);
	
	参数个数：

	template&lt;typename... T&gt;
	void PrmCount(T... Prm)
	{
		printf("prm count:%d \n", sizeof...(Prm));
	}


	参数包的展开：递归方式和逗号表达式
	
   (1)递归方式：参数包展开的函数和一个递归终止函数，两个条件必须满足


	template&lt;ty...]]></description><category></category></item><item><title><![CDATA[move和forward完美转发]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/109724081</link><guid>https://blog.csdn.net/zhoumin4576/article/details/109724081</guid><author>zhoumin4576</author><pubDate>Mon, 16 Nov 2020 16:41:04 +0800</pubDate><description><![CDATA[产生条件：一个右值引用参数作为函数的形参，在函数内部再转发该参数的时候它已经变成一个左值------&gt;std::move和std::forward应运而生；
	move vs forward：move-----&gt;无条件转换为右值；forward-----&gt;保持原参数属性，即完美转发；
	举例说明：

#ifndef _TRANS_H__
#define _TRANS_H__

#include "stdafx.h"

class CTrans
{
public:
	template&lt;]]></description><category></category></item><item><title><![CDATA[元组:tuple]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/109713223</link><guid>https://blog.csdn.net/zhoumin4576/article/details/109713223</guid><author>zhoumin4576</author><pubDate>Mon, 16 Nov 2020 02:48:00 +0800</pubDate><description><![CDATA[元组tuple：make_pair的泛化，固定大小不同类型值集合的容器，基本功能跟结构体相似；但又不仅仅限于此，配合模板编程可以生成强大的组件；
	赋值：

	//方式1
	std::tuple&lt;int, int, std::string&gt; tuData1(1, 2, "35");//直接赋值
	//方式2
	std::tuple&lt;int, int, std::string&gt; tuData2;
	tuData2 = std::make_tuple(1, 2, "abc");

取值：]]></description><category></category></item><item><title><![CDATA[初始化列表：initializer_list]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/109677626</link><guid>https://blog.csdn.net/zhoumin4576/article/details/109677626</guid><author>zhoumin4576</author><pubDate>Fri, 13 Nov 2020 16:37:48 +0800</pubDate><description><![CDATA[变长容器STL的初始化：本质是依赖initializer_list的模板类来实现。

	std::vector&lt;int&gt; vecArray = {2, 3, 4, 5, 6};
	std::map&lt;std::string, int&gt; mapArray = { {"张三", 4}, {"李四", 6}, {"孙六", 7} };

成员：size(), begin(), end();
	构造或成员函数初始化入参

#include "stdafx.h"
#include &lt;ini]]></description><category></category></item><item><title><![CDATA[别名using和typedef]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/109590544</link><guid>https://blog.csdn.net/zhoumin4576/article/details/109590544</guid><author>zhoumin4576</author><pubDate>Tue, 10 Nov 2020 02:47:55 +0800</pubDate><description><![CDATA[定义一个map：一个key需要映射两个value---------typedef

typedef std::map&lt;std::string, int&gt; mapList;
typedef std::map&lt;std::string, std::string&gt; mapList1;

使用模板类：-------------typedef

template&lt;typename T&gt;
struct ST_MAP
{
	typedef std::map&lt;std::string,]]></description><category></category></item><item><title><![CDATA[自动类型推导(auto,decltype)]]></title><link>https://blog.csdn.net/zhoumin4576/article/details/109590504</link><guid>https://blog.csdn.net/zhoumin4576/article/details/109590504</guid><author>zhoumin4576</author><pubDate>Tue, 10 Nov 2020 02:04:28 +0800</pubDate><description><![CDATA[auto：在编译时期确定待定义的变量类型；decltype：在编译时期推导一个表达式(不一定要定义)的类型(在满足auto功能的基础上)
	应用场景：多用在泛型编程应用中(stl，模板等)
	typeDerivate.hpp

#ifndef _TYPEDERIVATE_H__
#define _TYPEDERIVATE_H__

#include "stdafx.h"
#include &lt;vector&gt;

class CTypeDerivate
{
public:
	void Func()
	]]></description><category></category></item></channel></rss>