自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小何才露尖尖角

记录软件开发知识

  • 博客(204)
  • 资源 (11)
  • 收藏
  • 关注

原创 结构型设计模式(2):桥接模式

动机有些时候一个抽象应该有不同的实现,比如,保存数据时有两种方式,一种是文件方式,一种是数据库方式,通常的做法是继承保存数据的类,然后实现不同的保存方式。这样做的问题就是难于修改和扩展保存方式,运行时无法切换保存方式。定义桥接模式是软件设计模式中最复杂的模式之一,它将事物的抽象部分与它的实现部分分离,使它们都可以独立地变化。如“圆形”、“三角形”归于抽象的“形状”之

2013-04-17 16:14:28 1118

原创 结构型设计模式(1):适配器模式

定义适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起。有两类适配器模式:1. 对象适配器模式 - 对象适配器通过关联满足用户期待接口,还降低了代码间的不良耦合。在工作中推荐使用“对象适配”。2. 类适配器模式 - 这种适配器模式下,适配器继承自已实现的类

2013-04-17 16:13:10 999

原创 创建型设计模式(7):对象池模式

定义一个对象池是一组已经初始化过且可以使用的对象的集合,池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非销毁它。若初始化、实例化的代价高,且有需求需要经常实例化,但每次实例化的数量较少的情况下,使用对象池可以获得显著的效能提升。从池子中取得对象的时间是可预测的,但新建一个实例所需的时间是不确定。实现1. Reusable -

2013-04-17 16:11:28 2860

原创 创建型设计模式(6):原型模式

定义原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。实现1. Client - 创建一个新的对象,然后通过cl

2013-04-16 14:25:04 883

原创 创建型设计模式(5):建造者模式

定义又叫生成器模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。当创建复杂对象的算法应该独立于该对象的组成部分时,而且构造过程必须允许被构造的对象有不同的表示时。我们可以考虑使用建造者模式。实现1. Builder为创建一个Product对象的各个部件指定抽象接口。通常包含创建产品和返回产

2013-04-16 14:23:28 911

原创 创建型设计模式(4):抽象工厂模式

定义抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。“工厂”是创建产品(对象)的地

2013-04-16 14:19:31 794

原创 创建型设计模式(3):工厂方法模式

动机创建一个对象往往需要复杂的过程,所以不适合包含在一个复合工厂中,当有新的产品时,需要修改这个复合的工厂,不利于扩展。而且,有些对象的创建可以需要用到复合工厂访问不到的信息,所以,定义一个工厂接口,通过实现这个接口来决定实例化那个产品,这就是工厂方法模式,让类的实例化推迟到子类中进行。目的1. 定义一个接口,让子类决定实例化哪个产品。2. 通过通用接口创建对象

2013-04-15 14:20:38 897

原创 创建型设计模式(2):简单工厂模式

动机简单工厂模式是抽象工厂和工厂方法的基础和初步实现。目的1. 不向客户透露对象实例化的细节。2. 通过通用接口创建对象。实现实现非常简单:1. Client需要Product时,不使用new来创建,而是提供 Product 描述给Factory,让 Factory 提供一个新的 Product 。2. Factory实例化一个Product

2013-04-15 11:31:26 919

原创 创建型设计模式(1):单例模式

动机有时候只有一个类的实例是很重要的。比如,一个系统应该只有一个窗口管理实例。单例模式是最简单设计模式:类负责实例化自己,确保只有一个实例,并且提供一个访问这个实例的入口。目的1. 确保只有一个实例被创建。2. 提供访问这个实例的入口。实现使用final确保被创建一次,private的构造函数确保不被实例化。public的getInsta

2013-04-15 10:46:46 1043

原创 设计模式原则(6):迪米特原则

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.不和陌生人说话,就是说只和朋友说话,那么什么是朋友呢?1. 类中的函数。2. 类中函数的参数。3. 函数中实例化的对象。4. 类的成员变量。5. 类知道的全

2013-04-12 14:08:06 1076

原创 设计模式原则(5):接口隔离原则

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。就是说,“不应该强迫客户依赖于它们不用的方法。”再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。我们先看一个违反接口隔离的例子:public interface IWorker { public void

2013-04-12 14:07:01 986

原创 android4.2源码下载编译过程

1. 下载安装64位ubuntu11.10。2. 执行sudo passwd root生成root密码,(10.04版需要修改)修改/etc/gdm/gdm.schemas文件中的:bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pv

2013-04-11 21:08:02 3761 1

原创 设计模式原则(4):开闭原则

定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。对扩展开放,意思就是可以对类、模块和函数添加新的功能。对修改关闭,意思就是扩展时最好不要修改原来的类和函数等。下面的例子来自http://www.oodesign.com/open-close-principle.html先是一个不好的例子: class GraphicEditor { publi

2013-04-11 21:01:06 994

原创 设计模式原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。具体到Java中就是“面向接口编程”。例子:违法依赖倒置的情况public class Student { public void read(Book book){ System.out.println("学生开始阅读:"+book.getName()); }}pub

2013-04-11 14:07:10 807

原创 设计模式原则(2):里氏替换原则

里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。意思就是说,一个地方引用了父类,程序可以正常运行,如果把引用父类的地方换成子类,这个程序也应该能够正常运行。例子:public class Rectangle { int width; int height; public Rectangle(int w, int h){ width = w; heig

2013-04-10 14:39:54 920

原创 设计模式原则(1):单一职责原则

单一职责原则:一个类,只有一个引起它变化的原因。为什么需要单一职责原则?如果一个类有多个原因要去修改它,那么修改一个功能时,可能会让其他功能产生Bug,所以一个类最好只有一个职责。但实际应用中还是比较难实现的,我们只能是尽量符合这个原则。例子:public class Task { public File downloadFile(String path){

2013-04-09 17:53:30 786

原创 类的6大关系:依赖,关联,聚合,组合,泛化,实现

1. 依赖,Dependency,虚线+箭头(箭头指向依赖的对象)从字面上理解就是,一个类中的方法的实现依赖另外一个类,主要描述的就是类与类之间的使用关系。Java中依赖的对象以局域变量、方法的形参,或者对静态方法的形式出现。比如:学生类中有一个读书方法,这个方法需要一个书的对象,可以是方法的局部变量,也可以是参数。2. 关联,Association,实线+箭头(箭头指向关

2013-04-08 16:36:30 1450

原创 java RMI学习

Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。我们先写一个接口和服务端接口的实现,顺便写了一个可序列化的类

2013-03-14 17:13:28 1252

原创 java动态代理的学习

java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及实现类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到实现对象上反射执行(java反射机制学习),在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能。例子:package com.hebaijun;//接口public interface Image { p

2013-03-14 15:15:59 750

原创 java反射机制学习

JAVA反射机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉

2013-03-14 14:30:54 927

原创 堆排序

1)本例使用最小堆,downheap函数把frist位置的值放到合适的位置,让堆还是最小堆。2)刚开始要从最大的有孩子的位置开始执行downheap函数,把整个数组转换为最小堆。3)排序的方法是:取第一个元素(最小的)和最后一个元素交换,然后再转换少了一个元素的堆为最小堆,其实就是downheap交换上来的最后一个元素。4)取到最后就是一个递减的数组了,要递增就使用最大堆。#inc

2013-03-08 16:43:40 923

原创 快速排序

1)先用temp保存第一个位置的值,然后从后面开始找比temp小的值放到第一位。2)然后从前面开始找比temp大的值,放到前面一步找出那个小的值的位置。3)循环上面的步骤,直到完成整个数组。4)把用temp分开的数组分别进行上面的步骤,直到分开的数组只有一个值。#include #define N 9void quicksort(int a[], int first, int

2013-03-08 16:43:09 838

原创 归并排序

基本思路:递归拆分数组,直到只有一个元素,然后进行有序的合并。#include #define N 9void mergesort(int a[], int first, int last, int temp[]);void merge(int a[], int first, int mid, int last, int temp[]);void printarr(int a[]

2013-03-07 15:22:21 704

原创 冒泡排序

基本思路:1)从数组开头开始比较两个数,如果前面大于后面的数,那么交换这两个数。一次比较后,最大的数在N-1项。2)把最后比较的数设置为N-2项,从新开始比较。3)逐步递减,直到第一项。#include #define N 9void bubblesort(int a[], int n);void swap(int *x, int *y);void printarr(in

2013-03-07 15:21:45 677

原创 希尔排序

基本思路:1)将数组按照一个固定的增量分成若干部分,然后按照相隔的增量的元素进行直接插入排序。2)递减增量的值,继续进行插入排序。3)直到值为1时,进行最后一次直接插入排序。#include #define N 9void shellsort(int a[], int n);void swap(int *x, int *y);void printarr(int a[],

2013-03-07 15:21:09 766

原创 Activity的生命周期,状态保存,窗口显示,取得返回结果,安全退出

1. 怎么让activity窗口显示?在xml中的activity项添加:android:theme="@android:style/Theme.Dialog"2. 同一程序中,Activity A启动Activity B时周期方法的调用顺序是?1)A执行onPause。2)B执行onCreate - onStart - onResume3)如果A不可见了执行A的onS

2013-03-07 15:19:49 1415

原创 直接插入排序

基本思路:1. 从a[0]开始,也就是从1个元素开始是有序的,a[1]~a[n-1]是无序的。2. 从a[1]开始并入前面有序的数组,直到n-1。#include #define N 5void insertsort(int a[], int n);void swap(int *x, int *y);void insertsort(int a[], int n){ int

2013-03-06 14:37:46 692

原创 直接选择排序

基本思路:1. 从1开始通过对比找出最小的数的下标。然后把这个下标的值和0交换。2. 循环把值交换到1 2 3 ... n-1。#include #define N 5void selectsort(int a[], int n);void swap(int *x, int *y);void selectsort(int a[], int n){ int i,j; fo

2013-03-06 14:25:57 817

原创 Android中intent传递对象和Bundle的用法

android中的组件间传递的对象一般实现Parcelable接口,当然也可以使用java的Serializable接口,前者是android专门设计的,效率更高,下面我们就来实现一个Parcelabel。1. 创建一个类实现Parcelable接口,具体实现如下:package com.hebaijun.testparcelable;import android.os.Par

2013-03-06 14:14:33 60948 3

原创 Android签名和反编译的学习

1. 先创建一个基本的android程序,不修改任何代码,然后我们导出一个没签名的apk文件。步骤:右键项目 -> android tools -> Export Unsigned Application Package2. 使用keytool工具生成数字证书。这个工具在jdk的bin目录下。keytool -genkey -v -keystore "d:\hellosigne

2013-03-05 16:27:14 1224

原创 王爽《汇编语言》实验16:包含多个功能子程序的中断例程 解答

中断例程:assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset setscreen mov ax,0 mov es,ax mov di,200h mov cx,offset setscreenend-offset setscreen cld rep movsb mov ax,0 mov

2012-12-25 17:41:36 4459 8

原创 王爽《汇编语言》实验15:安装新的int 9中断例程 解答

assume cs:codestack segment db 128 dup(0)stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 mov ax,code mov ds,ax mov ax,0 mov es,ax mov si,offset int9 mov di,204h mov

2012-12-25 17:40:26 1542

原创 王爽《汇编语言》实验14:访问CMOS RAM打印日期和时间 解答

assume cs:codedata segment db '00/00/00 00:00:00','$' db 9,8,7,4,2,0data endscode segmentstart: mov ax,data mov ds,ax mov di,0 mov si,18 ;data中第二组数据 mov cx,6s: mov al,[si] out 70h,al

2012-12-20 23:20:01 3211 3

原创 王爽《汇编语言》实验13:编写、应用中断例程 - 模拟loop 解答

中断例程:assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset lp mov ax,0 mov es,ax mov di,200h mov cx,offset lpend-offset lp cld rep movsb mov ax,0 mov es,ax mov word pt

2012-12-20 23:19:25 1170

原创 替换android模拟器的Launcher程序

1. 启动模拟器。2. 命令行:adb shell 进入模拟机3. 执行 mount -o remount,rw /system 命令4. mv或者rm你需要替换的程序。5. ctrl+c退出模拟器6. adb push 本地路径 /system/app7. 点击模拟器的Home按钮,就可以启动你自己的launcher了。

2012-12-20 17:52:12 2888

原创 王爽《汇编语言》实验13:编写、应用中断例程 - 打印字符串 解答

中断例程:assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset prints mov ax,0 mov es,ax mov di,200h mov cx,offset printsend-offset prints cld rep movsb mov ax,0 mov es,ax

2012-12-19 23:03:37 2173

原创 王爽《汇编语言》实验12:编写0号中断的处理程序 解答

assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax mov di,200h mov cx,offset do0end-offset do0 cld rep movsb mov word ptr es:[0*4],200h mov word p

2012-12-19 21:39:36 3810

原创 王爽《汇编语言》实验11:编写子程序letterc 解答

assume cs:codesgdatasg segment db "Beginner's All-purpose Symbolic Instruction Code.",0datasg endscodesg segmentbegin: mov ax,datasg mov ds,ax mov si,0 call letterc mov ax,4c00h int 21h

2012-12-18 22:54:10 5767

原创 王爽《汇编语言》课程设计1

运行结果(减少了部分数据量,不影响程序):程序如下:assume cs:code;年份year segment db '1975','1978','1981','1984','1987','1990','1993','1995' year ends;收入income segment dd 16,1356,16000,97479,345980,1183000,375

2012-12-18 17:45:37 4079 5

原创 王爽《汇编语言》实验10:编写子程序dtoc 解答

assume cs:codedata segment ;保存转换后的ASCII db 10 dup(0)data endscode segmentstart: mov ax,12666 mov bx,data mov ds,bx mov si,0 call dtoc mov dh,8 mov dl,3 mov cl,2 call show_str mov a

2012-12-17 14:22:20 6905 1

masm5 汇编编译和连接工具

masm5 汇编编译和连接工具,解压到目录,然后命令行到这个目录,执行masm 1.asm就可以编译文件了。

2012-12-13

DOS622磁盘镜像

DOS622的磁盘镜像,包含3个文件,安装的时候依次选择

2012-12-13

计算机软件测试规范(值得看看)

计算机软件测试规范 计算机软件测试规范

2009-03-18

测试资料(包含测试用例、工具等)

测试资料,包含测试用例、测试工具、测试报告等文档。

2009-03-13

测试报告编写指南 软件测试

测试报告编写指南 测试报告编写指南 测试报告编写指南

2009-02-23

软件性能测试过程详解与案例剖析 软件测试

软件性能测试过程详解与案例剖析软件性能测试过程详解与案例剖析软件性能测试过程详解与案例剖析软件性能测试过程详解与案例剖析

2009-02-23

系统测试方案 系统测试方案

系统测试方案系统测试方案系统测试方案系统测试方案系统测试方案系统测试方案

2009-02-23

测试员培训速成教材 软件测试书籍,可以下载来看看。

软件测试书籍,可以下载来看看。软件测试书籍,可以下载来看看。

2009-02-23

help & manual 制作中的常见5个问题

第一次用help & manual,琢磨了几个星期,才有点了解。对于背景、链接文本等设置,也是用了相当长的时间才弄明白。弄明白后觉得挺容易,但开始不熟时,尤其是对这软件不熟的情况下使用,难度就大多了。我把我解决这几个问题的方法写下来,希望对需要用的人有帮助。

2009-01-12

软件测试与教训(pdf)

想对测试有更多的了解,那就下载来看看吧。

2009-01-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除