自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 socket头文件包含顺序颠倒导致的宏重定义问题

socket编程的时候包含头文件的时候 winsocket2.h 和 windows.h这两个头文件的包含顺序是不能随便的例如#include <winsock2.h>#include<Windows.h>这样的话就没问题但是#include<Windows.h>#include <winsock2.h>这样的话就会出现错误ws2_32.lib的静态链接库,不然创建socket的时候回找不到对应的函数。...

2022-05-31 10:50:07 329

原创 linux下管理员权限gdb调试

进入/etc/sudoers 添加ALL ALL=(ALL) NOPASSWD:/usr/bin/gdb返回到工程的上一级目录添加一个可执行文件其内容为sudo /usr/bin/gdb "$@"打印其位置就是launch.json的"miDebuggerPath": "/home/linx/gdb"

2022-01-11 15:27:37 703

原创 Vscode远程cmake项目gdb调试

在项目的c文件中添加断点 保存所有文件,并将界面切换到主函数所在界面(重要步骤,否则不生成task.json) 点击VS Code界面的小虫子图标 点击“创建 launch.json",选择编译所使用的编译器,之后会出现警告弹窗,直接将其关闭,VS Code自动生成launch.json和task.json将下列代码复制到task.json中替换源代码 { "version": "2.0.0", "options": { "cwd":...

2022-01-11 14:48:23 955

原创 linux(C++代码)获取可用串口并输出

我用的是usb串口,也可以自己改成自己需要获取的串口std::vector<std::string> list; for(int i = 0; i < 256; ++i) { port.clear(); port.append("/dev/ttyUSB"); port.append(std::to_string(i)); fd = open(port.c_str(), O_RDWR | O_N

2021-12-23 16:05:33 1552

原创 使用Opencv 写入、读取Yaml文件

工作里第一次用到yaml文件,如何使用找了半天,写个博客记录一下

2021-12-17 14:55:00 1551

原创 ASCII码与16进制的互相转换(图表)

所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码。下面是一张ASCII和16进制的对应表:关于这张表,主要是键盘上的键值字符在计算机中的二进制存储,为了方便,转化成的16进制表示。所以,45的ASCII表示就是4的ASCII表示和5的ASCII表示联结起来的。每个ASCII字符转化成16进制是两位的16进制数,同样,把16进制数转..

2021-12-16 11:02:11 3317

原创 error:“to_string“ is not a member of ‘std‘等问题CMake解决方案

在做TensorRT相关工作中遇到各种需要编译的工作,遇到了很多坑,发现C++相关真的还挺麻烦和精密的。这里分享一种解决方案:首先在configure里查看自己的C++编译器版本,与gcc版本作对比百度一下gcc对应的C++编译器版本,如果gcc过低考虑升级去5以上,因为vc14在gcc5以上就完美支持了而to_string这个其实是需要用vc14编译器来编译的,在解决gcc版本问题以后在CMakeList.txt文件中,指定编译器版本为vc14注意,一定要先找到哪里定义使用什么编

2021-12-15 14:28:09 2243

原创 hpp头文件与h头文件的区别

hpp,其实本质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。 hpp的优点不少,但是编写中有以下几点要注意:1、是Header Plus Plus 的简写。...

2021-12-14 16:43:53 295

转载 三种编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法)

1 . 匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。ex:int iMyAge; “i”是int类型的缩写;char cMyName[10]; “c”是char类型的缩写;float fManHeight; “f”是float类型的缩写;其他:前缀类型 a b by c cb cr cx,cy dw fn h i l lp m_ n np p s sz w (一一对应关系)数组 (Array) 布尔值 (Boolean) 字节 (By

2021-12-14 16:41:58 334

原创 FTP断点续传

1

2021-10-25 19:53:19 157

原创 构造函数和析构函数能是虚函数吗?

C++:构造函数和析构函数能否为虚函数?简单回答是:构造函数不能为虚函数,而析构函数可以且常常是虚函数。(1) 构造函数不能为虚函数让我们来看看大牛C++之父 Bjarne Stroustrup 在《The C++ Programming Language》里是怎么说的:To construct an object, a constructor needs the exact type of the object it is to create. Consequently,a constr.

2021-09-29 09:58:51 930

原创 Linux下用C语言实现银行小系统 (多进程、MD5加密)

主要分为两人大模块:客户端1、进入时的功能开户、销户、登录、解锁开户:输入姓名、身份证号、设置密码,如果开户成功,则服务器上保存一个账号信号(一个账号存一个文件,文件名建议是账号)。销户:输入帐号、密码,服务器询问是否确认销户,如果确认则服务器删除帐号文件,并记录帐号。登录:输入账号、密码,三次错误账号锁定。解锁:输入账号、身份证号解锁。2、登录成功:存钱、取钱、转账、查询、修改密码存钱:输入存钱金额取钱:输入取钱金额转账:目标帐号和要转的金额查询:不需要输入数据修改密码:原密码和新

2021-08-31 19:20:15 213

原创 C语言Linux环境——使用系统IO实现带覆盖检查的cp命令

1、当系统调用被执行时,需要从用户态切换到内核态,执行完毕后再从内核态切换到用户态,频繁的切换就会导致性能损失。2、标准IO在内部维护一个缓冲区,只有在满足特定条件才会把缓冲区与内核同步,因此降低了系统调用的使用频率,减少用户太和内核态的来回切换次数,因此速度比系统IO要快。3、如果想提高系统IO的速度,可以尝试维护一个更大的缓冲区,这样它会比标准IO更快。4、系统IO中没文本文件读写的函数,可以配合缓冲区+ssanf/sprintf来实现。 注意:普通情况建议使用标准IO(比直接使用...

2021-08-19 19:22:10 226

原创 通用堆——哈夫曼树解压缩

前文的通用堆作为辅助工具https://blog.csdn.net/fzh1038526545/article/details/119392304?spm=1001.2014.3001.5501注释掉的为调试代码#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#include <stdint.h>#include "heap_tr

2021-08-04 20:30:06 73

原创 数据结构——树——通用堆

头文件#ifndef HEAP_TREE_H#define HEAP_TREE_H#include <stdio.h>#include <stdbool.h>typedef int (*CMP)(const void*,const void*);typedef struct Heap{ void** arr; size_t cal; size_t cnt; CMP cmp;}Heap;// 创建堆Heap* create_heap(size_t

2021-08-04 20:25:14 64

原创 递归三部曲-————判断二叉树是否对称

递归三部曲确定递归函数的参数和返回值因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。返回值自然是bool类型。代码如下: 1 bool compare(TreeNode* left, TreeNode* right) 确定终止条件要比较两个节点数值相不相同,首先要把两个节点为空的情况弄清楚!否则后面比较数值的时候就会操作空指针了。节点为空的情况有:(注意我

2021-08-02 19:52:30 148

原创 C语言中进制转换与函数

进制转换:为什么使用二进制、八进制、十六进制?由于现在的CPU只能识别高低两种电平,只能使用二进制数据进行计算二进制虽然能够被计算机直接计算,但是不方便书写、记录,因此将数据以八进制方式为了更方便记录在文件中随着CPU位数不断增加,八进制不能满足需求,所以发展出了十六进制来表示数据,由于历史原因八进制还不能退出历史舞台十进制转二进制:(十进制转其他进制)求余法: 用2对数据求余,然后再继续对商求余,知道商为0结束,过程中产生的余数就是该数据的二进制(逆序)n %2 余...

2021-07-17 15:03:01 3011

原创 循环语句和数组

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38...

2021-07-17 14:52:07 140

原创 初涉C语言

C语言简介:C语言诞生于1970~1973年,丹尼斯.里奇和肯.汤普逊编写完成的,归属于美国的贝尔实验室C语言专门为了编写操作系统而诞生的,因此天生适合对硬件编程,也非常适合数据结构和算法的实现,以速度快而著称由于C语言出现时间早,有很多缺陷,也没想到普通人也能用C语言,因此虽然存在陷阱,但是一些前辈帮你总结好了经验<C语言的陷阱与缺陷>虽然C语言自由度很高,但是也意味着危险,自由源于自律C89 语法标准,gcc默认的语法标准C99 是对C语言的扩展和增强 gcc...

2021-07-12 20:48:03 191

原创 Linux & Vim编辑器初步学习

学习目标:初步掌握vim编辑器的使用Linux系统介绍:发展史:BCPL->newB->C->UNIX->Minix->Linux->gccLinux管理硬盘的能力非常强大,所以我们看到只有一分区LINUX系统目录 / 根目录,全部文件读存储在它下面 bin 存储系统命令文件 media 多媒体目录,u盘、光盘、挂载的目录 home 用户主目录,自动生成同用户名的用户主目录 usr...

2021-07-12 20:30:47 98

空空如也

空空如也

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

TA关注的人

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