`
atusoft
  • 浏览: 55173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
sudo apt-get install vim.  因为自带的vim不是完整版 sudo apg-get install vim-rails 提供语法补全 以及视图控制器跳转等功能 sudo apt-get install exuberant-ctags ctags  根据你的文件生成tags, 这样你就能按ctrl+] 跳到任意已有的文件 在你的rails 项目里ctags -R  生成tags 下载cvs svn git 插件, http://www.vim.org/scripts/script.php?script_id=90 下载project 插件 http://www ...
ui:insert 在模板文件中设定扩展点名称ui:define 在文件中设定扩展点的具体内容<ui:repeat value="#{fans} var="fan"><div class="faninfo">#{fan.name}</div></ui:repeat> 显示一个列表内容, 优于h:dataTableS:cache 将会cache 内容在serverS:convertDateTime 转化后台时间为本地server时间的格化后的字符串<h:inputText value=" ...
 #{person.name} 代表会取Person这个组件的name属性,需要在对应的action中用@in定义一个Person值域,从而注入Person. 同理@out指定输出字段<h:dataTable value="#{fans}" var="fan"><h:column><h:outputText value="#{fan.name}"/></h:column></h:dataTable> 相当于for each输出一个list@in @out就是Bijection双 ...
equals()方法的通用约定自反性(reflexivity) x.equals(x)=true对称性 x.equals(y)=true,则y.equals(x)=true传递性 x.equals(y)=true ,y.equals(z)=true,则x.equals(z)=true一致性 如果两个对象相等的话,则它们必须始终保持相等非空性,所有对象都必须不等于null改写equals必须改写hashCode,否则该类无法与基于hash的集合类一起工作实现comparable接口,就可与集合框架协作。若需要保持并扩展一个有comparable接口或者equals方法的类,需要编写另一个类,引用该 ...
把实际的存储和查询技术封装起来,仅为确实需要直接访问的聚合根提供仓储,让客户聚集于模型,把所有对象存储和访问的工作委托给仓储来完成仓储的优点:它们为客房提供了一个简单的模型,来获取持久对象并管理其生命周期它们把应用和领域设计从持久技术,多种数据库策略甚至多种数据来源解耦出来;它们传达了对象访问的设计决策它们可以很容易被替换为哑实现,以便在测试中使用(通常使用一个内存中的集合)仓储的关注点抽象类型,仓储包含一个特定类型的所有实例与客户解耦大有好处。可以自由修改仓储的实现和优化,便于测试让客户来控制事务工厂是创建新的对象,仓储是寻找旧的对象 
关联简化,从而让模型更清晰指定一个导航的方向加入限定符减少关联的多重性清除不必要的关联模型分为实体,值对象,服务对象三种实体应具有唯一标识(ID)来进行区分值对象则为只关心它们是什么,而不关心它们谁是谁的 ...
 linux目录架构/   根目录/bin    常用的命令 binary file 的目錄/boot   存放系统启动时必须读取的档案,包括核心 (kernel) 在内     /boot/grub/menu.lst   GRUB设置     /boot/vmlinuz   内核     /boot/initrd     核心解壓縮所需 RAM Disk ...
  1.Duplicated Code  代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。  2.Long method  它是传统结构化的“遗毒”。一个 ...
模式    i进入插入模式,在光标前插入,a则为光标后插入,用于在行尾时,o则另起一行O在上方另起一行    esc进入一般模式,再按一次会报警导航    hjkl 左下上右撤消重做    u撤消,c-r重做,U本行撤消编辑    j删除本行换行符    x删除    dd删除一行命令计数    命令前加一数字,即可重复执行该命令n次退出    ZZ,保存并退出    q!放弃保存并退出    e!放弃所有修改并重新载入原始内容    !表示强制执行本命令帮助    help xxx    ctrl-]可进入超链接    ctrl-o回到上一位置光标移动    w移动一个word    b向前移 ...
render(:partial=>"局部模板名", :collection=>集合名 局部模板以下划线开头,内部有一个与局部模板同名(没有下划线)的变量做为单个值 render中:object可接受一个对象做为参数传入局部模板 form_remote_tag :url=>{:action=>xxx,:id=>xxx} ajax提交form submit_tag 提交按钮,需要在do..end之间 javascript_include_tag 包括需要的javascript库,:defaluts rjs等 ...
代理就是内置一个类,然后调用该类的方法,但是依赖具体的接口或类.动态代理就是实现InvocationHandler 接口的一个类,在运行时通过反射得到被代理类的实例并调用其方法,在调用前后可加入某些方法的调用,即实现AOP. 客户端则可以选择适合被代理类去调用,即为控制反转.
继承java.util.EventObject(xxx), 提供一些get方法让客户端获取事件发生的信息。 继承java.util.EventListener(xxxListener), 实现xxxHappened(xxx) 在组件类里设一个Vector记录所有listener 实现addxxxListener, removexxxListener  建一个事件实例在你的组件中并初始化, 发送xxxHappened(xxx)到每个listener,即Observer模式中的通知所有的观察者调用自身的update方法。
尽可能少的实现原有的API,如果只是调用被封装组件的方法的话。即象一个adaptor. 实现setFont, setForground,setBackground,setCursor,setEnabled,setMenu,setToolTipText, 先调用parent的方法,再set值到被封装的组件 不要重新实现 setData, getData, parent的同方法将被客户端调用  考虑暴露被封装的组件,没有必要隐藏它们。 
A和B如果是is-a 的关系,那么使用继承。如果 是has-a,就应该是两个独立的类, 将所有类型的B封装成一个类, 通过setter设为A的一个属性,就是Strategy了, 这样可以在运行时视情况改变a的行为了。如果想在原有类的一个实例中动态增加属性或者做处理, 使用Decorator层层修饰,就象Inputstream一样。
http://www.zimbra.com 好象一套很不错的开源OA系统
Global site tag (gtag.js) - Google Analytics