撰写于 2023
  • Keep It Simple Stupid(KISS)

    Tuesday, February 28, 2023 在 randomization

    简介 KISS(“Keep It Simple Stupid”)是一种伪随机数生成器(PRNG)家族,由George Marsaglia引入。KISS生成器通过结合多个独立的随机数生成器来提高随机数的质量。早期版本包括一个线性同余生成器和两个线性反馈移位寄存器生成器,而后来的版本引入了乘-携带生成器和Xorshift生成器。尽管KISS生成器在一些统计测试中表现良好,但它并不适合加密用途​

    更多

撰写于 2022
  • C++ 是如何实现面向对象编程的

    Thursday, October 27, 2022 在 c++笔记

    面向对象的三个特性 封装:将对象的状态(数据成员)和行为(成员函数)捆绑在一起,并控制对它们的访问。封装的主要目的是隐藏类的内部实现细节,并仅暴露必要的接口供外部使用。这样可以保护数据,防止外部代码意外或恶意地改变对象的状态。 数据成员可以被声明为 private、protected 或 public。 成员函数通常也是 public 的,以便用户可以调用这些函数来操作对象。 使用 private 和 protected 修饰符可以限制对数据成员的直接访问。 继承:允许创建新的类(称为派生类或子 …

    更多

  • 内存泄漏

    Saturday, October 15, 2022 在 c++笔记

    什么是内存泄漏 程序块在[堆]中申请的[动态内存], 在程序块使用完成后没有得到[及时释放], 从而导致了堆中可使用的内存越来越少的现象 内存泄漏是逻辑上的概念, 指在程序运行期间, 总内存的可复用率变低的问题 内存泄漏主要指在[堆]上分配的变量所占用的内存, 因为[栈]中分配的变量, 会随着函数退出时自动回收. 而堆是动态分配的 不仅要考虑 malloc, calloc, realloc, new 等分配的内存是否得到了释放, 也要考虑使用系统资源或者在[堆]中创建的对象 内存泄漏的检测与预防 …

    更多

  • 大端和小端

    Saturday, October 15, 2022 在 c++笔记

    什么是字节序(Endian-ness) 两种字节序的形式 小端(Little-Endian) 大段(Bit-Endian) 字节序的转换

    更多

  • 编译与链接

    Saturday, October 15, 2022 在 c++笔记

    什么是编译 C++ 是一种静态类型的编程语言,CPU 无法直接执行文件中的各行命令, 这意味着在程序执行之前需要通过 编译过程 将其源代码转换为机器码. 编译器会读取程序的源文件 .cpp, 将其翻译为可执行文件 ELF, ELF 文件可以经过操作系统进行加载执行 编译的过程 常见的编译过程分为四个过程: 编译预处理, 编译, 汇编, 链接 编译预处理:在预编译过程中主要处理源代码中的预处理指令,比如引入头文件#include,去除注释,处理所有的条件编译指令#ifdef, #ifndef, …

    更多

  • sizeof 和 strlen 的区别

    Saturday, October 15, 2022 在 c++笔记

    更多

  • 内存对齐

    Thursday, October 13, 2022 在 c++笔记

    内存对齐 计算机中内存的地址空间是按照 byte 来划分的, 从理论上讲对任何类型变量的访问, 可以从内存中的任意地址开始, 但实际情况是: 在访问特定类型变量的时候通常在特定的内存地址访问, 这就需要对这些数据在内存中存放的位置进行限制, 各种类型数据按照一定的规划在空间上排列, 而不是顺序地一个接一个地排放, 这就是对齐, 编译器将程序中地每个 数据单元 的地址安排在机器字的整数倍的地址指向的内存之中 为什么要内存对齐 主要是由于 CPU 的访问内存的特性决定, CPu 访问内存时并不是以字 …

    更多

  • 堆与栈

    Thursday, October 13, 2022 在 c++笔记

    更多

  • 变量定义与生命周期

    Thursday, October 13, 2022 在 c++笔记

    作用域 与 生命周期 这两个属性, 以 空间(作用域) 和 时间(生命周期) 两个不同的维度来描述一个 变量 作用域 一个变量可以被引用的范围 全局变量: 全局变量只需在一个源文件中定义, 就可以作用域所有的源文件, 其他不包含全局变量定义的源文件需要用 extern 关键字再次声明这个全局变量 静态全局变量: 与全局变量的区别在于如果程序包含多个文件的话, 它作用域定义它的文件里, 不能作用到其他文件里, 即被 static 关键字修饰过的变量具有文件作用域, 即使两个不同的文件都定义了相同的 …

    更多

  • c++ 内存管理

    Thursday, October 13, 2022 在 c++笔记

    ELF 文件: 可执行与可链接格式(Executable and Linkable Format)是一种用于可执行文件, 目标代码, 共享库和核心转储(core dump)的标准文件格式, 每个ELF文件都由一个ELF header 和紧跟其后的文件数据部分组成, 可以参考 ELF 文件的构成如下: 我们可以看见可执行程序内部都是分段进行存储的. .text section: 代码段, 通常存放已编译程序的机器代码, 一般操作系统加载后, 这部分是只读的 .rodata section: 只读数 …

    更多