我有一个python应用程序具有以下目录结构:
src
|
+---- main
|
+---- util
|
+---- gen_py
|
+---- lib
Run Code Online (Sandbox Code Playgroud)
在包main中,我有一个名为MyServer.py的python模块,它有一个import语句,如:
from gen_py.lib import MyService
Run Code Online (Sandbox Code Playgroud)
为了使这个语句起作用,我将以下行放在MyServer.py的开头:
import sys
sys.path.append('../gen_py/lib')
Run Code Online (Sandbox Code Playgroud)
当我在终端中运行MyServer.py时,出现以下错误:
ImportError:没有名为gen_py.lib的模块
我在这里缺少什么?
我用Python编写了一个简单的HTTP客户端和服务器进行实验.下面的第一个代码片段显示了我如何使用名为imsi的参数发送HTTP GET请求.在第二个代码片段中,我在服务器端显示了我的do_Get函数实现.我的问题是如何在服务器代码中提取imsi参数并将响应发送回客户端,以便向客户端发出imsi有效的信号.
谢谢.
PS:我验证了客户端成功发送请求.
CLIENT代码段
params = urllib.urlencode({'imsi': str(imsi)})
conn = httplib.HTTPConnection(host + ':' + str(port))
#conn.set_debuglevel(1)
conn.request("GET", "/index.htm", 'imsi=' + str(imsi))
r = conn.getresponse()
Run Code Online (Sandbox Code Playgroud)
SERVER代码段
import sys, string, cStringIO, cgi, time, datetime
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
class MyHandler(BaseHTTPRequestHandler):
# I want to extract the imsi parameter here and send a success response to
# back to the client.
def do_GET(self):
try:
if self.path.endswith(".html"):
#self.path has /index.htm
f = open(curdir + sep + self.path) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译zmq.org提供的ZMQ C++源代码示例(即github.com/imatix/zguide.git).我的操作系统是xubuntu,我安装了ZMQ先决条件,正确的是libtool,autoconf,automake和uuid-dev包.我也安装了czmq.ZMQ本身的编译和链接很好,并且libs正确地位于/ usr/local/bin下.不过,我遇到了编译错误.谷歌搜索没有多大帮助,我想知道是否有人知道这些错误的快速解决方案,这些错误源于缺少的头文件zmq.hpp.提前致谢.
$./build all
hwclient.cpp
hwclient.cpp:6:19: fatal error: zmq.hpp: No such file or directory
compilation terminated.
hwserver.cpp
hwserver.cpp:6:19: fatal error: zmq.hpp: No such file or directory
compilation terminated.
identity.cpp
identity.cpp:7:19: fatal error: zmq.hpp: No such file or directory
compilation terminated.
lbbroker.cpp
In file included from lbbroker.cpp:7:0:
zhelpers.hpp:29:19: fatal error: zmq.hpp: No such file or directory
compilation terminated.
lpclient.cpp
In file included from lpclient.cpp:6:0:
zhelpers.hpp:29:19: fatal error: zmq.hpp: No such file or directory
compilation terminated.
lpserver.cpp
In file included from …
Run Code Online (Sandbox Code Playgroud) 考虑下面第一个代码片段中的代码C++,我得到第二个代码段中指示的编译错误.看起来我在遍历矢量实例时做错了.你能告诉我如何克服这些编译问题吗?谢谢.代码中标记了LINE 171.
SNIPPET 1(代码)
#include <string>
#include <vector>
#include <iterator>
class VipAddressSetEntity : BaseEntity
{
public:
VipAddressSetEntity() : BaseEntity() { }
VipAddressSetEntity(std::string &uuid, std::string &name) : BaseEntity(uuid, name) { }
VipAddressSetEntity(const VipAddressSetEntity ©in)
{
setUUID(copyin.getUUID());
setName(copyin.getName());
std::vector<VipAddressEntity>::iterator iter;
/* LINE 171 is the following*/
for( iter = copyin.mVipAddressList.begin(); iter != copyin.mVipAddressList.end(); iter++ )
{
addVipAddress(*iter);
}
}
VipAddressSetEntity operator = (const VipAddressSetEntity &rhs)
{
setUUID(rhs.getUUID());
setName(rhs.getName());
std::vector<VipAddressEntity>::iterator iter;
for( iter = rhs.mVipAddressList.begin(); iter != rhs.mVipAddressList.end(); iter++ )
{
addVipAddress(*iter);
} …
Run Code Online (Sandbox Code Playgroud) 是否可以在Boost线程中设置CPU亲和力((即,将每个线程设置为在不同的CPU上运行)?您是否可以对此提出任何教程/文档?在以下示例中,除了以下线程外,Google搜索不会返回太多信息(boost-bind_processor.v1.tar.gz)不再存在于文件服务器中。
在下面的java代码中,我正在进行DNS SRV记录查找,以解析给定域名的目标域名和关联端口,例如root@1000000000.blubluzone.com.用/ HERE /下面指示的查找函数以某种方式返回null并且我无法获得查询结果(即记录数组为空).因此,在for循环中访问记录数组时会抛出空指针异常.
您认为我缺少什么使下面的代码工作.我使用的是dnsjava,相关的API jar文件可以在http://www.dnsjava.org/download/上找到 (在页面底部).提前感谢您的建议.
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Record;
import org.xbill.DNS.SRVRecord;
import org.xbill.DNS.TextParseException;
import org.xbill.DNS.Type;
public class DNSLookup {
public static void main(String[] args) {
if (args.length < 1) {
System.err.println("Usage: java -jar DNSLookup <hostname>");
System.exit(1);
}
String query = "_ssh._tcp." + args[0];
try {
/*****HERE*********/
Record[] records = new Lookup(query, Type.SRV).run();
for (Record record : records) {
SRVRecord srv = (SRVRecord) record;
String hostname = srv.getTarget().toString().replaceFirst("\\.$", "");
int port = srv.getPort();
System.out.println(hostname + ":" + port); …
Run Code Online (Sandbox Code Playgroud) 有人可以向我解释/给出一个推理,为什么变量i在下面的代码片段中的主函数的值不会通过函数test1改变,而它确实通过test2改变了?我认为单个指针应该足以改变i的值.为什么我们应该使用双指针?
#include <stdio.h>
void test1(int* pp)
{
int myVar = 9999;
pp = &myVar;
}
void test2(int** pp)
{
int myVar = 9999;
*pp = &myVar;
}
int main()
{
printf("Hej\n");
int i=1234;
int* p1;
p1 = &i;
test1(p1);
printf("does not change..., p1=%d\n",*p1);
test2(&p1);
printf("changes..., p1=%d\n",*p1);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在下面的第一个代码片段中显示了一个名为 GenericMessage 的类(在 GenericMessage.hxx 中定义)。
我有一个名为 TestFE.cpp 的 .cpp 文件(请参阅下面的第二个代码片段),它尝试通过 ZMQ 队列发送类 GenericMessage 的实例(另请参阅下面的第四个代码片段 - ZmqHandler.hxx)。TesfFE.cpp 通过包含 ZmqHandler.hxx 在这里实现了 ZMQ 推送模式。
我还有另一个名为 TestBE.cpp 的 .cpp 文件(请参阅下面的第三个代码片段),它通过 ZMQ 队列接收如此提到的 GenericMessage 实例。TestBE.cpp 在这里实现了 ZMQ 拉模式,以通过 ZMQ 队列检索 GenericMessage 实例。
在 TestFE.cpp 中,我使用标准的 memcpy 函数将 GenericMessage 对象转换为 ZMQ 队列可以接受的形式。在 TestBE.cpp 的第 21 行(在注释中的第三个代码片段中标记),我收到分段错误,因为它看起来 memcpy 在发送方 TestFE.cpp 上无法正常工作。执行 TestBE 时,我收到以下消息。我还在下面提供了 gdb 回溯。你能告诉我这里有什么问题吗?为什么你认为 memcpy 不能正确地将我的 GenericMessage 对象复制到 ZMQ message_t 格式?或者你认为问题出在其他地方?任何意见将不胜感激。
错误信息
$ ./TestBE
Connecting to FE...
RECEIVED: 1
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
GDB 回溯
(gdb) …
Run Code Online (Sandbox Code Playgroud) 这是我之前在Boost的另一个线程中打开的一个后续问题:反序列化通过ZeroMQ pull socket传递的自定义C++对象.该线程中的问题已根据提供的答案得到解决.现在我在运行时遇到了另一个问题.请参阅以下说明.我是C++领域的新手,所以如果你告诉我除了我在问题陈述下所描述的代码之外提供的代码的任何部分,我还要感谢.
描述:
我有一个名为GenericMessage的C++类,它只包含一个id和data作为其成员(参见下面的代码片段2 - GenericMessage.hxx).我的目的是序列化这个类的一个实例,并通过一个实现推送模式的ZeroMQ套接字发送它.
序列化和发送任务已在ZMQHandler类中实现(请参阅sendToBE函数),该函数放在头文件名ZMQHandler.hxx中,如下面的代码片段3所示.此类由TestFE.cxx实例化,如下面的第4个代码片段所示.
GenericMessage实例的接收和反序列化在TestBE.cxx 中实现,可在下面的第5个代码片段中找到.我的目的是通过ZMQ套接字(即拉套接字)接收GenericMessage实例,对其进行反序列化,然后将其成员打印到标准输出.
我验证了通过ZeroMQ套接字传输的seriazalition和GenericMessage对象可以正常工作.反序列化似乎也起作用,因为我没有得到任何异常或分段错误之类的东西.
问题陈述:
TestBE.cxx中的代码(参见代码片段5)所期望的是通过ZeroMQ套接字接收GenericMessage对象反序列化它,然后打印它的两个成员,即id和数据,在这种情况下是一个字符串对象.更确切地说,它应首先打印它获取的char流的内容,然后打印反序列化对象的成员.相反,它根本不打印这些成员.Al,它将包括问号在内的奇怪符号放入收到的char流中.请参阅下面的第一个代码段,你会看到我的观点.
问题:
i)为什么我不能得到预期的输出?为什么我在输出中看到标记为奇怪符号的问题?为什么我看不到打印的id和数据字段,尽管它们在打印的字符流中可见?
ii) GenericMessage类中的数据字段是一种模板类型,为了测试目的,它被设置为std :: string.但是,在实际使用中,我计划以序列化形式传输更复杂的对象.在这方面,你认为使用类boost :: archive :: text_iarchive和boost :: archive :: text_oarchive是有用的.我应该使用二进制代码吗?如果是这样,你认为我应该注意一些陷阱/可能存在的问题吗?提前致谢.
SNIPPET 1:程序输出与预期输出
*******************
The EXPECTED OUTPUT
*******************
Connecting to FE...
CHAR [22 serialization::archive 9 0 1 0
0 1 12 Hello there!]
ID: 1
Data: Hello there!
CHAR [22 serialization::archive 9 0 1 …
Run Code Online (Sandbox Code Playgroud) 谁能告诉我std::cerr
和之间的用法区别是什么perror
void perror ( const char * str );
Run Code Online (Sandbox Code Playgroud)
我想知道在 C++ 应用程序中哪一个更可取,为什么它更可取。