我正在编写类似TotalCommander的应用程序.我有一个单独的文件列表组件,以及它的模型.模型支持侦听器并CurrentDirChanged以下列方式发出诸如此类事件的通知:
private void fireCurrentDirectoryChanged(final IFile dir) {
if (SwingUtilities.isEventDispatchThread())
for (FileTableEventsListener listener : tableListeners)
listener.currentDirectoryChanged(dir);
else {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (FileTableEventsListener listener : tableListeners)
listener.currentDirectoryChanged(dir);
}
});
}
}
我为此写了一个简单的测试:
@Test
public void testEvents() throws IOException {
IFile testDir = mockDirectoryStructure();
final FileSystemEventsListener listener =
context.mock(FileSystemEventsListener.class);
context.checking(new Expectations() {{
oneOf(listener).currentDirectoryChanged(with(any(IFile.class)));
}});
FileTableModel model = new FileTableModel(testDir);
model.switchToInnerDirectory(1);
}
这不起作用,因为没有EventDispatchThread.有没有办法在无头构建中进行单元测试?
单元测试java swing jmock
我是否可以相信一个对象被销毁,并且当它超出C#中的范围时会立即调用它的析构函数?
我认为它应该是因为许多常见的编码实践(例如事务对象)都依赖于这种行为,但我并不习惯使用垃圾收集,并且对这些语言通常的行为方式几乎没有任何了解.
谢谢.
我正在使用VC9,我有一个CEdit控件,其内容被重置为默认测试(比如 - "填写"),只需单击一个按钮,然后我调用SetFocus进行CEdit控件.问题是光标在默认文本的开头闪烁,我希望它闪烁默认字符串的结尾.
如何才能做到这一点?
CREATE PROCEDURE [dbo].[PL_GEN_PROVN_NO1]
@GAD_COMP_CODE VARCHAR(2) =NULL,
@@voucher_no numeric =null output
AS
BEGIN
DECLARE @NUM NUMERIC
DECLARE @PNO NUMERIC
SET @PNO = 0
DECLARE @PNO1 NUMERIC
SET @PNO1=0
-- begin transaction
IF NOT EXISTS (select GLDC_NEXT_PRV_NO
FROM GLAS_FINANCIAL_DOCUMENTS
WHERE GLDC_COMP_CODE = @GAD_COMP_CODE
AND GLDC_DOC_CODE = 'JV' )
BEGIN
RAISERROR ('Error in generating provision number..',16,1)
-- ROLLBACK TRANSACTION
END
ELSE
SELECT @PNO=ISNULL(GLDC_NEXT_PRV_NO,0)+1
FROM GLAS_FINANCIAL_DOCUMENTS
WHERE GLDC_COMP_CODE = @GAD_COMP_CODE
AND GLDC_DOC_CODE = 'JV'
UPDATE GLAS_FINANCIAL_DOCUMENTS
SET GLDC_NEXT_PRV_NO = @PNO
WHERE GLDC_COMP_CODE = @GAD_COMP_CODE …Run Code Online (Sandbox Code Playgroud) 在Visual Studio中,您可以添加外部工具并将选定的文本作为参数传递给它.
eclipse是否具有相同类型的功能,或者是否有义务为此编写插件?
如果是这样,那么任何特定的代码示例就是这样做的,因为我找到的只是自定义编辑器的通用示例插件.
为Java 6注释处理器设置eclipse项目编译器配置的最佳方法是什么?
我的解决方案是手动设置org.eclipse.jdt.apt.core.prefs和factorypath文件.这有点麻烦:
(org.eclipse.jdt.apt.genSrcDir属性org.eclipse.jdt.apt.core.prefs)一个问题是eclipse生成的源将使用maven编译.只有maven clean compile可靠,因为它删除了eclipse生成的源文件.(Eclipse和javac生成的源文件可能不同步.)
有没有更好的解决方案来配置maven没有eclipse生成的源文件在maven源路径?
<project>
<properties>
<eclipse.generated.src>${project.build.directory}/eclipse</eclipse.generated.src>
</properties>
<build>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals> <goal>add-source</goal> </goals>
<configuration>
<sources>
<source>${eclipse.generated.src}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<additionalConfig>
<file> <name>.factorypath</name>
<content><![CDATA[<factorypath>
<factorypathentry kind="VARJAR" id="M2_REPO/processor/processor.jar" enabled="true" runInBatchMode="false"/>
</factorypath>
]]> </content>
</file>
<file>
<name>.settings/org.eclipse.jdt.apt.core.prefs</name>
<content><![CDATA[
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=true
org.eclipse.jdt.apt.genSrcDir=${eclipse.generated.src}
org.eclipse.jdt.apt.reconcileEnabled=true
]]> </content>
</file>
</additionalConfig>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2005中,我进入了:
查看 - >属性页 - > C/C++ - >代码生成 - >启用增强指令集
但在Visual Studio 2008中?
提前致谢
通常,当您指定标识列时,您将在SQL Server中获得一个方便的接口,用于请求特定行.
SELECT * FROM $IDENTITY = @pID
Run Code Online (Sandbox Code Playgroud)
如果是标识列,您实际上并不需要关注自己的名称,因为只能有一个.
但是,如果我有一个主要由临时数据组成的表,该怎么办?大量插入和大量删除.有没有一种简单的方法可以重用身份值.
我希望能够编写一个函数,该函数将返回说NEXT_SMALLEST($IDENTITY)下一个标识值并以故障安全方式执行.
基本上找到未使用的最小值.这并不是一件容易的事,但我想要的是能够告诉SQL Server这是我的函数,它将生成身份值.但我所知道的是,没有这样的功能......
实现全局数据库ID,我需要提供一个我可以控制的默认值.
我的想法是基于我应该能够拥有一个包含所有已知ID的表,然后来自其他需要全局ID的表的每一行ID都会引用该表.默认值将由类似的东西提供
INSERT INTO GlobalID
RETURN SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud) 我想更详细地说明在数据库中存储标签的toxi方法 - 在SO上的其他地方提到过.
数据库架构是:
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Title
Table: ItemTag
Columns: ItemID, TagID
Run Code Online (Sandbox Code Playgroud)
这可能是一个愚蠢的问题(但我不知道答案)...表标签中的每个条目都应该有一个唯一的标题.即我只存储一次标签或每次使用它时存储它?
为了说明,我最终应该得到以下两个表中的哪一个:
TagID Title
1 Fish
2 Cat
3 Dog
Run Code Online (Sandbox Code Playgroud)
要么
TagID Title
1 Fish
2 Fish
3 Cat
4 Fish
5 Dog
6 Cat
Run Code Online (Sandbox Code Playgroud)
如果使用第一个表,在输入标签之前我首先必须运行和sql语句来查明它是否存在,对吗?
任何帮助将不胜感激.由于黑客攻击和索引,我最近手指烧伤,想要开始正确的基础知识.
使用mysql和PHP
我已经使用了MATCH AGAINST条款.
它可以很好地对抗各个表.就像我想在商店桌上搜索一样.没问题.
我想要的是能够在单个结果页面中搜索和显示不同表格的结果.
例如,如果我输入"巧克力衣服"
我可以得到4个结果如下:
Shop1结果
ShopItem1结果
ShopItem2结果
Shop2结果
当然,最相关的结果应该排在第一位.
我有很多问题.设计明智和实施明智
1)我应该改变我的设计吗?我正在考虑有一个名为搜索结果的单独表格,其中包含来自SHOPS和SHOPPRODUCTS表的数据.但这意味着我有一些数据重复.
2)我应该保留目前的设计吗?如果是这样,那么我怎么能在两个不同的表中按相关性排序搜索结果呢?
我看到rottentomatoes将他们的搜索结果组织在不同的组中.但是,我们更喜欢搜索结果不受不同类型的限制,特别是当我们进行分页时,UI更难以导航.
http://www.rottentomatoes.com/search/full_search.php?search=girl
或者那实际上是最好的出路?
我希望有人可以就这类事情向我提供指导,如果您有跨多数表格生成搜索结果的经验.
因为按需求,我会把表结构放在这里
CREATE TABLE `shopitems` (
`id` int(10) unsigned NOT NULL auto_increment,
`ShopID` int(10) unsigned NOT NULL,
`ImageID` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`description` varchar(255) NOT NULL,
`pricing` varchar(45) NOT NULL,
`datetime_created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
/*Table structure for table `shops` */
DROP TABLE IF EXISTS `shops`;
CREATE TABLE `shops` (
`id` …Run Code Online (Sandbox Code Playgroud)