c++
wangzai6378
喜欢游戏;但却没有做游戏
展开
-
GCC交叉编译
交叉编译gcc, python在arm机上运行安装包时需要gcc编译器,交叉编译python三方包未成功原创 2022-08-30 13:30:39 · 2346 阅读 · 1 评论 -
c/c++ 获取系统时间毫秒级
获取系统时间毫秒级,作日志使用原创 2022-08-22 11:48:36 · 3671 阅读 · 0 评论 -
CMake交叉编译
cmake 交叉编译原创 2022-06-30 10:32:11 · 313 阅读 · 0 评论 -
借助原子变量,使用CAS完成并发操作
c++11原子变量中的 CAS运用原创 2022-06-17 16:56:01 · 142 阅读 · 0 评论 -
std::memory_order_seq_cst内存序
内存屏障中的memory_order_seq_cst内存序原创 2022-06-17 10:33:13 · 491 阅读 · 0 评论 -
vector::data() 指针使用细节
stl 最常用容器vector接口使用细节,data()指针原创 2022-06-07 15:46:50 · 3636 阅读 · 0 评论 -
valgrind 嵌入式调试
1. 官网下载源码2. cd valgrind-3.18.13. ./autogen.sh4. ./configure --prefix=安装5. make -j46. make install运行时需要设置1. export VALGRIND_LIB=安装目录/libexec/valgrind2. 如果报错,需要安装apt-get install libc6-dbg3. 使用命令行运行valgrind --tool=memcheck --show-mismatche原创 2022-01-24 17:45:11 · 561 阅读 · 0 评论 -
常用排序算法
一、快速排序void splitArray(int arr[], const int start, const int end){ if(start >= end) { return; } int left = start + 1; //用第一个元素做为基数,并拿出来,将剩下的数按这个基数,分开 int right = end; int key = arr[start]; while (left < right)原创 2021-12-24 11:28:10 · 444 阅读 · 0 评论 -
移动构造、移动赋值、构造、赋值,拷贝
class SA //移动构造,多用于资源交换,唯一;文件描述符,内存拷贝(堆区内存)等{public: SA():d_(0),buf_(nullptr){std::cout << "SA()" << std::endl;} SA(const int a):d_(a),buf_(new char[a]){ std::cout << "SA(const int a)" << std::endl; } SA(c.原创 2021-12-07 13:53:41 · 579 阅读 · 0 评论 -
std::promise
#include<iostream>#include<thread>#include<future>int main(int argc, char **argv){ std::promise<int> data; std::future<int> future_data = data.get_future(); std::thread t1([&](){ data.set_value(1.原创 2021-08-10 14:27:01 · 362 阅读 · 0 评论 -
c++ 虚函数类成员指针访问
#include <iostream>class Bomb{public: explicit Bomb(){}; virtual void message(const std::string &msg){std::cout << msg << std::endl;} virtual void print(){std::cout << "bgbbb" << std::endl;}private: .原创 2021-05-25 11:57:26 · 269 阅读 · 0 评论 -
poco最新版cmake配置编译mysql
#include <iostream>#include "Poco/Data/MySQL/Connector.h"#include "Poco/Data/SessionPool.h"#include "Poco/Data/RecordSet.h"#include "Poco/Data/Column.h"#include "Poco/Timer.h"#include "Poco/RWLock.h"int main(int, char **){#if 1 Poco::D.原创 2020-09-21 14:11:44 · 857 阅读 · 0 评论 -
海康NVR SDK获取所有摄像头ip及配置
#include <iostream>#include <thread>#include "HCNetSDK.h"#pragma comment(lib,"GdiPlus.lib")#pragma comment(lib,"HCCore.lib")#pragma comment(lib,"HCNetSDK.lib")#pragma comment(lib,"PlayCtrl.lib")int main(int argc, char **argv){ NET_D.原创 2020-07-02 18:01:30 · 8774 阅读 · 5 评论 -
std::stringstream clear()与str()踩坑
最近使用std::stringstream 格式化字符串,然后输出打印。使用同一个std::stringsteram挨个序列化输出,并调用str()输出。每次输出后都用clear()清除一下,但是结果没想到的是居然会保存原来的内容。经过自己测试原来真的是这样,测试代码如下。 std::stringstream ss; int temp = -1; ss << "1 2 3"; std::cout << __LINE__ << " " &原创 2020-06-16 12:20:01 · 2319 阅读 · 0 评论 -
std::future 注意点
std::future是一个线程里面异步获取值的类,在使用时有一些注意点。最近照着网上写了一个线程池#pragma once#include <vector>#include <queue>#include <thread>#include <condition_variable>#include <future>...原创 2020-01-14 11:56:11 · 1264 阅读 · 0 评论 -
c++11模板线程池
#pragma once#include <vector>#include <queue>#include <thread>#include <condition_variable>#include <future>#include <functional>#include <stdexcept>...转载 2019-12-08 16:17:47 · 259 阅读 · 0 评论 -
c++ 读写mongodb
mongocxx::pool *pool_ = new mongocxx::pool(mongocxx::uri(mongodb://192.168.2.11:27017/?minPoolSize=3)); try{ std::vector<uchar> data_encode; cv::imencode(".jpg",data.snapsh...原创 2019-07-03 15:27:53 · 1663 阅读 · 0 评论 -
c/c++ fast_dfs上传、下载图片
首先安装libfastcommon1、git clone https://github.com/happyfish100/libfastcommon.git安装fastdfs2、cd libfastcommon && ./make.sh && ./make.sh install3、git clone https://github.com/happyf...原创 2019-06-30 14:15:43 · 2042 阅读 · 0 评论 -
浅显易懂的cout格式化实例
#include <iostream>#include <iomanip>int main(){ int a = 10; //使用std::func()形式只在显示下一个数据有效,输出后下次输出数据不再有效。使用std::left这种标志是设置到cout对象中的,一直有效 std::ostream::fmtflags oldFlag = std::cout....原创 2018-08-11 13:28:25 · 351 阅读 · 0 评论 -
使用std::copy将std::map输出到std::cout
今天在写一个文件输入路径的时候,需要将一个目录下的所有文件在屏幕上显示一下,并且有一个唯一的标识;于是我自然就想到了用map容器,当我把代码像下面这样写好的时候;#include #include #include int main(){ std::map _mmap; for (auto i = 0; i < 10; i++) { _mmap.insert(std::m原创 2017-11-10 20:50:24 · 1557 阅读 · 0 评论 -
Poco访问mysql
伪代码如下1、建立连接池 Poco::Data::MySQL::Connector::registerConnector(); sessionpool_ = new Poco::Data::SessionPool("MySql", "host=192.168.2.143;port=23306;db=test;user=root;password=123;com...原创 2019-07-03 15:19:35 · 1301 阅读 · 0 评论 -
c++使用poco上传form表单(可从磁盘和内存中加载文件),解析form表单
1、上传比较简单,已经有封装好的类Poco::Net::StringPartSource可以使用;该类可以添加一般的text字段,也可以添加文件字段。如下#include <iostream>#include <fstream>#include <sstream>#include <memory>#include "Poco/Net...原创 2019-07-02 15:43:05 · 2981 阅读 · 5 评论 -
c++17功能示例全览
#include <iostream>#include <any>#include <variant>#include <string_view>#include <map>#include <filesystem>#include <set>#include <algorithm>#...原创 2019-04-21 14:04:55 · 892 阅读 · 0 评论 -
libcurl库源码编译,安装c++
libcurl主要功能就是用不同的协议连接和沟通不同的服务器.libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认原创 2017-10-14 15:20:01 · 3602 阅读 · 0 评论 -
Apache Thrift基于RPC的远程调用 c++
Apache Thrift用于在其公司内部系统的各语言之间进行RPC通信,支持c++、java、Python、PHP、Ruby、Perl、c#、Cocoa、Node.js主流语言对于高并发、大数据量和多语言开发有很大优势。一、到点击打开链接下载Thrift的最新版,我是在linux下使用的,要下载.tar.gz的源代码包二、本人使用的是c++接口,由于Thrift用到了boost库的内原创 2017-10-05 14:15:32 · 989 阅读 · 0 评论 -
使用ifstream ofstream copy快速处理文本
c++对文件的操作分成了两种类型,一种是“文本"文件,另一种是"二进制"文件;文本文件是人类能够看懂的,二进制文件是机器文件是我们看不懂的。这样区分对我们对文件的处理有了更明确的方向,加快了文件的处理和使得代码更加简洁。如果说我们需要把容器中的数据写到一个流中(本次就是文件流了,其它流也可以),或者是把流中的数据(本次为文件流)写到一个容器中,代码可以向下面这样简化。#incl原创 2017-11-09 21:29:57 · 603 阅读 · 0 评论 -
c++ rdbuf流指针重定向
给个例子吧,假如把cin重定向到in.txt,把cout重定向到out.txt#include #include #include using namespace std;int main(){ ofstream out("out.txt"); ifstream in("in.txt"); cin.rdbuf(in.rdbuf()); cout.rdbuf(out.r原创 2017-11-09 23:01:03 · 561 阅读 · 0 评论 -
cout 格式化输出
将 cout 的 flag 保存到变量, 以便修改后的恢复[cpp] view plain copy print?ostream::fmtflags old = cout.flag() ; // 无参将返回当前 flag 值 cout.flag(old) ; // 恢复到原先保存的值 ostream::fmtflags old转载 2017-11-10 21:42:14 · 262 阅读 · 0 评论 -
使用QStyle 高端定制弹出菜单 QPushButton源码剖析(一)
这段时间研究了一下,qt的样式源码。同时也顺便自己做了一个样式。为了使大家能够看下去,先贴一贴效果。以上效果,看似好像用qss采用setStyleSheet()的方式也可以更改;但结果证明是不行的,采用qss的方式只能设置一下颜色,皮肤。而上面的菜单背景为透明,子菜单的的三角标志已经是圆了,所以靠样式表是不行的。QStyle接口实现了qt在各种不同平台之间的各种控件的基本外观,原创 2017-12-02 17:14:15 · 9044 阅读 · 0 评论 -
使用ffmpeg、nvdia解码rtsp视频流,cuda做NV12-RGBA转换
本章是在nvidia_video_sdk_6.0.1的基础之上做封装的,我研究了其中的NvDecodeGL工程;由于自己工作会遇到显示多路rtsp视频流及解码的情况,所以进行了研究。 网上有其它的介绍ffmpeg和nvdia结合解码视频的文章,这里我将其实现了,并将官方的代码进行了精简和封装,封装后使用方法相当简单,示例如下#include "NvDecode.h"#include...原创 2018-04-05 21:54:56 · 9498 阅读 · 8 评论 -
分析很透彻的C/C++ 基本类型及是否需要多线程锁
学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。 ANSI C/C++基本数据类型32位机器上:TypeSize数值范围无值型void0 byte无值域布尔型bool 1...转载 2018-04-06 13:35:08 · 2204 阅读 · 0 评论 -
使用c++11创建自己的线程池
以前一直使用Qt的线程池,在Qt应用中还是很方便,Qt自带的线程池,每一个任务QRunable的run函数执行完后,线程会退出,有些时候是不需要退出的,这里可以在run函数中做一些操作;这里我用c++11写了一个自己的线程池。 主要是用一个线程安全的队列、std::thread、容器实现的。首先我实现的队列如下。 #ifndef CONCURRENTQUEUE_H#de...原创 2018-07-22 21:54:09 · 587 阅读 · 3 评论 -
c++ STL算法与应用(一) 字典序列与全排列
在数据结构中,所谓的字典序列其实很简单;就是元素根据英文字母的顺序排列,就叫字典序列;比列{a,b,c}就是一个字典序列; 对于集合在数据结构中我们用std::set来管理和使用它,需要注意的是集合中不能有相同元素,就和高数一样的。所以std::set中的元素必须有"<"的重载或者能够比较大小的函数对象。 比如像{1,2,3,4}这样的一个...原创 2018-08-04 21:38:56 · 907 阅读 · 0 评论 -
使用empoll实现读写和推送服务器(一)
linux下的服务大多都是epoll,网上有很多都是Requset-Response类型的服务器; 自己项目中有推送的需要,所以自己也做了个,另外我阅读了epoll写操作事件触发机制感觉写得很全,自己也测试过,写了个server,与大家分享。 为了好濱示推送,我把它与Qt项目结合了,Qt只是为了产生推送的消息,其它全为纯c++代码。epoll的监听是一个死循环,我定义了如...原创 2018-07-27 21:49:24 · 709 阅读 · 0 评论 -
使用epoll实现读写和推送服务器(二)
这篇主要介绍上篇的epollloop中使用到的EpollServer、EpollStream的实现。 Server的话一般会有绑定、连接的步骤; Stream的话只是对套接字的一种封装叫法,其实就是半读写封装到一起了。Server每接受一个新的连接都会返回一个套接字,另外服务器、客户端都是一个套接字,所以这里也有套接的封装,也就是一个Stream了,所以对于Server和...原创 2018-07-31 22:50:04 · 774 阅读 · 0 评论 -
c++ STL算法与应用(二) 转换序列transform
transform可以将函数应用于序列的元素上,并将返回值保存到另一个序列,返回值为输出序列保存的最后一个元素的下一个位置。和for_each的区别在于 1、for_each函数返回值必须为void,可以通过参数修改原序列的值 2、transform的二元函数必须返回一个值,同时也能将结果保存到另一个序列 3、transform中输出序列中的元素类型可以和输入序列中...原创 2018-08-05 22:02:45 · 469 阅读 · 0 评论 -
c++ 使用RdKafka::KafkaConsumer获取服务器配置信息与消费、同时消费多个topic、设置消费位置
Kafka是一个推送的消息框架,支持java、python、c/c++等待。本次与Kafka接触了一段时间,做个分享,主要是代码中的接口,与使用方法。 Kafka使用topic消费,消息会保留一段时间;每次消费可以指定位置,从不同的位置开始消息。一个主题可以分为多个分区,其封装的c++库已经能够按顺序从不同的分区中将数据取出来了,所以还是相对方便的。 我只写...原创 2018-08-11 14:03:04 · 9491 阅读 · 7 评论 -
基于ffmpeg与nvidia-video-sdk-8.1.24视频硬解与软解多路rtsp,支持Qt的QOpenglWidget与qml接口显示
为了解决工程上的一个问题,我研究了nvidia较新的video-sdk-8.1.24,看完之后觉得这个sdk比较符合现代的编程规范,于是摒弃了以前的video-sdk-6.0,解决了工程上的问题。 我提供的封装支持软解和硬解,其中重要部分为做了视频复制,同一个视频源只解码一路;内存的细节管理;视频渲染;视频镜像等。 接口申明如下#ifndef...原创 2018-08-25 13:48:20 · 3967 阅读 · 34 评论 -
C++11 随机数学习
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/33690179 相对于C++ 11之前的随机数生成器来说,C++11的随机数生成器是复杂了很多。这是因为相对于之前的只需srand、rand这两函数即可获取随机数来说,C++11提供了太多的选择和东西。 随机数生成算法: 随机数生成...转载 2018-10-15 09:00:01 · 2159 阅读 · 0 评论 -
C++并发实战13:std::future、std::async、std::promise、std::packaged_task
std::condition_variable可以用于异步事件的重复通知,但是有些时候可能只等待事件发生一次,比如:等待特定的航班,用条件变量大杀器有点浪费了。C++11标准库提供了几种异步任务机制。通常thread不能返回线程执行的结果(可以通过引用参数返回),而在异步处理当中很多时候都需要获得计算的结果。如果只获取结果一次那么选用future,即通过future获取了结果后...转载 2019-04-20 18:14:00 · 550 阅读 · 0 评论