时刻保持学习状态

本文涵盖了Linux系统的自启动方法,内存池管理中的栈、堆、全局存储区等概念,以及智能指针(unique_ptr,shared_ptr,weak_ptr)的使用。同时介绍了Gcc编译器的优化选项和TCP/UDP的基础知识。
摘要由CSDN通过智能技术生成
  • 每天保持一定的刷题量
  • 八股文复习
  • 内核学习

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<Bar> {
 public:
  std::shared_ptr<Bar> GetSPtr() {
    return shared_from_this();
  }
};

auto sptr1 = std::make_shared<Bar>();
assert(sptr1.use_count() == 1);
auto sptr2 = sptr1->GetSPtr();
assert(sptr1.use_count() == 2);
assert(sptr2.use_count() == 2);
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_yeoman_ym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值