Webserver笔记

代码随想录的项目


LogStream.h

// 返回data_ char数组的数据末尾地址
const char* end() const { return data_ + sizeof data_; }

Logging.cpp

//定义一个 struct timeval 类型的变量 tv,用于存储当前的时间信息。
//定义一个 time_t 类型的变量 time,用于存储当前的时间戳。
//定义一个字符数组 str_t,用于存储格式化后的时间字符串。
//调用 gettimeofday 函数,获取当前的时间信息,并将其存储在 tv 变量中。
//将 tv 变量中的时间戳赋值给 time 变量。
//调用 localtime 函数,将 time 变量转换为本地时间,并将结果存储在 p_time 变量中。
//调用 strftime 函数,将 p_time 变量中的本地时间格式化为一个字符串,并将其存储在 str_t 数组中。
//将格式化后的时间字符串添加到日志信息中,并将其存储在 stream_ 变量中。
void Logger::Impl::formatTime()
{
    struct timeval tv;
    time_t time;
    char str_t[26] = {0};
    gettimeofday (&tv, NULL);
    time = tv.tv_sec;
    struct tm* p_time = localtime(&time);   
    strftime(str_t, 26, "%Y-%m-%d %H:%M:%S\n", p_time);
    stream_ << str_t;
}

FileUtil.cpp

//stream:一个指向 FILE 类型的指针,表示要设置缓冲区的文件流。
//buf:一个指向字符数组的指针,表示用户提供的缓冲区。
//size:一个 size_t 类型的变量,表示缓冲区的大小。
//当你调用 setbuffer 函数时,文件流将使用用户提供的缓冲区进行 I/O 操作。这样,在进行文件读写时
//数据首先被存储在缓冲区,然后再从缓冲区写入文件或从文件读取到缓冲区。这种方式可以减少实时读写操作的开销,提高性能。
AppendFile::AppendFile(string filename) : fp_(fopen(filename.c_str(), "ae")) {
  // 用户提供缓冲区
  setbuffer(fp_, buffer_, sizeof buffer_);
}

HttpData.cpp

mime这个map在h和cpp中都声明了,感觉cpp中的声明是没有必要的?
std::unordered_map<std::string, std::string> MimeType::mime;  // 16行

Timer这个文件包含两个类

TimerNode类主要维护一个http请求和超时时间,以及是否删除等等。
TimerManager类包含一个优先级队列,用来存放TimerNode对象
// 表示队列存放的数据类型是SPTimerNode,std::deque<SPTimerNode>表示队列的实现容器是deque,TimerCmp代表比较器
std::priority_queue<SPTimerNode, std::deque<SPTimerNode>, TimerCmp> timerNodeQueue;

void TimerNode::update(int timeout) 更新超时时间

 // 这个函数的注释有点看不懂,我感觉就是被删除或者无效了,直接从堆里面删了啊
void TimerManager::handleExpiredEvent() {
  // MutexLockGuard locker(lock);
  while (!timerNodeQueue.empty()) {
    SPTimerNode ptimer_now = timerNodeQueue.top();
    if (ptimer_now->isDeleted())
      timerNodeQueue.pop();
    else if (ptimer_now->isValid() == false)
      timerNodeQueue.pop();
    else
      break;
  }
}

相关推荐

  1. Webserver笔记

    2024-07-20 07:14:02       16 阅读
  2. Webserve(4): HTTP解析

    2024-07-20 07:14:02       33 阅读
  3. WebServer 之 http连接处理(上)

    2024-07-20 07:14:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 07:14:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 07:14:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 07:14:02       45 阅读
  4. Python语言-面向对象

    2024-07-20 07:14:02       55 阅读

热门阅读

  1. mybatis-sql实战总结

    2024-07-20 07:14:02       17 阅读
  2. Python--正则表达式re模块基础匹配方法

    2024-07-20 07:14:02       16 阅读
  3. 2024-07-19 Unity插件 Odin Serializer1 —— 插件介绍

    2024-07-20 07:14:02       17 阅读
  4. 【多商户自营解决方案】

    2024-07-20 07:14:02       16 阅读
  5. 基于深度学习的股票预测

    2024-07-20 07:14:02       15 阅读
  6. centos(或openEuler系统)安装clickhouse集群

    2024-07-20 07:14:02       14 阅读
  7. 介绍下项目的架构

    2024-07-20 07:14:02       11 阅读
  8. Docker 和 k8s 之间是什么关系?

    2024-07-20 07:14:02       13 阅读
  9. 软考高级第四版备考--第25天干系人绩效

    2024-07-20 07:14:02       16 阅读