原创 死鎖原因
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。