小编Jac*_*ack的帖子

OCaml是否适合编写网络服务器?

我想知道OCaml在性能和易于实现方面是否表现良好,同时在多线程环境中处理TCP上的典型客户端/服务器交互.我的意思是一些非常典型的东西,例如每个客户端有一个线程接收数据,操作变化在游戏状态并将它们发回给客户.

这是因为我需要为游戏编写一个服务器而且我总是在C中做这些事情但是从现在开始我知道OCaml我很想知道它是否可以,或者我会发现自己试图解决一个典型的问题.语言不适合..

提前致谢

networking ocaml tcp

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

用stdin识别箭头键

是否有可能采用跨平台方式处理C或OCaml程序中的退格键和箭头键?

实际上,OCaml解决方案将受到赞赏,但许多标准的unix函数直接包装到相应的API调用,因此移植C解决方案应该没有问题.

我要实现的是捕获箭头键以覆盖它在shell中的行为(通过重新排序最后一行或类似这样的操作).我认为这件事落在实际程序之前并且它不是由代码本身处理的,所以我不知道它是否可能.

该程序在Linux,OS X和Windows(在cygwin上)编译,所以我想在所有平台上进行编译.

c terminal stdin ocaml input

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

包裹2D perlin噪音

我正在使用Perlin Noise进行高度图生成算法,我想让它环绕边缘,以便它可以看作是连续的...有一个简单的方法或技巧吗?我想我需要类似球形噪音的东西,以便水平和垂直环绕它.我也很高兴只有1个包裹轴,但两个会更好.

现在,我正在使用经典算法,您可以在其中设置要添加的八度音程,以及用于在每个连续八度音程之间改变波的幅度和频率的乘数.

提前致谢!

language-agnostic algorithm perlin-noise

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

有没有办法交叉/差异std :: map和std :: set?

我想知道是否有一种方法可以交叉或使两个结构之间的差异定义为std::set<MyData*>std::map<MyData*, MyValue>标准算法(如std::set_intersect)

问题是我需要计算集合和映射的键集之间的差异,但我想避免重新分配它(因为它是大型数据结构每秒多次完成的事情).有没有办法获得"关键视图" std::map?毕竟我正在寻找的是在进行设置操作时只考虑键,所以从实现点来看它应该是可能的,但我还是找不到任何东西.

c++ stl map set

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

iPhone应用程序的性能测试工具

我正在寻找可以帮助iPhone应用程序的传导性能测试的免费工具.是否有人熟悉此类工具来监控iPhone应用程序的性能?

iphone performance xcode

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

强制在Java中释放大型缓存对象

我使用一个大的(数百万)条目hashmap来缓存算法所需的值,关键是两个对象的组合作为long.由于它不断增长(因为地图中的键发生了变化,所以不再需要旧的),能够强行擦除其中包含的所有数据并在执行过程中重新开始会很好,有没有办法有效地执行在Java?

我的意思是释放相关的内存(大约1-1.5gb的hashmap)并从空的hashmap重新启动.

java garbage-collection

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

如何识别客户端(客户端套接字)?

根据我的理解,serverSocket = new ServerSocket(portNumber)我们创建了一个可能"监听"指示端口的对象.通过clientSocket = serverSocket.accept()我们强制服务器套接字"监听"其端口并从任何尝试通过与服务器关联的端口连接到服务器的客户端"接受"连接.当我说"客户端尝试连接到服务器"时,我的意思是客户端程序执行"nameSocket = new Socket(serverIP,serverPort)".

如果客户端尝试连接到服务器,则服务器"接受"此客户端(即创建与此客户端关联的"客户端套接字").

如果新客户端尝试连接到服务器,则服务器会创建另一个客户端套接字(与新客户端关联).但是服务器如何知道它是一个"新"客户端还是已经有套接字的"旧"客户端?或者,换句话说,如何识别客户?通过他们的IP?通过他们的IP和端口?通过一些"签名"?

如果"旧"客户端再次尝试使用Socket(serverIP,serverIP)会发生什么?服务器会创建与此客户端关联的第二个套接字吗?

sockets networking client-server

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

引擎盖下的Groovy/Scala/Java

我用的Java像6-7岁,然后在几个月前,我发现Groovy中,并开始节省大量的输入..然后我不知道某些事情如何引擎盖下工作(因为常规的表现真的很差),并了解,给你动态类型每一个Groovy的对象是MetaClass处理所有的JVM不能由自己来处理事情的对象.当然,这会在您编写的内容和执行的内容之间引入一层,从而减慢所有内容.

然后有一天我开始得到一些关于Scala的信息.这两种语言在字节码翻译中的比较如何?他们添加到普通Java代码可以获得的正常结构中有多少东西?

我的意思是,Scala静态类型的,因此Java类的包装应该更轻,因为在编译期间会检查很多东西,但我不确定内部存在的真正差异.(我不是在谈论Scala的功能方面与其他方面相比,这是另一回事)

有人可以开导我吗?

从WizardOfOdds评论好像是得到更少的输入和相同性能的唯一方法是写在翻译的东西中间翻译的Java代码(让的javac编译)不alterating事情是如何执行的,只是增加synctatic糖全无关心语言本身的其他后备.

java groovy scala bytecode

10
推荐指数
5
解决办法
3273
查看次数

在OCaml中抑制穷举匹配警告

我在修复OCaml编译器给我的警告方面遇到了问题.

基本上我解析可以由组成的表达式Bool,IntFloat.

我有一个符号表,跟踪用其类型声明的所有符号:

type ast_type = Bool | Int | Float
and variables = (string, int*ast_type) Hashtbl.t;
Run Code Online (Sandbox Code Playgroud)

int后面在所有变量数组中使用的索引在哪里.

然后我有一个表示变量值的具体类型:

type value =
  | BOOL of bool
  | INT of int
  | FLOAT of float
  | UNSET
and var_values = value array
Run Code Online (Sandbox Code Playgroud)

我试图在布尔表达式中定义变量引用的行为,所以我要做的是

  • 检查变量是否已声明
  • 检查变量是否具有bool类型

要做到这一点,我有这个代码(s是变量的名称):

| GVar s ->
            begin
                try
                    let (i,t) = Hashtbl.find variables s in
                        if (t != Bool) then
                            raise (SemanticException (BoolExpected,s))
                        else
                            (fun s -> let …
Run Code Online (Sandbox Code Playgroud)

warnings ocaml functional-programming pattern-matching

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

恐惧造成的泄漏

我正在分析我编写的游戏的代码,我想知道以下代码段每次执行时如何有可能导致堆增加4kb(我正在使用Xcode的快照分析进行概要分析):

u8 WorldManager::versionOfMap(FILE *file)
{
  char magic[4];
  u8 version;

  fread(magic, 4, 1, file); <-- this is the line
  fread(&version,1,1,file);
  fseek(file, 0, SEEK_SET);

  return version;
}
Run Code Online (Sandbox Code Playgroud)

根据分析器,突出显示的行分配4.00Kb的内存,malloc每次调用该函数时,内存永不释放.这个问题似乎发生fread在代码周围的其他调用,但这是最令人讨厌的.

我有什么微不足道的错过吗?这是我不应该关心的内部事物吗?

就像一个注释:我在iPhone上进行分析,它被编译为release(-O2).

c++ xcode memory-leaks ios

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