工作经历
2024-01-01 -至今中软c++开发
从事c++后端与客户端开发工作。使用c++,sql,stl,QT等技术栈。有相关工作经验
教育经历
2020-06-09 - 2024-06-01华南理工大学计算机科学与技术本科
技能
Linux C++实现的网盘项目.Qt网盘客户端。服务器使用Epoll高并发模型,实现多线程、连接池、公平调度算法。Qt实现操作界面 一、基本架构(服务端Linux,客户端Qt) (一)、服务端结构 1、Linux系统 2、Epoll IO复用模型:高效的Epoll边缘触发IO复用 3、线程池:采取主线程(处理连接,派发任务,与均衡器通信。不进行其它IO操作)+子线程(执行客户端任务,进行IO操作)模式,实现了线程池 4、数据库连接池(单例模式):采用MySql的Connector/C++ 数据库框架,并配合RAII机制,实现一个自动申请和释放的数据库连接池 5、OpenSSL(安全套接字传输):使用Openssl框架实现,客户端与服务端之间安全加密传输,保护传输安全 6、Openssl文件校验:才是Openssl,对文件进行SHA256计算,并利用计算结果作为文件名,实现妙传,和文件传输校验。 7、基于小根堆的定时器:采用小根堆作为底层数据结构,实现了一个定时器,将长期不活跃的连接释放,减少服务器负载 8、分级日记系统(单例模式):使用多线程对日记进行写入。日记级别分为:Debug、info、warn、error。可根据情况不同写入不同日记,并自动记录时间。 9、任务处理(工厂模式):长(上传、下载等)短(登陆注册等)任务分离。使用多态实现客户端连接。一个抽象任务类下面继承实现多个具体任务类,根据客户端任务请求,生成不同对象,进行处理。长任务采取状态机处理:Check->Doing->Fin->Close.四种状态间转换处理。 10、负载均衡:实现一个简单负载均衡服务器。用来根据各服务器的当前负载量,派发客户端连接。该均衡器较为简单,仅供参考,不建议使用。现在云服务提供商基本都提供安全的均衡策略。 11、公平调度(轮询算法):并不会一个线程把全部任务处理完成,而是只处理该任务的一部分,然后在处理下个任务,使用轮询机制,避免大任务长期占用线程,导致其它任务无法得到处理,例如一个客户上传100G的文件,客户端的网速又不好,如果一个线程完全处理,会导致其它任务长期难以响应。 Image text (二)客户端结构 1、Window系统(使用Qt跨平台框架,也可简单部署到其它系统) 2、Openssl安全加密传输 3、Asio库作为通信基础 4、短任务线程池。长任务多线程传输,避免UI界面冻结。 5、实现文件系统视图,可以进行层级化查看文件 6、界面与逻辑分离