小编Use*_*ess的帖子

为什么不能同时绑定到0.0.0.0:80和192.168.1.1:80?

我的python测试代码:

import socket

s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind(('192.168.1.1', 80)) 
s1.listen(5)

s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2.bind(('0.0.0.0', 80)) 
s2.listen(5)
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

fpemud-workstation test # ./test.py
Traceback (most recent call last):
  File "./test.py", line 11, in <module>
    s2.bind(('0.0.0.0', 80)) 
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)

192.168.1.1是我的eth0接口的ip地址.
我认为0.0.0.0:80和192.168.1.1:80应该能够共存.
带有dst-addr 192.168.1.1的数据包进入套接字s1,带有其他dst-addr的数据包进入套接字s2.

python sockets linux

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

Python:"List.append ='list'对象属性'append'是只读的"

我正在尝试将Solr服务器的响应写入CSV文件.我是python的新手,并且已经获得了修改代码.最初的代码看起来像这样......

for doc in response.results:
    status = json.loads(doc['status'])
Run Code Online (Sandbox Code Playgroud)

该脚本运行并打印正确的信息.但它只会打印一个结果(最后一个).我认为这是因为循环不断地写入变量'status',直到它通过响应.

经过一些阅读后,我决定将信息存储在一个列表中.这样我就可以打印信息来分隔列表中的行.我创建了一个空列表并更改了下面的代码 -

for doc in response.results:
    list.append = json.loads(doc['status'])
Run Code Online (Sandbox Code Playgroud)

尝试运行代码后,我得到了这个回复 -

`AttributeError: 'list' object attribute 'append' is read-only`.
Run Code Online (Sandbox Code Playgroud)

我哪里错了?列表不是最好的方法吗?

python json solr list

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

lambda的捕获机制

我无法理解lambda函数和捕获变量的机制,因此我做了一些测试并得出了非常奇怪的结论.那是:

class ClassA
{
public:
  std::function<void()> lambda;
  void DoYourStuff()
  {
    int x;
    x = 1;
    lambda = [=] () { printf("A %d\n", x);};
    lambda();
    x = 2;
    lambda(); 
  }
};

class ClassB
{
public:
  std::function<void()> lambda;
  int x;
  void DoYourStuff()
  {
    x = 1;
    lambda = [=] () { printf("B %d\n", x);};
    lambda();
    x = 2;
    lambda(); 
  }
};
Run Code Online (Sandbox Code Playgroud)

注意:唯一的区别在于x变量的位置; ClassA和ClassB的功能有不同的输出!

A 1
A 1
B 1
B 2
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 这是理想的行为吗?
  2. 如果我在ClassA中使用[&]而不是[=],那些lambdas是否相同?
  3. 是否有一些关于何时[=]实际制作副本的一般规则?
  4. 究竟是什么时候应该发生lambda的变量捕获?
  5. 我可以强制lambda重新捕获变量吗?

谢谢

c++ lambda

6
推荐指数
1
解决办法
195
查看次数

什么时候使用git branch --track(开始"看上游"的意思)?

直到最近,我还没有意识到--track切换git branch.我阅读了文档并尝试了这个命令,但对我来说没有任何意义.

--track

创建新分支时,设置branch.<name>.remotebranch.<name>.merge配置条目以将起点分支标记为新分支的"上游".这个配置会告诉git显示两个分支git status 和git 之间的关系branch -v.此外,它在git pull没有参数的情况下指示在检出新分支时从上游拉出.

当起点是远程跟踪分支时,此行为是默认行为.false 如果需要git checkout,将branch.autoSetupMerge配置变量设置为,并git branch始终表现为 - 如果给出了--no-track.always如果在起点是本地或远程跟踪分支时需要此行为,请将其设置为.

我可以看到,当人们想要创建分支跟踪上游分支时,人们会与此开关相关联

这是什么意思?是我还是这个开关描述令人困惑.当我使用term时upstream,我指的是另一个我可以推动更改的远程仓库(fork).

当我开始跟踪远程分支时会发生什么?它在当地表现如何?

git git-track

6
推荐指数
1
解决办法
3396
查看次数

PHP和Mysql中实现哈希表的步骤

我是编程语言新手,我正在使用 PHP 和 mysql。我收到一个用 php 做哈希表的作业。我需要做的是,存储用户收集的项目,然后显示它。在网上做了一些研究后,我将在实现哈希表时执行以下步骤,如果我错了,请纠正我:

  1. 设置表格:

    -> 用户表:uid(int[5])、用户名(varchar[128])、item_id(int[8]、items_id_hash(int[50])

    -> 项目表:item_id(int[5])、item_name(varchar[128])、items_id_hash(int[50])

  2. 创建一个哈希函数(如何创建哈希函数?自己创建还是从网上获取?)将键转换为哈希值,然后插入数据库。例如:将 item_id = 001 哈希为哈希值 =(例如)12345。然后插入到 users 表中。

  3. 显示/搜索。从用户处检索哈希值,然后将其与项目表进行比较并显示。

问题:

  1. 我的步骤正确吗?
  2. 在哪里可以找到好的 php 哈希函数?我可以使用 md5 或 sha1 或盐吗?

php mysql hashtable

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

拆分大型 git 存储库

我们有一个大型 C++ 存储库,大小为 80 GB,包含近 200,000 个文件,包含多个组件。

库(档案)对于更多数量的紧密耦合的组件来说是常见的。

这样,所有 git 操作以及编译/构建特定组件都会花费太长时间。

请建议我如何将这个单个存储库划分为多个存储库。

git split

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

不能在C++中重载构造函数

我正在做一个只移动的等价物std::function.move_function包含指向基类的指针,move_function_base该类型会删除基础的仿函数类型.move_function_imp继承move_function_base并保存类型化的底层函子.move_function_imp定义如下:

template<class F, class ReturnType, class... ParamTypes>
class move_function_imp : public move_function_base<ReturnType, ParamTypes...> {

  typename std::remove_reference<F>::type f_;

public:
  virtual ReturnType callFunc(ParamTypes&&... p) override {
    return f_(std::forward<ParamTypes>(p)...);
  }
  explicit move_function_imp(const F& f) : f_(f) {}
  explicit move_function_imp(F&& f) : f_(std::move(f)) {}

  move_function_imp() = delete;
  move_function_imp(const move_function_imp&) = delete;
  move_function_imp& operator=(const move_function_imp&) = delete;
};
Run Code Online (Sandbox Code Playgroud)

当我使用它时,我得到一个错误,构造函数不能相互重载.我究竟做错了什么?完整代码位于此处.


编辑:从ideone链接粘贴的错误:

prog.cpp: In instantiation of ‘class move_function_imp<main()::__lambda0&, void>’:
prog.cpp:39:30:   required from …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

C++ - 以整数位获取大小

我需要知道一个整数是否是32位长(我想知道它是否正好是32位长(8个十六进制字符).我怎样才能在C++中实现这个?我应该用十六进制表示还是用无符号表示int one?

我的代码如下:mistream.open("myfile.txt");

mistream.open("myfile.txt");

if(mistream)
{
    for(int i=0; i<longArray; i++)
    {
        mistream >> hex >> datos[i];        
    }
}

mistream.close();
Run Code Online (Sandbox Code Playgroud)

其中mistream的类型为ifstream,而datos是unsigned int数组

谢谢

c c++ hex integer ifstream

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

48位8个6位单元串:如何快速获得每个单元的中间4位

我几乎用C语言实现了DES算法,我想优化我的代码.所以我用过gprof.以下是报告的一部分:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  us/call  us/call  name    
 51.78      9.32     9.32  8000000     1.17     1.17  sboxes
 34.71     15.57     6.25  8000000     0.78     0.78  extendRight
  9.90     17.35     1.78   500000     3.56    35.96  operation
  2.39     17.78     0.43  8000000     0.05     0.05  xorRightAndKey
Run Code Online (Sandbox Code Playgroud)

gprof表明该sboxes功能占51.78%的时间.

sboxes(uchar aucData[6], ...),我被给予48位,将它们分成8个插槽,每个插槽为6位.

每个插槽:

  1. 将第一位与最后一位组合得到X;

  2. 获得中间4位得到Y;

  3. 做的东西(X, Y);

例如,011110是一个插槽,所以X = 00Y = …

c algorithm assembly des

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

如何在python中运行时捕获断言(在C++中引起)

我想在python应用程序中嵌入C++.我不想使用Boost库.

如果C++函数做断言,我想抓住它并在我的python应用程序中打印错误或获取一些详细信息,如python脚本中的行号导致错误.主要是"我想进一步在python执行流程中"

我该怎么做?我找不到任何函数来获取Python API或C++中的详细断言信息.

C++代码

void sum(int iA, int iB)
{
    assert(iA + iB >10);
}
Run Code Online (Sandbox Code Playgroud)

Python代码

from ctypes import * 

mydll = WinDLL("C:\\Users\\cppwrapper.dll")

try:
    mydll.sum(10,3)
catch:
print "exception occurred"

# control should  go to user whether exceptions occurs, after exception occurs if he provide yes then continue with below or else abort execution, I need help in this part as well

import re
for test_string in ['555-1212', 'ILL-EGAL']:
    if re.match(r'^\d{3}-\d{4}$', test_string):
        print test_string, 'is a valid US local phone …
Run Code Online (Sandbox Code Playgroud)

c++ python windows ctypes assertions

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

标签 统计

c++ ×4

python ×3

c ×2

git ×2

algorithm ×1

assembly ×1

assertions ×1

c++11 ×1

ctypes ×1

des ×1

git-track ×1

hashtable ×1

hex ×1

ifstream ×1

integer ×1

json ×1

lambda ×1

linux ×1

list ×1

mysql ×1

php ×1

sockets ×1

solr ×1

split ×1

windows ×1