小编zer*_*uno的帖子

sockaddr和sockaddr_storage之间的区别

sockaddr和sockaddr_storage有什么区别?我不明白,因为查看代码看起来非常相似:

struct sockaddr {
    uint8_t sa_len;
    sa_family_t sa_family;
    char sa_data[14];
}

struct sockaddr_storage {
    uint8_t ss_len;
    sa_family_t ss_family;
    char ss_padding[SIZE];
}
Run Code Online (Sandbox Code Playgroud)

c sockets

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

与so_reuseaddr相关的问题

我正在阅读以下关于“so_reuseaddr 到底做什么?”的答案。

此套接字选项告诉内核,即使此端口正忙(处于 TIME_WAIT 状态),仍要继续并重用它。如果它很忙,但处于其他状态,您仍然会收到地址已在使用中的错误。如果您的服务器已关闭,然后立即重新启动,而其端口上的套接字仍处于活动状态,则此功能非常有用。您应该意识到,如果出现任何意外数据,可能会使您的服务器感到困惑,但虽然这是可能的,但可能性不大。
有人指出,'一个套接字是一个5元组(proto、本地地址、本地端口、远程地址、远程端口)。SO_REUSEADDR 只是表示您可以重用本地地址。5 元组仍然必须是唯一的!作者:迈克尔·亨特 (mphunter@qnx.com)。这是事实,这就是为什么您的服务器不太可能看到意外数据的原因。危险在于这样的 5 元组仍然在网络上浮动,并且当它四处浮动时,来自同一系统上同一客户端的新连接碰巧获得相同的远程端口。Richard Stevens 在#2.7“请解释 TIME_WAIT 状态”中解释了这一点。

我只是无法得到最后几行The danger is....TIME_WAIT state.它说如果网上仍然有相同的浮动元组那么......但是如果 1 小时后还有相同的元组怎么办?我不明白,有人能解释一下吗?

sockets tcp bind

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

扩展ActiveRecord :: Base

如果我做这样的事情:

class ActiveRecord::Base
  def self.encrypt(*attr_names)
    encrypter = Encrypter.new(attr_names)

    before_save encrypter
    after_save  encrypter
    after_find  encrypter

    define_method(:after_find) { }
  end
end
Run Code Online (Sandbox Code Playgroud)
  1. 我在哪里保存这个文件?
  2. 它需要一个特殊的名字吗?
  3. 我必须在require某个地方打电话吗?
  4. 我可以将它保存在模型文件夹中吗?
  5. 模型文件夹中声明的类是否可以从模型文件夹中的其他类可见而不调用require

activerecord ruby-on-rails

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

理解Python解释器-t(-tt)选项

我试图找出-t和-tt选项的作用.

来自doc:

当源文件混合制表符和空格以进行缩进时,发出警告,使其依赖于以空格表示的制表符的价值.选项被给出两次(-tt)时发出错误.

我没有得到它,特别是粗体句,这是什么意思?标签是一个标签('\ t'),空格是一个空格(''),在ascii表中它们也有2个不同的代码.

我会举一个例子来更好地解释自己.我代码:

if True:
    print('hello') # here a tab that my editor represents with 4 spaces
    print('world') # here just used 4 spaces
Run Code Online (Sandbox Code Playgroud)

现在这个代码,我尝试过,在Python3和Python2中都不起作用,那么-t做什么呢?

你能给我一个澄清吗?

python tabs indentation python-2.7

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

内置模块在哪里?

我试图查找列出的所有目录,sys.path但我找不到任何builtins.py文件,那么它在哪里?

python python-3.x

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

通过迭代器理解len函数

阅读文档我注意到内置函数len不支持所有迭代,只支持序列和映射(和集合).在阅读之前,我一直认为该len函数使用迭代协议来评估对象的长度,所以我真的很惊讶地阅读它.

我阅读已经发布的问题(这里这里),但我仍然感到困惑,我仍然没有得到真正的原因,为什么不允许len一般的所有迭代.

这是一个比实施原因更具概念/逻辑性的原因吗?我的意思是当我问一个对象的长度时,我要求一个属性(它有多少个元素),一个对象作为生成器没有的属性,因为它们没有内部元素,即产生元素.

此外,生成器对象可以产生无限长度,导致未定义的长度,这是其他对象不能发生的事情,例如列表,元组,dicts等等......

我是对的,还是有更多的见解/更多我不考虑的事情?

python python-3.x

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

通过 __builtins__ 访问内置函数

我有以下脚本:

一个.py

print(__builtins__.max)
import b
Run Code Online (Sandbox Code Playgroud)

以及以下模块:

b.py

print(__builtins__.max)
Run Code Online (Sandbox Code Playgroud)

启动它们python3 a.py我得到:

<built-in function max>
Traceback (most recent call last):
  File "a.py", line 2, in <module>
    import b
  File "/home/antonio/Scrivania/b.py", line 1, in <module>
    print(__builtins__.max)
AttributeError: 'dict' object has no attribute 'max'
Run Code Online (Sandbox Code Playgroud)

所以我不明白。为什么在脚本__builtins__中分配给内置模块而不是在模块__builtins__中分配给字典?

python python-3.x

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

Bean必须有默认构造函数吗?

我正在阅读JavaBean规范,但我找不到一个句子,它明确指出bean必须有一个默认的构造函数.是这样或不是吗?

java javabeans

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

输出发送后调用 header()

根据 PHP 文档:

header()必须在发送任何实际输出之前调用,无论是通过普通的 HTML 标记、文件中的空行还是来自 PHP。使用 include 或 require 函数或其他文件访问函数读取代码,并且在调用 header() 之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时存在同样的问题。

但是当我尝试文档报告的示例时(稍作改动):

<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header('X-Header: http://www.example.com/');
exit;
?>
Run Code Online (Sandbox Code Playgroud)

一切正常,没有出现错误,我顺利地<html>在输出和X-Header标题中找到了我的标签。

我使用的是 PHP 7.1.9,所以文档所说的仍然正确吗?

php

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

为什么-3 >> 1等于-2?

在JS中,我们有以下情况:

<< 运营商:

3 << 1  // 6
5 << 1  // 10
7 << 1  // 14
-3 << 1 // -6
-5 << 1 // -10
-7 << 1 // -14
Run Code Online (Sandbox Code Playgroud)

>> 运营商:

3 >> 1  // 1
5 >> 1  // 2
7 >> 1  // 3
-3 >> 1 // -2
-5 >> 1 // -3
-7 >> 1 // -4
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,对于<<运营商而言,对于小于2**32的值,我们有abs(X << Y) === abs(-X << Y).

为什么这不适用于>>运营商?

javascript

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