- 博客(41)
- 收藏
- 关注
原创 第9条:总是要改写toString
此约定不是很重要。JDK中就有很多类是没有重写toString方法的。但是,还是有些类重写了该方法,比如java.lang.StringBuffer。
2013-02-28 21:45:44 516
原创 第8条:改写equals时总是要改写hashCode
int java.lang.Object.hashCode()Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided byjava.util.Hashtable. The general contra
2013-02-28 21:38:51 680
原创 第7条:在改写equals的时候请遵守通用约定
boolean java.lang.Object.equals(Object obj)Indicates whether some other object is "equal to" this one. The equals method implements an equivalence relation on non-null object references:
2013-02-28 21:28:43 755
原创 第6条:避免使用终结函数
时间关键的任务不应该由终结函数来完成。如果你为某个对象定义了finalize() 方法,JVM 可能不会调用它,因为垃圾回收器不曾释放过那些对象的内存。调用System.gc() 也不会起作用,因为它仅仅是给 JVM 一个建议而不是命令。根据 Java 文档,finalize() 是一个用于释放非 Java 资源的方法。但是,JVM 有很大的可能不调用对象的finalize() 方法,因此很难
2013-02-27 22:40:42 530
原创 第5条:消除过期的对象引用
JDK里的java.util.Vector类,其方法removeElementAt的代码如下: public synchronized void removeElementAt(int index) { modCount++; if (index >= elementCount) { throw new ArrayIndexOutOfBoundsException(
2013-02-27 22:19:28 532
原创 第4条:避免创建重复的对象
String s = new String("silly");上面的代码,会创建一个新的String实例,每次都是新的内存地址,应该改为: String s = "silly";测试如下: String s1 = new String("silly"); String s2 = new String("silly"); System.out.println(s1
2013-02-26 21:45:57 457
原创 第3条:通过私有构造方法强化不可实例化的能力
企图通过将一个类做成抽象类来强制该类不可被实例化,这是行不通的。例如:public abstract class Child {}public class Boy extends Child {} Child c = new Boy(); 抽象类Child可以被子类化,也可以被实例化为Boy。而且,别人可能以为Child类就是为了继承而设计的。 publi
2013-02-26 21:23:36 494
原创 第2条:使用私有构造方法强化singleton属性
第一种方法:public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { }}第二种方法:public class Elvis { private static final Elvis INSTANCE = new Elvis()
2013-02-26 21:08:34 498
原创 第1条:考虑用静态工厂方法代替构造方法
静态工厂方法的一个好处是,与构造方法不同,静态工厂方法具有名字。例如:BigInteger要产生一个素数,那么public static BigInteger java.math.BigInteger.probablePrime(int bitLength, Random rnd)比构造方法好,好在代码的可读性。 静态工厂方法的第二个好处是,与构造方法不同,他们每次被调用的
2013-02-25 21:27:11 739
原创 java设计模式——访问者模式
《大话设计模式》第二十八章package ch28;public abstract class Element { public abstract void accept(Visitor visitor);} package ch28;public abstract class Visitor { public abstract void visit
2013-02-22 22:27:04 656
原创 java设计模式——解释器模式
《大话设计模式》第二十七章package ch27;public abstract class Expression { public void interpret(PlayContext context) { if (context.getContext().length() == 0) { return; } else { String playKe
2013-02-22 21:47:03 916
原创 java设计模式——享元模式
《大话设计模式》第二十六章package ch26;public class User { private String name; public User(String name) { this.name = name; } public String getName() { return name; }} package
2013-02-22 21:20:21 797
原创 java设计模式——中介者模式
《大话设计模式》第二十五章package ch25;public abstract class Country { protected UnitedNations mediator; public Country(UnitedNations mediator) { this.mediator = mediator; }} package ch2
2013-02-22 21:08:44 1823 1
原创 java设计模式——职责链模式
《大话设计模式》第二十四章package ch24;public class Request { private String requestType; private String requestContext; private int number; public int getNumber() { return number; }
2013-02-21 21:06:55 706
原创 java设计模式——命令模式
《大话设计模式》第二十三章package ch23;public class Receiver { public void action() { System.out.println("执行请求"); }} package ch23;public abstract class Command { protected Receiver rec
2013-02-21 20:58:48 773
原创 java设计模式——桥接模式
《大话设计模式》第二十二章package ch22;public abstract class HandsetSoft { public abstract void run();} package ch22;public class HandsetGame extends HandsetSoft { @Override public void
2013-02-21 20:35:39 942
原创 java设计模式——单例模式
《大话设计模式》第二十一章package ch21;/** * 单例模式 * @author Administrator * */public class Singleton { private static Singleton instance = null; private static final Object obj = new Object();
2013-02-20 20:39:27 484
原创 java设计模式——迭代器模式
《大话设计模式》第二十章迭代器模式太常见了。JDK中的例子如下:package ch20;import java.util.HashSet;import java.util.Iterator;import java.util.Set;/** * 迭代器模式 * @author Administrator * */public class Clie
2013-02-20 20:35:12 495
原创 java设计模式——组合模式
《大话设计模式》第十九章package ch19;public abstract class Company { protected String name; public Company(String name) { this.name = name; } public abstract void add(Company c); public ab
2013-02-20 20:26:46 1292
原创 java设计模式——备忘录模式
《大话设计模式》第十八章package ch18;public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; }}
2013-02-20 20:18:41 491
原创 java设计模式——适配器模式
《大话设计模式》第十七章package ch17;public abstract class Player { protected String name; public Player(String name) { this.name = name; } public abstract void attack(); public abstrac
2013-02-20 20:08:22 500
原创 java设计模式——状态模式
《大话设计模式》第十六章package ch16;public class Work { private int hour; private State state; private boolean finish = false; public Work() { state = new ForenoonState(); } public int
2013-02-19 21:18:35 585
原创 java设计模式——抽象工厂模式
《大话设计模式》第十五章package ch15;public class User { private int id; private String name; public User(String name) { this.name = name; } public int getId() { return id; } pu
2013-02-19 21:04:13 594
原创 java设计模式——观察者模式
《大话设计模式》第十四章package ch14;public abstract class Observer { public abstract void update();} package ch14;import java.util.LinkedList;import java.util.List;public abstract cla
2013-02-19 20:26:37 480
转载 JDK里的设计模式Examples of GoF Design Patterns
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamRea
2013-02-18 22:26:52 625
原创 java设计模式——建造者模式
《大话设计模式》第十三章 package ch13;public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult();}package ch13;
2013-02-18 22:23:43 526
原创 java设计模式——外观模式
《大话设计模式》第十二章package ch12;public class SubSystemOne { public void methodOne() { System.out.println("子系统方法1"); }} package ch12;public class SubSystemTwo { public void method
2013-02-18 22:10:42 432
原创 java设计模式——模板方法模式
《大话设计模式》第十章package ch10;public abstract class TestPaper { public abstract void answer1(); public abstract void answer2(); public abstract void answer3(); public void question1() {
2013-02-18 21:57:46 478
原创 java设计模式——原型模式
《大话设计模式》第九章package ch09;public class WorkExperience implements Cloneable { private String workDate = null; private String company = null; public String getWorkDate() { return workDate
2013-02-17 23:01:15 619
原创 java设计模式——工厂方法模式
《大话设计模式》第八章package ch08;public class LeiFeng { public void sweep() { System.out.println("扫地"); } public void wash() { System.out.println("洗衣"); } public void buyRice() {
2013-02-17 22:54:21 443
原创 java设计模式——代理模式
《大话设计模式》第七章package ch07;public abstract class Subject { public abstract void request();} package ch07;public class RealSubject extends Subject { @Override public void reque
2013-02-17 22:48:12 503
原创 java设计模式——装饰模式
《大话设计模式》第六章package ch06.b;public abstract class Component { public abstract void operation();} package ch06.b;public class ConcreteComponent extends Component { @Override p
2013-02-16 21:56:05 728
原创 java设计模式——策略模式
《大话设计模式》第二章package ch02;public interface Strategy { int compute(int money);} package ch02;/** * 七折 * @author Administrator * */public class ConcreteStrategy70 implement
2013-02-16 21:44:29 478 1
原创 java设计模式——简单工厂模式
《大话设计模式》第一章package ch01;public abstract class Operation { private double numberA = 0; private double numberB = 0; public double getNumberA() { return numberA; } public void setNumbe
2013-02-16 21:16:19 550
原创 自动生成C语言代码里的shellcode
花了点时间写代码来获取shellcode#!/bin/shobjdump -d $1 | awk -F ':|xor|mov|int' '{if(NR>7)print $2}' | sed 's/[ |\t]*$//g' | sed 's/\t/ /g' | sed 's/ /\\x/g' | sed 's/^/\"&/g' | sed 's/$/&\"/g'效果:[roo
2013-02-03 22:46:29 1929
原创 hello的shellcode
方法一,用mov,代码:;hello_mov.asmsection .data msg db "Hello, world!", 0xA len equ $ - msgsection .textglobal _start _start: mov edx, len mov ecx, msg
2013-02-03 16:48:10 990
原创 exit的shellcode
在linux下输入man 3 exit[root@localhost ~]# man 3 exit得到 NAME exit - cause normal process terminationSYNOPSIS #include void exit(int status);DESCRIPTION
2013-02-02 22:27:36 674
转载 DOS系统功能调用表(INT 21H)
AH功能调用参数返回参数00程序终止(同INT 20H)CS=程序段前缀 01键盘输入并回显 AL=输入字符02显示输出DL=输出字符 03异步通迅输入
2013-02-02 21:39:09 580
转载 Linux下的汇编语言之系统调用
即便是最简单的汇编程序,也难免要用到诸如输入、输出以及退出等操作,而要进行这些操作则需要调用操作系统所提供的服务,也就是系统调用。除非你的程序只完成加减乘除等数学运算,否则将很难避免使用系统调用,事实上除了系统调用不同之外,各种操作系统的汇编编程往往都是很类似的。在 Linux 平台下有两种方式来使用系统调用:利用封装后的 C 库(libc)或者通过汇编直接调用。其中通过汇编语言来直接调用系统
2013-02-02 21:30:42 942
原创 linux内核系统调用号
在文件/usr/include/bits/syscall.h里的是/* Generated at libc build time from kernel syscall list. */#ifndef _SYSCALL_H# error "Never use directly; include instead."#endif#define SYS__llseek
2013-02-02 21:25:03 1803
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人