最近編寫自己的rpc小框架,涉及到bytes.這里就想梳理一下編碼與python的字符串和字節(jié)碼(bytes)類型.先上個(gè)圖,有個(gè)印象,隨時(shí)可以回頭看.#前置知識(shí)字符:在計(jì)算機(jī)和電信技術(shù)中,一個(gè)字符是一個(gè)單位的字形、類字形單位或符號(hào)的基本信息。即一個(gè)字符可以是一個(gè)中文漢字、一個(gè)英文字母、一個(gè)阿拉伯?dāng)?shù)字、一個(gè)標(biāo)點(diǎn)符號(hào)等;字符集:多個(gè)字符的集合。例如GB2312是中國國家標(biāo)準(zhǔn)的簡體中文字符集;字符編碼:將某個(gè)字符集中的字符轉(zhuǎn)換成一個(gè)唯一編號(hào)(碼點(diǎn),二進(jìn)制數(shù)據(jù))
系統(tǒng) 2019-09-27 17:48:25 2141
單選題1.forvarin___:print(var)哪個(gè)選項(xiàng)不符合上述程序空白處的語法要求?????????????????????????????????????????????????????????????????????????????????????????????????A“Hello”Brange(0,10)C{1;2;3;4;5}D(1,2,3)正確答案:Cfor…in…中in的后面需要是一個(gè)迭代類型(組合類型),B不是Python的有效
系統(tǒng) 2019-09-27 17:46:37 2141
1、序列中元素的索引:第一個(gè)元素索引是0,第二個(gè)是1,依次遞增最后一個(gè)元素索引是-1,倒數(shù)第二個(gè)是-2,依次遞減2、序列(Sequence)的種類:列表(list)、元組(tuple)、字符串(string)、Unicode字符串、buffer對象、xrange對象3、列表和元組的區(qū)別:列表可以進(jìn)行修改,但是元組不行4、tuple常作為字典的鍵5、序列都可以進(jìn)行以下操作:索引(indexing)、分片(sliceing)、加(adding)、乘(multi
系統(tǒng) 2019-09-27 17:37:36 2141
>>>deftest(x=20):a="1.4"+"9"*xforiinxrange(3,len(a)):print"round(%s)=%s,contains%s'9'"%(a[:i],round(float(a[:
系統(tǒng) 2019-08-29 23:33:08 2141
面向?qū)ο蠡A(chǔ)面向?qū)ο缶幊蹋喊岩唤M數(shù)據(jù)結(jié)構(gòu)和處理它們的方法組成對象(object),把相同行為的對象歸納為類(class),通過類的封裝(encapsulation)隱藏內(nèi)部細(xì)節(jié),通過繼承(inheritance)實(shí)現(xiàn)類的特化(specialization)和泛化(generalization),通過多態(tài)(polymorphism)實(shí)現(xiàn)基于對象類型的動(dòng)態(tài)分派。簡單地說,類是對象的藍(lán)圖和模板,對象是類的實(shí)例。python中可以使用class關(guān)鍵字定義類,在類中
系統(tǒng) 2019-09-27 17:56:01 2140
對于每一個(gè)學(xué)習(xí)Python的同學(xué),想必對@符號(hào)一定不陌生了,正如你所知,@符號(hào)是裝飾器的語法糖,@符號(hào)后面的函數(shù)就是我們本文的主角:裝飾器。裝飾器放在一個(gè)函數(shù)開始定義的地方,它就像一頂帽子一樣戴在這個(gè)函數(shù)的頭上。和這個(gè)函數(shù)綁定在一起。在我們調(diào)用這個(gè)函數(shù)的時(shí)候,第一件事并不是執(zhí)行這個(gè)函數(shù),而是將這個(gè)函數(shù)做為參數(shù)傳入它頭頂上這頂帽子,這頂帽子我們稱之為裝飾器。曾經(jīng)我在剛轉(zhuǎn)行做程序員時(shí)的一次的面試中,被面試官問過這樣的兩個(gè)問題:1、你都用過裝飾器實(shí)現(xiàn)過什么樣的功
系統(tǒng) 2019-09-27 17:55:11 2140
python3.6threading和multiprocessing四核+三星250G-850-SSD自從用多進(jìn)程和多線程進(jìn)行編程,一致沒搞懂到底誰更快。網(wǎng)上很多都說python多進(jìn)程更快,因?yàn)镚IL(全局解釋器鎖)。但是我在寫代碼的時(shí)候,測試時(shí)間卻是多線程更快,所以這到底是怎么回事?最近再做分詞工作,原來的代碼速度太慢,想提速,所以來探求一下有效方法(文末有代碼和效果圖)這里先來一張程序的結(jié)果圖,說明線程和進(jìn)程誰更快一些定義并行是指兩個(gè)或者多個(gè)事件在同一
系統(tǒng) 2019-09-27 17:54:48 2140
之前一篇文章里提到了利用Cython來編譯Python,這次來講一下如何用Cython給Python寫擴(kuò)展庫。兩種語言混合編程,其中最重要的是類型的傳遞。我們用一個(gè)簡單的例子進(jìn)行入門:這次的目標(biāo)是用C語言寫一個(gè)Numpy的加法和元素相乘模塊。在本例中,Numpy的array被傳入到C語言模塊內(nèi),變成了二維數(shù)組。1.頭文件main.h:#ifndef_MAIN_H#define_MAIN_Hvoidplus(double*a,double*b,double*
系統(tǒng) 2019-09-27 17:54:47 2140
背景:網(wǎng)絡(luò)傳輸層中,一般采用TCP協(xié)議,如果要建立連接,客戶端會(huì)先發(fā)送syn包請求,服務(wù)器接收,接收后,再傳遞給客戶端ack,syn包,這個(gè)時(shí)候,客戶端再次回應(yīng),傳回ack包。可是問題就出在,如果我是客戶端,只發(fā)送一個(gè)請求syn包,然后第三次握手的時(shí)候,不再往回傳ack包,此時(shí)服務(wù)端是不是就要等待?在等待的時(shí)間里,我是不是可以偽造更多的請求,從而不斷消耗服務(wù)器的資源,然后直到最后服務(wù)器停止服務(wù)為止?上述這種攻擊就是syn泛洪攻擊。python中scapy庫
系統(tǒng) 2019-09-27 17:54:25 2140
最近在刷面試題,所以需要看大量的Python相關(guān)的面試題,從大量的題目中總結(jié)了很多的知識(shí),同時(shí)也對一些題目進(jìn)行拓展了,但是在看了網(wǎng)上的大部分面試題不是很滿意,一個(gè)是有些部分還是Python2的代碼,另一個(gè)就是回答的很簡單,有些關(guān)鍵的題目,也沒有點(diǎn)出為什么,最重要的是還有一些復(fù)制粘貼根本就跑不通,這種相信大家深有體會(huì)吧,這樣就導(dǎo)致我們可能需要去找其他人發(fā)的類似的教程。難受啊,所以我決定針對市面上大多的Python題目做一個(gè)分析,同時(shí)也希望大家盡可能的做到舉一
系統(tǒng) 2019-09-27 17:54:18 2140
uwsg基礎(chǔ)配置[uwsgi]#當(dāng)前文件所處的文件夾chdir=%dproject_name=%cuser=@(exec://whoami)virtualenv=/home/keithl/workdir/python/pyenv/%(project_name)#loadaWSGImodulewsgi-file=wsgi_admin_handler.pymaster=true#setthesocketlistenqueuesizelisten=100#本機(jī)內(nèi)
系統(tǒng) 2019-09-27 17:53:47 2140
寫的dht協(xié)議搜索的程序,這幾天優(yōu)化了一下發(fā)現(xiàn)速度確實(shí)快了好多。但是出現(xiàn)了一個(gè)新的問題,內(nèi)存直接飆升,我開了十個(gè)爬蟲占用內(nèi)存800m。開始我以為是節(jié)點(diǎn)太多了,找了幾個(gè)小問題修改一下,發(fā)現(xiàn)沒用。后來就到網(wǎng)上查找python內(nèi)存分析的工具,查了一點(diǎn)資料發(fā)現(xiàn)python有個(gè)meliae庫操作非常方便,就使用分析了一下,發(fā)現(xiàn)不是節(jié)點(diǎn)太多的原因00,是保存發(fā)送的t_id,用來標(biāo)示返回的消息是那個(gè)發(fā)出的一個(gè)字典過大了。從分析的結(jié)果非常容易的定位了某個(gè)對象的數(shù)量和大小,
系統(tǒng) 2019-09-27 17:52:11 2140
getattr`getattr`函數(shù)屬于內(nèi)建函數(shù),可以通過函數(shù)名稱獲取復(fù)制代碼代碼如下:value=obj.attributevalue=getattr(obj,"attribute")使用`getattr`來實(shí)現(xiàn)工廠模式復(fù)制代碼代碼如下:#一個(gè)模塊支持html、text、xml等格式的打印,根據(jù)傳入的formate參數(shù)的不同,調(diào)用不同的函數(shù)實(shí)現(xiàn)幾種格式的輸出importstatsoutdefoutput(data,format="text"):outpu
系統(tǒng) 2019-09-27 17:51:59 2140
capitalize()首字母大寫a='someword'b=a.capitalize()print(b)―>Somewordcasefold()&lower()所有字母變小寫,casefold可將未知字符便小寫a='someWORD'b=a.casefold()print(b)c=a.lower()print(c)―>someword―>somewordcenter(width,fillchar=None)設(shè)置寬度,并將內(nèi)容居中,空白未知填充,一個(gè)字符a
系統(tǒng) 2019-09-27 17:50:41 2140
這節(jié)主要介紹time,random模塊;不用死記。首先說一下什么是模塊。。。importtime有些朋友,開始比迷惑的,但是后面聊到類(屬性,方法),包會(huì)好一點(diǎn),我們這里沒這么快說到,慢慢來,但是為了方便你記憶。。。最及簡單的是.....你知道x.py是你寫的python腳本;如果你在同一個(gè)目錄下定義了另外一個(gè)time.py。你importtime就直接調(diào)用了(這也是,我們需要注意的,定義x.py時(shí)候名字不要跟自帶的模塊名字,第3方模塊一樣的名字,除非你自
系統(tǒng) 2019-09-27 17:50:00 2140