图一:图二:鸭子对象,会游泳、会叫、会飞(变天鹅之后),但不是所有的鸭子都能飞(当它还是丑小鸭的时候),初步设计如图一。这并不是一个复用性好的设计,有更好的解决方案(图二)。原则是:1.找出应用中可能需要变化的地方,把它们独立出来,不要和那些不需要变化的代码混在一起;2.针对接口编程;3.多用组合少用继承;图二就是最简单的策略模式(StrategyPattern):定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
系统 2019-08-29 22:34:08 2899
效果如下:实现方式:在权限对象中加入一个标识属性,例如:@TransientprivateIntegerisCheck;//是否选中,就为了不用Spring标签,我容易么.0为未选中publicAdminPermission(){isCheck=0;}通过构造函数,为其设置默认值。在相关的Service中,用全部权限和角色拥有的权限作对比,如下:publicListfindAdminHasPermissonsByRoleI
系统 2019-08-12 09:30:27 2899
JasperReports的开发流程1.开发报表设计文件,也就是一个*.jrxml文件。2.使用JasperReports提供的JasperCompileManager工具编译*.jrxml文件,编译后生成一个*.jasper文件。3.使用JasperReports提供的JasperFillManager工具填充编译后的*.jasper文件,填充后生成一个*.jrprint文件。4.使用导出管理器JasperExportManager或者各种格式的文件导出
系统 2019-08-12 09:30:06 2899
#1.查询语句中使用函数@1.round(d1,d2)用于数字的四舍五入d1表示数字d2表示小数点后的位数(d2不写默认为零)@2.trunc(d1,d2)截取去尾法@3.日期函数sysdateselectsysdatefromdual;----获取系统当前时间@4.日期数据相减,得到两个日期之间的天数差不足一天用小数表示@5.months_between(d1,d2)得到d1,d2两个日期数据之间所差的月份小数表示@6.计算d2个月之前的时间点add_m
系统 2019-08-12 01:52:38 2899
(一)inline函数(摘自C++Primer的第三版)在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。inlineintmin(intfirst,intsecend){/****/};inline函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。与非inline函数不同的是,inline函数必须在调用该函数的每个文本文件中定义。当然,对于同一程序的不同文件,如果inline函数出现的话,其定义必须相同。对于由两
系统 2019-08-12 01:33:19 2899
python应用thrift----thrift的监控fb303-importcoding_dog----by坚毅的刀刀-博客大巴ython应用thrift----thrift的监控fb303-[coding]2011-08-18版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://shenguanpu.blogbus.com/logs/156741276.htmlfb303在thrift的源码包contrib之中*Whatdoes
系统 2019-08-12 01:32:55 2899
原文地址:http://blog.csdn.net/ariesjzj/article/details/8764102好的操作系统必然要有好的内存管理系统来支持。好的内存管理系统就像一个艺术品,因为在其中我们可以看到空间优化和时间优化的完美平衡(既要省内存又要分配和释放足够快)。Linux为我们提供了这样一个范例,关于它的内存管理在很多讲kernel的书都可以找到。但在这一切还没有建立起来时,系统又是怎么工作的呢?在系统启动时内存分配大致经历了这样几个阶段(
系统 2019-08-12 01:32:34 2899
在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行,那么就需要获取当前进程的目录位置,这就需要使用函数GetCurrentDirectory获取当前进程所有在的目录。同时也可以使用SetCurrentDirectory函数来改变进程的当前目录。函数GetCurrentDirectory和SetCurrentDirectory声明如下:WINBASEAPIDWORDWINAPIGetCurrentDirectoryA(__
系统 2019-08-12 01:32:32 2899
1.克隆Debian系统如果使用的Debian系统只有使用apt安装的软件包,可以使用下面的脚本来安装一个完全一样的新系统。#在源主机上dpkg--get-selections>selectfile#在另一台使用相同source.list的计算机上dpkg--set-selections
系统 2019-08-12 01:32:03 2899
ncrontab-Crontabfor.NET-GoogleProjectHostingAlibrarywritteninC#3.0thatprovidesthefollowingfacilities:ParsingofcrontabexpressionsFormattingofcrontabexpressionsCalculationofoccurrencesoftimebasedonacrontabscheduleThislibrarydoesnotp
系统 2019-08-12 01:31:59 2899