发表于: 2017-07-08 11:04:00
1 1257
今天完成的事情:
1、后台管理中的公司列表story中的六个验收点。
其中有:
公司条件的改变(认证\解除、冻结\解冻)。
职位条件的改变(认证\解除、冻结\解冻)。
公司详情页的编辑:(公司信息、产品信息、招聘信息)。
2、昨天的小课堂语言组织的超烂。下次一定要改进了。
所有开始准备下一次的小课堂。打算将cookie 和 session。
测试了一下。访问官网,在控制台把某一条cookie给删了,结果我登录状态就失效了。
明天计划的事情:
1、和一个魏扬约好了让他听一下我口述的方案评审,模拟一下。
遇到的问题:
1、删除公司后所有信息。
2、师弟学员提交了任务5。发现的问题:
①user 表已有自增主键id,但还有一个“uid”、用于记录用户id。
②但他把 “rememberMe”、账号密码验证、验证cookieValue(存有用户id和最后登录时间的加密字符串)......这三步的操作全放在 一个拦截器的同一个方法里了。
所以造成了用户每访问一个带“/u”的路径,就会走进拦截器,判断request是否get到了账号和密码、判断是否是rememberMe、判断 token 。
而 LoginController 的登录方法里却没写任何东西。让他改一下。
收获:
1、帮魏扬看了一个问题。ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到ArrayList中的值。
2、这几天总有回来什么事情都不想做的时候。
当我没有动力的时候,去翻一翻以往师兄的日报。
或者看看网上那些小有成就的人写的博客。定时励志一下打一打鸡血。很很很有效。
3、最近看了师弟学员的代码,发现有个通病,我自己做任务也是这样,就是代码结构有些混乱。
老大的问题
1.怎么查找资料
①去各种官网找官方文档。
这一点在任务7、8、9(分别是:找第三方API资料、找RMI和Tuscany的资料)中我都去做了。搭建 demo 并运行了一下。
由于任务7 相比8、9更为简单。官方文档一看就懂了。
但8、9的文档就难理解。所以又去百度搜了别人的写的博客。
②还有一种是无意识的查找资料吧。就是平日里常常看一些微信、论坛的技术文章。
在大脑里留下印象。这样在遇到问题时能回想一下。
2.怎么定位问题
问题分很多种。
第①种。用容器启动项目时控制的就报错了。
这一般就是 spring 配置文件中有写的不符合规矩 或是写错的地方。
第②种。用容器成功启动了。但访问某一接口报错了。
如果有一段代码报错了。但有另一段与它实现相似功能的代码能却正常运行。
此时可以参考正常运行的代码,仔细对比。
第③种。没有报错。但有bug,没能出现自己想要的结果。
方法一:从控制台中的日志找“线索”。
比如用common-code-demo 自动生成代码后,根据控制台的日志,所有文件都生成了。
但本应该堆满 东西的src 目录刷新一遍居然是空的。
而在日志中有给出了生成文件的路径,根据路径搜到了文件,原来我本地有两个common-code-demo!文件生成到另一个common-code-demo 中去了。
方法二:
打断点调试。通常能够调试到错误。会发现脑中所想的和最终实现的代码的不同。
①比如 当我想用通过一个方法查出标签类的集合。入参为 标签id集合 ,但传入的却是公司id的集合。这当然查出的就是null了。
②由于基础知识不牢固导致的bug。ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到ArrayList中的值。
3.怎么解决问题
想要解决的问题也分几种。
第①种 解决一个bug、错误,总之就是不正常处。可以去打断点调试。
第②中 当前的操作环节没有出现错误。但现有的操作很不方便,急需一个更便捷的办法。
比如“如何在本地调试服务器上的代码”、“改了代码后不用重启jetty就能实现效果”。可以谷歌百度去找,总有人比你先遇到这些问题。
4.怎么重构代码
首先目标是实现和旧代码一样的效果(比如返回同样的json数组数据)。
仔细阅读原有的代码,会发现并不是每一句都需要重构的。
例子:
目标是返回一个职位信息的列表,每一个职位除了自己本身的字段外,还需要与之关联的公司信息、公司标签信息。
旧代码在 for 循环里有两处访问数据库的地方,原因在于:
由于职位类 所属于 公司类,每个职位类都有一个公司ID字段。
标签类 也所属于 公司类。 每个标签类也都有一个公司ID字段。
所以,在普通的情况下,我必然会遍历职位列表,通过职位取到公司ID,再拿公司ID去取得公司类、标签类。
找到替代的办法,我可以在循环外一次取得所有公司集合。
同样,我也能在循环外一次取得所有标签的集合。
而 公司ID 不就是 关联 职位、公司、公司标签 的一个关键字段嘛,所以,可以做一个键值为“公司ID-公司类”的map。
再做一个“公司ID-公司标签集合”的map。
当你在做这些 map 时,操作全部是发生在java内存中,对性能的影响可以忽略。
有了 关键的公司ID做保障,我就可以遍历公司列表,通过公司ID去关联每一条职位所对应的职位与公司标签信息。
最终可以返回与旧代码返回的相同新信息量的数据。
5.怎么选择框架
后台管理类的系统适合用hibernate。想自由一点的可以用mybatis。
6.怎么测试
评论