岚天逸见

随笔分类 -  C/C++

上一页 1 2 3 4 5 6 ··· 12 下一页

进一步理解指针:一维数组和二维数组转换
摘要:先看下列代码的输出是什么?int main(){ int m[5] = { 0,1,2,3,4 }; int* p = (int*)(&m+1); printf("%d,%d\n", *(m+1), *(p-1)); return 0;}要知道这个输出,最关键的是要理解指针操作的“加”和“减”,假设 阅读全文

posted @ 2019-09-05 21:27 岚天逸见 阅读(1334) 评论(0) 推荐(0) 编辑

进一步理解指针2:双指针、指针数组和数组指针
摘要:目录 目录 1 1. 概念 1 1.1. 双指针 1 1.2. 指针数组 1 1.3. 数组指针 1 2. 区别 2 3. 兼容性 2 4. 为何列数须相等? 2 5. 初始化 3 6. 转化 4 7. 双指针 6 8. 关系图 8 8.1. 数组、指针和双指针关系图 8 8.2. 数组和双指针关系 阅读全文

posted @ 2019-09-05 21:24 岚天逸见 阅读(1196) 评论(0) 推荐(0) 编辑

Linux OOM一二三
摘要:Linux开发一般会遇到“/proc/sys/vm/overcommit_memory”,即文件/etc/sysctl.conf中的vm.overcommit_memory,Overcommit的意思如同其字面意思,即进程可申请超出可用内存大小的内存(对进程而言实为虚拟内存,一个进程占用的虚拟内存空 阅读全文

posted @ 2019-09-04 17:21 岚天逸见 阅读(484) 评论(0) 推荐(0) 编辑

C++之Lambda研究
摘要:目录 目录 1 1. 前言 1 2. 示例1 1 3. 示例2 2 4. 示例3 3 5. 示例4 3 6. 示例5 6 7. 匿名类规则 6 8. 参考资料 7 1. 前言 本文代码测试环境为“GCC-9.1.0”,有关编译器的安装请参考《安装GCC-8.3.0及其依赖》,适用于“GCC-9.1. 阅读全文

posted @ 2019-05-30 09:42 岚天逸见 阅读(1139) 评论(0) 推荐(0) 编辑

REdis之maxmemory解读
摘要:redis.conf中的maxmemory定义REdis可用最大物理内存,有多种书写方式,以下均为合法: maxmemory 1048576 maxmemory 1048576B maxmemory 1000KB maxmemory 100MB maxmemory 1GB maxmemory 100 阅读全文

posted @ 2019-05-22 17:25 岚天逸见 阅读(17109) 评论(0) 推荐(0) 编辑

安装GCC-8.3.0及其依赖
摘要:目录 目录 1 1. 前言 1 2. 安装日期 1 3. GCC国内镜像下载地址 2 4. GCC的依赖库 2 4.1. gmp库 2 4.2. mpfr库 2 4.3. mpc库 2 4.4. m4编译工具 2 4.5. 安装源代码包 3 5. 编译安装gmp 3 6. 编译安装mpfr 4 7. 阅读全文

posted @ 2019-05-01 09:06 岚天逸见 阅读(12324) 评论(1) 推荐(2) 编辑

REdis zset和double
摘要:平台:x86_64 结论:Zset的最大分数不要超过18014398509481982(17位数字,54位二进制),否则不会得到期望的值。 REdis:5.0.4 Zset采用double存储分数值(score),而incrbyfloat和hincrbyfloat采用的是long double存储数 阅读全文

posted @ 2019-04-25 17:32 岚天逸见 阅读(1534) 评论(0) 推荐(0) 编辑

C++ Thrift服务端记录调用者IP和被调接口方法
摘要:Apache开源的Thrift(http://thrift.apache.org)有着广泛的使用,有时候需要知道谁调用了指定的函数,比如在下线一起老的接口之前,需要确保对这些老接口的访问已全部迁移到新口。Thrift提供了支持,在《Thrift结构分析及增加取客户端IP功能实现》一文中已做过介绍,但 阅读全文

posted @ 2019-04-17 17:17 岚天逸见 阅读(997) 评论(0) 推荐(0) 编辑

程序高性能取时间问题
摘要:系统调用time底层调用的是gettimeofday,因此只需关注gettimeofday的性能,而且不同Linux上的gettimeofday会存在性能差异。围绕gettimeofday的优势主要基于rdtsc指令,rdtsc和CPU核相关,因此实现时需要处理好多核问题,除非进程和CPU建立亲和关 阅读全文

posted @ 2019-03-20 11:24 岚天逸见 阅读(901) 评论(0) 推荐(0) 编辑

C++标准库之string返回值研究
摘要:先说结论(不一定适用所有环境): 1) GCC默认开启了返回值优化(RVO),除非编译时指定“-fno-elide-constructors”; 2) 现代C++编译器一般都支持返回值优化; 3) string的拷贝构造和拷贝赋值是浅拷贝。 测试环境: 1) gcc (GCC) 4.8.5 2) g 阅读全文

posted @ 2019-03-19 12:55 岚天逸见 阅读(255) 评论(0) 推荐(0) 编辑

Apache Thrift的C++多线程编程定式
摘要:Facebook贡献给Apache的开源RPC组件Thrift有着广泛的应用,C++中使用Thrift也十分普遍,但由于Thrift的Handler会被多个线程调用,因而多线程中应用并不直接的友好,利用C++的“thread_local”特性或GCC的“__thread”特性可化简这一问题。 看具体 阅读全文

posted @ 2019-03-18 19:22 岚天逸见 阅读(732) 评论(0) 推荐(0) 编辑

实战C++对象模型之成员函数调用
摘要:先说结论:C++的类成员函数和C函数实质是一样的,只是C++类成员函数多了隐藏参数this。 通过本文的演示,可以看见这背后的一切,完全可C函数方式调用C++类普通成员函数和C++类虚拟成员函数。 为了实现C函数方式调用C++类成员函数,准备两个文件:。 1) 被调用的C++类成员函数源代码文件aa 阅读全文

posted @ 2019-03-18 14:50 岚天逸见 阅读(1526) 评论(0) 推荐(0) 编辑

std::string的拷贝赋值研究
摘要:说明:以下涉及的std::string的源代码摘自4.8.2版本。结论:std::string的拷贝复制是基于引用计数的浅拷贝,因此它们指向相同的数据地址。 // std::string类定义typedef basic_string<char> string;template<typename _C 阅读全文

posted @ 2019-03-14 16:33 岚天逸见 阅读(4737) 评论(0) 推荐(0) 编辑

C++中的return和exit区别
摘要:在main函数中,return和exit经常混用,两者的一个区别:return会执行statck unwinding,而exit不会。如果触发了信号,exit也同样不会做stack unwinding,除此之外异常如果没有相应的catch,也同样不会有栈展开(stack unwinding)。 原因 阅读全文

posted @ 2019-01-29 11:23 岚天逸见 阅读(898) 评论(0) 推荐(0) 编辑

rapidjson常见使用示例
摘要:目录 目录 1 1. 前言 2 2. Move语意 2 3. rapidjson::Document 2 4. 内存泄漏 3 5. 成员迭代器MemberIterator 4 6. 数组迭代器ValueIterator 4 7. #include头文件 5 8. 示例1:解析一个字符串 5 9. 示 阅读全文

posted @ 2019-01-28 18:33 岚天逸见 阅读(5436) 评论(0) 推荐(0) 编辑

C和C++中的volatile、内存屏障和CPU缓存一致性协议MESI
摘要:目录 1. 前言2 2. 结论2 3. volatile应用场景3 4. 内存屏障(Memory Barrier)4 5. setjmp和longjmp4 1) 结果1(非优化编译:g++ -g -o x x.cpp -O0) 5 2) 结果2(优化编译:g++ -g -o x x.cpp -O2) 阅读全文

posted @ 2019-01-27 23:41 岚天逸见 阅读(6496) 评论(0) 推荐(1) 编辑

Linux中的sleep、usleep、nanosleep、poll和select
摘要:在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?下表列出了这几个函数间的异同点,可作为参考: 性质 精准度 线程安全 信号安全 sleep libc库函数 秒 是 不能和alarm同时使用 有些是基于alarm实现的,所以不能和alarm同时使用 usl 阅读全文

posted @ 2019-01-25 19:54 岚天逸见 阅读(3857) 评论(0) 推荐(1) 编辑

#微码分享#C++变参字符串格式化函数format_string
摘要:在C和C++中,变参格式化函数虽然非类型安全,但却十分便利,因为得到广泛使用。对于常见的size_t类型要用“%zu”,ssize_t用”%zd“,int64_t用“% ”PRId64,uint64_t用“% ”PRIu64,long用"%ld",long long用"%lld",示例:const 阅读全文

posted @ 2019-01-24 14:54 岚天逸见 阅读(1094) 评论(0) 推荐(0) 编辑

#微码分享#AES算法的C++包装类
摘要:AES为Advanced Encryption Standard的缩写,中文名:高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,用来替代DES。基于std::string实现的C++包装类,使用得应用AES算法十分简单。完整源代码链接:​https://gi 阅读全文

posted @ 2019-01-24 14:38 岚天逸见 阅读(345) 评论(0) 推荐(0) 编辑

严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关
摘要:“-fstrict-aliasing”表示启用严格别名规则,“-fno-strict-aliasing”表示禁用严格别名规则,当gcc的编译优化参数为“-O2”、“-O3”和“-Os”时,默认会打开“-fstrict-aliasing”。 什么是严格别名规则?gcc对严格别名的定义: In part 阅读全文

posted @ 2019-01-21 16:30 岚天逸见 阅读(3623) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 12 下一页

导航

统计信息

点击右上角即可分享
微信分享提示