小编LCC*_*LCC的帖子

找出环境变量是否包含子字符串

我需要找出一个特定的环境变量(让我们说Foo)在一个Windows批处理文件中是否包含子字符串(比如说BAR).有没有办法只使用批处理文件命令和/或默认安装的程序/命令与Windows?

例如:

set Foo=Some string;something BAR something;blah

if "BAR" in %Foo% goto FoundIt     <- What should this line be? 

echo Did not find BAR.
exit 1

:FoundIt
echo Found BAR!
exit 0
Run Code Online (Sandbox Code Playgroud)

上面标记的行应该使这个简单的批处理文件打印"Found BAR"?

windows batch-file

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

OS X:在不降低流程的情况下生成核心转储?

我知道如何在进程崩溃时在OS X上生成核心转储,但我真正需要做的是附加到进程,生成核心转储,然后恢复该进程(不杀死它).

很久以前(也许是一年半前)我有C代码可以做到这一点......它使用OS X内核库连接到一个进程,读取它的所有线程状态和内存,并将其写入磁盘上的Mach-O文件.这很好用(这正是我正在寻找的),但现在我似乎无法找到我的生活代码.我似乎记得代码与OS X系统内部书有一定关系,但这只是一个模糊的回忆.

有谁知道我正在谈论的代码,可以指出我吗?如果不是,是否有人知道这样做的好方法最好是一些示例代码?

编辑:这是答案.

信息:http: //osxbook.com/book/bonus/chapter8/core/

将为您完成的计划:http: //osxbook.com/book/bonus/chapter8/core/download/gcore-1.3.tar.gz

c debugging macos coredump

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

知道Winforms TextBox中插入符号的点位置?

我需要知道我的窗口中插入符号当前所在的确切位置,以便我可以在文本下方弹出一个小窗口(类似于智能感知或拼写检查).问题是GetPositionFromCharIndex似乎不适用于TextBoxes.这就是我想要做的:

Point pt = mTextBox.GetPositionFromCharIndex(mTextBox.SelectionStart);
pt.Y = (int)Math.Ceiling(mTextBox.Font.GetHeight());
mListBox.Location = pt;
Run Code Online (Sandbox Code Playgroud)

但是,GetPositionFromCharIndex总是为TextBoxes返回(0,0)(显然它没有像RichTextBox那样实现).虽然这个函数(和这个代码)适用于RichTextBoxes,但我不希望将其余的代码从TextBox迁移到RichTextBox,除非是绝对的LAST度假胜地.有与RichTextBox的/文本框这么多的不兼容问题,我将不得不重新编写一个非常大的数据块的我的代码来做到这一点.

是否有任何Winforms巫师知道如何做到这一点?

c# winforms

7
推荐指数
2
解决办法
4598
查看次数

当你在编译时不知道DLL时PInvoke?

在C#中,我正在尝试使用C++中的"简单"函数.问题是我在编译时不知道库的名称或位置.在C++中,这很容易:

typedef HRESULT (*SomeFuncSig)(int, IUnknown *, IUnknown **);

const char *lib = "someLib.dll";  // Calculated at runtime

HMODULE mod = LoadLibrary(lib);
SomeFuncSig func = (SomeFuncSig)GetProcAddress("MyMethod");

IUnknown *in = GetSomeParam();
IUnknown *out = NULL;
HRESULT hr = func(12345, in, &out);

// Leave module loaded to continue using foo.
Run Code Online (Sandbox Code Playgroud)

对于我的生活,我无法弄清楚如何在C#中做到这一点.我不会有任何麻烦,如果我知道DLL的名称,它看起来事情是这样的:

[DllImport("someLib.dll")]
uint MyMethod(int i,
              [In, MarshalAs(UnmanagedType.Interface)] IUnknown input, 
              [Out, MarshalAs(UnmanagedType.Interface)] out IUnknown output);
Run Code Online (Sandbox Code Playgroud)

如果不知道我在编译时加载的DLL,我该怎么做?

c# pinvoke

7
推荐指数
2
解决办法
1453
查看次数

CLR主机:使用任意方法签名调用函数?

我需要一个C++程序,加载CLR并在C#库中调用一个函数.我需要调用的函数将COM接口作为参数.

我的问题是,CLR托管接口似乎只允许您使用此签名调用方法:

int Foo(String arg)
Run Code Online (Sandbox Code Playgroud)

例如,这个C++代码加载CLR并在"test.exe"中运行P.Test函数:

ICLRRuntimeHost *pClrHost = NULL;
HRESULT hrCorBind = CorBindToRuntimeEx(NULL, L"wks", 0, CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (PVOID*)&pClrHost);

HRESULT hrStart = pClrHost->Start();

DWORD retVal;
HRESULT hrExecute = pClrHost->ExecuteInDefaultAppDomain(L"C:\\Test.exe", L"P", L"Test", L"", &retVal);
Run Code Online (Sandbox Code Playgroud)

我需要做的是用这个方法签名调用一个函数(注意我拥有C#代码,所以我可以改变它):

void SomeFunction(IFoo interface)
Run Code Online (Sandbox Code Playgroud)

其中IFoo是一个com接口.如果我可以调用这样的函数,我甚至可以做我需要的东西:

IntPtr SomeFunction();
Run Code Online (Sandbox Code Playgroud)

我可以让SomeFunction构造一个正确的委托,然后使用Marshal.GetFunctionPointerForDelegate.但是,我无法弄清楚除了使用int func(string)签名调用函数之外,如何使托管接口执行任何操作.

有谁知道如何从具有不同签名的C++代码调用C#函数?

(注意我不能使用C++/CLI.我需要使用托管API.)

c# clr clr-hosting

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

正确的数据结构用于(此特定的)过期缓存?

我需要从一个非常大,高度相互关联的数据集中读取数据,这些数据相当局限,而且读取也相当昂贵。特别:

  1. 数据集的大小为2gig-30gigs,因此我必须将文件的各个部分映射到内存中才能读取。与我在算法中所做的其余工作相比,这是非常昂贵的。通过分析,我发现大约60%的时间都花在读取内存上,因此这是开始优化的正确位置。
  2. 当处理该数据集的一部分时,我必须遵循其内部的链接(将其想象为类似于链表),尽管不能保证这些读取接近顺序,但它们的位置相当合理。这意味着:
  3. 例如,假设我们一次处理2兆的内存。如果您将2兆的数据读取到内存中,则我随后必须进行的读取操作中大约有40%将位于相同的2兆的内存中。大约20%的读取将是其余数据中的纯随机访问,而另外40%的链接很有可能链接回到指向该段的2meg段。

从对问题的了解和剖析中,我相信向程序引入缓存将大有帮助。我想要做的是创建一个缓存,其中包含N个X内存块的N个块(N和X是可配置的,因此我可以对其进行调整),在必须映射另一部分内存之前,我首先要检查它。此外,缓存中存储的内容越长,我们在短期内请求该内存的可能性就越小,因此最早的数据将需要过期。

毕竟,我的问题很简单: 哪种数据结构最适合实现这种性质的缓存?

我需要非常快速的查找以查看给定地址是否在缓存中。对于缓存的每个“未命中”,我都希望使它的最旧成员过期,并添加一个新成员。但是,我计划尝试对其进行调整(通过更改缓存的数量),以使70%或更多的读取被命中。

我当前的想法是使用AVL树(用于搜索/插入/删除的LOG2 n)将是最安全的(不退化的情况)。我的另一个选择是稀疏哈希表,以便在最佳情况下查找将为O(1)。从理论上讲,它可以退化为O(n),但实际上,我可以将碰撞保持在较低水平。这里的问题是查找和删除哈希表中最旧的条目需要多长时间。

是否有人对这里最好的数据结构有什么想法或建议,为什么?

c++ algorithm caching

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

arm内存模型与ia64有何不同?

我必须在工作中处理许多多线程编程.具体来说,我想知道ARM内存模型与IA64的区别.两者都是非常弱的模型,但是我应该知道哪些具体的差异?我熟悉ia64,而不是手臂.

architecture arm itanium

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

在Windows Phone 7上使用MySQL数据库?

我正在尝试编写一个需要连接到远程数据源的Windows Phone 7应用程序,在这种情况下,它是Linux服务器上的MySQL数据库.我无法将其转移到MSSQL,也无法构建任何类型的基于Windows的解决方案(如服务器上的WCF Web服务).

有没有办法让我从我的Windows Phone 7应用程序中使用我的MySQL数据库?MySQL程序集似乎无法在手机上运行.如果没有,那么从手机上使用这个数据库的最佳解决方案是什么?

mysql windows-phone-7

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

DispatcherTimer不在wpf应用程序中触发

我最近重构了我的WPF代码,现在我的DispatcherTimer停止了解雇.我在这里检查了其他类似的帖子,但他们似乎都有错误的调度程序线程集的问题,我试过...

我的代码看起来像这样:

class MainWindow : Window
{
    private async void GoButton_Click(object sender, RoutedEventArgs e)
    {
        Hide();

        m_files = new CopyFilesWindow();
        m_files.Show();

        m_dispatcherTimer = new DispatcherTimer();
        m_dispatcherTimer.Tick += dispatcherTimer_Tick;
        m_dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 250);
        m_dispatcherTimer.Start();

        await SomeLongRunningTask();

        m_files.Hide();
        Show();
    }
Run Code Online (Sandbox Code Playgroud)

(当前类是我的主要Window对象,我在文件复制期间隐藏它.CopyFilesWindow是一个简单的Xaml窗口,其中包含我修改的控件... CopyFilesWindow本身绝对没有.)

基本上,我等待一个长时间运行的任务(复制一堆大文件),我的DispatcherTimer应该更新dispatcherTimer_Tick中的进度.但是,我在该函数上设置了一个断点,它没有被击中.

我也尝试使用构造函数设置Dispatcher,如下所示:

        m_dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal, m_files.Dispatcher);
        m_dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal, this.Dispatcher);
Run Code Online (Sandbox Code Playgroud)

但这些都不会改变这种行为......它仍然不会触发.

我在这做错了什么?

c# wpf dispatchertimer

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

调试 .net 的 WebClient

有没有什么好方法(除了安装 WireShark)将原始 http 请求数据发送到网络服务器?我怀疑我发送的请求不正确或格式错误,但我不知道如何通过调用 WebClient.UploadValues 获取发送到网络服务器的原始请求字符串。

c# webclient

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