小编Lim*_*ent的帖子

为什么不在System.Double和System.Long上使用volatile?

有人问过像我这样的问题,但我的情况有点不同.现在的问题是,"为什么volatile关键字不允许C#在类型System.DoubleSystem.Int64等?"

乍一看,我回答了我的同事,"好吧,在32位机器上,这些类型至少需要两个滴答才能进入处理器,.Net框架的目的是抽象出像这样的处理器特定细节. " 他回答说:"如果由于处理器特定的问题导致你无法使用某个功能,那么它就不会抽象出任何东西!"

他暗示一个特定于处理器的细节不应该出现在使用框架的人身上,这个框架"抽象"远离程序员的细节.因此,框架(或C#)应该抽象出那些并做它需要做的事情来提供相同的保证System.Double等等(无论是信号量,内存障碍还是其他).我认为框架不应该增加信号量的开销volatile,因为程序员不期望使用这样的关键字这样的开销,因为32位类型不需要信号量.64位类型的更大开销可能会让人感到意外,因此,更好的.Net框架只是不允许它,并且如果开销是可接受的,那么就可以在更大的类型上使用自己的信号量.

这导致我们调查volatile关键字的全部内容.(见页).该页面在说明中说明:

在C#中,在字段上使用volatile修饰符可确保对该字段的所有访问都使用VolatileRead或VolatileWrite.

嗯..... VolatileRead并且VolatileWrite都支持我们的64位类型!! 那么我的问题是,

"为什么volatile关键字不允许C#在类型System.DoubleSystem.Int64等?"

.net c# multithreading volatile

40
推荐指数
3
解决办法
7986
查看次数

为什么GLSL变化为进/出?

我知道如何使用输入/输出变量和变量变量.我完全清楚使用输入/输出变量更好,因为它不被弃用.

这是一个非常小的事情,但我真的不明白为什么他们改变了这一点.以前我可以将代码放在一个着色器中,将其复制并粘贴到另一个着色器中,这样就可以了.现在我必须将它粘贴到另一个并将所有内容更改为"out"(而不是"in").

我不介意这样做,我只是对进/出变量是否有优势感到非常好奇,如果没有,为什么Khronos组会改变它.

opengl shader glsl

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

Git - 从存储库中删除所有类型的文件

如何从存储库中删除所有类型的文件?我正在使用

git filter-branch --index-filter 'git rm -rf --cached **/*.jar'
Run Code Online (Sandbox Code Playgroud)

无论是git都没有扩展globs,或者它没有**像我期望的那样扩展.

git git-rm

10
推荐指数
4
解决办法
9864
查看次数

C# - 从指针创建托管数组

我正在尝试从一个字节数组创建一个双重托管数组.我目前有问题,但我想优化.这是我想要使用的一些代码:

private unsafe static double[] _Get_Doubles(byte[] _raw_data)
{
    double[] ret;
    fixed (byte* _pd = _raw_data)
    {
        double* _pret = (double*)_pd;
        ret = (double[])*_pret; //FAILURE
    }
}
Run Code Online (Sandbox Code Playgroud)

请让我知道如何处理这些问题.

-Aaron

arrays pointers unmanaged managed

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

使用PowerShell远程运行Java

当我在远程会话()中运行PowerShelletsn {servername},我有时似乎无法运行Java进程,即使是最简单的:

[chi-queuing]: PS C:\temp> java -cp .\hello.jar Hello
Error occurred during initialization of VM
Could not reserve enough space for object heap
Run Code Online (Sandbox Code Playgroud)

Hello.jar是一个"你好,世界!" 应该只打印"Hello"到标准输出的应用程序.

所以,问题是,在PowerShell会话的另一端运行进程有什么特别之处吗?关于Java VM如何工作可能不允许这样的处理吗?内存是在远程计算机上分配的,对吧?以下是可用物理内存的读数:

[chi-queuing]: PS C:\temp> $mem = Get-wmiobject -class Win32_OperatingSystem
[chi-queuing]: PS C:\temp> $mem.FreePhysicalMemory
1013000
Run Code Online (Sandbox Code Playgroud)

但是,当我远程桌面到服务器并询问操作系统有多少可用内存时,它说270 MB物理内存可用.让我知道你的想法!

java powershell process powershell-remoting

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

C#关闭标准输出

我希望能够将我的程序从控制台中分离出来wget -b.代码片段可能看起来像

static void Main(string[] args)
{
    var settings = new Settings(args);
    if (settings.Background)
    {
        /*Tell the user what's going on.*/
        System.Console.WriteLine("Detatching from console. The program will still be running.");
        System.Console.Out.Close();
    }
    /*do work then exit.*/
}
Run Code Online (Sandbox Code Playgroud)

但是System.Console.Out.Close();没有做正确的事.

为了澄清,"正确的事情"是,当从控制台运行此程序时,应该重新出现提示.或者,从中运行此程序时explorer.exe,控制台窗口应该关闭.

如果我不清楚,请告诉我.

c# console redirectstandardoutput

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

powershell运行java进程问题

我正在尝试通过Windows XP中的Powershell运行java进程.这是命令:

java.exe -cp .;./common.jar -Dcontext=atest1 -Dresourcepath=. DW_Install
Run Code Online (Sandbox Code Playgroud)

所以,类路径是.和.\ common.jar(我认为java采用了错误的斜杠,对吗?)有两个环境变量,一个是"atest1",另一个是"." 并且执行main的类是DW_Install(在默认包中).

此命令在cmd.exe中有效,但不是PS.这是怎么回事?什么是PS在解析CMD不执行此命令时所做的事情(反之亦然)?

亚伦

java powershell command-line

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

Visual Studio 2008 工具栏莫名其妙地不断移动

当我在工作时,在看起来不太随机的不同时间,窗户一直在移动! 这是我的 Visual Studio 布局的图片。它跨越两个屏幕,所以解决方案资源管理器在左侧屏幕的右侧,而代码窗口在右侧是全屏的。

发生这种情况时,解决方案资源管理器(以及停靠在它上面的所有其他窗口——属性和类视图)会移动。它们会改变大小和位置。它们的位置(左上角)移动到代码窗口右下角的某个位置,它们变得宽阔而矮小。

我的窗户在其他时候还有一个地方,特别是在它们大约 30-40 像素的位置的左侧。

我注意到,如果我按照我喜欢的方式设置所有内容,然后关闭 Visual Studio,然后打开 Visual Stuio,大多数事情都是我喜欢的方式。

正如我所说,有几种触发方式。具体来说,有时当抛出异常并且调试器必须捕获它们并显示非常小的异常框时。我会说大约 10% 或 20% 的时间,但这似乎不是完全随机的。一些异常,如果我多次运行程序,并且异常被 IDE 捕获,将可靠地导致工具栏中的这种跳转。这个基于异常的跳转总是(就我记得的那样)我描述的解决方案资源管理器的第一个跳转到代码窗口的右下角。

除此之外,有时当我启动 Visual Studio 时,窗口会进行我所说的第二次跳跃(左上 30 或 40 像素)。这个比较靠谱。事实上,如果我能启动 Visual Studio 并且窗口在我想要的地方,我就很高兴了。

最后,问题。是否有设置文件至少可以查看 Visual Studio 尝试放置工具栏的位置?我注意到,对于 Visual Studio 何时恢复、最大化和全屏,似乎有单独的设置,它可以记住并在适当的时间应用。

请帮助我使我的 IDE 更稳定!

toolbar visual-studio-2008 solution-explorer

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

如何设置一个简单的 SVN 服务器?

我有一个很久以前创建的工作存储库,现在我正在尝试设置另一个,但我遇到了很大的困难。这是我为创建第二个所做的工作;我希望这能奏效:

U:\repos>svnadmin create repo1
U:\repos>echo password-db = passwd >> repo1/conf/svnserve.conf
U:\repos>echo auth-access = write >> repo1/conf/svnserve.conf
U:\repos>echo user1 = user >> repo1/conf/passwd
U:\repos>cd repo1
U:\repos\repo1>svnserve -d
Run Code Online (Sandbox Code Playgroud)

而在另一个终端:

U:\>mkdir wc
U:\>cd wc
U:\wc>svn co svn://localhost/repo1
svn: E210005: Unable to connect to a repository at URL 'svn://localhost/repo1'
svn: E210005: No repository found in 'svn://localhost/repo1'
U:\wc>
Run Code Online (Sandbox Code Playgroud)

另一个存储库以相同的方式配置在u:\repo。这是怎么回事?

svn version-control svnadmin svn-checkout svnserve

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

Ant使用antlib与命名空间

我使用以下演示脚本:

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" basedir="." xmlns:deploy="antlib:net.sf.antcontrib">
    <target name="default">
        <taskdef resource="net/sf/antcontrib/antlib.xml">
            <classpath>
                <pathelement location="lib/ant-contrib-1.0b3.jar"/>
            </classpath>
        </taskdef>
        <deploy:if>
            <isset property="defaultprop"/>
            <then>
                <echo message="it's set!"/>
            </then>
        </deploy:if>
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

当我运行这个构建脚本(带目标default)时,错误是

build.xml:9: Problem: failed to create task or type antlib:net.sf.antcontrib:if
Run Code Online (Sandbox Code Playgroud)

这个问题lib/ant-contrib-1.0b3.jar存在,蚂蚁正在捡起它.我在想问题是我如何使用xmlns.我从另一个我不具备的例子中得到这个(虽然它可以在特定的服务器上运行!),并试图找出魔法酱是什么.

java ant ant-contrib

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

.Net GroupBox 中的定位控件

通常,我使用以下方法编写可(优雅地)调整大小的表单。

using System.Drawing;
using System.Windows.Forms;
namespace silly
{
    public class Form1 : Form
    {
        private GroupBox g;
        private Button b1, b2;
        public Form1()
        {
            Init();
        }
        private void Init()
        {
            //create and add controls.
            this.Controls.Add(g = new GroupBox());
            g.Controls.AddRange(new Control[] { 
                    b1 = new Button(),
                    b2 = new Button()});


            g.Text = "group";
            b1.Text = "b1";
            b2.Text = "b2!";


            b1.AutoSize = b2.AutoSize = true;


            g.Resize += new System.EventHandler(g_Resize);

        }

        private void g_Resize(object sender, System.EventArgs e)
        {
            b1.Size = b2.Size = new …
Run Code Online (Sandbox Code Playgroud)

c# user-interface controls groupbox winforms

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

变量可能已经被分配

以下代码有错误:

class A
{

  private final String val;

  public A(){
    this.val = null;
  }

  public A(String val){
    this();
    this.val = val;
  }
}
Run Code Online (Sandbox Code Playgroud)

错误是“可能已经分配了变量 val

是否有解决此错误的方法,而无需重新编写可能在默认构造函数中的任何代码?这是一个最小的工作示例;如果你问自己“默认构造函数中有哪些代码”,请记住,一个真实的例子可能有很多你不想在其他构造函数中重复的代码(分配其他最终变量等)。

还请记住,这是一个最小的例子,同样的问题存在于大量的构造函数中。

java constructor variable-initialization constructor-chaining

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