几个问题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.ibatis中sql的resultClass为int,在sql语句中select了多个属性进行返回,那么到底注入的是哪个属性呢

2.Collections.emptyList() 方法返回空列表是只读的。

3.懒惰的写代码~

4.近段时间快速开发了转化跟踪的投放报表service,记录下遇到的问题和心得。

    1) 在ibatis读取mysql 视图的时候,偷懒使用resultClass作为返回结果,由于resultClass相对于resultMap是通过字符串getter setter进数据的,另外视图在生成的时候对ambiguous的字段没有额外as,如图所示

在返回结果的时候出现了异常,报出了column not found的exception.

    2) 研究了下LinkedHashMap数据结果,原来是使用了额外的一个链表来存储数据,保证了插入的顺序。在put的时候override了addEntry的方法

    3) mysql查询的性能优化,在查数据的时候有需要查询诸如(a,b,c) in ( (1,2,3) , (4,5,6), (7,8,9))的情况,首先使用的是(a=1 and b=2 and c=3 ) or....的方法,结果需要子查询来完成实现。后来改进了用in的方法,就只用查询一次了。期间找了一些or与in性能方面的资料,有的说mysql在使用in查询的时候会对in中列表进行排序,然后二分查找,而or只是遍历。后来看了mysql优化器的工作原理,又说in和or没区别。此处mark一下,到底是如何不太了解。但去掉了子查询在性能上面肯定是有优化的。

    4) mysql的配置中有记录慢查询的输出日志路径,在对该日志进行查看的时候可以使用mysqldumpslow命令,好使

5.最近做下载,遇到中文名乱码的问题,mark一下,new String(sb.toString().getBytes("GBK"),"ISO8859_1");这样来解决,主要是将中文名按照GBK的编码方式来获得字节,再转成ISO的方式来交给浏览器进行处理,浏览器通过这种编码方式进行解析HTTP头,来得到文件名。当然这里还有空格等潜在问题。

6.最近写了个日期过滤的方法,主要是想传进来的日期进行判断,如果小于一个常量日期,那就替换为那个常量日期。我是这么写的

几个问题_第1张图片

傻了吧!

7.最近一个优化版本,想要使用浏览器的LocalStorage功能,所以把GWT从2.1升级到2.5.结果升级过程遇到各种各样问题,解决过程还是学习到了不少知识。这里小计一下:

    a) 升级完,本地运行没有问题,该是编译打包发布到预发布环境上了。这时候懂了AN.gwt.xml和ANBuild.gwt.xml的适用情况了,AN就是在本地运行的,ANBuild供ant调用,并调用gwt的交叉编译工具,将java代码编译成js代码。gwt编译时,会根据浏览器内核编译不同版本的js代码,一共是6个,编译的时候可以配置多个线程同时进行编译。build过程把要部署到cdn上面的js代码一并打包。最终产生一个war包,一个cdn的zip包

    b) 部署的时候发现客户端js始终不发rpc请求,并且在配置gwt编译js代码是否混淆的时候结果迥异,在配置pretty参数时一切都好,而不配即采用默认的混淆模式时便发生错误。这经过艰苦卓绝的查bug之后发现原来gwt混淆过后的代码新建了一个an()的function,该方法会覆盖原有的代码,导致调用失败。那么就是该解决gwt编译出的functionName问题了。

    c) 起初发现配置AN.gwt.xml的时候可以rename to新模块名字,但是经过改名字的操作以后后台server出现了无法加载序列化策略的异常,如图:

    原因就是相应的目录由an改为anreport之后这里的目录没有更新,而该路径是由客户端也就是cdn的代码把js的路径作为参数传到war服务器中的。

    d) 解决上面这个问题的一个方案是更改cdn的路径,运维的提出增加一个软链接,该方案的确能解决,但是需要在多台cdn服务器下执行同样的操作。因而就想到能否只改生成的js方法名。那么这就需要定制xsLinker.  所幸在研究gwt源码之后发现不是特复杂,通过Override相关方法后最终解决了问题。

    嗯此次问题的解决让我对gwt的编译机制,整个项目的网络通讯有了更深层次的了解。

8. 我们应每次都给成功的POST请求做重定向。 这就是web开发的最佳实践。

转载于:https://my.oschina.net/imaginegc/blog/155396

你可能感兴趣的:(几个问题)