![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux/C++
thequitesunshine007
探索者
展开
-
C++保留小数后几位
#include #include ofstream ofs;ofs.open(xxx);ofs原创 2023-11-08 12:01:29 · 127 阅读 · 0 评论 -
使用C++构建安全队列
【代码】使用C++构建安全队列。原创 2023-10-29 12:57:10 · 464 阅读 · 0 评论 -
C++开发面试常考
C++后台开发面试常考-pudn.com原创 2022-12-21 16:07:05 · 104 阅读 · 0 评论 -
程序日志模块的两种模式
程序员都知道程序的运行日志在不少时候都非常有用,利于排查、理清逻辑。一般而言,日志都按天生成,并且具备自动清理多少天以前的旧日志,避免无限增长占用磁盘。下图展示了2种日志模式。原创 2022-11-07 16:06:02 · 392 阅读 · 0 评论 -
Window 10下SQL Server的安装配置以及C++使用案例
参照下面这篇博客实现即可。里面提供了安装包下载方式(百度网盘有点慢)、安装及配置步骤。原创 2022-09-06 08:57:23 · 813 阅读 · 0 评论 -
C++获取系统毫秒级时间(自1970年1月1日至今的毫秒数)
/跟系统时间相关的。原创 2022-08-30 16:20:18 · 1021 阅读 · 0 评论 -
Windows下MySQL数据库的安装、配置及C++使用案例
注意按照文中提示,配置好环境变量。原创 2022-08-02 11:41:34 · 508 阅读 · 0 评论 -
用STL库创建线程
用STL库创建线程原创 2022-07-13 16:27:36 · 309 阅读 · 0 评论 -
c++实现basename
window API居然不包含Linux中很好用的basename函数,实现了一下,留个记录,省得日后重复写。std::string m_basename(std::string fullPath){ size_t index_1 = fullPath.find_last_of("/"); size_t index_2 = fullPath.find_last_of("\\"); if(index_1 == string::npos && index_2原创 2022-02-16 17:14:52 · 1713 阅读 · 0 评论 -
C++ 环形缓冲区(队列)简单实现
1. 说明在实际工作中,如果数据流量过大,可以先把数据接收到数据缓冲区中,处理之后再取出。我们定义的包协议可以采用定长包,可以采用不定长度的包,环形缓冲区都能处理。2. 使用场景2.1 生产消费的场所在 “生产者--消费者”模式中,往往会用到这种环形缓冲区的功能。2.2 线程间高速通信的场所3. 使用的局限性主要适用于单向传输。不太适用于双向传输的情形。4. 代码展示CircleBuffer.h#pragma once# include <stdint.h&原创 2021-10-25 16:01:15 · 2710 阅读 · 0 评论 -
Windows下select模型(以及EAGAIN、EWOULDBLOCK、EINTR)
在这里记录一下,以前都是新项目用到了就从旧项目中拷贝。自从将博客当作记事本,发现自己多了一个好习惯。Windows下select模型_程序员攻略-CSDN博客EAGAIN、EWOULDBLOCK、EINTR - markqian86 - C++博客...原创 2021-09-28 11:15:36 · 600 阅读 · 0 评论 -
智能指针的使用
智能指针在C++11版本之后提供,包含在头文件<memory>中,shared_ptr、unique_ptr、weak_ptr。1,shared_ptr的使用shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。每使用他一次,内部的引用计数加1,每析构一次,内部的引用计数减1,减为0时,自动删除所指向的堆内存。shared_ptr内部的引用计数是线程安全的,但是对象的读取需要加锁。初始化。智能指针是个模板类,可以指定类型,传入指针通过构造函数初始原创 2021-09-01 14:04:23 · 1416 阅读 · 0 评论 -
自动根据本机字节序 将小端字节序的报文(字符数组)转为整数
1,判断本机的字节序(大端优先、小端优先)/**判断当前PC为大端还是小端字节序@ 返回值: 1:大端;0:小端。*/int JudgeEndianOfPC(){ int num = 1; if (*(char*)&num == 1)//小端 return 0; return 1;}2,改变字节序(大端<--->小端互相转换)/**改变字节序,变为与原来相反的字节序*/void EndianSwap(char *pData, int leng原创 2021-08-28 13:55:39 · 304 阅读 · 0 评论 -
套接字(描述符)读取指定的字节数
/* 检测fd句柄是否可读,ms毫秒超时参数:df [in] 检测的句柄ms [in] 超时,毫秒返回:1 可读,或者已经断开0 超时,仍然不可读-1 错误*/int IsReadable(SOCKET fd, int ms){ //描述符集 fd_set fdSet, oldFdSet; FD_ZERO(&fdSet); FD_SET(fd, &fdSet); // select超时时间 timeval tm; tm.tv_sec = 0;.原创 2021-08-24 22:58:31 · 133 阅读 · 0 评论 -
Qt Creator远程调试嵌入式ARM开发板
1 环境Win10 64位系统上通过Virtual Box安装了一个Ubuntu虚拟机。ubuntu的版本:Linux kernel 4.15.0-142-generic #146~16.04.1-Ubuntu SMPUbuntu虚拟机中安装了Qt Creator,其版本为:Qt Creator 4.5.1Based on Qt 5.10.1 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit)Built on Feb 10 2018 04:2.原创 2021-08-19 11:30:04 · 3570 阅读 · 1 评论 -
C++中调用Python的办法
1 背景一直采用C++作为主语言开发,最近遇到一个项目需要解析PDF文件中的文本内容,直接采用C++来做显得不是很方便,但用python来做就显得很简单了。难点在于如何C++语言环境下调用python来实现功能。2 开发环境Python版本为: 3.7.3(32 bit)版本。QT版本为:Qt 5.12.2(MSVC 2017, 32bit)QtCreator中项目的配置如下:重要的事情(版本匹配): 请确保Python版本与QT版本的...原创 2021-08-12 09:46:18 · 922 阅读 · 0 评论 -
使用QTCreator编程时,如何利用dmp文件定位程序奔溃
写这篇文章之前,看了一些其他人的博客,但不是很详细,缺这少那的,好多都是复制粘贴别人的东西。自己动手弄了弄,可以使用,就记下来备忘与分享。前言、开发环境说明编程IDE为:QTCreator。 Qt版本为5.12.2,编译器为安装VS2017社区版时自带的MSVC2017,32bit。一、 使得dmp文件能产生1、在pro文件里添加:#设置编译选项生成dmp文件QMAKE_CFLAGS_RELEASE = -O2 -MD -ZiQMAKE_LFLAGS_RELEASE = /INCREMENT原创 2021-03-10 10:19:46 · 1571 阅读 · 1 评论 -
error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
error C2447: “{”: 缺少函数标题(是否是老式的形式表?)网上有人说 “这个BUG是因为在win7上使用了 LF 的格式编码导致的. 使用Notepad++ 修改成 BOM-UTF8 和 windows 的 CR LF 格式一切正常”。确实是格式问题!!! 但windows 的 CR LF 听起来很陌生。不管了,说说我的办法,亲测有效!我用Notepad++打开源文件(在ubuntu中创建并编辑的),全选内容后,点击菜单栏“编码”,在选择“以UTF-8格式编码”,保存文件。重新编原创 2021-01-12 14:41:30 · 25286 阅读 · 8 评论 -
C++按行读取文本并解析
项目中需要按行读取文本文件,并对每一行内容进行解析。每一行都是固定的字段数,字段之间用空格隔开。#include <stdint.h>#include <string>#include <iostream>#include <sstream>#include <vector>//将一行内容line中用空格分隔的字段提取出,存在fields vector集合中void LinetoVector(const std::string&原创 2020-12-24 10:00:33 · 4234 阅读 · 0 评论 -
(Qt中添加编译选项)QT在交叉编译时出现parameter passing for argument of type ‘std::_Rb_tree xxxxx changed in GCC 7.1
QT版本都是5.1x。先是在Ubuntu机器上写的代码,GCC版本为5.4,代码编译无 任何警告。后来移植到开发板(GCC版本为7.1)进行编译时,提示这种警告。 发生在代码中对std::map的erase操作这一行代码上。类似于 itor = infoMap.erase(itor);不知这种警告有何种不良影响,但是几经检查,代码语法是没有错的。STL中map的元素删除不就是这样子吗。解决办法:在项目文件 xxxx.pro中添加下面行:QMAKE_CXXFLAGS += -Wno-psabi再原创 2020-12-01 18:41:04 · 2795 阅读 · 0 评论 -
Ubuntu下网络调试助手 NetAssist
近期在ubuntu下开发一个网络相关的程序。之前在windows上开发时,一直使用NetAssist这个小工具,简洁实用。所以就安装了一个对应版本的网络调试助手 NetAssist。下载地址:链接:https://pan.baidu.com/s/1BroDliYRitu6OWoNWR0BTA 提取码:gpza 复制这段内容后打开百度网盘手机App,操作更方便哦安装方法:sudo dpkg -i deb文件名根据经验,若报依赖关系的错误,我们可以使用以下的命令修复安装。sudo原创 2020-10-21 09:53:13 · 20759 阅读 · 19 评论 -
linux查看进程所有子进程和线程
线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高效的机制。在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然后,各个线程会获得其自身的线程ID(TID)。对于Linux内核调度器而言,线程不过是恰好共享特定资源的标准的进程原创 2020-10-23 18:52:08 · 893 阅读 · 0 评论 -
求字符串的最长回文
主要锻炼的就是动态规划的思想!!!掌握这种思想,工作中不一定用得上,但是多一种思想就多一种可能。//dp[i][j]表示s的字串([s[i],s[j]]闭区间)是不是回文//dp[i][i] = 1; //单个字符是回文串//dp[i][i + 1] = 1 if s[i] = s[i + 1]; //连续两个相同字符是回文串string longestPalindrome(string s){ int len = s.size(); if (len == 0 || len == 1)原创 2020-06-16 17:32:24 · 104 阅读 · 0 评论 -
C++查找指定目录下的特定后缀文件并按照创建时间排序
在一个项目中,遇到了这个需求。于是windows+vs平台上实现了这个功能Demo。测试完毕后移植到了具体的项目中。#include <windows.h>#include <cstdlib>#include <iostream> // std::cout#include <algorithm> // std::sort#include <vector> // std::vector#include <原创 2020-07-06 21:41:46 · 2566 阅读 · 3 评论 -
Ubuntu下Qt程序生成Core文件便于调试
需要在运行时生成core dump文件,以排查出错的代码行/首先在pro结尾里加入:QMAKE_CC += -gQMAKE_CXX += -gQMAKE_LINK += -g在终端输入 ulimit -c,若显示为 0,则不能生成coredump文件。然后输入 ulimit -c unlimited继续在终端运行程序。出错后,会在当前目录生成 core 文件。然后在终端执行 “gdb 你的程序名 core”。然后输入 bt 对该错误进行跟踪调试。(gdb) bt通过调用堆栈,可以看出原创 2020-10-19 16:56:19 · 785 阅读 · 0 评论