- 博客(24)
- 收藏
- 关注
原创 用decorator实现python单例模式
在 python 里实现单例模式有许多方法,个人觉得还是基于 decorator 的方法最优雅。从 stackoverflow 上找到一个实现,我将它改成了线程安全的,记录如下:import threadingclass Singleton: """ A class to ease implementing singletons. This should be
2013-01-08 15:45:29 612
原创 用atomic_t为多线程分配唯一的序号
最近有一个需求,要求在常数区间 [S, E] 里为多个线程分配唯一的序号。如: S, S+1, S+2, ... E-2, E-1, E, S, S+1,...困难在于不使用锁的情况下实现线程安全。最后使用内核提供的 atomic_t 实现。代码如下:int seq(){ static atomic_t curr = ATOMIC_INIT(S); in
2013-01-05 12:00:42 671
原创 [PYTHON]用lamdba实现递归函数
lambda 算符实现的匿名函数由于没有函数名,很难实现递归算法。但是可以通过把函数本身作为一个参数传递进来来实现递归算法。以阶乘为例:fac=lambda self, n: 1 if n == 1 else n * self(self, n-1)
2012-09-03 14:15:55 1089
原创 【转】gcc.x86_64的参数传递
版权为 win_hate 所有, 转载请保留作者名字我这段时间要把以前的一个 x86_32 的 linux 程序移植到 x86_64(AMD) 的 linux 环境里. 由于写的是数学算法, 64 与 32 位有很大不同, 代码实际上要重写. 看了点资料后, 觉得 AMD64 的扩展于以前 16 到 32 位的扩展很类似, e**, 扩展为 r**, 此外还多了8个通用寄存器 r8~r15...
2011-01-21 18:06:33 314
原创 [Code jam 2010]Qualification Round题目分析
Code Jam 2010:http://code.google.com/codejam Snapper Chain 其实这是一道英语阅读理解题,真的。只要读懂了就能轻松的做出来。 Snapper是一种带电子开关的插线板(我的理解)。它的一边是插头另一边是插孔。电子开关有两种状态:开和关,只有当插头通电是开关才能切换状态,且插头断电后开关状态保持不变。现在有N个snappe
2010-05-09 10:46:00 865
翻译 Flash,Google,VP8以及互联网视频的未来(一)
原文见:http://x264dev.multimedia.cx/?p=292 Flash,Google,VP8以及互联网视频的未来这将会是一个比往常更长的帖子,因为它会涵盖了许多内容。互联网上充斥着抱怨Flash的文章很长时间了,以至于听起来就像整个互联网在喊狼来了。但是,当然,尽管不断抱怨,他们是对的:Flash在Windows x86以外的平台性能都很糟糕而
2010-02-26 12:51:00 1946
原创 素数测试
给定一个数字n,检测n是否是一个素数。 最简单的方法就是尝试从2到 n的平方根 是否整除N。 def isPrime(n): for i in range(2, int(pow(n, 0.5))): if n % i == 0: return False return True 另一种方法就是米勒-拉宾素数测试: 一
2010-02-07 16:41:00 654
原创 线程池版的SocketServer
python的SocketServer模块提供了一个开发socket server的捷径。但是其自带的异步handler ThreadingMixIn每次处理请求是都会产生一个新的线程,在负载较重的时候会有一些问题。需要一个使用线程池的TCPServer. 具体的代码如下: from threading import Threadfrom SocketServer import Threa
2010-02-07 15:22:00 1289 1
原创 [code jam 2009试题分析]Qualification Round - Alien Language
题目如下: Problem After years of study, scientists at Google Labs have discovered an alien language transmitted from a faraway planet. The alien language is very unique in that every word consists of exac
2010-02-05 09:31:00 606
原创 【百度面试题】循环有序数组的查找问题
问题:有一个循环有序数组A,如{7,8,9,0,1,2,3,4,5,6},不知道其最小值的位置。那么如何从这样的数组中寻找一个特定的元素呢? 解决:当然,遍历总是一个办法。当然面试的时候回答遍历估计就直接杯具了。 我的想法是将原数组分段,用首元素s,中间元素m和尾元素e,可以将数组分为两个子数组s1,s2,那么,必然有至少一个子数组是有序的。那么如何确定那一段是有序
2010-01-31 18:39:00 3436 1
[code jam 2009试题分析]Qualification Round - Alien Language
题目如下:ProblemAfter years of study, scientists at Google Labs have discovered an alien language transmitted from a faraway planet. The alien language is very unique in that every word consists of ex...
2009-09-16 16:14:24 169
【笔记】第一卷第一章 基本概念
[b]1.1 算法 Alogrithm[/b][b]算法E[/b](欧几里德算法)求两个数的最大公约数[code="c"]//greatest common divisorint gcd(int a, int b){ int r; assert(a * b != 0); r = a % b; while(r != 0) { a = b; b = r;...
2009-08-04 16:34:51 114
用sqlite3实现稀疏矩阵
用python实现了一个稀疏矩阵。基本思想是3元组(行坐标、列坐标和值)描述矩阵。将3元组保存在sqlite3的内存表里。代码如下:[code="python"]import sqlite3class SparseMatrix: def __init__(self, row_count=2147483647, column_count=2147483647):...
2009-07-29 11:49:54 170
线程池版的SocketServer
python的SocketServer模块提供了一个开发socket server的捷径。但是其自带的异步handler ThreadingMixIn每次处理请求是都会产生一个新的线程,在负载较重的时候会有一些问题。需要一个使用线程池的TCPServer.具体的代码如下:[code="python"]from threading import Threadfrom Socket...
2009-07-29 11:32:16 260
素数测试
给定一个数字n,检测n是否是一个素数。最简单的方法就是尝试从2到 n的平方根 是否整除N。[code="python"]def isPrime(n): for i in range(2, int(pow(n, 0.5))): if n % i == 0: return False return True[/code]...
2009-06-25 17:13:18 141
称苹果问题
问题:10个箱子,每个箱子10个苹果,其中一个箱子的苹果是9两/个,其他的都是1斤/个。要求利用一个秤,只秤一次,找出那个装9两/个的箱子。 分析:注意到题目中提供的是秤而不是天平。而且苹果的重量已经明确的给出了。因为只能称一次,所以一定是通过这个重量来推断出是哪个箱子。为了区分不同的箱子,从不同箱子里取出的苹果数也必定不同。想到这里答案就已经呼之欲出了。解答:...
2009-06-25 13:32:33 1286
python的编码
文件的编码在py文件的头部用“# -*- coding:TYPE -*-”来标记py文件的编码如# -*- coding:gbk -*-就表示该文件中的所有字符都是gbk编码的。但是该标记不影响python的输入输出的编码。字符串的编码在python(2.X版)内部有两种字符串str和unicodestr不使用任何编码,不可显示的字符显示为'\xXX',XX为在...
2009-06-23 15:46:02 113
猜牌问题的分析与解答
题目:S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4 黑桃J、8、4、2、7、3 草花K、Q、5、4、6 方块A、5。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉 P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q 先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?于是,S先生听到如下的对话:P先生:我不知道这张牌。 (1)Q...
2009-06-23 14:53:51 344 1
[TAOCP第三卷6.1节]顺序搜索
TAOCP第三卷搜索算法中最先讲的就是顺序搜索。顺序搜索的优点是足够的简单,在数据量足够小的时候速度最快。而且在无序数据集的时候顺序搜索是唯一可行的方法。首先是6.1节的程序S[code="c"]int search(int array[],int count, int n) { int i = 0; for(; i < count; i++) { ...
2009-06-22 17:54:54 164
原创 使用python访问hbase
通过thrift,我们可以使用python访问hbase。 关于thriftthrift是一个跨语言服务的软件开发框架(Thrift is a software framework for scalable cross-language services development.)。它的官方网站是:http://incubator.apache.org/thrift/ 下载
2009-04-19 12:06:00 9856 1
原创 旋转一个矩阵
如何用最短的代码旋转一个矩阵?def print_table(t): for i in t: for j in i: print j, printm = [[1,2,3],[4,5,6],[7,8,9]]n = zip(*m)print_table(m)print_table(n)输出如下:1 2 34 5 67 8 91 4 72 5 83
2008-09-11 15:41:00 1092 3
原创 求解数独
按照两个规则进行#1 如果某个格X只能填入i,则X=i#2 如果某个数字i只能填入格X,则X=i后来发现只要#2就能够求出解了。代码如下,接受一个包含81个数字的字符串,对应数独的81格,未知的格用0表示。如果没有参数则自动生成一个测试用例。import sysimport osimport randomfrom array import arraytestcase = "16497352825
2008-09-08 14:34:00 690
原创 求一个整数各个位上的数字之和
判断一个整数能否被3整除,最快的方式是将该整数的各个位上的数字相加,看看和能否整除3。求一个整数各个位上的数字之和的函数如下:>>>add = lambda x : sum([int(i) for i in str(x)])>>>add(123456789)45
2008-09-08 14:22:00 2553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人