python在律師上作中的實例_python-基礎面試題

深拷貝

1.對象A拷貝,生成對象B,且我們修改對象B(對象A)中的數據或方法,對象A(對象B)不會受影響,這就是深拷貝

2.對于可變與不可變類型

對于不可變類型,深拷貝會和淺拷貝一樣,拷貝的是引用,不會創建新的內存地址

對于可變類型,深拷貝會拷貝每一層,新建內存地址進行儲存

淺拷貝

1.對象A拷貝,生成對象B,且我們修改對象B(對象A)中的數據或方法,對象A(對象B)會受影響,這就是淺拷貝

2.(淺拷貝是對一個對象父級(最外層)的拷貝,并不會拷貝子級(內部))

對于不可變類型,淺拷貝僅僅是地址指向,不會開辟新空間

對于可變類型,淺拷貝只是引用原數據,會跟著原數據的改變而改變

可變與不可變數據類型

可變數據類型 :可以在原數據的基礎上進行修改,修改后內存地址不變

常見的可變類型

列表(list)、字典(dictionary)、集合 (set)

不可變數據類型:不能在原數據基礎上進行修改,重新賦值后內存地址改變

常見的不可變類型

字符串(str)、數字(number)、元組 (tuple)

垃圾回收機制

引用計數

當一個對象的引用被創建時,對象的引用計數加1,當一個對象的引用被移除時,對象的引用就是減1,當對象的引用計數為0時,就意味著對象已經不再被使用,可以將其內存釋放掉

標記清除

標記清除 是 建立在引用計數技術基礎之上

當引用計數為0的時候就給這個對象打上一個標簽”可清除“,但是不會立馬清除,而是會等到系統給程序分配的內存要用完之時,停下來將可清除標簽的對象銷毀然后繼續。

分代回收

分代回收 是 建立在標記清除技術基礎之上

分代回收共分為三個“代”:年輕代、中年代、老年代,他們對應的是3個鏈表,它們的垃圾收集頻率與對象的存活時間的增大而減小

新創建的對象都會分配在年輕代,年輕代鏈表的總數達到上限時,Python垃圾收集機制就會被觸發,把那些可以被回收的對象回收掉,而那些不會回收的對象就會被移到中年代去,

當中年代鏈表的總數達到上限時,Python垃圾收集機制就會被觸發,把那些可以被回收的對象回收掉,而那些不會回收的對象就會被移到老年代去,

依此類推,老年代中的對象是存活時間最久的對象,甚至是存活于整個系統的生命周期內

同時,分代回收是建立在標記清除技術基礎之上。分代回收同樣作為Python的輔助垃圾收集技術處理那些容器對象.

TCP/UDP

TCP

TCP 文件的上傳下載(發送郵件、網盤、緩存電影)

1. 可靠、慢、全雙工通信

2. 建立連接的時候 : 三次握手

3. 斷開連接的時候 : 四次揮手

4. 在建立起連接之后

- 發送的每一條信息都有回執 *

- 為了保證數據的完整性,還有重傳機制

5. 長連接 :會一直占用雙方的端口

6. IO(input,output)操作,輸入和輸出是相對內存來說的

- write / send -----> 輸出output

- read / recv ------> 輸入input

7. 能夠傳遞的數據長度幾乎沒有限制

TCP三次握手

TCP三次握手

第一次握手:建立連接時,客戶端發送SYN包到服務端,并進入SYN_SENT狀態,等待服務器確認。

SYN:同步序列編號

第二次握手:服務器收到SYN包,必須確認客戶的SYN包,同時自己也發送一個SYN包,即SYN+ACK包,此時服務器進入SYN_RECV狀態

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入,ESTABLISHED(TCP連接成功)狀態,完成三次握手。

TCP四次揮手

第一次揮手:首先客戶端向服務端發送斷開請求

(客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,然后等待服務器的確認。其中終止標志位FIN=1,序列號seq=u)

第二次揮手:服務端向客戶端進行回復

(服務器收到這個FIN,它發送一個ACK,確認ack為收到的序號加一)

第三次揮手:服務端向客戶端斷開請求

(關閉服務器到客戶端的連接,發送一個FIN給客戶端)

第四次揮手:客戶端收到消息后進行回復

(客戶端收到FIN后,并發回一個ACK報文確認,并將確認序號seq設置為收到序號加一。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉)

UDP

- 1.無連接的 速度快

- 2.可能會丟消息

- 3.能夠傳遞的數據的長度是有限的,是根據數據傳遞設備的設置有關系

UDP 即時通信類的(qq、微信、飛秋)

TCP/UDP的區別和優缺點

UDP是面向無線連接的通訊協議,UDP數據包括目標端口和源端口信合

優點:UDP傳遞速度快、操作簡單、系統資源占用較少,由于通訊不需要連接,可以實現廣播發送

缺點:UDP傳輸數據前并不與對方建立連接,對接受的數據不用發送確認信號,發送端不清楚數據是否成功發送,也不會重復發送,不可靠

TCP是面向連接的通訊協議,通過三次握手建立連接,通訊完成時四次揮手,關閉連接

優點:TCP在數據傳遞時,有確認、窗口、重傳、阻塞等等控制機制,能保證數據正確性,較為可靠

缺點:TCP相對于UDP速度慢一些,對系統資源占用較多

HTTP發送請求的流程

1.1 瀏覽器根據域名解析IP地址

1.2 瀏覽器與WEB服務器建立一個TCP連接

TCP的3次握手。

1.3 瀏覽器給WEB服務器發送一個HTTP請求

一個HTTP請求報文由請求行(request line)、請求頭部(headers)、空行(blank line)和請求數據(request body)4個部分組成。其中有get和post請求 說一下兩個請求的應用場景

1.4 服務器端響應HTTP請求,瀏覽器得到HTML代碼

1.5 瀏覽器解析HTML代碼,并請求HTML代碼中的資源

1.6 關閉TCP連接,瀏覽器對頁面進行渲染呈現給用戶

HTTP常見的狀態碼

1. 100-199:表示服務器成功接收部分請求,要求客戶端繼續提交其余請求能完成整個處理過程。

2. 200-299:表示服務器成功接收請求并已經完成處理,常用200(ok請求成功)。

3. 300-399:為完成請求,客戶需要進一步細化請求,例如:302(所有請求頁面已經臨時轉移新的url),304,307(使用緩存資源)。

4. 400-599:服務器出現錯誤,常用500(請求未完成,服務器內部遇到不可預知的錯誤)

HTTP常見的請求頭

1. Host(主機和端口號)

2. Connection(連接類型)

3. Upgrade-Insecure-Requests(升級為HTTPS請求)

4. User-Agent(瀏覽器名稱)

5. Accept(傳輸文件類型)

6. Referer(頁面跳轉處)

7. Accpet-Encoding(文件編解碼格式)

8. Cookie(Cookie)

9. x-requested-with:XMLHttpRequest(Ajax異步請求)

如何解決HTTP黏包問題

重新在寫一個http協議就行

工作中常用到的python第三方庫有哪些 還有一些包

re os sys json

進程線程協成

進程

進程是資源分配的最小單位

進程之間數據不共享 ,所以需要進程通信

通信的三種方式

1. 進程隊列queue

2. 管道pipe

3. 共享數據manage

進程池

開多進程是為了并發,通常有幾個cpu核心就開幾個進程,但是進程開多了會影響效率,主要體現在切換的開銷,所以引入進程池限制進程的數量。

這時候就用到了進程池,進程池內部維護一個進程序列,當使用時,則去進程池中獲取一個進程,如果進程池序列中沒有可供使用的進進程,那么程序就會等待,直到進程池中有可用進程為止。

線程

1. 線程是操作系統能夠進行運算調度的最小單位

2. 線程是包含在進程中的

3. 進程自己是無法執行的,是靠線程進行執行的

線程池

1. 系統啟動一個新線程的成本是比較高的,因為它涉及與操作系統的交互。在這種情形下,使用線程池可以很好地提升性能,尤其是當程序中需要創建大量生存期很短暫的線程時,更應該考慮使用線程池。

2. 線程池在系統啟動時即創建大量空閑的線程,程序只要將一個函數提交給線程池,線程池就會啟動一個空閑的線程來執行它。當該函數執行結束后,該線程并不會死亡,而是再次返回到線程池中變成空閑狀態,等待執行下一個函數。

協成

什么是協程

1. 協程是微線程

2. 協程擁有自己的寄存器上下文和棧

3. 協程能保留上一次調用時的狀態

為什么能處理并發

1. 遇IO組自動切換

2. 內部封裝的有Greenlet模塊(遇到IO手動切換) 和 Gevent模塊(遇到IO自動切換)

Greenlet

遇IO操作 手動切換

Gevent

Gevent 是一個第三方庫,可以輕松通過gevent實現并發同步或異步編程

其實Gevent模塊僅僅是對greenlet的再封裝,將I/O間的手動切換變成自動切換

Gevent原理是只要遇到I/O操作就會自動切換到下一個協程

迭代器、生成器、裝飾器

裝飾器應用場景

1. 引入日志

2. 函數執行時間統計

3. 執行函數前預備處理

4. 執行函數后清理功能

5. 權限校驗等場景

6. 緩存

7. 事務處理

裝飾器必須準尋的原則

1. 不修改被裝飾器的函數的源代碼

2. 不修改裝飾器函數的調用方式

3. 在滿足前者條件的情況下增加額外的功能

靜態方法,類方法,屬性方法,魔法方法

1.靜態方法需要修飾器@staticmethod來標識,告訴解釋器這是一個靜態方法

特性: 靜態方法只是名義上歸類管理,實際上在靜態方法里訪問不了類或則實例中的任何屬性

2.類方法需要修飾器@classmethod來標識,告訴解釋器這是一個類方法

作用:無需實例化直接被類調用

特性: 類方法只能訪問類變量,不能訪問實例變量

3.屬性方法需要修飾器@property來標識,告訴解釋器這是一個屬性方法

4.__ doc __  表示類的描述信息

__ call __ 對象后面加括號,觸發執行

__ str __ 如果一個類中定義了__ str __方法,在打印對象時,默認輸出該方法的返回值

__ dict __ 查看類或對象中的所有成員

new和init的區別

1、 new是一個靜態方法,而init是一個實例方法.

2、 new方法會返回一個創建的實例,而init什么都不返回.

3、 只有在new返回一個cls的實例時后面的init才能被調用.

4、 當創建一個新實例時調用new,初始化一個實例時用init.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371222.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371222.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2017 校招華為上機題

1. 給定一個字符串,把字符串內的字母轉換成該字母的下一個字母, a 換成b,z 換成a,Z 換成A,如aBf 轉換成bCg,字符串內的其他字符不改變,給定函數,編寫函數void Stringchang&#xff0…

JSON –拯救杰克遜

有時您必須使用JavaScript從服務器中獲取一些數據, JSON是完成此任務的不錯選擇。 讓我們玩一下JPA揭秘(第1集)-OneToMany和ManyToOne映射中的“雇主-雇員-福利”示例。 我們將在基于Spring Framework的Web應用程序中使用它。 我們的第一個…

maven 使用記錄之修改 maven默認jdk版本

maven package執行的時候會遇到jdk版本不對的問題 &#xff1a;原因是 maven所指定的jdk版本與項目使用的jdk版本不一致1.項目屬性的 java compiler可以設置2.直接修改 maven 的 settings.xml 一勞永逸settiings.xml <profiles>標簽內加入<profile> <id>j…

java默認值_Java中八種基本數據類型的默認值

通過一段代碼來測試一下 8種基本數據類型的默認值package dierge;public class Ceshi {int a;double b;boolean c;char d;float f;byte e;long h;short j;public static void main(String args[]){Ceshi anew Ceshi();System.out.println("整型的默認值是&#xff1a;&quo…

HDU - 1024 Max Sum Plus Plus 最大m段子段和+滾動數組優化

給定n個數字&#xff0c;求其中m段的最大值&#xff08;段與段之間不用連續&#xff0c;但是一段中要連續&#xff09; 例如&#xff1a;2 5 1 -2 2 3 -1五個數字中選2個&#xff0c;選擇1和2 3這兩段。 dp[i][j]從前j個數字中選擇i段&#xff0c;然后根據第j個數字是否獨立成一…

JavaFX教程–基礎

JavaFX似乎正在RIA領域獲得發展。 有了正確的工具和開發支持&#xff0c;它肯定會在下一個最佳技術“物”上付出巨大的代價。 我沒有在這里寫任何JavaFX評論&#xff0c;因為有很多技術評論可能對它進行了廣泛的評論&#xff0c;但是&#xff0c;我將編寫一個簡單的教程&#x…

java script this_JavaScript this 關鍵字

JavaScript this 關鍵字面向對象語言中 this 表示當前對象的一個引用。但在 JavaScript 中 this 不是固定不變的&#xff0c;它會隨著執行環境的改變而改變。在方法中&#xff0c;this 表示該方法所屬的對象。如果單獨使用&#xff0c;this 表示全局對象。在函數中&#xff0c;…

trim函數的作用 $.trim(str)

去掉字符序列左邊和右邊的空格轉載于:https://www.cnblogs.com/dandeliongogo/p/6610890.html

php數據庫備份腳本

// 備份數據庫 $host "localhost"; $user "root"; //數據庫賬號 $password ""; //數據庫密碼 $dbname "mysql"; //數據庫名稱 // 這里的賬號、密碼、名稱都是從頁面傳過來的 if (!mysql_connect($host, $user, $password)) // 連接…

java swing 案例詳解_《Java Swing圖形界面開發與案例詳解》PDF_IT教程網

資源名稱&#xff1a;《Java Swing圖形界面開發與案例詳解》PDF內容簡介&#xff1a;《Java Swing圖形界面開發與案例詳解》全書共20章&#xff0c;其中第1&#xff5e;2章主要介紹有關Swing的基礎知識&#xff0c;包括Swing的基本概述、如何使用IDE開發Swing程序&#xff1b;第…

水晶球錯覺

我注意到人們有時會避免進行徹底的測試。 對于某些人來說&#xff0c;這聽起來像是偽造的&#xff0c;但是請聽我說……我確實理解為什么會這樣。 測試會產生被困的感覺&#xff0c;每引入一個新的測試&#xff0c;負擔就會加重。 建立穩定&#xff0c;無干擾且質量保證的測試套…

Python—day3

1、字符串在C里邊就是字符數組 Python里邊一切事物都是對象&#xff0c;對象則是類創建的 2、set集合 set是一個無序且不能重復的元素集合 #!/usr/bin/env python# encoding: utf-8#set對象不能有重復s1 set()s1.add(alex)print(s1)s1.add(alex)print(s1)s1.add(shidong)print…

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

當引入第三方的框架的時候 容易產生以下問題&#xff1a; The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如圖&#xff1a; 造成的原因&#xff1a; info文件中的字段Executable file 與 build settings欄中的Packaging中的Produc…

Google Guava v07范例

我們在TouK舉辦了一個名為“每周技術研討會”的活動&#xff0c;即每個星期五的16:00&#xff0c;每個愿意參加的人都有一個演講。 我們展示了我們在家學習和學習的東西&#xff0c;但是我們也設有一個公告板&#xff0c;上面有人們想聽的話題。 上周MaciejPrchniak談論了Cloju…

推薦一些經過實踐檢驗的學習方法

作者做了多年的Java培訓教師&#xff0c;也接觸過不少初學者&#xff0c;根據多年的教學互動經驗&#xff0c;總結了一些能少走彎路的學習方法&#xff0c;供大家參考。 第一&#xff0c;是要多學多練&#xff0c;這似乎是廢話&#xff0c;但真正能非常上心學習的人還真是少數&…

使JFrame透明

首先創建一個帶有滑塊的框架&#xff0c;該滑塊將用于設置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作業之成員介紹

Lab205的新鮮血液 很理所當然的&#xff0c;實驗室的4枚“小鮮肉”在現代軟工的課程上組成了一個team&#xff0c;作為一個負責的team長&#xff0c;我當然要放上組員們的自述啦&#xff01;&#xff08;為什么不是他述&#xff0c;╭(╯^╰)╮&#xff0c;誰讓我是個傲嬌的組長…

java自定義分頁標簽_自定義分頁標簽--仿javaeye分頁效果

效果如圖&#xff1a;1、JSP規范1.1版本后增加了自定義標簽庫。實現自定義標簽的步驟(1)開發自定義標簽處理類。(2)建立*.tld文件。(3)在web.xml中增加自定義標簽的定義。(4)在jsp中使用自定義標簽。2、自定義標簽類(1)繼承javax.servlet.jsp.tagext.TagSupport(2)標簽類屬性&a…

Java隱藏代碼

不久前&#xff0c;我遇到了字符串中不可見字符的問題。 因為它們是不可見的&#xff0c;所以它們確實會引起混亂。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序設計》第5周學習總結

1. 本周學習總結 1.1 嘗試使用思維導圖總結有關多態與接口的知識點。 1.2 可選&#xff1a;使用常規方法總結其他上課內容。 學習了更多markdown的知識 參考資料: 百度腦圖 XMind 2. 書面作業 作業參考文件下載 1.代碼閱讀&#xff1a;Child壓縮包內源代碼package parent;publi…