【C++】服务器编程-笔记
文章平均质量分 76
等级:入门;
【C++ Server】视频:B站《C++游戏服务器编程-从入门到掌握》;
【Linux Server】视频:牛客网《C++高薪求职项目-Linux高并发服务器开发》;书籍:《Linux高性能服务器编程》.
江湖人称菠萝包
这个作者很懒,什么都没留下…
展开
-
【Linux Server】七、Linux服务器程序规范
七、Linux服务器程序规范1.大部分后台进程都在/var/log目录下拥有自己的日志目录。2.绝大多数服务器程序都有配置文件,并存放在/etc目录下。3.Linux服务器进程通常会在启动的时候生成一个PID文件并存入/var/run目录中,以记录该后台进程的PID。4.大部分服务器必须以root身份启动但不能以root身份运行。5.Linux提供一个守护进程来处理系统日志——syslogd,现在使用的已经是它的升级版——rsyslogd。rsyslogd守护进程既能接收用户进程输出的日志,又能原创 2021-12-05 18:01:00 · 210 阅读 · 0 评论 -
【Linux Server】六、项目实战与总结
六、项目实战与总结1.阻塞/非阻塞、同步/异步数据就绪:根据系统IO操作的就绪状态阻塞非阻塞数据读写:根据应用程序和内核的交互方式同步异步陈硕:在处理 IO 的时候,阻塞和非阻塞都是同步 IO,只有使用了特殊的 API 才是异步 IO。(因此,select、poll、epoll都是同步IO)一个典型的网络IO接口调用,分为两个阶段,分别是“数据就绪” 和“数据读写”,数据就绪阶段分为阻塞和非阻塞,表现得结果就是,阻塞当前线程或是直接返回。同步表示A向B请求调用一个网络I原创 2021-12-05 18:00:18 · 317 阅读 · 0 评论 -
【Linux Server】五、I/O 多路复用
五、I/O 多路复用1.I/O 多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能,Linux 下实现 I/O 多路复用的系统调用主要有 select、poll 和 epoll。2.select主旨思想:首先要构造一个关于文件描述符的列表,将要监听的文件描述符添加到该列表中。调用一个系统函数,监听该列表中的文件描述符,直到这些描述符中的一个或者多个进行I/O操作时,该函数才返回。-这个函数是阻塞-函数对文件描述符的检测的操作是由内核完成的在返回时,它会告诉进程有多少描述符要进行原创 2021-12-05 17:59:37 · 184 阅读 · 0 评论 -
【Linux Server】四、Linux网络编程
四、Linux网络编程1.以太网的MTU是1500字节,因此过长的IP数据报可能需要被分片传输。帧才是最终在物理网络上传送的字节序列。2.所有知名应用层协议使用的端口号都可在/etc/services文件中找到。3.Linux下可以使用arp命令来查看和修改ARP高速缓存。sudo arp -a # 查看当前时刻的ARP缓存内容sudo arp -d 192.168.1.109原创 2021-12-05 17:58:52 · 437 阅读 · 0 评论 -
【Linux Server】三、Linux多线程开发
三、Linux多线程开发线程概述与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 UNIX 进程只是多线程程序的一个特例,该进程只包含一个线程)进程是 CPU 分配资源的最小单位,线程是操作系统调度执行的最小单位。线程是轻量级的进程(LWP:Light Weight Process),在 L原创 2021-12-05 17:57:45 · 154 阅读 · 0 评论 -
【Linux Server】二、Linux多进程开发
二、Linux多进程开发1.为了管理进程,内核必须对每个进程所做的事情进行清楚的描述。内核为每个进程分配一个 PCB(Processing Control Block)进程控制块,维护进程相关的信息,Linux 内核的进程控制块是 task_struct 结构体。2.在 /usr/src/linux-headers-xxx/include/linux/sched.h 文件中可以查看 struct task_struct 结构体定义。其内部成员有很多,我们只需要掌握以下部分即可:进程id:系统中每个进原创 2021-12-05 17:55:32 · 864 阅读 · 0 评论 -
【Linux Server】一、Linux系统编程入门
一、Linux系统编程入门1.安装命令 sudo apt install gcc g++查看版本 gcc/g++ -v/–version2.GCC常用参数选项gcc编译选项说明-E预处理指定的源文件,不进行编译-S编译指定的源文件,但是不进行汇编-c编译、汇编指定的源文件,但是不进行链接-o [file1] [file2] / [file2] -o [file1]将文件 file2 编译成可执行文件 file1-I directory指定 inc原创 2021-12-05 17:50:03 · 2571 阅读 · 0 评论 -
【C++ Server】八、实战
八、实战1、关于文件读写和静态变量析构的问题:#include <QCoreApplication>#include <QDebug>#include <QFile>class Log{public: Log(int id, const QString& filename) { m_id = id; f.setFileName(filename); f.open(QIODevice::...原创 2021-08-31 21:28:13 · 240 阅读 · 0 评论 -
【C++ Server】七、多线程基础
七、多线程基础1、C++11支持多线程:高阶接口:async、future低阶接口:thread、mutex#include <iostream>#include <thread>#include <chrono> // 里面定义了一些和时间相关的东西#include <ctime>void func() { cout << "helloword....\n"; std::this_thread::...原创 2021-08-31 21:27:11 · 207 阅读 · 0 评论 -
【C++ Server】六、STL基础
六、STL基础1、一些只需要写一次的函数是非常适合用lambda函数(没有名字的函数)来实现的。lambda可以作为local对象,也可以作为参数传入。lambda相当于是内联函数,效率高。auto local = [](int a, int b){ std::cout << a << b;};local(1, 2);template<typename Func>void test(Func f, int a, int b){ f(a,...原创 2021-08-31 21:26:28 · 152 阅读 · 0 评论 -
【C++ Server】五、C++智能指针基础
五、C++智能指针基础1、void func(){ std::shared_ptr<int> a1(new int(10)); // 不需要delete,内存会自动地释放掉.}2、四种智能指针,都在#include <memory>中:auto_ptr:C++98的,不建议再使用.shared_ptr:通过引用计数实现指针共享.unique_ptr:一个指针只能由一个人来使用,即一份资源某一时刻只能由一个unique_ptr来管理.weaked_ptr...原创 2021-08-31 21:25:24 · 236 阅读 · 0 评论 -
【C++ Server】四、C++语言
四、C++语言1、下面这种情况会由于[]的使用而类A没有默认构造函数而编译不通过。#include <QCoreApplication>#include <QDebug>class A{public: A(int nValue) : m_nValue(nValue) { }private: int m_nValue;};int main(int argc, char *argv[]){ QCoreApplication...原创 2021-08-31 21:24:37 · 124 阅读 · 0 评论 -
【C++ Server】三、vim基础
三、vim基础1、学习vim:vim --version:查看vim的版本默认状态下vim是normal状态,你的键盘输入的是命令,而不是输入的文本。敲入":",vim会认为你要输入特殊命令,例如“:wq”、强制退出":q!"。敲入":q",退出vim,文件有变化会认为退出失败。敲入":q!",强制退出vim,不存盘。敲入":x",存盘并退出(有变化的时候才存盘)。w是存盘、q是退出。":w test.cpp",写入文件并命名为test.cpp。敲入"ZZ",存盘并退出,光标不移动到原创 2021-08-31 21:23:40 · 110 阅读 · 0 评论 -
【C++ Server】二、Linux基础
二、Linux基础1、Linux下的目录一般放什么东西:bin:可执行文件boot:一般放启动的文件dev:设备etc:大部分的配置文件home:主目录,每个用户自己的目录lib:库目录lib64:64位的库的目录mnt:挂载目录opt:可选目录,用户自己安装的程序可以放在这里面,例如编译器clang。root:根目录sbin:系统的执行文件目录usr:自己安装的软件一般放在这里tmp:放临时文件的目录,系统重启的时候里面的东西会删掉的2、输入ls -l命令打印的东西表示什么原创 2021-08-31 21:22:41 · 140 阅读 · 0 评论 -
【C++ Server】一、网络基础
1、IP和TCP首部无扩展的时候是20字节。以太网最短是46字节,最大mtu是1500字节。2、accept函数return的时候就是第三次握手完成的时候。connect函数return的时候就是第二次握手完成的时候。3、服务器开发一般要关闭TCP的Nagle算法,系统默认是开启的。一般不要开启keepalive定时器,应该由上层去实现心跳。...原创 2021-08-31 21:20:43 · 96 阅读 · 0 评论