原创 計算機網絡學習筆記(5)——傳輸層

傳輸層協議:TCP協議,UDP協議 TCP:面向連接的、可靠的、基於字節流的傳輸層通信協議 UDP:無連接的傳輸協議,該協議稱爲用戶數據報協議 傳輸層和應用層時間的關係 http在傳輸層是使用的TCP:TCP+80 http

原创 解決順序隊列的“假溢出”問題之環形隊列(循環隊列)——Python實現

隊列是一種“先進先出”(FIFO)的數據結構,隊列有兩端,一邊只進,一邊只出,即:數據從尾部進入,從頭部出來,先進去的就會先出來,就像我們平時食堂打飯排隊一樣,先去排的先打到飯,後去排的後打到飯。 隊列通常可以用數組或者是鏈表實現。這裏

原创 Django ORM中的元數據Meta

元數據:指的是除了字段以外的所有內容,這些內容不是必須的。 在Django ORM中實現元數據的定義只需要在模型類中添加一個Meta子類即可,然後就可以在該子類下增加各種元數據選項了。 下面列舉出常用的元數據選項: class Book

原创 Django ORM中null和blank的區別

在Django中定義模型類的時候,常常會有用到null和blank這兩個參數,比如下面給某個模型類定義了一個name字段 name = models.CharField(max_length=10, null=True, blank=T

原创 記一個簡單的增量式爬蟲方案

最近在玩爬蟲,於是基於以下需求場景設計了一個簡單並且驗證可用的增量式爬蟲方案。 場景 需要爬取多個同類型的網站數據 網站數據持續、不定期更新 數據量不太大,每日更新幾千 獲取到的數據可以用來玩(數據分析等等),嘿嘿 對於這種類

原创 Python的協程

協程的定義和原理: 協程,又叫做纖程、微線程。協程的本質上是一個單線程程序,所以協程不能夠使用計算機多核資源(但是可以利用多進程+協程實現利用多核資源)。通過記錄應用層的上下文棧區,實現在運行中進行上下文跳轉,達到可以選擇性地運

原创 Python多進程和多線程的同步互斥

同步互斥機制: 解決了多個進程或者線程對共享資源的爭奪,因爲某些共享資源在某個時刻可能只允許一個進程對其進行訪問。 首先需要了解幾個概念: 臨界資源: 臨界資源就是上面提到的,同時只允許一個進程對其進行訪問的資源,即:雖然是

原创 Python的多線程

什麼是線程: 線程也是一種多任務編程方法,可以利用計算機多核資源完成程序的併發執行。線程又被稱爲輕量級的進程。 線程的特徵: 線程是計算機多核分配的最小單位 一個進程可以包含多個線程 線程也是一個運行的過程,消耗計算機資源,

原创 Python進程間通信之管道、消息隊列、共享內存

由於進程空間相對獨立,資源無法共享,基於這種情況,就需要使用一些方法使得不同的進程之間可以進行通信。 我這裏介紹三種進程間通信的方式:管道、消息隊列、共享內存。 管道 管道的通信原理: 在內存中開闢管道空間,生成管道操作對象,多

原创 Python的進程池

瞭解了Python的多進程之後,我們會發現,如果有大量任務需要使用多進程來完成,則可能需要頻繁的創建刪除進程,給計算機帶來較多的資源消耗。(多進程的缺點就是會頻繁的創建和刪除進程,消耗計算機資源)。基於這種情況,於是出現了進程池。

原创 Python的多進程

什麼是進程: 進程是一個動態過程的描述,佔有計算機的資源,有一定的生命週期。同一個程序的不同運行過程是不同的進程,佔用資源和生命週期都不一樣。(分清程序與進程的區別) 進程的特徵: 進程之間運行互不影響,各自獨立運行 進程是操作

原创 代碼筆記——非遞歸與遞歸實現二分查找

import random # 生成隨機有序列表 def create_li(): # 二分查找,要求保證數據是有序的 random_li = [] for i in range(20): nu

原创 計算機網絡學習筆記(4)——網絡層

在計算機通信中,可靠交付由端系統來負責,而不是網絡系統 網絡層向運輸層提供兩種服務: 虛電路服務、數據報服務 虛電路服務:是一種面向連接的,使所有分組順序到達目的端的可靠性數據傳輸服務。注意:虛電路只是邏輯上的連接,而不是真正建立

原创 PyCharm同步本地項目文件到服務器

最近做了一個個人博客網站,在做上線準備,所以購買了一臺阿里雲的服務器。上線前是需要將本地項目文件同步到服務器的。 我的網站是基於Django開發的,使用的IDE是PyCharm。本地項目文件上傳服務器的方式有很多種,我在這裏介紹PyCha

原创 計算機網絡學習筆記(3)——數據鏈路層

數據鏈路層使用的信道主要有以下兩種類型: 點對點信道:一對一的點對點通信方式 廣播信道:一對多的廣播通信方式 網絡層傳送的是數據報 數據鏈路層傳送的是幀 物理層傳送的是比特流 數據鏈路層的三個基本問題 封裝成幀:在一段數據的