小编wei*_*ima的帖子

C++ 11中的递归lambda函数

我是C++ 11的新手.我正在编写以下递归lambda函数,但它不编译.

sum.cpp

#include <iostream>
#include <functional>

auto term = [](int a)->int {
  return a*a;
};

auto next = [](int a)->int {
  return ++a;
};

auto sum = [term,next,&sum](int a, int b)mutable ->int {
  if(a>b)
    return 0;
  else
    return term(a) + sum(next(a),b);
};

int main(){
  std::cout<<sum(1,10)<<std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

vimal @ linux-718q:〜/ Study/09C++/c ++ 0x/lambda> g ++ -std = c ++ 0x sum.cpp

sum.cpp:在lambda函数中:sum.cpp:18:36:错误:' ((<lambda(int, int)>*)this)-><lambda(int, int)>::sum'不能用作函数

gcc版本

gcc版本4.5.0 20091231(实验性)(GCC)

但如果我改变sum()下面的声明,它的作用是:

std::function<int(int,int)> sum = [term,next,&sum](int a, …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

127
推荐指数
8
解决办法
6万
查看次数

scala追加到一个可变的LinkedList

请检查一下

import scala.collection.mutable.LinkedList

var l = new LinkedList[String]

l append LinkedList("abc", "asd")

println(l)
// prints 
// LinkedList()
Run Code Online (Sandbox Code Playgroud)

import scala.collection.mutable.LinkedList

var l = new LinkedList[String]

l = LinkedList("x")
l append LinkedList("abc", "asd")

println(l)
// prints 
// LinkedList(x, abc, asd)
Run Code Online (Sandbox Code Playgroud)

为什么第二个代码片段有效,但第一个代码片段不起作用?这是在Scala 2.10上

collections scala mutable

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

Haskell主要功能

module Main where

qsort :: Ord a => [a] -> [a]
qsort [] = []
qsort (x : xs) = qsort smaller ++ [x] ++ qsort larger
                 where
                   smaller = [a | a <- xs , a <= x]
                   larger  = [a | a <- xs , a >  x]

main = do qsort [1,3,2]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Couldn't match expected type `IO t0' with actual type `[a0]'         
In the expression: main
When checking the type of the function `main'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

haskell

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

如何在Storm中编写关于Storm和Thrift使用的c ++ spout/bolt

这里开始:Storm从一开始就被设计为与多种语言兼容.Nimbus是一种Thrift服务,拓扑被定义为Thrift结构.Thrift的使用允许使用任何语言的Storm.

我看到在java中创建的拓扑通过将拓扑(spouts,bolt,ComponentCommon)序列化为Thrift数据类型然后部署在Nimbus上来部署.在Java中,使用其方法和数据很容易地序列化对象.所以在另一方面,Nimbus只需要创建对象并调用它们.(我可能在这里缺少细节,但我希望我能正确理解这一点)

但我想知道如何用C++编写拓扑并以相同的方式部署它.thrift是否有助于序列化基于c ++的拓扑,而Nimbus以与Java相同的方式部署/执行拓扑?

在这方面我看到链接link1 link2,唯一的解决方案似乎是使用Shelbolt.它调用进程并通过标准i/o与之通信.

为了使用Thrift方式,我们是否还需要在C++中重写storm核心?另外,为什么在仅支持JVM语言时使用Thrift?对于像python/c ++这样的语言,似乎根本没有使用Thrift.

c++ thrift apache-storm

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

如何创建一个protobuf go插件插件

https://github.com/golang/protobuf

protoc-gen-go 是protoc中的插件,它为输入原型定义生成go绑定.

protoc-gen-go还有一个插件框架,它grpc是一个插件插件 https://github.com/golang/protobuf/tree/master/protoc-gen-go/grpc

$ protoc ./helloworld.proto --go_out=plugins=grpc:.

我可以编写自己的插件并将其与grpc插件一起调用吗?

$ protoc ./helloworld.proto --go_out=plugins=grpc+myplugin:.

我是否需要强制将我的插件构建到protoc-gen-go中?如果没有,那么protoc-gen-go将如何找到myplugin?

plugins grpc protoc

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

akka向远程演员发送封闭

背景

我想向一个远程演员发送一个闭包.远程actor应该对其数据运行闭包并发回结果. 可能是不可取的,但出于好奇的缘故,我现在想做

但我观察到,如果一个闭包被创建为一个匿名函数,它也会捕获外部对象并尝试编组它,如果外部对象不可序列化,则会失败,就像在这种情况下一样.

class Client(server: ActorRef) extends Actor {

  var every = 2

  override def preStart() = {
    println("client started. sending message....")
    server ! new Message((x) => x % every == 0)
  }

}
Run Code Online (Sandbox Code Playgroud)

上面的代码在调用远程actor时生成异常.我可以在方法中定义一个局部变量preStart()

val every_ = every

并用它代替actor成员变量.但我觉得这是一种解决方法而不是解决方案.如果封闭更复杂,我必须非常小心.

另一种方法是定义一个继承Function1[A,B]的实例,并将其实例作为闭包发送.

class MyFunc(every : Int) extends Function1[Int,Boolean] with Serializable {

  def apply(v1 :Int) : Boolean = {
    v1 % every == 0
  }  
}


server ! new Message(new MyFunc(every))
Run Code Online (Sandbox Code Playgroud)

但是这将闭包定义与它所使用的地方分开,并且破坏了使用函数语言的整个目的.并且还使得定义闭包逻辑变得更加困难.

具体查询

当我从本地定义的闭包创建实例时,有没有一种方法可以推迟定义主体Function1.apply并分配主体?applyMyFunc …

scala actor akka

7
推荐指数
1
解决办法
1952
查看次数

grpc go:当客户端关闭连接时,如何知道服务器端

我正在使用grpc go

我有一个看起来大致像这样的rpc

196 service MyService {
197   // Operation 1
198   rpc Operation1(OperationRequest) returns (OperationResponse) {
199       option (google.api.http) = {
200         post: "/apiver/myser/oper1"
201         body: "*"
202     };
203   }
Run Code Online (Sandbox Code Playgroud)

客户端使用grpc.Dial()方法连接

当客户端连接时,服务器会进行一些簿记.当客户端断开连接时,需要删除簿记.

是否有任何可以注册的回调可用于知道客户端已关闭会话.

go grpc

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

JavaScript属性访问速度:var.property与var [“ property”]之差?

我有一个非常基本的JavaScript问题。

我正在编写一个将生成JavaScript代码的程序。对于访问变量的属性,我有两种选择:

1. make the property access a static query. i.e.
var result = object.property

OR

2. make the property access a dynamic query, i.e.
var result = object["property"]
Run Code Online (Sandbox Code Playgroud)

它给我带来的区别是,对于第一种情况(静态查询情况),我将必须为每个属性访问生成单独的代码。而在第二种情况下(动态查询情况),我可以为每个属性重用相同的函数。

我可以决定是否知道这对性能有什么影响吗?

obj.property更快还是obj["property"]

可能这还取决于将用于解释javascript的引擎,因此我必须提到我将使用Rhino作为我的javascript引擎。

因此,请对此问题进行一些说明。

谢谢,问候,非常

javascript performance

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

为什么boost lockfree空闲列表大小限制为最多65535个对象?

为什么boost lockfree大小固定为65535个对象?

typedef boost::lockfree::queue<int, boost::lockfree::fixed_size<true>> MyQueue;
MyQueue queue(1024*100);
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出异常.

我在代码中找到的原因是基于数组的freelists只支持16位地址空间.

这是什么原因?我在64位linux机器上使用它.那么为什么要将寻址限制在2**16项?队列是否使用'short int'进行索引?原子指令只适用于16位字大小吗?

我该怎么做才能拥有一个比这更大容量的固定大小的队列?

c++ boost lock-free c++11

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

无法调用avro-maven插件

我的问题类似于无法使用Maven从.avsc编译和创建.avro文件

我已经尝试了所有可能的东西,检查maven项目100次,仍然我无法运行avro-maven插件来生成我的avsc文件的代码.

我已阅读以下帖子并遵循相同的规定,但没有成功 http://grepalex.com/2013/05/24/avro-maven/ https://github.com/phunt/avro-maven-plugin

我下载了上面的maven项目,这里结果也一样.

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Avro Maven Example 0.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ avro-maven ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ avro-maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory F:\01_Work\FLink\avro-maven-master\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ avro-maven ---
[INFO] No sources to compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.932 s
[INFO] Finished at: …
Run Code Online (Sandbox Code Playgroud)

maven-plugin avro

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