• 列表与元组

    列表 (List) 列表是一个有序的、可变的集合,可以包含任意类型的对象,例如数字、字符串、甚至其他列表。 列表使用方括号 [] 来定义,元素之间用逗号分隔。 有序性 (Ordered):列表中的元素按照它们被添加的顺序进行存储。每个元素都有一个唯一的索引(位置编号),从 0 开始。 可变性 (Mutable):你可以在列表创建后,随时添加、删除或修改其中的元素。 异构性...
  • 栈和队列

    “栈和队列是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的” 这句话描述的是一种经典的设计模式————适配器模式 (Adapter Pattern)。在 C++ 标准库中,std::stack 和 std::queue 正是这种模式的绝佳范例,它们并不是底层容器, 而被称为“容器适配器 (Container Adapters)”。 适配器模式 (Adapter ...
  • 尾递归 (Tail Recursion) 与尾调用优化 (TCO)

    要理解尾递归和尾递归优化,首先必须理解程序是如何执行函数调用的。 函数调用与调用栈 (Call Stack) 当一个函数被调用时,计算机会在内存中一个称为 “调用栈” (Call Stack) 的特殊区域创建一个“栈帧” (Stack Frame)。它可以看作是函数的一次执行实例的“工作区”。它存储了函数的: 参数 (Arguments):传递给函数的数值。 局部变量 (L...
  • OOP

    类和实例基础 Python 允许在运行时动态地为某个实例添加、修改或删除属性。 123456789101112131415161718class Dog: def __init__(self, name): self.name = namedog1 = Dog("Buddy")print(dog1.name) # 输出: Buddy# 动态添加属性dog1.age...
  • 函数

    函数的参数(Parameters) 在 Python 中,函数的参数可以分为以下几种类型:必选参数、默认参数、可变参数 (*args)、命名关键字参数和关键字参数 (**kwargs)。并且在定义函数时, 必须按照这样的顺序来排列参数. 123def complex_function(pos1, pos2, default_arg='default', *args, kw_only1...
  • 生成器

    生成器是一种特殊的迭代器,它不需要你手动去实现迭代器协议(即 iter() 和 next() 方法)。它允许你用一种更简单、更像普通函数的方式来生成一个值的序列。 生成器的核心思想是 “懒加载” (Lazy Evaluation) 或 “延迟计算”。它不会一次性在内存中创建并存储所有元素,而是在你请求下一个元素时才实时生成它。 为什么要使用生成器? 生成器最主要的优点是内存效率极...
  • 智能体范式

    ReAct ReAct (Reason + Act) 核心思想是模仿人类解决问题的方式,将推理 (Reasoning) 与行动 (Acting) 显式地结合起来,形成一个“思考-行动-观察”的循环。 在ReAct诞生之前,主流的方法可以分为两类:一类是“纯思考”型,如思维链 (Chain-of-Thought),它能引导模型进行复杂的逻辑推理,但无法与外部世界交互,容易产生事实幻...
  • Structures

    操作系统服务与接口 这部分主要介绍了操作系统(OS)为用户和系统本身提供的核心功能,以及用户与操作系统交互的方式。 操作系统服务 (Operating System Services) 操作系统提供的服务可以从两个角度来看:为用户提供便利和确保系统高效运行。 面向用户的服务: 用户界面 (User Interface):几乎所有操作系统都提供用户界面,主要包括命令行界面(C...
  • 缓存替换策略

    自适应替换缓存(Adaptive Replacement Cache, ARC)
  • List

    std::list 是一个序列容器,它的底层实现是双向链表(Doubly-Linked List)。理解了“双向链表”这个数据结构,就理解了 std::list 的所有优缺点和行为特性。 std::list 的核心特性 与 std::vector(动态数组)的连续内存布局截然不同,std::list 的元素在内存中是非连续存储的。每个元素(节点)都包含三部分信息: 存储的数...
1789101121