13 October 2013

Eclipse快捷键与使用技巧总结

此文档主要介绍个人认为比较实用的技巧,常用技巧不做介绍。资料来源于网络,自己再集中整理的。
一、实用类快捷键
1 常用熟悉的快捷键
CTRL+C(复制)、CTRL+X(剪切)、CTRL+Z(撤销)、CTRL+F(查找)、CTRL+H(搜索文件或字符串)、CTRL+Y(重做)、CTRL+/(双斜杠注释)、ALT+/(提示)、CTRL+SHIFT+F(格式化代码)
2 编码辅助类
1)CTRL+D
删除当前行。
2)CTRL+ALT+DownUp
复制当前行到下(上)一行中。比CTRL+C单纯的复制功能要方便好用(省掉了粘贴步骤),主要是用在编写代码时,需要移动代码的地方。
3)ALT+DownALT+Up
移动单行(多行)代码。也是比CTRL+C更好的快捷键。
4)ALT+SHIFT+J(建议要使用)
给类,方法,变量添加注释,在类,方法,变量首行,按下此组合键。之所以要建议使用,是为了代码的规范性。现在很多人都没有给自己写的类,方法,变量加上doc文档注释,根本无法生成api 文档。因此每个人在添加一个类、方法时,必须给它加上标准的doc文档注释。(添加类注释有更简便的方法,看后面的配置章节)
5)CTRL+1
Fixed 的快捷键,提示代码错误原因以及处理办法。跟双击代码中的红叉一样的功能。这是一个很常用功能。一般用于修改语法错误。但是个人觉得用在增加接口方法(或参数),类方法(或参数),更能体现出它的便捷之处。比如当你想为一个接口或类增加一个方法,只许在要调用的地方写上你的方法和参数(先不要定义),CTRL+1,选择 create method…就可以自动为你增加想要的方法,省了很多要写的代码。本质是先制造一个错误的语法,让系统自动修复功能帮我们完成代码。
6)CTRL+2
修改变量名,定义变量。按下快捷键,会弹出一个快捷键列表(窗口右下角),在选择你要的操作。
3 快速定位---快捷键
1)CTRL+SHIFT+R(非常好用)
在eclipse中快速定位文件(任何类型)。有了这个,只要记得文件的大概名字,就可以通过模糊查询,搜索出来。就不需要为了打开某个模块中的某个java类,得一个个文件的找了。在学习源码的时候,更是少不了它。
2)CTRL+O
在文件中查找变量或方法。我们一般的做法是,拉动滚动条一个个的找到自己的要的方法。现在只要输入方法的前面名字,就可以快速过滤出你所要的方法。
3)CTRL+Q
返回上次编辑的地方。有时我们打开太多的java类,当需要返回刚刚编辑过的地方时,这个键可以一步到位。非常好用。
4)CTRL+T
打开某个方法的声明。通过这个,可以快速找到这个方法所属的类或接口,查看该方法的内容。
5)CTRL+W
关闭正在编辑的活动窗口。
6)CTRL+K(向下查找), CTRL+SHIFT+K(向上查找)
当选中某个字符串后,按这个快捷键,可以在当前文档快速定位到再次出现该字符窜的位置。CTRL+F(查找)好用吗?但跟这个相比,却要逊一筹。因为不需要打开查找窗口,不需要再输入查找的字符,仅仅是选中你要查找的内容。在查找变量,方法时非常实用。
7)CTRL+J
上面的查找功能有个限制,如果当前没有要查找的字符,需要手工输入时,就不好办了。CTRL+J,就可以帮得上忙了。只要按下此键,输入你想要的字符窜,你就可以看到光标在页面中不断跳转,定位到你所想要的。
8)CTRL+L
定位到第几行
9)CTRL+E
选择要激活的文件窗口
10)CTRL+, CTRL+. (或者ALT+LeftALT+Right
定位你上(前)一步浏览的那个位置(或错误)。你曾经浏览过几个java文件,当你转到其他文件后,又想回到刚才访问的文件,那就用这个键吧。或者通过工具栏上的按钮。
11)ALT+SHIFT+Z
选中一段代码,按下此键,看看出现什么??这应该是你想要的。
12)package explorer视图 右上角的按钮
有左右箭头的按钮,该按钮处于按下状态时,可以使打开的文件和导航视图中的文件同步。
4 其他
1) CTRL+M  窗口最大化
2) CTRL+SHIFT+L (打开快捷键面板), CTRL+SHIFT+L(2) 快速按下L两次(打开快捷键配置面板)
3)ALT+SHIFT+T 重构功能的面板的快捷键
4)ALT+SHIFT+S 代码的编辑功能面板的快捷键
5) 多使用右键,多观察记住你经常使用的操作的快捷键。
此篇介绍的快捷键都是里面的默认配置,也紧紧是其中的很少 部分,更多,更好的快捷键,你都可以去体验。

二、 重构类快捷键
多使用重构功能,可以帮我们更快的修改代码,减少出错的概率。
ALT+SHIFT+R修改变量、方法名。
在编码过程中,我们最经常做的操作是,修改变量名称。当变量用于java类中很多地方的时候,修改就比较麻烦,如果没有重构,就得一个一个的修改。如果用重构修改名字,只需要修改一次修改操作。
重构菜单
1) 菜单-->refactor
2) 在编辑环境中,右键-->refactor (快捷键ALT+SHIFT+T)
三、配置eclipse
了解了这部分,可以减少我们的代码输入,提高效率,更快的完成我们的类,让你写代码更轻松,写出的代码更加规范。
1 模板配置
现在我们最常用的快捷键可能是ALT+/,或者在输入一个单词的一部分之后,让它弹出辅助代码。而这些都是通过模板来配置,打开菜单:window-->preferences-->java-->editor-->templates
在右边的列表中,可以看到系统中已经给我们预置了很多的模板。在我们写代码的时候,只要在空白地方使用快捷键ALT+/,就可以看到它们。如:sysout,systrace,main,test,还有很多for,while,if模板。还可以添加自己的模板进去,重复使用。这就相当灵活了。
自动生成注释的模板:除了以上的模板外,其实还有一个可定制的模板。就是当你用快捷键(ALT+SHIFT+J)为一个类生成doc注释的时候,eclipse也是通过模板来生成的。如果我们改了这个模板,以后就可以生成完全个性化的注释了。
打开菜单window-->preferences-->java-->codestyle-->code template
一个最常用的功能时,给类添加注释的时候,会将作者的姓名,创建时间等个性化的信息写进去。
例如:打开右边面板的commentsàTypes 修改其内容为:
/**
*xx系统:<br>
*@authorXXX<br>
* ${date} ${time}
*${tags}
*/
当你为一个类添加注释时,你就会看到效果了。
或者当你fileànewàclass时,在新建面板的下边,会有一个选项Generate comments,选中。打开该新建类,就可以看到效果。
2 代码风格样式
当我们使用快捷键CTRL+SHIFT+F的时候,eclipse就会帮我们格式化代码,使代码更符合规范,更整齐。
修改样式模板window-->preferences-->java-->codestyle-->formator-->右边面板的edit按钮。
转载请注明出处 http://blog.csdn.net/xn4545945

03 October 2013

高效的MySQL分页


PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”Efficient Pagination Using MySQL“的报告,有很多亮点,本文是在原文基础上的进一步延伸。
首先看一下分页的基本原理:
mysql> explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20\G ***************** 1. row ************** id: 1 select_type: SIMPLE table: message type: index possible_keys: NULL key: PRIMARY key_len: 4 ref: NULL rows: 10020 Extra: 1 row in set (0.00 sec)
limit 10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里,如果是limit 100000,100,需要扫描100100行,在一个高并发的应用里,每次查询需要扫描超过10W行,性能肯定大打折扣。文中还提到limit n性能是没问题的,因为只扫描n行。
文中提到一种”clue”的做法,给翻页提供一些”线索”,比如还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是9527,最小的是9500,如果我们只提供”上一页”、”下一页”这样的跳转(不提供到第N页的跳转),那么在处理”上一页”的时候SQL语句可以是:
1SELECT FROM message WHERE id > 9527 ORDER BY id ASC LIMIT 20;
处理”下一页”的时候SQL语句可以是:
1SELECT FROM message WHERE id < 9500 ORDER BY id DESC LIMIT 20;

不管翻多少页,每次查询只扫描20行。
缺点是只能提供”上一页”、”下一页”的链接形式,但是我们的产品经理非常喜欢”<上一页 1 2 3 4 5 6 7 8 9 下一页>”这样的链接方式,怎么办呢?
如果LIMIT m,n不可避免的话,要优化效率,只有尽可能的让m小一下,我们扩展前面的”clue”做法,还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是9527,最小的是9500,比如要跳到第8页,我看的SQL语句可以这样写:
1SELECT FROM message WHERE id > 9527 ORDER BY id ASC LIMIT 20,20;
跳转到第13页:
1SELECT FROM message WHERE id < 9500 ORDER BY id DESC LIMIT 40,20;

原理还是一样,记录住当前页id的最大值和最小值,计算跳转页面和当前页相对偏移,由于页面相近,这个偏移量不会很大,这样的话m值相对较小,大大减少扫描的行数。其实传统的limit m,n,相对的偏移一直是第一页,这样的话越翻到后面,效率越差,而上面给出的方法就没有这样的问题。
注意SQL语句里面的ASC和DESC,如果是ASC取出来的结果,显示的时候记得倒置一下。
已在60W数据总量的表中测试,效果非常明显。