2018-07-30 移动端扩展功能开发总结

最近在学习通上扩展了一个小功能,面试技巧自我测试,也就是简单的让用户选择,然后给出测评结果的小功能,以下是一些总结:
1.明白为什么Android,Ios开发难找工作,因为很多公司都是用Android,Ios做个外壳,然后使用统一的js协议来做功能,这样的好处很明显,就是前端做一套H5就可以在网页,移动端等任意平台使用,缺点是js协议功能有限,且无法在Android和AppStore上线,但是可以通过官网扫码下载,如果自己推广不通过这些平台,完全没必要有专门的平台开发工程师。
2.js调用移动端终究还是移动端的核,所以页面跳转和H5很不一样,应用本身是一个大的堆栈,如果每次页面跳转都是新增,终究会造成内存溢出,所以在开发时要注重一个思路,所有页面的跳转最终在返回首页时,内存中只有一个页面。本次项目中的方法时,跳转页面时关闭当前页面,并通知上一个页面重新加载数据,上一个页面根据参数不同,返回不同的信息;

代码方面的提升

3.ajax提交json数据
前端

var answers = new Array();
answers.push(object)
var answerArrJson = JSON.stringify(answers);
var params = {
       "answerArrJson": answerArrJson
}

后台springmvc直接获取参数answerArrJson
4.如果一个问题,前端后端都能解决,那么一定交给后台去解决
原因:因为如果前端解决,别人完全可以通过一个简单的URL修改自己的数据,这不是很尴尬吗。。
5.一个对象中有些数据不希望反回给别人,比如一个答案的正确与否,如何最简单的解决这个问题,通过fastjson自带的过滤器即可解决
在实体不需要的字段上添加如下注解,就可以在将对象序列化为json字符串时不添加被注解的字段

 @JSONField(serialize = false)

6.mybits关联查询的一个优化
之前的处理方式:1使用关联查询,2在resultMap中添加collection并且写了关联对象的所有参数
优化解决方法:1.在子对象中添加根据父对象Id查询List的方法
2.在父对象中添加如下


   ......此处省略对象字段
/*id为参数表示将父id作为参数传入
 *oftype子对象路径
 *select 方法所在路径
 */
    
  

这样做关联查询优于之前的方法
7.静态查询添加缓存
service 添加@Cacheable(key = ,value = )
缓存关系为key->value->content
@SpringBootApplication启动注释上添加@EnableCaching
允许使用缓存
8.一个bug
不要for循环查数据库
有类似的需要可以转换为select * form table t where t.id in()
如果for连接数据库,并发量一大,连接池不够用,就会阻塞。

你可能感兴趣的:(2018-07-30 移动端扩展功能开发总结)