Jun
24
话说有一个银行,有三个窗口,但是每个窗口的智能都是一样的,即都能办理所有的业务。因此每位来银行办理业务的人只要排队就是了,排到你了,就向业务员说明你要办理的业务,然后业务员根据你的业务选择不同的单据,打开不同的账本。……。
业务员此时典型的工作流程是:
业务员此时典型的工作流程是:
if (service instanceof Saving){
//存款
......
}else if (service instanceof Draw){
//提款
......
}else if (service instanceof Fund){
//基金
......
}
......
//存款
......
}else if (service instanceof Draw){
//提款
......
}else if (service instanceof Fund){
//基金
......
}
......
Jun
23
一 定义
One Page, One Application(后面缩写为OPOA,或者1P1A), 含义很简单:一个页面就是一个应用。不再使用iframe, 页面提交不能再使用submit方式。
在众多的基于Web的MIS系统中,没有人关心页面的组织形式;大多数稍微复杂的MIS系统,都采用分祯(Frame)的方式来组织页面,这样,在进行业务操作的时候,url的变化表现在一个框架页面内,从浏览器的地址看起来,只有一个地址;更有甚者,一些应用干脆弹出一个去掉了浏览器菜单、工具条、地址栏、状态栏的窗口(比如招商银行、民生银行的网上银行系统),连地址都看不见。因此,一个页面就是一个应用,从用户的角度来说,对于操作型系统,是一种非常自然的体现。用户无需了解每一个具体的操作对应的地址是什么。
这种设计背后的含义实际是:是希望由程序来控制用户的行为,还是反过来。在操作型系统中,每一步的操作往往被业务含义严格定义,无论是应用的设计者,还是其使用者,都希望在一种受控的状况下来进行操作。例如,一个审批动作,用户更希望是通过一个按钮来触发,而不是访问类似于/approve.action?itemid=123的方式。
这样的好处是:很多东西,例如:JS,CSS,HEAD等整个系统都只需加载一次。加快响应速度。客户体验也有所提高,不再弹出窗口,不再整个页面进行刷新。
One Page, One Application(后面缩写为OPOA,或者1P1A), 含义很简单:一个页面就是一个应用。不再使用iframe, 页面提交不能再使用submit方式。
在众多的基于Web的MIS系统中,没有人关心页面的组织形式;大多数稍微复杂的MIS系统,都采用分祯(Frame)的方式来组织页面,这样,在进行业务操作的时候,url的变化表现在一个框架页面内,从浏览器的地址看起来,只有一个地址;更有甚者,一些应用干脆弹出一个去掉了浏览器菜单、工具条、地址栏、状态栏的窗口(比如招商银行、民生银行的网上银行系统),连地址都看不见。因此,一个页面就是一个应用,从用户的角度来说,对于操作型系统,是一种非常自然的体现。用户无需了解每一个具体的操作对应的地址是什么。
这种设计背后的含义实际是:是希望由程序来控制用户的行为,还是反过来。在操作型系统中,每一步的操作往往被业务含义严格定义,无论是应用的设计者,还是其使用者,都希望在一种受控的状况下来进行操作。例如,一个审批动作,用户更希望是通过一个按钮来触发,而不是访问类似于/approve.action?itemid=123的方式。
这样的好处是:很多东西,例如:JS,CSS,HEAD等整个系统都只需加载一次。加快响应速度。客户体验也有所提高,不再弹出窗口,不再整个页面进行刷新。
Jun
22
许多事情,只有要经历过之后才会懂得放弃
一如感情,爱的时候伤的遍体鳞伤,不一定就会刻苦铭心,有些事情"只可远视而不可近瞧的"!
学会放弃,生活就会比较容易.
学会放弃,在落泪以前转身离去.
学会放弃,在天黑以前携阳归去.
......
一如感情,爱的时候伤的遍体鳞伤,不一定就会刻苦铭心,有些事情"只可远视而不可近瞧的"!
学会放弃,生活就会比较容易.
学会放弃,在落泪以前转身离去.
学会放弃,在天黑以前携阳归去.
......
Jun
20
业务场景,Department和Employee是一对多关系。现在我对Department进行分页查询,要求在显示的页面上同时显示每个Department中Employee的数量。这是一个很简单的业务场景,但是想象一下如何用hibernate进行映射?
首先否定一种做法:hql:FROM Department department。然后针对每个department,去做department.getEmployees().size()。这样不仅会发送n+1条SQL,而且性能太低。
我们肯定希望采用一句HQL解决问题,但是此时问题来了,当你试图做SELECT department, count(employee.id) FROM .....这样的HQL时,在Java端,发现没有一个合适的对象可以映射。
首先否定一种做法:hql:FROM Department department。然后针对每个department,去做department.getEmployees().size()。这样不仅会发送n+1条SQL,而且性能太低。
我们肯定希望采用一句HQL解决问题,但是此时问题来了,当你试图做SELECT department, count(employee.id) FROM .....这样的HQL时,在Java端,发现没有一个合适的对象可以映射。
Jun
18
1. 在struts-config.xml里,以插件的形式
xml 代码
这种方式如果没有配置contextConfigLocation的值,则会自动加载xx-servlet.xml.
xx的值是和web.xml里的配置org.apache.struts.action.ActionServlet的servlet-name的值一样
如下:xx的值也就是 action,所以会自动加载action-servlet.xml
xml 代码
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"/>
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
这种方式如果没有配置contextConfigLocation的值,则会自动加载xx-servlet.xml.
xx的值是和web.xml里的配置org.apache.struts.action.ActionServlet的servlet-name的值一样
如下:xx的值也就是 action,所以会自动加载action-servlet.xml
Jun
17
出人意料,去年哈佛最受欢迎的选修课是"幸福课",听课人数超过了王牌课《经济学导论》。教这门课的是一位名不见经传的年轻讲师,名叫泰勒·本-沙哈尔。在一周两次的"幸福课"上,本-沙哈尔没有大讲特讲怎么成功,而是深入浅出地教他的学生,如何更快乐、更充实、更幸福。
本-沙哈尔自称是一个害羞、内向的人。"在哈佛,我第一次教授积极心理学课时,只有8个学生报名,其中,还有2人中途退课。第二次,我有近400名学生。到了第三次,当学生数目达到850人时,上课更多的是让我感到紧张和不安。特别是当学生的家长、爷爷奶奶和那些媒体的朋友们,开始出现在我课堂上的时侯。"
本-沙哈尔成了"哈佛红人"。校刊和《波士顿环球报》等多家媒体,报道了积极心理学课在哈佛火爆的情景。
"幸福课"为何会在哈佛大受欢迎?
一、我们越来越富有,可为什么还是不开心呢?
"我曾不快乐了30年。"本-沙哈尔这样说自己。
他也是哈佛的毕业生,从本科读到博士。在哈佛,作为三名优秀生之一,他曾被派往剑桥进行交换学习。他还是个一流的运动员,在社团活动方面也很活跃。但这些并没有让他感到持久的幸福。他坦言,自己的内心并不快乐。
"最初,引起我对积极心理学兴趣的是我的经历。我开始意识到,内在的东西比外在的东西,对幸福感更重要。通过研究这门学科,我受益匪浅。我想把我所学的东西和别人一起分享,于是,我决定做一名教师。"
本-沙哈尔自称是一个害羞、内向的人。"在哈佛,我第一次教授积极心理学课时,只有8个学生报名,其中,还有2人中途退课。第二次,我有近400名学生。到了第三次,当学生数目达到850人时,上课更多的是让我感到紧张和不安。特别是当学生的家长、爷爷奶奶和那些媒体的朋友们,开始出现在我课堂上的时侯。"
本-沙哈尔成了"哈佛红人"。校刊和《波士顿环球报》等多家媒体,报道了积极心理学课在哈佛火爆的情景。
"幸福课"为何会在哈佛大受欢迎?
一、我们越来越富有,可为什么还是不开心呢?
"我曾不快乐了30年。"本-沙哈尔这样说自己。
他也是哈佛的毕业生,从本科读到博士。在哈佛,作为三名优秀生之一,他曾被派往剑桥进行交换学习。他还是个一流的运动员,在社团活动方面也很活跃。但这些并没有让他感到持久的幸福。他坦言,自己的内心并不快乐。
"最初,引起我对积极心理学兴趣的是我的经历。我开始意识到,内在的东西比外在的东西,对幸福感更重要。通过研究这门学科,我受益匪浅。我想把我所学的东西和别人一起分享,于是,我决定做一名教师。"
Jun
16
Session 接口:
Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session 对象,如果Session 的开销太大,会给系统带来不良影响。但值得注意的是Session 对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。
在Hibernate 的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate 的session不同于JSP应用中的HttpSession。当我们使用session这个术语时,我们指的是Hibernate 中的session,而我们以后会将HttpSesion 对象称为用户session。
Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session 对象,如果Session 的开销太大,会给系统带来不良影响。但值得注意的是Session 对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。
在Hibernate 的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate 的session不同于JSP应用中的HttpSession。当我们使用session这个术语时,我们指的是Hibernate 中的session,而我们以后会将HttpSesion 对象称为用户session。






