摘要:
shared_ptr 引子 c++中动态内存的管理是通过new和delete来完成的,只要保证new和delete的配对使用,是没有问题的。但是有时候我们会忘记释放内存,甚至有时候我们根本就不知道什么时候释放内存。特别时在多个线程间共享数据时,更难判断内存该何使释放。这种情况下就机器容易产生引用非法 阅读全文
摘要:
Docker 镜像使用 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。 查找镜像 我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docke 阅读全文
摘要:
容器安装与验证 安装参考:https://www.runoob.com/docker/ubuntu-docker-install.html 验证docker - Hello world 安装验证:$ sudo docker run hello-world 或者 docker run ubuntu:1 阅读全文
摘要:
意外的崩溃,在日志没法有效支撑时,core dumped是一种有效的调试方法。linux的core-dump默认是关闭的,在使用时,我们需要作以下设置: 1)设置 core 的存储目录和命名格式 主要是修改配置文件 /proc/sys/kernel/core_pattern # 1. 默认在当前程序 阅读全文
摘要:
锁的问题-同一个线程两次获取同一把锁 结果:会直接报异常 #include <iostream> #include <mutex> using namespace std; class ErrorLockUsage { public: void DisplayStr() { lock_guard<m 阅读全文
摘要:
bug调试要根据应用场景和条件,选择什么样子的调试方式很大程度上不是你想选择什么样的调试方式,而是还剩下什么样子的调试方式可用。下面就根据不同的场景和条件来总结一下。 目录: 1、gdb调试或者IDE自带的调试工具 2、堆栈调用 3、日志打印 4、strace 5、信号函数捕捉 6、代码静态检测Cp 阅读全文
摘要:
关于匿名对象与临时对象,这个概念不是绝对的,概念的区分往往十分拗口难记。要根据作用域,生存时间和用法来来决定;工作多年这些拗口的概念我从来没有真的记住过,也没有一个博客讲清楚他们的区别。这里我们参考《Effective C++》中得称谓,称之为局部对象。但是局部也是有范围得。下面论证。 1 无名则无 阅读全文
摘要:
多态: C++的多态是通过一张虚函数表(Virtual Table)来实现的,简称为 V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆写的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类 阅读全文
摘要:
———————————————综述与目录—————————————— 讨论这个问题之前我们先明确类的结构,一个类的大概组成,下面的很多分类名词都是我个人杜撰,为的就是让读者看懂能够区分,下面分别分类: 目录 空类 不含任何成员变量,也不继承某个基类。 结构类 像C语言中结构体一样,要么只包含基本数据 阅读全文
摘要:
本篇随笔讨论一个比较冷门的知识,继承结构中内存对齐的问题,如今内存越来越大也越来越便宜,大部分人都已经不再关注内存对齐的问题了。但是作为一个有追求的技术人员,实现功能永远都是最基本的要求,把代码优化到自己想要的样子才能从中找到真正的愉悦感。这便是我们追求细节的意义。 声明:以下例子,以x86_64 阅读全文
摘要:
服务器部署问题: 本质上,目标程序开发完成后,要在机器上部署,要求开发机器必须于服务器环境一致,这样风险相对较小,部署相对容易。可是现实中常常因为各种原因,很难保证开发机器与部署机器的一致性。下面是一些问题总结。 动态库依赖动态库 最常问题: 库版本兼容问题(如:`GLIBCXX_3.4.20' n 阅读全文