#!/usr/bin/envpythonimportsysimportrandomdefroll(top):returnrandom.randint(0,top)top=int(sys.argv[1])iflen(sys.argv)>1else100printroll(top)扔色子
系统 2019-08-29 22:21:27 1870
通过使用Gmail,进一步理解软件设计模式中的代理模式(Proxypattern).Gmail邮箱的使用需求:一直使用的邮箱A,所有的邮件进出的直接使用邮箱;大量的团队邮箱C1,C2,C3,...,Cn;以前被废弃的邮箱D1,D2,D3,...,Dm。为了使用的方便,我们希望所有的团队邮箱中的邮件能够自动转发到A,被废弃的邮箱能够自动转发邮件到A。一般情况下,我们可以简单的通过让C系、D系邮箱自动转发到A,不支持转发的可以通过Gmail自带的邮件提取功能去
系统 2019-08-29 22:17:11 1870
从入职京东到现在,做读服务已经一年多的时间了,经历了各种亿级到百亿级的读服务;这段时间也进行了一些新的读服务架构尝试,从架构到代码的编写,各个环节都进行了反复尝试,压测并进行调优,希望得到一个自己满意的读服务架构。一些设计原则无状态数据闭环缓存银弹并发化降级开关限流切流量其他无状态如果设计的应用是无状态的,那么应用就可以水平扩展,当然实际生产环境可能是这样子的:应用无状态,配置文件有状态。比如不同的机房需要读取不同的数据源,此时就需要通过配置文件指定。数据
系统 2019-08-29 22:00:35 1870
全文转载:http://pengjiaheng.iteye.com/blog/548472作者:和你在一起(fromJavaEye)垃圾回收的瓶颈传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是FullGC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃
系统 2019-08-29 21:59:33 1870
暴雪公司有个经典的字符串的hash公式先提一个简单的问题,假如有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做?有一个方法最简单,老老实实从头查到尾,一个一个比较,直到找到为止,我想只要学过程序设计的人都能把这样一个程序作出来,但要是有程序员把这样的程序交给用户,我只能用无语来评价,或许它真的能工作,但...也只能如此了。最合适的算法自然是使用HashTable(哈希表),先介绍介绍其中的基本知识,
系统 2019-08-12 09:30:13 1870
多线程开发可能遇到的问题假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改1000000次,num的最终的结果应该为2000000。但是由于是多线程访问,有可能出现下面情况:fromthreadingimportThreadimporttimenum=0deftest1():globalnumforiinrange(1000000):num+=1print("--test1--num=%d"%num)deftest2():glo
系统 2019-09-27 17:57:16 1869
前言单例模式(SingletonPattern),是一种软件设计模式,是类只能实例化一个对象,目的是便于外界的访问,节约系统资源,如果希望系统中只有一个对象可以访问,就用单例模式,显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。在Python中,我们可以用多种方法来实现单例模式:使用模块使用__new__使用装饰器(decorator)使用元类(metaclass)概念简单说,单例模式(
系统 2019-09-27 17:56:26 1869
中文编码问题一直是Python程序设计中很头痛的问题,本文对此较为详细的进行了总结归纳。具体如下:当字符串是:'\u4e2d\u56fd'>>>s=['\u4e2d\u56fd','\u6e05\u534e\u5927\u5b66']>>>str=s[0].decode('unicode_escape')#.encode("EUC_KR")>>>printstr中国当字符串是:'东亚学团一中'>>>printunichr(19996)东ord()支持uni
系统 2019-09-27 17:56:07 1869
模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入。常见的方式有如下几种:1.import>>>importsys>>>sys.path['','C:\\Python34\\Lib\\idlelib','C:\\Windows\\system32\\python34.zip','C:\\Python34\\DLLs','C:\\Python34\\lib','C:\\Python34','C:\\Python34\\lib\\site-pack
系统 2019-09-27 17:55:57 1869
Python中的sys模块极为基础而重要,它主要提供了一些给解释器使用(或由它维护)的变量,以及一些与解释器强交互的函数。本文将会频繁地使用该模块的getsizeof()方法,因此,我先简要介绍一下:该方法用于获取一个对象的字节大小(bytes)它只计算直接占用的内存,而不计算对象内所引用对象的内存这里有个直观的例子:importsysa=[1,2]b=[a,a]#即[[1,2],[1,2]]#a、b都只有两个元素,所以直接占用的大小相等sys.getsi
系统 2019-09-27 17:55:55 1869
指路牌《FlaskWeb开发》《FlaskWeb开发基于Python的Web应用开发实战》《FlaskWeb开发》是否适合新手入门PythonWeb开发?正文《FlaskWeb开发基于Python的Web应用开发实战》,O'Reilly"动物书系列"的"狗书",应该是很多Flask初学者被推荐使用的入门书,但是这本书真的适合初学者吗?Python的Web框架非常多,例如Django、Flask、Tornado、Web.py,Tornado没有接触过,无法评
系统 2019-09-27 17:55:54 1869
defreverse_rank(id,score):values=list()fori,vinzip(id,score):values.append((i,(np.argmax(v),v[1])))values=sorted(values,key=lambdaitem:(item[1][0],item[1][1]),reverse=True)returnvaluesid=['1','2','3','4']score=[(1,0.45),(0,0.32),(
系统 2019-09-27 17:55:51 1869
Mac中python多版本切换管理step1.$sudovi~/.bashrcstep2.命令行中输入aliaspython2=’/…/Versions/2.x/bin/python2.x’aliaspython3=’/…/Versions/3.x/bin/python3.x’Step3.刷新$source~/.bashrcStep4、验证在终端输入python2即代表是Python2.x版本,输入python3即代表是Python3.x版本。Mac设置默
系统 2019-09-27 17:55:04 1869
Python语言有一个比较Pythonic的功能,也是一个具有很强大功能的特性,那就是装饰器。1.Python装饰器的原理Python中的装饰器是通过利用了函数特性的闭包实现的,所以我们需要了解Python闭包的原理,以及函数的功能特性。1.1函数特性函数作为变量传递defadd(x):returnx+1a=add(5)print(a)#运行结果:6函数作为参数传递defadd(x):returnx+1defexecute(f):returnf(3)pri
系统 2019-09-27 17:54:59 1869
1、BinarySearch算法简介二分查找,它的时间复杂度是O(logn)。其核心思想有点类似分治思想。即每次都通过跟区间中的中间元素对比,将待查找的区间缩小为一半,直到找到要查找的元素,或者区间被缩小为0。但是二分查找的代码实现比较容易写错。你需要着重掌握它的三个容易出错的地方:循环退出条件、mid的取值,low和high的更新。二分查找虽然性能比较优秀,但应用场景也比较有限。底层必须依赖数组,并且还要求数据是有序的。对于较小规模的数据查找,我们直接使
系统 2019-09-27 17:54:58 1869