I want to fly higher
programming Explorer
posts - 113,comments - 263,trackbacks - 0

1.测试驱动开发
 测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动
 整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程
 。
2.//TODO Auto-generated method stub
-自动生成方法存根;其实这是eclipse自动生成的;那是因为我们之前操作过了自动代码生成的功能,如用eclipse向导创建类的时候

有一个选项:which method stubs would you like to create?如果我们选择上了,则会自动生成该方法,且有一句注释://TODO
auto-generate
method stub,它强调这是自动生成的方法存根,你可能需要添加一些具体的代码。
 可以编写方法调用->再调用生成方法存根 (Stub) 操作->创建新的方法声明
  个人理解:即一个自动生成代码的功能。比如测试驱动开发的时候,我们可以直接编写方法调用,然后让IDE自动生成方
  法
  声明即可,这样可以大大提高工作效率(Visual Studio 已提供该功能)
     http://msdn.microsoft.com/zh-cn/library/tcz8b6zc(v=vs.80).aspx
 当然我们的eclipse也有这样的功能,比如本来一个Calculate的类只有add和deduct方法,然后我们完全可以在client调用:
 calculate.devide(number),虽然我们的Calculate中没有除的方法;这时候编译出错,点击红叉,eclipse会提示:
 Create method 'devide(int)',然后右面会有生成的该方法声明的提示;双击,即生成了该方法存根,便看到了熟悉的
 //TODO Auto-generated method stub

  对真实方法的模拟方法,这个方法称之stub;存根(stub) 提供一种可以预先测试的未实现的对真实方法进行模拟的机制;顾
  stub被翻译为'存根'。
3.Mylyn/BugZilla
4.Java类中热替换的概念、设计与实现http://www.ibm.com/developerworks/cn/java/j-lo-hotswapcls/
5.eclipse debug:
 1.条件断点-右键断点->break point properties->Conditional->输入条件
 2.Inspect选项->选择感兴趣的变量->Ctrl+shift+I/右键Inspect选项->计算表达式的值->Display 窗口的 Expressions 视图中会显示结果
  (右键变量->Display)->Ctrl+shift+D->在Display中可以输入变量名,然后鼠标移过去即可或者Ctrl+shift+I
 3.热交换错误修正->允许在调试器会话中改变源代码->Resume
 4.远程调试->Remote Java Application
 5.F5,step info-> 单步调试,会进入方法里面;
    F6,step over,一行一行的调试;
    F7,step return,执行完当前method,然后return跳出此method
    step filter->一直执行直到遇到未经过滤的位置或断点->window-preferences-java-Debug-step Filtering
    resume 重新开始执行debug,一直运行直到遇到breakpoint
    hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit count)
    inspect 检查 运算。执行一个表达式显示执行值(Ctrl+shift+I)
    watch 实时地监视对象、方法或变量的变化(选择变量->右键watch)
  6.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method
breakpoint ,exception breakpoint;
    field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂
    添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)
    添加Exception breakpoint 捕抓到Execption时暂挂
  断点属性-1.hit count 执行多少次数后暂挂 用于循环
    2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂
    3.suspend thread 多线程时暂挂此线程
    4.suspend VM 暂挂虚拟机
 7.variables 视图里的变量可以改变变量值,在variables 视图选择变量点;击右键--change value.一次来进行快速调试
 8.debug 过程中修改了某些code后--〉save&build-->resume-->重新暂挂于断点
    resume 当debug调试跑出异常时,运行resume,重新从断点开始调试
 9.如果一行有很多方法,就按几次F5和F7
 10.断点:
  1.条件断点:顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止(见1)
  2.变量断点:变量也可以接受断点,在变量所指示的所在行,双击->出现一个不同于行断点的标记->变量的值初始化,或是
  变量值改变时可以停止(access/modification)
  3.方法断点-将断点打在方法的入口处;方法断点的特别之处在于它可以打在 JDK的源码里,由于 JDK 在编译时去掉了调试
  信
  息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈
  4.代码停在了断点处,但是传过来的值不正确,如何修改一下变量值保证代码继续走正确的流程,或是说有一个异常分支
  老是进不去,能不能调试时改一下条件,看一下异常分支代码是否正确?
   Variables ->选择"Change Value..." 在弹出的对话框中修改变量的值
   或是在下面的值查看窗口中修改,保用Ctr+S 保存后,变量值就会变成修改后的新值了
  5.调试回退-能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的调用的开始处->回退时,请在需要回退的线程
  方法上点右键,选择 "Drop to Frame"
  6.远程调试-使用远程调试的前提是服务器端和客户端的代码是一致的
  7.异常断点-debug的Breakpoints视图->工具栏上有一个黄色的叹号工具->add java exception breakpoint
 调试结束后,如果想重新debug的话,右键supend的线程,resume
 可以通过Expressions选项计算表达式的值
6.Resin illegal utf8 encoding at 0x..-
 http://flysnail.net/?p=42
 linux(修改Linux系统变量,把LANG=zh_CN.utf8,改成LANG=en_US.utf8)
 本人解决问题-是jsp编译的问题->GMLangConstants中没有ACTIVE;由于本人没有安装jsp/j2ee插件,所以没有在ide中显示编译错
 误;我勒个擦
  com.caucho.jsp.JspParseException:illegal utf8 encoding at 0x5
  at com.caucho.jsp.JspCompilerInstance.compile(JspCompilerInstance.java:434)
   .....从错误提示看, 也应该是jsp编译的问题啊
  at com.caucho.java.JavaErrorParser.parseErrors
  at com.cahcho.java.InternalCompiler.executeInt()
  at com.caucho.java.InternalCompiler.compileInt()
   ....从错误提示看,也应该看的出来是编译int出错。。应该可以联想到是GMLangConstants中常量的问题

  决定装WTP插件
 安装wtp插件后,xml报错-默认情况下wtp会去验证这些xml文件;可以不用去管它;目前只是用wtp来提示java语法和编译错误
 http://www.360doc.com/content/11/0329/22/715213_105734713.shtml;当然装上wtp后,会在xml catalog中添加一些dtd;若不影响web应用运
 行,可以取消eclipse的xml validate功能;
7.groovy脚本
 Groovy是一种新兴的 Java 2 平台语言。Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。
8.数据库连接池BoneCP/C3P0/DBCP
9.一定要多去http://www.ibm.com/developerworks/cn/,不了解的东西先去这里查询;
10.JSON
11w3c-"&lt;" represents the < sign;"&gt;" represents the > sign;"&amp;" represents the & sign. ;"&quot; represents the " mark.
12.eclipse使用-
 1.刚发现每切换eclipse的文件,就会打开该文件所在的package位置,很烦人;其实这个是可以取消的->Package Explorer右侧有一
 个倒立的小三角,这里面有关于package的设置,其中经常用到的是Package Presentation->Flat/Hierarchical/,还有Link with Editor,将
 这个勾干掉,就解决了提出的问题;如果需要查该文件所在的package,则可以用快捷键alt+shit+w或者菜单选项Navigate的show in选
 项
 2.Working Set-http://www.cnblogs.com/bjzhanghao/archive/2005/11/29/287251.html
 3.eclipse编译-工程->右键build path->Source->最下面有一个Default output folder,这个即编译输出的目录,默认是工程的bin目录,
 不过做web项目,通常是WEB-INF/classes
 4.eclipse不能自动编译->eclipse菜单选项Project->勾选上Build Automatically->Clean
  eclipse的clean选项-重新构建项目/清理项目/用eclipse或myeclipse重新编译(含class文件、jsp文件、ftl文件等等),前提是Java
  Build Path中配置好了;其实主要作用就是把编译好的class等文件删除,激活eclipse的自动编译。解决的问题就是,有时候
  你
  把代码改了,但因为一些未知的原因,eclipse的自动编译没有成功,导致运行结果不正常。当你的工程出现一些莫名其妙
  的
  错误时(当然不是语法错误),用一下这个功能,效果不错的;clean 是将 bin 文件夹里面的所有文件都删除,如果你是自动
  编译的话就会复制资源文件到 bin,并复制编译 Java 生成的 class。但这是一个 Java 项目才可以这样处理;将工程中的.class文
  件删除,同时重新编译工程(Java文件),生成.class文件,类似于jbuild中的rebuild。
  http://www.blogjava.net/javafield/archive/2008/01/05/172940.html
  http://wangbaoaiboy.blog.163.com/blog/static/52111910200911312342271/
 5.svn-update to revision->选择版本号,Revision或者Head revision- Latest Revision,It is the very latest/current revision of the project.
  svn使用必须要先update
 6.eclipse-Refactor功能
 7.Ctrl+Shift+G-eclipse->Search->Reference->Workspace
 8.选中代码行,Alt+上下方向键可移动代码行位置
 9.选中-shift+end/home,alt+shift+left/right  选中上一个/下一个单词-Ctrl+Shift+Left/Right
 10.显示快捷键帮助:Ctrl+Shift+L
 11.eclipse 3.6 Ctrl+shift+down/up快捷键不好用,不过用Ctrl+shift+L,可以看到,然后可以使用;
  解决-快捷键冲突, 与Intel显示芯片驱动快捷键冲突http://hbxflihua.iteye.com/blog/1225301
   桌面->右键属性->菜单设置->高级->Inter(R) Graphics Media Accelerator Driver->图形属性->快捷键->将启用快捷键的对勾
   干掉
 12.工程添加user liberary,这样可以更好的管理lib,否则的话,所有的jar放在一起,很难管理,也不方便;
 13.{@link}javadoc必须指明包名,成功的标志是方法名和类名都可以通过f3或者ctrl+左键访问; 且输入包名后按#号可以出现方法
 14.如果工程包很多,需要查看某个包时,可以更改包查看方式-Package presentation->hierarchical即可,还可以选择filter过滤条件
 15.debug的时候,可以通过Display窗口根据代码提示输入某表达式,(复制太麻烦)然后放到Expressions中查看值或者右键watch
 自动放入Expressions或者右键inspect
 16.eclipse debug模式下:
  1. 开发工具(Eclipse)编译出的classes文件,默认即为debug模式
  2. 使用javac命令编译,需要加入 –g 参数
  3. 使用ant中的javac任务编译,需要为javac任务添加deubg属性
   debug=”true”
   debuglevel="lines,vars,source"
  效果:使用debug模式编译出的classes文件里面包含代码行号信息,体积比非debug模式编译出的文件稍大一点,如果此类
  代码中抛出异常,Exception中会明确标出发生异常代码的行号,而不是Unknown Source;
  此类方法编译出的classes文件支持按行进行debug跟踪,支持以JPDA方式跟踪调试,定位问题和排错都非常方便
 17.热部署->所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。   对于Java应用程序来说,热部署
 就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的
 应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类
 装入器实例,就可以将类再次装入一个正在运行的应用程序。
 18.eclipse debug-热交换错误修正:动态代码修正:---尿性
 如果运行的是 Java 虚拟机(Java Virtual Machine,JVM)V1.4 或更高的版本,Eclipse 支持一个叫做热交换错误修正(Hotswap Bug
 Fixing)的功能,JVM V1.3 或更低的版本不支持该功能。该功能允许在调试器会话中改变源代码,这比退出应用程序、更改代
 码、重新编译、然后启动另一个调试会话更好。要利用该功能,在编辑器中更改代码后重新调试即可。由于 JVM V1.4 与 Java
 平台调试器架构(Java Platform Debugger Architecture,JPDA)兼容,所以才有可能具备该功能。JPDA 实现了在运行的应用程序
 中替换经过修改的代码的功能。如果应用程序启动时间较长或执行到程序失败的地方时间很长,那么这一点特别有用。
 19.Java启动内存参数-xmx,xms,xss

13.JSTL/javascript
14.Jdk1.6自带的JavaDb,derby
15.深入理解Java虚拟机:JVM高级特性与最佳实践
16.List转数组-int size = list.size(); String[] arr = (String[])list.toArray(new String[size]); //写demo测试一下
17.http://www.javaconcurrencyinpractice.com/
18.javap反编译显示的方法签名-参数+返回值
Field Descriptor Java Language Type
 Z   boolean
 B   byte
 C   char
 S   short
 I   int
 J   long
 F   float
 D   double
引用数据类型-以“L”开头,以“;”结束,中间对应的是该类型的路径
 如-如:
  String : Ljava/lang/String;
  Object: Ljava/lang/Object;
数组表示:  数组表示的时候以“[” 为标志,一个“[”表示一维数组
 如:int [] :[I
 Long[][]  : [[J

例子-
public void test1(int i){}-(I)V  -------"()" 里面代表的是方法的参数,后面外面的部分代表的是该方法的返回值
public Cat test4(Cat c){ return new Cat();}  --------(Lcom/demo/cat;)Lcom/demo/cat
http://www.cnblogs.com/luxiaofeng54/archive/2011/08/18/2143977.html
19.win+r进入运行,输入system32可以直接进入C:\WINDOWS\system32目录;输入c:或者d:可直接进入相应的盘符;
20.ScriptEngine/javax.xml/Velocity.mergeTemplate
 1.Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java
 代码定义的对象。
 http://airport.iteye.com/blog/23634
 http://www.ibm.com/developerworks/cn/java/j-velocity/
 2.freemaker
 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写;
 http://blog.csdn.net/ITFLY8/article/details/1662057
21.Xshell/SecureCRT/putty/MobaXterm/pietty/ssh secure shell client/kitty
22.webgame机器人压力测试-scala
 五大基于JVM的脚本语言
 Groovy/JRuby /Scala/Fantom/ Jython
23.BeanShell
24.动态调用动态语言,第 1 部分: 引入 Java 脚本 API-http://www.ibm.com/developerworks/cn/java/j-javascripting1/
25.主题:java脚本框架介绍与应用(1)-http://www.iteye.com/topic/464932
26.<<Java脚本编程>>,语言,框架与模式-某读书笔记http://macrochen.iteye.com/blog/833351-准备今天购买
 注意-时刻关注新书
 购书-Java脚本编程/深入理解Java虚拟机/Effective Java中文版第二版/Java编程语言(第三版)
 [这本书太早了,2003年就上架,得考虑一下]-晚上回去买吧
27.Scala程序设计:Java虚拟机多核编程实战
28.《Programming Scala》《Programming in Scala》

posted on 2011-12-26 20:53 landon 阅读(1413) 评论(2)  编辑  收藏 所属分类: ProgramNote

FeedBack:
# re: 2011-11下半月工作杂记
2011-12-26 21:31 | landonlv
L的意思是class,在javaVM的规范当中有说。 因为C已经代表char了,所以用后一个字母l  回复  更多评论
  
# re: 2011-11下半月工作杂记
2011-12-26 21:37 | landonlv
Z为什么表示boolean,z可能是zero的意思,boolean在内存中的表示就是一个int或者byte,为0表示false,非0表示true;而jdk源码中Filed的setBoolean方法,boolean的参数就是用的z;Public void setBoolean(Object obj, boolean z)  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: