问题列表 - 第20838页

0
推荐指数
2
解决办法
811
查看次数

C++中的字典库

我必须使用写一个程序,其中应该使用字典来检查一个字符串是否是一个有效的单词.我可以使用任何字典库吗?如果没有,我怎么能构建一个查询字典?

谢谢!

c++

3
推荐指数
1
解决办法
8680
查看次数

EJB3 - @Column(insertable ="false")问题

我正在使用EJB3和Oracle Express Edition DB构建J2SE应用程序.

我的问题就是这样 - 我在项目中设置了一个与数据库中的表匹配的EntityBean.该表包含一个不可为空的列,并具有默认值.我想要的是,当使用EJB将新数据持久化到此表时,列的值将获得其默认值.这是我在项目中设置的方式:

//holds user's first name
@Basic(optional = true)
@Column(name = "FIRST_NAME", insertable = false, updatable = true, nullable = false)
private String m_firstName;
Run Code Online (Sandbox Code Playgroud)

我还在ORM.XML文件中设置它:

    <basic name="firstName">
        <column name="FIRST_NAME" insertable="false" updatable="true" nullable="false"/>
    </basic>
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,在创建新的EntityBean而不设置名字字段,然后尝试保留它时,我得到以下异常:

Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01400: cannot insert NULL into ("TSDB"."USERS"."FIRST_NAME")
Run Code Online (Sandbox Code Playgroud)

这意味着持久性管理器尝试插入第一个名称字段,尽管我告诉它不要.

我在这里做错了吗?

谢谢!

java jpa toplink-essentials ejb-3.0 ora-01400

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

为什么 g++ 会生成多个(弱)相似符号?

我正在查看nm -C的输出

0804a86a W ForkMessageHandler::ForkMessageHandler()
0804a86a W ForkMessageHandler::ForkMessageHandler()
0804a6fa T ForkMessageHandler::~ForkMessageHandler()
0804a698 T ForkMessageHandler::~ForkMessageHandler()
0804a698 T ForkMessageHandler::~ForkMessageHandler()
0804a800 W MultiMessageHandler::MultiMessageHandler()
0804a800 W MultiMessageHandler::MultiMessageHandler()
0804a84c W MultiMessageHandler::~MultiMessageHandler()
0804a81c W MultiMessageHandler::~MultiMessageHandler()
0804a81c W MultiMessageHandler::~MultiMessageHandler()
Run Code Online (Sandbox Code Playgroud)

为什么 g++ 会生成很多类似的符号,弱符号的目的是什么?

编辑:这是来自最终的可执行文件,而不是 .o 文件。ForkMessageHandler 定义在一个 .cpp 文件中,没有人包含它的头 - 但有几个包含其基类的头。

c++ linker gcc

4
推荐指数
1
解决办法
849
查看次数

如何让Maven模块不导出jar?

我有一个带有三个模块的Maven构建.

  • 模块A导出一个jar.
  • 模块B依赖于A并导出jar.
  • 模块C是一组依赖于A和B的回归测试.

回归测试不仅仅是模块B的一部分的原因是它们应该能够针对A和B的多个版本运行以确保向后兼容性.我希望能够deploy从顶级构建运行以创建A.jar和B.jar,但不能运行C.jar.这可能吗?

maven-2

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

C# - 我应该使用什么,接口、抽象类还是两者?

因此,假设我正在用 C# 构建某种房地产应用程序。对于每种类型的财产,我将创建一个类,例如 ResidentialProperty 和 CommercialProperty。这两个类以及所有其他属性类将共享一些公共属性,例如 Id、标题、描述和地址信息。

我希望能够做的是:
a)返回仅包含基本信息的对象集合
b)能够调用诸如GetProperty(id)之类的方法,该方法将创建并返回ResidentialProperty或CommercialProperty,或者调用 GetProperties() ,它将返回其中之一或两者的集合。

因此,创建一个名为 BasicProperty(或 PropertyBase)的抽象类可能是有意义的,它包含所有公共属性,并从它扩展 ResidentialProperty 和 CommercialProperty。这将解决问题 #1,因为我可以创建一个返回 BasicProperties 集合的方法。

但对于#2,能够返回一种属性类型或另一种属性类型,我需要一个接口(IProperty),并让住宅和商业类继承它,然后让 GetProperty(id) 和 GetProperties() 返回IProperty 对象(或者因为它们继承自 IProperty,我可以按原样返回它们而不是作为接口吗?)?

现在,如果我应该使用接口,我该如何处理 BasicProperty 类?
- 我是否将其保留为抽象并实现接口?或者
- 我是否将其保留为抽象并且所有 3 个类都实现该接口?或者
-我不将其创建为抽象,将所有基本信息放入接口中,并且BasicProperty、ResidentialProperty和CommercialProperty都实现该接口吗?

提前致谢,卡尔·J.

.net c# abstract-class interface

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

"隐藏"CSS文件仅适用于FF,Opera

我的朋友给我发了一个指向这个小页面的链接,该页面显示了一个简单的HTML + CSS布局页面.但是,如果查看源代码,您会发现没有指向css文件的链接.

如果你正在使用带有firebug的ff,你可以看到在.NET下,css文件是通过发送的标题链接的(只是想显示你们的那个).

我的问题是,你有任何假设,为什么这不适用于safari,即?我假设标题不依赖于浏览器.是什么赋予了?

html css hidden

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

流利的NHibernate自我引用多对多

我有一个名为Books的实体,可以列出更多名为RelatedBooks的书籍.

缩写的Book实体看起来像这样:

public class Book
{
      public virtual long Id { get; private set; }

      public virtual IList<Book> RelatedBooks { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以下是此关系的映射

HasManyToMany(x => x.RelatedBooks)
                .ParentKeyColumn("BookId")
                .ChildKeyColumn("RelatedBookId")
                .Table("RelatedBooks")
                .Cascade.SaveUpdate();
Run Code Online (Sandbox Code Playgroud)

以下是在RelatedBooks表中生成的数据示例:

BookId     RelatedBookId
1          2
1          3
Run Code Online (Sandbox Code Playgroud)

当我尝试删除一本书时会出现问题.如果我删除ID为1的书,一切正常,并且RelatedBooks表删除了两个相应的记录.但是,如果我尝试删除ID为3的书,我会收到错误"DELETE语句与REFERENCE约束冲突"FK5B54405174BAB605".冲突发生在数据库"Test",表"dbo.RelatedBooks",列'RelatedBookId "".

基本上发生的事情是Book无法删除,因为RelatedBooks表中的RelatedBookId为3的记录永远不会被删除.

删除图书时如何删除该记录?

编辑

将Cascade从SaveUpdate()更改为All()后,如果我尝试删除ID为3的Book,同样的问题仍然存在.同时将Cascade设置为All(),如果删除Book with和ID为1,然后删除所有3本书(ID:1,2和3),这样也无法正常工作.

查看当我删除I​​D为3的Book时调用Book.Delete()方法时执行的SQL,看起来SELECT语句看起来是错误的列(我假设这意味着SQL DELETE语句会犯同样的错误,因此永远不会删除该记录).这是RelatedBook的SQL

SELECT relatedboo0_.BookId as BookId3_
       , relatedboo0_.RelatedBookId as RelatedB2_3_ 
       , book1_.Id as Id14_0_ 

FROM RelatedBooks relatedboo0_ 
     left outer join [Book] book1_ on relatedboo0_.RelatedBookId=book1_.Id 

WHERE relatedboo0_.BookId=3
Run Code Online (Sandbox Code Playgroud)

对于特定情况,WHERE语句应该看起来像这样:

WHERE relatedboo0_.RelatedBookId = 3
Run Code Online (Sandbox Code Playgroud)

以下是我必须要做的就是让它适用于所有情况

制图: …

many-to-many fluent-nhibernate self-reference

9
推荐指数
1
解决办法
2585
查看次数

在PHP中使用依赖注入编写Controller类

如何解决在PHP 中组成Controller类的问题,应该是:

  • 通过使用依赖注入可以轻松测试,
  • 为最终程序员提供共享对象
  • 提供加载新用户库的方法

向下看,使用依赖注入框架进行控制器实例化


问题是,派生的控制器可能使用程序员想要的任何资源(例如框架提供的).如何创建对共享资源(数据库,用户,存储,缓存,帮助程序),用户定义的类或其他库的统一访问?

优雅的解决方

我的问题有几种可能的解决方案,但两者看起来都不是优雅的

  • 尝试通过构造函数传递所有共享对象?(甚至可以使用10个占位符创建构造函数)
  • 创造吸气者,解决者?(臃肿的代码)$controller->setApplication($app)
  • 在共享资源上应用单身人士User::getInstance()要么Database::getInstance()
  • 使用Dependency Injection容器作为控制器内部对象共享的单例?
  • 提供一个全球应用程序单例作为工厂?(这个在php框架中看起来很常用,但它强烈反对DI原则和Demeter定律)

我明白,创建强耦合类是不鼓励和放逐:)但是我不知道这个范例如何适用于其他程序员(一个Controller类)的起点,他们应该能够访问所提供的共享资源到MVC架构.我相信,将控制器类分解成更小的类会以某种方式破坏MVC的实际意义.


依赖注入框架

DI Framework看起来是一个可行的选择.但问题仍然存在.类似Controller的类不在Application层中,而是在RequestHandler/Response层中.

该层应该如何实例化控制器?

  • 将DI喷油器送入这一层?
  • DI框架作为单身人士?
  • 将隔离的DI框架配置仅用于此层并创建单独的DI注入器实例?

php model-view-controller dependency-injection instantiation

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

如何使用Java查找默认文件打开程序?

我需要找到Windows上给定文件的默认文件打开器,以便我可以自定义命令参数并使用默认的opener/viewer打开文件.

我的实际使用场景是使用用户的默认媒体播放器打开多个多媒体文件,以便将所有文件添加到用户的播放列表中(对于可以在同一个媒体上打开多个文件的播放器).对于Windows以外的操作系统我使用Desktop.open(File file)方法(我根本不关心为Windows以外的操作系统打开多个文件功能),我找不到任何方法可以打开多个文件而不是自定义命令参数并使用exec()方法运行它运行时类.我使用类似于此的somethig:

private void playItems2(List<File> fileList, String playerBinary) {
    String args = " ";
    for (File file : fileList) {
        args += "\"" + file.getAbsolutePath() + "\" ";
    }

    try {
        String command = playerBinary + args;
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec(command);
    } catch (Exception exc) {/*handle exception*/
        System.err.println("Run Player Exc:" + exc.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用用户指定的路径playerBinary,我需要的是自动检测第一项的默认播放器fileList并将其用作playerBinary.

我还查看了Rundll32.exe和cmd.exe/start解决方案,但它们对我的使用场景不起作用.

这个问题不应该与这个这个.

java winapi desktop

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