5、服务器架构分析

控制类
->网络类
->数据库
->线程池

数据库

注意事项

1.安装mysql数据库服务器
2.安装开发库:libmysqlclient
3.编译需要添加 -lmysqlclient

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev ->develop开发库

4.添加对中文的支持:

show variables like '%char%' (默认是latinl)检查字符集
sudo chmod a+w mysqld.cnf 修改为可写
sudo chmod 644 mysqld.cnf 恢复权限为644

原先的:
![[Pasted image 20240328090308.png]]
后来的

![[Pasted image 20240328085603.png]]
登录mysql的命令:

mysql -u root -p;
-u:登录的用户名 -p登录密码。

![[Pasted image 20240329085651.png]]

Vim

安装:sudo apt install vim
vim test.log ;创建文件
i:进入编辑模式
Esc退出编辑模式
保存并且退出:  :+wq 

![[Pasted image 20240328100918.png]]

线程池

先进先出:先来先服务。
![[Pasted image 20240328101243.png]]
![[Pasted image 20240328101341.png]]

循环队列怎么写?

![[Pasted image 20240328101426.png]]
![[Pasted image 20240328101452.png]]

线程池类:

![[Pasted image 20240328101736.png]]

生产者和消费者模型

生产者负责生产数据
消费者负责消费数据

生产者:

![[Pasted image 20240328105017.png]]

消费者:

![[Pasted image 20240328105025.png]]

队列:

负责线程通信:用于控制
![[Pasted image 20240328104951.png]]

主函数

![[Pasted image 20240328105231.png]]

网络类—epoll模型

多路IO复用

为什么使用epoll?

同步阻塞多线程,具有编程简单,问题少等优点,但不足是无法处理过多客户端
使用多路复用lO模型中较优秀的epoll ,可以解决上面的问题,并且处理网络请求效率高,被多数优秀服务器作为首选模型
服务服务器需要管理多个客户端连接,而Recv 只能监视单个socket,epoll 的诞生就是高效地监视多个socket。

为什么使用阻塞socket?

这里阻塞socket, 指accept客户端连接后,返回的套接字,这种阻塞套接字好处在于代码简单,出错少,更适合入口学习.但也有不可避免的IO效率问题,

![[Pasted image 20240328114505.png]]

ET和LT

![[Pasted image 20240328115924.png]]

同步和异步IO的差别

![[Pasted image 20240329090201.png]]
![[Pasted image 20240329090252.png]]

总结:

非阻塞的send和recv一次性无法接受完数据包,需要加锁。需要循环接受。
![[Pasted image 20240329090944.png]]

阻塞和非阻塞

![[Pasted image 20240329091234.png]]

反应堆reactor模型

![[Pasted image 20240329091530.png]]
用来干嘛?
epoll管理IO的编码流程

网络流程图

![[Pasted image 20240329091724.png]]

线程安全与不安全

即:数据损坏、重复计算
加锁机制的使用。线程安全是指在多线程访问共享资源时,通过加锁机制确保每次执行的结果与单线程执行的结果一致,防止数据不一致或数据污染。例如,当一个线程正在访问某个数据时,其他线程不能访问该数据,直到该线程完成访问并释放锁。

代码分析:

block_epoll_net.h
MyMap:对map加锁,实现线程安全
Block_Epoll_Net:

耦合

耦合是指两个或多个系统或模块之间的相互依赖和影响程度。

回调函数

即函数作为参数。降低耦合
![[Pasted image 20240329101341.png]]

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ou_fan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值