自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 JFinal分页总结

JFinal分页逻辑使用JFinal的getParaToInt(int index, Integer defaultValue)方法,获取页面表单传递过来的url参数传入参数getParaToInt(0,1),0是获取页面表单的第一个参数,1是如果第一个参数为空,就返回默认参数1然后把从页面获取的pageNumber和pageSize返回给User对象,使用setAttr()方法在页面显示出来使用模

2017-04-03 19:07:56 4013 2

原创 POI操作Excel总结

POI操作Excel总结POI需要导入jar包Maven项目POI导入相应的jar包<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version></dependency>POI实现导入Excle的内容和导出数据到Excle导入Excel数

2017-04-03 11:43:13 530

原创 JFinal上传头像总结

JFinal上传头像总结getFile文件上传 Controller 提供了 getFile 系列方法支持文件上传。 特别注意: 如果客户端请求为 multipartrequest( form 表单使用了 enctype=”multipart/form-data”),那么必须先调用 getFile 系列方法才能使 getPara 系列方法正常工作,因为 multipart request 需要通

2017-03-25 20:53:31 1204

原创 欢迎使用CSDN-markdown编辑器

总结配置JFinala在maven项目里导入JFinal的jar包,修改web.xml<filter><filter-name>jfinal</filter-name><filter-class>com.jfinal.core.JFinalFilter</filter-class><init-param><param-name>configClass</param-name><param-

2017-03-19 20:11:35 288

原创 学习笔记

Template EngineTemplate Engine的作用是吧sql语句写到模板中,这样用起来会非常的方便sql模块提供了#namespace、#sql、#q这三个专用指令管理sql使用步骤:new ActiveRecordPluginsetBaseSqlTemplatePath(…);设置sql文件路径把sql文件放到setBaseSqlTemplatePath指定的文件下addS

2017-02-11 15:38:27 435

原创 模版方法模式

定义:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。**模版模式是用来创建一个算法的模版。什么是模版?模版就是一个方法。这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。好莱坞原则好莱坞原则:别调用我们,我们会调用你。好莱坞

2017-01-20 20:42:17 222

原创 适配器总结

定义适配器模式:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。适配器有类适配器和对象适配器两种设计原则最少知识原则告诉我们要减少对象之间的交互,只留几个“密友”。 最少知识原则:只和你的密友谈话。意思是,当你正在设计一个系统,不管是任何对象,你都要注

2017-01-18 20:29:24 361

原创 适配器模式

定义:适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间适配器的作用:比如,欧洲的壁式插座是3孔的,而美国的一种笔记本电脑是2孔插头。而适配器位于美式插头和欧式插孔的中间,它的工作是将欧式插座转换成美式插座。或者这样认为:适配器改变了插座的接口,以符合美式电脑的需求。适配器就如同中间人,它让客户所发出的请求转换成厂商类能理解的请求更改鸭子例子 pub

2017-01-16 20:30:54 226

原创 命令模式总结

定义命令模式命令模式:将请求封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。要点:命令模式将发出请求的对象和执行请求的对象解耦在被解耦的两者之间时通过命令对象进行沟通的。命令对象封装了接受者和一个或一组动作调用者通过调用命令对象的execute()方法发出请求,这会使得接受者的动作被调用调用者可以接受命令当作参数,甚至在运行时动态的进行命令可以支持撤

2017-01-12 20:02:27 351

原创 笔记

第10章:并发第66条:同步访问共享的可变数据关键字Synchronized可以保证在同一时刻,只有一个线程可以执行一个方法,或者某一个代码块为了在线程之间进行可靠的通信,也为了互斥访问,同步是必要的当多个线程共享可变数据的时候,每个读或者写数据的线程都必须执行同步第67条:避免过度同步依据情况的不同,过度同步可能会导至性能降低,死锁,甚至不确定的行为通常应该在同步区域做尽可能少的工作

2017-01-11 20:14:32 243

原创 命令模式

命令模式命令模式定义:将“请求”封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作一个命令通过在特定接受者上绑定一组动作来封装一个请求。要达到这一点,命令对象将动作和接受者包进对象中。这个对象只暴露出一个execute()方法,当此方法被调用的时候,接受者就会进行这些动作。从外表看,其他对象不知道究竟哪个接受者进行了哪些动作,只知道如果调用excute方法,请求的

2017-01-10 19:51:13 204

原创 笔记

第8章:通用程序设计第45条:将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明第46条:for-each循环优于传统的for循环用for-each没有性能损失,甚至用于数组也一样for-each在简洁度和预防bug方面有着传统for循环无法比拟的优势三种情况无法使用for-each:过滤,装换,平行迭代 第47条:了解和使用类库使用标准类库,

2017-01-09 20:04:26 310

原创 工厂模式总结

工厂方法模式定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类的实例化推迟到子类抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类设计原则:依赖抽象,不要依赖具体类要点所有的工厂都是用来封装对象的创建简单工厂:虽然不是真正的设计模式,但仍不失为一个简单的方法,可以将客户程序从具体类解耦工厂方法使用继承:把对象的创建委托给子类,子类实现工

2017-01-08 14:51:50 287

原创 笔记

第6章:枚举和注解第30条:用enum代替int常量枚举类型:是指有一组固定的常量组成合法值的类型枚举提供了编译时的类型安全枚举是不可变的,因此,所有的域都应该为final的枚举中的switch语句适合给外部的枚举类型增加特定于常量的行为第31条:用实例域代替序数永远不要根据枚举的序数导出与它相关的联的值,而是要将它保存在一个实例域中第32条:用EnumSet代替位域因为枚举用在集合

2017-01-06 19:48:58 242

原创 代码实现

披萨店public abstract class PizzaStore{ public Pizza orderPizza(String type){ Pizza piaaa; pizza = createPizza(type); pizza.prepare(); pizza.bake(); pizza.cut()

2017-01-05 20:13:01 270

原创 笔记

第21条:用函数对象表示策略有些语言支持函数指针,代理,表达式,或者支持类似的机制,允许程序把“调用特殊函数的能力”储存起来并传递这种功能第22条:优先考虑静态成员类嵌套类是指被定义在另一个类的内部类嵌套类有4种:静态成员类、非静态成员类、匿名类和局部类第5章:泛型 Java1.5发行版本中增加了泛型(Generic)。在没有泛型之前,从集合中读取到的每一个对象都必须进行转换。如果有人不小

2017-01-04 19:44:15 536

原创 工厂模式的生产披萨例子

定义简单工厂简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。PizzaStore类,里面有orderPizza()方法。 这里是工厂的“客户”。PizzaStore现在通过SimplePizzaFactory取得比萨实例。SimplePizzaFactory类,里面有createPizza()方法。 这个创建方法通常声明为静态。 这个是建立比萨的“工厂”。Pizza里面有prepare

2017-01-03 20:30:13 2093

原创 笔记

第17条:要么为继承而设计,并提供文档声明,要么就禁止继承第18条:接口优于抽象类:现有的类很容易被更新,以实现新的接口接口是定义mixin(混合类型)的理想选择不严格的讲,mixin是指这样的类型:类除了实现它的基本类型(primary type)之外,还可以实现这个mixin类型,以表明它提供了某些可选择的行为接口允许我们构造非层次结构的类型框架类型层次对于组织某些是非常合适的,但是其他有

2016-12-30 19:33:04 228

原创 工厂模式

工厂模式定义:定义了一个创建对象的接口,但由子类决定实例化的类是哪一个。工厂方法让类吧实例化推迟到子类抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类把创建比萨的代码移动到另一个对象中,由这个新对象专职创建比萨Pizza orderPizza(String type){ Pizza pizza;//把创建的对象代码从orderPizza()方法中抽离。

2016-12-29 20:32:31 283

原创 笔记

第四章:类和接口第13条:使类和成员的可访问性最小化第一规则:尽可能的使每个类或者成员不被外界访问。私有的——只在声明该成员的顶层类内内部才可以访问这个成员包级私有——声明该成员的类的子类可以访问这个成员(但有一些限制)并且,声明该成员包内部的任何类也可以访问这个成员公有的——在任何地方都可以访问该成员第14条:在公有类中使用访问方法而非公有域第15条:使可变化性最小1. 不要提供任何会修改

2016-12-28 19:35:59 252

原创 装饰者模式总结

总结装饰者模式定义:动态的将责任附加到对象上。想要扩展功能,装饰者提供了有别于继承的另一种选择。前面模式的定义:策略模式:定义了算法族,分别封装起来,让算法的变化独立于使用算法的用你户。观察者模式:定义了对象之间的一对多的关系,这样一来,当一个对象改变状态时,它所有的依赖者都会被通知并自动更新。设计原则:1.封装变化2.多用组合少用继承3.针对接口编程,不针对实现编程4.为交互对象之间

2016-12-27 19:40:28 301

原创 笔记

第三章对所有对象动通用的方法:Object是一个具体类,但是设计它主要是为了扩展。8.覆盖equls时,请遵守通用约定。类的每个实例实际上是唯一的。不关心类是否提供了“逻辑相等”。超类已经覆盖了equals,从超类继承过来的行为对于子类也是合适的。类是私有的或者是包级私有的,可以确实它的equals方法不会被调用。在覆盖equals方法的时候,必须遵守它的通用约定,下面是约定内容:自反性,对

2016-12-26 19:38:33 250

原创 装饰者模式例子

装饰者模式例子星巴兹咖啡代码Beverage是个抽象类,有两个方法:setDescription()及cost()public abstrace class Beverage{ String description = "UnKnow Beverage"; //setDescription()已经在此类实现了,但是cost()必须在子类实现 public String getD

2016-12-22 19:59:02 328

原创 笔记

静态工厂方法与构造器不同的第一大优势在于,它们有名称。静态工厂方法与构造器不同的第二大优势在于,不必在每次调用他们的时候都创建一个心对象。静态工厂方法与构造器的第三大优势在于,它们可以返回原返回类型的任何子类型的对象。静态工厂方法的第四大优势在于在创建参数实例化的时候,它们使用代码更加简洁。静态工厂方法的主要缺点在于,类如果不含公有的或者受保护的构造器,就不能被子类化。第二个缺点在于它们与

2016-12-20 19:02:23 224

原创 装饰者模式

定义装饰者模式装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的代替方案。回顾上2章模式定义策略模式:定义了算法族,分别封装起来,让他们之间可以相互转换,此模式让算法的变化独立于使用算法的用户。观察者模式:定义了对象之间的一对多的关系,这样一来,当一个对象改变状态时,它所有的依赖者都会收到通知并自动更新。开放 - 关闭原则设计原则:类应该对扩展开放,对修改

2016-12-19 19:43:02 213

原创 笔记

javaweb的中文编码问题为什么要编码?因为:在计算机中储存信息的最小单元是1个字节,既8个bit,所以能表示的字节是0-255个 人类要表示的字符太多,无法用一个字节完全表示,要解决这个问题必须要有一个新的数据库char,而从char到byte必须编码。几种编码:ASCLLISO-8859-1GB2312GBKGB18030UTF-16UTF-8从使用中文的角度上,有I/

2016-12-16 19:41:33 226

原创 观察者模式总结

总结观察者模式定义:定义了对象之间的一对多的关系,这样一来,当一个对象发生改变时,它所有的依赖着都会被通知并自动更新。出版者+订阅者=观察者 观察者模式和订阅报纸是一样的,只是名称不一样:出版者改为“主题”(Subject)订阅者改为“观察者”(Observer)观察者模式的例子WeatherData气象站Subject是主题接口。所有的气象站组件都要实现Observer接口,这样,

2016-12-14 20:15:00 347

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-12-12 19:27:46 176

原创 实现气象站

Subject是主题接口,Observer所有的气象组建都实现此接口,布告板也建立一个共同的接口,只要实现display()方法。public interface Subject{ public void registerObserver(Observer o);//这2个方法都需要观察者作为变量,这个观察者是用来注册和删除的。 public void removeObserver(O

2016-12-10 19:21:09 567

原创 第一次贴代码

public class HelloWarld { public static void main(String[] args) { System.out.println("hello world"); }}

2016-12-08 20:56:55 252

原创 笔记

ClassLoader:ClassLoader顾名思义就是类加载器。ClassLoader是个抽象类,它有很多子类。ClassLoader设计了一种接待机制,上级委托接待机制。整个JVM提供了三层ClassLoader,可以分为两种类型,可以理解为接待服务的接待室和为会员服务的接待室两种。如何加载Class文件:一、找到.class文件并把这个文件包含的字节码加载到

2016-12-06 19:23:15 203

原创 观察者模式例子

观察者模式中有一个气象观测站的例子,此系统中的三个部分是气象站(获取实际气象数据的物理装置),WeatherData对象(追踪来自气象站的数据,并更新)和布告板(显示气象状况给用户看)。WeatherData对象就是一个主题,获取更新的数据,通知并更新它下面的三个布告板。我要做的就是建议一个应用,利用WeatherData对象获取数据,并更新三个布告板。WeatherData有getter

2016-12-04 20:04:57 360

原创 观察者模式

今天学观察者模式,这个模式可以帮助我的对象知道现在的情况,不会错过什么事。对象甚至可以在运行时绝对是否继续被通知。和观察者模式和报社订阅报纸是一样的。1,报社的工作就是出版报纸。2,订阅者来订阅报纸,只要报社出版了新的报纸,就会收到新报。只要订了报纸,他们就会一直给送。3,不想看的时候就取消订阅,他们就不会再送来。出版者+订阅者=观察者,只是名称不一样。出版社=主题,订阅者=观察者。观察者

2016-11-25 19:13:36 193

原创 设计模式之策略模式

策略模式这一章已经看完了,策略模式的定义:定义了算法族,分别把它们封装起来,让它们之间可以相互转换,此模式让算法的变化独立于使用算法的用户。每一只鸭子都有一个FlyBehavior和一个QuackBehavior,将飞行和叫声委托给它们代为处理。将两个类结合起来使用,就是鸭子例子一样这就是组合。这种做法和继承不同的地方在于,鸭子的行为不是继承来的,而是和适当的行为对象组合而来的设计原则:多

2016-11-22 20:24:48 191

原创 初学设计模式

今天学第一章设计模式,写一个简单的模拟鸭子应用。有3种鸭子,普通鸭,橡皮鸭,木头鸭。设计一个鸭子超类,让所有的鸭子都继承这个超类。是时候让鸭子能飞了。文中举了一个例子,一个程序员说:“我只要在Duck类中加上fly()方法,然后让所有的鸭子类都继承fly()方法就可以了”。但是可怕的事情发生了,他忽略了一件事:并非所有的鸭子都会飞,他在Duck超类中加上的新行为会使不适合该行为的子类也具有了该行为

2016-11-17 19:10:53 208

空空如也

空空如也

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

TA关注的人

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