python面试题

python面试题

ID:83338343

大小:8.25 MB

页数:98页

时间:2023-07-17

上传者:灯火阑珊2019
python面试题_第1页
python面试题_第2页
python面试题_第3页
python面试题_第4页
python面试题_第5页
python面试题_第6页
python面试题_第7页
python面试题_第8页
python面试题_第9页
python面试题_第10页
资源描述:

《python面试题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

Pythonᱯឋ1PythonḄᦪᦪ⌴᝞,ᑖ᪆ṹa=1deffun(a):a=2fun(a)print(a)#1ṹa=[]deffun(a):a.append(l)fun(a)print(a)#[1]ᡠᨵḄᳮ!"ᑁ$%&'(Ḅ“*ᵨ‘-ᡈὅ-01c%void*Ḅ23஺

15678Ḅ"9:";<'(Ḅ-=>"஺='(ᨵ?-"Aᦋ"(mutable)D">Aᦋ"(immutable)'(஺ᙠpython%,strings,tuples,Gnumbers">AᦋḄ'(-=list,dietHᑣ"JᦋḄ'(஺(5K"5L⚪ḄNO)Q&Rᵨ⌴SᦪḄT᎛-ᦪVWXᑴ&ZRᵨ,5ᦪ6ḄRᵨG᜜\ḄRᵨ]ᨵ^_ᐵab.ᡠd&6ᦪeRᵨᢣᔣb&>'(-QᦪhiḄT᎛-᜜☢ḄRᵨ]^_23.=dkK>&᪵b-ᦪᑁḄRᵨᢣᔣḄ"'(-'mḄnoKGpqbᢣ┐ᙢᙬ&᪵,ᙠᑁ$6uJᦋ.2Python%Ḅᐗ9(metaclass)ᐗ9K"ᵨᩭxy9Ḅ"z{"஺|xy9K"}bxy9Ḅ~'(-"ᡃᑮbPython%Ḅ90"'(஺ᔳ-ᐗ9K"ᵨᩭxy59('()Ḅ-ᐗ9K"9Ḅ95Ḅ>ᵨ-!1ᳮ!Python%Ḅᐗ9(metaclass)3@staticmethodG@classmethodPythonᐸ~ᨵ3-ᓽ☟᝱(staticmethod),9(classmethod)G~,᝞classA(object):deffoo(self,x):

2print"executingfoo(%s,%s)"%(self,x)@classmethoddefclass_foo(cls,x):print(Mexecutingclass_foo(%s,%s)n%(cls,x))@staticmethoddefstatic_foo(x):print("executingstatic_foo(%s)H%x)a=A()56ᐜᳮ!ᦪᦪ6☢ḄselfGcis.5selfGcis"'9ᡈὅ~Ḅp.'<~-ᡃ⍝ᙠ96pḄT᎛◤⌕p5~-K"foo(self,x),}¢£⌕5£¤ᕖ?§}~Ḅ¨ᵨ©>ª~,ᡃ◤⌕e~V«Sᦪ,¨ᵨḄT᎛"5᪵Ḅa.foo(x)(ᐸ~"foo(a,x)).9&᪵-¬>m⌴Ḅ"9=>"~,A.class_foo(x).®¯56ḄselfGcis°ᣚ²Ḅᦪ-"pythonḄ³p"5´-µ">⌕ᦋḄ.'<☟᝱ᐸ~G¶·Ḅ&᪵,>◤⌕'¸up-¹&Ḅº²"¨ᵨḄT᎛◤⌕»ᵨa.static_foo(x)ᡈὅA.static_foo(x)ᩭ¨ᵨ.☟᝱

3☟᝱a=A()a.foo(x)a.class_foo(x)a.static_foo(x)A>ᵨA.class_foo(x)A.static_foo(x)49G~classPerson:name=',aaaupl=Person()p2=Person()pl.name=ubbb"print(p1.name)#bbbprint(p2.name)#aaaprint(Person.name)#aaa9K"¼9»ᵨḄ-~K"¼~»ᵨḄ.56pl.name="bbb""~¨ᵨb9-5ᐸ~G½☢d&L⚪&᪵-K"ᦪḄL⚪,pl.name&ª¾"ᢣᔣḄ9name="aaa”,"ᙠ~Ḅoᵨ¿6e9ḄRᵨᦋb-Kᡂb&~,self.name>ÁRᵨPersonḄ9nameb.

4☢Ḅ:classPerson:name=l]p1=Person()p2=Person()pl.name.append(l)print(pl.name)#[1Jprint(p2.name)#[1]print(Person.name)#[1]5PythonVḕ50"pythonÄÅḄᱯឋ.VḕK"☢ᔣ'(ḄᡠᑏḄÇÈᙠT,ᡠÉ⍝'(Ḅ9:.Êᓫ&ÌK"TÉÍÎÏ'(Ḅ9:.Ð᝞type(),dir(),getattr(),hasattr(),isinstance().6ÑᐺÓÔÕÉ|Öᑡ⊤ÓÔT-ᓾ]ᨵÖÑᐺÓÔÕ-ᙠ2.7%ÚÛᐭḄd={key:valuefor(key,value)initerable}

57Python%ᓫᑜÞGßᑜÞ1»>classMyClass():2...def_init_(self):3...self.—superprivate="Hello”4...self._semiprivate="world!n6»>me=MyClass()7»>print(mc.—superprivate)8Traceback(mostrecentcalllast):9File,,,',line1,in10AttributeErromyClassinstancehasnoattribute'_superprivate*11»>print(mc._semiprivate)12,world!13»>printme._diet_14{[MyClass_superprivate':'Hello',^semiprivate1:world!,}foo_:&?³p,PythonᑁàḄáÑ-ᵨᩭº²ᐸâᵨᡝVpḄäá-■æç._ᓟ஺஺:&?³p-ᵨᩭᢣpêᨵ.ÇÈᕒᵨᩭᢣpêᨵḄ&?Õ._f஺஺5ᨵìíḄ¯:!᪆ᘤᵨ_classname_f஺஺ᩭï°5áÑ-º²Gᐸâ9ðñḄäá.Ö:

6http://www.zhihu.com/question/197549418ÑòóôÕᓄöG.÷1*11131.formatᙠøù☢úᩭAûᑭ.'<öᨬþÿḄ⌴ᐗ.☢Ḅṹᨵ⚪Python:"hithere%s"%name!"᝞$nameា&(1,2,3),'()TypeError*+,-./012Ḅ"345᪵7"hithere%s"%(name,)#9:ᓫᐗ<Ḅᦪ>?ᦪ9@ᘤBᡂᘤᙠPythonE"5FGHIGJKḄLᑴ"N,Bᡂᘤgenerator.OPnext஺RᦪSᵨUVWXYḄZ[N,@ᘤ:Iterator,,5stackoverflow]python᣸_`Ḅ⚪"Yabhttp://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python10*argsand**kwargs

7ᵨ*args**kwargse,-fgUhᨵiᑴjᵨk.l2mḄRᦪ]'⌕⌴op?ᦪOᵨ*argsq᝞"O⌴rsᦪḄ?ᦪ1»>defprint.everythingC*args):2forcount,thinginenumerate(args):3...print'{0}.{I}'.format(count,thing)4...5»>print_everything(,apple','banana1,23*567'cabbage')60.apple71.banana82.cabbagetuḄ,**kwargsᐕwjᵨhᨵxᐜmzḄ?ᦪ_1»>deftable_things(**kwargs):2...forname,valueinkwargs.items():3...print*{0)={1}'.format(name,value)4…5»>table_things(apple='fruit1,cabbage='vegetable')6cabbage=vegetable7apple=fruit

8{O|Ḽᵨ.~_?ᦪ✌ᐜa?ᦪYᯠᡠᨵḄᐸ?ᦪ⌴*args**kwargs.~_?ᦪᙠᑡ⊤Ḅᨬ.q᝞1deftable_things(titlestring,**kwargs)*args**kwargsOᙠRᦪḄmzE,!*args34ᙠ**kwargs☢.lSᵨRᦪ{Oᵨ***.q᝞1»>defprint_three_things(a,b,c):2...print'a={0},b={l},c={2}'.format(a,b,c)3...4»>mylist=['aardvark',Gaboon',^at1]5»>print_three_things(*my1ist)67a=aardvark,b=baboon,c=catbᑮḄ᪵"O⌴ᑡ⊤(ᡈὅᐗ)Ḅ⚗ᵨkᒹ.s34kᙠRᦪ]Ḅ?ᦪtᔠ.lᯠ"{OᙠRᦪmzᡈὅRᦪSᵨᵨ*.http://stackoverflow.com/questions/3394835/args-and-kwargs11☢ᔣᑗ☢¡¢AOP£⛲ᘤ5AOP¥¦ᩭᨵ¨©"ª☢«Ḅ᎛P©-…

9£⛲ᘤ®℉_Ḅ°J±²"³+Pᵨ´ᨵᑗ☢◤¶Ḅ·¸"¹,³ᐺḄᨵ»ᐭ½¾ஹឋÁ«ஹxÂᜐᳮÅ஺£⛲ᘤÆ5Ç⚪ḄÈÉ°J,ᨵ-£⛲ᘤ"ᡃkOËÌ)ᜧRᦪERᦪÎÏÐᐵḄÒṹUÓÔÕᵨ஺ᭆ×ḄØ"⛲ᘤḄᵨᙠḄ᜜Ḅ஺5⚪Ù¹ᜧ,Ú₞http://stackoverflow.com/questions/739654/how-can-i-make-a-chain-of-function-decorators-in-pythonEᦻhttp://taizilongxu.gitbooks.io/stackoverflow-about-python/content/3/README.html12ÝÞÇß"lbᑮeáâ¦ᩭÝÞஹãä¦ᩭÝÞஹå¦ᩭ{ÝÞ"æ5eáOPN,ÝÞ஺"ᡃkUᐵçZ[Çß"ᑮèÝÞ"eᐵçé,஺Ù᝞ᙠpythonE,ᨵ®ofile-likeḄêë"Ù᝞StringIO,GzipFile,socketkoᨵ®otḄf"ᡃkìklíᦻîjᵨ஺ïÙ᝞list.extend()fE"ᡃkUᐵçḄ?ᦪlist,e⌕@Ḅ"ᡠOḄ?ᦪOlist/tuple/dict/ðñò/BᡂᘤÅ.

10ÝÞÇßᙠô᝱öE³+jᵨ"÷+ᮣù"japythonjavaæ᪵úûüýᜧᚮḄ°J±²஺13PythonEÕÿI:http://www.zhihu.com/question/20053359ᦪ⌕⚪஺1.ᦪ஺2.ᦪᦪ஺᜜Ḅ"#$ᑣ&&'ᦪ◀ᦪ)ᦪᦪ*+,᜜,ᐸ/01ᐰ3+Ḅ4567ᵨᦪ᝞:ᦪḄ/0ᐸ;*+<=*>'7ᵨ?>'7ᵨ@A*+Ḅᦪ஺Bᔳ<=DEFG1,ᦪ/03+Hᦪ*+python᝞IᜐᳮLMᫀ᪷*◤⌕ᜐᳮQpython,RSTIḄᦪ᝞:ᦪḄ/03+<=*+ḄᦪᙠpythonVW03+ḄXṹZᨵ\⌕]ᡂ*+ᦪ஺<=DEFG2ᦪ/03+Hᦪᦪ*+python᝞IᜐᳮLᜧ`⍝,Mᫀbcḕᦪ஺D

1114rs)tsu☢wx,ᡃzὁ|ᜩ*⍝~Ḅ=.uᦻWBḄrsḄᱯឋhttp://www.cnblogs.com/btchenguang/archive/2012/09/17/2689146.htmlrsWᙠ2.2bᡠ,ts1ᐰḄ⚪,Python3Ḅᐰors.uᨵMRO⚪,rsᐜtsᐜ,Python᪶¡¢Ḅ£W¤.15_new_)_init_Ḅ¦§u_new_¨;Wf©ᑮᐜ]ᔳ.1.—new_☟᝱p?_init_;®p.2._new_p¯°±²³Ḅ;®?=o*°±.3.´ᨵᙠ_new_°±cisḄ;®5µ☢Ḅ60¶·ᵨ.4.'²³r;®5·ᵨ_new_,¸¹ᓄ;®5ᵨps:_metaclass—²³5¼½ᵨ.ᡠ,ᡃ¾,ᑖ§7ᵨ_metaclass_,_new_)ᩭᑖ§ᙠ²³,;®²³);®¸¹ᓄḄ5᎛]eÂÃÄ.16ᓫ®Æs

12uÇDÈὃÊ.ÇD⌕ËÌ1~2p'5☢wxÍÃᑏḄ.1ᵨ_new_classSingleton(object):def_new_(cis,*args,**kw):ifnothasattr(cls,[instance'):orig=super(Singleton,cis)cls._instance=orig._new_(cis,*args,**kw)returncls.__instanceclassMyClass(Singleton):a=12ᐳឋ²³;®5Ïᡠᨵ;®Ḅ_dict_ᢣᔣ+Aᐺu᪵Ô¾ᐹᨵ3+ḄÖឋ)p.1classBorg(object):2_state={}3def_new_(cis,*args,**kw):4ob=super(Borg,cis)._new_(cis,*args,**kw)5ob._diet_=cls._state6returnob7

138classMyClass2(Borg):9a=13⛲ᘤ᱐1defsingleton(cls,*args,**kw):2instances={)3defgetinstance():4ifcisnotininstances:5instancesfcls]=cls(*args,**kw)6returninstances[cls]7returngetinstance89@singleton10classMyClass:114importp½pythonḄÆᙽᜩᯠḄᓫ®Æs#mysingleton.pyclassMy_Singleton(object):deffoo(self)pass

14my_singleton=My_Singleton()#tousefrommysingletonimportmy_singletonmy_singleton.foo()17PythonVḄ½ᵨØPythonVÙḄ½ᵨØÚᵫᙠXṹV¶ÜÝḄᙢpᡠgḄ஺'Python⍗ᑮÙḄà~¯ᢥ᯿u᪵Ḅãäåæçèᙢ½ᵨØ(Local)—'ê½ᵨضëᐭḄᙢ½ᵨØ(Enclosinglocals)ᐰí/Æᙽ½ᵨØ(Global)ᑁð½ᵨØ(Built-in)18GILñᐰí┝ñᐰí┝(GlobalInterpreterLock),ᓽPythonóôñõᐰ?ö÷ḄøùñúæḄ▲ᑴzýb᪶´0ᙠ+5þúæñ.ÿ☢ḄᓫCPU,ᑗᣚᓣឋ).

1519ᓫ!Ḅᓣ"᱐$!%☢&Ḽᑁ᪶᝱ᵨᡝ᝱Ḅᑗᣚ-⚪/ὑ12ᑗᣚ34$/ᵨᡝ567ᑴᑗᣚḄ39$:;◤⌕◍ᐭ@AḄᑁ᪶᝱.PythonBᨬDEḄyieldḄFG!IJKLMNO-⚪.20PᒹPᒹ(closure)RᦪTUḄV⌕ḄWX᪀஺Pᒹ[\]^ṹḄX᪀$`a᪵cdṹḄIVefᵨឋ஺g[OᑁhRᦪiᵨᐸ᜜lmmᵨnḄop$ᡃrstᑮ[OPᒹ.vX[$wx[OPᒹyz{|J}~1.yzᨵ[OᑁhRᦪ2.ᑁhRᦪyziᵨ᜜lRᦪḄop3.᜜lRᦪḄyzᑁhRᦪPᒹᨵḄ$}:Ḅ,KKᐵᧇ.VRᦪ:s├$16⚪Ḅinstanceᐺ[᪵,gRᦪ,instance:├$/ᶇᙠᑁ¢£4B.¤O¥¦§¦BḄ¦op$:¨©ªᑮdRᦪ«.

16PᒹO£¬ᳫ[᪵®¯⍝᜜☢B☢$®:¯⍝4±᪵21lambdaRᦪᐸ²[O³´Rᦪ$µ±¶lambda?·µ☢ḄRᦪTUᨵᐵ.22PythonRᦪTU¤O◤⌕〉gḄd¹[ᔳ$»¼RᦪTUᙠPython½diᵨ.pythonRᦪTU¾ᢝ~filterRᦪḄ¥gÀ¨Áᘤ஺Ãᵨ[OÄÅRᦪbool_FuncᩭÇÈᔊÊOseqḄᐗÌÍ[Ofbool_seqµtrueḄᐗÌḄÎᑡ஺>»a=[1,2,3,4,5,6,7]»>b=filter(lambdax:x>5,a)»>printb>»[6,7]mapRᦪÐ[OÎᑡḄÊO⚗ÒÓ᡻Rᦪ$☢Ð[OÎᑡÊO⚗%ÕJ2:»>a=map(lambdax:x*2,[1,2,3])»>list(a)24,6]reduceRᦪÐ[OÎᑡḄÊO⚗ÇÃᵨRᦪ$☢Ö3Ḅ▤Õ~

17»>reduce(lambdax,y:x*y,range(l,4))623PythonBḄØÙiᵨcopy(),deepcopy()ḄÚÛ1importcopy2a=[l,2,3,4,J"JbR#34b=a#Ḅᵨ5c=copy.copy(a)#!"#!"6d=copy.deepcopy(a)#!"$!"78a.append(5)#%ᦋa9a[4].append(,c,)#%ᦋa'Ḅᦪ)1011print'a=\a12print'b=\b13print*c=*,c14print'd=',d1516*+,-:

1817a=[1,2,3,4,['a','bÍ'c'],5]18b=[1,2,3,4,['a','b','c'l,5119c=[1,2,3,4,['a','b','c']]20d=[1,2,3,4,['a','b']]24Pythonᚗïᦈ9ᑴPythonGCñ⌕fᵨiᵨòᦪ(referencecounting)ᩭôõᦈᚗï஺ᙠiᵨòᦪḄöẠ«$ø¨"᪗û-ý◀"(markandsweep)¹ÿᘤḄᵨ⚪"ᑖᦈ"(generationcollection)ᣚḄᚗ!ᦈᦔ᳛஺1ᵨ%ᦪPyObject'()*ᨵḄᑁᐸ.ob_refcnt/'01ᵨ%ᦪ஺23)ᨵ4Ḅᵨ5Ḅob_refcnt/6782ᵨ5Ḅ9ᑤ◀,5Ḅob_refcnt/6=>.ᵨ%ᦪ10@A/BCD஺EFG1.Iᓫ2.KឋMFG1.NOᵨ%ᦪPὑRS2.ᵨ

192᪗U-W◀XᑴZ[\]'ᐜᢥ◤ᑖabᑮdᨵeᑁfḄ᎛hifᘤjkl᪘nḄᵨop,qᔊ1⁚Fஹᵨ1u᪀ᡂḄxyᡠᨵ{ᑮḄᡭn᪗Uᯠ~W3qᑁfyᡠᨵd᪗UḄ஺3ᑖᢈᑖᦈḄ᦮\'.Ḅᡠᨵᑁfᙽ᪷ᐸfᑜᑖ1Ḅᔠ()ᔠ/ᡂ13)""ᚗ!ᦈ⚣᳛Ḽ""ḄfḄ7ᜧ=fᑭᵨᚗ!ᦈᩭ஺Python¡¢£¤D¥ᔠ¦ᦪ§ᜧf§¨஺©ªG2«¬ᑁfᙽMD3ᚗ!ᦈḄW®~¯fᡃ±/ᑁfᙽMᑜᑮ3)ᔠA.²4ᑖaḄᑁf³ᑜᑖᑮᔠB.²஺2ᚗ!ᦈ´µ¶·,ᜧ¸ᦪ¹º³»ᔠB¼½ᚗ!ᦈᔠA¼½ᚗ!ᦈ⌕◞À2¨3Á~¼½Ã/ÄÅᚗ!ᦈXᑴ◤⌕ᜐᳮḄᑁf>Dᦔ᳛Èᯠ/D஺ᙠÃ)k.ᔠB.Ḅ«¬ᑁfᙽᵫËf¨69ÌÍᑮᔠA.2ᯠᔠA.K▭nÏfᙠ3¬ᚗ!ìᚗ!Ḅᦈ6Ð1ÃÑᑖḄXᑴ9ÒÓ஺25PythonÔ☢᝞×KØtuplejlistḄÌᣚ?

20>tuple,0123405Ḅ஻789:;3<=>?᪗Ḅ:஺BCDEFGHIJK3᝞-MᨵHᐗPQRSᨵ,U᝞(V,)஺Bᯠᙠ2.71ZḄ᱐pgtkon[;\]^_`:ḄM0஺abcᨵdeᵨ✌ᐜhijkl=pgtk஺mno⍝,□r஺mḄsᦪ01ᨵtuvḄwptjthom.[tuvx3ᵨKp/eᩭ⊤{|3ᵨḄᨬ~Ḅ^᝞2C◤⌕FGHḄᑡ⊤C4ᵨt,013⌕CKp/e,U᝞ifain(7V,BJ(?)wss26PythonḄisis'Úᙢᙬ,=='ÚÞ27read,readlinejreadlinesreadßà᦮)ᦻâ•readlineßàã3½Äᵨᡂᘤreadlinesßà᦮)ᦻâᑮ3)äᘤåᡃ±qᔊ28Python2j3ḄæçᜧèᑖPythoné³êᢝPython2.7.xj3.x᱐[Ḅᡠí⌱ïð)᱐[

21³'Ḅ஺ñ1DᙠÄᵨPythonò´«¬᱐[.3¬óḄ◍▟ᡈ◤⌕Í÷«)Python⚗ùÄᵨ3future.úᙽprintûᦪ᦮ᦪ◀Unicodexrangeüpýᜐᳮýnext஺ûᦪj.next஺Forþÿᐰᵨinput஺᪆ᐭᑁ,!ᑡ⊤$₞&'Python2.7.x(3.x᱐*Ḅ,⌕./0

2229ᑮ345!Python?67ᙠ9:;ᐸ=ᢈ?@AᫀB☢!DEᐵGH&Python!DIJKL஺MN!OP;CKL(CḄQRKLSPPythonṹᙠUAVW◤⌕YZ஺ᐸ=JKL[ᒹ]PHP(Ruby.Python!^᝱KLPᢣḄ!6ᙠabcdeP◤⌕ObcdḄ஺67fgYᑏix=ll]^x=Tmastring"M᪵ḄṹPklm┯஺Pythonop〉ᔠ☢ᔣḄYkOOP,tuvwᢝyz{ᔠcomposition;|}inheritanceḄ~class஺Python:ᨵObaccessspecifier,iC++:Ḅpublic(private,M5Ḅ!"ᜧ!ᡂ"஺ᙠPythonKL:Pᦪ!Dfirst-classobjects,MᢣḄ!v7ᢣcdPᦪᦪP7gᦪuᐭ஺class!D஺PythonṹYᑏ,¡!UA¢£YZKLyp⌕᠒஺¥ᙠPythonᐕ§¨ᐭ©ªCKLYᑏḄ᡽¬Ptᡃ¯°ᓄṹP²◀´⚠PMHyp!7¶·Ḅ஺numpyN!D¸¹¥ᙢ»¼PvḄUA¢£½ḄopPtu¹¾¿?U¿ᐸ¶À!yzPython¶·Ḅ஺

23Pythonᵨ⌶opÂ×ÅÆÇᵨPÈ^ᓄPÉÊËÌPᜧᦪÇᵨPÍÍ஺vpᵨ“ÏÐKL"PÑÒᐸ=KL({ÓᦋᗐUAÖ×஺PythonØÙÚḄÛÜcÝ᧕Ptkᕒ7àᪿâ(ᦪã᪀ḄPᵨᜐᳮ3çḄè⁚஺!"#$%⚪'᝞ë6ÇὺḄ!D¸PythoníîïðP6NÇñò⍝M!ô45᪵ḄKLP7õvu45M5⏙஺7õv÷ø¥஺30⊡ᐙûᜫḄṹdefprint_directory_contents(sPath):niinM¸ᦪgᦻÓᜳḄÿᐭᦪᦻᜳᦻḄᐸᒹᦻᜳᦻḄ஺ItIIII#⊡ᐙṹᫀ

24defprint_directory_contents(sPath):importosforsChildinos.listdir(sPath):sChildPath=os.path.join(sPathsChild)rifos.path.isdir(sChildPath):print_directory_contents(sChildPath)else:printsChildPathᱯ⌕!"#$%•&'(⌕*+஺᝞-᪵/ṹ0123&'(⍳5ᐸ6ᨵḄ(஺•⌴9:ᦪ◤⌕⌴9<=>஺?@ABCᐸḄDᳮᔲᑣAH☢JKLK>ḄMᵨ᪘(callstack)஺•ᡃRSᵨosTᙽVWX*YZ[\,^_`ᑮ[\bcdefghḄ஺AeiṹᑏᡂsChildPath=sPath++sChild,ldmnᙠWindowsX*pq3┯஺•s៉uẠTᙽdwxᨵyzḄld{ẚᾯ~"ᩭ,GoogledAḄ஺᝞-ABCṹḄ⚜0ᜧ஺

25ᢝKISSDᑣ@ᢝᓫᾯ0!!"#$%⚪'B☢ὅVWX*[\ḄuẠ⌴9¡d¢£ᵨᖾ31▅¦"☢Ḅṹᑏ3AO,A1§AnḄᨬ=z஺AO=dict(zip(('a,,'b7c','d','e'),(l,2,3,4,5)))Al=range(lO)A2=[iforiinAlifiinAO]A3=[A0[s]forsinAO]A4=[iforiinAlifiinA3]A5={i:i*iforiinAl}A6=[[i,i*i]foriinAl]ᫀAO={'a':1,'c':3,'b':2,'e':5,'d':4}Al=[0,1,2,3,4,5,6,7,8,9]A2=[]

26A3=[1,3,2,5,4]A4=[1,2,3,4,5]A5={0:0,1:1,2:4,3:9,4:16,5:25,6:36,7:49,8:64,9:81}A6=[[0,0],[1,1],[2,4],[3,9],[4,16],[5,25],[6,36],[7,49],[8,64],[9,81]]!"#$%⚪'ᑡ⊤«᪆(listcomprehension)ᓝᑖ⁚°_±²³´ᩭµd+nᜧḄ¶·¸¹஺᝞-A¦ºm»ṹ²e0eᑏ"¼?ᙢz஺ᐸ¾ᑖṹᦑ!ᑏḄÀÀḄ஺ÁAᐳÃḄ´ÄµqᨵÀ´஺32"☢ṹq3ÅÆdeff(xj=[]):foriinrange(x):Lappend(i*i)print(l)f(2)f(3,[3,2,1])

27f(3)Çᫀ%[0,1][3,2,1,0,1,4][0,1,0,1,4]ᕃÊË+n:ᦪMᵨᓝᑖBÌfor5ÍᐜÏH0Ð1ÑÒ§ºÓᑡ⊤I஺IdÔÕḄ'ÖᢣᔣᑁÚÚÛḄ+nᑡ⊤஺ËÜn:ᦪMᵨᙠ+ᙽÝḄᑁÚÞߺÝḄᑡ⊤஺Im_ᢣᔣºÝàᡂḄᑡ⊤஺ÄÏáâÝᑡ⊤ÑÒ0ஹ1Ð4஺²äᔳ஺Ëæn:ᦪMᵨḄç-ᨵ»᜻Àº஺éSᵨºÄêᑁÚᙢᙬÚÛḄìᑡ⊤஺mdÅÆéḄêínᐗïd0Ð1º஺33A᝞ðñᳮ^᱐/ḄṹÊᫀ'᱐/ñᳮóᑮmn⚪Ḅ_᎛Aö⌕⊤÷ø²ᐶúû§üýþRAd᝞ðSᵨGit(ᡈᐸᨬḄᐹ)᝘᝘Ḅᩭ஺ᡃᔣᵨGit᱐ᑴ"#(VCS),◈ᨵᐸḄ⌱()*᝞subversion(SVN)o!"#(%⚪'

28-.ᨵ᱐ᑴḄ/ṹ)12.ᨵ34Ḅᕸᖹ஺ᨵ7᎛ᡃ9◤⌕ᑏ=>=?ឋḄஹBCDEᡮᣵḄH)IJKLMN᱐ᑴ.ᐵ"஺P᝞Q☢SḄᜧUḄ/ṹ)ᵨ᱐ᑴ"#ᨵᑭḄ஺᱐ᑴWXYZS/ṹ[\]^_`abcdeᐭ]^_bug;gᳮḄijḄNk᱐bl᱐aᙠnoᡂᕒrᑖtu/ṹavwxᐸyᓄᜐᳮ஺|W}~ᑮc⚪Ḅ᱐)ᓫI1ᱯ]஺ᨵᐸḄW஺_=]34“Ღ4⊡"(monkeypatching^Ḅ^_IJ\ᔩᫀ'“Ღ4⊡”1ᢣ,ᙠᦪᡈS£¤¥¦§¨)©ªᦋ¬|9Ḅl஺®4¯importdatetimedatetime.datetime.now=lambda:datetime.datetime(2012,12,12)ᜧvᑖKLM)IJ°NḄ\--ᦪᙠ/ṹ[rḄlᨬ²³ᢝ=µ஺ᡭ"Ღ4⊡"Ḅ·-BW]¸¹஺mockᒹS»cI¼Ḅ°ᨵY½஺!"#$%⚪J¾SI⚪¿ÀSᓫᐗ¸¹Ḅᨵ=¦]Â஺᝞QÃᑮ⌕ÄÅ“Ღ4⊡")BC¿ÀNÆJÇÈÉÊ/ṹḄËÌᕒ(ÎÏÈ1ᨵIJÐ)Ñ9ᐳÓÔÕÖ×]))Ø

29ÙÚÛBÜÝឋ஺ÞKISS·ᑣṹ¾SI⚪¿ÀÀà=>PythonáâãḄä)ᦪ»▭᝞æçèஹéᵨêê஺ë᜜¯᝞Q.íîmockïᙽḄñ)ÔḄòÇ7óí=í஺Iïᙽôõᨵᵨ஺35▅íM☢Ḅ/ṹ)|Ḅ÷øQ^_classA(object):defgo(self):print"goAgo!"defstop(self):print"stopAstop!"defpause(self):raiseException("NotImplemented")classB(A):defgo(self):super(B,self).go()print"goBgo!"

30classC(A):defgo(self)super(C,self).go()print"goCgo!"defstop(self):super(C,self).stop()print"stopCstop!"classD(B,C):defgo(self):super(D,self).go()print"goDgo!"defstop(self)super(D,self).stop()print"stopDstop!

31defpause(self):print"waitDwait!classE(B,C):passa=A()b=B()c=C()d=D()e=E()#¿ÀMᑡ/ṹḄ÷øQa.go()b.go()c.go()

32d.go()e.go()a.stopOb.stopOc.stopOd.stopOe.stopOa.pause()b.pause()c.pause()d.pauseOe.pause()ᫀ÷øQCÚûḄüä⊤þ:

33a.go()#goAgo!b.go()#goAgo!#goBgo!c.go()#goAgo!#goCgo!d.go()#goAgo!#goCgo!#goBgo!#goDgo!

34jdoisjdojs#idojsvdo;s#Odo^s'Didoisvdots#()dois-qidojsvde4s#()dojs-eio6g06#io6J06#jo6v06#()o6's

35p9juaiu9|diuiJON:uoijd9Dxg…#Ossned'Dp9iu9iu9|dujijo[\]luoitdsDxg…#Ossned'qp9iu9iu9|dujijo|\|:uoijda3xg…#Ossned'eidoisvdo;s#()dojs'9idoisado௃s#idoisjdois#idoisvdo)s#()dojs-p

36d.pauseO#waitDwait!e.pause()#...Exception:NotImplemented!"#$%⚪J☢ᔣḄḄḄ⌕஺஺⍝⚪ᳮPythonsuperᦪḄᵨ#஺36▅%&☢Ḅ'ṹ)*Ḅ+,-./012classNode(object):def_init_(self,sName):self.JChildren=[]self.sName=sNamedef_repr_(self):return"".format(self.sName)

37defappend(self,*args,**kwargs):self._IChildren.append(*args,**kwargs)defprint_all_l(self):printselfforoChildinself.JChildren:oChild.print_all_l()defprint_all_2(self):defgen(o):IAII=[o,]whileIAII:oNext=lAILpop(O)lAll.extend(oNext.JChildren)yieldoNextforoNodeingen(self):printoNode

38oRoot=Node("root")oChildl=Node("childl")oChild2=Node("child2")oChild3=Node("child3")oChild4=Node("child4")oChild5=Node("child5")oChild6=Node("child6")oChild7=Node("child7")oChild8=Node("child8")oChild9=Node("child9")oChildlO=Node("childlO")oRoot.append(oChildl)oRoot.append(oChild2)oRoot.append(oChild3)oChildl.append(oChild4)

39oChildl.append(oChild5)oChild2.append(oChild6)oChild4.append(oChild7)oChild3.append(oChild8)oChild3.append(oChild9)oChild6.append(oChildlO)#&☢'ṹḄ+,-.oRoot.print_all_l()oRoot.print_all_2()ᫀoRoot.print_all_l()5ᡭᓺ&☢Ḅ-.8

40oRoot.print_all_l()5ᡭᓺ&☢Ḅ-.8

41!"#$%⚪2Ḅ:;<ᙠ>?ᔠ(composition)B᪀⌼(objectconstruction)஺◤⌕ᨵ?ᔠᡂᑖ᪀ᡂ)IJKLMNOPQRᓄ஺TUVWᑮ⌴Z[ᡂᘤ(generator)Ḅ]ᵨ஺[ᡂᘤ/^Ḅᦪ_`a஺bLcde᪀⌼fghḄᑡ⊤)ᯠlᡭᓺᑡ⊤Ḅᑁn)

42ᨬ¬try'ṹ஺try&Ḅ®᡻)ᑣ᡻elseᙽ'ṹ஺᝞.[)<5᡻᝞.xᙠfinally)ᨬl°/5᡻஺37.Python'pass¥¦ḄIᵨ3deJ8pass5᡻±²³´)fµ´ᓰ¶·ᡈὅº»ᓰ¶)whileFalse:pass38.?Python?range()sᦪḄᵨJ8ᑡ,f?ᦪ_)¼ᵨᙠforinrange஺½¾39.᝞«ᵨPythonᩭ¬®¯°ᣚHᦻ³´µJ8bL]ᵨre¿ᙽḄsub()ᦪᡈὅsubn()ᦪᩭÁÂÃÄᣚ)ÆP:sub(replacement,string[,count=0])(replacement/ÇÄᣚᡂḄᦻª,string/◤⌕ÇÄᣚḄᦻª)count/fgb⌱Êᦪ,ᢣᨬᜧÇÄᣚḄᦪÌ)>>>importre>>>p=re.compile(,blue|white|red,)

43>>>print(p.sub("colour','bluesocksandredshoes'))coloursocksandcolourshoes>>>print(p.sub("colour",'bluesocksandredshoes',count=l))coloursocksandredshoessubn()O#᡻Ḅᦔ.Ïsub()f᪵)e*5ÑÒfgÓÔᦪ?)ᒹÖÄᣚlḄ×ḄطٰᐳÄᣚḄᦪÌ40.Python[☢match()search()Ḅº»J8re¿ᙽmatch(pattern,string],flags])ÛÂstringḄÜᜮ/ᔲBpatternᓛ¤஺re¿ᙽresearch(pattern,string[,flags]),^5stringßàpatternḄáfgᓛ¤z஺>>>print(re.match('super','superstition').span())(0,5)>>>print(re.match('super','insuperable'))None

44>>>print(re.search('super','superstition').span())(0,5)>>>print(re.search('super','insuperable').span())(2,7)41.ᵨPythonᓛ¾HTMLtagḄÃ᎛<.*><.*?>ᨵdeº»J8âãäåᓛ¤(<*>)éäåᓛ¤(<.*?>)ì᝞8test<.*>:test<.*?>:42.Python[☢᝞«ÈᡂÊËᦪJ:random¿ᙽîï᦮ᦪ8random.randint(a,b):ÑÒîï᦮ᦪx,a<=x<=b

45random.randrange(start,stop,[,step]):I^[H]fgòᙠ(start,stop,step)óôḄîï᦮ᦪ)ᒹÖ-õz஺îïöᦪrandom.random():ÑÒ0ᑮ1óôḄ÷yᦪrandom.uniform(a,b)ÑÒᢣøòᑁḄ÷yᦪ஺43.ᨵÌᨵHVᐹ01ÎÏ®ÐpythonḄbug¬☟᝱Ḅṹᑖ᪆J8PyChecker/fgpython'ṹḄ☟᝱ᑖ᪆üᐹ)*bLýþÂÿpythonṹḄbug,ṹḄᩖPylint᜜ᐹcodingstandard44.᝞«ᙠHfunction[☢ÙÚHᐰÜḄ5J!ᙠfunctionḄ#$%ᐭglobal'(deff()globalx45.ᓫßàßáßḄº»

46ᓫ+,-+,.ᦔḄ0᝞2⌕ᣚ0◤⌕6,(\),;+,ᑣ=>ᣚ0?@ᒹBCD᝞2⌕⊤FLet'sgoGH6Iᓫ+,s4=letVsgo'-+,s5="Let'sgo"s6='Irealylike"python"!"GJᓫ+,-+,K⊤FH6IḄLMN46Pythontâã(multi-threading)஺|3HçkèṹJᑡéêëPythonṹ1ì:íḄ஺ᫀPython?PQᢝSTUVWḄXYZ஺Python\]NXYZᒹ0^᝞2_`abXYZcṹḄd0eᵨXYZᒹ?PghU஺Python\ᨵjklGlobalInterpreterLock(GIL)Ḅmn0opqrst᎛_ḄXYZ\0vᨵj᡻஺YZḄ᡻dxyz{0|_}lYZ?᡻Ḅ0^~▭WK᡻஺bGILG⍝ᐵᓱᜐᳮ0᡻Ḅ#├஺GUᕡḼ᝞2_`cṹḄdeᵨthreadingᒹ?PgḄ!஺

47PbᨵXᳮᵫeᡃeᵨthreadingᒹḄ஺᝞2_`t᡻r0@Pὃ⇋ᦔ᳛⚪0eᵨGᒹᐰ¡⚪Ḅ0@¢£஺^ᜧ¥ᑖ§¨©0?PGª«0_¬®XYZḄ¥ᑖ᜜ᒹ¯°±²³ᡂ(ab#µXZ)0ᡈὅ¸¹ᵨ_ḄPythonṹḄ᜜¥Zº(»᝞SparkᡈHadoop),¼ᡈὅ_ḄPythonṹ¹ᵨḄᐸ¾ṹ(»᝞0_ᙠPython\¹ᵨC¿ᦪ0ᵨÁᜐᳮ#├ÂᜧḄXYZ±)஺lÃG⚪MlGILJÄÅmn(A-hole)஺XÆÇÈᜧÉḄtÊ0ËÌÍÎÏÐXYZṹ\ḄÑ⚠,=ᑮ¾(ÔGILḄÕᙠ஺47î?☢Ḅsᦪᢥ᯿᡻ᦔ᳛ôõ᣸÷஺oK>Öᵫo×1zÊḄᦪH᪀ᡂḄᑡ⊤±lÚᐭ஺Gᑡ⊤Û஺Úᐭᑡ⊤ḄF»᝞©[random.random()foriinrange(100000)]_᝞soÜ(ÏÐḄᫀTpḄ஺deffl(IIn):11=sorted(IIn)12=[iforiin11ifi<0.5]return[i*iforiin12]

48deff2(IIn):11=[iforiinIlnifi<0.5]12=sorted(ll)return[i*iforiin12]deff3(IIn):11=[i*iforiinIln]12=sorted(ll)return[iforiin11ifi<(0.5*0.5)]ᫀᢥ᡻ᦔ᳛Þcᑮß᣸ᑡf2ஹflf3⌕Ü(GᫀḄ0_âãä⍝o᝞sᑖ᪆ÏÐṹḄឋç஺Python\ᨵgḄZºᑖ᪆ᒹ0èéG◤ê஺importcProfileIln=[random.randomOforiinrange(lOOOOO)]

49cProfile.run('fl(IIn),)cProfile.run('f2(IIn),)cProfile.run('f3(IIn),)lNᔣᜧì᦮ᙢï(0©☢ᡃ¯Wñᑖ᪆ṹḄÚò2>>>cProfile.run('fl(IIn),)4functioncallsin0.045secondsOrderedby:standardnamencallstottimepercallcumtimepercallfilename:lineno(function)10.0090.0090.0440.044:l(fl)10.0010.0010.0450.045:l()10.0000.0000.0000.000{method'disable'of'Jsprof.Profiler'objects}10.0350.0350.0350.035{sorted}

50>>>cProfile.run('f2(IIn),)4functioncallsin0.024secondsOrderedby:standardnamencallstottimepercallcumtimepercallfilename:lineno(function)10.0080.0080.0230.023:l(f2)10.0010.0010.0240.024:l()10.0000.000o.oocI0.000{method'disable'ofIsprof.Profiler'objects}10.0160.0160.0160.016{sorted}>>>cProfile.run('f3(IIn),)

514functioncallsin0.055secondsOrderedby:standardnamencallstottimepercallcumtimepercallfilename:lineno(function)10.0160.0160.0540.054:l(f3)10.0010.0010.0550.055:l()10.0000.000o.oocI0.000{method'disable'ofJsprof.Profiler'objects}10.0380.0380.0380.038{sorted}lÃG⚪óôõ?ö÷ṹÑ⚠xyᨵøùḄᢈç஺`⌕ûᑏýXcᦔḄṹ0ᨬÿ⌕ᩭ——ᙠ☢Ḅ᝞ᑡ⊤Ḅᐜ᣸!"#᝞$%&ᙠ᣸'ᐜ(⌱*+,-Ḅ./஺ᐸ234᧕6Ḅ7⚪9ᯠ%&+;ា=Ḅ>ᐹᩭ@A஺"#BCDE>ᐹᨵ-ᜐḄ஺

5248.᝞«ᵨPythonᩭ¬®¯°ᣚHᦻ³´µJ%&Iᵨsub()K/ᩭLMNOᣚsubK/ḄQRSTsub(replacement,string[,count=0])replacementUOᣚᡂḄᦻXstring◤⌕UOᣚḄᦻXcountZ[%⌱\ᦪᢣᨬᜧUOᣚḄᦪa49.Python[☢search()match()Ḅº»Jmatch஺bᦪcdeRE3ᙠstringḄfgAhᓛjsearch஺klm᦮[stringLoᓛjpqrmatch஺cᨵᙠ0AhᓛjᡂsḄtᨵu᝞3fgAhᓛjᡂsḄmatch஺qunone50.ᵨPythonᓛ¾HTMLtagḄÃ᎛ø.*ùø.*?ùᨵdeº»J'ὅwxᓛjkyᜮᑮ|ᓛjaxyz/a,4}ὅ~wxᓛjcᓛjᑮZ[o51.Python[☢᝞«ÈᡂÊËᦪ?

53importrandomrandom.random()kuZ[Ḅ0N1Ḅᦪ1selectpollNepollrᐸᡠᨵḄI/OMḄK/c3;Ḅ☢3B.D[7⚪%ᨵᐭBD[7⚪I/Oᵨᨵ-ḄBCB.ᐸtornadoIᵨḄqepollḄ.Xselectᨵ3[T1.¡ᦪ¢▲2.Loj¤¥᠒3.ᦪ§ᵫᑁ᪶«¬ᑮᵨᡝ᝱pollᦋᗐBZ[epollᦋB±[.2²¥³/

541.ᐜᩭᐜ´µ(FCFS,FirstComeFirstServe)2.¶·¸ᐜ(SJF,ShortestJobFirst)3.ᨬ¹¸ᐜᩗ²¥(PriorityScheduling)4.»ᱏ½(RR,RoundRobin)5.¾¿✄ÁÂ(J²¥(multilevelfeedbackqueuescheduling)»²¥³/T1.ᨬÃÄÅ»¸ᐜEDF2.ᨬÆÇÈ¥¸ᐜLLF3É┝Ë"T1.ÌÍÎÏ2.ÐÑÒ3=Ó⌕ᩩÕT1.Ö×ᩩÕ2.ØÙNÚᢝᩩÕ3.3ᒑÝᩩÕ4.ÞßàᩩÕᜐᳮÉ┝XK/:

551.⚜■É┝(ᤴç◀1&᜜ḄᩩÕ)2.ëìÉ┝(íî³/)3.deÉ┝(ÎÏᑖjð)4.C◀É┝1.ᒑÝÎÏ2.ñ├Ð4Ðóôõö¡Bulid;Ð%&ᑖCS4[÷ø:⚜ᜐᳮ(Prepressing),óô(Compilation)ஹúó(Assembly).ö¡(Linking)&cûüST1⚜ᜐᳮ⚜óô;Ðý⌕ᜐᳮ*EÏᦻÕḄ&"#"Ḅ⚜ᢣ⌕ᜐᳮᑣᨵ1.ᡠᨵḄ"#define"ᑤ◀ᡠᵨḄ2.ᜐᳮᡠᨵᩩ⚜ᢣ,!᝞"#if"ஹ"#ifdef"ஹ"#elif"ஹ"#endif"3.ᜐᳮ"include"⚜ᢣ$ᒹ&Ḅᦻ(ᐭᑮ+ᢣḄ,-./012⌴456Ḅ4.ᑤ◀ᡠᨵ.7

565.896:;ᦻ<᪗>,?@ABᘤDEFGᵨḄ6:HI?JᵨABDE┯LᡈNOBPQR6:6.SᶇᡠᨵḄ#pragmaᘤᢣ஺201V2W⚜ᜐᳮXḄᦻ56YZᑡḄ\]ᑖ᪆ஹ`]ᑖ᪆ஹ`ᑖ᪆JaᓄcEᡂefḄghṹᦻ஺jk012᦮k1m᪀oḄ᪶qrᑖ஺3ggᘤ2ghṹsᓄᡂtᘤP?᡻6ḄᢣvYᩩg`wxyz2Yᩩtᘤᢣ஺{0ஹ|}ஹg~Ḅᦻᡂ᪗ᦻ(ObjectFile)4|}|}Ḅ⌕ᑁV2WᔜkᙽeᵨḄrᑖᜐᳮᔜkᙽP?Ḅ}஺|}Ḅ⌕01ᒹᙽᙢᙬ;Ḅᑖ(AddressandStorageAllocation)ஹ:(SymbolResolution);,(Relocation)஺5☟᝱|};᝱|}☟᝱|}]☟᝱|}ḄB᎛¡ᐭhṹV¢W1m¢ᵨᑮḄ᝱hṹᡈ᝱hṹḄᙢᙬ£ᩭ☟᝱¥Ḅ|}P?ᵨ☟᝱|}᝱|}¥¦P?ᵨj§]|}¨ᐭ¥

57᝱|}]ᵨj§©Ḅ1mªᙠYVXᡂ᝱|}¬2ᑮ®Fᵨ᝱¥hṹB¡ᐭ1m¯°±²$FᵨḄ³rᑖ´᝱hṹḄµ¶ᙢᙬᯠcᑮ¸kB᎛1m¹◤⌕Fᵨ»᜜¸ᙽ᝱hṹB¡ᐭ1m¹½°±jrᑖhṹḄµ¶ᙢᙬᡠ?j§©1m¾ᓄB¿ÀÁÂ6ÃḄឋÅ!ªÆ☟᝱|}Ḅ1m6ÇÈᑁÉᢈËÇÈÉÌᘤ2ÍᐹᨵÏÐFᐭÑÅ;-ᣚÑÅ,ÅÓµ¶ÆÔᑁÉÕ9?᡽ᐙḄY§ÉÌZØ.7ᑖ⚓;ᑖÛᑖ⚓ᵨᡝ1mḄᙢᙬ$ᑜᑖᡂÞßàᜧâḄãä,å"⚓"efᙢᑁÉᑖᡂÞßkᱥᳮᙽ⚓;ᙽḄᜧâe஺Pᵨᡝ1mḄçY⚓èᙠᑁÉḄçYᙽéêëìíᦣᑖ஺ᑖÛᵨᡝ1mᙢᙬᑖᡂÞßkᜧâªḄÛvÛP?YïeÔX᦮Ḅµ¶HI஺ÉÌᑖB?Ûᓫ,ÛñÛᙠᑁÉéP?ªeò}¦êëìíᦣᑖ஺

58ᑖ⚓ñᑖÛḄ⌕ãó1.⚓2HIḄᱥᳮᓫ,ᑖ⚓2ìêëôõöᑖ?@÷ᑁÉøᱏú⚪ᡈὅýᑖ⚓2ᵫAZØÿᳮḄ◤⌕•Ḅᓫᨵ᦮Ḅ,ᑖḄḄᙢ!ᐳ#$%ᵨᡝḄ◤⌕.2.⚓Ḅᜧ,-.ᵫ012.3ᙢᙬᑜᑖ⚓67⚓ᑁᙢᙬᵫ9ᘤ;?ᓾA-.,B.CᵨᡝᡠEᑏḄGHIJᵫEKGHᙠMGHNOEKP᪷RḄឋTᩭᑜᑖ.3.ᑖ⚓ḄVWᙢᙬXYZḄ.ᑖḄᙢᙬXY[ZḄ.8⚓☢]ᣚ_`1.ᨬb]ᣚ_`OPT:Acd!2.ᐜNᐜfFIFO3.ᨬgᨬhijᵨ_`LRU:ᨬgPYkᨬhlᨵjᵨmḄ⚓☢no]ᣚ.4.clock_`9pqrs7turspvrsᢣxyz᝱|ᓄPs~io<ᩩ

591ᦪR(DatabaseTransaction),ᢣVᓫVᓫᐗ᡻OḄ0ᑡV⌕ᐰᙢ᡻O⌕ᐰᙢA᡻O஺2ᦪRᦪR⊤ᑡᡈᑡḄNO᣸HḄ᪀jᵨcᦪR⊤Ḅᱯ.஺ᑖ7¡¢ᢥ᯿ᦪR¥¦Ḅᱥᳮ]¨HḄ=¡A᪵ªd«¬OḄ?=¡CᓫOḄ®஺¯₞±http://tech.meituan.com/mysql-index.html3Redis²ᳮ4³´┝7¶´┝¶´┝±Ꮇ.¸s~¹sº»¼½ᑗcd¿ÀᦪR᦮ឋḄV³´┝±ᎷÁA¸s~¹sº»ᙠ«ÂVPÃᔲ¿ÀᦪR᦮ឋ஺5MVCC

60ᜧᦪḄMySQLÅ¥ÆÇ᝞InnoDB,FalconoÉPBXTÊAjᵨËᓫḄO┝9ᑴ஺ÍÎÏÊ7Ð᜜ᵨᩭÒÓ¹sឋḄÔÕ"᱐عsÙᑴ(MVCC)"Ḅ9ᑴᩭÛjᵨ஺MVCCAjᵨᙠMySQLOracle,PostgreSQL,oÉᐸÎÝᦪR01Þß᪵jᵨ஺6MylSAM7InnoDBMylSAM〉ᔠCÝ◤⌕ᜧâÃãḄäᵨåᐸCᨵᜧâᑏV¹A®஺æçè◤⌕updateé᦮⊤ʸÔ┝Ûᩭ,=êḄNG_ëNGÊì`VíᑮëVᡂ஺Ð᜜MylSAMCSELECTCOUNT(*)ðñḄò_óìôḄ஺InnoDBḄõö¸¡J÷ᩖḄ¥ÆÇCÝ,Ḅäᵨ¸ôMylSAMù᠒஺Îûᢝ"O┝"CᙠᑏVôýḄP᎛¸ÿ஺ᢝḄᵨ᝞஺11.ᡝᔣ!ᘤ#〈%&SYNᩭ()%&*+ᡭ-./0Ḅ%1ᑖ஺ᡝ34567Ḅ89:;/<=ᦪA஺

612.!ᘤ@/%&ᔠBḄSYNC〈%&SYN/ACK஺ACKḄDEṹ/A+l,SYN/ACKᒹHIJᨵ%&<=89B஺3.ᨬMᡝN#〈%&ACK஺@!Oᑮ4&ACKḄQ᎛STᡂV0WᐭV67()Y᝱஺[Qᒹ89\:;/ᦈᑮḄDE9A+1,^_ᑣ/B+L2aᢵCPḄ67Ḅc◀◤⌕#〈a&ᒹg[h/aᢵ(four-wayhandshake)஺ᡝᡈ!ᘤᙳk*+#lᢵ+.ᙠsocketnopqr%s᡻uclose஺v.ᓽkxyᢵv.஺(1)ᡝA#〈%&FIN,ᵨᩭᐵ{ᡝAᑮ!ᘤBḄᦪ|}〈஺(2)!ᘤBᦈᑮ4&FIN,~#C%&ACK,DE89/ᦈᑮḄ891஺SYN-᪵%&FINᓰᵨ%&89஺(3)!ᘤBᐵ{ᡝAḄ67#〈%&FINᡝA஺(4)ᡝA#CACKᦻDEDE89:/ᦈᑮ89L3ARPᙢᙬ᪆(AddressResolutionProtocol):᪷|IPᙢᙬᱥᳮᙢᙬḄ%&TCP/IP4uHliburmb2Ḅ

624&☢D@QḄurllib2kPost^urllibk1.urlliburlencodesBᵨᩭGET¡¢£¤Ḅxy^urllib2¥ᨵ஺4¦/rurllib§urllib2%l¨ᵨḄ©g஺2.urllib2k7O%&RequestªḄ«ᩭ:URL¬Ḅheaders,urllib®k7OURL஺4¯ᕡḼ²k³´²ḄUserAgent¢£¤µ஺5PostGetGETM⌨ᢥ¸/ᑵ»¼½POSTᦪ|¾\¿»ÀÁÂÃᘤÄÅÆᵨᡝᦪ|¾\¿»ÀÇ஺GETÈÉkᦈÊPOST/ÈÉkᦈÊ஺GETË\ÌÍPOSTËÌÍ஺GETnÎÏ^^applicati஺n/x-www-folTn-url,POSTni^ϪÑencodedapplication/x-www-form-urlencodedᡈmultipart/form-data/ÒoWᑴᦪ|¨ᵨ¿nṹ஺GETᔊÕÖᦪ×ᶇᙠÂÃᘤᔊÕp஺POSTÖᦪ¾×ÍᙠÂÃᘤᔊÕp஺GETÙᦪ|ÚÛᨵ▲ᑴ@#〈ᦪ|QGETsBᔣURLÝᦪ|;URLḄÚÛ¦O▲ᑴḄÁURLḄᨬᜧÚÛ¦2048&¢£Ç஺POST¼▲ᑴ஺GETàᐕâASCII¢£஺POST¥ᨵ▲ᑴ஺ãᐕâÒWᑴᦪ|஺

63POSTäGETḄåᐰឋèég/ᡠ#〈Ḅᦪ|¦URLḄ%1ᑖ஺ᙠ#〈ëṹᡈᐸíîïðQñ⌕¨ᵨGET!POSTGETåᐰg/Öᦪ¾\×ÍᙠÂÃᘤᔊÕᡈweb!ᘤòóp஺GETḄᦪ|ᙠURLpÙᡠᨵôõ¦köḄ஺POSTḄᦪ|¾÷øᙠURLp஺6CookieSessionCookieSessionùÍᡝ!ᘤúûü¾ýãk×ÍᵨᡝþÿᡈὅḄᵨᡝṹᐰᐰᐰឋsessionᢈ⌕ᵨᑮcookieḄᡠ!"sessionᢈ#⌕$%ᐰ஺7'ache(nginxḄ)*nginx+,apacheḄ-.:

640123᪵5web678apacheᓰᵨ:;Ḅᑁ=>?•ᢙABnginxᜐᳮEFGHIJKḄLᢝ:NḄABOPQ'acheᑣJKSḄᙠUABVnginxWᢝX>?XYὑUឋW•[\]U^_ᙽᓄḄbcᑏ_ᙽ+,\ᓫf)ghapache+,nginxḄ-.:•rewrite,8nginxḄrewritejᜧ_ᙽlNmnoᑮḄpqrᑮ•;bug,nginxḄbug+,sNltu8vwᵨᡝṹ1.xᦻ2.xᦻhashz᝞md53.MD5+Salt|}~saltq4.ᵨ%Bcrypy9HTTP(HTTPS

65HTTPS(ᐰ:HypertextTransferProtocoloverSecureSocketLayer)ᐰ$᪗ḄHTTP⍝\ᓫHTTPḄᐰ᱐஺ᓽHTTPVᐭSSLHTTPSḄᐰmẠSSL,Ḅᑁ◤⌕SSL,URIscheme(᪗¡)£¤¥3http:¡஺ᵨ¦ᐰḄHTTPᦪ¨©ª஺https:URL⊤xᵨ%HTTP,¬HTTPSᙠ3¦HTTPḄ®¯°=/²³´µ(ᙠHTTP·TCP¸)஺~¡¹Ḅᨬ»ẆBᵫv¾¿ÀÁÂÃÄ%²³´µ·Å|¤"ᙠÆÇÈᵨ¦ÉÊvËᐰÌÍḄÅÎ᝞Ï᧕LÑ|☢஺lᦻn©ªÓÔ(HTTP-Hypertexttransferprotocol)ÕÖu%×Øᘤ(ÉÊv67ᘤ¸Ú+ÛḄÖᑣÜᱯv©〈ÉÊvᦻ᫏Ḅᦪ¨©〈ÓÔ஺10XSRF(XSS•CSRF(Cross-siterequestforgery)àwEFá⌼•XSS(CrossSiteScripting)àwãnäåCSRFæ.ᙠEF,XSSæ.ᙠãn11RESTfulç᪀(SOAP,RPC)é₞ëhttp://www.ruanyifeng.com/blog/2011/09/restful.html12SOAPSOAP(ì$SimpleObjectAccessProtocolḄ✌îïðᑏᓽ\ᓫ,ñòÓÔ)Ïᣚᦪ¨ḄÕÓÔÖᵨᙠbõvöWeb67(webservice)÷,Ïᣚøù᪀Ûú஺SOAP$%\ᓄv⚓67ᘤ(WebServer)üXMLᦪ¨ý÷Ã

66þᦪ¨ÿ⁚ḕᓄ⚓☢ᵨᢥ᯿HTTP⍳XML᡻ᧇᣚ"ᐸ$%&'()*ஹ,-./0஺13RPCRPC(RemoteProcedureCallProtocol)234ᵨ567839:2;<=>?@ABC◤⌕FGHI9:ᢈKḄ஺RPCᎷNOPQRḄSᙠ,᝞TCPᡈUDP,XYZ[ᦪ]஺ᙠOSI9:^_`,RPCabFQRI.ᵨI஺RPC"cdeᒹg9:ᑖijᙠᑁḄᵨlmn᧕஺pq:ABstḄuᜧwx.Qz{|}~4ᵨXᔣRPC஺XFSOA,ᔆᖪὶᔠwebservice,ᑴNFwsdlN|QRsoap.ὶ9SOAᓄXhttp+xml/json.6ᓄ*ᔜ8஺Xᔣ6¡Ḅ¢ᑤᦋ¥&6z7ḄREST*F.¦ᓄḄ§¨RPC->SOAP->RESTful14CGI.WSGICGI6ᵨ9ᐵ6ªwebABᘤ.ᵨḄᵨᡝ3CGIᩭ®¯°᝱ᦪ]ᡈᦻ0³஺CGI67´µ¶Ḅ5·ᵨ¸¹ᡠᨵ'(ᩭᑏᒹgperl,c,luapython³³஺

67WSGI,WebServerGatewayInterface,6Pythonᵨᡈ᪾¾.WebABᘤḄ78WSGIḄᐸ`TÀḄÁ6Âᵨᡝ·ᵨz7Ḅ'(PythonÃᑏÄÅÆ஺16`ÇÈÉᙠGFWÊËÌÍḄᕣᕣ.`ÇÈÉMan-in-the-middleattack,ÏÐᑏXMITM6ᢣÈÉὅÓÔḄuÆᑖÕÖ×µ¶ḄὶØÙÚᣚᐸᡠᦈᑮḄᦪ]"ÔḄuÆÝXÞßàᙠ37´áâḄªÓ¡}ã¡äå)>᦮´çäèÈÉὅéᐰëᑴ஺17clOkì⚪ᡠîclOkì⚪ᢣḄ6ABᘤïᢝᡂᓟ>ó´ôᡝÆḄì⚪õÁ6concurrent10000connectionöõ6clOkö´÷øḄᵫᩭú஺18socketSocket=Ipaddress+TCP/UDP+port19ûüᘤýS₞¨http://web.jobbole.com/84367/ûüᘤýS=ᑴ,ᐸ)ÿ⌕HTTPḄᑴ᝞Expires;Cache-control

68ExpiresᶍExpiresWebᘤᜮᙠhttp!"#$%&ᘤᙠ'(")*%&ᘤ+,-./%&ᘤ0ᦪ234◤67!஺Cache-controlᶍ9:ᐵ<úCache-Control=ExpiresḄ>ᵨ@ABᢣDE*FGḄᨵᦔ(Jᑴ%&ᘤᔲ-./%&ᘤ0ᦪ2L9MN!ᑮᘤ0ᦪ2஺PQ'Cache-ControlḄ⌱STUVWTXA᝞YZ"VWḄ[ᐸ]ᐜ_`aExpires20HTTP1.0bHTTP1.1c₞:http://blog.csdn.net/elifefly/article/details/39647661.!ᜮHost,@gᘤUghi2.jk.3.ᦻmn:op4.qrstu᝱wᳮ,Cache21AjaxAJAX,AsynchronousJavaScriptandXMLyzḄJavaScriptbXML,=ᙠQ9M{|᦮g⚓☢Ḅ=ᘤᣚᦪ2TMᑖh⚓Ḅᢈ஺

69ᦪ2᪀1᪛᪛=AVLḄAVL⊝᪛ᙠ{ᡈὅᑤ◀⁚:Ḅ"᎛᪷2QZḄ7ᦪ᪛⌕U¡ᵨ¢Ḅ⊝ᩭᣚ0ᑤ⁚:"᎛7ᦪḄ¤¥¡ᡠ,§ᓫ©᝞YªḄᵨ«¬Ḅ7ᦪ®®ᜧa°ᐭbᑤ◀²³⌱SAVL,᝞Y¬°ᐭᑤ◀7ᦪ´µ¶QU·⌱SRB஺1¸▤º⚪/ᦾ¾¿ᢤ@P☘Â@7+,ÃÄ1_¸▤Å+,ÃÄ2_஺!·☘ÂÃÄ@gn_Ḅ¸▤ÆᐳᨵUÈÉÃÊ஺1fib=lambdan:nifn<=2elsefib(n-1)+fib(n-2)ËÌÉÍÎÏÊdefmemo(func):cache={}defwrap(*args):ifargsnotincache:

70cache[args]=func(*args)returncache[args]returnwrap@memodeffib(i):ifi<2:return1returnfib(i-l)+fib(i-2)ËÐÉÏÊ1deffib(n):2a,b=0,13for_inxrange(n):4a,b=b,a+b5returnb2Ñ᝱¸▤º⚪@P☘Â@7+,ÃÄ1_¸▤Å+,ÃÄ2_……ÓÅ+,ÃÄn_஺!·☘ÂÃÄ@gn_Ḅ¸▤ÆᐳᨵUÈÉÃÊ஺fib=lambdan:nifn<2else2*fib(n-1)

713ÔÕ⌚×ᡃÙ+,ᵨ2*1ḄÚÔÕÛḼᡈὅÝḼÞ⌚×TᜧḄÔÕ஺ºᵨng2*1ḄÚÔÕ49ßᙢ⌚×@g2*nḄᜧÔÕÆᐳᨵUÈÉÏÊáË2*ngÔÕḄ⌚×ÏÊaË2*(n-l){ÄË2*(n-2)ḄÏÊ஺f=lambdan:1ifn<2elsef(n-1)+f(n-2)14ᩰãÔ▣åæᙠ@gmçnᑡÌéᦪê«ë@çBᢥ᯿/îᑮï⌴Ḅñò᣸òë@ᑡBᢥ᯿/Äᑮ⌴Ḅñò᣸ò஺ôᡂ@göᦪ÷ᐭø᪵Ḅ@gÌéᦪêb@g᦮ᦪᑨnᦪê«ᔲûᨵ·᦮ᦪ஺5Þ◀ᑡ⊤«Ḅ9ýᐗÿᵨᔠ1list(set(l))ᵨᐺ111=[,b'ûc'ûd'ûb,ûc7a,ûa,]212={}.fromkeys(ll).keys()

723print12ᵨᐺᢝ111=[,b'ûc,ûd,ûb,ûc,,,a,ûa,]212=list(set(ll))312.sort(key=l1.index)4print121II=[,b'ûc,ûd,ûb7cVa7a,]212=[J3[12.append(i)foriin11ifnotiin12]☢ᑮḄ᣸ᯠᑤ◀6⊤ᡂᣚ1->2->3->4ᣚᡂ2->1->4->3.classListNode:def—init_(self,x):self.val=xself.next=NoneclassSolution:

73#@paramaListNode#@returnaListNodedefswapPairs(self,head):ifhead!=Noneandhead.next!=None:next=head.nexthead.next=self.swapPairs(next.next)next.next=headreturnnextreturnhead7ᐺḄ!1"#1diet={'nameTearth','port':'80'}2$ᔆ!Iitems=[(,name'/earth,),('port,,,80,)]2dict2=dict(items)3dictl=dict(([,name,,'earth,],[,portV80,]))3fromkeys()!1diet1={}.fromkeys(('x?y)-1)2dict={,x,:-l,y-l)3dict2={l.fromkeysCfx'/y'))

744dict2={,x,:None,'y':None)8ᔠ&'ᨵᑡ⊤*+,-☢⌕/0-1⌴3def_recursion_merge_sort2(11,12,tmp):iflen(l1)==0orlen(12)==0:tmp.extend(ll)tmp.extend(12)returntmpelse:ifll[0]<12[0]:tmp.append(ll[0])delll[0]else:tmp.append(12[0])del1210]return_recursion_merge_sort2(l1,12,tmp)defrecursion__merge_sort2(l1,12):return_recursion_merge_sort2(11,12,[])456!

75defloop_merge_sort(l1,12):trnp=[]whilelen(ll)>0andlen(12)>0:ifll[0]<12[0]:tmp.append(ll[0])delll[0]else:tmp.append(12[0])del1210Jtmp.extend(ll)tmp.extend(12)returntmp978⊤/79:;<Ḅ☢=>?@ᩭ.classListNode:def—init_(self,x):self.val=xself.next=Nonedefnode(ll,12):length1,lenth2=0,0#üýHþ⊤ÿwhile11.next:

7611=11.nextlength1+=1while12.next:12=12.nextlength2+=I#Ḅ⊤ᐜiflength1>lenth2:for_inrange(length1-length2):11=11.nextelse:for_inrange(length2-length1):12=12.nextwhile11and12:if11.next==12.next:return11.nextelse:11=11.next12=12.next10CᑖEFdefbinarySearch(l,t):low,high=0,len(l)-1whilelow

77printlow,highmid=(low+high)/2ifl[mid]>t:high=midelifHmid]

787greater=qsort([xforxinseq[l:]ifx>=pivot])8returnlesser+fpivot]+greater910if_name—==,—main—11seq=[5,6,78,9,0,-1,2,3,-65,12]12print(qsort(seq))12FGH⚪defcoinChange(values,money,coinsUsed):#valuesᦪ#valuesCountsḄᦪ#moneyᩭḄᦪ#coinsUsedᦪiᡠᵨḄᦪforcentsinrange(1,money+1):minCoins=cents#!"#ᑮmoneyḄᡠᨵ&'(#fbrvalueinvalues:ifvalue<=cents:temp=coinsUsed[cents-value]+1iftemp

79values=[25,21,10,5,1]money=63coinsUsed={i:0foriinrange(money+l)}coinChange(va!ues,money,coinsUsed)13JKLᔊNOKLᔊC8᪛QRS'ᦪU=᪀C8᪛=WᢥYZᡭᓺ]'C8᪛##14/0᪛⁚3classNode(object):def_init_(self,data,left=None,right=None):self.data=dataself,left=leftself.right=righttree=Node(l,Node(3,Node(7,Node(0)),Node(6)),Node(2,Node(5),Node(4)))##15456ᔊdeflookup(root):stack=[root]whilestack:current=stack.pop(O)printcurrent.dataifcurrent.left:

80stack.append(current.left)ifcurrent.right:stack.append(current.right)##1686ᔊdefdeep(root):ifnotroot:returnprintroot.datadeep(root.left)deep(root.right)if_name_==*_main_lookup(tree)deep(tree)17^_LᔊOKLᔊᦋabOKc18/ᨬᜧ᪛O1defmaxDepth(root):2ifnotroot:3return04returnmax(maxDepth(root.left),maxDepth(root.right))+1

8119/&f᪛gᔲij1defisSameTree(p,q):2ifp==Noneandq==None:3returnTrue4elifpandq:5returnp.val==q.valandisSameTree(p.left,q.left)andisSameTree(p.right,q.right)6else:7returnFalse20^_/defrebuild(pre,center):ifnotpre:returncur=Node(pre[()])index=center.index(pre[O])cur.left=rebuild(pre[l:index+1J,center[:index])cur.right=rebuild(pre[index+1:],center[index+1:])returncurdefdeep(root):ifnotroot:return

82deep(root.left)deep(root.right)printroot.data21ᓫ⊤⌮mclassNode(object):defߟinit_(self,data=None,next=None):self.data=dataself.next=nextlink=Node(l,Node(2,Node(3,Node(4,Node(5,Node(6,Node(7,Node(8,Node(9)))))))))defrev(link):pre=linkcur=link.nextpre.next=Nonewhilecur:tmp=cur.nextcur.next=prepre=curcur=tmpreturnpreroot=rev(link)

83whileroot:printroot.dataroot=root.nextPythonWebiᐵ9:;WSGI?CGIᐰpg"rᐳtᐵ#u"(CommonGatewayInterface),HTTPvwᘤyzḄᡈᐸ}~ᘤḄ-“7"ḄS$ᐹ=ᐸ-ᙠtvwᘤ஺CGIᵨS0ᑏ=⌕]ᐹᨵ᪗ᐭஹ@N5᛻a஺᝞php,perl,tcl஺FastCGIgS'(long-live)ḄCGI,}S"᡻Ḽ=⌕¢£=¤¥¦Z§⌕¨©ª«:forkSZ(]gCGIᨬ®¯°Ḅfork-and-execute±²)஺}´µᢝᑖ¶²Ḅ6=ᓽFastCGI-ᙠt¸vwᘤ᜜Ḅº~᡻W#»ᩭ¼ᐸ}t¸vwᘤᩭḄ½/஺FastCGIg¾ᐵḄஹ¿ÀÁ᪀ḄCGIÂÃ᡽Å=ᐸº⌕gÆCGIÇÈᘤ-ᢝᙠᑁÊ_ËÌÍÎÏÐḄឋÒ஺Óᡠᕜ*=CGIÇÈᘤḄÖ×ØÙgCGIឋÒÚÛḄº⌕ÜË=᝞ÝCGIÇÈᘤᢝᙠᑁÊ_#»FastCGI-ÞᳮᘤK=ᑣáâãḄឋÒஹ¿ÀឋஹFail-Overᱯឋ஺

84WSGIḄᐰpåPythonWebServerGatewayInterfacevl.OPythonWebvwᘤtᐵ#uæ=}gPythonçᵨ-NWEBvwᘤè«ḄS#u஺}Ḅéᵨ=êëìFCGIᡈFASTCGIèêḄíîḄéᵨ஺WSGIḄï᪗=g⌕ðS'ñᓫḄòL〉ᵨḄvwᘤyWEB᪾Áè«Ḅ#u஺FlupbgõᵨPythonWSGIḄSö÷=gᵨìPythonḄçᵨÂø_ḄS$ᐹᡈὅúgSû஺Spawn-fcgigS'ü-=]'-ḄéᵨgÞᳮfast-cgi-=ýþÞᳮwsgi-ÿᨵ⚪Ḅphp-fpm஺ᦑᓫᙢAWSGIFastCGICGI,ᵨWEBᘤᵨWSGI!ᢣPythonᵨ஺flupWSGIḄ#$Spawn-fcgiᵨ%ᳮflup'Ḅ()ᐹ+,-./(wsgi'0%ᳮ12஺345DjangoTornadoḄᐵ7ஹ9:Django;<(ᙠ>?@WebAB2005C,D;ḄEFG4HIᩭ஺Django᪾LḄ᪶NOPᨵQᵨRSTUḄVWᐵ7᧜YZᨬ\ᵨᡝ^_Ḅ`a%ᳮb☢dḄURL^_^_ὅfgḄThijkl7mnn

851pqrsDt,0⍳wMVC^_஺Django⍳xBSD᱐ᩗᨬ?t{᱐|Django1.42012C03ᨴ23~t.DjangoḄ⌕ḄஹrsḄDtᦪ.ḄA஺1ṹᵨ/(OP+,Ḅ,"P”EF᦮(᪾LDjangoᨵ/ᜧḄP+,ḄDtI<Ḅ)ᐹᒹ஺DjangoᐹᨵḄ+᡽¡ឋ஺1£rsDtDRYDoNotRepeatYourself¤¥¦TornadoFriendFeedᵨḄ+᡽¡Ḅ§¨©Fwebᘤªᐸ¬ᐵ)ᐹḄD;᱐|஺(Web᪾L®ᩭᨵ¯°web.pyᡈὅGoogleḄwebapp²³Z´ᨵᦔᑭᵨ§¨©Fᘤ·᛻(Web᪾L£ᒹ¹´¯¬ᐵḄᨵᵨ)ᐹºᓄ஺Tornado$ᙠḄdWebᘤ᪾L¼ᒹ½ᜧ/ᦪPythonḄ᪾L¾ᨵḼÀÁḄÂ:Q1§¨©FᘤÃsĬÅr஺ᑭᐸ§¨©ḄFVepollḄÆᵨTornadoÇÈ+,ᜐᳮᦪ,ᓟ_ḄËᕡḼV#ÍWebᩭTornado(ᳮÎḄWeb᪾L஺ᡃ2Dt(WebᘤḄ⌕ḄÐZ´ᜐᳮFriendFeedḄ#Í——ᙠFriendFeedḄᵨÒÇ(Ó.ᵨᡝÔÕᢝḼ(ᘤ஺¼ᐵ᝞Ø᡽Ùᘤ,ᜐᳮᦪ,ᓟ_ḄÚᡝÛḄḄ⚪஺

86345django-debug-toolbarḄᵨᵨdjangoDtABÍ+,ᵨdjango-debug-toolbarᩭ'{Ü஺ᙠsettings.pyÝÞßà'debug_toolbar.middleware.DebugToolbarMiddleware,ᑮ⚗ḄMIDDLEWARE_CLASSESᑁ஺345DjangoᵨredisklᘤZ´ᙠDjangoÝᵨredis,£◤⌕æçredisforDjangoḄP஺ᯠéᙠDjangoḄsettingsÝêë´஺$ᙠêëìí`ᡂ´5ᩭ(ᓫḄïðQfromdjango.confimportsettingsfromdjango.core.cacheimportcache#readcacheuseriddefread_from_cache(self,user_name):key='user_id_of_'+user_namevalue=cache.get(key)ifvalue==None:data=Noneelse:data=json.loads(value)returndata#writecacheuserid

87defwrite_to_cache(self,user_name):key='user_id_ofj+user_namecache.set(key,json.dumps(user_name),settings.NEVER_REDIS_TIMEOUT)᝞Ø'{DjangoᓫᐗòÜDjangoḄᓫᐗòÜᵨpythonḄunittestTᙽ(TᙽᵨôḄõᩭö÷òÜ஺øZdjango.test.TestCase,ùúpythonḄunittest.TestCaseofromdjango.testimportTestCasefrommyapp.modelsimportAnimalclassAnimalTestCase(TestCase):defsetUp(self)'AnimaLobjects.create(name=ulionu,sound=MroarM)Animal.objects.create(name=ucat",sound=Hmeow")deftest_animals_can_speak(self):"""Animalsthatcanspeakarecorrectlyidentified"""lion=Animal.objects.get(name="lion")cat=Animal.objects.get(name="cat")self.assertEqual(lion.speak(),Thelionsays"roar1")

88self.assertEqual(cat.speak(),'Thecatsays"meow"1)᡻{ü5ᡠᨵḄòܼᡠᨵḄtest*.pyᦻP¾QÆ{òÜḄÍ᎛ᙠᡠᨵtestᜮḄᦻᡠᨵḄtestcasesinittest.TestCaseḄᯠ஺1$pythonmanage.pytest᡻animals⚗!"testsᒹ$Ḅ%$pythonmanage.pytestanimals.tests᡻animals⚗!$Ḅtest%1$pythonmanage.pytestanimalsᓫ'᡻()testcase:1$pythonmanage.pytestanimals.tests.AnimalTestCaseᓫ'᡻()*+%1$pythonmanage.pytestanimals.tests.AnimalTestCase.test_animals_can_speak

89-ᦻ./01:I$pythonmanage.pytestanimals/34ᦻ5%1$pythonmanage.pytest—pattern=,,tests_*.pyuᵨwarnings.⏨%1$python-Wallmanage.pytest89"Http:;HTTP<=)>?@ᵨAḄ☢ᔣDEḄ:;ᵫ?ᐸHᣩஹKLḄ*M〉ᵨ?ᑖPMQRSTUVW஺HTTP:;ḄX⌕ᱯ[\ᭆ^᝞"%1.aᢝcᡝ/fgᘤiM஺

902.HᓫKL%cᡝᔣfgᘤjkfglm◤o〈jk*+q01஺jk*+rᵨḄᨵGETஹHEADஹP0STst*+uvwcᡝxfgᘤὶVḄz{|஺ᵫ?oHTTP:;Hᓫ}~HTTPfgᘤḄui3TLK஺3.ᮣ%HTTPᐕozḄᦪDE஺ᙠoḄzᵫContent-Type᪗஺4.%Ḅ<▲ᑴsmᜐᳮ=)jk஺fgᘤᜐᳮcᡝḄjkᦈᑮcᡝḄ@ᓽ¡஺¢ᵨ£t*M\⁚ḕol¦஺5.§᝱%HTTP:;<§᝱:;஺§᝱<ᢣ:;D?ªgᜐᳮ«ᨵ¬®஺¯°§᝱ᕡḼ᝞³´ᜐᳮ◤⌕µ☢ḄTUᑣ·¸¹ºo£᪵\¼½so〈Ḅᦪ¾¿ᜧ஺Á=*☢ᙠfgᘤ{◤⌕ᐜµTUl·Ḅ@ÃÄK஺89"HttpjkᜮqrÅÆ@§᝱ṹAcceptᢣÈÉᘤᡈᐸËcᡝ\᰿ḄMIMEᦻÍM஺\᪷·ᑨ¡ÐÑ〉ÒḄᦻÍM஺Accept-Charset:ᢣÓÈÉᘤ\ÔḄÕÖ×ṹ஺ØᦻÈÉᘤḄÙÚÛ

91Accept-Encoding:ᢣÓÈÉᘤ\ÔḄ×ṹ*M஺×ṹ*M{|?ᦻÍM·<-wÞßᦻLᦻo⌴L஺ÈÉᘤᙠᦈᑮWebÆ@áᐜ8ṹᯠâãäᦻÍM஺Cache-Control:åæᐵ?jkèéᳮfgᘤêëḄìᐵ⌱⚗஺=îᵨ{ᑮ஺Connection:ᵨᩭðñfgᘤ<ᔲ\óᢝôvḄHTTP஺HTTP/1.1}ᵨKeep-Alive-ÙÚÛ£᪵ÒÈÉᘤ◤⌕õ)ᦻlö÷᝞=)HTMLᦻqìᐵḄøùᦻ,{◤⌕sû஺Content-Type:ᵨᩭ⊤5requestḄᑁþz஺\ᵨHttpServletRequestḄgetContentType஺*+ÿ஺Cookie:ᘤᵨឋᔣᘤ〈Cookie஺CookieᙠᘤḄᦪ!ᘤ"ᐵḄᵨᡝ%&'ᵨᩭ)*+,-.஺/᝱1ṹᨵ45ᦪ67ᡂ9:ᦪ6;<=>?Ḅ@ABᨵCD.EFGIxx:ᢣI%&-⊤ILMNOᦈ,RSᜐᳮ2xx:ᡂ--⊤ILMNVᡂ-OᦈஹᳮXஹOY3xx:Z;ᔣ-⌕\ᡂLM]^_`a_:bḄcd4xx:eᡝf┯h-LMᨵij┯hᡈLMlj)*

925xx:ᘤf┯h-ᘤm.)*ᔠjḄLMop/᝱1ṹஹ/᝱qrஹstG200OK஻eᡝfLMᡂ-400BadRequest஻eᡝfLMᨵij┯hv.VᘤᡠᳮX401Unauthorized஻LMmxᣴᩗ/᝱1ṹ]^!WWW-Authenticate{ᜮ}:~ᵨ403Forbidden஻ᘤᦈᑮLM404NotFound஻LMvᙠAeg:ᐭ=┯hḄURL500InternalServerError஻ᘤv⚜Ḅ┯h503ServerUnavailable஻ᘤv.ᜐᳮeᡝfḄLM:.ឮoeg:HTTP/1.1200OK(CRLF):ஹᑡ4D`ḄᜧᦪḄ¡¢:ஹ

93_ᐸ¥ᨬ§៉Ḅ___________________©«¬ᵨ஺Oracle,Mysql,SQLServerOracle᪷¯°±²³ஹᨵ⊤List,´ᨵ6AஹBஹC,@µ᦮ᦪ஺⊤ᨵ᝞¸¹ᩩ»GABC2795643119*ᙠ¼½⊤:¾\ᡂ¸cdG¿ÀB!CᑡḄF⌕MᢥBᑡᓣÃ᣸ᑡᑏ:ᩩÆḄ»FÇ{7,9,8}᩵ÀCÉIÊ⌕MË◀ZḄFᢥÍÃ᣸ᑡᑏ\ᡂ\ᡂÎcdḄ᪗ÐḄSQLiÑ´Bᑏcd3ḄÒÓ஺screatetableList(Aint,Bint,Cint)

94SelectB,CfromListorderbyBInsertintoListvalues(7,9,8)Selectdistinct(C)fromListorderbydesc;9844ஹLÔ⌕stÕÖḄdᵨᦪÕÖ◚Ø=ᦪḄᩖឋ஺2.ᦪÕÖᨵᑭÜÝᑴᵨᡝ¼⊤ßàᑡḄáâ஺3.ᦪÕÖᵨᡝ¿ÀãÔᓫ஺åஹᑡæ¥ᵨçḄpythonèéᡠᵨᑮḄèéᦪᒹ(ᨬ§៉Ḅᙠ)Grequests,urllibஹurllib2httplib2xCஹᑡæ¥ᵨçḄpythonèéᡠᵨᑮḄX᪆ᦪᒹ(ᨬ§៉Ḅᙠ)GBeautifulSouppyquery.XpathஹIxmls

95îஹᑡæ¥ᵨçḄpythonḄïṹðñòᨬ§៉ḄᙠóGUTF-8,ASCII,gbksôஹpython3.5iõenumerateḄö÷____________________ø¼Ü:ù1Ḅòiterableó/ûᔊḄ¼ýò᝞ᑡ⊤ஹ6þÿenumerateᐸᡂᑡᑭᵨenumerateᵨᙠfor■ᑮᦪ!ஹ99Ḅ!$ᑴ⊤'(____________________0143*ஹ+,-./0ᵨḄ᣸234ᑈ6ஹ⌱8ஹ9:ᓝஹᑡ-<=>៉Ḅ@A᪾CScrapyᓝஹᵨ4ஹ9ஹ2ஹ7DᦪEFᵨ+ஹ-ஹ*/KᦪEFᵨLF⊤MNḄOPQ24,⊤MN(

96S(9+7-4)*2ᓝUஹVWᨬᨵZ[Ḅᡈ(]^Qᨬᨵ_Ḅ`ab☢Ḅdef(gᓝ.ஹ]ᨬ>៉ḄUnix᛻(____________.Unixijk᛻lmḄno(_______jkpeqrsḄno(___________________EJIAIX,envcrontabᓝDஹᑏ-ᙠuv@A@wᦪxḄyz⍗ᑮḄ■@A}⚪Ḅbᫀyheaders@Aᶍ⌼headersᵨᡝQ@A᝱lᓄ@wᦪxᵨᡝḄQ᝱⚓☢Ḅ@Asᘤ〈Ḅajax+ajax+ᓝஹ▅iPythonzforiinrange(5,0,-l):print(i)+ᙠi☢ᑏ-ᡭᓺOP□54321

97ᓝஹᙠ¡¢£᦮ᦪᓰᵨ¦!§E⁚FᵨPythonᢥi☢Ḅ⌕«ᑏ¬᦮z஺®ᦈ°᪗²³ᐭµL³ᐭḄᦪEᐸᔠᡂQ᦮ᦪ·ᐭᐰ¹lmnº»ᙠ᪗²³-³-¼᦮ᦪ஺(ord(char)wE½ASCIIḄ¾ᦪ)À°Á-Âᩭᑮ¼ÄÅÆÇÈɼÄÅ஺ÊËÌÍÎÏÐËÌÑÒÉÓÔÕÖ஺

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭