Weekly Learning Log - 2025-09-07

What I Learned

  • Ripgrep项目Walk部分学习

    • 参数解析分层

    • 复杂问题分离-组合处理,多用组合

      • 文件内容遍历搜索:分解为文件发现和单个文件内容搜索
    • 面向trait编程

    • 任务窃取初步初见

    • 并发编程经典模型

      • Worker —- Work —— Visitor 经典抽象
      • 生产者-消费者模型
  • rust标准库学习

    • Iterator

      • accaccumulator的缩写,标识累积计算过程中的中间结果
      • fold函数,用于将集合中的所有元素通过操作"折叠"成单个值
      • 消费self构建新的迭代器,Map之于map等
    • Result、Option

      • ref与&的区别
  • tokio项目学习

    • Pin和Upin的理解,为什么需要Pin
    • Waker和Context的机制
    • CPU的执行速度与I/O的速度差异,需要异步任务让出线程,而非为了让出而让出
    • future的简单实现
  • Tcp 和 Udp网络编程

    • tcp和udp的区别
    • 有连接的理解:tcp双方对共同状态信息的维护,udp发送的都是独立的数据包,故无连接
    • trait对象和普通对象的内存结构

Challenges & Solutions

This Week’s Win

  • 架构设计理解加深,对组合和面向trait编程有了进一步理解
  • 真正理解了Tcp的有连接
  • Iterator中map等方法通过构建中间结构体(如Map)来实现
  • FnOnce、FnMut、Fn的深入学习
  • 并行编程的模型

Next Week Focus

  • 继续学习tokio
  • 学习andriod语音项目

学习时长: 完成任务:

使用 Hugo 构建
主题 StackJimmy 设计