小编Mar*_*tin的帖子

为什么垃圾收集器会冻结执行?

我在回家的路上想着垃圾收集,我开始疑惑,为什么垃圾收集器完全冻结程序的执行?就个人而言,我本来会设计它来阻止任何尝试分配新对象的线程,但是运行的线程将保持不变.我无法想象与垃圾收集器当前的工作方式相比,这会是一个问题.

language-agnostic garbage-collection

13
推荐指数
3
解决办法
2352
查看次数

C#Endian敏感吗?

例如,C#是否会以Endian敏感,代码如下:

int a = 1234567;
short b = *(short*)&i;
Run Code Online (Sandbox Code Playgroud)

始终为b分配相同的值.如果是这样,那将是什么价值?

如果没有,如果带有指针的代码,有什么好方法可以处理字节序?

c# pointers endianness

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

C#脚本语言

这是一个有点奇怪的问题.

我想提供一种脚本语言来修改我为XNA构建的游戏.如果我将这些游戏部署到PC上,那么我就可以使用C#文件,在运行时编译(使用reflection.emit)作为脚本,这很好 - 这是一个很好的简单方法来修改游戏.但是,.net紧凑框架(这是xbox提供的)不支持reflection.emit,那么如何编写一个考虑到这一点的脚本语言呢?

  1. 有没有任何项目已经这样做了
  2. 是否有任何好的资源来启动我自己的项目来执行此操作
  3. 什么是最好的语言选择?这是用于游戏脚本,所以它可以是一个相当小的语言,只要它非常有效并且易于实现解释器

c# scripting xna interpreter

11
推荐指数
2
解决办法
4963
查看次数

protobuf.net意外的子类型

我在使用Protobuf.net的项目中遇到此异常:

InvalidOperationException "Unexpected sub-type: foo"
Run Code Online (Sandbox Code Playgroud)

我有一个我要发送的类,如下所示:

class message
{
    list<bar> listOfBars;
}
Run Code Online (Sandbox Code Playgroud)

foo继承了bar,但是protobuf似乎对此产生了阻碍并产生了上面的异常.这有什么办法吗?我需要能够在列表中保存所有不同的bar子类型,因此更难以/不可能采用更多类型约束的解决方案.

.net c# protocol-buffers protobuf-net

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

在Google appengine数据存储区中存储有向图

我需要在google appengine中存储一个大而动态的无向图,这是最好的方法吗?图形表示必须能够支持快速拉出一组顶点(用于在页面上渲染)和来自特定顶点的所有链接,以及跨图形的路径寻找(尽管最佳路径并不是真正需要的,只是一个公平的好的一个)

我对这个主题的看法:最明显的方法是有一个顶点模型和一个引用两个顶点的边缘模型,但听起来它最终会为每个操作使用大量的查询,我想知道是否有一种更好的方法(可能以某种方式将链接信息构建到每个顶点)

google-app-engine database-design directed-graph path-finding

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

使用委托创建垃圾

我正在使用XNA为xbox360开发游戏.在Xbox上,与PC上的垃圾收集器相比,垃圾收集器的性能相当差,因此将生成的垃圾保持在最低限度对于顺畅执行游戏至关重要.

我记得曾经读过一次调用委托创建了垃圾,但是现在我的生活中找不到任何对代表创建垃圾的引用.我是刚刚做到这一点还是代表人员凌乱?

如果代表是凌乱的,建议解决方法的奖励积分.

public delegate T GetValue<T>(T value, T[] args);

public static T Transaction<T>(GetValue<T> calculate, ref T value, params T[] args) where T : class
{
    T newValue = calculate(value, args);
    return foo(newValue);
}
Run Code Online (Sandbox Code Playgroud)

我的代码看起来模糊不清,目前,我能想到摆脱委托的唯一解决方案是传入一个继承了接口IValueCalculator的类,然后我可以在该接口上调用该方法,这不是很整洁虽然!

c# xna delegates garbage-collection xbox360

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

C#联锁交换

我的游戏有点像这样:

public static float Time;

float someValue = 123;
Interlocked.Exchange(ref Time, someValue);
Run Code Online (Sandbox Code Playgroud)

我想把时间变成Uint32; 但是,当我尝试使用UInt32而不是使用float值时,它会抗议类型必须是引用类型.Float不是引用类型,因此我知道在技术上可以使用非引用类型执行此操作.是否有任何实用的方法来使这项工作UInt32

c# interlocked

7
推荐指数
3
解决办法
7459
查看次数

C#和C++之间的进程间通信

我正在为游戏编写一个机器人,它有一个C++ API接口(即当事件发生时,游戏调用Cpp dll中的方法,dll可以回调游戏中的方法来触发动作).

我真的不想用C++编写机器人,我是一个相当有经验的C#程序员,但我根本没有C++经验.因此,显而易见的解决方案是使用ipc将事件发送到C#程序,并将操作发送回C++程序,这样我在C++中编写的所有内容都是调用方法和发送事件的基本框架.

最好的方法是什么?示例代码将非常受欢迎,因为我此刻并不特别渴望学习C++!

.net c# c++ ipc

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

在游戏中放置防御结构

我正在为Defcon游戏开发AI机器人.游戏中有不同人口的城市和范围有限的防御结构.我正在尝试制定一个用于放置防御塔的好算法.

  • 人口较多的城市更为重要
  • 失去防御塔是一个打击,所以塔应该合理地放在一起
  • 塔楼和城市只能放在陆地上

因此,根据这三个规则,我们看到最好的位置是塔被放置在最大的人口区域周围的环(虽然我不希望算法只是盲目地在最高人口区域周围放置一个环,有时候可能有两组相距很远的城市,在这种情况下,算法应该制作2个圆圈,每个圆圈占我的总塔数的一半).

我想知道可以使用哪种算法来确定塔的位置?

language-agnostic algorithm artificial-intelligence

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

在受感染的计算机上部署软件

我参与了关于如何为大选建立互联网投票软件的讨论.我们已达成普遍共识,即存在大量用于双向认证和通信的安全方法.

然而,有人出现并指出,在大选中,一些使用的机器几乎肯定会受到损害.报价:

让我成为一个邪恶的选举欺诈者.我想在他们投票时抽样人民投票,并希望我得到一些可耻的东西.我从一些非常阴暗的家伙那里雇用了一个机器人网,他们在英国仅仅在选举日控制了1000台受损机器.

我在选举日捕获了1000名选民的投票习惯.我注意到其中有5人投票支持BNP.我看着这些用户并检查他们的机器,我查看他们的机器上的文件,并找出他们的名字和地址.我发现他们中的一个是保守党议员的妻子.我泄漏'保守党的妻子是一个法西斯主义者!' 我知道一些博客.它触及互联网并传播病毒,推动选举.

那是一个严重的问题!

那么,在可能受到危害的机器上运行软件的最佳技术是什么,用户与软件的交互必须保密?

language-agnostic security

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