
c++
文章平均质量分 95
速趴赛亚金
写代码之前好好思考
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
详细介绍Boost消息队列
1. 前言boost中的消息队列(Message Queue)是进程间通信的一种机制,实际上是其内部也是采用共享内存的方式来达到进程间通信的目的。这也就意味这Message Queue有其局限性:只有处在同一台计算机中的不同进程才能使用消息队列进行通信。消息队列类似于消息列表,每个线程能够往列表里塞消息,也能从列表里读取消息。每一条消息都有三个属性:1.消息优先级2.消息长度3.消息内容2. 消息队列的使用1. 消息队列的构造函数消息队列的构造函数有三个分别是:message_queue_t原创 2020-12-29 16:10:37 · 4140 阅读 · 6 评论 -
C/C++ string转数值类型的方法总结
1. C库函数原创 2020-09-14 23:37:23 · 2783 阅读 · 1 评论 -
c++ const的详细总结
1.const关键字c语言关键字const是constant的缩写,意思是不变的。当程序员定义了一个const对象,则编译器就不允许程序员再对该对象进行修改,相当于该对象仅仅是一个只读对象。const语法变化多端,而且许多面试中也会涉及到const的相关知识点。所以在此做一个总结,加深一下const的印象,也方便自己以后回顾相关的知识点。2.定义一个const对象定义一个const对象非常简单,只要对普通的对象加上const的修饰成了一个const对象:const int i = 10; cons原创 2020-06-30 23:50:04 · 283 阅读 · 0 评论 -
C++程序的内存布局
1.c++内存布局对于一个C/C++程序员来说,搞清楚一个C/C++程序在计算机内存中的布局尤为重要。了解了程序在计算机内存中的布局,对程序员解决段错误,内存泄漏等问题也有一定的帮助,也能更加深刻的理解一个程序。在一个32位的Linux操作系统上,计算机将会为每一个进程分配4GB的虚拟空间。其中高地址的1GB内存为内核空间,低地址的3GB空间为用户空间,如下:代码中的所有内存分配操作都会在各个进程的用户空间进行。而3GB的进程用户态空间又会被分为好几个区域,用来分配不同类型数据的内存,具体的分布如下原创 2020-06-28 23:05:15 · 704 阅读 · 1 评论 -
Thrift的安装及分布式调试
1.Thrift的简单介绍Thrift是一个跨语言跨平台的服务部署框架,由Facebook在2007年开发,2008年进入Apache开源项目。Thrift通过接口定义语言来定义RPC的接口和数据类型,再通过Thrift编译器生成不同的语言代码,并由生成的代码负责RPC协议层和传输层的实现。其架构如下:在上图中,最上层的是用户的业务逻辑代码,中间两层则是thrift编译器生成的代码,用于结构化数的解析,发送和接收等。TProtocol则是协议层,定义了数据的传输格式,主要支持数据格式有二进制格式、压缩原创 2020-06-22 19:25:11 · 874 阅读 · 0 评论 -
C++11 新特性总结——全干货(上)
序言作为一名C/C++程序员,C++11的新特性想必大家多多少少都了解一些。对于实际项目,C++11的很多新特性给每一位C++程序员带来了不少的便利,例如智能指针,正则,自动推导,多线程编程等等;零一方面,对于面试,C++11又是很多面试的高频考点。因此,掌握C++11的新特性真是百利而无一害。对于BOOST库比较熟悉的人应该知道,实际上C++11许多的特性都是从BOOST中参考过来的。BOOST库被誉为是准标准库,有时间学习学习BOOST库也是一个不错的选择。好了,废话不多说,下面一起来看一下C++11原创 2020-06-07 19:03:16 · 582 阅读 · 0 评论 -
C++深浅拷贝的理解
1.浅拷贝概念:浅拷贝也叫位拷贝,即在拷贝发生时,编译器只是将对象中的值按照基本的数据类型复制过来。例如以下就是个简单的复制过程:int a = 10;int b = a;将a的值赋给b的过程就是一个浅拷贝过程,这不会有任何问题。但是如果一个类中包含有指针成员变量,采用浅拷贝则会引发一些问题。例如以下:#include <iostream>#include <string>using namespace std;class String{public: St原创 2020-05-17 13:39:38 · 292 阅读 · 0 评论 -
c++ static_assert关键字
前言static_assert在c++0x中加入该关键字,用来做编译期间的断言,也叫静态断言。该关键字是从c语言的assert中继承过来的,但是assert是在运行期间的断言。static_assert语法static_assert的语法有两种:static_assert ( 布尔常量表达式 , 消息 ) (C++11 起)static_assert ( 布尔常量表达式 ) (C++...原创 2020-05-06 19:32:29 · 968 阅读 · 0 评论 -
c++智能指针----unique_ptr
前言继auto_ptr智能指针之后,在c++11中又提供了三种智能指针,分别是unique_ptr,shared_ptr和weak_ptr。auto_ptr在上一篇文章中以及详细介绍过了,接下来我们就来了解一下其他的几种智能指针。unique_ptr通过上一篇文章的学习(auto_ptr详解),我们知道auto_ptr在赋值之后会产生悬挂指针,稍不注意就会因为访问悬挂指针而导致程序奔溃。为了...原创 2020-05-06 16:25:56 · 748 阅读 · 0 评论 -
Ubuntu中安装ICE3.7.3
前言上一篇博客,我大概讲述了一下ICE中间件在windows上搭建的过程以及跑通一个小的demo。今天,我们来看一下Ubuntu下如何安装ICE,在Ubuntu上安装ICE相对于windows上简单一些。安装过程1.下载并且解压ICE源码压缩包以及第三方库源码的压缩包。2.使用install指令安装部分第三方库。sudo apt-get install libssl-dev liblmd...原创 2020-04-28 18:21:50 · 1018 阅读 · 0 评论 -
ICE中间件环境搭建
前言本次搭建ICE中间件的环境对我来说还是比较艰辛的,一来是没有听过ICE中间件,连个初学者都算不上,二来网上关于ICE的环境搭建少之又少,而且很多都是java的,而我需要搭建的是C++相关的。不过好在功夫不负有心人,经过不断的琢磨,总算是把环境搭建好了并且运行demo,测试结果也符合预期。正好有时间,所以就把整个过程记录一下,也算是自己的一个小总结,也可以给正要搭建ICE环境的朋友们一个参...原创 2020-04-02 13:26:35 · 1812 阅读 · 2 评论 -
使用boost处理xml和json
前言由于工作需要,后面可能会处理xml和json相关的数据。因此在前期就需要确定采用哪种库来处理两种数据格式的文件。考虑到跨平台和库的流行程度,最终选择使用boost库来处理这两种文件,下面我就记录一下我在windows和linux两种环境下搭建boost库环境以及简单测试一下boost库如何处理这两种文件的。搭建boost环境1.到boost官网上下载boost源码: http://www...原创 2020-01-02 17:21:13 · 580 阅读 · 1 评论 -
c++智能指针之auto_ptr详解(有源码有实例)
前言内存泄漏大概是每一个c/c++程序员最深恶痛绝的问题,因为大部分此类问题都是令广大c程序员很抓狂,掉头发的疑难杂症。而内存泄漏的根本原因就是指针的使用不当引起的,例如指针指向的内存没有释放,导致产生了程序无法控制的内存块,而随着程序不断执行,这样的内存越积越多,最终导致程序使用的内存空间不够导致宕机等一些严重的后果。为了解决这种让人讨厌的问题,c++提供了一系列的智能指针例如auto_ptr...原创 2019-12-26 14:44:31 · 806 阅读 · 0 评论 -
c++隐式类类型转换和explicit关键字详解
前言关于c++中的隐式类型转换,一种是内置数据类型的转换,还有一种就是自定义数据类型的转换,例如类。下面我们来详细探讨一下c++中隐式类类型转换。在c++prime中有:可以用单个形参来调用的构造函数都定义了从形参类型到类类型的隐式转换。在这里需要特别注意用单个形参来调用的构造函数并不是一定只有一个参数,它可以有多个参数,但是这些形参都是有默认值的。下面会通过几个例子把这两种形式(构造函数只有...原创 2019-12-16 10:46:15 · 330 阅读 · 0 评论 -
c++ lambda 看这篇就够了!(有点详细)
前言lambda表达式是C++11新特性之一,下面一起来看一下lambda表达式。先来看一个例子,假设有一个整数列表,我们希望统计一下其中有多少个整数可以被7整除。第一种方案,我们先采用普通函数的形式来实现。我们使用vector来存储数字,使用generate()来往vector中填充随机数。 这里介绍一下generate()的用法,该函数接受一个区间,由前两个参数指定,并将区间中的每个元素...原创 2019-11-29 14:57:45 · 33590 阅读 · 12 评论 -
浮点数和十六进制数的转换
前言浮点数和十六进制或者二进制转换的问题,以前没有关注过这类问题,没想到最近在工作当中遇到了,先记录一波。出现该问题的原因定义了一个unsigned int类型的指针,然后指向了一块由mmap映射上来的虚拟地址,然而后续我往地址写入的值是float类型的,一开始没有注意到指针和传入的值类型是不同的,所以一直找不到问题出在哪里。后来通过检测寄存器相应地址的数值,才发现自己用unsigned in...原创 2019-11-26 20:27:50 · 6403 阅读 · 0 评论