摘要: M-Model模型层:表示数据和业务逻辑。模型层返回的数据是中立,一个模型可以为多个视图服务,如PC Web和移动Web前端。封装了应用程序的状态,因为HTTP是无状态协议。所以用户提交了之后,无法看到状态的改变,需要引入模型的状态,更新给视图。V-View视图层:用户看到和交互的界面。将模型内容展现给用户,接受来自模型的更新,将用户动作传递给控制层Controller。C-Controller控制层:接受用户输入并调用模型和视图响应请求。保持模型数据和前台界面视图的同步,观察者模式。定义应用程序的行为,将用户数据与模型的更新相映射,选择用于响应的视图。下面是结合Struts框架的MVC模型示 阅读全文
posted @ 2014-02-24 15:39 菜鸟程序员的奋斗& 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 设计模式6大原则(1)开闭原则:对拓展开放,对修改关闭(2)里氏替换原则:基类能被子类替换(3)依赖倒转原则:依赖于抽象,不依赖于具体(4)接口隔离原则:尽量分开设计接口(5)最少知道原则:功能模块实体尽量相互独立(6)合成复用原则:组合优于继承一、创建型模式:1.工场方法模式Factory实现对同一个接口的一些类的实例的创建2.抽象工场模式Abstract Factory工场类也用接口进行抽象,不同的需求,实现不同的工场类3.单例模式Singleton构造函数设成私有,防止外部直接new初始化。利用JVM类初始化只进行一次且是的线程安全。只提供一个public方法获取实例。Singleton 阅读全文
posted @ 2014-02-24 11:04 菜鸟程序员的奋斗& 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/zhangerqing一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:二、设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对 阅读全文
posted @ 2014-02-23 18:48 菜鸟程序员的奋斗& 阅读(394) 评论(0) 推荐(0) 编辑
摘要: jvm何时回收一个java对象所占的内存?当java对象失去引用时,JVM垃圾回收机制会清除他们,回收所占内存空间。java有没有内存泄漏?无用的内存没有被回收就是内存泄漏。C++内存泄漏:内存是由程序员显示回收,忘了回收会导致内存泄漏java内存泄漏:不可达对象由jvm回收不会导致内存泄漏,可达的但程序员不使用的对象会导致内存泄漏,其实就是浪费内存,占着空间自己又不用。数组的removeelement[--size]=null删除元素要把引用赋值为null,否则就内存泄漏自定义stack的popelementData[size]=null同样的道理jvm回收java对象内存细节垃圾回收的任务 阅读全文
posted @ 2014-02-23 11:10 菜鸟程序员的奋斗& 阅读(366) 评论(0) 推荐(0) 编辑
摘要: Set和Map的关系Set代表无序,不能重复的集合;Map代表Key-Value组成的集合,是一种关联数组。Map的Key要求是不能重复,没有顺序。把Map的所有Key组合起来就是Set。Set keySet();HashMap和HashSet原理HashMap底层是用数组链表存储的,元素是Entry。向HashMap添加时,由key的hashcode决定Entry存储位置,当两个Entry对象的key的hashcode相同时,由key的equals()方法返回值决定采用覆盖行为(返回true),还是在链表头添加新的Entry(返回false)。Collection values(),返回集合 阅读全文
posted @ 2014-02-22 12:08 菜鸟程序员的奋斗& 阅读(1107) 评论(0) 推荐(0) 编辑
摘要: 当变量编译时类型和运行时类型不同时,通过该变量访问它引用对象的实例变量时,实例变量的值由声明时的类型决定;但通过该变量调用它引用对象的方法时,由实际引用对象决定。调用被子类重写的方法:子类构造函数初始化,会隐式调用父类的无参构造函数,当子类重写了父类的方法并在父类的初始化中被调用的时候,因为方法由实际引用对象决定,也就是子类对象,会导致访问不到子类的变量的值。java对象是由构造器创建的吗?构造器只是负责java实例变量执行初始化,执行构造器代码之前,该对象内存已经被分配下来。默认情况:基本类型是0和false,引用类型是null。继承成员变量和成员方法的区别方法的行为总是表现出实际类型的行为 阅读全文
posted @ 2014-02-22 11:03 菜鸟程序员的奋斗& 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 编译时类型和运行时类型:编译时无法预知属于哪个类,需要用反射机制,运行时动态获取类的类型。获取class对象:类被JVM加载后,都会生成class对象。(1)使用Class类的forName方法,如class.forName("java.lang.String")(2)调用某个类的class属性,如Person.class(3)调用某个对象的getClass()方法使用反射创建对象1 private Object getObject(String clazzName) {2 Class clazz = Class.forName(clazzName);3 return cl 阅读全文
posted @ 2014-02-21 21:51 菜鸟程序员的奋斗& 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 类加载是指JVM 的类加载器把类的class文件读入内存,并创建java.lang.Class对象。类也是一种对象,所有类都是java.lang.Class的实例类的连接:验证类是否正确的内部结构;为类的静态Field分配内存,并设置默认值;把类的二进制数据的符号引用替换为直接引用。类的初始化:对静态Field进行初始化,初始化的时机:(1)创建类的实例:new创建,反射,反序列化等(2)调用某个类的静态方法(3)访问类的静态Field或赋值(4)反射机制创建Class.forName("Person")(5)初始化某个类的子类(6)java命令运行某个主类特例:final 阅读全文
posted @ 2014-02-21 21:02 菜鸟程序员的奋斗& 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 一个非面向对象编程的编译器产生的函数调用会引起所谓的前期绑定,C只有一种方法调用,那就是前期绑定。若在程序执行前进行绑定(如果有的话由编译器和连接程序实现)叫做前期绑定。后期绑定就是运行时根据对象的类型进行绑定。也叫做动态绑定或运行时绑定。java中除了static方法和final方法(private 方法属于final方法)之外,其他所有的方法都是后期绑定。 多态是一项让程序员“将改变的事物与未变的事物分离开来”的重要技术。 如果某个方法是静态的,它的行为就不具有多态性。 构造器初始化顺序:按声明顺序调用成员的初始化方法。 协变返回类型,它表示在导出类中的被覆盖方法可以返回基类方法的返回类. 阅读全文
posted @ 2012-11-07 19:44 菜鸟程序员的奋斗& 阅读(194) 评论(0) 推荐(0) 编辑
摘要: Yanghee 的算术题目http://acm.hdu.edu.cn/showproblem.php?pid=2515Problem DescriptionYanghee 是一个小学生。他的数学老师给全班同学布置了一道家庭作业,即根据一张不超过5000的n(n<50)个正整数组成的数表,两两相加得到n(n-1)/2个和,然后把它们排序。例如,如果数表含有四个数1,3,4,9,那么正确答案是4,5,7,10,12,13。Yanghee 做完作业以后和小伙伴们出去玩了一下午,回家以后发现老师给的数表不见了,可是他算出的答案还在。你能帮助Yanghee根据他的答案计算出原来的数表吗?Input 阅读全文
posted @ 2012-10-24 21:44 菜鸟程序员的奋斗& 阅读(298) 评论(0) 推荐(0) 编辑