Tag: c#

为什么float和int具有不同的最大值,即使它们的位数相同?

可能重复: 当java中的大小相同时,float和integer数据类型之间有什么区别? 您可能知道,这两种类型都是32位。 int只能保存整数,而float也支持浮点数 (如类型名称所示)。 那么int的最大值怎么可能是2 31 ,而float的最大值是3.4 * 10 38 ,而它们都是32位? 我认为int的最大值容量应该高于float,因为它不会为浮点数保存内存并且只接受整数。 在那种情况下,我会很高兴得到解释。

如何用C#测量内存使用量(我们可以用Java做)?

我试图在C#程序中测量内存使用情况。 我想知道这个Java函数的C#等价物: ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getCommitted() 表示为堆分配的总内存。 我需要知道为C#programm分配的内存总大小。 然后在Java中我可以获得用过的内存: ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() 目前我在C#中使用它来获取已用内存: Process_Memory = MyProcess.PrivateMemorySize64; 但我并不完全确定它是等同的。 那么在简历中如何获得我的C#应用​​程序的总分配空间以及当前t的当前使用? 编辑: 从答案和进一步研究中我确定了这个: 当前使用的内存 System.GC.GetTotalMemory(false); 给出当前在托管内存中分配的字节数。 ( http://msdn.microsoft.com/fr-fr/library/system.gc.gettotalmemory.aspx ) 这个方法返回一个低值,我很确定它并不是所有正在使用的内存的表示,因为我可以使用Java中的 getUsed() 。 在java中,对于相同的应用程序,使用的内存从5MB开始,最大为125MB。 使用C#,我使用上述方法从1到5 MB。 看起来 : MyProcess.PrivateMemorySize64; // return ~=25MB 要么 MyProcess.WorkingSet64; //return ~=20MB 为所有正在使用的内存提供更准确的值。 但我不知道应该使用哪一个…… 对于全局分配的内存, 本文建议使用: Process_MemoryEnd1 = MyProcess.VirtualMemorySize64; 它在程序中总是返回相同的值 ,大约169MB,与Java相比看起来很公平:从64MB到170MB最大 我仍然在寻找一个准确的答案,我发现它非常含糊,而且我对Windows内存管理不是很熟悉,我真的不确定我发现的文档:/

如何使用Quartz调度程序维护作业历史记录

我想保留由Quartz调度程序安排的作业历史,其中包含以下属性:“开始时间”,“结束时间”,“成功”,“错误”。 有两个可用的接口: ITriggerListener和IJobListener (我使用接口的C#命名约定,因为我使用的是Quartz.NET,但可能会要求Java版本提出相同的问题)。 IJobListener有一个JobToBeExecuted和一个JobWasExecuted方法。 后者提供了一个JobExecutionException以便您知道什么时候出错了。 但是,无法关联JobToBeExecuted和JobWasExecuted 。 假设我的工作运行了十分钟。 我在t0和t0+2开始它(所以它们重叠)。 我得到两次对JobToBeExecuted调用,并在我的历史表中插入两个开始时间。 当两个作业都在t1和t1+2结束时,我得到两次对JobWasExecuted调用。 如何知道每次调用中要更新的数据库记录(以及其相应的开始时间来存储结束时间)? ITriggerListener还有另一个问题。 当作业失败时,无法在TriggerComplete方法中获得任何错误。 我如何获得所需的行为?

Java中C#事件的替代

我是.Net开发者。 我想知道Java中是否有像C#这样的事件处理的事件处理机制。 我想做的是我想在某些条件下从我的class级中筹集/开火。 此类的消费者应该注册该事件并编写事件处理方法。 这可以在C#中轻松完成。 我必须用Java实现这个东西。 谷歌搜索后,我发现了一些链接,但所有这些都在谈论AWT和摇摆中的GUI事件。 谁能帮我吗。

阅读Guitar Pro文件

我想知道是否有人听说过一个库,最好是.NET程序集,但Java也会这样做,它允许你读取Guitar Pro文件中的数据(.gp3-gp4-gp5) 我有一个包含大约50.000个歌曲文件的文件夹的巨人,并且真的很想写一些可以存档所有这些文件的东西,以便于搜索。 并且诸如调整歌曲中乐器的基本信息将是从文件中检索并添加到数据库的非常有用的参数。 我已经在网上搜索了但还没有找到这样的东西,或者是用于编写我自己的解析器的文件定义。 提前感谢您提供有关该主题的任何信息。

Tic Tac Toe完美的AI算法:更深入的“创建分叉”步骤

我已经在StackOverflow上阅读了许多Tic Tac Toe主题。 我发现维基百科的策略适合我的演示项目: 如果玩家在下表中选择具有最高优先级的移动,则玩家可以玩完美的井字游戏[3]。 1)胜利:如果你连续两次,则打三分之一连续三次。 2)阻挡:如果对手连续两个,则玩第三个阻挡它们。 3)福克斯:创造一个可以通过两种方式获胜的机会。 4)阻挡对手的分叉: 选项1:连续创建两个以强制对手进行防守,只要它不会导致他们创建分叉或获胜。 例如,如果“X”有一个角,“O”有中心,“X”也有相反的角,“O”一定不能在角落里获胜。 (在这个场景中扮演角球会为“X”赢得一个分叉。) 选项2:如果有对手可以分叉的配置,则阻止该分叉。 5)中心:打中锋。 6)对角:如果对手在角落,则对角。 7)空角:打空角。 8)空的一面:空洞的一面。 我按照这一步,计算机永远不会丢失。 但是,它的攻击方式并不完美。 因为我不知道如何做第3步。这是我在第3步中所做的:扫描每个单元格,检查是否在该单元格上放置标记创建了一个fork,然后将其放在那里。 private void step3() // Create Fork. { int[] dummyField = (int[])field.Clone(); // Try Level 1 Dummy for (int i = 0; i = 2) { nextCell = i; return; } dummyField[i] = 0; } } […]

应用程序启动器如何更新自身?

发射器在游戏中最常见。 想想英雄联盟,星际争霸II,或几乎任何MMO。 在开始实际游戏之前,您有一个小型启动器应用程序,负责更新和修补。 我想用我正在开发的特定非游戏应用程序来移动这个方向。 启动器的概念非常有意义:它检查更新,替换相应的二进制文件/库,可能运行完整性检查,并启动应用程序。 但是,发射器如何更新自己? 这往往是罕见的事件,但它是如何完成的? 启动程序是否真的只是写了它当前运行的二进制文件? 或者下载后是否有某种交换步骤? 我需要能够推出(罕见的)更新到启动器(特别是如果我发现我的启动器中的一些错误)。 我的特定项目将在C#中,但我对概念上类似的C ++和/或Java解决方案感兴趣以供将来参考。

签名识别是否有任何代码或算法?

我的用户使用触摸事件在我的应用程序中绘制他们的签名,然后将其转换为位图。 我想提取每个签名的唯一规范,并根据存储在主服务器中的规范进行比较。 我怎样才能做到这一点? 提取签名的唯一function的主要和企业算法是什么? 提前致谢,

为什么我的UDP客户端/服务器数据报没有运行双向通信?

我在两个应用程序之间设置了一个简单的UDP客户端/服务器数据报:Android-Java-Client和Windows-C#-Server。 这是我的第一个Java编程和Android应用程序,因此解决方案可能很明显。 所以我成功地从客户端向服务器发送了一个数据包。 但是,我无法从服务器发回客户端。 我正在尝试从服务器向客户端发送确认消息。 我尝试将C#客户端代码与现有的C#Server代码合并,但是一旦服务器收到第一条消息System.ObjectDisposedException它就会崩溃。 我删除了并重新开始“如果你想要看见编辑”。 现在,我成功发送到服务器但没有收到任何内容,Java客户端也没有显示任何内容。 我知道我可以(或者可能应该)使用相同的套接字发送回客户端。 我的错误在哪里? 拜托,谢谢。 我尝试将整个NetworkThread放在OnTouchListener 我尝试将SendUdpMessage()分解为两个,一个发送,一个接收 我尝试了下面的答案 而我仍然无法使它工作:( C#服务器端: // This class is responsible of running the server side on the PC. class UdpServer { static void Main(string[] args) { byte[] data = new byte[1024]; UdpClient serverSocket = new UdpClient(15000); int i = 0; while (true) { Console.WriteLine(“Waiting […]

什么是更快 – Java或C#(或旧的C)?

我目前正在决定建立一个科学计算产品的平台,并决定使用Core2 Quad CPU上的英特尔编译器的C#,Java或普通C。 它主要是整数运算。 到目前为止,我的基准测试显示Java和C相互之间的差距很大,而.NET / C#的速度约为5% – 但我的一些同事声称,如果有足够的时间,那么具有正确优化的.NET将会击败这两者让JIT做它的工作。 我总是认为JIT会在应用程序启动后的几分钟内完成它的工作(在我的情况下可能只需几秒钟,因为它主要是紧环),所以我不确定是否相信它们 任何人都可以对这种情况有所了解吗? .NET会击败Java吗? (或者我最好在这一点上坚持使用C?)。 代码是高度multithreading的,数据集的大小是几TB。 在这种情况下,Haskell / Erlang等不是选项,因为有大量现有的遗留C代码将被移植到新系统,而将C移植到Java / C#比Haskell或Erlang简单得多。 (当然,除非这些提供了显着的加速)。 编辑:我们正在考虑转向C#或Java,因为理论上它们可能更快。 每减少一个百分比我们的处理时间每年可节省数万美元。 在这一点上,我们只是试图评估C,Java或c#是否会更快。