自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 Mysql的B-树和B+树分别存取多大的数据

2024-03-01 17:44:24 370

原创 MFC清除屏幕功能

(2)调用showWidnow(FALSE).(3)调用showWindow(TRUE);(1)获取控件的句柄。

2024-01-31 14:47:23 442

转载 c++ - 在 C++ 中将 Excel 电子表格保存为 Jpeg?

【代码】c++ - 在 C++ 中将 Excel 电子表格保存为 Jpeg?

2024-01-03 11:04:57 68

原创 获取ODBC数据源

【代码】获取ODBC数据源。

2023-07-27 10:08:10 97

原创 C++ 下时间转换(TD)

/*****************************************************************************\* ** Filename filetime.c ** ** Description: MsvcLibX interna.

2022-05-27 14:42:56 267

原创 c++简单线程池实现

线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他的任务使用,当线程池中的线程都在处理任务时,就没有空闲线程供使用,此时,若有新的任务产生,只能等待线程池中有线程结束任务空闲才能执行,下面是线程池的工作原理图:我们为什么要使用线程池呢?简单来说就是线程本身存在开销,我们利用多线程来进行任务处理,单线程也不能滥用,无止禁的开新线程会给系统产生大量..

2022-02-09 11:36:13 464

原创 c++回调函数 callback

1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法,比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:typedef void (__stdcall *DownloadCallback)(const char* pURL, bool bOK);void DownloadFile(const char* pURL, DownloadCallback callback.

2022-02-08 14:57:48 1063

转载 sizeof()

一、sizeof概念sizeof()是一个操作符(operator),不是函数。它的功能是返回一个对象或者类型名的长度,类型为size_t,单位为字节。size_t是一个依赖编译器的值,定义在头文件stddef.h,一般定义为 typedef unsigned int size_t;二、sizeof有三种语法:(1)sizeof(object);//sizeof(对象);(2)sizeof(type_name);//sizeof(类型);(3)sizeof object;//si

2022-02-08 11:30:58 13437

原创 C++中使用GSoap

将他解压后,进入到文件夹:gsoap_2.8.18\gsoap-2.8\gsoap\bin\win32里面有2个我们要用到的exe,wsdl2h.exe和soapcpp2.exe,如果缺少一个typemap.dat,则从gsoap_2.8.18\gsoap-2.8\gsoap下拷贝进来,最后就可以启用cmd,开始生成WebService了我的做法是拷贝一个cmd的快捷方式进来,然后右键属性,把它的“起始位置”设置为F:\webSite\gsoap_2.8.18\gsoap-2.8\gsoap\...

2021-11-22 16:49:10 832

原创 open62541 客户端解决只能枚举1000个变量

//// Created by eirik on 05/09/2019.//#include <open62541.h>#include "common_amal.h"#include <iostream>#include <string>#include <vector>using namespace std;void listTreeRecursive(UA_Client *client, UA_NodeId nodeId){ .

2021-11-05 17:37:37 643

原创 c++ char*和wchar*互相转换

1. 问题描述  编写程序时通常会面对一些不同的编码格式,如Unicode和multibytes。在有关字符串的处理时尤其重要,系统编程时通常会遇到很多这样的问题,例如把wchar*的字符串转换为char*的字符串,有时还需要把char*类型的字符串转换为wchar*类型。下面提供几种解决方案。2. 解决方案2.1 wchar* 转到 char*  方法一,使用_bstr_t转换。  #include <comdef.h> // you will need thisconst.

2021-10-11 13:52:20 6571 1

原创 C++/CLI C#字符串转为C++字符串正确写法

常规来说,会调用C#中Runtime::InteropServices::Marshal下的函数去进行转换,如下,使用了其中的一个函数,char * ch = (char*)(void*)Runtime::InteropServices::Marshal::StringToHGlobalAnsi(managedString);std::string myString = std::string(ch);但是这个API会造成内存泄露,网上搜索,StackOverflow上有人遇到相同问题,点击这里

2021-10-08 09:52:31 603

原创 简单的Log实现

#ifndef __MESWEBLOG_H_#define __MESWEBLOG_H_#include <stdarg.h>#include <stdio.h>#define MES_INLINE inline#define _MES_BEGIN_DECLS #define _MES_END_DECLS #define MES_FORMAT(x, y)_MES_BEGIN_DECLStypedef enum { MES_LOGLEVEL_TRACE, .

2021-09-24 11:49:59 105

原创 CSV文件读写

#include<string>#include<iostream>#include<fstream>#include<sstream>/******************************************************** * @function : KVSaveAsCsvFile * @brief : 保存csv文件*******************************************.

2021-09-24 11:45:21 102

原创 线程池合适的线程数量

线程池合适的线程数量是多少?文章目录线程池合适的线程数量是多少?前言1.CPU密集型2.IO密集型3.通用公式4.结论前言本章主要讨论线程池合适的线程数量是多少,以及 CPU 核心数和线程数的关系。我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能。在实际工作中,我们需要根据任务类型的不同选择对应的策略。1.CPU密集型第一种是 CPU 密集型任务,比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。

2021-09-24 11:38:12 553

原创 日常的小结

/********************************************************* @function : IsProcessExist* @brief : 判断进程是否存在* @author : Name* @time : 2021/09/07*********************************************************/BOOL IsProcessExist(const UINT ...

2021-09-18 16:28:56 63

原创 ODBC数据源中枚举数据源名称以及可简单判断数据库类型

ODBC数据源中枚举数据源以及可简单判断数据库类型 SQLHENV henv; SQLRETURN rtcode; rtcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); if (rtcode != SQL_SUCCESS) { SQLTCHAR Sqlstate[6]; SQLINTEGER NativeError; SQL...

2021-03-24 17:47:39 215

原创 2020-12-25

#include <limits.h>/* 2000-03-01 (mod 400 year, immediately after feb29 */#define LEAPOCH (946684800LL + 86400*(31+29))#define DAYS_PER_400Y (365*400 + 97)#define DAYS_PER_100Y (365*100 + 24)#define DAYS_PER_4Y (365*4 + 1)int __secs_to_t..

2020-12-25 15:27:05 157

转载 webService、webSocket、socket、http之间的区别

HTTPHTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接。无状态:每次连接只处理一个请求,请求结束后断开连接。无连接:对于事务处理没有记忆能力,服务器不知道客户端是什么状态。以往实现即时通讯的手段:轮询:客户端定时向服务器发送 Ajax 请求,服务器接到请求后马上返回响应信息并关闭连接。长轮询:客户端向服务器发送 Ajax 请求,服务器接到请求后 hold 住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。

2020-11-30 09:41:05 788

原创 C++ 字符串各类型间转换

inline std::string Enum_TCHARToUTF8(const TCHAR* ptszStr){ int nLen = WideCharToMultiByte(CP_UTF8, 0,ptszStr, -1, NULL, 0, NULL, NULL); char* pszRtn = new char[nLen * sizeof(char)]; WideCharToMultiByte(CP_UTF8, 0, ptszStr, -1, pszRtn, nLen, NU...

2020-08-21 13:24:23 409

原创 Mqtt介绍

MQTT介绍与使用物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。而

2020-08-12 18:17:32 428

原创 GDI+ 保存HDC为位图文件

//GDI+为图片的加载、存储,屏蔽了内部编解码、压缩解压缩等的具体细节,给程序员带来了极大的方便 //目前版本的GDI+支持bmp jpeg gif tiff png等几种格式 //下面的程序基本思路是先将目标DC上的内容存到内存BITMAP //再使用GDI+Bitmap::FromHBITMAP加载内存位图,并保存成文件 //此版本在Win32和MFC环境下测试通过 // //使用GDI+ 保存HDC为位图文件 #include <rpc.h> #in...

2020-08-07 16:21:42 3654

原创 MFC中将view内容保存为bmp

HBITMAP CKChartXYCtrl::GetHBitMap(){ HDC hDC = GetDC()->m_hDC;//获取DC RECT rect; GetClientRect(&rect); HDC hDCMem = ::CreateCompatibleDC(hDC);//创建兼容DC HBITMAP hBitMap = ::CreateCompatibleBitmap(hDC, abs(rect.right - rect.left), a...

2020-08-07 13:36:10 652

原创 ADO 访问数据库常见方法

读写数据库的技术很多,现在多用ADO。ADO以COM方式提供,所以它的很多行为遵循COM规范。首先,要引入ADO的COM文件,它的位置一般在"C:/Program Files/Common Files/System/ado/msado15.dll"。1.引入ADO打开预编译头文件StdAfx.h,写上引入声明:#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","ado.

2020-08-05 16:11:04 867

原创 TDengine C/C++ Connector

TDengine提供了丰富的应用程序开发接口,其中包括C/C++、JAVA、Python、RESTful、Go等,便于用户快速开发应用。C/C++ ConnectorC/C++的API类似于MySQL的C API。应用程序使用时,需要包含TDengine头文件taos.h(安装后,位于/usr/local/taos/include):#include<taos.h>在编译时需要链接TDengine动态库libtaos.so(安装后,位于/usr/local/taos/drive..

2020-08-05 16:10:27 1656

原创 Libmicrohttpd简介

链接:https://ftp.gnu.org/gnu/libmicrohttpd/Libmicrohttpd简介GNU Libmicrohttpd是一个用来在项目中内嵌http服务器的C语言库,它具有以下几个非常鲜明的特点:C语言库,小而快。 API非常简单,且都是可重入的。 兼容HTTP1.1。 支持4种多线程模型(select、poll、pthread、thread poll)。 跨平台。 生成的二制文件只有32K(不包含TLS/SSL等额外功能)。搭建一个简单的本地静态服务器

2020-08-05 16:09:58 1129

原创 GDI+处理带透明区域的png图片

本文的方法可以加载bmp、jpg、png等多种格式的图片,但由于大多软件都使用可带透明色的png图片,所以以加载png图片为研究切入点,找到对应的加载办法。本文结合TrueLink代码的实际使用情况,分别讲述使用GDI+和CImage来加载png图片的方法,并对使用过程中的一些细节和问题进行了总结。GDI+主要使用Image类;CImage则是微软在新版的VS中新增的MFC类,内部主要也是用GDI+来实现的。文中的内容是将原先的几篇博文整理而来。1 图片加载的相关说明 Window...

2020-08-05 16:08:09 699

原创 GDI+中的图片处理类Image或Bitmap

与GDI相比,GDI+要强大非常多。对于Windows应用程序来说,用GDI是比較多的,也是比較熟练的,GDI+相对用的较少一点,可是如今GDI+的使用已经非常普遍了。GDI+支持各种类型图片的处理,比方常见的bmp、jpg、gif、png等类型,特别是GDI+处理png图片时有非常大的优势。有时我们须要将图片文件载入到内存中,然后进行UI的绘制,因为要支持多种类型的图片的载入,所以首先想到的是使用GDI+中的图片处理类Image或Bitmap。有时我们也须要将内存中的位图数据,保存成各种类型的图片文件,我

2020-08-05 16:07:39 3304

原创 RESTful Connector

RESTful Connector为支持各种不同类型平台的开发,TDengine提供符合REST设计标准的API,即RESTful API。为最大程度降低学习成本,不同于其他数据库RESTful API的设计方法,TDengine直接通过HTTP POST 请求BODY中包含的SQL语句来操作数据库,仅需要一个URL。HTTP请求格式http://<ip>:<PORT>/rest/sql参数说明:IP: 集群中的任一台主机PORT: 配置文件中ht..

2020-08-05 16:07:07 409

原创 用GlobalMemoryStatus获取系统内存信息

用GlobalMemoryStatus获取系统内存信息摘要:用GlobalMemoryStatus函数获取系统内存的信息,用GlobalMemoryStatusEx获取内存的使用信息。两者的区别就是前者用4个字节来保存内存大小,后者用8个字节来保存内存大小。关键字:GlobalMemoryStatusExGlobalMemoryStatusMEMORYSTATUSMEMORYSTATUSEX获取Windows内存信息需要使用GlobalMemoryStatus函数和MEM...

2020-08-05 16:06:16 1134

转载 C++关键字的作用

一. staticstatic关键字至少有下列5个作用:(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)限制函数的作用域,在模块内的static函数只可被这一模块内的...

2019-02-27 17:34:33 1054

转载 C++ 位域(Bit Fields)

位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的...

2019-02-27 13:22:48 2742

转载 CSemaphore,CMutex,CCriticalSection,和CEvent的使用心得

临界区(CCriticalSection):临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象     互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打...

2018-05-30 14:47:38 546 1

转载 正确的方法去拦截OnNewWindow2实现在同一个窗口显示_target的网页

// CMy5View message handlers #include &lt;atlbase.h&gt; #include &lt;Mshtml.h&gt; #include &lt;COMDEF.H&gt; void CMy5View::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)  {     // TODO: Add your speci...

2018-02-24 16:29:32 431

转载 MFC视图画图基础

1.BitBlt BitBlt 用于从原设备中复制位图到目标设备,语法格式如下: BOOL BitBlt( HDC hdcDest, // handle to destination DC int nXDest, // 目标矩形区域的左上角x轴坐标点。 int nYDest, // 目标矩形区域的左上角y轴坐标点。 int nWidth, // 在目标设备中绘制位图的宽度。 int nHeight...

2018-02-12 11:46:34 613

转载 用DIB位图显示图像

一、DIB位图结构及注意点:1.DIB结构:一个完整的DIB由两部分组成:一个BITMAPINFO结构和一个存储像素阵列的数组:typedef struct tagBITMAPINFO {               BITMAPINFOHEADER bmiHeader;               RGBQUAD bmiColors[1]; //颜色表              } BITMAP...

2018-02-12 11:45:22 1822

转载 WM_DRAWITEM与DrawItem()的讨论

学习中经常遇到要重写DrawItem()的情况,但又有一个WM_DRAWITEM消息,它们是什么样的关系呢。如果我们要重写一个CButton取名为CMyButton,我们可以重写CMyButton的DrawItem()函数来实现我们的需求,但CMyButton::DrawItem()是在什么时候调用呢?它是在它的宿主类的OnDrawItem()中被调用,OnDrawItem(int nIDCtl,...

2018-02-12 09:59:05 1986

转载 Writing Serializable Classes---定义可序列化的类

尽管MFC的CFile类使文件的读写变得相当容易,但是通常MFC程序都不直接使用CFile对象。相反地,他们使用CArchive类来实现文件的读写,CArchive类最终还是通过CFile类来实现文件输入/输出。MFC得载了  和 >> 操作符来实现数据的进、出,主要是因为程序通常也是将数据存入或将数据取出。Serialization是MFC中一个重要概念,因为他是MFC在文档/视的程序中

2018-01-10 15:43:28 534

原创 C++ 中两个数据交换总结

// 数据交换.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;//采取引用方式templatevoid EXchange(T & a,T & b){  T c;  c = a;  a

2017-10-26 17:17:33 1040

open62541-master.zip

open62541-master.zip

2021-03-24

opencv库函数

opencv提供一些库函数的显示,同时显示一些调用

2015-04-26

sim900a文档

无线移动、定位、打电话、发短信的工具,制作简易电话机

2014-09-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除