问题列表 - 第44252页

D中的扩展方法?

嘿伙计们,我正试图让这些语法对我有意义:

S[] split(S)(S s) if (isSomeString!S)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

string join(in string[] words, string sep)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

(如图所示phobos/src/std/string.d)

据我所知,这是一段允许我们做的事情的代码:

string[] parts = "/foo/bar/baz".split("/"); // string[] {"foo", "bar", "baz"}
string part = parts.join("-"); // string "foo-bar-baz"
Run Code Online (Sandbox Code Playgroud)

这基本上让我相信类似于我从CSharp中知道的扩展方法在d中是可能的.我遇到的问题是:

  1. 我不是100%肯定我在这里看正确的函数声明
  2. 我没看到是什么让他们相似.

extension-methods d phobos

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

Linux内核互斥体

我正在阅读"Linux设备驱动程序第3版",关于同意和竞争条件的章节.有一个我不完全理解的例子; 他们正在谈论内核编程中的一个常见模式,当需要在当前线程之外启动活动(例如,新内核线程或用户进程,请求现有进程或基于硬件的操作)时,等待该活动到完成.不是非常有效的解决方案的例子是:

struct semaphore sem;
init_MUTEX_LOCKED(&sem);
start_external_task(&sem);
down(&sem);
Run Code Online (Sandbox Code Playgroud)

然后他们建议外部任务在其工作完成时调用(&sem).

我不明白为什么我们不能这样做:

struct semaphore sem;
down(&sem);
start_external_task(&sem);
Run Code Online (Sandbox Code Playgroud)

为什么有必要在锁定状态下创建互斥锁,然后在任务启动后获取互斥锁?

期待您的回音!谢谢.

c linux multithreading kernel

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

此COM对象是否受垃圾回收?

我正在使用来自.NET的COM对象使用互操作.该对象基本上从socket获取数据并触发一些事件以供.NET层处理.但是,过了一段时间后,COM对象会停止触发事件,这些事件后来显示是因为它是由GC收集的.

源代码的结构类似于下面这个:

static void Main(string[] args)
{
    MyEventGen gen = new MyEventGen();
    WeakReference wr = new WeakReference(gen);
    gen.ReceiveDataArray += 
            new _IMyEventGenEvents_ReceiveDataArrayEventHandler(gen_ReceiveDataArray);
    while (true)
    {
        Thread.Sleep(1000);
        Console.WriteLine(wr.IsAlive);
    }
}

static void gen_ReceiveDataArray(ref Array indices, ref Array values)
{
    // do nothing
}
Run Code Online (Sandbox Code Playgroud)

替代文字

到目前为止我所知道的:

  • 据我所知,对象gen不应该以任何方式进行垃圾收集.由于对象在Main范围内仍处于活动状态.但到目前为止的结果表明该对象是由GC收集的.

  • 该对象仅在构建为Release时进行垃圾收集,并且无需调试即可运行.在调试器下运行Debug构建/运行两种模式都可以.

  • 该程序将在第一代Gen#0 Collection之后精确打印第一个"False" .

  • 通过访问while循环中的对象,例如Console.WriteLine(gen.ToString()),防止它被GC'd!

  • 通过添加另一个Program类的静态字段来保持其引用也阻止它来自GC'd.

  • 尝试使用不同的数据负载,我发现GC只在Private Bytes达到~3X MB的阈值时收集对象.

  • 使用CLRProfiler进行检查时,提到的对象被GC'd怀疑.

我是否错过了一些重要的.NET GC概念?是否有可能获得对象GC'd的原因?这可能是一个已知的GC错误吗?

我正在使用VS 2008 + .NET 3.5 …

.net c# com garbage-collection com-interop

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

gcc failes用前缀命名空间编译运算符定义

my_type在命名空间中为类声明了运算符my_namespace.

namespace my_namespace {
 class my_type
 {
  friend std::ostream& operator << (std::ostream& out, my_type t);
 }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试在实现文件中定义这些运算符,但是当我写这样的东西时

std::ostream& my_namespace::operator << (std::ostream& out, my_type t)
{
 out << t;
 return out;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

error: ... operator should have been declared inside 'my_namespace'

当我改为

namespace my_namespace {
    std::ostream& operator << (std::ostream& out, my_type t)
    {
     out << t;
     return out;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后它编译,但我不明白这个问题.为什么这不能编译?那一切都是正确的吗?我很感激链接到标准,因为我真的不知道要搜索什么.

添加

file.h

#ifndef A_H
#define A_H

#include <iosfwd>

namespace N
{
 class A
 { …
Run Code Online (Sandbox Code Playgroud)

c++ gcc namespaces operator-overloading

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

从TFS获取文件列表

我试图弄清楚如何从TFS中的特定文件夹("$/theproject/trunk/setup /")获取文件列表,而不将它们放在本地文件夹中.

到目前为止,我已设法连接,创建工作区和工作文件夹:

        var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/"));
        var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server);
        var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));

        var workspace = versionControl.CreateWorkspace(AppDomain.CurrentDomain.FriendlyName + "-installer", versionControl.AuthorizedUser);
        try
        {
            WorkingFolder folder = new WorkingFolder("$/theproject/trunk/setup/", "C:\\aTempFolder");
            workspace.CreateMapping(folder);

            //this would get all files to the local folder, right?
            //what should I do instead to just get a file list?
            workspace.Get(); 

        }
        finally
        {
            workspace.Delete();
        }
Run Code Online (Sandbox Code Playgroud)

c# tfs

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

何时不需要/不需要使用AntiForgeryToken?

UPD:security.stackexchange.com上提出同样的问题,我得到的答案是不同的.请关注那里,以获得正确的答案!

我正在运行一个相当大的网站,每天都有成千上万的访问量,而且用户群相当大.

自从我开始迁移到MVC 3以来,我一直在以多种形式放置AntiForgeryToken,修改受保护的数据等.

其他一些形式,如登录/注册现在也使用AntiForgeryToken,但我首先对它们的需求感到怀疑,原因有两个......

  1. 登录表单要求海报知道正确的凭据.我真的无法想到csrf攻击会在这里受益.特别是如果我检查请求来自同一主机(检查Referrer标头)
  2. 每次加载页面时,AntiForgeryToken令牌都会生成不同的值.如果我有两个选项卡打开登录页面,然后尝试发布它们,第一个将成功加载.第二个将失败并出现AntiForgeryTokenException(首先加载两个页面,然后尝试发布它们).使用更安全的页面 - 这显然是一个必要的恶魔,登录页面 - 似乎有点矫枉过正,只是要求麻烦:S

可能还有其他原因可以解释为什么人们会在表单中使用/不使用令牌.我是否认为在每个帖子中使用令牌都是错误的/矫枉过正的,如果是这样的话 - 哪种表格会从中受益,哪些人肯定不会受益?

csrf antiforgerytoken asp.net-mvc-3

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

c ++中的浮点变量

当我在八位数溢出后在c ++中使用float或double时,如何修复它?

这是我的代码:

#include <iostream.h> 
#include <conio.h> 
void main() { 
  double x; 
  cout<<"double : "; 
  cin>>x; 
  cout<<endl<<x; 
  getch(); 
}
Run Code Online (Sandbox Code Playgroud)

当cin = 123456789时,这是我的cout:123457e.08.

c++ double

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

libintl3和libiconv2 for gnu make在windows上,需要在MinGW上用ruby编译vim

我正在尝试运行gnu make for windows,但它不会运行因为libint3.dll找不到.

果然,http://gnuwin32.sourceforge.net/packages/make.htm指定libint3并且libiconv2是必需的,但尝试遵循其链接显然会在服务器上生成错误.

那么,我需要这些库,我在哪里可以获得它们,或者
我可以从其他地方下载gnu make.

更多背景

这是我尝试做的事情,也许其他人可以共享一种方式完全不同的方式:我想编译vim支持ruby 1.8.7以便我可以使用http://code.google.com/ p/vorax /插件为vim.我下载了minGW,gnuMake,ruby 1.8.7和vimsources,我现在正在调用(vim的)makefile Make_ming.mak.

我添加了相应的标签,因为可能 - 只是可能 - 其他人遇到了同样的问题.

vim gnu mingw makefile

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

在WP7中使用Facebook.dll发布到Facebook用户墙

如何使用WP7中的Facebook.dll在Facebook中发布到用户墙.我发现了一个名为PostAsync()的方法,但我无法理解这些参数.任何帮助都会感激不尽.谢谢

c# post facebook windows-phone-7

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

使用wpf发送电子邮件

嗨,我想在一个wpf应用程序发送电子邮件,但我卡住了; 我显示我的xaml代码

 <Grid>
    <Button     Style="{DynamicResource ShowcaseRedBtn}"  CommandParameter="test@ygmail.com" Tag="Send Email" Content="Button" Height="23" HorizontalAlignment="Left" Margin="351,186,0,0" Name="button1" VerticalAlignment="Top" Width="140" Click="button1_Click" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="92,70,0,0" Name="txtSubject" VerticalAlignment="Top" Width="234" />
    <TextBox AcceptsReturn="True" AcceptsTab="True"   Height="159" HorizontalAlignment="Left" Margin="92,121,0,0" Name="txtBody" VerticalAlignment="Top" Width="234" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

在这里的代码背后:

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        Button btn = sender as Button;
        if (btn == null)
            return;
        string url = btn.CommandParameter as string;
        if (String.IsNullOrEmpty(url)) 
            return;
        try
        {
            // here i wish set the parameters of email in this way 
            // …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf

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