posts - 25,comments - 0,trackbacks - 0
http://hllvm.group.iteye.com/group/wiki?category_id=316 
posted @ 2012-07-08 10:17 周磊 阅读(287) | 评论 (0)编辑 收藏
再看看<effective java> ,对前半年写的代码进行一下反思
慢慢看《Hadoop实战中文版》,了解分布式系统
认真阅读《设计模式之禅》,加深对自己已经在实际项目中运用的模式的理解。
阅读《java解惑》的后半部分(2年前读过前几十条建议),了解编码中的陷阱。
posted @ 2012-06-29 15:07 周磊 阅读(283) | 评论 (0)编辑 收藏

State of the Lambda

http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html 

jdk快点出吧lambdba把,一直用op4j和lambdbaj这些jar包很蛋疼。。
posted @ 2012-06-27 11:47 周磊 阅读(303) | 评论 (0)编辑 收藏
spring配置该方法只读了。

<bean id="txProxyTemplate" abstract="true"
       class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
       <property name="transactionManager" ref="transactionManager"/>
       <property name="transactionAttributes">
           <props>
              <prop key="affirm*">PROPAGATION_REQUIRED</prop>
              <prop key="gen*">PROPAGATION_REQUIRED</prop>
               <prop key="save*">PROPAGATION_REQUIRED</prop>
               <prop key="update*">PROPAGATION_REQUIRED</prop>
               <prop key="create*">PROPAGATION_REQUIRED</prop>
               <prop key="process*">PROPAGATION_REQUIRED</prop>                               
               <prop key="delete*">PROPAGATION_REQUIRED</prop>               
               <prop key="remove*">PROPAGATION_REQUIRED</prop>
               <prop key="send*">PROPAGATION_REQUIRED</prop>
  <prop key="upload*">PROPAGATION_REQUIRED</prop>               
               <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
           </props>
       </property></bean>

posted @ 2012-05-24 09:59 周磊 阅读(3347) | 评论 (0)编辑 收藏
十进制转成十六进制: 
Integer.toHexString(int i) 
十进制转成八进制 
Integer.toOctalString(int i) 
十进制转成二进制 
Integer.toBinaryString(int i) 
十六进制转成十进制 
Integer.valueOf("FFFF",16).toString() 
八进制转成十进制 
Integer.valueOf("876",8).toString() 
二进制转十进制 
Integer.valueOf("0101",2).toString() 

有什么方法可以直接将2,8,16进制直接转换为10进制的吗? 
java.lang.Integer类 
parseInt(String s, int radix) 
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 
examples from jdk: 
parseInt("0", 10) returns 0 
parseInt("473", 10) returns 473 
parseInt("-0", 10) returns 0 
parseInt("-FF", 16) returns -255 
parseInt("1100110", 2) returns 102 
parseInt("2147483647", 10) returns 2147483647 
parseInt("-2147483648", 10) returns -2147483648 
parseInt("2147483648", 10) throws a NumberFormatException 
parseInt("99", throws a NumberFormatException 
parseInt("Kona", 10) throws a NumberFormatException 
parseInt("Kona", 27) returns 411787 

进制转换如何写(二,八,十六)不用算法 
Integer.toBinaryString 
Integer.toOctalString 
Integer.toHexString 


例二 

public class Test{ 
   public static void main(String args[]){ 

    int i=100; 
    String binStr=Integer.toBinaryString(i); 
    String otcStr=Integer.toOctalString(i); 
    String hexStr=Integer.toHexString(i); 
    System.out.println(binStr); 





例二 
public class TestStringFormat { 
   public static void main(String[] args) { 
    if (args.length == 0) { 
       System.out.println("usage: java TestStringFormat <a number>"); 
       System.exit(0); 
    } 

    Integer factor = Integer.valueOf(args[0]); 

    String s; 

    s = String.format("%d", factor); 
    System.out.println(s); 
    s = String.format("%x", factor); 
    System.out.println(s); 
    s = String.format("%o", factor); 
    System.out.println(s); 
   } 




其他方法: 

Integer.toHexString(你的10进制数); 
例如 
String temp = Integer.toHexString(75); 
输出temp就为 4b 



//输入一个10进制数字并把它转换成16进制 
import java.io.*; 
public class toHex{ 

public static void main(String[]args){ 

int input;//存放输入数据 
//创建输入字符串的实例 
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in)); 
System.out.println("请输入一个的整数:"); 
String x=null; 
try{ 
x=strin.readLine(); 
}catch(IOException ex){ 
ex.printStackTrace(); 

input=Integer.parseInt(x); 
System.out.println ("你输入的数字是:"+input);//输出从键盘接收到的数字 

System.out.println ("它的16进制是:"+Integer.toHexString(input));//用toHexString把10进制转换成16进制 
posted @ 2012-04-29 12:10 周磊 阅读(3160) | 评论 (0)编辑 收藏
http://linbin007.iteye.com/blog/809759
-noverify 
-javaagent:D:/jrebel.jar
-Drebel.dirs=E:\workspace\WantWant\webapp\WEB-INF\classes
posted @ 2012-03-26 15:27 周磊 阅读(802) | 评论 (0)编辑 收藏

Class search path

The default ClassPool returned by a static method ClassPool.getDefault() searches the same path that the underlying JVM (Java virtual machine) has. If a program is running on a web application server such as JBoss and Tomcat, the ClassPool object may not be able to find user classes since such a web application server uses multiple class loaders as well as the system class loader. In that case, an additional class path must be registered to the ClassPool. Suppose that pool refers to aClassPool object:

    pool.insertClassPath(new ClassClassPath(this.getClass())); 

This statement registers the class path that was used for loading the class of the object that this refers to. You can use any Class object as an argument instead ofthis.getClass(). The class path used for loading the class represented by that Class object is registered.

You can register a directory name as the class search path. For example, the following code adds a directory /usr/local/javalib to the search path:

    ClassPool pool = ClassPool.getDefault(); pool.insertClassPath("/usr/local/javalib"); 

The search path that the users can add is not only a directory but also a URL:

    ClassPool pool = ClassPool.getDefault(); ClassPath cp = new URLClassPath("www.javassist.org", 80, "/java/", "org.javassist."); pool.insertClassPath(cp); 

This program adds "http://www.javassist.org:80/java/" to the class search path. This URL is used only for searching classes belonging to a package org.javassist. For example, to load a class org.javassist.test.Main, its class file will be obtained from:

    http://www.javassist.org:80/java/org/javassist/test/Main.class 

Furthermore, you can directly give a byte array to a ClassPool object and construct a CtClass object from that array. To do this, use ByteArrayClassPath. For example,

    ClassPool cp = ClassPool.getDefault(); byte[] b = a byte array; String name = class name; cp.insertClassPath(new ByteArrayClassPath(name, b)); CtClass cc = cp.get(name); 

The obtained CtClass object represents a class defined by the class file specified by b. The ClassPool reads a class file from the given ByteArrayClassPath if get() is called and the class name given to get() is equal to one specified by name.

If you do not know the fully-qualified name of the class, then you can use makeClass() in ClassPool:

    ClassPool cp = ClassPool.getDefault(); InputStream ins = an input stream for reading a class file; CtClass cc = cp.makeClass(ins); 

makeClass() returns the CtClass object constructed from the given input stream. You can use makeClass() for eagerly feeding class files to the ClassPool object. This might improve performance if the search path includes a large jar file. Since a ClassPool object reads a class file on demand, it might repeatedly search the whole jar file for every class file. makeClass() can be used for optimizing this search. The CtClass constructed by makeClass() is kept in the ClassPool object and the class file is never read again.

The users can extend the class search path. They can define a new class implementing ClassPath interface and give an instance of that class to insertClassPath() inClassPool. This allows a non-standard resource to be included in the search path.





package com.cloud.dm.util;

import java.io.File;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javassist.ClassClassPath;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
import javassist.bytecode.DuplicateMemberException;

import org.apache.commons.lang3.StringUtils;

public class Struts2GetterSetterGen {
    private static ClassPool pool = ClassPool.getDefault();

    public static void init() throws Exception {
        URL url = Struts2GetterSetterGen.class.getResource("/");
        List<File> resultList = new ArrayList<File>();
        FileSearcher.findFiles(url.getFile(), "*Action.class", resultList);
        for (File object : resultList) {
            String className = StringUtils.substringBetween(object.toString(),
                    "classes\\", ".class").replaceAll("\\\\", ".");
            CtClass ct = null;
            pool.insertClassPath(new ClassClassPath(Class.forName(className))); //在servlet容器中启动
            ct = pool.get(className);
            Field[] fs = Class.forName(className).getDeclaredFields();
            for (Field f : fs) {
                genGetter(ct, f);
                genSetter(ct, f);
            }
            ct.writeFile(url.getPath()); // 覆盖之前的class文件
        }
    }

    private static void genGetter(CtClass ct, Field field) throws Exception {
        String string = "public " + field.getType().getName() + " get"
                + StringUtils.capitalize(field.getName()) + "() {return "
                + field.getName() + "; }";
        CtMethod m = CtNewMethod.make(string, ct);
        try {
            ct.addMethod(m);
        } catch (DuplicateMemberException e) {
        }
    }

    private static void genSetter(CtClass ct, Field field) throws Exception {
        String string = "public void set"
                + StringUtils.capitalize(field.getName()) + "("
                + field.getType().getName() + " " + field.getName() + "){this."
                + field.getName() + " = " + field.getName() + "; }";
        CtMethod m = CtNewMethod.make(string, ct);
        try {
            ct.addMethod(m);
        } catch (DuplicateMemberException e) {
        }
    }
}


posted @ 2012-03-22 15:22 周磊 阅读(4126) | 评论 (0)编辑 收藏
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/index.html
posted @ 2012-03-19 09:55 周磊 阅读(329) | 评论 (0)编辑 收藏


org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/xxx


META-INF下需要有这两个文件:spring-handlers及spring-schemas

posted @ 2012-03-15 15:21 周磊 阅读(5861) | 评论 (0)编辑 收藏
 1 package com.cloud.dm;
 2 
 3 import java.util.Collections;
 4 import java.util.Comparator;
 5 import java.util.List;
 6 import java.util.Map;
 7 
 8 import com.google.common.collect.Lists;
 9 import com.google.common.collect.Maps;
10 
11 public class TreeListTest {
12     public static void main(String[] args) {
13         List<Map<String, Object>> list = Lists.newArrayList();
14         Map<String, Object> map = Maps.newHashMap();
15         map.put("key", 201101);
16         Map<String, Object> map2 = Maps.newHashMap();
17         map2.put("key", 200010);
18         Map<String, Object> map3 = Maps.newHashMap();
19         map3.put("key", 201103);
20         list.add(map);
21         list.add(map2);
22         list.add(map3);
23         System.out.println(list);
24         Collections.sort(list, new Comparator<Map<String, Object>>() {
25             @Override
26             public int compare(Map<String, Object> o1, Map<String, Object> o2) {
27                 System.out.println(o1.get("key").toString().compareTo(o2.get("key").toString()));
28                 return o1.get("key").toString().compareTo(o2.get("key").toString());
29             }
30         });
31         System.out.println(list);
32     }
33 }
34 
posted @ 2012-03-13 18:13 周磊 阅读(1435) | 评论 (0)编辑 收藏
     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1         <dl>  2  &nbs...  阅读全文
posted @ 2012-03-04 17:33 周磊 阅读(2933) | 评论 (0)编辑 收藏
org.apache.shiro.web.filter.mgt.DefaultFilter
默认的内置拦截器
    anon(AnonymousFilter.class),
    authc(FormAuthenticationFilter.class),
    authcBasic(BasicHttpAuthenticationFilter.class),
    logout(LogoutFilter.class),
    noSessionCreation(NoSessionCreationFilter.class),
    perms(PermissionsAuthorizationFilter.class),
    port(PortFilter.class),
    rest(HttpMethodPermissionFilter.class),
    roles(RolesAuthorizationFilter.class),
    ssl(SslFilter.class),
    user(UserFilter.class);

  anno 允许匿名访问,

Filter that allows access to a path immeidately without performing security checks of any kind.

This filter is useful primarily in exclusionary policies, where you have defined a url pattern to require a certain security level, but maybe only subset of urls in that pattern should allow any access.

For example, if you had a user-only section of a website, you might want to require that access to any url in that section must be from an authenticated user.

Here is how that would look in the IniShiroFilter configuration:

[urls]
/user/** = authc

But if you wanted /user/signup/** to be available to anyone, you have to exclude that path since it is a subset of the first. This is where the AnonymousFilter ('anon') is useful:

[urls]
/user/signup/** = anon
/user/** = authc
>

Since the url pattern definitions follow a 'first match wins' paradigm, the anon filter will match the /user/signup/** paths and the /user/** path chain will not be evaluated.

posted @ 2012-03-03 23:52 周磊 阅读(986) | 评论 (0)编辑 收藏
 

Shiro框架Web环境下过滤器结构分析

posted @ 2012-03-01 11:52 周磊 阅读(149) | 评论 (0)编辑 收藏
1 strtus2无法加载jar中的注解配置的action
2 spring3.1的cache标签报空值错误
posted @ 2012-02-28 23:27 周磊 阅读(154) | 评论 (0)编辑 收藏

介绍 Spring 3.1 M1 中的缓存功能- 中文版 (转)

posted @ 2012-02-27 10:29 周磊 阅读(112) | 评论 (0)编辑 收藏
最简单的一招是删除"c:/windows/java.exe",win7是在system32目录下,这样就可以修复了
如果不行继续删除
javaw.exe和javaws.exe


posted @ 2012-02-26 13:08 周磊 阅读(430) | 评论 (0)编辑 收藏

http://blog.csdn.net/luotangsha/article/details/7016613

http://www.cnblogs.com/freeliver54/archive/2011/12/30/2307129.html

posted @ 2012-02-10 18:11 周磊 阅读(869) | 评论 (0)编辑 收藏
http://jautodoc.sourceforge.net/
posted @ 2012-02-10 15:06 周磊 阅读(193) | 评论 (0)编辑 收藏
org.ralasafe.servlet.UserTypeInstallAction
org.ralasafe.servlet.RalasafeController
posted @ 2012-02-10 11:14 周磊 阅读(129) | 评论 (0)编辑 收藏


http://www.hitb.com.cn/web/guest/bbs/-/message_boards/message/13822
posted @ 2012-02-09 19:52 周磊 阅读(167) | 评论 (0)编辑 收藏
SHOW VARIABLES LIKE '%char%'

http://database.ctocio.com.cn/82/12161582.shtml
posted @ 2012-02-09 15:49 周磊 阅读(153) | 评论 (0)编辑 收藏
项目运行了一段时间后大量concurrent mode failure    (gc 日志文件下载/Files/b1412/concurrent_mode_failure.rar

参数 

SET CATALINA_OPTS= -Xms1024m -Xmx1024m -Xmn350m  -server -noclassgc -XX:+PrintGCDetails -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=20  -XX:+UseConcMarkSweepGC   -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseFastAccessorMethods -Xloggc:"%CATALINA_HOME%"/webapps/dm/tomcat_gc.log

XX:CMSInitiatingOccupancyFraction 参数默认值是68,之前调试的时候为了降低cms gc触发周期,扩大了这个值,也就是old达到百分之80才触发cms。但是长期运行随着old区的膨胀,开始频繁触发concurrent mode failure 。具体原因可以查阅相关资料,降低整个值可以避免,concurrent mode failure触发会暂停整个应用大大影响效率。
posted @ 2012-02-07 12:43 周磊 阅读(2845) | 评论 (0)编辑 收藏
http://sheng.iteye.com/blog/407279

  1 # $Id: $
  2 # please keep these sorted and up to date
  3 # Translator\uff1a \u788e\u77f3\u5934<http://sheng.javaeye.com wdmsyf@yahoo.com>
  4 
  5 about_dialog_image=aboutgcviewer.png
  6 about_dialog_title=\u5173\u4e8e <\u7ffb\u8bd1: http://sheng.javaeye.com>
  7 button_ok=\u786e\u8ba4
  8 button_cancel=\u53d6\u6d88
  9 
 10 fileopen_dialog_title=\u9009\u62e9GC\u65e5\u5fd7\u6587\u4ef6
 11 fileopen_dialog_read_file_failed=\u8bfb\u6587\u4ef6\u5931\u8d25\u3002
 12 fileopen_dialog_add_checkbox=<html>\u589e\u52a0\u6587\u5230<br>\u5f53\u524d<br>\u7a97\u53e3.</html>
 13 fileopen_dialog_hint_add_checkbox=<html>\u6b64\u9879\u9009\u4e2d\u65f6\uff0c\u4f1a\u5728\u5f53\u524d\u7a97\u53e3\u589e\u52a0\u4e00\u4e2a\u65b0\u6587\u4ef6\uff0c\u800c\u4e0d\u662f\u65b0\u5f00\u4e00\u4e2a\u7a97\u53e3\u6765\u6253\u5f00\u6587\u4ef6.</html>
 14 fileexport_dialog_title=\u5bfc\u51faGC\u65e5\u5fd7\u6587\u4ef6
 15 fileexport_dialog_csv=\u9017\u53f7\u5206\u9694\u6587\u4ef6 (*.csv)
 16 fileexport_dialog_txt=\u7eaf\u6587\u672c\u6587\u4ef6 (*.txt)
 17 fileexport_dialog_error_occured=\u53d1\u751f\u9519\u8bef.
 18 fileexport_dialog_write_file_failed=\u5199\u6587\u4ef6\u5931\u8d25.
 19 fileexport_dialog_confirm_overwrite=\u6587\u4ef6\u5df2\u5b58\u5728\uff0c\u8986\u76d6\u5417?
 20 urlopen_dialog_title=\u6253\u5f00GC URL
 21 urlopen_dialog_add_checkbox=\u589e\u52a0\u4e00\u4e2aURL\u5230\u5f53\u524d\u7a97\u53e3.
 22 urlopen_dialog_hint_add_checkbox=<html>\u6b64\u9879\u9009\u4e2d\u65f6\uff0c\u4f1a\u5728\u5f53\u524d\u7a97\u53e3\u589e\u52a0\u4e00\u4e2a\u65b0\u6587\u4ef6\uff0c\u800c\u4e0d\u662f\u65b0\u5f00\u4e00\u4e2a\u7a97\u53e3\u6765\u6253\u5f00\u6587\u4ef6.</html>
 23 
 24 
 25 main_frame_menu_file=\u6587\u4ef6
 26 main_frame_menu_mnemonic_file=F
 27 main_frame_menuitem_open_file=\u6253\u5f00\u6587\u4ef6
 28 main_frame_menuitem_mnemonic_open_file=O
 29 main_frame_menuitem_hint_open_file=\u6253\u5f00\u4e00\u4e2a\u6587\u4ef6
 30 main_frame_menuitem_open_url=\u6253\u5f00URL
 31 main_frame_menuitem_mnemonic_open_url=U
 32 main_frame_menuitem_hint_open_url=\u6253\u5f00\u4e00\u4e2aURL
 33 main_frame_menuitem_recent_files=\u6700\u8fd1\u7684\u6587\u4ef6
 34 main_frame_menuitem_mnemonic_recent_files=F
 35 main_frame_menuitem_hint_recent_files=\u6253\u5f00\u4e00\u4e2a\u6700\u8fd1\u4f7f\u7528\u8fc7\u7684\u6587\u4ef6
 36 main_frame_menuitem_add_file=\u589e\u52a0\u4e00\u4e2a\u89c6\u56fe
 37 main_frame_menuitem_mnemonic_add_file=A
 38 main_frame_menuitem_hint_add_file=\u589e\u52a0\u4e00\u4e2agc\u89c6\u56fe\u5230\u5f53\u524d\u7a97\u53e3
 39 main_frame_menuitem_refresh=\u5237\u65b0
 40 main_frame_menuitem_mnemonic_refresh=R
 41 main_frame_menuitem_hint_refresh=\u91cd\u65b0\u8f7d\u5165\u5f53\u524d\u6587\u4ef6
 42 main_frame_menuitem_watch=\u76d1\u89c6
 43 main_frame_menuitem_mnemonic_watch=W
 44 main_frame_menuitem_hint_watch=\u76d1\u89c6\u5f53\u524d\u6587\u4ef6\uff0c\u5982\u679c\u6709\u53d8\u5316\u65f6\u91cd\u65b0\u8f7d\u5165
 45 main_frame_menuitem_export=\u5bfc\u51fa
 46 main_frame_menuitem_mnemonic_export=E
 47 main_frame_menuitem_hint_export=\u5bfc\u51fa\u5f53\u524d\u6587\u4ef6
 48 main_frame_menuitem_exit=\u9000\u51fa
 49 main_frame_menuitem_mnemonic_exit=X
 50 main_frame_menuitem_hint_exit=\u9000\u51faGCViewer
 51 
 52 main_frame_menu_view=\u67e5\u770b
 53 main_frame_menu_mnemonic_view=V
 54 
 55 main_frame_menuitem_antialias=\u6297\u952f\u9f7f
 56 main_frame_menuitem_mnemonic_antialias=A
 57 main_frame_menuitem_hint_antialias=\u5728\u6e32\u67d3\u7ebf\u6761\u65f6\u4f7f\u7528\u6297\u952f\u9f7f\u529f\u80fd(\u53ef\u80fd\u4f1a\u5f71\u54cd\u6e32\u67d3\u901f\u5ea6) 
 58 
 59 main_frame_menuitem_show_data_panel=\u6570\u636e\u9762\u677f
 60 main_frame_menuitem_mnemonic_show_data_panel=D
 61 main_frame_menuitem_hint_show_data_panel=\u663e\u793a\u5f53\u524d\u6587\u6863\u8be6\u7ec6\u6570\u636e\u7684\u6570\u636e\u9762\u677f
 62 
 63 main_frame_menuitem_full_gc_lines=\u5168GC\u7ebf
 64 main_frame_menuitem_mnemonic_full_gc_lines=F
 65 main_frame_menuitem_hint_full_gc_lines=\u663e\u793a\u6bcf\u4e00\u6b21\u5168\u5783\u573e\u6536\u96c6\u7ebf
 66 main_frame_menuitem_inc_gc_lines=\u589e\u91cfGC\u7ebf
 67 main_frame_menuitem_mnemonic_inc_gc_lines=I
 68 main_frame_menuitem_hint_inc_gc_lines=\u663e\u793a\u6bcf\u6b21\u589e\u5783\u573e\u6536\u96c6\u7ebf
 69 main_frame_menuitem_gc_times_line=GC\u65f6\u95f4\u7ebf
 70 main_frame_menuitem_mnemonic_gc_times_line=L
 71 main_frame_menuitem_hint_gc_times_line=\u663e\u793a\u6807\u8bc6\u5783\u573e\u6536\u96c6\u6240\u8017\u65f6\u95f4\u7684\u7ebf
 72 main_frame_menuitem_gc_times_rectangles=GC\u65f6\u95f4\u77e9\u5f62
 73 main_frame_menuitem_mnemonic_gc_times_rectangles=R
 74 main_frame_menuitem_hint_gc_times_rectangles=\u663e\u793a\u6807\u8bc6\u5783\u573e\u6536\u96c6\u6d88\u8017\u65f6\u95f4\u7684\u77e9\u5f62
 75 main_frame_menuitem_total_memory=\u603b\u5806\u5927\u5c0f
 76 main_frame_menuitem_mnemonic_total_memory=T
 77 main_frame_menuitem_hint_total_memory=\u5df2\u5206\u914d\u603b\u5185\u5b58\u5927\u5c0f
 78 main_frame_menuitem_used_memory=\u5df2\u4f7f\u7528\u5806\u5927\u5c0f
 79 main_frame_menuitem_mnemonic_used_memory=U
 80 main_frame_menuitem_hint_used_memory=\u6b63\u5728\u4f7f\u7528\u7684\u5185\u5b58\u5927\u5c0f
 81 main_frame_menuitem_tenured_memory=\u7ec8\u751f\u4ee3\u5806\u5927\u5c0f
 82 main_frame_menuitem_mnemonic_tenured_memory=E
 83 main_frame_menuitem_hint_tenured_memory=\u7ec8\u751f\u4ee3(tenured generation)\u5bf9\u8c61\u6240\u5360\u7528\u5185\u5b58\u5927\u5c0f
 84 main_frame_menuitem_young_memory=\u65b0\u751f\u4ee3\u5806\u5927\u5c0f
 85 main_frame_menuitem_mnemonic_young_memory=Y
 86 main_frame_menuitem_hint_young_memory=\u65b0\u751f\u4ee3(young generation)\u5bf9\u8c61\u6240\u5360\u5185\u5b58\u5927\u5c0f
 87 
 88 main_frame_menu_window=\u7a97\u53e3
 89 main_frame_menu_mnemonic_window=W
 90 main_frame_menuitem_arrange=\u6392\u5217
 91 main_frame_menuitem_mnemonic_arrange=G
 92 main_frame_menuitem_hint_arrange=\u6392\u5217\u6240\u6709\u7a97\u53e3
 93 
 94 main_frame_menu_help=\u5e2e\u52a9
 95 main_frame_menu_mnemonic_help=H
 96 main_frame_menuitem_about=\u5173\u4e8eGCViewer
 97 main_frame_menuitem_mnemonic_about=A
 98 main_frame_menuitem_hint_about=\u663e\u793a\u5173\u4e8eGCViewer\u7684\u4fe1\u606f
 99 
100 data_panel_tab_pause=\u6682\u505c
101 data_panel_tab_summary=\u6982\u8981
102 data_panel_tab_memory=\u5185\u5b58
103 data_panel_acc_pauses=\u7d2f\u8ba1\u6682\u505c
104 data_panel_acc_fullgcpauses=\u7d2f\u8ba1\u5168GC
105 data_panel_acc_gcpauses=\u7d2f\u8ba1GC
106 data_panel_avg_pause=\u5e73\u5747\u6682\u505c
107 data_panel_avg_fullgcpause=\u5e73\u5747\u5168GC
108 data_panel_avg_gcpause=\u5e73\u5747GC
109 data_panel_min_pause=\u6700\u5c0f\u6682\u505c
110 data_panel_max_pause=\u6700\u5927\u6682\u505c
111 data_panel_total_time=\u603b\u65f6\u95f4
112 data_panel_footprint=\u6700\u5927\u5206\u914d\u5185\u5b58\u6570
113 data_panel_footprintafterfullgc=\u5168GC\u540e\u5185\u5b58\u5e73\u5747\u503c
114 data_panel_slopeafterfullgc=\u5168GC\u5761\u5ea6(Slope full GC)
115 data_panel_slopeaftergc=GC\u5761\u5ea6(Slope GC)
116 data_panel_footprintaftergc=GC\u540e\u5185\u5b58\u5e73\u5747\u503c
117 data_panel_throughput=\u541e\u5410\u91cf
118 data_panel_freedmemory=\u91ca\u653e\u5185\u5b58
119 data_panel_freedmemorypermin=\u91ca\u653e\u5185\u5b58/\u5206\u949f
120 data_panel_freedmemorybyfullgc=\u5168GC\u91ca\u653e\u5185\u5b58
121 data_panel_avgfreedmemorybyfullgc=\u5168GC\u5e73\u5747\u91ca\u653e\u5185\u5b58
122 data_panel_freedmemorybygc=GC\u91ca\u653e\u5185\u5b58
123 data_panel_avgfreedmemorybygc=GC\u5e73\u5747\u91ca\u653e\u5185\u5b58
124 data_panel_avgrelativepostgcincrease=GC\u540e\u5185\u5b58\u5e73\u5747\u589e\u91cf
125 data_panel_avgrelativepostfullgcincrease=\u5168GC\u540e\u5185\u5b58\u5e73\u5747\u589e\u91cf
126 data_panel_performance_fullgc=\u5168GC\u6027\u80fd
127 data_panel_performance_gc=GC\u6027\u80fd
128 
129 action_zoom=\u7f29\u653e
130 action_zoom_hint=\u7f29\u653e
131 
132 datareaderfactory_instantiation_failed=\u65e0\u6cd5\u8bc6\u522b\u6587\u4ef6\u683c\u5f0f.
133 datawriterfactory_instantiation_failed=\u4e0d\u652f\u6301\u7684\u6587\u4ef6\u683c\u5f0f:
134 
135 timeoffset_prompt=\u65e5\u5fd7\u5f00\u59cb\u65f6\u95f4:
136 
137 datareader_parseerror_dialog_message=GCViewer\u5728\u89e3\u6790\"{0}\"\u65f6\u9047\u5230\u95ee\u9898:
138 datareader_parseerror_dialog_title=\u89e3\u6790{0}\u51fa\u9519
139 
打包到 gcviewer-1.2X.jar 的 com\tagtraum\perf\gcviewer 路径下即可,注意文件名必须是 localStrings_zh.properties
posted @ 2012-01-11 13:22 周磊 阅读(1176) | 评论 (0)编辑 收藏
1重构改善既有代码的设计  
   大概看了不少了也实践了一些。主要是方法抽取的一些重构。感觉到现在来说做的项目什么设计啊都乱七八糟的,什么面向对象设计的,关系也都乱七八糟,总体来说我也是比较实用主义者,有些理论也只有一定情况才能试用,不过重构的话方法抽取啊这些还是很有用的,把方法写的和注释一样,读代码就和读注释差不多,那么目前把这些重构原则用好也差不多了

2Head_First
 设计模式的比较出名的书籍,场景将的很细致了,还是那句话,目前的项目都没有那么严格和大规模的设计,不过很多小的模块自己能用一些简单的设计模式也不错,就算没有真正需要扩展和一些性能的要求,提高了代码可读性也算不错了了。单例,工厂这些就不多说了,太普遍。现在享元也用了下,这次做自定义协议实现时候用的xml和命令对象的转换参照了commons beanutils 中convertUtils类型转换的设计,后来看了这书发现有点类似的命令模式。对于模式各方褒贬不一,我理解现在我这个阶段写代码能基本复用易读差不多了,能参考一些模式的思想吧代码结构优化好就行,模式不是用来生搬硬套的教条,只要你这个代码结构能应对这个系统的需求变化就行。

3Java敏捷开发
 看这本主要还是看一些重构和提高代码可读性的一些东西,变量方法命令等等。

最后之所以这个读书计划没有时间,主要是我觉得看书是为了更好的再工作中实践,提高质量。用到什么了需要了就在这些里面去找方案,而不是要一口气把书看完,那么也没有太大的价值
posted @ 2012-01-03 00:25 周磊 阅读(190) | 评论 (0)编辑 收藏
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2012-01-03 00:07 周磊 阅读(49) | 评论 (0)编辑 收藏