如何创建一个全息效果的手机网站?

摘要:怎么做全息网站,手机建立网站,设计网页制作策划路程,六安做网站的公司✍作者:阿润021 📖专栏:C 文章目录 一、项目介绍二、项目实现准备工作1.日
怎么做全息网站,手机建立网站,设计网页制作策划路程,六安做网站的公司✍作者#xff1a;阿润021 #x1f4d6;专栏#xff1a;C 文章目录 一、项目介绍二、项目实现准备工作1.日志系统技术实现策略2.相关技术知识补充2.1 不定参函数设计2.2 设计模式 三、日志项目框架设计1.模块划分2.各模块关系图 四、详细代码实现1.实用工具类设计2.日志等级… ✍作者阿润021 专栏C 文章目录 一、项目介绍二、项目实现准备工作1.日志系统技术实现策略2.相关技术知识补充2.1 不定参函数设计2.2 设计模式 三、日志项目框架设计1.模块划分2.各模块关系图 四、详细代码实现1.实用工具类设计2.日志等级类设计3.日志消息类设计4.日志输出格式化模块5.日志落地模块(简单工厂模式)6.日志器类(Logger)设计建造者模式7. 双缓冲区异步任务处理器AsyncLooper设计8.异步日志器(AsyncLogger)设计9.单例日志器管理类设计单例模式10.日志宏全局接口设计代理模式 五、项目测试参考资料 一、项目介绍 简介 本项目主要实现一个日志系统它可以根据不同的级别、配置和策略以同步或异步的方式将日志信息可靠地写入控制台文件或滚动文件中同时支持多线程并发写日志和扩展不同的日志落地目标地模式。 开发环境 • CentOS 7 • vscode/vim • g/gdb • Makefile 核心技术 1.类层次设计如继承和多态的应用 2.C11如多线程、auto、智能指针、右值引⽤等 3. 双缓冲区设计实现异步日志器 4. 生产消费模型 5. 多线程实现并发输出日志 6. 设计模式单例日志管理器类设计、⼯⼚模式、代理模式、模板等 环境搭建 本项目不依赖其他任何第三⽅库 只需要安装好CentOS/Ubuntu vscode/vim环境即可开发。 测试结果展示 为什么需要日志系统 • 生产环境的产品为了保证其稳定性及安全性是不允许开发⼈员附加调试器去排查问题 可以借助日志志系统来打印⼀些日志帮助开发⼈员解决问题 • 上线客户端的产品出现bug无法复现并解决 可以借助⽇志系统打印⽇志并上传到服务端帮助开发⼈员进⾏分析 • 对于⼀些⾼频操作如定时器、心跳包在少量调试次数下可能⽆法触发我们想要的⾏为通过断点的暂停⽅式我们不得不重复操作⼏⼗次、上百次甚⾄更多导致排查问题效率是⾮常低下 可以借助打印⽇志的⽅式查问题 • 在分布式、多线程/多进程代码中 出现bug⽐较难以定位 可以借助⽇志系统打印log帮助定位bug • 帮助首次接触项目代码的新开发人员理解代码的运⾏流程 二、项目实现准备工作 1.日志系统技术实现策略 日志系统的技术实现主要包括三种类型: 利用printf、std::cout等输出函数将⽇志信息打印到控制台 对于⼤型商业化项目 为了放便排查问题我们⼀般会将⽇志输出到⽂件或者是数据库系统⽅便查询和分析日志 主要分为同步日志和异步日志方式: 1 同步写日志 2 异步写日志 同步写日志 同步⽇志是指当输出⽇志时必须等待⽇志输出语句执⾏完毕后才能执⾏后⾯的业务逻辑语句⽇志输出语句与程序的业务逻辑语句将在同⼀个线程运⾏。每次调⽤⼀次打印⽇志API就对应⼀次系统调⽤write写⽇志⽂件。 但是在⾼并发场景下随着⽇志数量不断增加同步⽇志系统容易产⽣系统瓶颈 • ⼀⽅⾯⼤量的⽇志打印陷⼊等量的write系统调⽤有⼀定系统开销. • 另⼀⽅⾯使得打印⽇志的进程附带了⼤量同步的磁盘IO影响程序性能 异步写日志 异步日志是指在进行日志输出时日志输出语句与业务逻辑语句并不是在同⼀个线程中运⾏而是有专⻔的线程⽤于进行日志输出操作。业务线程只需要将⽇志放到⼀个内存缓冲区中不用等待即可继续执执后续业务逻辑作为日志的生产者而日志的落地操作交给单独的日志线程去完成作为日志的消费者, 这是⼀个典型的生产-消费模型。 这样做的好处是即使⽇志没有真的地完成输出也不会影响程序的主业务可以提⾼程序的性能 • 主线程调⽤⽇志打印接⼝成为⾮阻塞操作 • 同步的磁盘IO从主线程中剥离出来交给单独的线程完成 2.相关技术知识补充 2.1 不定参函数设计 在初学C语⾔的时候我们都⽤过printf函数进⾏打印。其中printf函数就是⼀个不定参函数在函数内部可以根据格式化字符串中格式化字符分别获取不同的参数进⾏数据的格式化。
阅读全文