![](https://img-blog.csdnimg.cn/20210111231624362.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 73
从理论到实战,一步步深入C/C++这门多面手的语言殿堂
小鱼儿LY
越努力 越幸运
展开
-
c++多线程:原子操作
1、原子变量声明头文件#include <atomic> // std::atomic, std::atomic_flag, ATOMIC_FLAG_INIT原子操作:对一个变量的访问操作,原来会分为好几个指令,由于多线程程序中,可能会存在数据竞争,可能导致对变量的操作不是原子性,那么从编译实现角度,将原本几个指令的操作变成一个指令来执行,可以在无锁情况下实现原子操作,从而避免数据竞争。std::atomic::atomicdefault (1) atomic()原创 2022-03-14 17:21:26 · 1818 阅读 · 0 评论 -
C++忘记返回值导致异常bug
问题在C++函数实现时,定义一个函数如下:bool MCUSerialImpl::InitDevInfo(){ _devInfo = std::make_shared<MCUInfo>(); if(!_devInfo) { LOG_ERROR << "_mcuInfo is null"; return false; } Wrapper::TryClearCache<std::string>(_v原创 2022-02-28 21:01:24 · 1598 阅读 · 1 评论 -
力扣194场周赛 1489. 找到最小生成树里的关键边和伪关键边
给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] = [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。最小生成树 (MST) 是给定图中边的一个子集,它连接了所有节点且没有环,而且这些边的权值和最小。请你找到给定图中最小生成树的所有关键边和伪关键边。如果从图中删去某条边,会导致最小生成树的权值和增加,那么我们就说它是一条关键边。伪关键边则是可能会出现在某些最小生成树中但不会出现在所原创 2020-06-26 20:28:03 · 351 阅读 · 0 评论 -
C++实现字节数组与16进制字符串互转,字符串转16进制字符串
无符号字节数组转16进制字符串std::string bytesToHexString(const BYTE* bytes,const int length) { if (bytes == NULL) { return ""; } std::string buff; const int len = length; for (int j = 0; j < len; j++...原创 2019-10-30 21:11:32 · 11123 阅读 · 0 评论 -
QT中将Unicode字符转换成多字节进行Tcp/IP网络传输的解决方案,数据包含0x00字节
最近在做一个网络数据传输的项目,发现字节中带有大量0x00字节,发现如果用QString去表示,一般遇到0字符就直接结束了,经查明,这种带有0x00字节是因为Unicode编码格式表示的,Unicode是一种编码方式-百度百科Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言...原创 2019-08-15 00:34:43 · 1459 阅读 · 0 评论 -
字符串处理 - ANSI - Unicode - UTF8 转换
2008-11-4: 使用MultiByteToWideChar和WideCharToMultiByte写的4个ANSI <-> Unicode <-> UTF-8 相互转换的函数。 2008-11-5: 使用C语言标准库mbstowcs和wcstombs写的w2m和m2w两个函数,分别对应ANSI <-> Unicode 相互转换。 2008-11-8: 包装一下 ANSI <-> UTF-8转载 2016-01-04 10:44:46 · 428 阅读 · 0 评论 -
2015编程之美初赛第三题质数相关
1、解题思路 按题要求,输入数据后先进行是否有两两相同的数据的判断,接着进行从小到大的排序,由于是求质数无关,则集合中任何一对数都不能质数相关,本人采用顺序遍历,将集合中每个数字分为必须包含和必须排外两种情况遍历,首先集合第一个数必须包含,且作为子集中第一个元素,由于是有序数据,只需从集合第二个数遍历起,对加人子集的每个数做质数相关判断(需要遍历一遍),若与子集每个数都质数无关,则将该数纳入该子集原创 2015-04-26 17:27:49 · 948 阅读 · 0 评论 -
2015编程之美初赛第二场扑克牌
一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数。牌的表示方法为XY,其中X为面值,为2、3、4、5、6、7、8、9、T、J、Q、K、A中的一个。Y为花色,为S、H、D、C中的一个。如2S、2H、TD等。输入 第一行为一个整数T,为数据组数。之后每组数据占一行。这一行首先包含一个整原创 2015-04-26 17:19:36 · 798 阅读 · 0 评论 -
2015编程之美资格赛第一题
#include#include#include#includeusing namespace std;struct Date{ int month; int day; int year;};//把月份由数字转换成数字型int str2IntMonth(char month[]){ string months[12]={"January", "February", "原创 2015-04-19 23:22:58 · 396 阅读 · 0 评论 -
VS2008的Debug编译的程序ok,但是release编译的一打开就闪退?问题得到解决。
1.VS2008 + QT 在Debug模式下编译后没有问题,解决了release版本下闪退的问题。原因是我的目标程序SmartFactory.exe依赖库依赖了QT的debug版本的库,结尾以d4结束的动态库,通过dependency查看得知,在链接-输入项中把debug版本的库去掉就可以了。2.不过独立打不开几率很大,但在VS2008中打开又是ok的,后来在师兄的帮助下通过注释掉部分代码定...原创 2018-11-24 16:54:09 · 1191 阅读 · 0 评论 -
来自微信团队的6个开源项目
C/C++协程库LibcoLibco是微信后台大规模使用的C/C++协程库,2013年至今稳定运行在微信后台的数万台机器上。Libco提供了完善的协程编程接口、常用的Socket族函数Hook等,使得业务可用同步编程模型快速迭代开发。早期微信后台因为业务需求复杂多变、产品要求快速迭代等需求,大部分模块都采用了半同步半异步模型。接入层为异步模型,业务逻辑层则是同步的多进程或多线程模型,...转载 2018-11-13 09:18:17 · 1234 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,转载 2015-07-20 17:13:26 · 308 阅读 · 0 评论 -
Va_list简介
va_list是一个宏,由va_start和va_end界定。 typedef char* va_list; void va_start ( va_list ap, prev_param ); type va_arg ( va_list ap, type ); void va_end ( va_list ap ); 其中,va_list 是一个字符指针,可转载 2015-01-05 22:35:19 · 487 阅读 · 0 评论