15 年从事 Java 开发工作,以下为专业技能介绍:
『开发环境』
macOS、Windows
『语言』
后台:Java、Ruby、Koltin、Node.js
前端:html + css + JavaScript
『框架』
SpringBoot、SpringCloud、SSM、AngularJS、Vue.js、MyBatis、Spring-data-jpa
『数据库』
MySQL、MongoDB、Redis
一、Java 高并发秒杀接口
项目描述:
本项目基于 SpringBoot + AngularJS 前后端分离,引入 Freemarker 实现后台管理系统。
并发的瓶颈在数据库。要减少对数据库的访问,最有效的办法就是加缓存,通过各种粒度的缓存减少数据库压力。
本项目目标要实现 2000QPS,基于此,主要做了以下工作:
- 开发方面的工作:
1. 基于业务逻辑的代码编写工作
2. 商品列表页面、详情页面的开发
3. 秒杀功能实现
4. 回仓
- 页面优化:
1. 页面静态化,前后端分离
2. 页面缓存 > URL缓存 > 对象缓存
- 接口优化:
1. Redis 预减库存,减少数据库访问
2. 请求入队,异步下单
- 安全优化:
1. 秒杀接口地址隐藏
2. 验证码、接口限流防刷
- 服务器优化:
1. Tomcat 优化
2. Nginx 优化
3. LVS 四层负载均衡
职责描述:
我的职责主要是根据原型进行后台接口的设计、编码工作。
由于前后端分离,并行开发,我需要先根据原型图设计出接口,并产出一份 API 文档,交由前端进行 Mock 测试,之后我继续依照文档对后台接口进行编码实现。
同时,我也负责了管理后台网站的开发工作。
二、Node.js 商城系统
项目描述:
这个商城并不复杂,只是作为一个回馈活动,进行的一次商品秒杀。
但由于项目要求敏捷开发,快速上线,因此使用的 Node.js 进行开发。
项目使用到了 Node.js + Vue + MongoDB + Webpack 技术,前端广泛使用到了 ES6 语法,后端框架为 Express.
该项目前后端分离,后端通过 Node + Express 框架,提供 Restful 接口,返回 json;
前端通过异步请求插件,调用接口,拿到数据;
而 Mongo 则作为数据的存储。
责任描述:
我的职责主要是编写后台的 js 代码,提供数据支持。
也参与了前端的开发:管理后台、以及商城网站的开发。
三、两款小额贷APP
项目描述:
第一款是卖给马来西亚甲方的,由甲方在当地运营;
第二款是自己公司用的,且由自己公司在国内运营,名字叫《来借呗》,不过由于18年12月24日资方撤资,已停止运营。
项目主要使用到的技术有:Kotlin + SpringBoot + Spring-data-jpa, 且管理后台做了多语言支持。项目中集成风控系统,采取机审 + 人审的审核策略,提高对用户的放款速度。
责任描述:
主要负责后台接口的编码工作。一开始依照原型图分析业务逻辑,编写接口文档,以及后台的代码实现,在之后就是开发管理后台的页面。由于这个时候公司只有一个前端,且忙于其他项目,因此整个管理后台也几乎是由我一人完成。
项目初期只有我一人开发,后来要上国内版的时候才有另外两个 Java 同事也参与进来,由于项目使用的是 Kotlin 语言,也对他们做了 Kotlin 的培训工作。
同时与项目组成员沟通,把控项目进度,以及后续的服务器部署等。
四、《小微趣钱》贷超平台
项目描述:
项目主要实现了贷款平台产品入驻《小微趣钱》贷超平台,通过多维度的管理手段,如:产品管理、用户管理、运营管理、渠道管理、渠道推广、权限管理等,对产品进行推广,极大地增加了产品的曝光度。结合渠道的推广,以此获利的一种方式。
项目中涉及到的技术:
- 项目基于 Spring Boot 框架、MVC 的设计思想进行开发;
- 后台语言使用的是 Kotlin, 相比 Java, 代码更加简洁、优雅,同时还有更多的扩展/高阶函数;
- 项目前后端分离,管理后台使用的是 vue 2.x + Webpack,前后端使用 json 作为数据交换格式,前端进行异步请求;
- 由于前后端分离,使用了 nginx 作为静态服务器,同时做了反向代理解决跨域
- 在数据存储方面,使用了 MySQL 和 Redis;
- 持久层框架使用的是 spring-data-jpa,极大地减轻了 sql 编写工作,大幅度提升开发效率,且易于扩展。
责任描述:
需求分析、文档撰写、后台编码实现、项目组成员沟通、产品发布与服务器部署等。
另外,由于 1.0 版本中就要加入『权限认证模块』,使得我需要立即去考虑如何做这一块的内容。虽然市面上已有 Shiro 和 Spring Security 这两个热门的安全框架,但我还是打算自己写一套权限认证代码。这是因为项目中的认证功能已经是比较成熟的,有着自己的逻辑,而引入框架,就必须遵守他的规定,使用起来并不灵活。而且我也想在其之上多增加一些定制的功