2013年工作中遇到的20个问题:201-220
201.天际网 注册帐号,好处,该网站发邮件给我推荐了几个人,同一个公司的。
另外一个看点,公司内部的一个“产品工程师”在该网站的头衔是“经理”,我擦。
结论:网上的很多信息,经理、CEO仅供参考。
202.Firefox调试工具Firebug。
自带的有时候不太好使,我最近几个月还以为自带的调试工具就是Firebug。
203.在线正则表达式检查工具。
一个好工具http://www.regexpal.com/。
输入正则表达式,再输入值,自动校验,把匹配的和不匹配的字符串用不同的颜色区分开来。
204.测试部门 Testlink 很严格,开始很费时间,后来只要按照流程走,就可以测出bug。
这点比开发强多了。
类似的,开发要多写单元测试。
205.Word文档审阅模式。
可以给Word添加注释,这样在看别人的简历等Word文档的时候,就把别人写的和自己给的注释区分开了。
同样的,PDF也有审阅模式增加注释这个功能。
206.更新时,不应该修改创建者creator。
update set参照了insert的字段列表,把creator也更新了。
为什么set creator = #{creator}不报错了?
因为Service中Add和Update方法使用了同一个方法,都设置了creator。
private void buildCampaignGroup(CampaignGroup campaignGroup) {
campaignGroup.setCreator(SessionUtils.getCurrentUserId());
}
为什么会习惯性地更新一个id了,因为update一般会去更新updateUserId字段,
但是这个表里却没有。
下次一定要认真写单元测试。
断言正确的情况和错误的情况!!!
207.如何卸载Eclipse中已安装的插件。
最近才知道原来Eclipse还可以自己卸载已经安装的插件,方法是点击菜单“Help”,“Install New Software...”,
在弹出的对话框中选择那个非常隐蔽的“already installed”链接:
现在就可以选择要卸载的插件,然后点“Uninstall...”把它卸载掉。
208.使用JqueryUI对话框,手动设置对话框的width和height这2个参数,避免出现不必要的滚动条。
209.修电脑。
笔记本进水了,当晚没关机,反复启动。
最终,主板和显卡都短路了。400+200=600元。
笔记本自带的1个键盘保护膜,不仅仅是用来保持键盘清洁的,更主要是防水吧。
210.WinSCP 显示的中文是乱码。
步骤1:点击 [WinSCP-->环境],在右侧的[文件名UTF-8编码(U)]选择[开启](默认的是“自动”)
步骤2:重启,重新连接服务器
参考资料:http://zhidao.baidu.com/link?url=TaZw2cpfzsiCU_gbzBuI0gV2eQK0QzruGNqzLC8w9340lvNAcyvnnC8KVHb9Tve_RPX3jIzBx-RMXh0IBtl55a&autorefresh=1378346005578
211.Java修改代码需要重启Tomcat,才能看到效果。
就这个问题,我问了公司某Java专家。
有以下收获:
a.灰度发布。
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
参考 百科 http://baike.baidu.com/link?url=qC6yV28VJVmpV9EA-I3z35KC4-4U0SkBqANM4KlJNBC2rn5tpPdm3TQryfcY9OmwMDM008sXHvJIuoODHRiOnq
b.downtime
n.(工厂等由于检修、待料等的)停工期
c.debug模式下,如果不改变程序的函数签名或者新类,是可以不用重启就能刷新的。
这个叫 hot swap。
auto publishing不要关,关掉 auto reloading。
d.jrebel
JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。
JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。
当程序员在开发环境中对任何一个类或者资源作出修改的时候,
这个变化会直接反应在部署好的应用程序上,从而跳过了构建和部署的过程,每年可以省去部署用的时间花费高达5.25个星期。
参考资料:JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。当程序员在开发环境中对任何一个类或者资源作出修改的时候,这个变化会直接反应在部署好的应用程序上,从而跳过了构建和部署的过程,每年可以省去部署用的时间花费高达5.25个星期。
212.魅族手机。
从京东买回来的MX2,反应超级迟钝,刷机也不行。
用了8个月后,最近1位同事,帮我弄好了。
格式化硬盘,重新刷机,刷新ROM等固件。
213.spring mvc传递数组参数,数组长度有限制。
超过256个就数组越界了。
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/validation/DataBinder.html
static int DEFAULT_AUTO_GROW_COLLECTION_LIMIT
Default limit for array and collection growing: 256
@InitBinder
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
binder.setAutoGrowCollectionLimit(1024);
}
214.eclipse 使用git导入Maven项目。
非常关键的第1步:右键 > Import > Project from Git->选择URI->输入Remote Git Repo的配置信息
其它的步骤,输入和选择就可以了。
区别:下载SVN项目的时候,是New ->Other->从SVN检出项目。
参考资料:http://blog.sina.com.cn/s/blog_812973c30101loug.html
215.ha HA(High Available), 高可用性群集。
是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点
参考资料:http://baike.baidu.com/view/143772.htm#sub5065301
某经理QQ就爱HA啥的,缩略语太流行了。
216.关闭Linux防火墙。
sudo ufw disable
防火墙在系统启动时自动禁用。
217.Web项目访问路径冲突。
项目有个模块的访问路径是http://localhost:8080/manager
与Tomcat自带的/webapps/manager重复了。
会优先访问Tomcat自带的。
218.hql不支持以下语法。
String hql = "update DataResource set isSync = :isSync,syncTime=:syncTime where id in (:idList)";
could not bind value '1,2' to parameter: 3; java.lang.String cannot be cast to java.lang.Integer
isList是字符串,(1,2,3),id是DataResource的int类型的主键。
换成SQLQuery也不行。
String sql = "update DataResource set isSync = :isSync,syncTime=:syncTime where id in (:idList)";
org.hibernate.exception.DataException: could not execute native bulk manipulation query
219.一个key多个value的集合。
Apache Commons Collection中已经有了MultiValueMap。
类似的集合有MultiKeyMap ,1个value,多个key。
幸亏我没事的时候就看看开源组件的API,知道有很多好用的工具类和API。
现在不用自己去实现集合了。
220.SQL语句in有个数限制和性能问题。
问leader一个hql的问题,他提到in后面的id个数是有个数限制的,
具体多少个没有去查,网上搜到下看到有个CSDN网友说Oracle最多能有1000个。
另外一个问题,in的效率不够高,具体不清楚。
此外,有一个更好的解法。
update DataResource set isSync = :isSync,syncTime=:syncTime where id in (:idList)
为了更新某行记录,使用id来定位,这样需要知道大量的id,
另外一种方式是 用其它多个字段来进行定位,当然这也是有局限性的。
update DataResource set isSync = :isSync,syncTime=:syncTime where name="fans" and version="1.2";
原文参见:http://FansUnion.cn/articles/2530