在作为客户端连接之前,我需要将我的套接字绑定到特定的本地IP.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.1.2", 33333))
s.connect(("google.com", 80))
s.send("test")
Run Code Online (Sandbox Code Playgroud)
我知道如何绑定到特定的本地IP地址,但我不知道指定哪个端口.我不能使用随机端口,因为它可能已经在使用中.有没有办法绑定到任何可用的端口?
我需要找到许多语言的缩写文本.目前的正则表达式是:
import regex as re
pattern = re.compile('(?:[\w]\.)+', re.UNICODE | re.MULTILINE | re.DOTALL | re.VERSION1)
pattern.findall("U.S.A. u.s.a.")
Run Code Online (Sandbox Code Playgroud)
我在结果中不需要美国,我只需要大写文本.除了英语之外,[AZ]不会使用任何语言.
可能重复:
strtok给出分段错误
为什么我使用此代码获得段错误?
void test(char *data)
{
char *pch;
pch = strtok(data, " ,.-"); // segfault
while (pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, " ,.-");
}
return NULL;
}
char *data = "- This, a sample string.";
test(data);
Run Code Online (Sandbox Code Playgroud) 我需要找出来,是ip属于ip mask.例如:
ip = 192.168.0.1 mask = 192.168.0.1/24.
我找到了将ip转换为mask的函数:
inet_cidrtoaddr(int cidr, struct in_addr *addr)
{
int ocets;
if (cidr < 0 || cidr > 32) {
errno = EINVAL;
return -1;
}
ocets = (cidr + 7) / 8;
addr->s_addr = 0;
if (ocets > 0) {
memset(&addr->s_addr, 255, (size_t)ocets - 1);
memset((unsigned char *)&addr->s_addr + (ocets - 1),
(256 - (1 << (32 - cidr) % 8)), 1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我如何比较ip和cidr范围?
我正在做很多步骤.其中之一是使用gevent + monkey补丁
from gevent import monkey; monkey.patch_all()
Run Code Online (Sandbox Code Playgroud)
一切都很好.但是我可以在使用它之后将其取消吗?我想返回我的默认套接字函数.
我需要在UNICODE中找到所有两个字符的sumbol,除了下划线.目前的解决方案是:
pattern = re.compile(ur'(?:\s*)(\w{2})(?:\s*)', re.UNICODE | re.MULTILINE | re.DOTALL)
print pattern.findall('a b c ab cd vs sd a a_ _r')
['ab', 'cd', 'vs', 'sd', 'a_', '_r']
Run Code Online (Sandbox Code Playgroud)
我需要从正则表达式中排除下划线_,因此找不到a_ AND _r.问题是,我的角色可以是任何语言.所以我不能像这样使用正则表达式:[^ a-zA-Z].例如,俄语:
print pattern.findall(u'?_')
Run Code Online (Sandbox Code Playgroud) 我有这样的模型:
class User(db.Model):
__tablename__ = 'users'
__table_args__ = {'mysql_engine' : 'InnoDB', 'mysql_charset' : 'utf8'}
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
_password = db.Column('password', db.String(80))
def __init__(self, username = None, email = None, password = None):
self.username = username
self.email = email
self._set_password(password)
def _set_password(self, password):
self._password = generate_password_hash(password)
def _get_password(self):
return self._password
def check_password(self, password):
return check_password_hash(self._password, password)
password = db.synonym("_password", descriptor=property(_get_password, _set_password))
def __repr__(self):
return '<User %r>' % self.username
Run Code Online (Sandbox Code Playgroud)
我有ModelView:
class UserAdmin(sqlamodel.ModelView):
searchable_columns …Run Code Online (Sandbox Code Playgroud) 我正在使用c-ares进行DNS查询.问题是,我不知道如何获得NS值.我没有找到任何示例和文档不适合我:(
ares_parse_ns_reply的手册页仅提供功能描述.我已经创建了我的频道并弄清楚如何进行gethostbyname查询:
// ...
status = ares_init_options(&channel, &options, optmask);
if (status != ARES_SUCCESS) {
printf("ares_init_options: %s\n", ares_strerror(status));
return EXIT_FAILURE;
}
// ...
ares_gethostbyname(channel, "stackoverflow.com", AF_INET, callback, NULL);
// ...
Run Code Online (Sandbox Code Playgroud)
但是我接下来要做什么来获得MX/NS/AAAA记录?
我们有一个Python 2项目,我们积极使用协同程序.我们找不到关于协程内部异常处理的任何指南.
例如,在这里龙卷风的主要开发人员提到coroutines should never raise an exception,但目前尚不清楚为什么.看起来这种方法可以在Tornado.web本身中使用并大量使用:
https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py#L180
class AuthCreateHandler(BaseHandler):
def get(self):
self.render("create_author.html")
@gen.coroutine
def post(self):
if self.any_author_exists():
raise tornado.web.HTTPError(400, "author already created")
hashed_password = yield executor.submit(
bcrypt.hashpw, tornado.escape.utf8(self.get_argument("password")),
bcrypt.gensalt())
Run Code Online (Sandbox Code Playgroud)
tornado.web.HTTPError只是扩展了基本的Exception类.另外,这里的讨论https://github.com/tornadoweb/tornado/issues/759#issuecomment-91817197建议在协程内提高异常是合适的.
同样在这里,活跃的龙卷风贡献者建议提高例外是好的:
class PostHandler(tornado.web.RequestHandler):
@gen.coroutine
def get(self, slug):
post = yield db.posts.find_one({'slug': slug})
if not post:
raise tornado.web.HTTPError(404)
self.render('post.html', post=post)
Run Code Online (Sandbox Code Playgroud)
在Tornado协同程序中提出异常是否有任何缺点,或者我们应该raise gen.Return(exception_object)吗?
我有看起来像这样的 DataFrame
我想绘制它:
df2[['width', 'height', 'depth']].head(20).plot.bar(figsize=(8, 8), fontsize=16)
Run Code Online (Sandbox Code Playgroud)
效果很好,但我需要增加 Y 轴的点数。我想添加 2400、1900 等数字,我该怎么做?为什么 Y 轴上只有 6 个点?