我希望分配超过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) 我有一个旧的.JAR文件。我可以使用JD-GUI对其进行反编译,但这为我提供了一组类文件。我正在尝试遵循代码,但是各个类之间的联系有限。
我可以手动遵循代码,但是有一种方法可以“重新链接”或创建项目,以便我可以更轻松地导航。
JD-GUI在强调某些类时会部分执行此操作,但只会带我进入该类。我想直接进行声明或查看所有用法。
我有这个结构
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"求和.我应该早些时候指出抱歉
如何从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)
无法转换
DataRow为IEnumerable<DataRow>
我使用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) 我使用委托来表示方法 - 但我现在有许多具有相同方法的类(但这些方法中的代码不同).
有没有办法委托整个班级?
伪代码:
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) 我需要从文件中读取大量的二进制数据.我有一个固定的记录大小(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) 在这个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) 我有一点简单的逻辑.
int i = 0;
if (i < 0) {
//whatever;
}
Run Code Online (Sandbox Code Playgroud)
当我使用VS调试时,我看到i设置为0但是if评估为false!怎么会这样?
GUYS.也许我可以更好地措辞!上面的表达式应该在我为0时评估为假,当我在VS中将鼠标悬停在它上面时,它会进入括号并执行"无论什么"......这是不正确的.
编辑:请参阅我的同名但最近的问题解决方案.
我想使用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个值.为什么这是什么呢?帮助没有解释这一点
c# ×6
awk ×1
decompiler ×1
delegates ×1
dictionary ×1
filestream ×1
java ×1
jd-gui ×1
linq ×1
r ×1
seek ×1