http://hllvm.group.iteye.com/group/wiki?category_id=316
posted @
2012-07-08 10:17 周磊 阅读(288) |
评论 (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 周磊 阅读(3348) |
评论 (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) |
编辑 收藏
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 周磊 阅读(4128) |
评论 (0) |
编辑 收藏
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 周磊 阅读(1436) |
评论 (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) |
编辑 收藏
posted @
2012-03-01 11:52 周磊 阅读(149) |
评论 (0) |
编辑 收藏
1 strtus2无法加载jar中的注解配置的action
2 spring3.1的cache标签报空值错误
posted @
2012-02-28 23:27 周磊 阅读(154) |
评论 (0) |
编辑 收藏
posted @
2012-02-27 10:29 周磊 阅读(113) |
评论 (0) |
编辑 收藏
最简单的一招是删除"c:/windows/java.exe",win7是在system32目录下,这样就可以修复了
如果不行继续删除javaw.exe和javaws.exe
posted @
2012-02-26 13:08 周磊 阅读(434) |
评论 (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) |
编辑 收藏
posted @
2012-02-10 15:06 周磊 阅读(193) |
评论 (0) |
编辑 收藏
org.ralasafe.servlet.UserTypeInstallAction
org.ralasafe.servlet.RalasafeController
posted @
2012-02-10 11:14 周磊 阅读(129) |
评论 (0) |
编辑 收藏
posted @
2012-02-09 19:52 周磊 阅读(168) |
评论 (0) |
编辑 收藏
posted @
2012-02-09 15:49 周磊 阅读(154) |
评论 (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) |
编辑 收藏
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) |
编辑 收藏