- 浏览: 467741 次
- 性别:
- 来自: 北京
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
文章列表
电脑的各个配件之间的交互,都是通过主板完成的,如果没有主板,各个配件就必须自行相互交互。类似的,将配件都抽象成为一个类或者是子系统,那就相当于出现了多个类之间相互交互,而且交互很繁琐,类与类就耦合了, ...
问题引人:给系统加入权限控制,如普通人员可以查看本部门人员列表时,但是每个人员的工资信息,普通人员看不到。而部门经理可以看到
所有的权限系统都分为两个部分,一个是授权部分,一个是验证部分,为了理解它们,引人两个基本名词:安全实体和权限
安全实体:就是被权限系统检测的对象,比如工资数据
权限:就是需要被校验的权限对象,比如查看、修改等。
两者要一起描述才有意义。
授权:是指将对某些安全实体的某些权限分配给某些人员的过程。
验证:值判断某个人员对某个安全实体是否拥有某个或某些权限
多数采用数据库来存储授权过程产生的数据,也就是说:授权是向数据库添加数据,验证是从数据库中获取相应数据进行匹配。
假设 ...
问题引人:申请聚餐费用,申请人填写申请单,然后交给领导审阅,如果申请批准下来,领导会通知申请人,然后申请人去财务领费用,如果没有就罢了。项目经理、部门经理、总经理审批的费用额度不同。一般申请人并不知道到底是由谁来处理他的请求。
项目经理-》部门经理->总经理,也可能是部门经理->总经理,责任链是变化的。
不使用设计模式的解决方式:
package notusingMode;
public class FeeRequest {
//提交申请给部门经理
public String requestToProjectManager(String user,double fee){ ...
问题引人:继续导出数据的应用框架
讨论工厂方法模式时,提到了一个导出数据的应用框架。比如导出成文本格式,数据库备份形式,excel格式,xml格式等。
在工厂模式中,并没有讨论如何实现导出成文本、xml文件等,假如需求有以下:
1,导出的文件,不管什么格式,分为3部分,文件头,文件体和文件尾
2,在文件头,需要描述:分公司或门市点编号。导出数据的日期,对于文本格式,中间用逗号分隔。
3,文件体中,需要描述:表名称,然后分条描述数据。对于文本格式,表名称单独占一行,数据描述一行算一条数据,字段间用逗号分隔,
4,文件尾,需要描述:输出人
为简便起见,只实现导出成文本格式和Xml格式
要先将文件各个 ...
生活中的示例:组装电脑,如组装公司根据你的需求组装一个电脑(需要接触卖CPU、卖主板的)给你,这里的组装公司的角色就是外观模式。
分析将卖cpu等的电子市场视为一个系统,卖各个配件的视为模块,需求就变为:客户需 ...
问题引人:订阅报纸的过程:
订阅者---》邮局-----》报社 (订阅过程) ,当报社按照出报时间推出报纸时,将报纸交给邮局,邮局再交给订阅者,当报社有新报纸出版的时候,如何让多个订阅者知道呢?进一步抽象描述这个问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知,并进行相应的处理呢?------》观察者模式
定义:定义对象间的一种一对多的关系,当一个对象状态发生变化,依赖于此对象的所有对象都会得到通知,并自动更新。
一个报纸对象会有多个人阅读,当报纸状态改变时,需要通知所有的订阅者。这就是典型的一对多关系。
观察者模式将多个订阅者称为观察者,obeserver,多个观察者观 ...
引出:组装电脑例子,向电脑加入新硬盘,但电源和新的硬盘的电源接口不同,该如何?采用一个转换线,将电源的接口适配成为新的硬盘所需要的接口,那么这个转换线就是-----适配器(adapter)。还比如各种管道的转接头、不同制式的插座等。
notusingMode包里是日志的第一版,将日志保存在文件里,notusingMode2是日志的第二版,将日志保存在数据库中
package notusingMode;
import java.io.Serializable;
/*
* 日志对象模型,描述日志的,这个对象需要被写入文件,需要序列化
*/
public class LogMo ...
具体的实现代码见附件
问题引人:组装电脑,要选择机箱、电源、主板、CPU等,为了简单,只考虑主板和cpu。
主板和cpu都有型号,而且如果要组装cpu的针脚数和主板提供的cpu插口要匹配才行。客户负责选择cpu和主板,然后将这 ...
基于《研磨设计模式》,没什么实质突破,简单的记录一下
问题引人:考虑一个订单系统。该系统里有一个保存订单的业务功能,在这个功能里,用户有这样的需求当订单的预定产品数量超过1000的时候,就需要把订单拆成两份订单来保存,如果拆分后还是超过1000,继续拆分,直到每份订单的预定产品数量不超过1000。
一个订单,有个人订单和公司订单。不管什么类型的订单,都要能正常的处理,如何实现???不用模式的解决方案见notusingMode包,该解决方案的订单业务处理对象
必须知道订单 的具体实现类,才能进行处理,也难以扩展新的订单类型,
package notusingMode;
//既然要实现通用的订 ...
数组java中无多维数组,都是一维数组,多维数组可以看做是数组的数组。下面是一个利用数组打印类似杨辉三角中数字的例子package ch3;
/**
@version 1.20 2004-02-10
@author Cay Horstmann
*/
//不规则数组,数组的列数不同,打印类似杨辉三角
public class LotteryArray
{
public static void main(String[] args)
{
final int NMAX = 10;
// allocate triangular ...
设计4个线程,两个线程每次对j增加1,另外两个对j减少1
package thread;
public class ThreadTest {
private int j;
private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}
private synchronized void dec() {
j--;
System.out.println(Thread.curr ...
转自http://www.riabook.cn/doc/designpattern/ProducerConsumer.htmProducer Consumer模式与 Guarded Suspension 模式 是类似的,只不过Guarded Suspension模式并不限制缓冲区的长度,Producer Consumer模式假设所生产的产品放置在一个长度有限制的缓冲区(就像是一个产品桌,它可以摆放的空间是有限的),如果缓冲区满了,则生产者必须停止继续将产品放到缓冲区中,直到消费者取走了产品而有了空间,而如果缓冲区中没有产品,当然消费者必须等待,直到有新的产品放到缓冲区中。
以下是一个最简单的: ...
SQL的数据类型与Java 数据类型的对应关系2007-09-10 08:54由于数据库表字段类型没与Java数据类型对应好,引起程序错了,特找了其对应关系留记号。
下面显示了 SQL 数据类型和相应的 Java 数据类型。
SQL 数据类型 相应的 Java 数据类型
VARCHAR java.lang.String
CHAR java.lang.String
INTEGER Int 或 Integer
BINARY ...
对于GoF总结的经典的23中设计模式,分为3类:
(1)创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例的。
(2)结构型模式:描述如何组合类和对象以获得更大的结构。
(3)行为型模式:描述算法和对象间职责的分配
CRM(Customer Relationship management)客户关系管理
CRM的主要含义就是通过对客户详细资料的深入分析,来提高客户满意程度,从而提高企业的竞争力的一种手段。
SCM(Supply chain management)供应链管理
是一种集成的管理思想和方法,它执行供应链中从供应商到最终用户的物流的计划和控制等职能。从单一的企业角度来看,是指企 ...
本文转自http://chjavach.iteye.com/blog/834679
简单工厂就是实现创建对象的功能,将创建对象的实现封装起来以供客户端使用,但有时一个接口的实现类有多个,如何选择创建哪个具体实例呢?可以从客户端传入参数,或用配置文件方式,在客户端传入参数中,当增加一个新的具体实例时,就要修改工厂类,以下是用配置文件形式,利用反射机制动态生成类,无需修改工厂类
/**
* 工厂类,用来创造Api对象
*/
public class Factory {
/**
* 具体的创造Api的方法,根据配置文件的参数来创建接口
* @return 创造好的Api对象
...