小编sch*_*mar的帖子

PHP关联数组是否已订购?

我来自python背景,类似的python数据类型(字典)是一组无序的键值对.

我想知道PHP关联数组是否是无序的?它们似乎是订购的.

$test = array(
  'test' => 'test',
  'bar' => 'bar',
);

var_dump($test);    

var_dump(array_slice($test, 0, 1));
Run Code Online (Sandbox Code Playgroud)

测试总是在bar之前,我可以按照你的看到切片.那么这总是保证在php版本之间订购吗?订单只是我声明数组的顺序吗?所以有些内部指向'test'将[0]放在数组中?我已经阅读了http://php.net/manual/en/language.types.array.php,但它没有对这个问题有太多了解.感谢您的回复.泰

php arrays dictionary

64
推荐指数
2
解决办法
2万
查看次数

删除实验分支

如果我想完全删除功能分支,如何删除mercurial中的功能分支?它应该从历史中删除,我不想在另一个分支中合并更改(只是抛弃代码).

我知道我可以将我的其他分支克隆到这里描述的新存储库,但这似乎不是一个干净的解决方案.

mercurial branch

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

实现动态多时间轴队列

介绍

我想实现一个动态多时间轴队列.这里的上下文是一般的调度.

什么是时间表队列

这仍然很简单:它是任务的时间轴,每个事件都有其开始和结束时间.任务被分组为作业.这组任务需要保持其顺序,但可以在整体上及时移动.例如,它可以表示为:

 --t1--   ---t2.1-----------t2.2-------
 '    '   '        '                  '
20    30  40       70                120 
Run Code Online (Sandbox Code Playgroud)

我会将其实现为具有一些额外约束的堆队列.Python sched模块在这方面有一些基本的方法.

定义多个时间轴队列

一个队列代表资源,任务需要资源.图形示例:

R1  --t1.1----- --t2.2-----      -----t1.3--    
            /  \                /
R2  --t2.1--     ------t1.2-----
Run Code Online (Sandbox Code Playgroud)


解释" 动态 "

当任务可以使用多个资源中的一个时,它变得有趣.另一个约束是可以在同一资源上运行的连续任务必须使用相同的资源.

示例:如果(从上面)任务t1.3可以运行R1R2,队列应如下所示:

R1  --t1.1----- --t2.2-----      
            /  \                
R2  --t2.1--     ------t1.2----------t1.3--    
Run Code Online (Sandbox Code Playgroud)


功能(优先顺序)

  • FirstFreeSlot(持续时间,开始):找到第一个空闲时隙从开始start哪里有空闲时间duration(见末详细的说明).
  • 通过考虑约束(主要是:任务的正确顺序,同一资源上的连续任务)和使用,尽可能在多个资源上尽可能地排队作业FirstFreeSlot.
  • 工作在特定的时间和向后移动的尾巴
  • 删除一份工作
  • 重新计算:删除后,测试是否可以提前执行某些任务.


关键问题

关键是:我如何表示 …

python algorithm performance intervals data-structures

17
推荐指数
1
解决办法
1496
查看次数

快速检测或模拟WSAECONNREFUSED

对于WSAECONNREFUSED(这意味着积压已满或端口不可用),Windows套接字有一些奇怪的行为,请参阅/sf/answers/721583691/.如果Windows检测到这些条件之一,则重试(最多)两次,间隔为0.5秒.这意味着在套接字连接尝试(http://support.microsoft.com/kb/175523/en-us)上检测WSAECONNREFUSED至少需要1秒钟.

有没有办法加速这种检测而不会弄乱注册表值?我需要在单元测试中模拟拒绝套接字连接.像模拟与原始套接字的拒绝连接一样的解决方法也是可以接受的.

这是一个简单的Python脚本,演示了这个问题:

import errno
import socket
import time

PORT = 50123


def main():
    s = socket.socket()
    s.bind(('127.0.0.1', PORT))
    s.listen(0)
    client = socket.socket()
    client.connect(('127.0.0.1', PORT))

    client2 = socket.socket()
    start = time.time()

    try:
        client2.connect(('127.0.0.1', PORT))
    except socket.error as e:
        assert e.errno == errno.WSAECONNREFUSED
        print 'connection attempt took', time.time() - start
    finally:
        client2.close()
        client.close()
        s.close()


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

python sockets windows winsock

11
推荐指数
1
解决办法
494
查看次数

连接两个TCP套接字而不定义客户端/服务器角色

我想通过TCP连接两个进程,但我不想指定哪个是服务器,哪个是客户端,但他们知道彼此的IP和主机.他们应该决定自己哪个是服务器,哪个是客户端,然后启动连接.

背景

我正在开发一个双向分布式框架,与RPC相比,没有客户端/服务器模型.相反,分布式组件应该只能通过指定主机和端口来相互通信.

编辑:这个概念超越了套接字连接的实现细节.这应该是一个新的概念,以简化软件工程方面的分布式应用程序设计.这与RPC和SOA(面向服务器/客户端)和面向消息的系统(需要使用IMO非直观模式)形成对比.

解决方案一定不能

  • 通过UDP定义协议,因为我需要TCP可靠性和SSL使用的可能性
  • 使用像ZeroMQ这样的框架,因为我无法在目标平台上使用二进制包
  • 编辑:全局消息代理/名称服务器,因为它应该是一个没有额外进程的轻量级解决方案.添加这样的节点将重新引入客户端/服务器概念

更新

讨论之后似乎只有一种有用的方法:每个对等体都需要一个列表套接字(当然,你不能做任何自动发现).在连接请求中,如果尚未打开连接,则节点将尝试连接到另一个对等方.

如果连接是同时完成的,那么这可能会有问题,因此我们最终会在两个对等体之间建立两个连接.现在的问题是如何在异步上下文中处理它.我不认为这在评论中如下所述那么简单,因为我们需要保证只关闭一个连接.我认为这项任务需要像2PC这样的协议.

python sockets distributed-computing

10
推荐指数
2
解决办法
3719
查看次数

我可以使用python默认库集加密电子邮件并将其解密吗?

当然,在stackoverflow中已经提出类似的问题,但我不想使用像Crypto之类的任何第三方库.所以我需要从用户电子邮件生成密文并将其解密回明文.我怎么能在python中这样做?

python encryption

7
推荐指数
2
解决办法
3053
查看次数

Pythonic解决方案从迭代器​​中删除N值

是否存在n从迭代器中删除值的pythonic解决方案?您可以通过丢弃n值来执行此操作,如下所示:

def _drop(it, n):
    for _ in xrange(n):
        it.next()
Run Code Online (Sandbox Code Playgroud)

但是,IMO并不像Python代码那样优雅.我在这里错过了更好的方法吗?

python iterator

6
推荐指数
2
解决办法
1373
查看次数

使用外国字符抓取网站的问题

我正在写一篇关于刮刀的帮助.我正在努力争取一张大学排名表,其中一些学校是欧洲大学,他们的名字中有外国人(例如ä,ü).我已经用同样的方式在外国大学的另一个网站上刮另一张桌子了,一切正常.但由于某种原因,当前的刮刀不适用于外来字符(并且就解析外来字符而言,两个刮刀完全相同).

这就是我正在做的尝试让事情发挥作用:

  1. 在文件的第一行声明编码:

    # -*- coding: utf-8 -*-
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从django.utils.encoding导入smart_unicode从django框架导入和使用智能unicode

    school_name = smart_unicode(html_elements[2].text_content(), encoding='utf-8',        
    strings_only=False, errors='strict').encode('utf-8')
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用编码功能,如上所述,当与smart_unicode函数链接时.我想不出还有什么我可能做错了.在处理这些刮刀之前,我真的不太了解不同的编码,所以这是一个令人大开眼界的经验.我试过阅读以下内容,但仍然无法克服这个问题

据我所知,在编码中,每个字符都分配了一个数字,可以用十六进制,二进制等表示.不同的编码对于它们支持的语言数量有不同的容量(例如,ASCII只支持英语,UTF-8支持它看起来的一切但是,我觉得我正在做一切必要的事情,以确保正确打印字符.我不知道我的错误在哪里,这让我发疯了.请帮助!!

python unicode encoding web-scraping

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

如何同步python列表?

我有不同的线程,在处理后,他们将数据放在一个公共列表中.是否有任何内置在python中的列表或numpy数组只能由一个线程访问.其次,如果不是这样做的优雅方式呢?

python multithreading

5
推荐指数
2
解决办法
5967
查看次数

gevent,套接字和同步

我在公共套接字上发送了多个greenlet。是否可以确保通过发送的每个程序包socket.sendall都分开良好,还是在每次调用之前我都必须获得一个锁sendall

因此,我想防止出现以下情况:

  • g1发送ABCD
  • g2发送1234
  • 例如,接收到的数据混合在一起 AB1234CD
  • 预期是ABCD12341234ABCD

更新资料

看完源代码后,我认为这种情况不会发生。但是我必须使用锁,因为g1或g2可能会在上崩溃sendall。有人可以确认吗?

python sockets gevent

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