项目背景
【学习项目篇】
该项目是作者在学习Linux服务端编程时整理的项目,Web简易服务器是一款用C++实现的基于Linux的轻量级高性能Web服务器
,经过web bench工具的压力测试,可以实现上万的QPS
(Query Per Second,每秒查询率)。
技术栈
- 基于
多进程网络通信
和匿名管道技术
的Web bench
测试工具; - 基于
互斥锁
和条件变量
等多线程同步技术实现的线程池模块
,实现将多个任务同时分配给多个线程; - 基于
Socket编程
和IO复用技术Epoll
实现的Reactor高并发模型
,实现同时监听多个客户端事件; - 基于
最小堆结构
的定时器模块
,实现非活动连接的超时管理; - 基于
正则表达式
和状态机
的HTTP/1.1解析和响应模块,实现处理Web静态资源的请求; - 支持
分散读
和集中写
的缓冲区模块,实现缓存数据的合理管理,提高文件数据拷贝效率; - 基于
RAII机制
实现的MySQL数据库连接池模块
,减少数据库连接建立与关闭的开销; - 基于
单例模式
和阻塞队列
的异步日志系统
,实现以文件形式按日期记录服务器运行信息;
更多详细介绍->Web轻量级高性能服务器
【商业项目篇】
自行车安全驾驶模拟器项目
是一款软硬件结合
的三维程序仿真项目
,是作者本科时期在导师指导下与某城市交通安全馆
签订的项目,整套项目分为硬件
和软件
两部分,作者独立负责
了其中的软件部分开发
,并且承担了后续与硬件
结合的调试
与安装
工作,最终成功通过了甲方
验收。
技术栈
- 基于
Unity3D游戏引擎
的自行车
与场景真实交互模型
的封装,主要实现真实感
和互动感
; - 基于
MOM游戏设计思想
和面向对象思想
的大量服务管理的模块封装
,实现复杂模块之间的解耦设计
;
更多详细介绍->某城市交通安全馆的自行车模拟器项目
【毕设作品篇】
某中小手游的服务端和客户端设计
是作者本科的毕设作品,也是作者本科在公司实习期间所学知识的运用。整套项目分为客户端
和服务端
两部分,作者独立完成
了其中的游戏策划
,程序开发
和美术处理
等,封装的类文件达200个以上,代码量累计超过万行。
技术栈
-
用于
基础服务层、业务逻辑层、界面表现层
的分层解耦设计;服务端不需要
界面表现层
,在基础服务层
前添加了数据服务层
来操作数据库
-
用于
控制对象初始化次序
和支持跨场景访问
的游戏启动器
设计使用基于
单例模式
的全局启动器
来初始各个层的对象初始化和销毁 -
基于
静态加载
和对象池技术
的资源管理器
设计;使用Unity中Resource静态加载方式,为了提升效率借助对象池技术
-
基于
XML文件
的配置管理器
设计;每一个XML文件中存在多条配置数据,每条配置数据对应一个配置数据模型类,一组配置数据存储在哈希表中
-
基于
Socket编程
和异步IO
的网络管理器设计;服务端的监听socket连接后维护一组网络会话对象,每组网络会话的建立连接、断开连接、接收消息和发送消息的接口可以由各个终端继承,C#提供socket的异步IO方式,只在接收到连接和完成连接时进行提醒。
-
用于
跨客户端和服务端工程
的第三方公用库
开发;网络消息类型、错误码类型、业务处理方式等客户端和服务端通用的方法以
第三方公用库的形式共用
更多详细介绍->某中小手游的服务器和客户端开发
【科研项目篇】
某汽车仿真AI后处理工具开发
是一款结合计算机图形学知识
的网格优化的算法设计项目
,是作者研究生时期在导师指导下参与的科研项目开发。
技术栈
-
基于
Socket编程
的进程通信包实现,实现ANSA软件进程
和算法训练进程
的双向通信;基于TCP字节流的分包和并包处理,主要手段是使用自定义的应用层通信协议,使用一个固定长度的数字(4字节)表示消息正文的长度,消息头使用struct打包固定长度的序列数据,消息正文使用Json打包KV形式的数据
-
基于
MDP模型
和DQN算法
的RL训练算法
,实现强化学习技术
在网格检测时的训练测试; -
基于
半边拓扑结构
的AIMesh结构设计
及其搜索生成算法设计
;
更多详细介绍->某汽车仿真AI后处理工具开发
【课程作品篇】
1、汽车等场景的三维造型艺术设计
【作品简介】本作品是作者三维造型课程的期末作品,使用3dsMax建模软件搭建的一款奥迪R8款汽车,该款汽车具有较为复杂的外部结构,具有较大建模难度,可以很好对课程所学知识进行验证。在图片展示上,作者选用的灯光、材质、场景、构图尽可能靠近商业广告形式,以提高实战能力。
【作品简介】本作品为作者三维建模实践课程的期末作品,为一款低模真实感类型的悍马汽车和一个光影搭建的三维真实感场景。在真实的实时系统中,开发者一般希望使用最少的模型面数建造出尽可能真实的模型效果,本次实践课就是基于这种原则开展的。悍马汽车仅仅使用了2000个左右的模型面数就实现了较为逼真的效果,其材质贴图采用业界通用的UV展开技术,仅需一张几百k的图片就能完成车辆的所有贴图工作;三维弄堂场景使用了多重材质叠加,仅仅使用了低模立方体,依靠灯光、材质和阴影等模拟技术来实现真实感效果模拟。
2、基于C++的程序设计
【作品简介】本作品是作者网络通信课程的期末作品,主要使用C++语言,基于MFC框架开发的一套网络对战版五子棋游戏。本作品采用了多个客户机连接的并发式服务器布局,构建了在线游戏大厅搭建,可同时进行多个游戏房间的创建,同一房间内玩家可以进行对弈和网络聊天,五子棋对弈特别增加了禁手、复盘回合计时等功能。
【作品简介】本作品是作者网络通信实践课程的期末作品,主要使用C++语言,基于MFC框架开发的一套可单机或联机的小游戏,可以实现玩家与电脑的格斗,也可以实现与两个玩家的格斗。两个MFC游戏共同使用作者网络编程课上的通信框架。
【作品简介】本作品是三维引擎与应用课程的期末作业,主要是使用C++语言,基于MFC和Ogre引擎来制作的一款简易场景编辑器,主要是为了学习Ogre的基本知识。
3、基于Java的程序设计
【作品简介】该作品是本人Java课程的期末作业,主要内容是一款由java开发的用于将小区内生活服务更加智能化的一款平台,同时开发有用户和管理员两套系统,分别供用户和管理员使用,主要目的是学习java在业务功能开发中的应用。
4、工业素描作品
【作品简介】本作品是作者工业素描课程的期末作品,前期使用铅笔在硫酸纸上徒手绘制出各个结构组件,后期使用PS软件进行组合形成一个完整的自行车。本作品获得了全专业最高分。