问题列表 - 第18290页

使用Java设置Windows系统变量

有没有办法将特定目录添加到Windows系统变量%PATH%?这似乎不起作用:

String[] cmd = { "cmd", "/c", "set", "PATH=\"%PATH%;c:\\test\"" };
Runtime.getRuntime().exec( cmd );
Run Code Online (Sandbox Code Playgroud)

c:\ test \没有出现在System.getenv("PATH")中; 或者在输出中

String[] cmd = { "cmd", "/c", "echo", "%PATH%" };
Runtime.getRuntime().exec( cmd );
Run Code Online (Sandbox Code Playgroud)

我需要的是修改Windows下当前Java-Process的%PATH%-variable.原因是,我需要加载一些相互交叉引用的本机dll文件.所以我想将应用程序路径添加到Windows环境中.

我试过的下一件事是用于C-Function"putenv"的小型JNI-Wrapper,它看起来像这样:

JNIEXPORT void JNICALL Java_com_splitscreen_AppletTest_PutEnv_putEnv
  (JNIEnv *env, jobject jobj, jstring val) {

    jboolean iscopy;

    const char *mvalue = (*env)->GetStringUTFChars(
                env, val, &iscopy);

    putenv(mvalue);
}
Run Code Online (Sandbox Code Playgroud)

这就是我所说的:

final String curPath = System.getenv( "PATH" );
final PutEnv pe = new PutEnv();
pe.putEnv( "PATH=" + curPath + ";c:\test" );

final String newPath = System.getenv( …
Run Code Online (Sandbox Code Playgroud)

java windows environment

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

有没有办法查看由JITter为给定的C#/ CIL生成的本机代码?

在对这个答案的评论中(建议使用位移运算符而不是整数乘法/除法,为了提高性能),我询问这实际上是否会更快.在我的脑海中有一个想法,在某种程度上,某些东西将足够巧妙地解决这个问题>> 1并且/ 2是相同的操作.但是,我现在想知道这是否真的是真的,如果是,它会发生在什么级别.

测试程序optimize为两种方法产生以下比较CIL(带有on),分别对其参数进行划分和移位:

  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.2
  IL_0002:  div
  IL_0003:  ret
} // end of method Program::Divider
Run Code Online (Sandbox Code Playgroud)

  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.1
  IL_0002:  shr
  IL_0003:  ret
} // end of method Program::Shifter
Run Code Online (Sandbox Code Playgroud)

所以C#编译器正在发出divshr指示,而不是聪明.我现在想看看JITter生成的实际x86汇编程序,但我不知道如何执行此操作.它甚至可能吗?

编辑添加

发现

感谢您的回答,已接受来自nobugz的那个,因为它包含有关该调试器选项的关键信息.最终对我有用的是:

  • 切换到发布配置
  • Tools | Options | Debugger,关闭'抑制模块负载上的JIT优化'(即我们希望允许 JIT优化)
  • 同一个地方,关闭'启用我的代码'(即我们要调试所有代码)
  • Debugger.Break()某处发表声明
  • 构建程序集
  • 运行.exe,当它中断时,使用现有的VS实例进行调试
  • 现在,Disassembly窗口显示了将要执行的实际x86

至少可以说结果很有启发性 - 事实证明JITter实际上可以做算术!这是来自"反汇编"窗口的已编辑样本.各种-Shifter方法除以2的幂>>; 各种-Divider …

.net c# jit cil

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

在DateTime字段中的两个日期之间进行选择 - SQL Server

如何在表中的DateTime字段中选择日期与另一个日期之间的记录.

sql datetime sql-server-2005

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

Solr DIH delta-import与复合主键?

我的Solr数据源是一个SQL数据库,其中主键是复合的(即它是两个字段).

这对我的主要DIH来说很好query,我只是连接字段,这就成了我的Solr主键.但是,从文档中我不清楚如何编写delta-import查询来支持这一点.

文档建议我需要两个查询 - 一个用于查找已更改行的主键,另一个用于查找与每个键对应的单个文档.但是没有示例显示复合键.

理想情况下,我根本不需要这两个单独的查询,如果将这两个查询简单地组合在一起,那么它将减少数据库上的负载,以便query和之间的唯一区别deltaQueryWHERE基于过滤器的子句last_changed.

所以,如果我的主要query是:

SELECT key1 || key2 as pk FROM table
Run Code Online (Sandbox Code Playgroud)

相关deltaQuery(和/或deltaImportQuery)的外观是什么样的?

我尝试添加该WHERE子句,但在查询运行后,我得到了一个关于缺失的警告deltaImportQuery,然后是一个空指针异常.

solr dih

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

将一张表复制到另一张表失败-“每个表中的列名必须唯一”

当我尝试这个时:

SELECT * 
-- INTO DB2.dbo.CustomerOrderLines
FROM DB1.dbo.CustomerOrderLines 
INNER JOIN DB1.dbo.CustomerOrders ON DB1.dbo.CustomerOrders.Order_Display_Ref = DB1.dbo.CustomerOrderLines.Order_Display_Ref
WHERE DB1.dbo.CustomerOrders.Delivered_Date BETWEEN '2009-09-23' and '2009-09-24'
Run Code Online (Sandbox Code Playgroud)

it show the rows correctly.

When I try to copy the contents from one table in DB1 into the same table in DB2 (and create it if it does not exist):

SELECT * 
INTO DB2.dbo.CustomerOrderLines
FROM DB1.dbo.CustomerOrderLines 
INNER JOIN DB1.dbo.CustomerOrders ON DB1.dbo.CustomerOrders.Order_Display_Ref = DB1.dbo.CustomerOrderLines.Order_Display_Ref
WHERE DB1.dbo.CustomerOrders.Delivered_Date BETWEEN '2009-09-23' and '2009-09-24'
Run Code Online (Sandbox Code Playgroud)

it fails with

Msg 2705, Level 16, State 3, …

sql-server

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

C++数组与向量

当使用C++向量时,花费的时间是718毫秒,而当我使用Array时,时间几乎是0毫秒.

为什么这么大的性能差异?

int _tmain(int argc, _TCHAR* argv[])
{
const int size = 10000; 
clock_t start, end; 
start = clock();
vector<int> v(size*size); 
for(int i = 0; i < size; i++)
{  
    for(int j = 0; j < size; j++)
    {   
        v[i*size+j] = 1;  
    } 
} 
end = clock();
cout<< (end - start)
    <<" milliseconds."<<endl; // 718 milliseconds

int f = 0;
start = clock(); 
int arr[size*size]; 
for(int i = 0; i < size; i++)
{  
    for(int j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

c++ arrays vector visual-studio

4
推荐指数
2
解决办法
6149
查看次数

我是否必须JNI分离附加线程?

我有一些需要调用Java的本机线程.为此,我需要使用线程将线程附加到VM AttachCurrentThread.由于此回调将经常发生,因此线程应该保持连接.AttachCurrentThread多次调用很好("尝试附加已经附加的线程是无操作的.")

DetachCurrentThread在线程退出之前我是否必须调用,是否会自动发生,或者甚至不需要?如果我必须打电话给分离会怎么样,但不是吗?它只是"泄漏",还是会破坏虚拟机状态?

我已经检查了Java Native Interface规范,但要么错过了这个,要么就是未指定.

我的问题特别适用于Windows XP上的Sun JDK 6.

java windows java-native-interface multithreading jvm

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

我应该使用迁移来创建文件夹吗?

我创建了一个功能,需要两个文件夹才能正常工作.这些文件夹在rails项目中不存在,所以我不得不创建它们.现在我需要推送这个功能,以便其他开发人员也可以使用它.

您认为最佳做法是什么?

  1. 在本地创建文件夹并在某处留言,说明需要创建这些文件夹

  2. 创建将创建这些文件夹的迁移

  3. 如果文件夹在执行时不存在,请创建它们

那么关于这个的最佳实践是什么?

ruby migration ruby-on-rails

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

如何更改WPF应用程序的StartupUri?

我试图修改App.cs并从代码后面加载WPF XAML文件,但它不能正常工作.

无论我试图将其设置为StartupUri,它都不会启动,程序将在此之后退出.

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        LoginDialog dlg = new LoginDialog();
        if (dlg.ShowDialog() != true)
            return;

        switch (dlg.ChoiceApp) { 
            case ChoiceApp.CustomerEntry:
                StartupUri = new Uri("/MyApp;component/Forms/CustomerEntry.xaml", 
                    UriKind.Relative);
                break;
            case ChoiceApp.VendorEntry:
                StartupUri = new Uri("/MyApp;component/Forms/VendorEntry.xaml", 
                    UriKind.Relative);
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我甚至做了跟踪并发现LoginDialog工作正常并正确返回值,但设置"StartupUri"不起作用.

我在反向程序集中检查了在OnStartup之后调用App的DoStartup方法,所以从技术上讲,我的StartupUri必须加载,但它没有,在App.xaml启动uri根本没有定义.

注意:Bug已确认

我注意到ShowDialog设置了Application.MainWindow,当对话结束时,它将其设置为null,并且由于此设置,在OnStartup或Startup事件中调用Modal Dialog后,StartupUri不起作用.

关于无效的uri或类似的东西没有错误或例外.

这个方法在没有在Startup事件或OnStartup中调用DialogBox的情况下工作,我认为在这个方法上调用showdialog会导致它的主窗口设置为过期窗口,并在此之后关闭.

wpf uri startup

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

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