对于某个稳定版本上线后,如果在此基础上开发新功能,一定要新建分支,在新分支上提交代码,最后在新版发布时合并分支。修改运营环境bug切换到主分支进行修改
5.4 Http请求 5.4.1 请求方法post、get、put、head、delete、copy、move、connect、link、patch,最常用的是前4、5个。
5.4.2 请求头,状态码常用的请求头有Accept(下载文件会特殊使用)、Accept-Charset(设置utf-8字符集)、Content-Type(json等配置)等
常用的响应头有Content-Type、Content-Type、Content-Length等,偏前端,不再详述。
6. 系统架构接触的不是特别多,目前用到的只是服务器主从备份。Nginx反向代理进行配置。
多个项目nginx配置
Spring Mvc 用json数据进行交互,配置json转换的servlet。
封装返回值
自定义RunEnvironmentException(状态码,原因),覆盖原有Exception,切面ExceptionHandler抓取Exception并封装到返回值中(前后端松耦合)
令人头疼的用户重复(连续快速点击)提交问题,前端限制治标不治本;后端用sessonid在切面上实现,又需要前端存储,对所有请求数据加sessionId。最后用jedis中存储,用接口名+用户名当做key,根据不同的接口对不同的key可以单独设置时间,不仅保证了重复提交问题,也避免了恶意请求问题,同时还能自定义请求间隔。(期初担心redis缓存读写时间延误导致限制失效,后来发现多虑了,对一般的小系统来说,经性能测试,发现即使请求频率再提高100被也不会导致限制失效)
testNg单元测试、性能测试,覆盖测试。
切面管理日期、权限。缓存等。
7. Nosql1.Redis的java库Jedis。
Jedispool配置。
项目中用到的有任务队列、缓存。
2. neo4j图数据库
处理社交、推荐
8. 服务端linux操作系统熟悉以centos为例:
常用简单命令:ssh、vim、scp、ps、gerp、sed、awk、cat、tail,df、top,shell、chmod、sh、tar、find、wc、ln、|
目录结构明细:/etc/、~/、/usr/、/dev/、/home/、/etc/init.d/
服务端:jdk、tomcat、nginx、mysql、jedis、neo4j启动与配置(特别说明的是该死的防火墙,nginx启动后一直访问不了,查找一下午查不到原因,最后发现是防火墙问题)
监控服务器状态(cpu,磁盘,内存),定位pid,日志查看
nginx负载均衡、反向代理、配置
自动化部署脚本
简单shell脚本书写,避免大量人力劳动。
监控系统,代码抛fatal异常自动发邮件,系统指标持续偏高自动发邮件。
9. 数据库相关 10. 第三方接口对接 10.1 支付接口
微信支付坑比较多,用将近两周时间才把微信支付所有完成。需要在微信后台配置的地方太多。
而支付宝支付模块只用了2天时间就搞定了。
10.2 推送接口为用户定义tag、定义alias,注意当数据更新时需要同步更新tag、更新alias。如果没采用异步实现(用户体验就是好卡啊)
10.3 云存储大量文件上传云端(七牛云),注意创建bucket
10.4 短信验证很简单的第三方接口,引入依赖,直接调用即可。需要在第三方后台设置模板等,注意限定用户访问次数。
10.5 邮件很简单小功能,工具类。
时间有限,目前先写这么多技术栈。对于代码书写和、算法技巧问题,会抽时间写在(2)中。