10 苏嗣典

北京百度网讯科技有限公司 - 高级软件工程师

我要认证

永远对技术饱含热泪

等级
TA的排名 9w+

线程设置私有变量

#include <stdio.h> #include <pthread.h> #include <stdlib.h> //线程存储变量,用于一个线程内部的全局变量 static pthread_key_t pid_key; pthread_once_t once = PTHREAD_ONCE_INIT; //pthread_o...

2020-04-23 23:50:33

编译调试

目录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

并行编程

目录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

C++11新特性

1 C++11关键字auto:类型自动推导关键字,声明的变量必须被初始化。不能使用auto情况:函数形参、结构体非静态成员变量、数组和实例化模板时模板参数move():获得绑定到左值上的引用。将左值引用转换为右值引用nullptr:是c++中空指针类型的关键字,不能被转换成数字for(auto count : counts):遍历counts中的值,C++11中引入的auto主要有...

2020-04-20 20:10:52

C/C++字符串处理

目录1 snprintf函数2 转换函数比较3 string中函数的用法1 snprintf函数1、写入目标串的字符数不超过size,包括'\0'2、必须格式化参数,防止源串包含%s等格式化字符,会在后面寻找字符串指针,若未找到,会出现非法内存访问3、必须判断返回值,避免写溢出(目标串str是字符数组,如果不以'\0'结束,对函数返回值ret(即预写入字符个数)进...

2020-04-20 16:37:20

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

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

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

C++对C的拓展

目录一、bool类型关键字二、引用三、输入输出四、函数参数五、string类六、左值一、bool类型关键字C++在C语言的基础类型上新增了布尔类型(bool),bool可取的值有两个:true、false,占用一个字节。true代表真值,编译器内部用1来表示;false代表非真值,编译器内部用0来表示。#include <iostream&g...

2018-09-10 16:01:38

C++ coredump实例解析

一、背景 经过重重调试后,看到编译成功的那一刻,内心充满欢喜。当程序一运行,却经常出现coredump的情况,此时内心是崩溃的。我想程序员经常会碰到这种情况,尤其使用c++语言编写代码,由于没有自动内存管理,经常会出现coredump情况,主要原因有以下几类:操作非法指针 内存访问越界:索引越界、使用高危函数等 格式化输出时数据类型错误 并发引起的问题:未加锁保护;使用线程不安...

2018-08-25 23:30:36

单例模式-基于boost库

单例模式是最常使用的设计模式之一,特别在跨文件编程时使用的最多。#include<boost/noncopyable.hpp>#include<pthread.h>#include<stdlib.h>template<typename T>class Singleton: boost::noncopyable ...

2017-06-06 00:26:58

C语言实现函数重载

C语言实现函数重载c语言中不允许有同名函数,因为编译时函数命名是一样的,不像c++会添加参数类型和返回类型作为函数编译后的名称,进而实现重载。如果要用c语言显现函数重载,可通过以下方式来实现:使用函数指针来实现,重载的函数不能使用同名称,只是类似的实现了函数重载功能 重载函数使用可变参数,方式如打开文件open函数 gcc有内置函数,程序使用编译函数可以实现函数重载示例如下:#...

2017-04-09 22:58:49

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

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

配置加载-简单工厂实现

一、使用场景进程对多个配置进行reload,reload前判断配置的版本号是否有升级二、简单实现使用简单工厂思想进行实现。进程初始化时,加载对应的配置,保存当前配置的版本号以及加载的回调函数,并注册到全局的map 配置reload时,根据传入的配置参数,对各个配置进行reload,比较当前配置版本和历史版本是否一致,不一致才进行reload#include <iostr...

2016-09-22 00:54:23

检索词联想-Trie树实现

我们在使用百度或其它搜索框的时候经常会看到如下情况:下拉框中会显示检索词的联想,这个功能是怎么实现的呢?其实这就是Trie树(或者字典树)的一个实际应用。这里不具体介绍Trie树,接下来简单实现一下这种联想功能。#include#include#include#include#define N 256using namespace std;struct Tre

2016-09-08 10:29:37

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

C++ 虚函数问题

1. 构造函数中可以调用虚函数吗可以,只是不会产生动态行为,因为构造函数是从基类开始构造,基类在调用虚函数时,子类还未构造,所以调用的是基类的函数。2.析构函数可以调用虚函数吗如果在父类析构函数中调用虚函数,其实际调用的是子类的函数,而此时子类析构函数已经把数据销毁了,会出现不可知的结果。3.析构函数可以调用纯虚函数吗不可以,编译会出错。5.析构函数可以是纯虚函数吗可以...

2016-03-23 11:00:30

STL常见容器

目录顺序容器vectorlistdeque使用区别关联容器setmaphash_map顺序容器vector可以动态增加空间大小,并不是在原空间之后续接新空间,而是以原空间大小的两倍另外配置一块较大空间。支持随机存储,常用操作:push_back,pop_backvector真正删除元素:v.erase(remove(v.begin(), v...

2016-02-26 14:00:58

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

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。