`
nathan09
  • 浏览: 145228 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论
文章列表
对LSP的理解,之前只停留在表面,并未深入理解。表面理解是指认为LSP就是仅仅依靠面向对象多态的特性,在使用基类对象的地方都能使用子类对象简单的替换。这还不是严格的遵循LSP。真正的要遵循LSP原则,是必须子类和基类行为上的绝对一致。基于契约的设计可以很好的保证了对LSP的遵循。 下面简单的java代码,揭示了LSP真谛: package com.oop.lsp; public class Base { public void lspViolate(String s1, String s2) { } public void lspFollow(String s1, St ...
人的力量 •过程和技术对于项目的结果只有次要的影响,首要的影响是人。 •如果项目要取得成功,必须构建起具有合作精神、自组织的团队。 •凝聚在一起的软件团队是最强大的软件开发力量。 敏捷宣言 •人和交互 > 过程和工具 •可以工作的软件> 面面俱到的文档 •客户合作 > 合同谈判 •随时应对变化> 遵循计划 人和交互 >过程和工具 •沟通能力比技术能力更重要 •从小、免费工具入手,直到不能胜任再引入大工具 •团队构建比环境的构建更重要 可以工作的软件> 面面俱到的文档 •没有文档的软件是灾难,但过多的文档比 ...
函数型语言 •Erlang:大量使用并发的时候使用 协作式和抢占式 •协作多线程、协作式系统 –每个任务自动放弃控制 –同时执行的线程数无限制 –适合处理大量的仿真元素 线程与设计 •线程使你能够创建更加松 ...
控制器抽象层,包括抽象事件的定义及控制器的定义: public abstract class Event { private long eventTime; protected final long delayTime; public Event(long delayTime) { this.delayTime = delayTime; } public void start() { // Allows restarting eventTime = System.currentTimeMillis() + delayTime; } public boolean ...
XP(Extreme Programming) http://xprogramming.com/index.phpKISS(Keep it simple, Stupid!) http://en.wikipedia.org/wiki/KISS_principleYAGNI(You Aren't Going to Need It) http://www.artima.com/weblogs/viewpost.jsp?thread=36529Minimalism(LIM:Less is more) http://en.wikipedia.org/wiki/MinimalismUser st ...
内置注解 •内置注解 –@Override –@Deprecated –@SuppressWarnings •元注解 –@Target –@Retention –@Documented –@Inherited 编写注解处理器 •内置注解很少,打多时候,程序员自定义注解,并编写处理器处理它们 •使用的反射方法: –Class.getDeclaredMethods –Method.getAnnotation(见java.lang.reflect.AnnotatedElement,Class、Method、Field都实现了它) 注解元素可用的类型 ...
1、执行下面的SQL,找到被锁的表: select b.owner table_owner,b.object_name,c.username,c.sid,c.serial# from v$locked_object a,dba_objects b,v$session c where a.object_id=b.object_id and c.sid=a.session_id; 2、根据查询结果中每条记录的sid和serial#杀掉SESSION: alter system kill session '[sid],[serial#]';
枚举类型 特性 •继承自java.lang.Enum •values()返回枚举数组 •自动提供equals和hashCode方法 •自动实现Comparable和Serializable接口 •可以用==比较两个枚举值 •默认name()等同toString() •valueOf将字符串名称转换为枚举类型值 添加方法 •枚举定义必须在方法定义之前 •枚举定义结束后使用分号 •可以有构造函数和main函数 •可以覆盖toString • 枚举秘密 •编译后是一个final的class •values方法由编译器生成 •编译器生成带单个s ...
Left side (xx) of 'y' operation has null value. Operation not possible I have been seeing a lot of messages like this in my dotCMS logs: ?
论文: Martin Fowler: Continuous Integration http://www.martinfowler.com/articles/continuousIntegration.html (中译版:http://www.cnblogs.com/itech/archive/2010/07/12/1775785.html) 持续集成理论和实践的新进展: http://www.infoq.com/cn/articles/ci-theory-practice 乔梁专栏: http://www.infoq.com/cn/author/%E4%B9%94%E6%A2%81( ...
Maven内置变量说明: ${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} ${project.packaging} 打包类型,缺省为jar ${project.xxx} 当前pom文件的任意节点的内容
File •可表示文件也可表示目录 •相关类:FilenameFilter •相关功能: –list –listFiles io的装饰器模式 •一般先用缓冲装饰,再用其他装饰 •当使用DataOutputStream时,写字符串并且让DataInputStream能够恢复它的唯一可靠做法是用UTF-8编码,即使有writeUTF和readUTF方法 InputStream •典型用法: –DataInputStream in =new DataInputStream(new BufferedInputStream(new ByteArrayInput ...
详见以下测试代码及其注释: package test; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertSame; import static junit.framework.Assert.assertTrue; import java.lang.r ...
关于Java中使用容器的几个注意点 在看老代码时,看到一处使用HashSet的场景,检查了放入HashSet的类型参数,发现这个类型并没有重写equals和hashCode方法,这个后果的严重程度可想而知。就此暂时总结了以下几点,并配合测试代 ...
Build Number Maven Plugin的使用方法 1. Build Number Maven Plugin用于获取svn的版本及分支目录,可以将它们用于应用中 2.先在maven的setting.xml中添加仓库,用于下载该插件: <pluginRepository> <id>codehaus</id> <name>codehaus</name> <url>http://repository.codehaus.org</url> </plug ...
Global site tag (gtag.js) - Google Analytics