原创 死鎖原因

1.交叉鎖會導致程序死鎖 這個大家都很熟悉了,就是線程A持有R1的鎖又想獲取R2的鎖,線程B持有R2的鎖又想獲取R1的鎖。兩個誰也不放棄自己的又想要對方的,就導致死鎖了。 一般交叉引起的死鎖線程都會進入BLOCKED狀態,CPU資源佔用不

原创 java線程池

       在一個應用程序中,需要多次使用線程,也就是需要多次創建並銷燬線程。而創建並銷燬線程的過程勢必會消耗內存。所以便於管理線程,線程池就誕生啦。  ThreadPoolExecutor ThreadPoolExecutor的構造函

原创 windows環境下運行.sh文件

   .sh是shell script格式的文件,在Linux環境下是可以直接運行的,到文件所在目錄下,執行 ./test.sh 如果是在Windows環境下,在CMD窗口是無法直接執行 ./test.sh 的,這時候可以通過 GIT 工

原创 操作系統(一)--啓動

 BIOS啓動過程       當計算機加電後,一般不直接執行操作系統,而是執行系統初始化軟件完成基本IO初始化和引導加載功能。簡單地說,系統初始化軟件就是在操作系統內核運行之前運行的一段小軟件。通過這段小軟件,我們可以初始化硬件設備、建

原创 bootloader進入保護模式的過程

從%cs=0 $pc=0x7c00,bootloader的首地址進入後 首先清理環境:包括將flag置0和將段寄存器置0 .code16   cli   cld   xorw %ax, %ax

原创 fork()函數解析

fork()總述:      fork調用用於創建一個新進程,把當前的進程分爲父進程和子進程,新進程稱爲子進程,而原進程稱爲父進程。fork調用一次,返回兩次,這兩個返回分別帶回它們各自的返回值,其中在父進程中的返回值是子進程的PID,而

原创 操作系統單內核和微內核的區別

單內核 單內核就是從整體上把內核作爲一個大過程來實現,同時也運行在一個單獨的地址空間上。因此單內核通常以單個靜態二進制文件的形式存放於磁盤中。而進程管理、內存管理等是其中的一個個模塊,所有內核模塊都在這樣的一個大內核地址空間上運行。模塊之

原创 連手機logcat,出現read:unexpected EOF

adb logcat查看手機日誌出現read:unexpected EOF錯誤 解決:  1、增加日誌buffer,如logcat -G 20M 2、手機開發者設置,增大log size  

原创 CSAPP--磁盤存儲器

磁盤       機械硬盤有許多片磁盤(platter)組成,每一片磁盤有兩面;每一面由一圈圈的磁道(track)組成,而每個磁道會被分隔成不同的扇區(sector)。   磁盤的操作流程:  所有磁頭同步尋道(由柱面號/磁道號控制)

原创 Activity的生命週期

七個方法 1. onCreate() 它會在Activity 第一次被創建的時候調用。在這個方法中完成Activity的初始化操作,比如說加載布 局、綁定事件等。 2. onStart() 這個方法在Activity由不可見變爲可見

原创 CSAPP--Chap10 系統級I/O

輸入/輸出(I/O) : 是指主存和外部設備(如磁盤,終端,網絡)之間拷貝數據過程。 高級別I/O函數 scanf和printf <<和>> 使用系統級I/O函數實現 系統級I/O函數。      10.1 Unix I/O 一個U

原创 Python創建本地數據庫

如果已有SQLite、PostgreSQL 或 MySQL 數據庫,可以參考快速入門指南(https://dataset.readthedocs.io/en/latest/quickstart.html)直接連接。   然後安裝Datas

原创 二分查找法

一、需查找和目標值相等的數 比如數組 [2, 4, 5, 6, 9],target = 6,返回3,即target 的在數組中的位置。二分查找法的代碼如下: int find(int[] nums, int target) {

原创 IA-32常用指令類型

1.傳送指令 -通用數據傳送指令       MOV:一般傳送,movb、movw、movl等(b是8位,w是16位,l是32位)。      MOVS:符號擴展傳送,movsbw(比如把char型賦值給int型,高8位就用char型變量

原创 Connection reset by ip_address port 22 fatal: Could not read from remote repository。

錯誤: 解決: git remote set-url origin [email protected]:YourgithubName/YourRepositoryName.git 之後在使用git push。