原创 Python函數的高級特性

函數可以當成變量來使用 >>> print <built-in function print> >>> type(print) <class 'builtin_function_or_method'> >>> print = 10

原创 從零開始,打造自己的STL(三、alloc)

簡述 在stl中,所有的內存分配與釋放都是交由allocator來實現的。在大部分情況下,我們都接觸不到這裏面的內容,因爲它一直是隱藏在幕後悄悄的工作。 當然如果對於內存分配有特殊的要求的話,STL也提供了接口供我們使用自己的

原创 一. bochs環境部署

配置要求 一臺linux操作系統的機器即可,最好是32位的。因爲我們實現的小kernel是32位的,在64的機器上進行編譯和鏈接可能會出現某些問題。筆者這裏使用的是Ubuntu16.4 環境配置 bochs安裝與配置 安裝 我們自

原创 三. 保護模式

實模式與保護模式下的分段機制 程序想要在計算機上運行,就必須將源代碼編譯鏈接成二進制的可執行文件之後纔可能被操作系統加載執行。如果在加載的過程中,程序的地址都是絕對的物理地址,那麼程序就必須放在一個固定的地方,那麼擁有兩個相同地址

原创 程序與CPU

CPU 程序是什麼 程序 = 指令 + 數據 程序: 將一些數據和指令由上而下進行排列,有某種規律的執行,這個過程叫做程序。 CPU的組成 寄存器: 寄存器是用來存儲數據的 相當於CPU中的內存 控制器: 將內存或者寄存器的

原创 從零開始,打造自己的STL(五、deque)

deque簡介 deque是雙向開口的連續線性空間,支持內部元素的隨機訪問。看到這個概念,相信大家一定會想起vector,vector是單向開口的連續線性空間,內部元素也是可以隨機訪問的。 deque的元素類似這樣 那麼dequ

原创 Python類的基礎使用

>>> class class_demo(object):#定義一個空類,繼承自python中最大的基類object ... pass ... >>> c = class_demo() >>> print(type(c

原创 一. 簡述

簡介 對於每一個熱愛c++的人來說,STL都是他們日常擼碼、高效工作的必定會使用到的標準模板庫。STL取用範型的思想,通過模板元編程,去掉了不同型別所帶來的差異性,極大的提高了代碼的複用性。 既然STL如此強大與方便,我們當然要好

原创 磁盤

目前硬盤的運行速度還是以MB在進行運算,它的速度遠遠低於CPU和內存 硬盤的物理結構 硬盤是以扇區的方式進行管理的. 以簇爲單位進行讀寫 簇不是固定的大小 一般的, 1簇就是1扇區 1扇區是512字節 如果一個文

原创 從零開始,打造自己的STL(二、vector)

vector的內存佈局以及操作方式與array非常的類似,都是一段連續的內存空間。兩者之間唯一的差距就是空間運用的靈活性。array的空間在配置好了之後就無法更改,它所存放的數據量是固定的,一但空間不夠用之後需要重新配置一塊更大的

原创 Python數據結構--元組

元組與列表非常類似 元組內的值是不可修改的 在創鍵只有一個元組的對象時,後面需要加一個逗號 mytuple = ('1','2','3') mytuple = (1,2,3) mytuple = (1,2,3) mytuple[

原创 Python數據結構--list

list 和c語言中的數組比較相似 可以通過下標進行訪問與修改 #創建一個list變量 shoplist = ['apple','mango','banana'] len(shoplist)#求出list中的元素個數 shopl

原创 從零開始,打造自己的STL(四、list)

簡述 在前面我們看了vector的實現之後相信對容器有了一定的認識。容器即爲存放物件之所,它代表着一塊空間。想要直觀的瞭解一個容器,那麼看懂他的空間分配策略是一個非常有效的入手方式。接下來我們就來看看STL中的list又是如何實現

原创 二. 編寫mbr,讓機器啓動起來

mbr簡介 大家都知道,在我們按下電腦電源的時候,首先啓動的BIOS(基本輸入輸出系統),那麼BIOS又是如何被啓動的呢,誰來喚醒他呢,它又在何處運行呢。要了解這些的話,首先得介紹一下我們實模式的內存佈局 實模式的內存佈局 圖中

原创 Python數據類型

使用type()查看變量的類型 整數 Python可以處理任意大小的整數, 當然也包括負整數 在程序中的標識方法和數學上的寫法一摸一樣 在Python中, 任何一個不帶小數點的數值, 我們都將之稱之爲整數 浮點數 浮點數, 也稱