小编wen*_*wen的帖子

异常传播指南(Java)

Java中的异常传播是否有任何指导原则?

什么时候为方法签名添加例外?例如:如果仅在缺少基本程序资源时抛出异常,并且只能在顶层处理异常,那么使用错误方法通过所有方法使用此异常将其传播到所有方法吗?

有什么好的做法吗?任何不良做法?

我很抱歉,如果我是模糊的,但我只是在寻找有关异常的编程风格的一些(一般)建议.

java exception-handling exception

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

Haskell中的谓词逻辑

我一直在使用以下数据结构来表示Haskell中的命题逻辑:

data Prop 
    = Pred  String
    | Not   Prop
    | And   Prop Prop
    | Or    Prop Prop
    | Impl  Prop Prop
    | Equiv Prop Prop
    deriving (Eq, Ord)
Run Code Online (Sandbox Code Playgroud)

欢迎对此结构发表任何评论.

但是,现在我想扩展我的算法来处理FOL - 谓词逻辑.什么是在Haskell中代表FOL的好方法?

我见过的版本 - 几乎是 - 上面的扩展,以及基于更经典的无上下文语法的版本.有没有关于此的文献,可以推荐吗?

haskell context-free-grammar first-order-logic data-structures

25
推荐指数
1
解决办法
3523
查看次数

以编程方式使用JPA 2.0加载实体类?

使用Hibernate,您可以将Entity类加载为:

sessionFactory = new AnnotationConfiguration()
                    .addPackage("test.animals")
                    .addAnnotatedClass(Flight.class)
                    .addAnnotatedClass(Sky.class)
                    .addAnnotatedClass(Person.class)
                    .addAnnotatedClass(Dog.class);
Run Code Online (Sandbox Code Playgroud)

有没有办法做同样的事情 - 以编程方式加载您的实体类 - 以符合JPA 2.0的方式?

这个问题的原因是因为我想动态加载我的Entity类,因此不一定以编程方式.

java entities dynamic jpa-2.0

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

Haskell"集合"语言设计

为什么Haskell实现如此专注于链表?

例如,我知道Data.Sequence对于大多数列表操作(操作除外cons)更有效,并且使用了很多; 但从语法上讲,它"几乎不受支持".Haskell在函数抽象方面投入了大量精力,例如Functor和Foldable类,但它们的语法与默认列表的语法不兼容.

如果在一个项目中我想用序列优化和替换我的列表 - 或者如果我突然想要支持无限集合,并用列表替换我的序列 - 结果代码更改是令人憎恶的.

所以我想我的疑惑可以在以下问题中具体化:

  1. 为什么不map等于(Functor f) => (a -> b) -> f a -> f b
  2. 为什么不能将[](:)函数用于,例如,Data.Sequence中的类型?

我真的希望有一些解释,不包括"向后兼容性"或"它只是那种方式",但如果你认为没有,请告诉我.我们也欢迎任何相关的语言扩展.

collections haskell language-design

20
推荐指数
3
解决办法
1353
查看次数

Scala:构造函数采用Seq或varargs

我猜测,出于兼容性原因,vararg参数的类型Any*是Array [Any] - 如果我错了,请更正.但是,这并不能解释以下错误:

class Api(api_url: String, params: Seq[(String, String)]) {
  def this(api_url: String, params: (String, String)*)
    = this(api_url, params.seq)
}
Run Code Online (Sandbox Code Playgroud)

此代码无法编译,但会发出警告:

double definition:构造函数Api:(api_url:String,params:(String,String)*)Api和构造函数Api:(api_url:String,params:Seq [(String,String)])第13行的Api在擦除后具有相同的类型:(api_url:java.lang.String,params:Seq)Api

那么如何定义一个采用varargs或序列的构造函数呢?

constructor types scala variadic-functions

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

Java/Hibernate使用实体上的接口

我正在使用带注释的Hibernate,我想知道以下是否可行.

我必须设置一系列表示可以持久化的对象的接口,以及主数据库类的接口,其中包含用于持久化这些对象的若干操作(...数据库的API).

在此之下,我必须实现这些接口,并使用Hibernate持久化它们.

所以我会,例如:

public interface Data {
  public String getSomeString();
  public void setSomeString(String someString);
}

@Entity
public class HbnData implements Data, Serializable {
  @Column(name = "some_string")
  private String someString;

  public String getSomeString() {
    return this.someString;
  }
  public void setSomeString(String someString) {
    this.someString = someString;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,这种方法很好,有点像.当我想要嵌套实体时,麻烦来了.我想要的界面很简单:

public interface HasData {
  public Data getSomeData();
  public void setSomeData(Data someData);
}
Run Code Online (Sandbox Code Playgroud)

但是当我实现该类时,我可以按照下面的界面进行操作,并从Hibernate获取错误,说它不知道类"Data".

@Entity
public class HbnHasData implements HasData, Serializable {
  @OneToOne(cascade = CascadeType.ALL)
  private Data someData;

  public Data getSomeData() {
    return …
Run Code Online (Sandbox Code Playgroud)

java hibernate interface

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

为什么要创建自己的哈尔分类器级联?

我发现这个创建自己的哈尔分类级联教程.

这向我提出了一个问题:运行HaarTraining和创建自己的分类器(与使用OpenCv提供的级联相反)有什么好处(如果有的话)?

opencv face-detection

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

无法在'require_once'上重新定义课程

更新:

我已经放弃了CodeIgniter,并希望从PHP构建一个围绕我的数据库应用程序的Web界面,因为没有办法摆脱这个bug ...


例外

我得到这个例外:

Fatal error: require_once(): Cannot redeclare class doctrine\orm\abstractquery in Q:\Digest\lib\Symfony\Component\HttpFoundation\UniversalClassLoader.php on line 190

Call Stack:
    0.0007     330016   1. {main}() Q:\Digest\index.php:0
    0.0058     330800   2. require_once('Q:\Digest\lib\CodeIgniter\core\CodeIgniter.php') Q:\Digest\index.php:163
    0.2207     935856   3. call_user_func_array() Q:\Digest\lib\CodeIgniter\core\CodeIgniter.php:297
    0.2207     935904   4. Crud->index() Q:\Digest\lib\CodeIgniter\core\CodeIgniter.php:0
    0.2574    1065064   5. Crud->__getEntities() Q:\Digest\Application\controllers\crud.php:19
    0.2649    1121824   6. Doctrine\ORM\AbstractQuery->getResult() Q:\Digest\Application\controllers\crud.php:49
    0.2649    1121976   7. Doctrine\ORM\AbstractQuery->execute() Q:\Digest\lib\Doctrine\ORM\AbstractQuery.php:366
    0.2651    1121976   8. Doctrine\ORM\Query->_doExecute() Q:\Digest\lib\Doctrine\ORM\AbstractQuery.php:528
    0.2651    1121976   9. Doctrine\ORM\Query->_parse() Q:\Digest\lib\Doctrine\ORM\Query.php:223
    0.2848    1185896  10. Doctrine\ORM\Query\Parser->parse() Q:\Digest\lib\Doctrine\ORM\Query.php:203
    0.3089    1238704  11. Doctrine\ORM\Query\SqlWalker->getExecutor() Q:\Digest\lib\Doctrine\ORM\Query\Parser.php:311
    0.3090    1239104  12. Symfony\Component\HttpFoundation\UniversalClassLoader->loadClass() Q:\Digest\lib\Symfony\Component\HttpFoundation\UniversalClassLoader.php:0 …
Run Code Online (Sandbox Code Playgroud)

php symfony1 fatal-error doctrine-orm codeigniter-2

12
推荐指数
2
解决办法
8627
查看次数

在JPA 2.0中捕获约束违规

考虑以下实体类,例如,与EclipseLink 2.0.2一起使用 - 其中link属性不是主键,但仍然是唯一的.

@Entity
public class Profile {  
  @Id 
  private Long id;

  @Column(unique = true)
  private String link;

  // Some more attributes and getter and setter methods
}
Run Code Online (Sandbox Code Playgroud)

当我插入具有该link属性的重复值的记录时,EclipseLink不会抛出a EntityExistsException,而是抛出a DatabaseException,并显示消息,说明违反了唯一约束.

这似乎不是很有用,因为没有一种简单的,独立于数据库的方法来捕获此异常.处理这个问题的建议方法是什么?

我考虑过的一些事情是:

  • 检查错误代码DatabaseException- 我担心这个错误代码是数据库的本机错误代码;
  • 预先检查Profile具有特定值的a的存在link- 这显然会导致大量多余的查询.

java jpa try-catch unique-constraint eclipselink

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

OO上的JavaWorld:Getters/Setters vs Builder

背景:

我在JavaWorld上发现了这篇文章,其中Allen Holub解释了Getters/Setters的替代方法,它保留了隐藏对象实现的原则(他的示例代码也可以在下面找到).

它解释了类Name/ EmployeeId/ Money应该有一个构造函数接受一个字符串 - 原因是如果你输入它int,然后需要将它改为a long,你将不得不修改类的所有用途,并且你不需要这种模式.

问题1:

我想知道:这不是简单地将问题转移到解析String被抛出的参数吗?例如,如果所有使用EmployeeId(从中接收Exporter)的代码解析String成一个int,并且突然开始导出long值,则需要完全修改使用的数量......如果你开始解析long它可能就好了改为a double(即使这对id没有意义)......如果你不能确定要解析什么String,你就无法实现任何东西.

问题2:

除了这个问题,我还有另一个问题:我意识到这篇文章已有七年多的历史了,所以有人能指出我最近关于OO设计的一些概述,特别是关于getter/setter和实现隐藏辩论的想法吗?

清单1. Employee:Builder Context


  public class Employee
  {   private Name        name;
      private EmployeeId  id;
      private Money       salary;

      public interface Exporter
      {   void addName    ( String name   );
          void addID      ( String id     );
          void addSalary  ( String salary ); …
Run Code Online (Sandbox Code Playgroud)

java oop design-patterns builder getter-setter

11
推荐指数
2
解决办法
7058
查看次数