linux文本操作

  1. 把src.txt 的文本追加到dst.txt 后面

    1
    cat src.txt >> dst.txt
  2. linux 单线程所能支持的最大文件处理数量

    1
    cat /proc/sys/fs/file-max

    设置:例如设置成8192

    1
    echo 8192 > /proc/sys/fs/file-max

C++关键字总结

mutable 与 const

mutable的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。

1、const所修饰的函数中,要有编译器负责保护类中的成员函数不被修改;而相对地,mutable则是用来修饰类的成员变量的,让该变量在const修饰的常成员函数中可以被修改

2、const修饰的函数只能是类的成员函数(保护this指针不被恶意修改);mutable修饰的变量只能是类的成员变量。

3、在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const修饰的常成员函数中。

private

private可以保护不被类的成员不被外界调用,析构函数通常情况是public的,这样外部调用的时候可以用于
释放内存,如果一个析构函数被private修饰,那么会出现编译报错,因为编译器不能调用被private保护的析构函数。

引用

[1] https://blog.csdn.net/weixin_42067873/article/details/96107750

Q&A

Interview 问题收集

memcopy 与 memmove谁更安全?

memmove 更安全,memove 可以正确处理地址重叠的部分。

const 与 define 在定义常量的区别?

const 申明的常量会进行类型检查,define只是替换,不做类型检查。

static 关键字的作用?

static申明的类变量属于类,不属于某个对象,是所有类共享。

Cache和主存内存一致性
  1. write-through 写操作是数据写入cache又写入内存。
  2. write-back 写操作只是在数据被踢出cache时才写入内存。
指令调度的基本流程
  1. 构建DAG图,对DAG图进行处理
  2. 初始化,包括调度策略,DAG图,调度器队列;
  3. 选取节点进行调度,pickNode方法在自定义调度策略中被重写,GenericScheduler::pickNode()获取RegionPolicy中设置的次序>进行遍历,pickNode方法返回一个SUnit(Scheduling unit),这是调度图中的一个节点表示,包含节点的一系列属性和状态,譬如isPending,isAvailable,isScheduled等用于记录节点状态的信息;调试时可以通过SUnit.getInstr()->dump()打印出节点中指令的信息。
  4. scheduleMI,移动指令和更新寄存器压力信息
  5. 更新调度状态,将SU->isScheduled 设为 true。
std::cout 与 std::cerr 的区别?

​ std::cerr不需要被发送缓冲区,可以直接显示输出,std::cout 为了减少刷屏的次数,设置了缓冲区,这样在遇到std::endl 或者”\n”>时会调用os.flush把缓冲区内容输出到显示器上进行显示。