自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 error C2143: 语法错误 : 缺少“)”(在“常量”的前面)

error C2143,一个简单的编译问题,却耗费了大量的时间进行分析。【背景】最近做一个项目,需要使用到凌华的运动控制卡和IO卡,在测试工程中,使用的类和引用的库文件都一切正常。测试完成后,本着可重复移植的考虑,将整个文件夹添加到现有工程中,却出现了非常奇怪的编译错误。首先怀疑是重复包含的问题,在每个文件头加入了#pragma once,问题仍然存在。再一个个修改函数的宏和参数名称,最终确定,居然是函数的一个参数名称出现了问题!测试工程没有问题,加入到项目工程却出现了问题,显然与项目工程的文件有关。

2023-05-16 09:55:31 3393

原创 统计学中的P值

P值是Fisher先提出来的“显著性检验”理论体系中的概念,假设检验之所以可行,其理论背景是小概率理论。反之,小概率事件没有发生,则认为原假设是合理的。显著性水平是原假设为真时拒绝原假设的概率,也就是上述说的小概率的界限,常取值0.05,0.01.在显著性水平a下,P值规则为,P

2022-08-04 17:14:00 2289

原创 WSAStartup简要说明

WSAStartup

2022-06-20 17:09:52 670

原创 使用MFC套接字CAsyncSocket进行网络通信—客户端

摘要和软件运行演示见上一篇服务器端的文章。这里重点讲步骤和不同点。一、新建MFC对话框程序,拖入2个Edit控件,1个IP控件,3个botton,布局如图。二、新增一个套接字类CClientSock,重写OnReceive和OnConnect方法,其它方法不是必须的。我为了测试增加了OnClose和OnSend方法。SendMsgToRecvWnd函数是以发消息的方式显示信息到窗口...

2020-04-10 14:00:16 888

原创 使用MFC套接字CAsyncSocket进行网络通信——服务器端

MFC使用CAsyncSocket类对网络通信的操作进行了封装简化,使得简单重写几个接口函数就可以进行网络通信。不过在实际使用中,还有几个注意点,才能正常通信。本文以实例方式进行说明

2020-04-10 13:16:34 1278 1

原创 软件架构图学习摘抄

要点:创建和维护精确而高质量的架构图很不容易,我们经常不是画的太多就是太少、又或者是不相关的,因为我们常常搞不清楚这个图是给谁看的。 其中一个最大的错误就是我们总想着画更详细的架构图,但是系统中的部分却是高度易变的。除非这个架构图可以自动产生,否者人工维护这个图将是一个十分烦人的事情。 实际上,绝大多数的相关人并不关心详细的架构图,他们只关心一些高层的内容和边界。除此之外的内容,可能只有开...

2019-11-21 09:58:10 210

原创 二维码原理

由来常见的二维码QR Code在1994年由日本的腾弘原发明,由条形码发展而来,相比条形码,存储能力大大提升了。二维码组成和各部分含义生成过程1.Position Detection Pattern首先,先把Position Detection图案画在三个角上。(无论Version如何,这个图案的尺寸就是这么大)然后,再把Alignment图案画上(无论Versio...

2019-11-07 09:20:03 566

原创 单调递减栈

根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用0来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温列表长度的范围是[1, 30000]。每个气温的...

2019-10-31 08:22:58 1338

转载 消息中的wParam和lParam

具体是这么说:“在Win 3.x中,WPARAM是16位的,而LPARAM是32位的,两者有明显的区别。因为地址通常是32位的,所以LPARAM 被用来传递地址,这个习惯在Win32 API中仍然能够看到。在Win32 API中,WPARAM和LPARAM都是32位,所以没有什么本质的区 别。Windows的消息必须参考帮助文件才能知道具体的含义。如果是你定义的消息,愿意怎么使这两个参数...

2019-10-22 09:48:33 797

原创 字母异位词分组

LeetCode的一个题目,记录一个巧妙的解法,刚看到是感觉脑洞大开。以vector<string>作为value值这是我没有想到的。 unordered_map<string, vector<string>> dicts; vector<vector<string>> ret; for (auto str : strs)...

2019-10-17 16:38:07 111

转载 STL各种数据结构及其底层实现

STL各种数据结构及其底层实现vector:底层数据结构为数组 ,支持快速随机访问 。扩容规则为:当我们新建一个vector的时候,会首先分配给他一片连续的内存空间,如std::vector<int> vec,当通过push_back向其中增加元素时,如果初始分配空间已满,就会引起vector扩容,其扩容规则在gcc下以2倍方式完成:首先重新申请一个2倍大的内存空间;然后将原空间的...

2019-10-12 15:41:49 314

转载 windows 程序使用map文件进行错误定位

windows 程序使用map文件进行错误定位

2019-10-09 19:48:10 275

转载 递归和迭代的区别、联系、优缺点及实例对比

1.概念区分递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件...

2019-09-26 10:34:37 1113

原创 两数之和

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]这是数据结...

2019-09-19 09:17:54 67

原创 工业相机和普通相机的区别

工业相机是机器视觉系统的一个关键组件,本质是将光信号转换为电信号。选择合适的相机是机器视觉系统设计的一个关键环节,相机的选择直接关系到采集到的图像质量。工业相机和普通相机的区别如下:工业相机性能和结构要求高。工业相机要求能在较差的环境下长时间稳定可靠的使用,结构上紧凑结实易于安装。一般相机根本做不到这点。 工业相机的快门时间非常短,能抓拍高速运动的物体。比如将名片贴到风扇上,使用工业相机...

2019-05-29 09:08:19 2098

原创 LabVIEW图像程序与CImage类同时使用错误

工作需要使用LabVIEW开发了一个OCR识别图像程序dll,再使用一个控制台程序调用接口。控制台程序使用CImage类来读取图像,在开发环境中可以正常读取,但是在实际使用环境中,却会出现以下错误。...

2019-05-22 10:05:06 155

转载 win7结束进程 时,提示“拒绝访问”、“没有此任务的实例运行”怎么办?

转载自:https://www.cnblogs.com/jieliujas/p/9413064.html最近工作上碰到无法结束进程的问题,上面这篇文章概况的很全面。开发了个程序,创建了一个进程,但是杀不掉了,在任务管理器里面 右键--结束进程,提示“拒绝访问”,或者“没有此任务实例运行”怎么办?直接给答案:PCHunter具体方法:1.打开PCHunter,在进程选项...

2019-05-17 07:57:36 10004 3

转载 C++常用路径处理函数

转载自:https://www.cnblogs.com/lhwblog/p/6522768.htmlshlwapi.dll中的实用API函数发布在windows system目录下有这个动态链接库BOOL PathFileExists(LPCTSTR lpszPath)功能:检查文件/路径是否存在LPTSTR PathFindFileName(LPCTSTR pPath...

2019-05-07 11:09:53 1694 1

原创 常用告警屏蔽项

近来维护两个用了10几年的C++项目代码,里面有很多和自己编程习惯不符合的。一编译一大堆警告,长长的一大段,找错误都很麻烦,又不想大改原来的代码,毕竟是产线稳定运行的版本。在不影响功能的情况下,把这些警告屏蔽了,编译后瞬间清爽多了。屏蔽的常见的告警如下://强制类型转换#pragma warning(disable : 4244)//宏重定义#pragma warning(d...

2019-05-06 08:59:30 1098

原创 优美的删除链表节点实现

今天在LeetCode上看到一段非常优美的删除链表节点代码struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode *removeElements(ListNode *head, int val){ if (!head) return he...

2019-03-30 21:38:20 122

转载 VC6在Win10系统下运行及单步跟踪调试

http://blog.sina.com.cn/s/blog_45eaa01a0102wiun.htmlVC6在Win10系统下运行及单步跟踪调试操作系统经历了 Win9x, WinXp(WinNT), Win7, Win8 ,Win10。现今推出的笔记本电脑,都已经安装win10了,早期的vc6程序要想在上面运行,需要做简单的设置。一 vc6的设置在桌面上右击 “vc6的快捷方式...

2019-03-12 14:43:12 955

转载 9*9数独问题——深度搜索算法

转自:http://blog.csdn.net/qq_31558353/article/details/50615760作者原来的程序有问题,会改变到已有的数值。我在原有的基础上加了book标记,修改后验证OK。数独是经典的逻辑问题,也可以使用DFS算法求解,下面短短几十行代码,就解决了数独的问题。计算机真是个好东西啊!#include "pch.h"#include&lt;s...

2019-03-01 22:06:26 5259 1

原创 深度搜索算法查找最短路径

如图,百度地图上有5个地点,各个地点间是单向的路径,试求出从1到5的最短路径。从图中可以得到一个5*5的二维矩阵,利用深度搜索算法,求出最短路径。从最后的运行结果,可以直观的看出搜索的过程代码实现如下:#include "pch.h"#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;vector&g...

2019-02-27 11:05:04 4448

原创 图的遍历——广度优先搜索

按照图的广度优先搜索算法,那么可以很直观的看出上一篇文章中图的遍历顺序如下程序实现如下:#include "pch.h"#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;using namespace std;const int P_Num = 5;#define N 10000const int iTreeMap[P_Num...

2019-02-21 15:47:29 250

原创 图的遍历——深度优先搜索

如图,怎么用数据结构来表示这个图呢?最常用是用一个二维矩阵来存储。如下图所示,0表示自己到自己,1表示两点直接有连线,∞表示没有连接。这种表示法称为图的邻接矩阵表示法可以看到得到的二维矩阵是对称的,这是因为图是没有方向的。下面程序实现深度优先搜索算法遍历图#include "pch.h"#include&lt;stdio.h&gt;#include&lt;stdlib.h...

2019-02-21 15:12:03 557

原创 广度优先搜索算法解迷宫问题

前面有使用深度优先算法来解迷宫问题,思路是使用递归的方法,先进行深度的尝试,找到或者无法抵达时返回上一级函数继续执行。本文使用广度优先算法,思路如下:如图在(1,1)的位置开始,广度优先算法的步骤是搜索一步能够抵达的所有位置作为第一层,然后在上一层的基础上再走一步,并且不走重复的格子,作为下一层,这样一层一层的搜索,达到终点再停止。下面程序用广度搜索算法解决迷宫的问题,数据结构十分巧妙...

2019-02-19 21:14:36 1340

原创 Linux下的压缩和解压缩命令

compress/uncompress 后缀为.z gzip/gunzip 后缀为.gz zip/unzip 是windows下最常见的压缩文件,后缀.zip,保留原文件  备份及还原命令tartar -cvzf hello.tar.gz ./user/mike/hello上面命令将./user/mike/hello文件夹生成1个hello.tar在当前目录...

2019-02-17 15:10:05 187

原创 linux进程管理

进程的启动分为手工启动和调度启动手工启动又分为前台启动和后台启动前台启动:在shell中输入命令执行后台命令:前台启动的命令后增加&amp;调动启动:指在制定时间启动进程 查看进程ps命令常用参数含义:a:显示当前控制终端的进程u:显示用户名和启动时间等信息-e:显示所有进程ps命令常和重定向、管道等命令一起使用如:ps au -e | ...

2019-02-17 14:42:23 153

原创 深度优先搜索算法解迷宫问题

 如图是一个矩形迷宫,需要从起点(1,1)走到终点(4,3),那么需要7步。下面程序完成从起点(0,1)到终点(0,3)的最短距离,结果为12.#include &lt;stdio.h&gt;using namespace std;struct Position{ Position(int row, int col) { x = row; y = col; ...

2019-02-15 18:07:37 2160 1

原创 深度优先搜索算法解ABC + DEF = GHI问题

用深度优先搜索算法解排队问题的时候,你一定发现这跟前面枚举的题目很像,只是打印的条件不一样而已。稍微改改即可完成求解。#include &lt;stdio.h&gt;const int CNT = 9;//9个数的排列//存放数值int a[CNT] = { 0 };//标记CNT个数是否已经放置bool book[CNT] = { false };int iSum = 0;...

2019-02-15 13:12:34 1421

原创 深度优先搜索算法求解排队问题

排队问题是一个非常常见的问题,可以简化为N个不同的数放在不同的位置,每个数在每个位置上只出现一次。深度优先搜索算法关键在于解决“当下应该怎么做”,至于“下一步应该怎么做”是与“当下应该怎么做”是一样的。#include &lt;stdio.h&gt;const int CNT = 4;//4个数的排列//存放数值int a[CNT] = { 0 };//标记CNT个数是否已经放置...

2019-02-15 12:31:57 588 1

原创 炸弹人

对于80后来说,小霸王是抹不去的记忆,还记得当年有一个炸弹人游戏吗?看看下面这一关应该放置在什么地方才能炸到最多的敌人,炸弹能炸到最远距离,碰到墙就停止。以下程序就是求解上面问题的:#include "stdio.h"#include &lt;windows.h&gt;using namespace std;char iGameMap[13][13] = { '#'...

2019-02-15 01:12:37 687

原创 枚举法——很黄很暴力

 下面是一条小学奥数题,用枚举法求解,真的很黄很暴力。这么个控制台程序在我自己的电脑上运行了10+秒。#include "stdio.h"using namespace std;/*题目:ABC + DEF = GHI,其中式子中的字母代表了数字1~9,请打印出所有可能的式子并计算出可能的式子的数量*/int main(){ int a[9] = { 0 };//代表每个...

2019-02-14 20:45:38 1228

原创

前面学习了队列,队列是“先进先出”的数据结构。现在我们学习“后进先出”的数据结构,也就是栈。利用栈的特性,可以很方便的判断一串字符串是不是回文字符串。#include &lt;stdio.h&gt;using namespace std;int main(){ /* 题目:利用栈判断输入的字符串是不是回文 */ char str[128] = "12345654321...

2019-02-13 12:12:00 88

原创 队列

队列是一种特殊的线性结构。它只允许在队列的首部(head)进行删除操作,称为“出队”,而在队列的尾部(tail)进行插入操作,称为“入队”。当队列中没有元素时(即head==tail),称为空队列。在我们的日常生活中,有很多情况都符合队列的特性。比如买票,每个排队买票的窗口就是一个队列。在这个队列当中,新来的人总是站在队列的最后面,来得越早的人越靠前,也就越早能买到票,就是先来的人先服务,我们...

2019-02-13 11:27:19 116

原创 快速排序

冒泡排序解决了桶排序浪费空间的问题,但算法效率却浪费了很多。有没有效率又高,又不浪费空间的算法呢?答案就是“快速排序”。简单说,快速排序就是使用“二分法”,以待排序数组第一个数为基准数,安排两个“哨兵”,左哨兵从左到右寻找第一个大于基准数的数,右哨兵从右到左寻找第一个小于基准数的数,找到则交换。当两个哨兵相遇时,再对相遇点两边的两个数组进行递归排序。#include&lt;stdio....

2019-02-12 23:17:18 68

原创 冒泡排序

int main(){ /* 问题:假设班上有n个同学,考试了,满分是100分。他们的分数是iScore数组里的值,现将他们的分数打印输出。 */ //分数集合 int iScore[] = { 12,35,99,18,76}; //分数个数 int iCnt = sizeof(iScore) / sizeof(iScore[0]); //冒泡排序 //从大到小 for (...

2019-02-12 21:26:55 113

原创 桶插法

int main(){ /* 问题:假设班上有n个同学,考试了,考试的满分是10分,最低是0分。他们的分数是iScore数组里的值,现在将他们的分数打印输出。 */ //分数集合 int iScore[] = { 1,8,3,6,2,8,8,6 }; //分数个数 int iCnt = sizeof(iScore) / sizeof(iScore[0]); //桶个数 con...

2019-02-12 20:23:55 222

原创 GIT是什么?

GIT是什么?世界上最先进的分布式版本控制系统。为什么叫GIT?作者:BlueWanderer链接:https://www.zhihu.com/question/54939657/answer/141820365来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 The name "git" was given by Linus Torvalds...

2019-01-28 17:20:48 941

原创 python实例:使用装饰器实现打印函数的执行时间

# -*- coding: utf-8 -*-import timeimport functoolsdef log(text=''): def metric(fn): @functools.wraps(fn) def wrapper(*args, **kwargs): t_begin = time.time() ...

2019-01-25 14:46:54 3360 1

使用MFC套接字CAsyncSocket进行网络通信——客户端

MFC使用CAsyncSocket类对网络通信的操作进行了封装简化,使得简单重写几个接口函数就可以进行网络通信。资源为客户端程序。 实例使用VS2010编写。

2020-04-10

使用MFC套接字CAsyncSocket进行网络通信——服务器端

MFC使用CAsyncSocket类对网络通信的操作进行了封装简化,使得简单重写几个接口函数就可以进行网络通信,资源为实例工程。 使用VS2010开发。

2020-04-10

嵌入式C/C++语言精华文章集锦

嵌入式C/C++语言精华文章集锦 C 语言嵌入式系统编程修炼 C 语言高效编程的几招 C/C++程序员应聘常见面试题深入剖析

2011-08-09

空空如也

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

TA关注的人

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