C++
PJZero
95后/ 在大厂后端六年;利用业余时间探索开源和副业;全干工程师; ♀️热爱跑步,有氧万岁;
新的博客地址: https://journeypeng.best;
SmartZoom: https://smartzoom.fun
展开
-
一个简单的glog实现
#include <iostream>#include <sstream>#define DEBUG 1#define INFO 2#define WARNING 3/** * https://stackoverflow.com/questions/17595957/operator-overloading-in-c-for-logging-purposes */class Logger {private: /** * 引用类型必须使用:初始化原创 2021-09-12 13:18:02 · 196 阅读 · 0 评论 -
为什么要有虚函数
不用虚函数#include <iostream>class A {public: void output() { std::cout << "I am parent." << std::endl; }};class B: public A {public: void output() { std::cout << "I am child." << std::endl;原创 2021-08-29 16:31:47 · 597 阅读 · 0 评论 -
【必知必会】Padding和Packing
文章目录Padding小问题FIRSTPacking问题答案FIRST answer参考扩展问题开门见山,先解释一下paddingPadding字面含义,垫子,在C中,和它差不多意思的是:alignment,对齐。在32位的系统中,为了提高计算速度,经常需要对内存中的数据进行32bit的对齐。假设我们有下面这样一个数据结构struct House { char index; int price;}如果不考虑对齐问题,我们很容易计算出这个数据结构在内存中所占用的内存大小:1 +原创 2021-07-04 14:04:57 · 522 阅读 · 0 评论 -
push_back 和 emplace_back 的差异,清晰易懂!
文章目录push back调用方式传入右值传入左值emplace_back 调用push back调用方式传入右值如果调用 push_back,传入的是右值vec_bc.push_back(BaseClass("b3", 1));则,需要执行以下步骤1. 调用构造函数,构造出右值A2. 调用 move 构造函数,copy 数据到 vector 的数据空间 的对象 B3. 在参数声明周期结束后,调用A 的析构函数,传入左值如果调用 push_back,传入的是左值{ Bas原创 2021-05-13 10:41:54 · 5525 阅读 · 1 评论 -
【linux】线程的cpu亲和性
文章目录说明实现设置亲和性获取亲和性参考文档说明可以将不同的线程设置到不同的cpu上运行,以此来是发挥多核效率实现设置亲和性bool binding_cpu(std::thread& thr, int cpuid) {#ifdef __linux__ int result = 0; cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(cpuid, &cpuset); result = pthre原创 2020-12-06 19:06:09 · 522 阅读 · 0 评论 -
【C++】打印十六进制数据
说明大家可能在做流媒体开发,或者网络相关开发的时候经常需要对数据进行逐个字节的分析,这个时候如果能在日志里面通过二进制,或者十六进制的方式打印出字节的详细内容,这样就能很方便的分析数据了。这里有个很小的代码片段,可以完成这个功能片段std::string to_hex(unsigned char* data, int len) { std::stringstream ss; ss << std::uppercase << std::hex << s原创 2020-12-06 18:09:00 · 11141 阅读 · 0 评论 -
[C++]耗时计时器最佳实践
背景我们在写代码的时候总是会遇到各种需要对程序某一个部分进行性能检测的情况,在Java中我们可能会很自然的想到通过记录开始和结束的时间戳,然后做个减就得出耗时。但是在C++这种在栈结束会自动清理内存的语言中,我们可以利用这个特点来做一个简单的计时器。实现#include <iostream>#include <sys/time.h>class RealTimeGardMs {public: RealTimeGardMs(const std::string&原创 2020-10-18 18:06:07 · 269 阅读 · 0 评论 -
【cpp】记录一次踩坑
//// Created by pengjian05 on 2020-07-29.//#include <bitset>#include <cstdio>#include <cstdlib>#include <fstream>#include <iostream>int main(int argc, char** argv) { auto file_path = "base.bin"; std::fst原创 2020-08-27 15:32:53 · 265 阅读 · 0 评论 -
shared_ptr和 double star
记录一个关于shared_ptr的代码片段// Example program#include <iostream>#include <string>#include <memory>class Data {public: Data(int a): a(a) { std::cout << "construct" << std::endl; } ~Data() { std::co原创 2020-08-25 16:47:41 · 119 阅读 · 0 评论 -
为什么要用引用传值
片段1#include <iostream>#include <string>class Point {public: Point(int x, int y) { this->x = x; this->y = y; } ~Point() { std::cout << ...原创 2020-03-07 14:25:58 · 417 阅读 · 0 评论 -
CMake基本使用 -- 常更
将一个文件下所有源文件 添加到文件target# 使用正则表达式匹配file(GLOB LOCATION_SRC "Location/*.h" "Location/*.cpp")# 添加文件到targetadd_executable(target ${LOCATION_SRC})设置c++语法# c++11 set(CMAKE_CXX_STANDARD 11) # 取值可以为 98 11原创 2017-04-26 10:21:31 · 487 阅读 · 0 评论 -
[推荐] C++解析json包:jsoncpp ——入门攻略
最近有面临一个问题,就在这里说出来吧,各位大神如果有看到~能解答我的疑惑,我将十分感激。问题是这样的,目前我们打算做一个集成多个 信号处理算法的桌面应用,方便大家在处理数据的时候方便快捷的实现。因为考虑到绘图问题,想到echarts画图那么好看,干脆拿来直接用就好路也不用自己重新写。但是echarts用的是js,而处理信号的算法可全部都是c++实现的啊,所以现在面临着几个选择把所有的算法用j原创 2017-05-01 19:29:36 · 2166 阅读 · 0 评论 -
Pistache(C++ REST工具)安装配置 ubuntu16.04 + cmake
Pistache is a C++ REST framework written by Mathieu Stefani at Datacratic. It is written in pure C++11 with no external dependency and provides a low-level HTTP abstraction.Pistache provides both an HTTP clien原创 2017-05-01 19:58:50 · 4430 阅读 · 0 评论 -
pistache(C++ REST 工具) 使用
项目不完善,使用需谨慎相关资料 github homepage / document目前因为资料还是不是很多,所以最好的学习资料应该就是在github项目主页上挂着的各种实例了~这里我将代码克隆了下来,用tree命令打印了一下目录:host@lab:~/scode/pistache$ tree -d -L 2.├── build│ ├── CMakeFiles│ ├── exa原创 2017-05-01 20:15:57 · 6722 阅读 · 1 评论