时刻保持学习状态

  • 每天保持一定的刷题量
  • 八股文复习
  • 内核学习

linux自启动方法:

  1. /etc/rc.local添加要执行程序的全路径
  2. /etc/rc.d/init.d添加自启动脚本
  3. 安装对应的服务,在/etc/systemd/system下创建service脚本设置为开机启动

内存池管理:

内存管理

栈:函数开辟,局部变量

堆:内存申请

全局存储区:全局变量

静态存储区:static

常量存储区:存放常量不能修改

代码区:存放代码

内存池管理

频繁使用new malloc 会造成大量的内存碎片,导致性能下降

内存池就是在真正使用内存前,先申请分配一定数量的,大小相等的内存块作为备用,当有内存的需求时就从内存池取,不够就申请新的内存。

内存池设计

子类和基类

dynamic_cast转换可以判断子类是该基类

Gcc编译参数

-O -O0 -O1 -O2 -O3 四级优化

0不做任何优化,适用于debug阶段

1对代码分支,常量和表达式进行优化

2寄存器级的优化,编译期间占用更多的内存和编译时间

3伪寄存器网络,内联函数,循环优化

s代码大小的优化,基本不用关心,优化会打乱程序的结构

Tcp学习

一文搞定 UDP 和 TCP 高频面试题! - 知乎

查找单链表的中间节点

快慢指针方法

智能指针

atuo_ptr:被废弃,会出现空指针访问

unique_ptr:独占资源所有权的指针

        离开指针的作用域时自动释放内存

share_ptr:共享资源所有权的指针

        对资源做引用计数,计数为0时自动释放。

        内存开销比裸指针和无自定义的unique_ptr对象略大

        维护的信息有两部分:指向共享资源的指针,指针控制信息的指针。

        共享的指针都要指向两个部分的指针。

weak_ptr:共享资源的观察者,和share_ptr一起使用,不影响资源的生命周期

        weak是share的观察者,要用weak正在观察的资源,就可以提升为share

        如果share管理的对象被释放,weak_ptr就会变成nullptr

        只要weak对象还存在,就可以知道share资源还在不在,通过控制块观察对象还在不在

        不会增加计数,解决share思索的问题

enable_shared_from_this:成员函数获取this的shared_ptr正确方法是继承

class Bar : public std::enable_shared_from_this {
 public:
  std::shared_ptr GetSPtr() {
    return shared_from_this();
  }
};

auto sptr1 = std::make_shared();
assert(sptr1.use_count() == 1);
auto sptr2 = sptr1->GetSPtr();
assert(sptr1.use_count() == 2);
assert(sptr2.use_count() == 2);

你可能感兴趣的:(linux,运维,服务器)