教育经历 Education
  • 2025/09/01 - 2028/07/01
    专业硕士 北京理工大学 计算机技术专业
  • 2021/09/01 - 2025/07/01
    工学学士 北京理工大学 软件工程专业
    CET-6 525
获奖情况 Awards
  • 2023/10 - 2023/12
    ICPC 区域赛(西安、合肥)银奖
  • 2023/10 - 2023/12
    CCPC 区域赛(深圳)银奖
技能 Skills
  • 编程语言:熟悉 C/C++,了解 Rust、Python

    1. 较熟练使用 C++ 语言,了解 C++ 11 的一些新特性,如右值引用、智能指针、模板元编程、自动类型推导等

    2. 熟悉 C++ 的常用 STL 容器,如 map、unordered_map、vector

    3. 了解 C++ 的并发编程,包括互斥、锁、共享锁、条件变量、线程闩、线程卡等

    4. 熟悉常见的数据结构和算法,如顺序表、链表、栈、堆、二叉树、递归、归并、快排、动态规划

  • 专业知识:了解图形学基础知识

    了解光栅化渲染的基本流程,如基础的矩阵变换

项目 Projects
  • 简单的 ECS(Entity-Component-System)系统

    项目描述:

    在实时游戏场景中,传统 OOP 架构难以应对实体的并行计算需求,存在数据局部性差、线程竞争激烈等性能瓶颈,需构建新型数据驱动架构

    ECS 是一种用于游戏开发和高性能应用的架构模式,将数据(Component)与行为(System)分离,Entity 作为 Component 的容器。这样设计有利于优化缓存、提高性能和灵活性,便于并行处理和代码解耦

    项目亮点:

    1. 使用稀疏集合 SparseSet 紧密存储某一类 Component,实现 O(1) 的删除和查询操作,提升缓存命中率。外层使用 unordered_map 进行 O(1) 的实体 ID 到稠密索引的映射

    2. 使用了 C++ 模板元编程相关技术,如类型萃取、万能引用、引用转发、变参表达式等,来处理并查询 Entity 与 Component

    3. 使用 C++ 的 Name mangling 机制在编译期获得每个组件的唯一 typeid

    4. 尽量使用编译期计算,例如使用类型萃取相关技术在编译期判断元组中的 Component 类型是否重复。使用编译期 for 循环或者折叠表达式、index_sequence等来判断多个元组中的 Component 类型是否重复

    5. 实现了简单的 System 调度器,可以手动建立 System 的依赖关系 DAG,并使用基础的 C++ 并发编程,包括互斥、锁、条件变量、future 等,实现了简单的线程池,支持按照依赖关系并发执行 System。其中使用基于条件变量的任务唤醒机制,降低线程空转率

    6. 使用虚位节点方法实现了基于细粒度锁的线程安全的命令队列 CommandQueue