小编Jay*_*Jay的帖子

复合策略模式 - java - 这段代码有多糟糕?

这个问题是我早期帖子的延续:java中的访问者模式实现 - 这看起来如何?

重构我的代码时我有点困惑.我试图将我的访问者模式(在前一篇文章中解释)转换为复合策略模式.我想做这样的事情:

public interface Rule {
  public List<ValidatonError> check(Validatable validatable);
}
Run Code Online (Sandbox Code Playgroud)

现在,我将定义一个这样的规则:

public class ValidCountryRule  {
  public List<ValidationError> check(Validatable validatable) {
    // invokeDAO and do something, if violation met
    // add to a list of ValidationErrors.
    // return the list.
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以有两个不同类型的对象进行验证.这两个可能是完全不同的:说我有一个商店是Validatable,再一个ScheduleValidatable.现在,如果我写一个看起来像这样的复合:

class Validator implements Rule {
  private List<Rule> tests = new ArrayList<Rule>();

  public void addRule(Rule rule) {
    tests.add(rule);
  }

  public List<ValidationError> check(Visitable visitable) {
    List<ValidationError> list = new ArrayList<ValidationError>(); …
Run Code Online (Sandbox Code Playgroud)

java oop design-patterns rules strategy-pattern

8
推荐指数
2
解决办法
4403
查看次数

设计问题 - java - 这样做的最佳方法是什么?

我有设计问题.

我有两个数据对象,它们是类A和类B的实例.A和B没有任何行为 - 它们是带有getter和setter的java bean.我有一个验证界面和10个实现它定义不同的验证.我想在我的属性文件中指定哪个Validation适用于哪个类.像这样:

类A XYZValidation,ABCValidation

B类:ABCValidation,PPPValidation等

我如何编写我的Validation类,以便它提供作为A类或ClassB实例的对象,或者我将来可能要添加的任何其他C类?

interface Validation {
public boolean check(??);
}
Run Code Online (Sandbox Code Playgroud)

>只是想添加这一行,感谢所有回复此帖的人,并说我喜欢这个神奇的网站上的时间.Stackoverflow岩石!

java oop

7
推荐指数
1
解决办法
576
查看次数

这个svn结构有多好?

在此输入图像描述

以上是我计划用于组织中的Java项目的结构模拟.你们怎么看待它?它看起来像传统吗?另外,如果你使用project1,在标签下,你可以看到1.0.1,1.0.2等等 - 这些是发布后发布的发布标签.现在,Dev分支下会存在哪种标签?什么时候会被创造?我应该在DevBranch下为每个开发人员创建分支吗?我很迷惑.

svn

7
推荐指数
2
解决办法
821
查看次数

面向方面编程的未来

我是AOP领域的新手.我第一次编写应用AOP概念的东西时,我很高兴能够理解方面如何消除应用程序中的交叉切割模式.考虑到解决交叉模式,如安全性,日志记录,交易,审计等应用AOP,我感到不知所措.
然而,当我第一次向我正在工作的客户提出使用AOP时,我被告知他们不支持它.有人告诉我,AOP意味着更多的维护!如果您的代码发生变化,您的切入点必须更改.因此,每当您更改应用它们的代码时,您可能必须分析,更改和测试您的方面?
关于这个你有什么要说的?为什么主流公司尚未开放广泛使用AOP?AOP世界在哪里?

java aop aspects

6
推荐指数
1
解决办法
1896
查看次数

executeBatch在Prepared Statement上的效果如何?

根据这个问题,问一切:executeBatch方法有效吗?是否有一个性能基准,即...如果要插入1000条记录,使用executeBatch而不是executeUpdate可以节省x个数据库周期数量?

或者这只是一个惯例?

编辑:以下是我正在使用的内容:Z/OS上托管的DB2 V 8.1,这是一个Web应用程序,它将在最糟糕的情况下一次性插入80,000条记录.

java database performance jdbc java-ee

6
推荐指数
1
解决办法
1万
查看次数

使用Spring Security在运行时切换身份验证方法?

通常,当您为应用程序声明不同的"<authentication-provider>"(在我的情况下为webapp)时,Spring Security将负责一个接一个地调用提供程序,这会导致失败.因此,假设我在配置文件中首先声明了DatabaseAuthenticationProvider和LDAPAuthenticationProvider,并且在运行时首先调用DatabaseAuthenticationProvider,如果身份验证失败,则尝试LDAPAuthentication.这很酷 - 但是,我需要的是运行时切换.

我想有一个选择在这两种方法之间选择(基于数据库的身份验证/基于ldap的身份验证),并以某种方式基于这个全局设置来实现实现.

我该怎么做?是否可以使用Spring-Security?

java authentication spring spring-security java-ee

6
推荐指数
2
解决办法
3295
查看次数

如何在胖客户端中设计身份验证,以确保故障安全?

这是一个用例:

我有一个桌面应用程序(使用Eclipse RCP构建),在启动时弹出一个对话框,其中包含"UserName"和"Password"字段.一旦最终用户输入他的UserName和Password,就会联系一个服务器(一个spring remote-servlet,客户端是一个spring httpclient:类似于这里方法 .),并且在服务器端执行身份验证.

与上述情况有关的几个问题:

  1. 如果说这种认证服务失败了,处理进一步程序的最佳方法是什么?身份验证是我无法取消的.以"有限"模式运行桌面客户端是个好主意吗?例如,重要功能/菜单/视图将被禁用,其他应用程序将可访问?
  2. 我是否应该在另一台计算机上运行备份身份验证服务,作为备份?
  3. 这种情况下的一般最佳做法是什么?我记得读过关于谷歌齿轮以及它如何让你编辑和离线做东西 - 如果这样设计的话?

请让我知道您的设计/建筑评论/建议.感谢您的帮助.

java eclipse security design-patterns

6
推荐指数
1
解决办法
560
查看次数

使用spring ws支持的webapplication进行会话管理

我正在尝试创建一个web应用程序,它将使用js前端并在后端调用Spring WS.假设这是一个购物网站类型的网站.所以,我可以有类似的服务OrderService InventoryService ShippingService等等.唯一需要会话的是用户的购物车.现在,就这个购物车而言,使用servlet容器进行会话管理是否有意义?或者,我是否应该将会话CartService信息持久保存到数据库中?

使用WebServices进行会话管理时,最佳做法是什么?我想,最好的做法是保持服务无状态,但如果我有无状态的web服务,如何授权用户呢?

使用servlet容器进行会话管理然后让不同的控制器充当web服务的代理是一种很好的做法吗?

我附上一张图片,让你更好地理解背景. 在此输入图像描述

java architecture spring web-services web-applications

6
推荐指数
2
解决办法
805
查看次数

java中使用泛型的工厂方法模式,如何?

我的代码如下所示:

public interface BaseDAO{
// marker interface
}

public interface CustomerDAO extends BaseDAO{
public void createCustomer();
public void deleteCustomer();
public Customer getCustomer(int id);
// etc
}

public abstract class DAOFactory {
public BaseDAO getCustomerDAO();
public static DAOFactory getInstance(){
  if(system.getProperty("allowtest").equals("yes")) {
  return new TestDAOFactory();
  }
  else return new ProdDAOFactory();
}

public class TestDAOFactory extends DAOFactory{
public BaseDAO getCustomerDAO() {
  return new TestCustomerDAO(); // this is a concrete implementation
  //that extends CustomerDAO
  //and this implementation has dummy code on methods
}

public …
Run Code Online (Sandbox Code Playgroud)

java generics methods design-patterns factory

5
推荐指数
3
解决办法
3万
查看次数

Oracle T4CPreparedStatement内存泄漏?

关于应用程序的一些背景,我将在接下来的几行中讨论:

XYZ是一个数据屏蔽工作台eclipse RCP应用程序:你给它一个源表列和一个目标表列,它将应用一个trasformation(加密/ shuffling/etc)并将行数据从源表复制到目标表.现在,当我一次屏蔽n个表时,该应用程序将启动n个线程.

这是问题:

我在第一次推出上述应用程序时遇到了生产问题.不幸的是,我没有任何日志来到根.但是,我尝试在测试区域运行此应用程序并进行压力测试.

当我收集.hprof文件并通过分析器(yourKit)运行它时,我注意到oracle.jdbc.driver.T4CPreparedStatement的对象保留了堆.分析还告诉我,我的一个类正在持有对这个preparedstatement对象的引用,因此,n个线程有n个这样的对象.T4CPreparedStatement似乎有字符数组:lastBoundChars和bindChars,每个都是char [300000].

所以,我研究了一下(google!),获得了ojdbc6.jar并尝试反编译T4CPreparedStatement.我看到T4CPreparedStatement扩展了OraclePreparedStatement,它动态地管理lastBoundChars和bindChars的数组大小.

所以,我的问题是:

  1. 你遇到过像这样的问题吗?
  2. 你知道lastBoundChars/bindChars的意义吗?
  3. 我是剖析的新手,所以你认为我做得不对吗?(我也通过MAT运行hprofs - 这是主要确定的问题 - 所以,我真的不认为我错了吗?)

我在网上找到了类似的东西:http: //forums.oracle.com/forums/thread.jspa?messageID = 2860681

感谢您的建议/意见.

java performance memory-leaks oracle10g

5
推荐指数
2
解决办法
1万
查看次数