摘要:
1. 线程同步的使用原则 首要尽量最低限度共享对象,减少需要同步的场合,避免一个对象暴露给别的线程; 其次是使用高级的并发编程构件,如线程安全的队列等; 最后不得已必须使用底层同步原语来保护共享对象时,只使用非递归的互斥锁和条件变量; 2. 互斥锁 参考: "std::mutex" 互斥锁单独使用, 阅读全文
摘要:
1. 原始指针 两个指针p1,p2,指向堆上的同一对象object, 如果通过p1指针将对象销毁,则p2成了空悬指针. 空悬指针 引入一个线程安全/高效的引用计数,来实现对指针的管理,就是智能指针的原理. 2. C++中可能存在的内存问题 1. 缓冲区溢出,用 // 或自己编写 来管理缓冲区; 2. 阅读全文
摘要:
项目线上频繁的产生core文件,运维同事都有意见了,刚开始以为设置 就可以了,但是ulimit只对当前会话有效,且这并不能真正解决程序崩溃的问题。 对于linux后台开发,经常会与core文件打交道。为了能够更好的分析其中的原理,就查阅一些资料来对core文件进行深入的学习。 参考: "Linux上 阅读全文
摘要:
参考: "学习笔记之gethostbyname函数" 1. gethostbyname函数 ld@ld pc:~/workspace$ nslookup www.baidu.com Server: 127.0.1.1 Address: 127.0.1.1 53 Non authoritative a 阅读全文
摘要:
1. 共享库的兼容性 共享库版本的更新可能会导致接口的更改和删除,这可能导致依赖于该共享库的程序无法正常运行. 共享库的更新可以分为两类: 兼容更新,接口不变 不兼容更新,接口改变. 导致C语言的共享库ABI(二进制接口)改变的行为主要有如下4个: 1. 导出函数的行为发生改变, 也就是说调用这个函 阅读全文
摘要:
1. noncopyable类和copyable类 2. test cpp include include "noncopyable.h" class A : public ld::noncopyable { public: int a=1; }; class B : public ld::copy 阅读全文
摘要:
1. c++标准异常 2. 堆栈信息 获取堆栈信息,主要是使用 中定义的几个函数. 在抛出异常之后,通过 中定义的函数,获取堆栈信息,有助于定位问题. 3. 自定义异常类 BacktraceException.h BacktraceException.cpp cpp / BacktraceExcep 阅读全文
摘要:
1. C++ std::function std::bind std::shared_ptr std::vector 2. demo cpp include include include include include using namespace std; class Info{ public 阅读全文
摘要:
linux的计时函数,用于获取当前时间。 1. gettimeofday() 函数 | 结构体 | 精度 | | time()|time_t|s gettimeofday()|struct timeval|us 计时只使用gettimeofday()函数来获取当前时间: time()函数精度太低,g 阅读全文
摘要:
1. IO类层次结构 2. demo c++ include include include using namespace std; void test_fstream(); void test_stringstream(); int main() { test_fstream(); test_s 阅读全文