小编Dhr*_*hak的帖子

装饰器来代替整个方法的特定代码行?

让我们假设一个简单的方法:

def test_method():
    a = 1
    b = 10000
    c = 20000
    sum1 = sum(range(a,b))
    sum2 = sum(range(b,c))
    return (sum1,sum2)
Run Code Online (Sandbox Code Playgroud)

要使用装饰器计时此方法,一个简单的装饰器将是:

from functools import wraps
def timed_decorator(f):
    @wraps(f)
    def wrapper(*args, **kwds):
        start = time.time()
        result = f(*args, **kwds)
        elapsed = (time.time() - start)*1000
        logger.debug("f::{0} t::{1:0.2f} ms".format(f.__name__, elapsed))
        return result
    return wrapper
Run Code Online (Sandbox Code Playgroud)

现在,如果我test_method想说第4 行的特定行sum1 = sum(range(a,b)),那么当前的实现涉及内联编码,如:

 def test_method():
        a = 1
        b = 10000
        c = 20000
        start = time.time()
        sum1 = sum(range(a,b)) # timing specific line …
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
1
解决办法
862
查看次数

MySQL:为什么将主键与随机生成的数字进行比较而不使用索引?

尝试从表中选择一个随机行,基于没有孔的自动增量主键.

表架构:

CREATE TABLE IF NOT EXISTS `testTable` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `data` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

INSERT INTO `testTable` (`id`, `data`) VALUES
(1, 'hello'),
(2, 'world'),
(3, 'new'),
(4, 'data'),
(5, 'more and more'),
(6, 'data '),
(7, 'more rows here'),
(8, 'most rows here'),
(9, 'testing'),
(10,'last');
Run Code Online (Sandbox Code Playgroud)

查询:

1/explain select * from testTable where id = ceil(Rand()*10) limit 1 ;

http://sqlfiddle.com/#!2/6e2b1/1

结果:

| ID | SELECT_TYPE | …
Run Code Online (Sandbox Code Playgroud)

mysql

8
推荐指数
1
解决办法
365
查看次数

如何为相同的字典生成唯一的相等哈希?

例如:

>>> a = {'req_params': {'app': '12345', 'format': 'json'}, 'url_params': {'namespace': 'foo', 'id': 'baar'}, 'url_id': 'rest'}
>>> b = {'req_params': { 'format': 'json','app': '12345' }, 'url_params': { 'id': 'baar' ,'namespace':'foo' }, 'url_id': 'REST'.lower() }
>>> a == b
 True
Run Code Online (Sandbox Code Playgroud)

什么是良好的哈希函数来为两个dicts生成相等的哈希值?字典将具有基本数据类型,如int,list,dict和strings,没有其他对象.

如果散列是空间优化的,那将是很好的,目标集大约是500万个对象,因此碰撞机会相当少.

我不确定json.dumps或其他序列化是否支持相等而不是字典中成员的结构.例如.使用str的str的基本哈希不起作用:

>>> a = {'name':'Jon','class':'nine'}
>>> b = {'class':'NINE'.lower(),'name':'Jon'}
>>> str(a)
"{'name': 'Jon', 'class': 'nine'}"
>>> str(b)
"{'class': 'nine', 'name': 'Jon'}"
Run Code Online (Sandbox Code Playgroud)

json.dumps也不起作用:

>>> import json,hashlib
>>> a = {'name':'Jon','class':'nine'}
>>> b = {'class':'NINE'.lower(),'name':'Jon'}
>>> a == b
True
>>> …
Run Code Online (Sandbox Code Playgroud)

python

8
推荐指数
1
解决办法
893
查看次数

解析手机用户代理字符串,好的解决方案还是库?

要求:通过从浏览器解析用户代理字符串来找出用户正在使用的电话.(在PHP中)例如.诺基亚1100,三星D900.

是否有一个很好的图书馆,有足够的电话供应商和模型数据库?

我找到的一些解决方案,需要你的观点:

i)手机检测:https://www.handsetdetection.com - 付费订阅

ii)WURFL - http://wurfl.sourceforge.net/

III)自己的解决方案 -我的手机制造商和型号的小型数据库,但必须添加用户代理字符串量身定制检查我的代码以匹配/模糊对数据库用户代理字符串格式匹配是不能跨厂商一致.

更新:

我们创建了一个量身定制的解决方案,它是正则表达式的混合,可以将标准用户代理(如iOS,Android,Blackberry和WURFL)作为其他手机(如symbian,j2me,bada等)的后备机制.

WURFL加入数据库/缓存(MySQL和memcached的,mongodb的等)codebase.Though你必须更新WURFL手机XML数据库的最新版本/同步WURFL信息每隔几个星期,以便及时了解已经存在为核心设置后的伟大工程随着新发布的手机的规格.

php user-agent mobile-devices

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

MySQL 5.5:以下哪一项是innodb中text/varchar字段的更好存储?

要求:

第1页 - >显示最近10篇博文的用户和1-2行预览

第2页 - >显示带有全文的单个博文.

方法1:

MySQL table ->   userid -> varchar 50
                 post_id -> integer
                 post_title -> varchar 100
                 post_description -> varchar 10000
Run Code Online (Sandbox Code Playgroud)

对于第1页,从blog_table中选择user_id,post_title,post_description.post_description的子字符串用于在列表中显示预览.

对于第2页,选择user_id,post_title,post_description,其中post_id = N.

方法2:

 MySQL table ->   userid -> varchar 50
                  post_id -> integer
                  post_title -> varchar 100
                  post_brief -> varchar 250
                  post_description -> text
Run Code Online (Sandbox Code Playgroud)

对于第1页,从blog_table中选择user_id,post_title,post_brief.

对于第2页,选择user_id,post_title,post_description,其中post_id = N.

是否存储两列,一个简短的varchar和一个full作为文本(因为它访问文件系统,并且只在需要时才应该查询),是否值得获得性能优势?

因为,方法2将仅存储指向行中文本的指针,而方法1将在行中存储完整的varchar 10K字符串.它是否会影响可驻留在RAM中的表数据量,从而影响查询的读取性能?

mysql innodb

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

为什么+ =运算符的工作方式与+不同,并为python字典赋值运算符?

有人可以解释一下这种行为:

>>> a = {'hello':'world' , 'good':'food'}
>>> b = [1,2]
>>> b = b + a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "dict") to list
>>> b += a
>>> b
[1, 2, 'good', 'hello'] <--- Why do the keys get added when dict cannot be added to a list
>>> 
Run Code Online (Sandbox Code Playgroud)

python

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

如果键不存在,则设置关联数组的默认值的功能

PHP中是否有一个函数来设置变量的默认值(如果未设置)?一些内置函数来替换类似的东西:

$myFruit = isset($_REQUEST['myfruit']) ? $_REQUEST['myfruit'] : "apple" ;
Run Code Online (Sandbox Code Playgroud)

php

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

Facebook要求2.0,如何更改"接受"按钮网址是Facebook外的网址?

我的应用程序位于Facebook画布外.Facebook请求对话框2.0仅重定向到画布URL,例如.apps.ibibo.com/YOURAPP.如何让它打开自定义网址?这可以在传统的FBML表单中使用fb:request-form和设置req-url.

请求2.0仅限于Facebook内部URL吗?我的要求是发送游戏请求,但我的游戏位于Facebook外面.即点击"接受"时,应该打开网址

" http://www.mydomain.com/mygame "而不是

" http://apps.facebook.com/mygame ".

在此输入图像描述

这些方法似乎不符合我的要求:http: //developers.facebook.com/docs/reference/dialogs/requests/ (只有canvas url重定向)

我想到了一个解决方法:用户单击"接受"并进入画布URL,并从画布URL,我将他重定向到我在facebook外面的URL.但我不确定这是否符合Facebook政策?(在第一段第4点提到:http://developers.facebook.com/blog/)

javascript php facebook facebook-graph-api

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

为什么django和python MySQLdb每个数据库都有一个游标?

示例场景:

MySQL运行单个服务器 - > HOSTNAME

该服务器上有两个MySQL数据库 - > USERS,GAMES.

任务 - >从GAMES.my_games_table获取10个最新游戏,并从USERS.my_users_table获取玩这些游戏的用户(假设没有加入)

在Django以及Python MySQLdb中,为什么每个数据库都有一个游标更可取?

扩展游标的缺点是每个MySQL服务器单个并且可以切换数据库(例如通过查询"使用USERS;"),然后处理相应的数据库

MySQL连接很便宜,但是如果有线性流并且没有可能需要两个游标的复杂tranasactions,那么单个连接不是很好吗?

python mysql django mysql-python

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

在使用枚举循环时,是否有一种简单的方法可以解包元组?

考虑一下:

the_data = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

使用枚举此循环可以写为:

  for index,item in enumerate(the_data):
     # index = 1 , item = 'a'
Run Code Online (Sandbox Code Playgroud)

如果 the_data = { 'john':'football','mary':'snooker','dhruv':'hockey'}

循环中使用键值对进行循环:

for name,sport in the_data.iteritems():
 #name -> john,sport-> football
Run Code Online (Sandbox Code Playgroud)

使用枚举时,数据成为循环中的元组,因此在循环声明后需要一个额外的赋值行:

#can assignment of name & sport happen within the `for-in` line itself ?
 for index,name_sport_tuple in enumerate(the_data.iteritems()):
         name,sport = name_sport_tuple  # Can this line somehow be avoided ?
         #index-> 1,name-> john, sport -> football 
Run Code Online (Sandbox Code Playgroud)

python

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