使用C++17标准
利用双缓冲技术实现多线程异步日志系统,解决磁盘IO慢速问题。 封装 Linux 下timerfd,用小根堆实现定时器队列。 以字节流形式传输数据,并实现应用层缓冲。 使用Epoll(ET)+非阻 塞I0实现Reactor模式高性能服务器框架。 实现线程池充分利用多核CPU, 并遵循one loop per thread, Round-Robin算法分配连接任务 采用任务队列解决跨线程调用问题,通过eventfd实现线程间异步唤醒。 在服务端实现内存池, 并在内存池之上建立客户端对象池,减少操作系统内存碎片问题。 tcmalloc线程池
自定义协议进行TCP粘包处理 采用应用层心跳包检测客户端是否断线 支持连接优雅关闭。
实现线程安全单例模式 (防止双重加锁)用于读取配置文件 服务器以守护进程方式运行。 通过ucontext函数族保存 与恢复的数上下文封装轻量级协程库,协程调度器可对协程就绪,运行,等待进行调度 建立数据库连接池避免频繁创建销毁数据库连接。 以哈夫曼编码实现文件简易文件压缩工具, 提高网络带宽利用率, 以A算法提供Al贪吃蛇小游戏 通过docker容器进行分布式部署, 提高信息采集效率。 通过xxx算法实现文件压缩,支持断点续传 shutdown() 优雅关闭连接 自适应心跳检测,防止断线 封装Linux下timerfd, 用小根堆实现定时器队列。以字节流形式传输数据,并实现应用层缓冲。 ➢使用Epoll(ET)+非阻 塞I0实现Reactor模式高性能服务器框架。 实现线程池充分利用多核CPU, 并遵循one loop per thread, Round- Robin算法分配连接任务。 采用任务队列解决跨线程调用问题, 通过eventfd实现线程间异步唤醒。 ➢在服务端实现内存池, 并在内存池之上建立客户端对象池,减少操作系统内存碎片问题。 ➢自定义消息协议进行TCP粘包处理, 采用应用层心跳包检测客户端是否断线,支持连接优雅关闭。 实现线程安全单例模式 (防止双重加锁)用于读取配置文件,服务器以守护进程方式运行。 通过ucontext函数族保存与恢复函数 上下文封装轻量级协程库,协程调度器可对协程就绪,运行,等待进行调度,配合epoll实现异步高性能网络I0, 后端数据存储在mysq|数据库中, 建立数据库连接池避免频繁创建销毁数据库连接。 以哈夫曼编码实现文件简易文件压缩工具, 提高网络带宽利用率。 客户端用Qt图形库编写, 实现登录、注册、文件传输等功能。以A算法提供AI贪吃蛇小游戏。
- 使用Epoll边沿触发的IO多路复用技术,非阻塞IO,使用Reactor模式
- 使用多线程充分利用多核CPU,并使用线程池避免线程频繁创建销毁的开销
- 使用基于小根堆的定时器关闭超时请求
- 主线程只负责accept请求,并以Round Robin的方式分发给其它IO线程(兼计算线程),锁的争用只会出现在主线程和某一特定线程中
- 使用eventfd实现了线程的异步唤醒
- 使用双缓冲区技术实现了简单的异步日志系统
- 为减少内存泄漏的可能,使用智能指针等RAII机制
- 使用状态机解析了HTTP请求,支持管线化
- 支持优雅关闭连接
◎ 基于epoll(ET)和Reactor模式的C++网络库(个人项目 2020.02-2020.03) n 使用tcmalloc进行内存管理,经测试,相比glibc提升性能50%以上(背诵两种内存管理方案,手撸内存池,并从 n 实现线程池,提升CPU利用率(手撸线程池 n 实现MySQL与Redis连接池,简化编程并提升性能(手写连接池,redis为什么这么快 n epoll(ET)实现Reactor模式,封装TCP、HTTP、WebSocket等协议(webs背诵 n 使用基于Redis或内嵌式的页面缓存提高HTTP服务效率(手撸缓存 n 实现多线程的异步日志系统,降低日志输出对性能的影响(介绍异步双缓冲 ◎ 即时通讯系统(合作项目 负责即时通讯模块 2019.04-2019.05) n 采用BS架构,实现注册、登录、加好友、即时通讯等常用功能 n 基于WebSocket协议,在前后端封装即时通讯模块,实现文本,音视频的即时通讯 n 依据RFC6455编写C++ WebSocket库 n 原始技术栈:Vue+WebSocket+MySQL+Git+PHP+Python+C++ n 2020.03后台代码全部迁移至C++ ◎ 深圳市大数据研究院 Dagoo 项目(实习项目 2019.01-2019.05) n 接手全球贸易数据可视化模块的进一步开发,并实现飞行线图,矩形树图等常用可视化图形的绘制 n 技术栈:WebGL+Echarts+Flask
电话记录: C++线程池 redis单线程为什么这么快 C++内存管理