原创 CMU 15-213 Introduction to Computer Systems學習筆記(18) Dynamic Memory Allocation: Basic Concepts

之前學習的虛擬內存機制,以及它如何爲系統提供如此多的有功功能,隨着這種大型連續字節數組的抽象,現在一旦我們獲得了大量的字節,我們必須管理它,我們必須有一些機制來管理和使用這些資源,本週的主題是存儲器的分配,以及儲存器分配器的工作原理,以及

原创 小菜找實習-動態規劃

前言:最近做了一些國內大廠的筆試,發現國內大廠很喜歡考動態規劃。這篇文章記錄一下自己對動態規劃的學習。 計劃在26號之前練習二十道左右的DP題,題的來源選擇leetcode吧,難度主要在在medium和hard之間。 針對幾個比較經典的題

原创 CMU 15-213 Introduction to Computer Systems學習筆記(21) Synchronization: Basic

實際上,有一類很重要的併發編程,這種併發編程模型叫做【fork】和【join】(分叉和會和),這個模型中,程序有一系列階段組成,在每個階段,都有多個工作線程和一個管理線程,程序會創建多個工作線程,然後每個工作線程解決該階段的某些問題,在程

原创 CMU 15-213 Introduction to Computer Systems學習筆記(22) Synchronization: Advanced

Reminder: Semaphores 信號是非負全局同步變量, 由P和V操作管理,並且P操作將信號量作爲參數。 Using semaphores to schedule shared resources 上一節課是利用信號量來提供互

原创 CMU 15-213 Introduction to Computer Systems學習筆記(20) Concurrent Programming

Iterative Servers 上圖中,客戶端2直到服務端迴應才運行,否則一直處理等待狀態。你可能會認爲此時的客戶端連接會被阻斷,但是嘗試一下會發現,連接是在內核kernel,然後返回,write也是執行後馬上返回,直到客戶端2調用

原创 JSP會被淘汰嗎?

java web項目爲什麼我們要放棄jsp? 前戲: 以前的項目大多數都是java程序猿又當爹又當媽,又搞前端(ajax/jquery/js/html/css等等),又搞後端(java/mysql/Oracle等等)

原创 動態規劃實戰4-leetcode 5.Longest Palindromic Substring

確定狀態: 最長的子串,減去兩邊的字符也一定是palindrome dp[i][j] 代表以i開始,以j結束的字符串是不是palindrome   狀態轉移方程: dp[i][j]=s.charAt(i)==s.charAt(j)&&(j

原创 動態規劃實戰7 leetcode-221. Maximal Square

前言:這道題目我感覺確定狀態反而是比較難的一件事 確定狀態 設dp[i][j]代表到i行,j列的最大的正方形邊長 因爲某一個點的最大正方形邊長實際上是受他左邊的點,上面的點,以及左上角的點影響的。 我們知道,該點爲右下角的正方形的最大邊長

原创 動態規劃實戰8 leetcode-53. Maximum Subarray

確定狀態 這道題難就在確定狀態。因爲根據給定的輸入,我們可能在中間找到最大值,而不是在最後找到最大值。 但是我們可以用一個變量去保存全局的最大值 dp[i]表示從下標0至下標i最大的子序列和 狀態轉移方程 dp[i] = max(dp[i

原创 CMU 15-213 Introduction to Computer Systems學習筆記(23) Thread-Level Parallelism

Today Exploitng parallel execution   emm有緣再看這個擴展部分吧 

原创 CMU 15-213 Introduction to Computer Systems學習筆記(12) Linking

Linking Example C Program Static Linking Why Linkers? 那麼我們爲什麼這樣做的,爲什麼允許這種所謂的分離編譯,爲什麼不喜歡一個包含所有代碼的大文件。 Reason 1: Modula

原创 CMU15213 Intro to Computer Systems學習筆記(14) Exceptional Control Flow: Signals and Nonlocal Jumps

Shell 要先講信號的話,先要了解一下shell程序的內容,正如上次所提到的一樣,我們只有一種方法在Linux下創建進程,那就是使用fork調用 Linux Process Hierarchy Shell Programs shell

原创 CMU 15-213 Introduction to Computer Systems學習筆記(15)System-Level I/O

Unix I/O Directory Hierarchy RIO (robust I/O) package Buffered I/O: Implementation   RIO Example  Metadata, sharing,

原创 CMU 15-213 Introduction to Computer Systems學習筆記(19) Dynamic Memory Allocation: Advanced Concepts

這節課主要是學習一些更復雜的技術,研究不同數據結構去存儲 free list 我們要看implict allocators,因此我們會研究垃圾回收是怎麼工作的。老師說一旦你開始了動態的分配存儲,事情變壞的會很快。 Explicit Fre

原创 CMU 15-213 Introduction to Computer Systems學習筆記(17) Virtual Memory:System

這節課是承接上面的一節課,系統的講了Virtual Memory。。自己聽課沒有人討論沒有老師解答表示已經暈掉了。。 Review Of Symbols Transaction Lookaside Buffer (TLB) Simpl