记一个自己项目上线的全过程
以下文章来源方志朋的博客,回复”666“获面试宝典
现在我将我的“第一次”分享给大家
项目名称:最美80周年,共同记录
开发文档:https://www.showdoc.cc/rucday?page_id=15376272
源码地址:https://github.com/sunym1993/dataU-RUCDay.git
项目简介:自己做着玩的一个项目,为某校80周年校庆准备的,页面模仿微信聊天界面,用户可在上面说话。
一、准备阶段
服务器:阿里云服务器ECS(2核4G ¥825/年)
买了一年的阿里云服务器,个人感觉还是很值的,内部装好了空的CentOS 6.9 64位 linux系统。首先第一步就是安装java环境,以便之后我在上面跑的程序能够运行起来。总结起来我需要jdk,mysql,redis。安装linux系统环境每次都要查找各种教程,索性总结成了一篇清单文章给自己看:linux的java环境搭建清单
当然后续,还在阿里云买了域名,域名需要备案才能用的事,留在后面吐槽。
文档管理:showdoc文档,poccessOn流程图
showdoc在线文档清晰明了,很适合个人或者小型团队用来共享开发文档。配合poccessOn流程图软件(我买了专业版 ¥115/年),已经可以很好完成开发文档方面的工作了。当然工具的选择只是个人喜好问题。
代码管理:github
开发工具:idea
应该是最智能的编辑器了,但我还是更佩服用notepad或者txt写代码的人。
开发环境:jdk1.8,mysql,redis,springboot
现在是springboot的时代咯,打成一个jar包直接就能跑web项目,也可以跑微服务,十分便于管理。
二、疯狂打码阶段
开发过程总结起来可以说很简单,1、写好开发文档;2、建好数据库;3、写好代码并打成jar包。描述起来真的特别简单,而且基本都是这样的流程。
1.写开发文档
由于自身比较追求代码的质量,实现所谓的高内聚、低耦合,所以在意识上还是很明白设计阶段的重要性的,虽然后面看来一开始的设计简直是糟糕透顶。
2.建数据库
其实如果开发文档设计好,数据库自然也不用再考虑。可是我写开发文档懒了,只考虑了表的字段,没有涉及到具体类型、索引等信息。这导致了我之后写代码的时候修改了几个表字段的数据类型。虽然造成的改动量不大,但修改底层往往是很心累的。我们都希望封好了一层之后就不在打开这个封条,站在新一层的高度考虑问题,显然这次的实践没有处理好。
3.写代码
写代码的过程真心可以总结为,从条理清晰到不管三七二十一。
初步搭建框架的时候思路还是很清晰的,代码写的也比较干净,因为毕竟之前练习时搭建过很多次。web层、业务层、持久层,再封装一层redis,整个过程一气呵成。
但到后面遇到实际业务时就慌乱了。首先,我遇到了以前没用过的redis数据结构list,我把用户的消息,群内的消息都存到了redis的list里,如何索引这个list里的数据成了困扰我的地方,虽然最后都通过记录其索引值解决,但感觉并不是长久之计。之后,session中存哪些信息又成为了一大乱点,最后发现很多地方都要用到,不得不不断往里面存数据。有时执行某个方法时会忘记同步更新session中的数据。导致了很多bug。
还有数据的同步问题,数据库,redis,session中的数据如何保持同步,我目前只在逻辑上去保证,只能祈祷系统不出问题。消息的实时更新,我用了ajax长回调机制,据说是效果最好也最节约开销的方式。页面啊!页面真是救命了,对于一个后端开发人员,我对页面的美观简直毫无办法,只能找网上的模板,还好找到了一个仿微信页面的前端模板,拯救了我
这部分确实比较乱,没经验,赶着项目上线很多问题都没能很好解决,日后将一一总结。
三、上线前
上线前遇到的一些问题让我一度想要放弃,有些跟代码无关,给大家讲讲
1、阿里云有安全组策略的
之前不知到,数据库、redis什么都配置好了,也允许外网访问,可是就是一直访问不了。一直找配置中的错误,不断重新安装,一度想要放弃。结果后来发现问题很简单,阿里云有自己的安全组策略,你必须配置以允许外放访问这个云的哪些端口才行,不配置默认就是拒绝访问。找到问题根源时我笑哭了。。。
2、大天朝的域名是需要备案的
直到最后我才把项目端口改成80,也用了自己的域名,结果发现无法访问,跳出来一个“友好页面”。后来知道,在中国域名是需要备案的,于是走阿里云备案流程,发现需要25天(北京),还要邮寄幕布让你来拍照什么的,上线时间紧迫,一度要放弃的时候,想到了“某宝”,于是。。。
3、微信需要域名加标准端口才能直接跳转
如果你用微信访问一个 http://185.10.10.195 这样的地址,它会先跳出
如果你用微信访问一个 http://www.datauuu.com:7001 这样的地址,它会先跳出
也就是说,只有域名配web标准80端口,微信才能直接打开自己的浏览器做跳转。这个也是我购买域名以及想到要备案的原因。哎真是经验不足啊,不然上线前不必为这些事操心
四、上线后
没有日志系统,没有监控系统,没有管理系统。只有一个自己做的超简单的管理页面,只能初始化数据库数据,同步数据库和redis,所有查询都是直接用sqlyog看数据库。
现在明白为什么一个项目要如此重视日志系统和监控系统了,真是太有用了。我这个项目好在比较简单,最重要的是我只是玩一玩,出问题那就出了也不用负责人。要是一个正规的系统,我现在的状态只能用听天由命来形容了。
总之在做一个项目之前,以下事情还是比较重要的。
下个项目酝酿中。。。嘿嘿
链接:cnblogs.com/flashsun/p/7651742.html
如果看到这里,说明你喜欢这篇文章,请 转发、点赞。同时 标星(置顶)本公众号可以第一时间接受到博文推送。
推荐阅读: 推荐7个牛哄哄 Spring Cloud 实战项目 基于 SpringBoot + Vue 框架开发的网页版聊天室项目 基于 SpringBoot + Vue 实现的可视化拖拽编辑的大屏项目 Github上10个超好看 可视化面板,后台管理页面有着落了 这可能是史上功能最全的Java权限认证框架! 最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。 获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。 明天见(。・ω・。)ノ♡