Simple Java Profiler
Wednesday, October 29, 2008 5:20:52 AM
GetClasses.java
SimpleProfiler.java
/**
*
*/
package dtc.com.packageclass;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
/**
* @author DTC
*
*/
public class GetClasses {
/**
*
*/
public GetClasses() {
// TODO Auto-generated constructor stub
}
/**
*
* @param packageName
* @return
* @throws ClassNotFoundException
* @throws IOException
*/
public String[] getClasses(String packageName, String pathdir)
throws ClassNotFoundException, IOException {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
assert classLoader != null;
String path = pathdir + "\\bin\\"+ packageName.replace('.', '\\');
System.out.println(path);
File dir = new File(path);
File[] files = dir.listFiles();
ArrayList classes = new ArrayList();
for(int i=0;i<files.length;i++){
if (files[i].getName().endsWith(".class"))
classes.add(files[i].getName().substring(0, files[i].getName().length() - 6));
}
return (String[]) classes.toArray(new String[0]);
}
/**
*
* @param directory
* @param packageName
* @return
* @throws ClassNotFoundException
*/
private static List<Class> findClasses(File directory, String packageName)
throws ClassNotFoundException {
List<Class> classes = new ArrayList<Class>();
if (!directory.exists()) {
return classes;
}
File[] files = directory.listFiles();
for (File file : files) {
if (file.isDirectory()) {
assert !file.getName().contains(".");
classes.addAll(findClasses(file, packageName + "." + file.getName()));
} else if (file.getName().endsWith(".class")) {
classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6)));
}
}
return classes;
}
public void WriteClass(String packageName, String pathdir){
try{
String[] classes = getClasses(packageName, pathdir);
for(int i=0;i<classes.length;i++){
System.out.println(classes[i]);
}
}catch(ClassNotFoundException cnfe){
System.out.println(cnfe);
}catch(IOException ioe){
System.out.println(ioe);
}
}
public String[] getClasses(String pathdir, String packagename, String method){
ArrayList cls = new ArrayList();
try{
String[] classes = getClasses(packagename, pathdir);
for(int i=0;i<classes.length;i++){
boolean is = IsExistMethod(pathdir+"\\bin",packagename,classes[i],"main");
if (is){
cls.add(classes[i]);
}
}
}catch(ClassNotFoundException cnfe){
System.out.println(cnfe);
}catch(IOException ioe){
System.out.println(ioe);
}
return (String[]) cls.toArray(new String[0]);
}
private boolean IsExistMethod(String path, String packagename, String classname, String method){
File file = new File(path);
System.out.println(path);
System.out.println(packagename);
System.out.println(classname);
System.out.println(method);
try{
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader loader = new URLClassLoader(urls);
Class cls = loader.loadClass(packagename+'.'+classname);
System.out.println(packagename+'.'+classname);
Method[] methods = cls.getMethods();
for(int i=0; i<methods.length;i++){
if (methods[i].getName().indexOf(method)>=0){
System.out.println(methods[i]);
return true;
}
}
}catch(MalformedURLException me){
System.out.println(me);
}catch(ClassNotFoundException cnfe){
System.out.println("Class not found");
}
return false;
}
public long run(String path, String packagename, String classname){
System.out.println("Bat dau chay");
File file = new File(path+"\\bin");
System.out.println(path);
System.out.println(packagename);
System.out.println(classname);
Class[] argTypes = new Class[1];
argTypes[0] = String[].class;
try{
long start = System.currentTimeMillis();
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader loader = new URLClassLoader(urls);
Class cls = loader.loadClass(packagename+'.'+classname);
Method mainMethod = cls.getDeclaredMethod("main", argTypes);
Object[] argListForInvokedMain = new Object[1];
argListForInvokedMain[0] = new String[0];
mainMethod.invoke(null,argListForInvokedMain);
return System.currentTimeMillis()-start;
}catch(MalformedURLException me){
System.out.println(me);
}catch(ClassNotFoundException cnfe){
System.out.println("Class not found");
}catch(NoSuchMethodException nsme){
}catch(IllegalAccessException iae){
}catch(InvocationTargetException ite){
}
return 0;
}
}
SimpleProfiler.java
/**
*
*/
package dtc.com.profiler;
import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import dtc.com.packageclass.GetClasses;
/**
* @author DTC
*
*/
public class SimpleProfiler {
Display display = new Display();
Shell shell = new Shell(display);
String titte="Simple Profiler";
String pathtitle = "Select Path:";
String pathbtnname = "Browse";
String packtitle = "Input a package:";
String packbtnname = "Analyst";
String classtitle = "Class to run:";
String classbtnname = "Run";
int w_swt=425;
int h_swt=340;
public void init() {
// TODO Auto-generated method stub
giaodien();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
private void giaodien(){
shell.setText(titte);
shell.setSize(w_swt, h_swt);
final Text pathtext = new Text(shell, SWT.BORDER);
final Combo classtext = new Combo(shell, SWT.READ_ONLY);
final Text packtext = new Text(shell, SWT.BORDER);
final Text textarea = new Text(shell, SWT.BORDER | SWT.MULTI);
// Duong dan
Label pathlabel = new Label(shell, SWT.LEFT);
pathlabel.setText(pathtitle);
pathlabel.setLocation(10, 20);
pathlabel.setSize(100, 20);
pathtext.setLocation(110, 15);
pathtext.setSize(210, 20);
Button pathbtn = new Button(shell, SWT.PUSH);
pathbtn.setText(pathbtnname);
pathbtn.setLocation(330, 15);
pathbtn.setSize(80, 20);
pathbtn.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
DirectoryDialog dialog = new DirectoryDialog (shell, SWT.OPEN | SWT.MULTI);
dialog.setText("Select the local path");
String pathname = dialog.open();
pathtext.setText(pathname);
}
});
// Package name
Label packlabel = new Label(shell, SWT.LEFT);
packlabel.setText(packtitle);
packlabel.setLocation(10, 45);
packlabel.setSize(100, 20);
packtext.setLocation(110, 40);
packtext.setSize(210, 20);
Button packbtn = new Button(shell, SWT.PUSH);
packbtn.setText(packbtnname);
packbtn.setLocation(330, 40);
packbtn.setSize(80, 20);
packbtn.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
String dir = pathtext.getText();
String pack = packtext.getText();
GetClasses gcl = new GetClasses();
String[] classes = gcl.getClasses(dir, pack, "main");
if (classes.length>0){
classtext.setItems(classes);
}
}
});
// Class name
Label classlabel = new Label(shell, SWT.LEFT);
classlabel.setText(classtitle);
classlabel.setLocation(10, 70);
classlabel.setSize(100, 20);
classtext.setLocation(110, 65);
classtext.setSize(210, 20);
Button classbtn = new Button(shell, SWT.PUSH);
classbtn.setText(classbtnname);
classbtn.setLocation(330, 65);
classbtn.setSize(80, 20);
classbtn.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
String classname = classtext.getText();
String dir = pathtext.getText();
String pack = packtext.getText();
GetClasses gcl = new GetClasses();
long time = gcl.run(dir, pack, classname);
String msg = "Call to run " + pack+'.'+ classname + " took "+ time+ " ms";
textarea.setText(msg);
}
});
textarea.setLocation(10, 95);
textarea.setSize(398, 200);
}
}
/**
*
*/
package dtc.com.profiler;
/**
* @author DTC
*
*/
public class Excute {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleProfiler profiler = new SimpleProfiler();
profiler.init();
}
}
Kaizen
Monday, October 20, 2008 1:04:48 AM
10 nguyên tắc của Kaizen
1. Tập trung vào khách hàng
2. Luôn luôn cải tiến
3. Thừa nhận các vấn đề một cách thẳng thắn
4. Thúc đẩy sự cởi mở
5. Khuyến khích làm việc theo nhóm
6. Quản lý các dự án kết hợp các bộ phận chức năng
7. Nuôi dưỡng các quy trình quan hệ đúng đắn
8. Phát huy tinh thần tự rèn luyện
9. Thông báo đến mọi nhân viên
10. Tạo điều kiện cho mọi nhân viên
9 công cụ của Kaizen
1. Các hệ thống chỉ dẫn (Suggestion Systems)
2. Các chu kỳ kiểm soát chất lượng (Quality Control Circles)
3. Quản lý định hướng quá trình (Proccess Oriented Management)
4. Quản lý hữu hình (Visible Management)
5. Quản lý chéo các chức năng (Cross-functional Management)
6. Quản lý JIT (Just-in-time Management)
7. Kanban
8. Kiểm soát quá trình thống kê (Statistics Process Management)
9. Chu kỳ PDCA (The PDCA Circle)
1. Tập trung vào khách hàng
2. Luôn luôn cải tiến
3. Thừa nhận các vấn đề một cách thẳng thắn
4. Thúc đẩy sự cởi mở
5. Khuyến khích làm việc theo nhóm
6. Quản lý các dự án kết hợp các bộ phận chức năng
7. Nuôi dưỡng các quy trình quan hệ đúng đắn
8. Phát huy tinh thần tự rèn luyện
9. Thông báo đến mọi nhân viên
10. Tạo điều kiện cho mọi nhân viên
9 công cụ của Kaizen
1. Các hệ thống chỉ dẫn (Suggestion Systems)
2. Các chu kỳ kiểm soát chất lượng (Quality Control Circles)
3. Quản lý định hướng quá trình (Proccess Oriented Management)
4. Quản lý hữu hình (Visible Management)
5. Quản lý chéo các chức năng (Cross-functional Management)
6. Quản lý JIT (Just-in-time Management)
7. Kanban
8. Kiểm soát quá trình thống kê (Statistics Process Management)
9. Chu kỳ PDCA (The PDCA Circle)
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
|
| ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||







