实现网
佳也Jaye

昵称登录后显示

1000/8小时
2年工作经验

金山办公
C++开发工程师

C++
MFC
QT
网络编程
多线程

0

被预约次数

0

被收藏次数

0

被评价次数

擅长技能

擅长的技术:
C/C++、SOCKET、IOCP完成端口、MFC、QT、HTTP、多线程控制、并发控制
专业功底:
1. 19年编程经验、14年工作经验,具备扎实的编程功底。
2. 熟练掌握数据结构、算法和编程思想。
3. 具备良好的编码风格、严谨的编程逻辑。代码稳定质量高,很少出BUG。
4. 熟悉常用的设计模式,有很强的软件设计与开发能力。
专业技能:
1. 熟练掌握C/C++,熟悉Visual Studio开发环境,能熟练运用于各种开发。
2. 熟悉MFC和QT,能熟练使用MFC或QT进行Windos平台软件开发。
3. 熟悉SOCKET网络编程,能熟练操作TCP/IP与HTTP协议。
4. 精通IOCP异步网络模型,深刻理解并能准确处理IOCP中的各种复杂逻辑,能熟练使用IOCP开发出稳定、高性能的网络底层模块。
5. 精通多线程,深刻理解各种多线程并发模型,能熟练运用互斥锁、条件变量、读写锁、事件、信号量解决多线程并发过程中的死锁、访问冲突、线程安全、线程同步等问题。
6. 掌握数据库相关知识与SQL,有数据库分析和设计能力。
7. 熟悉Linux系统,能在Linux环境下做服务端开发。
8. 有一定的JavaScript、HTML、Lua、Python、x86汇编语言基础。
欢迎交流:jaye8090

项目经验

反诈警用软件:
1. 参与反诈警用软件的设计与开发,主要负责底层通信模块,涉及的技术有:C++、SOCKET、QT。
2. 通信接口设计:融合TCP面向连接和UDP数据报的特征,为上层设计统一并跨平台的通信接口。
3. UDP面向连接:根据对端的IP和端口,使用自定义数据包格式,把UDP改造成面向连接的通信协议,支持发起连接和监听连接。
4. UDP丢包重传:为每个UDP数据包编号,发出去的包在一定时间内收不到确认包则做丢包重传处理,收到包时如果编号混乱则缓存起来整理顺序。
5. 数据包拆装:把上层提交的数据根据情况分包发送,把收到的数据进行组包后再返回给上层,保证数据包收发的完整性。
6. 数据包加密。把上层提交的数据加密后再发送,把收到的数据解密后再返回给上层,保证原始数据在加密的情况下传输。
7. 协议编码伪装:使用UDP传输数据时,把数据编码伪装成DNS、NTP等协议。使用TCP传输数据时,把数据编码伪装成HTTP、FTP等协议。
8. 级联SOCKS5代理:开发能穿透内网级联的SOCKS5代理功能,使攻击者在外网控制端就能通过代理直接使用内网跳板,渗透内网中的其他机器。
9. 撰写项目文档,功能更新维护和BUG处理,编写Windows和Linux下的自动构建脚本,编写跨平台的公用组件比如:智能指针、多线程基础类等。

音乐推荐系统:
1. 独立开发音乐推荐系统,前端使用Bootstrap和Vant,后端API使用Node.js,数据库使用MySQL,缓存使用Redis。
2. 用户信息、歌曲、歌单存入数据库,登录token、推荐歌曲列表存入Redis。
3. 把歌单表进行自身inner join来查询重合度高的用户,然后根据双方的歌单来计算匹配分,再推荐匹配分高的用户歌单里的歌。
4. 使用MySQL explain工具对数据库进行分析和优化。

WPS办公软件:
1. 负责WPS金山文档(表格)的服务端和前端内核开发,服务端使用Linux C++,前端内核使用JavaScript。
2. 常量识别:使用Bison语法分析器,识别出用户在单元格中输入的字符串格式,提取数据切片并压入逆波兰表达式,最后计算出最终的原始数值。
3. 数字格式:服务端发送原始数值+数字格式结构给前端,我负责使用JavaScript在前端生成最终在单元格中显示的字符串。
4. 查找全部:用set容器保存查找结果,把“行号<<14|列号”作为key插入set中,可以快速地判断行列在set中是否存在,则说明此单元格被找到。
5. 业务命令:开发排序、单元格评论、工作表更名删除、表格数据合并、复制剪切插入、保护工作表、可编辑区域权限控制、输入推荐、隔行标记、扩展单元格合并、单元格URL图片等功能。
6. 性能优化:编写零散单元格区块命令的合并算法,在大区域操作时合并成大区块命令进行传输,以节约网络带宽和提升处理速度。
7. BUG处理:解决各种开发中的BUG、项目遗留BUG,并排查一些疑难BUG。

云游戏客户端:
1. 负责云游戏Windows客户端开发,使用的技术主要为C++和QT,通过修改QT控件内部资源、状态机、QSS等手段美化界面。
2. 功能迭代:开发消息通道、消息模拟器、串流质量监控上报等功能。
3. 守护进程:保证云游戏客户端的持续运行,在客户端崩溃或卡死的情况下能自动重新拉起。跟客户端建立IPC通道,通过心跳检测卡死并抓取dump。
4. 消息桥接器:和用户的游戏进行自定义消息交互,并把消息转发到我们自己的系统中,最后转送到客户端做相应处理。
5. 网络基础模块:使用C++ Boost库封装WebSocket模块、HTTP访问和HTTP文件上传模块。
6. 问题排查和BUG处理:排查云游戏画面卡顿、画面撕裂、鼠标不跟手等问题,分析各种dump文件,修复各种BUG。

SOCKS5游戏加速平台:
1. 开发了一个使用SOCKS5代理协议的游戏加速平台,解决玩家在玩海外游戏或者跨网跨区域登录游戏时存在很大延时的问题。
2. 采用分布式的设计和部署,主服务器会根据代理服务器的忙碌状态进行调度,多台不同地区的代理服务器分发处理代理请求和数据通信。
3. 基于IOCP完成端口编写了一个高性能的异步TCP模块,用于支持代理服务器成千上万的并发连接。
4. 利用TCP的滑动窗口机制和IOCP的通知,解决代理服务器上下行网速不对称的问题。
5. 编写了一个动态环形缓冲区组包模块,来处理TCP粘包问题,并支持动态扩容。
6. 把所有连接操作用回调函数进行异步处理,使用严谨的多线程同步技术,使少量的IOCP工作线程可以稳定管理大量连接。

小说采集器:
1. 使用libcurl库封装CHTTPClient类来访问网页,爬取各个小说站的资源。
2. 使用一个基类+N个规则类的代码设计,采集逻辑在基类中实现并使用虚函数预留采集规则,规则类通过正则表达式实现具体的采集规则来提取小说内容。

电商图床服务器:
1. 在开源的ZIMG项目上二次开发,开发运行环境为Linux。
2. 改成支持包括语音、视频、压缩包等普通文件的上传,并增加文件断点续传的功能。
3. 修改图片处理逻辑,给图片添加水印,防盗链等业务。

电商IM服务器:
1. 在蘑菇街的开源IM项目TeamTalk上二次开发,开发运行环境为Linux。
2. 把IM的数据库并入电商系统中,把语音、图片、文件改接到图床服务器,增加联系客服、联系顾客、外链过滤等电商业务。
3. 改进单点结构:通过DNS多IP解析,解决前置节点和后置同步节点都只有一个的问题,实现核心节点的负载均衡。

工业控制软件:
1. 开发工业设备的控制软件、撰写文档、配合联调。
2. 主要涉及MFC、多线程、串口通信等技术,使用Xtreme Toolkit进行界面设计,使用SVN进行代码和版本管理。
3. 开发多设备整合控制系统:把每个设备单独的控制软件做成DLL,通过一个软件来整合调用。

实习项目:
1. 使用MFC开发中文脚本编译器,主要负责界面和控件操作:对齐、距离均分、标签页控件、颜色样式调节等功能。
2. 开发论坛自动发帖机器人,通过SOCKET封装HTTP模块,来模拟论坛抓包的HTTP操作,使用第三方提供的DLL来识别验证码。
3. 开发公司游戏平台的压力测试工具,通过抓取客户端的UDP数据包,使用EventSelect异步通信模型模拟客户端使用中的各个UDP数据包进行压测。

0条评论 雇主评价

暂无评论~

可兼职时间

自由职业者,时间充裕

可兼职地点

远程

被预约

0

被收藏

0

被评价

0

立即预约

可兼职时间

自由职业者,时间充裕

可兼职地点

远程