—-
精通 JavaScript 、 Node.JS 、 React 、 Redux
大学期间曾获得工信部国信蓝点杯 C 语言大赛山东第一,全国二等奖。曾做过最有挑战性的项目是《钢管切割的最省料计算》(整数规划、单纯形、分支定界)
—-
云平台是连接所有智能家居设备的通信主干。设备接入云平台后方可远程控制,升级维护备份。前端作为云平台的用户界面,与后端交互使用 REST 接口,并且部分 REST 接口对外开放供手机、设备使用。
前后端分离,前端为 Node 集群,后端为 SpringMVC
浏览器使用 Angular 构建单页面应用、基本布局为 Bootstrap GridSystem , Node 端使用 Express 构建路由以及 REST 接口、 MongoDB 集群作为 Session 存储。
Promise 模型解决 Callback Hell 。
使用 Node.js 简化了前端开发, angularjs 单页面应用配合 css3 转场过度动画效果酷炫
项目上线后由 PM2 管理,一期连接数量并不大,所以暂时用单机多核集群。
Npm + Bower 管理依赖, Grunt 自动化测试与 jshint 代码审查。
测试框架,服务端选用 Mocha + should 断言库, supertest ( superagent )模拟用户操作,浏览器端使用 jasmine 测试保证 ui 逻辑。
因为之前没有前后分离系统的经验,这个项目算是走了一部险棋,但是结果很成功。同时我也积累了传统项目转型到前后分离项目的经验。
我在项目中主要负责:
借由 MQTT 协议来打通设备之间的互联互通,前端用于管理已连接设备以及身份认证等资源。前端服务器为 Nodejs ,后端原定使用 PlayFramework 但因为新人较多,又回到了 Spring MVC 。开发过程中还主导了 Express -> Koa 和 Angular -> React 的技术升级,使用 Redux 接管数据流, Ramda.js 解决代码冗余和降低复杂度。 npm 替代 bower 。
在一期基础上,我还额外负责了:
智能电视遥控,基于 DLNA 协议和 airplay 协议的局域网音视频分享播放,调用 Android 4.4 新增的红外接口实现红外遥控器功能,移屏传屏与游戏模式。
负责编码,算法设计,红外电信号调制解调,界面性能优化。播放器性能优化
自学编写了调制解调算法,将遥控器指令码调制为高低电平的红外信号(东芝码, nec 码,全波形码)
自学播放协议,将播放器绘图性能由以前的 8 fps 提高到 58 fps ,因底层播放器是另一家外包公司开发,并没有给我们源代码。所以使用了三线程缓冲绘制,将视频缩放旋转放置于单独线程中对位图进行矩阵运算,也达到了每秒 20 帧的性能。并且降低了播放延迟,从以前的 5 -> 30 秒延迟降低到稳定 300 毫秒左右
自项目开始两年来以来一直使用 .net 的 web browser 控件,低性能低扩展性运行
使用原始的 getElementById 、 getElementByTagName 、取索引等方式
代码冗余多,可维护性差。
我提出重构,使用更简洁的 css 选择器优化代码的可读性和降低冗余,混用 xpath 表达式与正则表达式来弥补 css 选择器的缺陷。
负责:
项目架构设计,技术调查与技术选择
性能优化,编码
我提出重构全系统
重构后数据抓取由线程池统一管理,理论无限但实际为防止网站阻挡 DDOS 攻击设定为并发 5 线程抓取。
特别是使用 CSS 选择器后,以前 20 - 50 行代码才能完成的工作,优化后仅需要 5 - 20 字符的字符串。
但因缺乏架构设计经验,后来的继承、接口管理混乱给维护造成了一定麻烦。
—-
翻译后添加部分个人私货
)翻译自 LinkedIn 技术分享
)以下均为我熟练使用的技能
—-
感谢您花时间阅读我的简历,期待能有机会和您共事。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.