有站点地图的网站,网站建设中企,商务网站建设是什么,shopify做旅游网站代码随想录的项目 LogStream.h
// 返回data_ char数组的数据末尾地址
const char* end() const { return data_ sizeof data_; }Logging.cpp
//定义一个 struct timeval 类型的变量 tv#xff0c;用于存储当前的时间信息。
//定义一个 time_t 类型的变量 time#xff0c;用…代码随想录的项目 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_mapstd::string, std::string MimeType::mime; // 16行Timer这个文件包含两个类
TimerNode类主要维护一个http请求和超时时间以及是否删除等等。
TimerManager类包含一个优先级队列用来存放TimerNode对象
// 表示队列存放的数据类型是SPTimerNodestd::dequeSPTimerNode表示队列的实现容器是dequeTimerCmp代表比较器
std::priority_queueSPTimerNode, std::dequeSPTimerNode, 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();elsebreak;}
}