我本周开始使用ZeroMQ,当使用请求 - 响应模式时,我不确定如何让工作人员安全地"挂断"并关闭他的套接字而不可能丢弃消息并导致发送该消息的客户永远不会得到响应.想象一下用Python编写的工人看起来像这样:
import zmq
c = zmq.Context()
s = c.socket(zmq.REP)
s.connect('tcp://127.0.0.1:9999')
while i in range(8):
s.recv()
s.send('reply')
s.close()
Run Code Online (Sandbox Code Playgroud)
我一直在做实验,并且发现一个127.0.0.1:9999套接字类型的客户zmq.REQ做出一个公平排队的请求可能会让公司排队算法在工人完成最后一次工作之后send()但在工作之前就选择上面的工作人员.以下close()方法.在这种情况下,似乎请求由工作进程中的ØMQ堆栈接收和缓冲,并且当close()抛出与套接字关联的所有内容时请求将丢失.
工人如何"安全"分离 - 有没有办法发出"我不再需要消息"的信号,然后(a)循环传输信号期间到达的任何最终消息,(b)生成他们的回复,然后(c)执行close()保证不丢弃任何消息?
编辑:我想我想要输入的原始状态是"半封闭"状态,没有进一步的请求可以接收 - 并且发送者会知道 - 但返回路径仍然打开,以便我可以检查我的传入缓冲区是一个最后到达的消息,如果有一个坐在缓冲区中则响应它.
编辑:在回答一个好问题时,更正了描述以使等待消息的数量为多个,因为可能有许多连接在等待回复.
为什么我不能在接口中声明一个抽象方法?这是我的代码.谢谢.
<?php
interface Connection {
public abstract function connect();
public function getConnection();
}
abstract class ConnectionAbstract implements Connection() {
private $connection;
public abstract function connect();
public function getConnection() {
return $this->connection;
}
}
class MySQLConnection extends ConnectionAbstract {
public function connect() {
echo 'connecting ...';
}
}
$c = new MySQLConnection();
?>
Run Code Online (Sandbox Code Playgroud) 我生成了默认的设计视图:
rails generate devise:views
Run Code Online (Sandbox Code Playgroud)
然后我username在views/devise/registrations/new.html.erb表单中添加了一个字段.
目前,仅email进行password验证.如何验证现场的存在性和唯一性username?我需要在User模型中添加一些东西吗?
如何确保只创建一个Service实例?
我已经使用日志记录检查了一些函数(WeatherService是扩展Service的类):
Log.i(TAG, "Start Id:" + WeatherService.this.hashCode());
Log.i(TAG, "End Id:" + WeatherService.this.hashCode());
Run Code Online (Sandbox Code Playgroud)
即使我确定相同的函数运行两次(下载),它也会提供不同的哈希码:
09-12 01:00:55.195: INFO/WeatherService(7222): Start Id:1137653208
09-12 01:00:57.235: INFO/WeatherService(7222): Start Id:1137654296
09-12 01:00:59.035: INFO/WeatherService(7222): Start Id:1138806536
09-12 01:01:39.085: INFO/WeatherService(7222): End Id:1137654296
09-12 01:01:39.265: INFO/WeatherService(7222): Start Id:1137654296
09-12 01:02:22.175: INFO/WeatherService(7222): End Id:1137653208
09-12 01:02:24.815: INFO/WeatherService(7222): End Id:1138806536
09-12 01:02:24.836: INFO/WeatherService(7222): Start Id:1138806536
09-12 01:02:40.275: INFO/WeatherService(7222): End Id:1137654296
Run Code Online (Sandbox Code Playgroud)
我将Activity绑定到服务:
bindService(new Intent(getApplicationContext(), WeatherService.class)
,mServiceConnection, BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
并且该服务可以运行几分钟直到完成,因此该服务可以被许多活动绑定/创建
我在Mac OS X 10.6上的Python 2.7 virtualenv中安装了matplotlib 1.0.0.我可以创造好情节.但是,每当我按下" 保存"按钮时,我都无法在保存对话框窗口中键入文本,也无法保存图表.我唯一能做的就是点击取消.是什么导致这个以及如何解决它的想法?

我通过克隆astraw的matplotlib github存储库来安装matplotlib ,然后松散地遵循HyperJeff的numpy/scipy/matplotlib的安装说明.下面是可能相关的部分setup.cfg和make.osx,其中包括之前编译和安装,我修改的部分.
[egg_info]
tag_svn_revision = 1
[directories]
basedirlist = /Users/matthew/.virtualenvs/matplotlib-test
[status]
#suppress = True
#verbose = True
[provide_packages]
[gui_support]
#gtk = False
#gtkagg = False
#tkagg = False
wxagg = False
#macosx = False
[rc_options]
backend = MacOSX
#numerix = numpy
Run Code Online (Sandbox Code Playgroud)
# build mpl into a local install dir with
PREFIX=/Users/matthew/.virtualenvs/matplotlib-test
MPLVERSION=1.0rc1
PYVERSION=2.7
PYTHON=python${PYVERSION}
ZLIBVERSION=1.2.3
PNGVERSION=1.2.39
FREETYPEVERSION=2.3.11 …Run Code Online (Sandbox Code Playgroud) 我注意到C#编译器ret在void方法结束时生成一条指令:
.method private hidebysig static void Main(string[] args) cil managed
{
// method body
L_0030: ret
}
Run Code Online (Sandbox Code Playgroud)
我已经为.NET编写了一个编译器,无论我是否发出一个ret语句,它都可以工作(我已经检查了生成的IL,而且确实没有在那里).
我只是想知道:是否需要ret返回void任何方法?它似乎对堆栈没有任何作用,所以我认为这对于void方法来说完全没有必要,但是我想听听那些对CLR有更多了解的人的消息?
我犯了一个错误....我不知道如何解决它.
我解释了这个问题.
我正在研究我的项目,我做了第一次提交.在这个提交中添加了2个无用的大文件......我不想要这些文件,所以我做了一个
git rm file
Run Code Online (Sandbox Code Playgroud)
然后再次提交.而我是愚蠢的,因为我推到了github hehehe :).
我想你已经发现了问题......
如何从我的本地和github存储库中删除这些文件(尤其是github ...)
我在互联网上找到了一些帮助,但我不想破坏我的所有存储库.
谢谢
我有一个值为的NSString
http://digg.com/news/business/24hr
Run Code Online (Sandbox Code Playgroud)
如何在第3级之前获得所有内容?
http://digg.com/news/
Run Code Online (Sandbox Code Playgroud) 有没有办法添加或编辑断言抛出的消息?我想用类似的东西
assert(a == b, "A must be equal to B");
Run Code Online (Sandbox Code Playgroud)
然后,编译器添加行,时间等...
可能吗?
我正在尝试在rails 3上安装mogli gem(http://github.com/mmangino/mogli)并且遇到配置问题.我有否使用Rails 2的经验.
对于Rails 2
Add config.gem "mogli" to environment.rb
Run Code Online (Sandbox Code Playgroud)
对于Rails 3,我将以下内容添加到gemfile中.
gem 'mogli'
Run Code Online (Sandbox Code Playgroud)
对于Rails 2,路由
map.resource :oauth, :controller=>"oauth"
map.root :controller=>"oauth"
map.oauth_callback "/oauth/create", :controller=>"oauth", :action=>"create"
Run Code Online (Sandbox Code Playgroud)
对于Rails 3,我补充道
resources :oauth
root :to => "oauth#index"
Run Code Online (Sandbox Code Playgroud)
我不知道如何在Rails 3中表示map.oauth_callback.
谢谢