我是C++ 11的新手.我正在编写以下递归lambda函数,但它不编译.
#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版本4.5.0 20091231(实验性)(GCC)
但如果我改变sum()下面的声明,它的作用是:
std::function<int(int,int)> sum = [term,next,&sum](int a, …Run Code Online (Sandbox Code Playgroud) 请检查一下
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上
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)
我究竟做错了什么?
从这里开始: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.
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?
背景
我想向一个远程演员发送一个闭包.远程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 …
我正在使用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()方法连接
当客户端连接时,服务器会进行一些簿记.当客户端断开连接时,需要删除簿记.
是否有任何可以注册的回调可用于知道客户端已关闭会话.
我有一个非常基本的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引擎。
因此,请对此问题进行一些说明。
谢谢,问候,非常
为什么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位字大小吗?
我该怎么做才能拥有一个比这更大容量的固定大小的队列?
我的问题类似于无法使用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) c++ ×3
c++11 ×2
grpc ×2
scala ×2
actor ×1
akka ×1
apache-storm ×1
avro ×1
boost ×1
collections ×1
go ×1
haskell ×1
javascript ×1
lambda ×1
lock-free ×1
maven-plugin ×1
mutable ×1
performance ×1
plugins ×1
protoc ×1
thrift ×1