小编Kla*_*ark的帖子

排序数字对的算法

我遇到了一个问题,我需要一些来自SO的聪明人的帮助.我有N对无符号整数.我需要对它们进行排序.对的结束向量应该按每对中的第一个数字非减少地排序,并且每对中的第二个数字不增加.每对可以具有彼此交换的第一和第二元素.有时候没有解决方案,所以我需要抛出异常.

例:

in pairs:
1 5
7 1
3 8
5 6

out pairs:
1 7     <-- swapped
1 5     
6 5     <-- swapped
8 3     <-- swapped
Run Code Online (Sandbox Code Playgroud)

^^没有交换对,就不可能构建解决方案.所以我们交换对(7,1),(3,8)和(5,6)并构建结果.要么

in pairs:
1 5
6 9

out:
not possible
Run Code Online (Sandbox Code Playgroud)

另一个显示"排序对"的示例不是解决方案.

in pairs:
1 4
2 5
out pairs:
1 4
5 2
Run Code Online (Sandbox Code Playgroud)

谢谢

sorting algorithm

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

C# - R接口

我需要将R连接到某个C#应用程序.我安装rscproxy_1.3R_Scilab_DCOM3.0-1B5添加COM引用到STATCONNECTORCLNTLib,StatConnectorCommonLibSTATCONNECTORSRVLib,但我仍然不能得到它的工作.

当我运行以下测试程序时:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//COM references
using STATCONNECTORCLNTLib;
using StatConnectorCommonLib;
using STATCONNECTORSRVLib;

namespace R_TESTING
{
    class Program
    {
        static void Main(string[] args)
        {
            StatConnector sc1 = new STATCONNECTORSRVLib.StatConnectorClass();         
            sc1.Init("R");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

Unhandled Exception: System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80040013
   at STATCONNECTORSRVLib.StatConnectorClass.Init(String bstrConnectorName)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

更新: 好的,仍然没有运气.我会试着解释一下到目前为止我做了什么.

从rproject安装R-2.12.2-win.exe到 C:\Program Files\R\R-2.12.2

下载rscproxy_1.3-1.zip并将其复制/粘贴到 C:\Program Files\R\R-2.12.2\library

安装了R_Scilab_DCOM3.0-1B5.exe到 C:\Program Files (x86)\R\(D)COM Server

使用Scilab进行基本测试.我试图运行它,但我得到以下错误:

加载StatConnector服务器...完成初始化R ...函数调用失败代码:-2147221485文本:安装问题:无法加载连接器释放StatConnector服务器...完成

比我查看PATH /系统变量,发现没有路径/ R_HOME/R_USER信息.另外,我在注册表中找不到任何与R相关的内容.

我想我做的事情非常糟糕,所以我非常需要你们的帮助.

c# r

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

Windows文件系统:删除并再次创建文件时,文件的创建时间不会更改

我有以下情况:

  • 1:创建一堆文件

  • 2:调用一些外部应用程序来处理自上次快照以来创建时间不同的所有文件

  • 3:删除文件

  • 4:转到1

事实证明,当用户创建文件,删除它并创建具有相同名称的文件时,Windows不保证它会改变创建时间.

我写了一个小的PowerShell脚本来验证这个:

ls | Remove-Item

$fileListOld = @{}
foreach($i in 1..1000)
{
    $fname = [string]::Format("{0}.txt", $i)
    "tst" >> $fname    
}

ls | % { $fileListOld[$_.Name] = $_ }
ls | Remove-Item

foreach($i in 1..1000)
{
    $fname = [string]::Format("{0}.txt", $i)
    "tst" >> $fname    
}

$fileListNew = @{}
ls | % { $fileListNew[$_.Name] = $_ }

$count = 0



foreach ($fname in $fileListNew.Keys)
{
    if ($fileListNew[$fname].CreationTimeUtc -eq $fileListOld[$fname].CreationTimeUtc)
    {
        Write-Host Same creation time -ForegroundColor Red
        Write-Host $fname …
Run Code Online (Sandbox Code Playgroud)

windows filesystems winapi

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

Sql Server CLR加载程序集失败

我正在尝试部署CLR TVF(表值函数).在代码中我使用JavaScriptSerializer来解析一些JSON字符串,所以我引用了System.Web.Extensions dll,我的问题从那里开始.

项目构建正常,但当我尝试注册该DLL时,我收到以下错误:

程序集"my_assembly_name"引用程序集"system.web.extensions,version = 4.0.0.0,culture = neutral,publickeytoken = 31bf3856ad364e35.",这在当前数据库中不存在.SQL Server尝试从引用程序集来自的相同位置定位并自动加载引用的程序集,但该操作失败(原因:2(系统找不到指定的文件.)).请将引用的程序集加载到当前数据库中,然后重试您的请求.

我从以下引用了system.web.extensions:

C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Web.Extensions.dll

我可以将复制加载设置为true或手动复制程序集,但随后引用错误会更深入 -

程序集"my_assembly_name"引用程序集"system.servicemodel.activation,version = 4.0.0.0,culture = neutral,publickeytoken = 31bf3856ad364e35.",这在当前数据库中不存在.SQL Server尝试从引用程序集来自的相同位置定位并自动加载引用的程序集,但该操作失败(原因:2(系统找不到指定的文件.)).请将引用的程序集加载到当前数据库中,然后重试您的请求.

一切正常,直到我引用Web.Extensions.dll.目标框架是.NET 4.

任何想法/解决方案?

c# sql-server clr assemblies sqlclr

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

在winapi中运行具有最低权限的进程

我写的是与http://ideone.com/类似的东西.目前我正在使用CreateProcess调用运行用户进程.如果它运行的时间超过指定的时间,我会终止进程,但我不知道如何拒绝读/写文件系统权限/创建进程权限等到创建的进程.给定的可执行文件可以是字面上的任何东西,我只需要允许stdin/stdout.如果我可以设置工作记忆集也会很棒.

我在msdn上阅读了很多文章,比如CreateProcessAsUser函数,CreateProcessWithLogonW函数等,但我很快就感到困惑(可能是因为我的win32知识非常有限).仅调用CreateProcessAsUser并使用这些有限的权限(以及如何创建此类用户)创建特殊用户就足够了.

我希望我能在一个函数调用中使用正确的参数实现这一点,所以请帮助.

此外,如果你知道一些类似的开源项目,那将是很棒的.

谢谢.

================================================== ========

编辑:嗨再次:)我仍然坚持这个.我没有足够的时间来处理这个问题,但我猜想snemarch post非常有用.如果某人有开箱即用的解决方案,那就太好了.如果我使用snemarch的链接做某事我会发布.

c++ windows privileges winapi process

8
推荐指数
2
解决办法
1900
查看次数

从UDF访问Sql Server CLR文件系统

我写了一个简单的UDF,应绘制图形并将其保存在磁盘上.实际上,我使用UDF作为SQL SERVER和R之间的代理,因此UDF只通过DCOM将R脚本从SQL SERVER传递给R引擎.一切正常,直到我尝试绘制图形或将其保存到磁盘.我使用UNSAFE权限创建了程序集.

所以,它是这样的:SQL引擎 - > UDF - >(D)COM服务器 - > R - >(D)COM服务器 - > UDF - > SQL引擎.

所以,我的第一个问题是,我可以从UDF创建GUI吗?我猜不是,但值得一提.

第二个问题是,为什么具有UNSAFE权限的程序集无法访问文件系统.我没有收到任何错误,只是没有任何反应.

R环境位于不同的地址空间中,因此我没有看到SQL Engine对CLR的权限会影响它的任何原因.

谢谢

编辑:

我尝试用程序做同样的事情.现在创建一个空文件.这是我的R测试代码:

jpeg("C:\\test1.jpg"); x <- rnorm(100); hist(x); dev.off()
Run Code Online (Sandbox Code Playgroud)

知道这里发生了什么吗?

sql-server clr r sqlclr user-defined-functions

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

返回使用内存流初始化的SqlXml

我试图从一个方法返回一个SqlXml对象,该方法使用方法本地内存流初始化它.即

using (Stream memoryStream = new MemoryStream())
        {
            using (XmlWriter writer = XmlWriter.Create(memoryStream, new XmlWriterSettings { OmitXmlDeclaration = true }))
            {
                serializer.Serialize(writer, myList.ToArray(), ns);
                return new SqlXml(memoryStream);
            }
        }
Run Code Online (Sandbox Code Playgroud)

现在调用它并尝试访问它的字段的方法失败了object disposed exception.

我快速浏览了一下SqlXml.cs,看到它只是保留对描述行为的流的引用.

public SqlXml(Stream value) {
            // whoever pass in the stream is responsible for closing it
            // similar to SqlBytes implementation
            if (value == null) {
                SetNull();
            }
            else  {
                firstCreateReader = true;
                m_fNotNull = true;
                m_stream = value;
            }
Run Code Online (Sandbox Code Playgroud)

我真的希望避免调用者必须通过流并负责它的生命周期.有没有其他方法可以完全初始化SqlXml对象并安全地处理内存流?

编辑:

一种可能的解决方案是使用临时SqlXml变量,然后使用它通过create reader构造函数初始化返回对象: …

c# xml

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

在 FSI 中加载 F# 模块

我有一个 fsx 文件,用于我的项目的交互式开发。它预加载了所有的 dll,另外我想模拟一些在 FSI 世界中应该表现不同的函数。

在 fsx 我有这个代码:

// #r needed dlls
open FSharp.Charting

module InteractiveUtil =
    let plotMe (c : ChartTypes.GenericChart) = c.ShowChart() |> ignore
    let logMe (c : string) = c |> printfn "%s"
Run Code Online (Sandbox Code Playgroud)

现在在我想玩的 .fs 文件中,我有这个:

#if INTERACTIVE
#load "LiveInvestigationPreload.fsx"
open InteractiveUtil
#endif
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行上面的代码片段时,我得到了

错误 FS0039:未定义命名空间或模块“InteractiveUtil”

我还注意到 InteractiveUtil 模块的定义如下所示:

namespace FSI_0009
  module InteractiveUtil = begin
    val plotMe : c:FSharp.Charting.ChartTypes.GenericChart -> unit
    val logMe : c:string -> unit
  end
Run Code Online (Sandbox Code Playgroud)

所以 FSI_0009 是 fsi 为我创建的。

知道如何解决这个问题吗?

f#

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

Powershell和网络路径

我从网络路径调用我的一个脚本.脚本基本上只调用另一个程序并将当前目录作为参数传递给它.

当我传递$ PWD作为参数时,我的程序看到的路径是"Microsoft.PowerShell.Core\FileSystem ::\my_server\public",它当然会失败,因为它需要标准的UNC路径.

我的临时解决方案是简单地做,.Replace("Microsoft.PowerShell.Core\FileSystem::", "")并且它有效,但我想知道将路径从这种"powershell"格式转换为标准UNC的真正方法是什么.

有更好的解决方案吗?

powershell

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

SIMD 性能缓慢 - 无内联

考虑以下计算 i32 数组总和的示例:

示例1:简单的for循环

pub fn vec_sum_for_loop_i32(src: &[i32]) -> i32 {
    let mut sum = 0;
    for c in src {
        sum += *c;
    }

    sum
}
Run Code Online (Sandbox Code Playgroud)

示例 2:显式 SIMD 求和:

use std::arch::x86_64::*;
// #[inline]
pub fn vec_sum_simd_direct_loop(src: &[i32]) -> i32 {
    #[cfg(debug_assertions)]
    assert!(src.as_ptr() as u64 % 64 == 0);
    #[cfg(debug_assertions)]
    assert!(src.len() % (std::mem::size_of::<__m256i>() / std::mem::size_of::<i32>()) == 0);

    let p_src = src.as_ptr();
    let batch_size = std::mem::size_of::<__m256i>() / std::mem::size_of::<i32>();

    #[cfg(debug_assertions)]
    assert!(src.len() % batch_size == 0);

    let result: i32;
    unsafe {
        let …
Run Code Online (Sandbox Code Playgroud)

sse simd rust avx2

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