- 博客(21)
- 资源 (4)
- 收藏
- 关注

原创 设计模式进阶之继承、接口、抽象类
首先我们从一个关于鸭子的案例来讨论面向对象之继承、接口和抽象类的关系 案例一: 这个是一个关于鸭子的游戏,实现各种形状和类别的鸭子都能够游泳和叫 案例分析: 依据对象的特性,开发人员Jim通过建立一个鸭子超类,然后在超类中实现swim、quake方法,然后定义一个抽象方法display(),用来处理不同鸭子的显示,子类通过继承超类从而拥有了鸭子的游泳和叫的行为,并通过实现抽象方法来显示鸭子的特性 案例的UML图: 案例的实现:
2011-05-25 22:59:00
1256
1
原创 Android 打包apk包
1. 怎么添加APK文件的图标以及设置APK文件的名称 在androidmanifest.xml中: 修改Icon对应的图标为打包的图标,然后修改String下的app_name名称为打包的名称
2011-08-08 09:38:23
169
原创 重构之简化条件表达式
条件逻辑有可能十分复杂,因此本章提供一些重构手法,专门用来简化它们。其中一项核心重构就是Decompose Conditional,可将一个复杂的条件逻辑分成若干小块。这项重构很重要,因为它使逻辑和操作细节的分离。 本章的其余重构手法可用以处理另一些重要问题,如果你发现代码中的多处测试有相同的结构,应该实施Consolidate Conditional Expression
2011-06-14 21:18:00
1508
原创 敏捷开发 故事墙
需求澄清后,SE把所有的故事卡贴到故事墙上,等待开发人员的开发。故事墙的模板为: 分析 : 需求澄清完成后,SE把所有的故事卡都贴到分析阶段 等待开发: 开发人员和SE确认了需求,明确了做什么以及怎么做以后,把故事卡从分析阶段移到等待开发 开发中 : 开发人员一次只开发一张故事卡,把相应开发的那张卡移植到开发中 阻塞 : 如果开发过程中,由于配合的
2011-06-12 16:15:00
5620
原创 敏捷开发 需求澄清
SE整理完一个迭代的需求以后,进入下一个流程需求澄清,需求澄清的主要目的是给开发人员澄清需求,确认开发点。 需求澄清的一般流程为: 1. SE给开发人员讲解需求点 2. 开发人员评论需求点是否合理,完善 3. 开发人员大致描叙实现该需求点的难点 4. 所有人员对该需求点进行评点,如果评的点不统一,则要评点多和少
2011-06-12 11:08:00
4832
原创 敏捷开发 迭代需求
迭代需求的整理是敏捷开发的第一步,也是敏捷开发很重要的一步,在这一步中我们需要把客户的业务需求按照优先级的顺序,整理成为一个个的迭代。然后把一个个的迭代拆成一个个可验收的故事卡。 在此需要说说什么是故事卡,故事卡和业务需求之间的关系。故事卡是一个个独立的,可验收的功能,一个业务需求可以拆分为多个故事卡。比如:我们常见的账号管理需求,需要对账号进行增、删,改、查。因为添
2011-06-12 10:11:00
4942
原创 敏捷开发 迭代流程
敏捷是一柄双刃剑,用的好能极大的提升开发效率,适应需求的变化!用的不好则会导致项目的混乱。现在很多公司都说自己在用敏捷开发,很多程序员也说自己懂敏捷开发!简单的认为敏捷就是站立会议,就是迭代的开发,到最后敏捷变成了混乱,然后开始说敏捷的不好等等。其实他们都只是表面上的敏捷,而没有真正的理解敏捷的含义。敏捷做为一种新的编程方法论,是有他一套完成的方法学的。 敏捷开发提倡迭代
2011-06-12 07:45:00
9611
1
原创 敏捷开发 慨叙
在开始写敏捷开发系列博客时,首先感谢伟大的软件设计师Martin Fower以及其他几位敏捷思想的创建人,是他们带给了我们新的编程思想,解决了毕业几年来一直困恼我的很多问题。 软件开发是一种对人类智慧的管理,对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元,这与冰冷的机器是不可比的,所以在中国的历史上,管理人是最难的工作;“学而优则仕”的观点就
2011-06-11 23:45:00
1292
原创 重构:第一个案例
在写重构的学习笔记之前,首先我们需要向伟大的软件设计师Martin Fowler致敬,是他带给了我们重构的思想,敏捷的思想。 重构--改善既有代码的设计。意味着对现有运行中的代码进行新的修改、设计。这对很多项目经理来说是不可思议的,因为他们一直奉行的是软件业的一句经典“如果代码可以运行,就不要去修改它”在这条“真理”的引导下,当出现新的功能,新的BUG的时候,后续的程
2011-06-07 15:07:00
1175
原创 Activity LifeCycle 生命周期
1. Android中Activity的调用机制 据我的了解,Android中Activity跳转的实现,主要是通过栈的先进后出的原理设计的。当新建一个Activit的时候,把它压入栈,然后按返回键的时候,就出栈。android设置了容纳Activity栈的大小,当超过某个值的时候,系统就自动会对其进行回收。具体怎么实现的,后续研究。 2. Android证明周期中的过程 程序第一次启动时的调用: onCreate ---> onStart() --> onResume
2011-05-29 16:01:00
987
原创 NDK mk 文件分析
通过分析一个例子来了解NDK makefile文件的生成。例子"hello JNI" ,由NDK提供的例子 A. 目录结构 jni目录:包含本地源文件,eg:'jni/hello-jni.c',该源文件实现了一个简单的共享库,实现了一个简单的本地方法,返回字符串给java 虚拟机 src目录:包含了工程的java源文件 B. mk源文件 LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE
2010-08-30 03:38:00
1945
1
原创 Android源码中添加 修改应用
第一部分:添加一个新的应用 1. 在和系统相同版本的SDK目录下开发自己的android应用 2. 把开发的android工程放到源码的packages/apps/目录下 3. 在工程目录下添加Android.mk文件,修改LOCAL_PACKAGE_NAME :=test001 把工程名指定为自己的工程名,我加载的工程为test001 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
2010-08-20 05:40:00
1873
原创 android ubuntu9.10 源码的编译 Eclipse工程 Contacts编译 应用加载
<br /><br />第一部分:编译环境的安装和编译<br />1. 安装ubuntu9.10系统<br />2. 把源码传到ubuntu,并解压<br />3. 安装编译环境<br /> A. sudo apt-get install bison<br /> B. sudo apt-get install vim<br /> c. 解决:安装JDK 5.0<br /> 1):根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里我们使用jdk5<br
2010-07-19 10:46:00
3063
1
原创 带参数执行sh
带参数执行sh mas@[172.16.9.38:/mas/shell/]$ cat shwithpara.sh #! /bin/bashcd $1ls 运行: ./shwithpara.sh /mas/bin 结果显示bin目录下的所有的
2008-05-27 10:05:00
1223
原创 SHELL四则运算和比较
四则运算和比较1.操作符(let 标志符)+ 加法- 减法* 乘法/ 除法** 幂运算 3 let "z=5**3"% 取模 b
2008-05-25 14:46:00
2867
原创 VI的基本操作
常用VI 编辑1 基本编辑指令(由指令模式进入编辑模式)1.1 Append(追加,既在原光标所在位置后面加入字符) a 从光标所在位置後面开始插入数据, A 从光标所在行的最後面开始插入数据1.2 Insert(插入,既在原光标所在位置前插入字符) i 从光标所在位置前面开始插入数据
2008-05-25 14:24:00
554
原创 长短信格式
长短信超长短信:短信内容超过70个汉字,提交给网关时候需要分成多条,但是用户手机接收时候是一条(sp角度,手机发送长短信概念一样)。 在cmpp协议里,CMPP-_SUBMIT消息定义中有相应的参数配置: TP_udhi :0代表内容体里不含有协议头信息 1代表内容含有协议头信息(长短信,push短信等
2008-05-21 20:03:00
3044
1
转载 #pragma
解析#pragma指令关键词: 字节对齐 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,
2008-05-21 10:08:00
491
原创 消息队列函数
1.消息队列结构体的定义typedef struct{ uid_t uid; /* owner`s user id */ gid_t gid; /* owner`s group id */ udi_t cuid; /* creator`s user id */ gid_t cgid; /* creator
2008-05-15 17:16:00
3053
原创 ipcs查看消息队列命令
修改消息队列大小:root:用户: /etc/sysctl.conf kernel.msgmnb =4203520 #kernel.msgmnb =3520 kernel.msgmni = 2878保存后需要执行 sysctl -p ,然后重建所有消息队列ipcs -q : 显示所有的消息队列ipcs -qt : 显示消息队列的创建时间,发送和接收最后一条消息的时间
2008-05-15 16:05:00
15112
转载 sizeof的解析
sizeof 使用 sizeof是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数. 最近在论坛里总有人问关于sizeof的问题,并且本人对这个问题也一直没有得到很好的解决,特别是对关于网络协议开发的时候,传的字节
2008-05-15 14:25:00
684
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人