自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 CDockablePane使用技巧

1.默认叠加的tab标签是在下面,如何能显示到上方CTabbedPane::m_bTabsAlwaysTop = true;2.自定义多个Pane叠加在一起的tab样式CTabbedPane::m_StyleTabWnd = CMFCTabCtrl::STYLE_3D_ONENOTE;还需要进一步自定义的话:新建一个子类CTAB继承自CMFCTabCtrlCTabbedPa...

2019-05-27 15:43:14 1078

原创 Linux网络相关

一 打开某端口访问权限高版本linux使用firewall,低版本使用iptables1.查看各组件运行状态systemctl is-active firewalld.servicesystemctl is-active iptables.servicesystemctl is-active ip6tables.service2.使用firewall的.进入图形界面: 系统菜...

2019-01-16 11:20:54 246

转载 MFC 窗口的位置GetWindowRect/MoveWindow/Onsize等(转)

父对话框的整个窗口区=父对话框客户区+父对话框标题栏区1. GetWindowRect()获取的是以屏幕左上角为(0,0)点的窗口区域,是屏幕坐标系。①  如果对父对话框调用GetWindowRect(),那么获取的矩形为父窗口在屏幕中的区域,其中矩形区含标题栏以及外边框。②  如果对控件调用GetWindowRect(),那么获取的矩形是控件在屏幕中的区域。注意在对话框的OnIn...

2019-01-08 16:51:58 1505

转载 Linux下gdb调试

简要方法1.编译时加上-g开关2.让系统生成core文件$ulimit -c unlimited  (只对当前shell进程有效)或在~/.bashrc 的最后加入: ulimit -c unlimited (一劳永逸)3. 发生core dump之后, 用gdb进行查看core文件的内容, 以定位文件中引发core dump的行.gdb [exec file] [cor...

2019-01-04 15:01:10 179

原创 StartServiceCtrlDispatcher时1063错误

https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-startservicectrldispatcheraMSDN如上问题: 服务程序运行时发现在win10 64位机器总是出现1063ERROR_FAILED_SERVICE_CONTROLLER_CONNECT错误,服务列表里有但是运行后始终不起作用....

2018-12-20 12:35:21 3092

原创 STL Map自定义排序——KEY字符串长度

比如针对STL MAP的KEY按照字符串长度排序,网上是这么写的struct CmpByKeyLength { bool operator()(const string& k1, const string& k2) { return k1.length() < k2.length(); } }; 但是如果你这么干,就会发现假如两个k...

2018-12-13 14:38:33 942

原创 VS2013找不到SDKDDKVer.h

WIN7安装VS2013后新建了简单的MFC对话框程序,但提示错误:找不到SDKDDKVer.h。试了很多方式,最后的解决方案是重新运行安装exe点击修复,大概半小时修复完成重启后解决!...

2018-08-16 17:45:14 728

转载 Redis

1.如何后台启动https://blog.csdn.net/ksdb0468473/article/details/52126009https://www.cnblogs.com/pqchao/p/6549510.htmlhttps://blog.csdn.net/m0_37572458/article/details/77675548https://www.cnblogs.com...

2018-08-15 09:06:39 133

原创 配置:本机使用ftp与VMWARE linux系统连接

1.虚拟机可以选择各种网卡类型,我选的是只主机方式2.VW中linux默认是DHCP,进去配置下ip,比如192.168.88.88,255.255.255.0,192.168.88.13.重启下网络 service network restart。ifconfig看下是否设置好了。4.确认linux下ftp已经安装并打开,使用下述命令:which vsftpd   :查看是否安装...

2018-08-07 23:44:10 3231

原创 安卓手机控制局域网电脑主机(开机,关机,访问共享文件)

家里有个淘汰的台式机,用了近十年,打算用作类似NAS的家庭服务器使用安卓手机控制它就成了当然的想法1.远程开机有个名词叫wakeup on lan,简称WOL。网上搜索下,很多教程主要流程就是打开主版的相关选项,配置有线网卡的高级选项和电源选项。配置成功后,即使关闭主机,网卡始终接电,网口灯始终亮着,可以接受外部数据包。然后使用台式机、安卓、苹果来发送唤醒数据包到该主机。我使用...

2018-08-06 13:01:22 9228

原创 ZMQ+VS2013的编译

从官网下载的ZMQ包4.2.3,提供了VS各个版本的项目文件但是看上去只有2015经过一些修改是好用的,2013直接编译必然报错1.修改2015的配置文件(主要是路径错误),然后全部拷贝到2013文件夹,替换2015到2013详见 https://blog.csdn.net/qq_37769473/article/details/80290606 2. 编译的时候,选择VS2013...

2018-08-01 17:47:28 664

转载 windows 版本的snprintf实现

首先,windows下的snprintf和linux下的功能不一致;在VS2015时已经实现了安全的snprintf,在这之前可以采取下面两种方法1. 如果不在乎返回值,使用:#define snprintf(buf,len, format,...) _snprintf_s(buf, len, len-1, format, __VA_ARGS__)2.在乎返回值,使用:(VS20...

2018-07-31 14:59:36 1229

转载 区分操作系统的一些宏

编码的时候经常要用到条件编译,每次都到网上去查比较浪费时间,今天总结一下以备后用编译器GCC#ifdef  __GNUC__#if __GNUC__ >= 3 // GCC3.0以上Visual C++#ifdef  _MSC_VER(非VC编译器很多地方也有定义)#if _MSC_VER >=1000 // VC++4.0以上#if _MSC_VER >=...

2018-07-30 17:21:12 217

转载 C++内存问题大集合(指针问题,以及字符串拷贝问题,确实挺危险的)

内存越界,变量被篡改memset时长度参数超出了数组长度,但memset当时并不会报错,而是操作了不应该操作的内存,导致变量被无端篡改还可能导致内存越界的函数有memset、memcpy、memmove、strcpy、strncpy、strcat、sprintf等等 临时指针问题,std::string、wstring的c_str()是个临时指针c_str()返回值是个char...

2018-07-30 11:12:42 569

原创 STL string类的使用

1.慎用memcpystruct A{ string s; int i;};void fun(struct A* pSrc){ struct A pDest; memcpy(&pDest, pSrc, sizeof(struct A));} 问题在于,memcpy完全是按照内存基于第三个参数指定的字节数来拷贝,对于简单数据类型(非指针)...

2018-07-27 22:36:21 148

转载 宏定义中的#号

一、#名称:字符串化操作符其作:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。使用条件:只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前举例:#define example1(instr) #instrstring str=example1(abc); 将会展成:string str="abc";注意:对空格的处理a、忽略传入参数名前面和后...

2018-07-27 12:35:51 1174

原创 常用的字符串函数:判断数字,IP校验,strncpy安全版本

1.判断字符串是否全是数字或字母bool Isdigital(char* str){ if (!str) return false; return (strspn(str,"0123456789") == strlen(str));}bool IsDigital(string str){ if (str.empty()) r...

2018-07-23 22:25:35 283

原创 线程局部存储 TLS

本来想通过tid为索引建个表来实现该功能,没想到已经有现成的机制。。单个线程的特有数据,介于全局变量和局部变量之间。linux:方法一:int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));int pthread_key_delete(pthread_key_t key);void *pthread_getspe...

2018-07-11 18:50:06 226

原创 Vector线程同步问题

方法一:heads.reserve(2000);方法二:加锁:1头文件#include <pthread.h>2全局定义pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 3使用时:pthread_mutex_lock(&mutex);...pthread_mutex_unlock(&mutex); 4使用完毕pthre...

2018-07-11 13:14:31 960

转载 windows中静态库lib和动态dll的区别及使用方法

1. 静态库lib和动态dll的区别1.1 项目类型VS在建Win32项目时,有以下选项:windows应用程序控制台应用程序DLL静态库最后两个类型:DLL和静态库,这两种项目类型是不可以单独运行的,必须在Windows应用程序调用他们执行,是提供的库函数而已。1.2 两种lib的区别:(1)静态库(.lib)函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译...

2018-04-16 11:22:24 580

原创 VC下四中线程同步的比较

MFC专门封装了四个类用于实现线程同步。他们都继承自CSyncObject。 类名使用方法适用临界区CCriticalSection只需在线程函数中用CCriticalSection类成员函数Lock()和UnLock()标定出被保护代码片段即可。Lock()后代码用到的资源自动被视为临界区内的资源被保护。UnLock后别的线程才能访问这些资源。如果有多个线程试图同时访问临界区,那么 在有一个线程...

2018-04-11 10:42:02 146

转载 Endian的判断和转换

1.判断当前CPU使用哪种C++ Endian?2.如果当前数据的Endian和当前CPU相反,如何装换?代码相当直观:1.判断CPU的C++ Endian:union {  short s;  char c[sizeof(short)];  } un;  un.s = 0x0102;  _isLittleEnd = (un.c[0] == 0x2); 

2014-01-15 22:53:43 853 1

转载 lib,dll,def,exp的信息

简要的介绍一下在微软开发工具中(VC)静态链接库和动态链接库生成过程中出现的.dll .lib .def 和 .exp文件类型。windows平台上可执行文件可能是一个.exe文件也可能四个.dll文件。当然也有一些比较特别的exe或者dll文件,不过他们有其他样式的后缀名比如屏保程序(.scr),ActiveX DLL 用的.ocx 还有各种驱动使用的各种扩展名。这里我们不讨论.com 和一些脚

2013-05-27 16:45:28 936

转载 lib和dll的关系

什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37)    (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是

2013-05-27 16:16:39 432

转载 互斥:软件方法实现之Peterson算法

德国数学家Dekker曾提出了两个进程互斥的算法,不过Dekker算法过于复杂。而Peterson提出了简单且一流的方法。实现如下:boolean flag[2];int turn;void P0(){   while(true){    flag[0]=true;    turn=1;    while(flag[1]&&turn==1)

2011-12-20 13:40:21 802

原创 ARINC619 COP(chapter3)简介

0、传输协议历史:早期429定义COP(见ARINC429 PART3 APPENDIX-F);ACARS的需要在此基础上发展为619 COP(见ARINC619 chapter3);BOP的发展使得429更新,相继出现了william-burg version 1和version3(见ARINC429 PART3 Chapter2/3)。1、A619协议是基于A429 version1的,用

2011-11-24 16:48:53 1558

转载 Big endian and Little endian

谈到字节排序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。ARM同时支持 big和little,实际应用中通常使用little endian。那么究竟什么是big endian,什么又是little e

2011-11-20 23:18:17 356

转载 MSB与LSB,big endian与little endian

Most Significant Bit, Last(Least) Significant Bit最高有效位(MSB) 指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响。例如,在十进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。MSB高位前导,LSB低位前导。谈到字

2011-11-20 23:10:53 1684 1

原创 memcpy引起的一个bug

void *memcpy(void *dest, const void *src, size_t n);由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。memcpy(dest,0,5);真正应该使用的是memset(dest,0,5);关于memset: memset()函数把从开始地址为dest,长度为n的内存区域内的每个字节都设

2011-11-16 23:29:54 1203

原创 ARINC429硬件层初探

1.高速(100KHZ)、低速(12.5KHZ)可选2.32位双字节为传输计量单位,其中bit0-7表征地址label3.8发送端和32接收端,实际16接收端可用4.接收端1-7可工作在block或label模式,若命令其工作在block模式,要在特定寄存器写入block模式的过滤label,否则工作在label模式5.Block tranmitting mode有2buffer,

2011-11-14 14:34:41 1715

转载 Ping/Pong Buffer in ARINC429 Block transmitting Mode

In Arinc429 transmitting mode, there are 2 buffers:buffer0 and buffer1. The mechanics of the 2 buffers is called Ping/Pong. Followings are some tips from internet to explain what is ping/pong and why

2011-11-14 13:43:37 1162

原创 PHP操作文本域,如何实现自动换行并获取换行符

今晚做的一个项目,需要对文本域textarea实现自动换行,同时将包含换行符的数据正确得到。看通常的解说: 如果输入的字符数超过textarea的原定宽度warp属性可以用来设定textarea中的文字如何换行off 停用单词换行hard(physical) 启用单词换行soft(virtual) 启用单词换行,但不传送用户输入的换行符DW中的default是缺省值off  很明显

2011-06-18 00:52:00 3679

原创 PHP的GD组件动态生成的图片点右键为什么不能正常保存

imagettftext($im,$tsize,0,10,20,$tcolor,$tfont,$str);header("Content-Disposition:attachment;filename=soft.png"); header("Content-type:image/x-png");imagepng($im);imagedestroy($im);//调用代码

2011-06-18 00:44:00 1182

原创 C++编程思想读后感(八):Constants

1、

2011-06-15 22:47:00 389

原创 C++编程思想读后感(七):Function Overloading and Default Arguments

1、C++引入函数重载(Overload)的原因有二:其一、方便程序员使用相同的函数名称表达相近的功能实现(仅仅参数不同);其二,构造函数名称已经确定等于类名,而构造函数又极有可能需要多个,函数重载势在必行。2、重载的实现原理:编译器根据函数的作用域、参数列表和函数名生成不同的函数中间变量,以区分不同函数(即使他们的函数名相同),实现函数重载。记住,函数返回值不能作为重载依据!3、unio

2011-06-14 23:14:00 752

原创 C++编程思想读后感(六):Initialization and Cleanup

1、结构体的初始化和清理工作至关重要,在C语言中须依赖程序员的编程习惯,往往造成很多bug。针对此问题,C++中引入了构造函数和析构函数概念,通过编译器行为强制实施初始化和清理工作。2、C++建议在代码中按需实时定义对象或变量,区别于C中的定义变量于代码首部。3、构造函数与析构函数异同如下:   4、假设没有为类定义构造函数,系统会自动生成什么都不干的默认构造函数;

2011-06-14 13:16:00 759

原创 C++编程思想读后感(五):Hiding the Implementation

1、访问控制符:private,public,protected。private的成员函数、成员变量只能供类成员函数或友元使用,外部都无权直接使用。public的对所有都开放。protected在无派生类情况下与private情况一样,有派生类时,该派生类可以在成员函数中使用protected成员,但无法使用private成员。在类域范围内,无所谓访问控制,访问控制实质是对类外部有意义。下表说明的

2011-06-12 21:37:00 656

转载 C++拷贝构造函数之深拷贝、浅拷贝

对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include using namespace std;class CExample {private:  int a;public:  CExample(int

2011-06-11 21:59:00 368

转载 C++中Struct与Class的区别

从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:  (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;  (二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。  除了这两点,class和struct基本就是一个东

2011-06-10 21:05:00 392

转载 Overload,Override和Overwrite

1       overload (重载)    同一作用域内,函数名相同,参数列表不同的多个函数,构成重载。     仅返回值类型不同,不足以构成重载函数,比如:  int Func(int iIndex); // —— ① int Func(std::string strIndex); // —— ② void Func(int iIndex); // —— ③  

2011-06-10 19:43:00 681

空空如也

空空如也

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

TA关注的人

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