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

C++服务器框架开发1——项目介绍/分布式/#ifndef与#pragma once

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。
其教学视频见:[C++高级教程]从零开始开发服务器框架(sylar)

C++服务器开发1——项目介绍/分布式/#ifndef与#pragma once

  • 项目介绍
  • 分布式
  • #ifndef与#pragma once

最近开始学习下C++的项目开发,找了很多,在b站发现了一个教开发一套C++高性能服务器框架的up(sylar-yin),而且它有提供源码以及自己的博客。内容看着很全,就打算学一下。
目前我的C++能力仅仅是会基础,以及刷了几十到算法题。但是刷题太枯燥了,我离实习找工作还有段时间,所以想抽空先学个完整的开发项目,就挑了这个,如果后面发现学不会,我可能会放弃,但我会尽量学习完这个up的80个视频。本着需要什么学什么的态度,我遇到不会的,就查一下,然后做个笔记。

这次的笔记内容是:项目介绍、什么是分布式、#ifndef与#pragma once

项目介绍

详细见这页博文:http://www.sylar.top/blog/?p=137
github原话:C++高性能分布式服务器框架,webserver,websocket server,自定义tcp_server(包含日志模块,配置模块,线程模块,协程模块,协程调度模块,io协程调度模块,hook模块,socket模块,bytearray序列化,http模块,TcpServer模块,Websocket模块,Https模块等, Smtp邮件模块, MySQL, SQLite3, ORM,Redis,Zookeeper)

我看完感觉很多都不懂,先搁置吧。先学习下“分布式”。

分布式

我主要看的这篇:什么是分布式,分布式和集群的区别又是什么?这一篇让你彻底明白!
分布式:个系统在个服务器上协作完成单个任务。
集群式:个系统在个服务器上 ~~~~~       完成单个任务。
概括两者的差异:分布式系统的服务器任务是不同的,它们之间相互调用,完成了一个大的任务。而集群式系统的服务器任务是相同的,它们只是分担了客户端的请求,但是最终需要汇总到主服务器。这导致像数据库、主服务器等可能会过载。

#ifndef与#pragma once

视频1中,最开始讲的代码是log.h。然后吃下了如下的结构:

#ifndef __SYLAR_LOG_H__
#define __SYLAR_LOG_H__
//这里放置了各种include和定义语句
#endif

这种写法,是为了避免重复编译的,因为,这个log.h文件,很可能会被多个文件include,如果用了这种写法,当编译过一次后,第二次遇到include时就会自动跳过这个编译。

它和#pragma once的功能很像,我看了我之前刷题的代码,是将#pragma once放在了代码最前面。

差异:1#ifndef是打开文件后,根据__SYLAR_LOG_H__来确认是否已经编译过。所以它需要打开文件查看后后才能确定,编译时耗时比较长。注:有可能会因为不同头文件的宏名相同后,后编译的那个头文件被跳过编译,导致编译时报错某些变量或类没有声明。2#pragma once针对文件的,所以没有宏名相同这种问题,并且它因为不需要打开文件而使得编译速度更快。注:如果有头文件被拷贝多份,就会出现重复编译的问题。且这种方法在一些老编译器上不支持。

个人认为,还是选择第一种靠谱些,虽然编译慢,但出错的可能性更低。

http://www.lryc.cn/news/70254.html

相关文章:

  • Tensorflow2基础代码实战系列之双层RNN文本分类任务
  • Python爬虫-快手photoId
  • 软件测试人员如何为项目的质量保障兜底?看完你就明白了...
  • 《幸福关系的7段旅程》
  • 使用Python中PDB模块中的命令来调试Python代码的教程
  • Codeforces Round 764 (Div. 3)
  • 四月,收割12家offer,面试也太容易了吧....
  • Xubuntu22.04之自动调节亮度护眼redshift(一百七十四)
  • Spark基础学习笔记----RDD检查点与共享变量
  • ES6(对象,数组,类型化数组)
  • JVM系列-第12章-垃圾回收器
  • 零操作难度,轻松进行应用测试,App专项测试之Monkey测试完全指南!
  • Linux安装Docker(这应该是你看过的最简洁的安装教程)
  • 使用AES算法加密技术集成Java和Vue保护您的数据,代码示例和算法原理
  • vcruntime140_1.dll丢失怎样修复,推荐4个vcruntime140_1.dll丢失的修复方法
  • 快来试试这几个简单好用的手机技巧吧
  • OneDrive同步角标消失 - 解决方案
  • 自学网络安全【黑客】,一般人我劝你还是算了吧
  • Java集合工具:first和last
  • leetcode 905. 按奇偶排序数组
  • 密码学安全性证明(一)Cramer-Shoup密码系统
  • Asp.net Core系列学习(1)
  • IDEA 2022.2 安装以及自定义优化
  • 【华为OD机试真题2023B卷 JAVA】阿里巴巴找黄金宝箱(II)
  • Python对Excel文件多表对多表之间的匹配(两种不同表头)——之json版
  • shiro环境搭建
  • 一文读懂selenium自动化测试(基于Python)
  • 如何高效地在网上找开源项目
  • 2023系统分析师---冲刺资料必备知识点三
  • 集成Bean Validation 1.1(JSR-349)到 SpringMVC