当前位置: 首页 > news >正文

什么是体验营销移动建站优化

什么是体验营销,移动建站优化,重庆企业网站排名优化,做网站的软件工程师C语言单例模式-实现高性能日志管理器 代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。 日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。 在主函数…

C语言单例模式-实现高性能日志管理器

代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。
日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。
在主函数中,设置了日志级别为DEBUG,并写入了5条不同级别的日志,最后关闭日志文件、销毁互斥锁、释放内存。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <pthread.h>// 日志级别枚举
typedef enum {LOG_LEVEL_DEBUG,LOG_LEVEL_INFO,LOG_LEVEL_WARN,LOG_LEVEL_ERROR,LOG_LEVEL_FATAL
} LogLevel;// 日志管理器结构体
typedef struct {FILE* file; // 日志文件指针LogLevel level; // 日志级别pthread_mutex_t lock; // 互斥锁
} LogManager;// 日志管理器单例结构体
typedef struct {LogManager* manager; // 日志管理器指针
} LogManagerSingleton;static LogManagerSingleton* instance = NULL; // 日志管理器单例对象指针// 获取当前时间字符串函数
void get_current_time_string(char* buffer, size_t size) {time_t now = time(NULL);struct tm* tm = localtime(&now);strftime(buffer, size, "%Y-%m-%d %H:%M:%S", tm);
}// 写日志函数
void write_log(LogLevel level, const char* message) {LogManager* manager = instance->manager;if (level < manager->level) {return;}char time_str[20];get_current_time_string(time_str, sizeof(time_str));pthread_mutex_lock(&manager->lock);fprintf(manager->file, "[%s] ", time_str);switch (level) {case LOG_LEVEL_DEBUG:fprintf(manager->file, "[DEBUG] ");break;case LOG_LEVEL_INFO:fprintf(manager->file, "[INFO] ");break;case LOG_LEVEL_WARN:fprintf(manager->file, "[WARN] ");break;case LOG_LEVEL_ERROR:fprintf(manager->file, "[ERROR] ");break;case LOG_LEVEL_FATAL:fprintf(manager->file, "[FATAL] ");break;}fprintf(manager->file, "%s\n", message);fflush(manager->file);	// 将写缓存区立即写入磁盘。pthread_mutex_unlock(&manager->lock);
}// 设置日志级别函数
void set_log_level(LogLevel level) {instance->manager->level = level;
}init_instance() {instance = (LogManagerSingleton*)malloc(sizeof(LogManagerSingleton));instance->manager = (LogManager*)malloc(sizeof(LogManager));instance->manager->file = fopen("log.txt", "a");instance->manager->level = LOG_LEVEL_INFO;	// 日志默认级别INFOpthread_mutex_init(&instance->manager->lock, NULL);
}// 获取日志管理器单例对象函数
LogManager* get_log_manager_instance() {return instance->manager;
}int main() {init_instance();	/* 程序一开始,就必须执行。不然,与懒汉式无较大差异。 */LogManager* manager = get_log_manager_instance(); // 获取日志管理器单例对象set_log_level(LOG_LEVEL_DEBUG); // 设置日志级别为DEBUGwrite_log(LOG_LEVEL_DEBUG, "debug message"); // 写DEBUG级别日志write_log(LOG_LEVEL_INFO, "info message"); // 写INFO级别日志write_log(LOG_LEVEL_WARN, "warn message"); // 写WARN级别日志write_log(LOG_LEVEL_ERROR, "error message"); // 写ERROR级别日志write_log(LOG_LEVEL_FATAL, "fatal message"); // 写FATAL级别日志fclose(manager->file); // 关闭日志文件pthread_mutex_destroy(&manager->lock); // 销毁互斥锁free(manager); // 释放日志管理器内存free(instance); // 释放日志管理器单例对象内存return 0;
}/*
该示例代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。
日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。
在主函数中,设置了日志级别为DEBUG,并写入了5条不同级别的日志,最后关闭日志文件、销毁互斥锁、释放内存。
*/
http://www.hkea.cn/news/108365/

相关文章:

  • 现在大家做电商网站用什么源码营销策略都有哪些
  • 可以做试卷的网站英语怎么说seo关键词排名优化系统源码
  • 网站怎么设置支付功能企业网站的主要类型有
  • 成都圣都装饰装修公司北京搜索优化排名公司
  • 境外建设网站贴吧互联网域名注册查询
  • 广州建站工作室淘客推广怎么做
  • 中国最大的网站建设公司百度广告联盟点击一次多少钱
  • wordpress单页主题营销seo手机关键词网址
  • dedecms做电影网站韩国最新新闻
  • 哪个网站做废旧好如何在百度上发布自己的广告
  • 网站表单及商品列表详情模板如何搭建自己的网站
  • 网站域名登记证明百度高级搜索怎么用
  • 国外网站在国内做镜像站点网站搭建费用
  • 网站后台如何添加关键词软件开发公司
  • 手机做网站的网站windows优化大师卸载不了
  • 万网速成网站有哪些 功能自己的网站怎么推广
  • 邯郸哪有做网站的河南百度推广公司
  • 我是做环保类产品注册哪些浏览量大的网站推销自己的产品比较好呢西安网站seo优化公司
  • 网页传奇游戏排行昆明网络推广优化
  • 商城模板网站模板网站软文是什么
  • 校园网站推广方案怎么做网站排名推广工具
  • 深圳罗湖企业网站建设报价网络媒体发稿平台
  • 用别人公司域名做网站线下推广的渠道和方法
  • php mysql的网站开发外贸推广平台
  • 济南网站建设认可搜点网络能百度指数有三个功能模块
  • 网上商城网站建设意义在线代理浏览网页
  • 网站图片切换代码百度下载并安装最新版
  • 微信公众平台号申请注册入口杭州seo公司
  • 本周实时热点新闻事件seo文章代写一篇多少钱
  • 旺店通app手机企业版下载网站seo如何优化