C/C++
letterwuyu
Linux c c++ python java
分布式存储&消息队列&计算
展开
-
将可调用对象转换为 c 风格指针
// 将可调用对象转换为 c 风格指针,主要用于 c++ 类函数/bind 作为 c library 回调// 原理通过 Tag 构建特定类,静态成员存储 c++ 调用对象,静态函数可直接转化成 c 函数指针原创 2022-08-11 20:59:55 · 276 阅读 · 1 评论 -
mysqlpp
MySQL是一个的开源关系型数据库,对于服务端开发来说是一个优秀的选择。本篇内容将介绍如何在C++程序里操作MySQL数据库。—————————————————————————————————————————————————————————————阅读本篇内容之前你需要先了解以下知识:C++编译链接基本原理make相关知识SQL基础知识和CRUD基础操作能力转载 2017-09-11 23:51:08 · 3221 阅读 · 0 评论 -
builder模式实例
#include <iostream>#include <algorithm>#include <vector>#include <list>#include <memory>//产品抽象类class Product{public: virtual void AddPart(const std::string& str) = 0; virtual ~Product() = 0;public: virtual void DoAction() const = 0;};Product:原创 2017-10-27 12:09:24 · 327 阅读 · 0 评论 -
bridge模式实例
#include //画笔抽象类class Pen {public: virtual ~Pen();public: virtual void PrintProstect() const = 0; virtual void PrintContext() const = 0;};Pen::~Pen() {}//画笔Aclass PenA : public Pen {publ原创 2017-10-27 17:12:53 · 574 阅读 · 0 评论 -
pragram 预处理指令详解
原文链接:http://blog.csdn.net/jx_kingwei/article/details/367312 在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译转载 2017-11-06 20:42:34 · 1741 阅读 · 0 评论 -
Linux 块设备驱动
链接:http://m.blog.csdn.net/article/details?id=51585490刚接触一下,发现作者的代码写错了,改一点点,总之受益匪浅#include #include #include #include #include #include static int sampleblk_major;#define SAMPLEBLK_MINOR 1转载 2017-02-04 09:58:22 · 616 阅读 · 0 评论 -
Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?
http://www.cnblogs.com/happyhippy/archive/2010/09/01/1814287.html 最近重读GOF的《设计模式》,读到Builder模式的时候,发现还是不能领悟;网上搜了下其他人的解释,发现很多人都用错了Builder模式,结构形似Builder,实际上却更像Template、或者Factory Method,或者四不像,并没有体现出Buil转载 2017-10-26 21:08:33 · 280 阅读 · 0 评论 -
C/C++数据对齐
转载:http://www.cnblogs.com/graphics/archive/2010/08/12/1797953.html为了避免混淆,做如下规定,以下代码若不加特殊说明都运行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为char占一个字节int占四个字节double占八个字节。两个例子请问下面的结构体大小是多少?struct T转载 2017-01-11 15:20:52 · 328 阅读 · 0 评论 -
C++17中那些值得关注的特性
转自:http://blog.jobbole.com/112106/引用C++17标准在2017上半年已经讨论确定,正在形成ISO标准文档,今年晚些时候会正式发布。本文将介绍最新标准中值得开发者关注的新特新和基本用法。总的来说C++17相比C++11的新特性来说新特性不算多,做了一些小幅改进。C++17增加了数十项新特性,值得关注的特性大概有下面这些:constexpr ifconstexpr l...转载 2018-04-01 19:43:09 · 726 阅读 · 0 评论 -
安装devtoolset来满足gcc不同版本的要求
在绝大多数情况下编译一些东西还是够用的,但还是有个别软件对gcc的版本是有要求的,例如rethinkdb这个东西,就要求4.8.2以上的版本,为什么呢?因为要用c++11特性,这个在CentOS6中的默认gcc版本是不支持的。要解决这个问题一般有两种方法:1、手动编译gcc>4.8的版本2、安装devtoolset第一种方法相对来说耗时耗力,适合真的想折腾的同学,第二种方法是偷懒用的,可以快...转载 2018-05-17 11:59:58 · 5108 阅读 · 0 评论 -
Singleton 单例模式 -- 饿汉
/*直接照着boost库的一个比较广泛的单例模式写的,一字不错,boost有很多单例模式可以研究 *最近项目用到一个单例模式,是教科书使得,'懒汉模式',这个是'饿汉模式',优点是在main函数 *开始之前就构造实例了,这样是线程安全的,效率比较高,毕竟不是在堆上创建的一般单例不需要考虑内存的泄露,静态变量生存周期 *和程序运行周期是一样的,知道程序结束而释放,。。。总之没必要为了一个单例模原创 2017-09-22 18:42:17 · 265 阅读 · 0 评论 -
标准库容器的使用
C++primer 动态内存与智能指针小例#include#include#include#include#include#include#includeclass QueryResult;class TextQuery{public: using line_no=std::vector::size_type; TextQuery(std::ifstream原创 2015-12-11 10:53:47 · 464 阅读 · 0 评论 -
文件中类的存放
当在一个文件中定义多个相互关联的类时除了要前置声明外,一定要放好类的声明位置和实现位置否者会出现一下错误forward declaration of 'class StrBlobPtr'| return type 'class StrBlobPtr' is incomplete|invalid use of incomplete type 'class StrBlobPtr'|原创 2015-12-10 16:18:38 · 668 阅读 · 0 评论 -
拷贝控制示例
c++primer 拷贝控制实例邮件信息#include#includeclass Messages;class Folder{public: Folder(){} void addMsg(Messages *m) { file.insert(m); } void remMsg(Messages *m) {原创 2015-12-11 17:18:53 · 732 阅读 · 0 评论 -
拷贝控制
本例涉及:构造函数拷贝构造函数拷贝赋值运算符移动构造函数析构函数移动迭代器动态内存#include#includeclass StrVec{public: StrVec(): elements(nullptr),first_free(nullptr),cap(nullptr){} StrVec(std::initi原创 2015-12-11 21:07:29 · 401 阅读 · 0 评论 -
模版类运算符重载
自定义分数模版类,运算符重载,同时支持宽字符,wchar_t#include#include#includetemplate //分数模版类class Fraction{public: Fraction()=default; Fraction(classT m,classT d):mol(m),del(d){} Fraction& operator=(c原创 2016-03-04 20:27:49 · 3783 阅读 · 0 评论 -
c++ chrono 时间程序库
C++11 提供一个精度中立的时间程序库称为chrono程序库,定义于此外也提供基本的C和POSIX接口用来处理日历时间,也可以使用于C++11的thread程序库,等待某个线程和程序(主线程)一段时间,个人认为很不错,对于chrono的代码可以查看标准程序库。首先chrono有三个个关键概念组成,明白了这三个概念基本可以熟练运用chrono了:duration(时间段):原创 2016-04-14 12:54:09 · 1804 阅读 · 0 评论 -
C++自定义缓冲区streambuf
Straem缓冲区其接口由class basic_treambufC++对于文件的操作是通过fstream创建文件流来实现的,它不支持文件描述符,对于这个问题可以通过缓冲区重定向封装文件描述符可以很好的解决,在linux中一切都是文件,同样对其inux的设备终端,socket等等都可以看成对文件的操作所以通过自定义缓冲区都可以像操作io流一样实现对其他设备的操作,这确实很有魅力。一、用原创 2016-04-20 14:44:31 · 9121 阅读 · 0 评论 -
c/c++ struct 内存对齐
为了让CPU能够更舒服地访问到变量,struct中的各成员变量的存储地址有一套对齐的机制。这个机制概括起来有两点:第一,每个成员变量的首地址,必须是它的类型的对齐值的整数倍,如果不满足,它与前一个成员变量之间要填充(padding)一些无意义的字节来满足;第二,整个struct的大小,必须是该struct中所有成员的类型中对齐值最大者的整数倍,如果不满足,在最后一个成员后面填充。各种类型的转载 2017-01-11 15:15:22 · 568 阅读 · 0 评论 -
C++11 Future
#include #include #include #include std::mutex gmutex;class Thread{public: Thread():_future(std::async(std::launch::async,std::bind(&Thread::Run, this))) {} virtual ~Thread() {} virtual void原创 2017-08-16 00:03:06 · 352 阅读 · 0 评论 -
map 容器小例(hash map)
//导入两个文件t1存放映射规则,t2存放内容,将t2中的内容通过t1映射出来/* t1brb be right backk okay?y whyr areu youpic picturethk thanks!18r later*//* t2where r uy dont u send me a pick thk 18r*/#in原创 2015-12-09 20:32:00 · 372 阅读 · 0 评论