小编Man*_*oon的帖子

如何在C#中分配超过MaxInteger字节的内存

我希望分配超过MaxInteger字节的内存.

Marshall.AllocHGlobal()需要一个整数 - 所以我不能使用它.还有另外一种方法吗?

更新

我将平台更改为x64,然后运行下面的代码.

myp似乎有正确的长度:约3.0G.但固执地"缓冲"最高可达2.1G.

知道为什么吗?

    var fileStream = new FileStream(
          "C:\\big.BC2",
          FileMode.Open,
          FileAccess.Read,
          FileShare.Read,
          16 * 1024,
          FileOptions.SequentialScan);
    Int64 length = fileStream.Length;
    Console.WriteLine(length);
    Console.WriteLine(Int64.MaxValue);
    IntPtr myp = new IntPtr(length);
    //IntPtr buffer = Marshal.AllocHGlobal(myp);
    IntPtr buffer = VirtualAllocEx(
        Process.GetCurrentProcess().Handle,
        IntPtr.Zero,
        new IntPtr(length),
        AllocationType.Commit | AllocationType.Reserve,
        MemoryProtection.ReadWrite);
    unsafe
    {
        byte* pBytes = (byte*)myp.ToPointer();
        var memoryStream = new UnmanagedMemoryStream(pBytes, (long)length, (long)length, FileAccess.ReadWrite);
        fileStream.CopyTo(memoryStream);
Run Code Online (Sandbox Code Playgroud)

c# memory-management

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

如何使用JD-GUI从反编译的JAR重新创建项目链接?

我有一个旧的.JAR文件。我可以使用JD-GUI对其进行反编译,但这为我提供了一组类文件。我正在尝试遵循代码,但是各个类之间的联系有限。

我可以手动遵循代码,但是有一种方法可以“重新链接”或创建项目,以便我可以更轻松地导航。

JD-GUI在强调某些类时会部分执行此操作,但只会带我进入该类。我想直接进行声明或查看所有用法。

java decompiler jd-gui

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

使用linq求一个复杂的字典

我有这个结构

    class DailyData
    {
        public double A=0.0;
        public double B=0.0;
        public double C=0.0;

    }

SortedDictionary<DateTime,DailyData[]> Data = new SortedDictionary<DateTime,DailyData[]>();
var LongData = Data.Skip(Math.Max(0, Data.Count() - 90)).Take(90);
Run Code Online (Sandbox Code Playgroud)

如何在字典的某个部分中对特定值求和(或其他操作)?

即我想在LongData中总结所有"A"?

编辑

实际上,我不想要所有的"A".我只想对我的DailyData数组的元素(索引)N的所有"A"求和.我应该早些时候指出抱歉

c# linq dictionary

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

如何从DataTable返回Last()作为IEnumerable

如何从DataTable返回Last()作为IEnumerable?

我想要IEnumerable,因为我可以传入更大的行子集.

public static void Set(IEnumerable<DataRow> rowsToProcess)
{
    //Do something with rowsToProcess;
}

DataTable data;

//This works:
Set(Data.AsEnumerable());

//This gives an error:
Set(Data.AsEnumerable().Last());
Run Code Online (Sandbox Code Playgroud)

无法转换DataRowIEnumerable<DataRow>

c#

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

为什么在矩阵中的R中使用diff时会出现错误

我使用csv文件读取数据

d<-read.csv("myfile.csv",header=TRUE)
Run Code Online (Sandbox Code Playgroud)

数据被正确读取并具有10列带有标题的双数据.

我想创建一个矩阵(我的话 - 不确定我在R中真正想要的)日志差异.

logs<-log(d)
Run Code Online (Sandbox Code Playgroud)

这很好,但是

diffs<-diff(logs)
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

- (长度(r) - 滞后+ 1L)<<<我不知道这意味着什么......

编辑1我的数据(抱歉必须在此输入 - 无法看到附加文件的明显方法)

A,B,C
1.1,2.1,3.1
1.2,2.2,3.2
1.3,2.3,3.3
1.4,2.4,3.4
1.5,2.5,3.5
1.6,2.6,3.6
Run Code Online (Sandbox Code Playgroud)

r

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

我可以为整个类c#创建一个委托吗?

我使用委托来表示方法 - 但我现在有许多具有相同方法的类(但这些方法中的代码不同).

有没有办法委托整个班级?

伪代码:

class myModelA
{
     void update()
     {

     }
}

class myModelB
{
     void update()
     {

     }
}



delegate class myModel;

if (x==1)
     myModel = myModelA;
else
     myModel = myModelB;


myModel.update();
Run Code Online (Sandbox Code Playgroud)

我知道我可以委托"üpdate"方法但是在现实世界中我有很多方法,我宁愿只是简单地委托这个类.

EDIT1 based on Jon Skeet's answer
Run Code Online (Sandbox Code Playgroud)

但我如何声明一个公共变量?(非公共变量编译好)

public interface IModel
{
    double myDouble; <<<< this gives an error
    void Update();
}

public class MyModelA : IModel
{
    public double myDouble;
    public void Update() { ... }
}

public class MyModelB : IModel 
{
    public double …
Run Code Online (Sandbox Code Playgroud)

c# delegates

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

有没有比FileStream.Position更快的方式来跳过部分二进制文件

我需要从文件中读取大量的二进制数据.我有一个固定的记录大小(38),并希望一次跳过几个记录.我尝试过使用FileStrea,Position或Seek这样做,但似乎也需要花费很长时间.因此,即使我跳过10条记录 - 我也不会通过文件读取10次fatsre.

这是一个SSCCE.

调节器注意:这不是一个重复的问题,它是我从另一个问题中提取的后续内容,以便探索不同的焦点.

您需要创建2个按钮Serialize和Deserialize.

Serialize创建一个虚拟数据文件.

反序列化通过它读取.

注释掉fs.Position行以查看整个文件的原始读取.我的机器需要12秒.然后取消注释它,文件每次将跳过10条记录.希望速度提高10倍,但我的机器需要8秒.所以我假设改变fs.Position是昂贵的.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProtoBuf;
using System.IO;
using System.Diagnostics;

namespace BinTest3
{


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Serialize_Click(object sender, EventArgs e)
        {

            FileStream outBin = null;

            string binFileName = @"C:\binfile.dft";
            outBin = File.Create(binFileName, 2048, FileOptions.None);

            DateTime d = DateTime.Now;

            TickRecord tr = new TickRecord(d, 1.02, 1.03,200,300);

            for (int i …
Run Code Online (Sandbox Code Playgroud)

c# filestream seek

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

为什么变量未在此BEGIN中正确初始化?

在这个gawk中,似乎在BEGIN语句中忽略了ave = $ 4.看来ave在第一行的正文中的值为0:

cat trades.txt | gawk 'BEGIN{pos=0;ave=$4} {pos+=$3;ave=(0.1*$4)+(0.9*ave)} {print $2,pos,$4,ave}' > onPositions.txt
Run Code Online (Sandbox Code Playgroud)

awk

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

if()如何在C#中错误地计算

我有一点简单的逻辑.

int i = 0;
if (i < 0) { 
  //whatever; 
}
Run Code Online (Sandbox Code Playgroud)

当我使用VS调试时,我看到i设置为0但是if评估为false!怎么会这样?

GUYS.也许我可以更好地措辞!上面的表达式应该在我为0时评估为假,当我在VS中将鼠标悬停在它上面时,它会进入括号并执行"无论什么"......这是不正确的.

编辑:请参阅我的同名但最近的问题解决方案.

c# visual-studio visual-studio-debugging

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

如何在lm上使用lm.fit

我想使用lm.fit来提高速度,但是第二个版本给了NAs

 sum <-   summary(lm(y~x))
 slope <-  sum$coefficients[2]
Run Code Online (Sandbox Code Playgroud)

要么

 sum <-   lm.fit(as.matrix(x,ncol=1),y)
 slope <-  sum$coefficients[2]
Run Code Online (Sandbox Code Playgroud)

编辑1

我现在看到总和$系数只有1个值.为什么这是什么呢?帮助没有解释这一点

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