- 博客(22)
- 资源 (10)
- 问答 (2)
- 收藏
- 关注
原创 编译调试
目录1 编译1.1 编译流程1.2 automake生成Makefile1.3 编写Makefile.am1.4 编写bMakefile1.5底层查看命令2 gdb调试命令1 编译1.1 编译流程预处理 gcc -E hello.c -o hello.i 编译 gcc -S hello.i -o hello.s 汇编 as hello.s -o...
2020-04-22 17:20:41
412
原创 并行编程
目录1 openMP并行编程1.1 常见命令1.2 限制条件1.3 循环结构并行2 无锁编程__sync__2.1 CAS原子操作实现无锁2.2原子操作函数2.3无锁函数1 openMP并行编程openMP针对共享内存并行编程的API。#include <omp.h>1.1 常见命令编译:g++ xxx.cpp -fopen...
2020-04-22 15:00:33
614
原创 C++11新特性
1 C++11关键字auto:类型自动推导关键字,声明的变量必须被初始化。不能使用auto情况:函数形参、结构体非静态成员变量、数组和实例化模板时模板参数move():获得绑定到左值上的引用。将左值引用转换为右值引用nullptr:是c++中空指针类型的关键字,不能被转换成数字for(auto count : counts):遍历counts中的值,C++11中引入的auto主要有...
2020-04-20 20:10:52
237
原创 C/C++字符串处理
目录1 snprintf函数2 转换函数比较3 string中函数的用法1 snprintf函数1、写入目标串的字符数不超过size,包括'\0'2、必须格式化参数,防止源串包含%s等格式化字符,会在后面寻找字符串指针,若未找到,会出现非法内存访问3、必须判断返回值,避免写溢出(目标串str是字符数组,如果不以'\0'结束,对函数返回值ret(即预写入字符个数)进...
2020-04-20 16:37:20
317
原创 C++计算数组大小
目录1 c语言计算数组大小2 c++计算数组大小1 c语言计算数组大小c语言通过如下方式可以获取数组大小:int arr[] = {23, 34, 32};int arr_size = sizeof(arr)/sizeof(arr[0]);当数组作为函数参数时,通过这种方式计算数组的size会为1(数组名作为函数参数相当于指向数组的指针)2 c++计算数组大小...
2020-04-07 18:37:49
9185
4
原创 C++ 一些关键字的用法
一、const关键字1.1 成员变量const成员变量初始化方式:构造函数初始化列表中进行初始化 将const成员变量用static修改,在类外初始化1.2 const成员函数class A{public: void test() const { std::cout << "const func" << std::endl;...
2018-11-22 21:11:00
367
原创 C++ new操作符实现
C++ new操作符实现一、new操作符C++中new操作符是语言内置的,不能被重载,实现了两个功能:内存分配、调用对象构造函数。其中内存分配调用标准函数operator new,声明如下:void * operator new(size_t size);释放内存时使用delete运算符,底层会调用标准函数operator delete来释放内存。二、operator new...
2018-11-20 00:25:13
3071
原创 C++对C的拓展
目录一、bool类型关键字二、引用三、输入输出四、函数参数五、string类六、左值一、bool类型关键字C++在C语言的基础类型上新增了布尔类型(bool),bool可取的值有两个:true、false,占用一个字节。true代表真值,编译器内部用1来表示;false代表非真值,编译器内部用0来表示。#include <iostream&g...
2018-09-10 16:01:38
238
原创 C++ coredump实例解析
一、背景 经过重重调试后,看到编译成功的那一刻,内心充满欢喜。当程序一运行,却经常出现coredump的情况,此时内心是崩溃的。我想程序员经常会碰到这种情况,尤其使用c++语言编写代码,由于没有自动内存管理,经常会出现coredump情况,主要原因有以下几类:操作非法指针 内存访问越界:索引越界、使用高危函数等 格式化输出时数据类型错误 并发引起的问题:未加锁保护;使用线程不安...
2018-08-25 23:30:36
3323
原创 单例模式-基于boost库
单例模式是最常使用的设计模式之一,特别在跨文件编程时使用的最多。#include<boost/noncopyable.hpp>#include<pthread.h>#include<stdlib.h>template<typename T>class Singleton: boost::noncopyable ...
2017-06-06 00:26:58
2159
原创 C语言实现函数重载
C语言实现函数重载c语言中不允许有同名函数,因为编译时函数命名是一样的,不像c++会添加参数类型和返回类型作为函数编译后的名称,进而实现重载。如果要用c语言显现函数重载,可通过以下方式来实现:使用函数指针来实现,重载的函数不能使用同名称,只是类似的实现了函数重载功能 重载函数使用可变参数,方式如打开文件open函数 gcc有内置函数,程序使用编译函数可以实现函数重载示例如下:#...
2017-04-09 22:58:49
35001
3
原创 gdb调试多线程出现的死锁
多线程的条件下,程序很容易出现死锁,此时各个线程处于等待状态,可以通过gdb调试找到死锁出现的地方。例子:#include #include #include pthread_mutex_t lockA = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t lockB = PTHREAD_MUTEX_INITIALIZER;void
2017-01-10 16:36:30
1278
原创 Automake自动编译
Automake自动编译1、创建源代码文件hello.h,hello.cpp。执行autoscan命令生成configure.scan,cp configure.scan configure.ac,编辑configure.ac文件,如下图: 其中AM_INIT_AUTOMAKE(hello,1.0)需要手动添加,否则生成不了aclocal.m4文件。2、执行aclocal命令生成...
2016-09-24 22:55:16
1744
原创 配置加载-简单工厂实现
一、使用场景进程对多个配置进行reload,reload前判断配置的版本号是否有升级二、简单实现使用简单工厂思想进行实现。进程初始化时,加载对应的配置,保存当前配置的版本号以及加载的回调函数,并注册到全局的map 配置reload时,根据传入的配置参数,对各个配置进行reload,比较当前配置版本和历史版本是否一致,不一致才进行reload#include <iostr...
2016-09-22 00:54:23
750
原创 检索词联想-Trie树实现
我们在使用百度或其它搜索框的时候经常会看到如下情况:下拉框中会显示检索词的联想,这个功能是怎么实现的呢?其实这就是Trie树(或者字典树)的一个实际应用。这里不具体介绍Trie树,接下来简单实现一下这种联想功能。#include#include#include#include#define N 256using namespace std;struct Tre
2016-09-08 10:29:37
4697
原创 C语言实现继承和多态
#include <stdlib.h>#include <string.h>#include <stdio.h>//------------- Person --------------typedef struct Person { void* derived_obj; char* name; void (*life)(s...
2016-04-05 23:12:04
1846
原创 C++ 虚函数问题
1. 构造函数中可以调用虚函数吗可以,只是不会产生动态行为,因为构造函数是从基类开始构造,基类在调用虚函数时,子类还未构造,所以调用的是基类的函数。2.析构函数可以调用虚函数吗如果在父类析构函数中调用虚函数,其实际调用的是子类的函数,而此时子类析构函数已经把数据销毁了,会出现不可知的结果。3.析构函数可以调用纯虚函数吗不可以,编译会出错。5.析构函数可以是纯虚函数吗可以...
2016-03-23 11:00:30
608
原创 STL常见容器
目录顺序容器vectorlistdeque使用区别关联容器setmaphash_map顺序容器vector可以动态增加空间大小,并不是在原空间之后续接新空间,而是以原空间大小的两倍另外配置一块较大空间。支持随机存储,常用操作:push_back,pop_backvector真正删除元素:v.erase(remove(v.begin(), v...
2016-02-26 14:00:58
706
原创 IO多路复用-epoll模型
服务端代码:#include#include#include#include#include#include#include#include#include#include#include //mac下不支持,可以使用kqueueint main(){int socket_fd,connect_fd;struct socka
2015-11-04 13:52:10
447
原创 IO多路复用-poll模型
客户端代码同上服务器端代码:#include#include#include#include#include#include#include#include#include#include#include#include#includevoid handle(struct pollfd* clients, int ma
2015-11-03 23:58:40
501
原创 IO多路复用-select模型
客户端代码见:C/S通信---服务器阻塞型使用服务器端代码:#include#include#include#include#include#include#include#include#include#include#include#includeint main(){int socket_fd,connect_fd;
2015-11-02 21:42:19
449
原创 阻塞型I/O
服务器端代码:#include#include#include#include#include#include#include#include#include#includeint main(){int socket_fd,connect_fd;struct sockaddr_in servaddr;char buff[3];
2015-11-02 16:25:49
450
C++启动一个线程定时加载报文,报文是一个6G多的文件,如何快速读取该报文(只需要读)?
2016-09-27
linux awk命令处理字符串中反斜杠问题
2016-07-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人