小编Bit*_*lue的帖子

C# - 如何将IntPtr缓冲区数据保存到文件(最快的方式)?

我正在使用此代码将非托管代码中的IntPtr缓冲区中的字节保存到文件中.这是一个简单的回调函数:

private void callback(IntPtr buffer, int length)
{
    byte[] bytes = new byte[length];
    Marshal.Copy(buffer, bytes, 0, length);
    FileStream file = new FileStream(filename, FileMode.Create, FileAccess.Write);
    file.Write(bytes, 0, length);
    file.Close();
}
Run Code Online (Sandbox Code Playgroud)

我想要的是将这些数据存储到文件中并将其丢弃.根据我的理解,非托管代码中有一个缓冲区,MY代码中有第二个缓冲区.我不想复制我想要的数据:

// bad:     (unmanaged) buffer -> (managed) bytes -> file
// awesome: (unmanaged) buffer ->                    file
Run Code Online (Sandbox Code Playgroud)

对于我的任务,我需要以最快捷的方式将数据存储到文件中.

c# winapi

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

Java垃圾收集时间?

我在Java中有一个性能敏感的应用程序.(我知道我应该使用C或其他东西.但它现在是Java.)我试图避免创建和丢弃对象.现在我需要知道还在进行多少垃圾收集.

我该怎么知道?

如果可能的话,我希望有一个以毫秒或纳秒为单位的数字,不需要安装更多软件.

java performance garbage-collection

8
推荐指数
3
解决办法
9339
查看次数

用于隐藏和取消隐藏的富文本格式标记

我想在RichTextBox中隐藏部分文本.我知道\ v是隐藏部分的开始.但我怎么取消隐藏?例如,如果我想在字符串"hello big world"中隐藏单词"big",以便"hello world"可见:


text              : "hello big world"
RTF so far        : "hello \v big world"
result            : "hello "
wanted result  -> : "hello  world"
doesn't work      : "hello \v big\v  world"
Run Code Online (Sandbox Code Playgroud)


有办法吗?

rtf hide richtext

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

C# - 带有环列表行为的字典?

我需要一个可以存储密钥和项目的环列表字典.Capacity = 50当我添加#51第一个项目时必须删除.基本上它必须是一个行为像环列表的字典.

.NET Framework中有什么可以做到的吗?或者我必须自己写吗?

c# dictionary list

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

以编程方式最大化屏幕一半的窗口

我想最大化屏幕左侧的随机窗口.我可以在代码中使用Windows Aero功能吗?这个窗口可以像鼠标一样最大化.我只是想以编程方式做到这一点.

我用C#,我可以得到IntPtr窗口.

如果可能,不用伪造鼠标或键盘输入.

c# windows winapi aero

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

如何使用普通C在Linux上使用GigE相机获取图像

是否有一个库可以用于从Linux上使用普通C的GigE相机获取图像?更具体地说,我安装了Basler GigE相机和pylon软件.还有C++中的示例代码.但我想,需要使用C(在我的工作,这其实是THE做正确的事情用C).如果有一些像libdc1394那样有用的东西,那就太棒了.

c linux camera gige-sdk

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

C# - 排序基元数量并追踪其指数的最快方法

我需要一个float[]待分类.我需要知道旧数组在新数组中的位置.这就是为什么我不能使用Array.Sort();或其他什么.所以我想编写一个函数来为我排序数组,并记住每个值占用的索引:

float[] input  = new float[] {1.5, 2, 0, 0.4, -1, 96, -56, 8, -45};
// sort
float[] output; // {-56, -45, -1, 0, 0.4, 1.5, 2, 8, 96};
int[] indices; // {6, 8, 4, 2, 3, 0, 1, 7, 5};
Run Code Online (Sandbox Code Playgroud)

阵列的大小约为500.我该如何处理?什么排序算法等


解决之后:总是让我惊讶的是C#有多强大.我甚至没有能够自己完成这项任务.因为我已经听说过这么Array.Sort()快我会接受它.

c# sorting performance primitive

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

我可以为我自己的类定义C#别名/关键字,如int,string,object吗?

不是关于using foo = MyPackage.Foo;

我意识到这更多地与IDE(Visual Studio 2010)有关,它向我展示了蓝色的特殊类型.我想我的一些课程.我希望它是蓝色的 (呈现为特殊的)并且可以在整个项目中访问.

原因是我想给他们意义/重要性,以便我的团队中的每个人都知道这个课程是整个项目的关键课程.

// "foo" and "Foo" shall be just the same type:
foo:     MyPackage.Foo

object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char
Run Code Online (Sandbox Code Playgroud)

那可能吗 ?如果我的IDE安装中有一个文件,里面会有上面的关键字,我可以添加一些关键字并保存并重新启动IDE?

要有两个班级,我可以这样做.这是同一个班级的两个名字.我知道我需要在这些之间施展.

public class foo : Foo
{ }
Run Code Online (Sandbox Code Playgroud)

c# alias types visual-studio

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

异步过程调用

我试图让APC在我的C++代码中工作,但我失败了.我迷失了语言.在C#中它可以正常工作(逻辑上相同的代码).我希望线程2在线程1中注入一个调用.但在我的C++项目中,由于某种原因它不会执行.我究竟做错了什么 ?

  • 线程1(主线程)
  • 线程2(子线程,需要主线程来执行一个函数)


码:

#include "stdio.h"
#include "windows.h"

#define TIME 2500
#define LAST_ERROR printf("last error: %i\r\n", GetLastError());

HANDLE handle1, handle2;

void ThreadInfo(char* prefix = "")
{
    printf("%sthread id: %i\r\n", prefix, GetCurrentThreadId());
}

VOID CALLBACK apc( _In_ ULONG_PTR data)
{
    ThreadInfo(" -> apc: 2 -> 1: ");
}

void run1()
{
    while (true)
    {
        Sleep(TIME);
        ThreadInfo("1: ");

        // apc
        //QueueUserAPC(apc, handle2, (ULONG_PTR) NULL);
    }
}

void run2()
{
    while (true)
    {
        Sleep(TIME);
        ThreadInfo("2: ");

        // apc
        QueueUserAPC(apc, handle1, …
Run Code Online (Sandbox Code Playgroud)

c c++ winapi multithreading asynchronous

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

Java - 在巨人列表中追加和删除的最佳策略?

使用Java.

我为一些计算等记录小物件,我只需要最后的一千个.所以我想先发布垃圾收集器.但是因为从ArrayLists中删除是昂贵的...

以下是重要的(不能改变)

  • 没有DB
  • 对象是相同的类型
  • 每秒最多50,000个对象
  • 表现很重要
  • 快速迭代整个列表很重要
  • 随机访问也很重要

这可以改变:

  • 现在正在使用 ArrayList<MyObject>
  • 限制:100,000个对象(停止录制,但必须继续)

我的猜测:

  • 链表
  • RingBuffer
  • ???

我能做些什么来快速迭代并同时快速释放旧对象?

java performance list

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